Merge "Add support for Argon2 password hashing"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 21 Feb 2019 07:24:52 +0000 (07:24 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 21 Feb 2019 07:24:52 +0000 (07:24 +0000)
225 files changed:
.fresnel.yml [new file with mode: 0644]
.gitignore
Gruntfile.js
RELEASE-NOTES-1.33
composer.json
docs/extension.schema.v1.json
docs/extension.schema.v2.json
includes/Block.php
includes/CommentStoreComment.php
includes/DefaultSettings.php
includes/Defines.php
includes/FeedUtils.php
includes/GlobalFunctions.php
includes/LinkFilter.php
includes/Linker.php
includes/MediaWikiServices.php
includes/OutputPage.php
includes/PHPVersionCheck.php
includes/ProtectionForm.php
includes/Revision.php
includes/ServiceWiring.php
includes/Setup.php
includes/actions/RawAction.php
includes/api/ApiBase.php
includes/api/ApiEditPage.php
includes/api/ApiFeedContributions.php
includes/api/ApiMove.php
includes/api/ApiParse.php
includes/api/ApiQueryBlocks.php
includes/api/ApiQueryRevisionsBase.php
includes/api/i18n/ar.json
includes/api/i18n/fr.json
includes/api/i18n/it.json
includes/api/i18n/pl.json
includes/auth/TemporaryPasswordAuthenticationRequest.php
includes/block/Restriction/PageRestriction.php
includes/cache/MessageBlobStore.php
includes/cache/localisation/LocalisationCache.php
includes/changes/ChangesList.php
includes/changes/EnhancedChangesList.php
includes/changetags/ChangeTags.php
includes/collation/IcuCollation.php
includes/content/ContentHandler.php
includes/diff/DifferenceEngine.php
includes/import/WikiRevision.php
includes/installer/DatabaseInstaller.php
includes/installer/DatabaseUpdater.php
includes/installer/Installer.php
includes/installer/WebInstallerOutput.php
includes/installer/i18n/ar.json
includes/installer/i18n/be-tarask.json
includes/installer/i18n/bg.json
includes/installer/i18n/ca.json
includes/installer/i18n/da.json
includes/installer/i18n/ia.json
includes/installer/i18n/is.json
includes/installer/i18n/it.json
includes/installer/i18n/mk.json
includes/installer/i18n/nl.json
includes/installer/i18n/pl.json
includes/installer/i18n/sl.json
includes/jobqueue/Job.php
includes/jobqueue/JobQueueDB.php
includes/libs/MultiHttpClient.php
includes/libs/objectcache/WANObjectCache.php
includes/libs/objectcache/WANObjectCacheReaper.php
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/database/DatabaseMssql.php
includes/libs/rdbms/database/DatabaseMysqlBase.php
includes/libs/rdbms/loadbalancer/LoadBalancer.php
includes/linkeddata/PageDataRequestHandler.php
includes/page/WikiPage.php
includes/parser/LinkHolderArray.php
includes/parser/ParserCache.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderContext.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/resourceloader/ResourceLoaderModule.php
includes/shell/Command.php
includes/specialpage/ChangesListSpecialPage.php
includes/specials/SpecialBlock.php
includes/specials/SpecialBooksources.php
includes/specials/SpecialContributions.php
includes/specials/SpecialDeletedContributions.php
includes/specials/SpecialEmailuser.php
includes/specials/SpecialProtectedpages.php
includes/specials/SpecialRedirect.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialWatchlist.php
includes/specials/pagers/ActiveUsersPager.php
includes/specials/pagers/BlockListPager.php
includes/specials/pagers/NewPagesPager.php
includes/specials/pagers/ProtectedPagesPager.php
includes/specials/pagers/ProtectedTitlesPager.php
includes/templates/EnhancedChangesListGroup.mustache
includes/watcheditem/WatchedItemQueryService.php
includes/widget/SelectWithInputWidget.php
languages/LanguageConverter.php
languages/data/Names.php
languages/i18n/aeb-arab.json
languages/i18n/ar.json
languages/i18n/as.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/bqi.json
languages/i18n/br.json
languages/i18n/ca.json
languages/i18n/da.json
languages/i18n/diq.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/exif/da.json
languages/i18n/exif/lrc.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/gcr.json
languages/i18n/gl.json
languages/i18n/gom-latn.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hr.json
languages/i18n/hy.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/ig.json
languages/i18n/io.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/kiu.json
languages/i18n/lrc.json
languages/i18n/lv.json
languages/i18n/min.json
languages/i18n/mk.json
languages/i18n/my.json
languages/i18n/myv.json
languages/i18n/nb.json
languages/i18n/ne.json
languages/i18n/nn.json
languages/i18n/pa.json
languages/i18n/pl.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sc.json
languages/i18n/sh.json
languages/i18n/shi.json
languages/i18n/skr-arab.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/su.json
languages/i18n/sv.json
languages/i18n/tcy.json
languages/i18n/th.json
languages/i18n/tr.json
languages/i18n/ur.json
languages/i18n/uz.json
languages/i18n/xsy.json [new file with mode: 0644]
languages/i18n/yue.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesGcr.php
load.php
maintenance/attachLatest.php
maintenance/cleanupRemovedModules.php
maintenance/compareParsers.php
maintenance/includes/DeleteLocalPasswords.php
maintenance/includes/MigrateActors.php
maintenance/preprocessDump.php
maintenance/view.php
resources/Resources.php
resources/src/jquery.tablesorter/jquery.tablesorter.js
resources/src/jquery/jquery.makeCollapsible.styles.less
resources/src/mediawiki.Title/Title.js
resources/src/mediawiki.api/options.js
resources/src/mediawiki.legacy/protect.js
resources/src/mediawiki.rcfilters/Controller.js
resources/src/mediawiki.rcfilters/dm/FiltersViewModel.js
resources/src/mediawiki.rcfilters/mw.rcfilters.init.js
resources/src/mediawiki.rcfilters/ui/FilterWrapperWidget.js
resources/src/mediawiki.rcfilters/ui/WatchlistTopSectionWidget.js
resources/src/mediawiki.special.changeslist.enhanced.css [deleted file]
resources/src/mediawiki.special.changeslist.enhanced.less [new file with mode: 0644]
resources/src/mediawiki.special.changeslist.legend.css [deleted file]
resources/src/mediawiki.special.changeslist.legend.less [new file with mode: 0644]
resources/src/mediawiki.toc.styles/screen.less
resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.less
resources/src/mediawiki.widgets/mw.widgets.TitleSearchWidget.js
resources/src/startup/mediawiki.js
tests/parser/ParserTestPrinter.php
tests/phpunit/data/registration/good.json
tests/phpunit/includes/BlockTest.php
tests/phpunit/includes/CommentStoreCommentTest.php [new file with mode: 0644]
tests/phpunit/includes/CommentStoreTest.php
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/Revision/SlotRecordTest.php
tests/phpunit/includes/RevisionDbTestBase.php
tests/phpunit/includes/api/ApiBaseTest.php
tests/phpunit/includes/api/ApiEditPageTest.php
tests/phpunit/includes/api/ApiMoveTest.php
tests/phpunit/includes/api/ApiQueryBlocksTest.php
tests/phpunit/includes/auth/TemporaryPasswordAuthenticationRequestTest.php
tests/phpunit/includes/block/BlockRestrictionTest.php
tests/phpunit/includes/block/Restriction/PageRestrictionTest.php
tests/phpunit/includes/changes/EnhancedChangesListTest.php
tests/phpunit/includes/db/LBFactoryTest.php
tests/phpunit/includes/diff/CustomDifferenceEngine.php
tests/phpunit/includes/import/ImportTest.php
tests/phpunit/includes/libs/objectcache/WANObjectCacheTest.php
tests/phpunit/includes/media/JpegPixelFormatTest.php
tests/phpunit/includes/page/ArticleViewTest.php
tests/phpunit/includes/page/WikiPageDbTestBase.php
tests/phpunit/includes/resourceloader/MessageBlobStoreTest.php
tests/phpunit/includes/specials/SpecialBlockTest.php
tests/phpunit/includes/specials/pagers/BlockListPagerTest.php
tests/phpunit/mocks/content/DummyContentForTesting.php
tests/phpunit/mocks/content/DummyNonTextContent.php
tests/phpunit/structure/ResourcesTest.php
tests/phpunit/suites/LessTestSuite.php
tests/qunit/suites/resources/mediawiki.api/mediawiki.api.options.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js

diff --git a/.fresnel.yml b/.fresnel.yml
new file mode 100644 (file)
index 0000000..f081fb5
--- /dev/null
@@ -0,0 +1,17 @@
+warmup: true
+runs: 3
+scenarios:
+  # View the Main Page without redirect
+  - url: "{MW_SERVER}{MW_SCRIPT_PATH}/index.php?mainpage"
+    viewport:
+      width: 1100
+      height: 700
+    reports:
+      - navtiming
+      - paint
+      - transfer
+    probes:
+      - screenshot
+      - trace
+    # alerts:
+    #   navtiming/loadEventEnd: 10%
index d25d525..def5a08 100644 (file)
@@ -52,6 +52,7 @@ npm-debug.log
 node_modules/
 /tests/phpunit/phpunit.phar
 /tests/selenium/log
+.eslintcache
 
 # Composer
 /vendor
index 2592815..fbb93bf 100644 (file)
@@ -22,7 +22,8 @@ module.exports = function ( grunt ) {
        grunt.initConfig( {
                eslint: {
                        options: {
-                               reportUnusedDisableDirectives: true
+                               reportUnusedDisableDirectives: true,
+                               cache: true
                        },
                        all: [
                                '**/*.js',
index 55787e7..43d4249 100644 (file)
@@ -22,6 +22,10 @@ production.
   MediaWiki 1.32, now defaults to MIGRATION_NEW instead of MIGRATION_WRITE_BOTH.
 * Special:ActiveUsers will no longer filter out users who became inactive since
   the last time the active users query cache was updated.
+* If you ran migrateActors.php using an older version of MediaWiki and want to
+  run your wiki with $wgActorTableSchemaMigrationStage SCHEMA_COMPAT_READ_OLD,
+  note that log_search rows needed to find revision deletions by target user
+  were incorrectly deleted. See T215464 for details.
 
 ==== Removed configuration ====
 * (T199334) $wgTagStatisticsNewTable — This temporary setting, added in
@@ -59,23 +63,31 @@ production.
 ==== New external libraries ====
 * Added wikimedia/password-blacklist 0.1.4.
 * Added guzzlehttp/guzzle 6.3.3.
+* Added jakub-onderka/php-console-highlighter 0.3.2 explicitly (dev-only).
 
 ==== Changed external libraries ====
 * Updated OOUI from v0.29.2 to v0.30.2.
 * Updated OOjs Router from pre-release to v0.2.0.
-* Updated wikimedia/xmp-reader from 0.6.0 to 0.6.1.
+* Updated wikimedia/xmp-reader from 0.6.0 to 0.6.2.
 * Updated wikimedia/scoped-callback from 2.0.0 to 3.0.0.
-* Updated wikimedia/ip-set from 1.2.0 to 2.0.0.
+* Updated wikimedia/ip-set from 1.2.0 to 2.0.1.
   * The deprecated IPSet\IPSet alias was removed, Wikimedia\IPSet must be
     used instead.
 * Updated qunitjs from 2.6.2 to 2.9.1.
 * Updated jquery-client from 2.0.1 to 2.0.2.
+* Updated psy/psysh from 0.9.6 to 0.9.9 (dev-only).
+* Updated nikic/php-parser from 3.1.3 to 3.1.5 (dev-only).
+* Updated pear/net_smtp from 1.8.0 to 1.8.1.
+* Updated cssjanus/cssjanus from 1.2.0 to 1.2.1.
+* Updated wikimedia/php-session-serializer from 1.0.6 to 1.0.7.
 
 ==== Removed external libraries ====
 
 === Bug fixes in 1.33 ===
 * (T164211) Special:UserRights could sometimes fail with a
   "conflict detected" error when there weren't any conflicts.
+* (T215566) Unable to determine if the database exists
+  during a fresh installation.
 
 === Action API changes in 1.33 ===
 * (T198913) Added 'ApiOptions' hook.
@@ -91,6 +103,8 @@ production.
   deletion will be processed via the job queue.
 * action=setnotificationtimestamp will now update the watchlist asynchronously
   if entirewatchlist is set, so updates may not be visible immediately
+* Block info will be added to "blocked" errors from more modules.
+* (T216245) Autoblocks will now be spread by action=edit and action=move.
 
 === Action API internal changes in 1.33 ===
 * A number of deprecated methods for API documentation, intended for overriding
@@ -107,6 +121,8 @@ production.
   hyphen. Methods such as ApiBase::dieWithError() and
   ApiMessageTrait::setApiCode() will throw an InvalidArgumentException if
   passed a bad code.
+* ApiBase::checkTitleUserPermissions() now takes an options array as its third
+  parameter. Passing a User object or null is deprecated.
 
 === Languages updated in 1.33 ===
 MediaWiki supports over 350 languages. Many localisations are updated regularly.
@@ -241,6 +257,12 @@ because of Phabricator reports.
   Use require( 'mediawiki.libs.jpegmeta' ) instead.
 * The mw.user.stickyRandomId() method, deprecated in 1.32, was removed.
   Use mw.user.getPageviewToken() instead.
+* Removed deprecated class property WikiRevision::$importer.
+* ResourceLoaderFileModule::readStyleFiles() now requires its $context
+  parameter.
+* The ChangeList::insertArticleLink() method, that was deprecated in 1.27, has
+  been removed.
+* MessageBlobStore::__construct() now requires its $rl parameter.
 
 === Deprecations in 1.33 ===
 * The configuration option $wgUseESI has been deprecated, and is expected
@@ -288,14 +310,22 @@ because of Phabricator reports.
 * The mw.language.specialCharacters property from the
   'mediawiki.language.specialCharacters' module has been deprecated.
   Use require( 'mediawiki.language.specialCharacters' ) instead.
+* ChangeTags::purgeTagUsageCache() has been deprecated, and is expected to be
+  removed in a future release.
+* Passing a User object or null as the third parameter to
+  ApiBase::checkTitleUserPermissions() has been deprecated. Pass an array
+  [ 'user' => $user ] instead.
 
 === Other changes in 1.33 ===
 * (T201747) Html::openElement() warns if given an element name with a space
   in it.
+* The implementation of buildStringCast() in Wikimedia\Rdbms\Database has
+  changed to explicitly cast. Subclasses relying on the base-class
+  implementation should check whether they need to override it now.
 
 == Compatibility ==
-MediaWiki 1.33 requires PHP 7.0.0 or later. Although HHVM 3.18.5 or later is
-supported, it is generally advised to use PHP 7.0.0 or later for long term
+MediaWiki 1.33 requires PHP 7.0.13 or later. Although HHVM 3.18.5 or later is
+supported, it is generally advised to use PHP 7.0.13 or later for long term
 support.
 
 MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
index fdc1730..87ba6a1 100644 (file)
@@ -18,7 +18,7 @@
        },
        "require": {
                "composer/semver": "1.4.2",
-               "cssjanus/cssjanus": "1.2.0",
+               "cssjanus/cssjanus": "1.2.1",
                "ext-ctype": "*",
                "ext-fileinfo": "*",
                "ext-iconv": "*",
@@ -30,7 +30,7 @@
                "oojs/oojs-ui": "0.30.2",
                "pear/mail": "1.4.1",
                "pear/mail_mime": "1.10.2",
-               "pear/net_smtp": "1.8.0",
+               "pear/net_smtp": "1.8.1",
                "php": ">=5.6.99",
                "psr/log": "1.0.2",
                "wikimedia/assert": "0.2.2",
                "wikimedia/cldr-plural-rule-parser": "1.0.0",
                "wikimedia/composer-merge-plugin": "1.4.1",
                "wikimedia/html-formatter": "1.0.2",
-               "wikimedia/ip-set": "2.0.0",
+               "wikimedia/ip-set": "2.0.1",
                "wikimedia/less.php": "1.8.0",
                "wikimedia/object-factory": "1.0.0",
                "wikimedia/password-blacklist": "0.1.4",
-               "wikimedia/php-session-serializer": "1.0.6",
+               "wikimedia/php-session-serializer": "1.0.7",
                "wikimedia/purtle": "1.0.7",
                "wikimedia/relpath": "2.1.1",
                "wikimedia/remex-html": "2.0.1",
@@ -54,7 +54,7 @@
                "wikimedia/timestamp": "2.2.0",
                "wikimedia/wait-condition-loop": "1.0.1",
                "wikimedia/wrappedstring": "3.0.1",
-               "wikimedia/xmp-reader": "0.6.1",
+               "wikimedia/xmp-reader": "0.6.2",
                "zordius/lightncandy": "0.23"
        },
        "require-dev": {
                "composer/spdx-licenses": "1.4.0",
                "giorgiosironi/eris": "^0.10.0",
                "hamcrest/hamcrest-php": "^2.0",
+               "jakub-onderka/php-console-highlighter": "0.3.2",
                "jakub-onderka/php-parallel-lint": "0.9.2",
                "jetbrains/phpstorm-stubs": "dev-master#38ff1a581b297f7901e961b8c923862ea80c3b96",
                "justinrainbow/json-schema": "~5.2",
                "mediawiki/mediawiki-codesniffer": "24.0.0",
                "monolog/monolog": "~1.22.1",
-               "nikic/php-parser": "3.1.3",
+               "nikic/php-parser": "3.1.5",
                "seld/jsonlint": "1.7.1",
                "nmred/kafka-php": "0.1.5",
                "phpunit/phpunit": "4.8.36 || ^6.5",
-               "psy/psysh": "0.9.6",
+               "psy/psysh": "0.9.9",
                "wikimedia/avro": "1.8.0",
                "wikimedia/testing-access-wrapper": "~1.0",
                "wmde/hamcrest-html-matchers": "^0.1.0"
index fcc41af..f9b71fb 100644 (file)
                                                                "noflip": {
                                                                        "type": "boolean",
                                                                        "description": "Whether to skip CSSJanus LTR-to-RTL flipping for this module. Recommended for styles imported from libraries that already properly handle their RTL styles. Default is false, meaning CSSJanus will be applied on RTL-mode output."
+                                                               },
+                                                               "packageFiles": {
+                                                                       "type": ["object", "array"],
+                                                                       "description": "Package files that can be require()d"
                                                                }
                                                        }
                                                },
index d561638..22edac0 100644 (file)
@@ -3,6 +3,12 @@
        "description": "MediaWiki extension.json schema",
        "type": "object",
        "additionalProperties": false,
+       "patternProperties": {
+               "^@": {
+                       "type": "string",
+                       "description": "Arbitrary notes, ignored by the parser."
+               }
+       },
        "properties": {
                "manifest_version": {
                        "type": "integer",
                                                                "noflip": {
                                                                        "type": "boolean",
                                                                        "description": "Whether to skip CSSJanus LTR-to-RTL flipping for this module. Recommended for styles imported from libraries that already properly handle their RTL styles. Default is false, meaning CSSJanus will be applied on RTL-mode output."
+                                                               },
+                                                               "packageFiles": {
+                                                                       "type": ["object", "array"],
+                                                                       "description": "Package files that can be require()d"
                                                                }
                                                        }
                                                },
index 85fa341..573ce3d 100644 (file)
@@ -68,7 +68,10 @@ class Block {
        /** @var int Hack for foreign blocking (CentralAuth) */
        private $forcedTargetID;
 
-       /** @var int Block::TYPE_ constant. Can only be USER, IP or RANGE internally */
+       /**
+        * @var int Block::TYPE_ constant. After the block has been loaded
+        * from the database, this can only be USER, IP or RANGE.
+        */
        private $type;
 
        /** @var User */
@@ -188,7 +191,7 @@ class Block {
        }
 
        /**
-        * Load a blocked user from their block id.
+        * Load a block from the block id.
         *
         * @param int $id Block id to search for
         * @return Block|null
@@ -1547,7 +1550,9 @@ class Block {
        }
 
        /**
-        * Get the type of target for this particular block
+        * Get the type of target for this particular block. Autoblocks have whichever type
+        * corresponds to their target, so to detect if a block is an autoblock, we have to
+        * check the mAuto property instead.
         * @return int Block::TYPE_ constant, will never be TYPE_ID
         */
        public function getType() {
index af866cd..9f1681d 100644 (file)
@@ -50,7 +50,7 @@ class CommentStoreComment {
        public function __construct( $id, $text, Message $message = null, array $data = null ) {
                $this->id = $id;
                $this->text = $text;
-               $this->message = $message ?: new RawMessage( '$1', [ $text ] );
+               $this->message = $message ?: new RawMessage( '$1', [ Message::plaintextParam( $text ) ] );
                $this->data = $data;
        }
 
index 582826e..9286591 100644 (file)
@@ -1234,7 +1234,7 @@ $wgAllowTitlesInSVG = false;
  *
  * @since 1.33
  */
-$wgMediaInTargetLanguage = false;
+$wgMediaInTargetLanguage = true;
 
 /**
  * The maximum number of pixels a source image can have if it is to be scaled
@@ -2456,23 +2456,20 @@ $wgMainWANCache = false;
  *
  * The format is an associative array where the key is a cache identifier, and
  * the value is an associative array of parameters. The "cacheId" parameter is
- * a cache identifier from $wgObjectCaches. The "channels" parameter is a map of
- * actions ('purge') to PubSub channels defined in $wgEventRelayerConfig.
- * The "loggroup" parameter controls where log events are sent.
+ * a cache identifier from $wgObjectCaches. The "loggroup" parameter controls
+ * where log events are sent.
  *
  * @since 1.26
  */
 $wgWANObjectCaches = [
        CACHE_NONE => [
                'class'    => WANObjectCache::class,
-               'cacheId'  => CACHE_NONE,
-               'channels' => []
+               'cacheId'  => CACHE_NONE
        ]
        /* Example of a simple single data-center cache:
        'memcached-php' => [
                'class'    => WANObjectCache::class,
-               'cacheId'  => 'memcached-php',
-               'channels' => [ 'purge' => 'wancache-main-memcached-purge' ]
+               'cacheId'  => 'memcached-php'
        ]
        */
 ];
index 5ab27cc..720e8d0 100644 (file)
@@ -31,7 +31,7 @@ use Wikimedia\Rdbms\IDatabase;
 
 # Obsolete aliases
 /**
- * @deprecated since 1.28
+ * @deprecated since 1.28, use DB_REPLICA instead
  */
 define( 'DB_SLAVE', -1 );
 
index 4dde52d..899ac09 100644 (file)
@@ -173,7 +173,7 @@ class FeedUtils {
 
                        if ( $newContent instanceof TextContent ) {
                                // only textual content has a "source view".
-                               $text = $newContent->getNativeData();
+                               $text = $newContent->getText();
 
                                if ( $wgFeedDiffCutoff <= 0 || strlen( $text ) > $wgFeedDiffCutoff ) {
                                        $html = null;
index bd98932..51fe167 100644 (file)
@@ -225,7 +225,7 @@ function wfMergeErrorArrays( ...$args ) {
  *
  * @param array $array The array.
  * @param array $insert The array to insert.
- * @param mixed $after The key to insert after
+ * @param mixed $after The key to insert after. Callers need to make sure the key is set.
  * @return array
  */
 function wfArrayInsertAfter( array $array, array $insert, $after ) {
index ffb36e0..a4e94da 100644 (file)
@@ -54,7 +54,7 @@ class LinkFilter {
                        return 0;
                }
 
-               $text = $content->getNativeData();
+               $text = $content->getText();
 
                $regex = self::makeRegex( $filterEntry, $protocol );
                return preg_match( $regex, $text );
index cc1df39..049fb07 100644 (file)
@@ -114,15 +114,20 @@ class Linker {
                } else {
                        $text = $html; // null
                }
+
                if ( in_array( 'known', $options, true ) ) {
                        return $linkRenderer->makeKnownLink( $target, $text, $customAttribs, $query );
-               } elseif ( in_array( 'broken', $options, true ) ) {
+               }
+
+               if ( in_array( 'broken', $options, true ) ) {
                        return $linkRenderer->makeBrokenLink( $target, $text, $customAttribs, $query );
-               } elseif ( in_array( 'noclasses', $options, true ) ) {
+               }
+
+               if ( in_array( 'noclasses', $options, true ) ) {
                        return $linkRenderer->makePreloadedLink( $target, $text, '', $customAttribs, $query );
-               } else {
-                       return $linkRenderer->makeLink( $target, $text, $customAttribs, $query );
                }
+
+               return $linkRenderer->makeLink( $target, $text, $customAttribs, $query );
        }
 
        /**
@@ -193,9 +198,9 @@ class Linker {
                                        getFormattedNsText( $namespace );
                        }
                        return $context->msg( 'invalidtitle-knownnamespace', $namespace, $name, $title )->text();
-               } else {
-                       return $context->msg( 'invalidtitle-unknownnamespace', $namespace, $title )->text();
                }
+
+               return $context->msg( 'invalidtitle-unknownnamespace', $namespace, $title )->text();
        }
 
        /**
@@ -207,14 +212,12 @@ class Linker {
                if ( $target->getNamespace() == NS_SPECIAL && !$target->isExternal() ) {
                        list( $name, $subpage ) = MediaWikiServices::getInstance()->getSpecialPageFactory()->
                                resolveAlias( $target->getDBkey() );
-                       if ( !$name ) {
-                               return $target;
+                       if ( $name ) {
+                               return SpecialPage::getTitleValueFor( $name, $subpage, $target->getFragment() );
                        }
-                       $ret = SpecialPage::getTitleValueFor( $name, $subpage, $target->getFragment() );
-                       return $ret;
-               } else {
-                       return $target;
                }
+
+               return $target;
        }
 
        /**
@@ -259,7 +262,9 @@ class Linker {
                return Html::element( 'img',
                        [
                                'src' => $url,
-                               'alt' => $alt ] );
+                               'alt' => $alt
+                       ]
+               );
        }
 
        /**
@@ -730,12 +735,15 @@ class Linker {
 
                if ( $wgUploadMissingFileUrl ) {
                        return wfAppendQuery( $wgUploadMissingFileUrl, $q );
-               } elseif ( $wgUploadNavigationUrl ) {
+               }
+
+               if ( $wgUploadNavigationUrl ) {
                        return wfAppendQuery( $wgUploadNavigationUrl, $q );
-               } else {
-                       $upload = SpecialPage::getTitleFor( 'Upload' );
-                       return $upload->getLocalURL( $q );
                }
+
+               $upload = SpecialPage::getTitleFor( 'Upload' );
+
+               return $upload->getLocalURL( $q );
        }
 
        /**
@@ -998,10 +1006,11 @@ class Linker {
        public static function userTalkLink( $userId, $userText ) {
                $userTalkPage = Title::makeTitle( NS_USER_TALK, $userText );
                $moreLinkAttribs['class'] = 'mw-usertoollinks-talk';
-               $userTalkLink = self::link( $userTalkPage,
-                                               wfMessage( 'talkpagelinktext' )->escaped(),
-                                               $moreLinkAttribs );
-               return $userTalkLink;
+
+               return self::link( $userTalkPage,
+                       wfMessage( 'talkpagelinktext' )->escaped(),
+                       $moreLinkAttribs
+               );
        }
 
        /**
@@ -1013,10 +1022,11 @@ class Linker {
        public static function blockLink( $userId, $userText ) {
                $blockPage = SpecialPage::getTitleFor( 'Block', $userText );
                $moreLinkAttribs['class'] = 'mw-usertoollinks-block';
-               $blockLink = self::link( $blockPage,
-                                        wfMessage( 'blocklink' )->escaped(),
-                                        $moreLinkAttribs );
-               return $blockLink;
+
+               return self::link( $blockPage,
+                       wfMessage( 'blocklink' )->escaped(),
+                       $moreLinkAttribs
+               );
        }
 
        /**
@@ -1027,10 +1037,10 @@ class Linker {
        public static function emailLink( $userId, $userText ) {
                $emailPage = SpecialPage::getTitleFor( 'Emailuser', $userText );
                $moreLinkAttribs['class'] = 'mw-usertoollinks-mail';
-               $emailLink = self::link( $emailPage,
-                                        wfMessage( 'emaillink' )->escaped(),
-                                        $moreLinkAttribs );
-               return $emailLink;
+               return self::link( $emailPage,
+                       wfMessage( 'emaillink' )->escaped(),
+                       $moreLinkAttribs
+               );
        }
 
        /**
@@ -1107,9 +1117,7 @@ class Linker {
 
                # Render autocomments and make links:
                $comment = self::formatAutocomments( $comment, $title, $local, $wikiId );
-               $comment = self::formatLinksInComment( $comment, $title, $local, $wikiId );
-
-               return $comment;
+               return self::formatLinksInComment( $comment, $title, $local, $wikiId );
        }
 
        /**
@@ -1166,9 +1174,11 @@ class Linker {
                                                $section = $auto;
                                                # Remove links that a user may have manually put in the autosummary
                                                # This could be improved by copying as much of Parser::stripSectionName as desired.
-                                               $section = str_replace( '[[:', '', $section );
-                                               $section = str_replace( '[[', '', $section );
-                                               $section = str_replace( ']]', '', $section );
+                                               $section = str_replace( [
+                                                       '[[:',
+                                                       '[[',
+                                                       ']]'
+                                               ], '', $section );
 
                                                // We don't want any links in the auto text to be linked, but we still
                                                // want to show any [[ ]]
@@ -1679,12 +1689,10 @@ class Linker {
                        $fallbackAnchor = htmlspecialchars( $fallbackAnchor );
                        $fallback = "<span id=\"$fallbackAnchor\"></span>";
                }
-               $ret = "<h$level$attribs"
+               return "<h$level$attribs"
                        . "$fallback<span class=\"mw-headline\" id=\"$anchorEscaped\">$html</span>"
                        . $link
                        . "</h$level>";
-
-               return $ret;
        }
 
        /**
@@ -1888,11 +1896,11 @@ class Linker {
                                $html = $context->msg( 'rollbacklinkcount' )->numParams( $editCount )->parse();
                        }
 
-                       return self::link( $title, $html, $attrs, $query, $options );
-               } else {
-                       $html = $context->msg( 'rollbacklink' )->escaped();
                        return self::link( $title, $html, $attrs, $query, $options );
                }
+
+               $html = $context->msg( 'rollbacklink' )->escaped();
+               return self::link( $title, $html, $attrs, $query, $options );
        }
 
        /**
index 4abd729..292e8df 100644 (file)
@@ -44,6 +44,7 @@ use ParserCache;
 use ParserFactory;
 use PasswordFactory;
 use ProxyLookup;
+use ResourceLoader;
 use SearchEngine;
 use SearchEngineConfig;
 use SearchEngineFactory;
@@ -744,6 +745,14 @@ class MediaWikiServices extends ServiceContainer {
                return $this->getService( 'ReadOnlyMode' );
        }
 
+       /**
+        * @since 1.33
+        * @return ResourceLoader
+        */
+       public function getResourceLoader() {
+               return $this->getService( 'ResourceLoader' );
+       }
+
        /**
         * @since 1.31
         * @return RevisionFactory
index 61a1ef2..9b766bb 100644 (file)
@@ -21,7 +21,6 @@
  */
 
 use MediaWiki\Linker\LinkTarget;
-use MediaWiki\Logger\LoggerFactory;
 use MediaWiki\MediaWikiServices;
 use MediaWiki\Session\SessionManager;
 use Wikimedia\Rdbms\IResultWrapper;
@@ -3276,10 +3275,8 @@ class OutputPage extends ContextSource {
         */
        public function getResourceLoader() {
                if ( is_null( $this->mResourceLoader ) ) {
-                       $this->mResourceLoader = new ResourceLoader(
-                               $this->getConfig(),
-                               LoggerFactory::getInstance( 'resourceloader' )
-                       );
+                       // Lazy-initialise as needed
+                       $this->mResourceLoader = MediaWikiServices::getInstance()->getResourceLoader();
                }
                return $this->mResourceLoader;
        }
index 8406bfb..cbe63a3 100644 (file)
@@ -110,7 +110,7 @@ class PHPVersionCheck {
                        'version' => PHP_VERSION,
                        'vendor' => 'the PHP Group',
                        'upstreamSupported' => '5.6.0',
-                       'minSupported' => '7.0.0',
+                       'minSupported' => '7.0.13',
                        'upgradeURL' => 'https://secure.php.net/downloads.php',
                );
        }
index c677a09..6ce7ef4 100644 (file)
@@ -353,12 +353,9 @@ class ProtectionForm {
                $user = $context->getUser();
                $output = $context->getOutput();
                $lang = $context->getLanguage();
-               $conf = $context->getConfig();
-               $cascadingRestrictionLevels = $conf->get( 'CascadingRestrictionLevels' );
                $out = '';
                if ( !$this->disabled ) {
                        $output->addModules( 'mediawiki.legacy.protect' );
-                       $output->addJsConfigVars( 'wgCascadeableLevels', $cascadingRestrictionLevels );
                        $out .= Xml::openElement( 'form', [ 'method' => 'post',
                                'action' => $this->mTitle->getLocalURL( 'action=protect' ),
                                'id' => 'mw-Protect-Form' ] );
index aaf1069..f2ca79a 100644 (file)
@@ -832,17 +832,15 @@ class Revision implements IDBAccessObject {
        }
 
        /**
-        * Fetch revision comment if it's available to the specified audience.
-        * If the specified audience does not have access to the comment, an
-        * empty string will be returned.
-        *
         * @param int $audience One of:
         *   Revision::FOR_PUBLIC       to be displayed to all users
         *   Revision::FOR_THIS_USER    to be displayed to the given user
         *   Revision::RAW              get the text regardless of permissions
         * @param User|null $user User object to check for, only if FOR_THIS_USER is passed
         *   to the $audience parameter
-        * @return string
+        *
+        * @return string|null Returns null if the specified audience does not have access to the
+        *  comment.
         */
        function getComment( $audience = self::FOR_PUBLIC, User $user = null ) {
                global $wgUser;
index 44ca502..46dd913 100644 (file)
@@ -413,6 +413,13 @@ return [
                );
        },
 
+       'ResourceLoader' => function ( MediaWikiServices $services ) : ResourceLoader {
+               return new ResourceLoader(
+                       $services->getMainConfig(),
+                       LoggerFactory::getInstance( 'resourceloader' )
+               );
+       },
+
        'RevisionFactory' => function ( MediaWikiServices $services ) : RevisionFactory {
                return $services->getRevisionStore();
        },
index b4b6ce6..f8b9546 100644 (file)
@@ -690,8 +690,7 @@ if ( $wgMainWANCache === false ) {
        $wgMainWANCache = 'mediawiki-main-default';
        $wgWANObjectCaches[$wgMainWANCache] = [
                'class'    => WANObjectCache::class,
-               'cacheId'  => $wgMainCacheType,
-               'channels' => [ 'purge' => 'wancache-main-default-purge' ]
+               'cacheId'  => $wgMainCacheType
        ];
 }
 
index 77a8b14..73594bc 100644 (file)
@@ -215,7 +215,7 @@ class RawAction extends FormlessAction {
                                        // section not found (or section not supported, e.g. for JS, JSON, and CSS)
                                        $text = false;
                                } else {
-                                       $text = $content->getNativeData();
+                                       $text = $content->getText();
                                }
                        }
                }
index 21e20c2..dfaff8b 100644 (file)
@@ -271,6 +271,14 @@ abstract class ApiBase extends ContextSource {
        /** @var int[][][] Cache for self::filterIDs() */
        private static $filterIDsCache = [];
 
+       /** $var array Map of web UI block messages to corresponding API messages and codes */
+       private static $blockMsgMap = [
+               'blockedtext' => [ 'apierror-blocked', 'blocked' ],
+               'blockedtext-partial' => [ 'apierror-blocked', 'blocked' ],
+               'autoblockedtext' => [ 'apierror-autoblocked', 'autoblocked' ],
+               'systemblockedtext' => [ 'apierror-systemblocked', 'blocked' ],
+       ];
+
        /** @var ApiMain */
        private $mMainModule;
        /** @var string */
@@ -1797,28 +1805,9 @@ abstract class ApiBase extends ContextSource {
 
                $status = Status::newGood();
                foreach ( $errors as $error ) {
-                       if ( is_array( $error ) && $error[0] === 'blockedtext' && $user->getBlock() ) {
-                               $status->fatal( ApiMessage::create(
-                                       'apierror-blocked',
-                                       'blocked',
-                                       [ 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $user->getBlock() ) ]
-                               ) );
-                       } elseif ( is_array( $error ) && $error[0] === 'blockedtext-partial' && $user->getBlock() ) {
-                               $status->fatal( ApiMessage::create(
-                                       'apierror-blocked-partial',
-                                       'blocked',
-                                       [ 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $user->getBlock() ) ]
-                               ) );
-                       } elseif ( is_array( $error ) && $error[0] === 'autoblockedtext' && $user->getBlock() ) {
-                               $status->fatal( ApiMessage::create(
-                                       'apierror-autoblocked',
-                                       'autoblocked',
-                                       [ 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $user->getBlock() ) ]
-                               ) );
-                       } elseif ( is_array( $error ) && $error[0] === 'systemblockedtext' && $user->getBlock() ) {
-                               $status->fatal( ApiMessage::create(
-                                       'apierror-systemblocked',
-                                       'blocked',
+                       if ( is_array( $error ) && isset( self::$blockMsgMap[$error[0]] ) && $user->getBlock() ) {
+                               list( $msg, $code ) = self::$blockMsgMap[$error[0]];
+                               $status->fatal( ApiMessage::create( $msg, $code,
                                        [ 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $user->getBlock() ) ]
                                ) );
                        } else {
@@ -1828,6 +1817,26 @@ abstract class ApiBase extends ContextSource {
                return $status;
        }
 
+       /**
+        * Add block info to block messages in a Status
+        * @since 1.33
+        * @param StatusValue $status
+        * @param User|null $user
+        */
+       public function addBlockInfoToStatus( StatusValue $status, User $user = null ) {
+               if ( $user === null ) {
+                       $user = $this->getUser();
+               }
+
+               foreach ( self::$blockMsgMap as $msg => list( $apiMsg, $code ) ) {
+                       if ( $status->hasMessage( $msg ) && $user->getBlock() ) {
+                               $status->replaceMessage( $msg, ApiMessage::create( $apiMsg, $code,
+                                       [ 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $user->getBlock() ) ]
+                               ) );
+                       }
+               }
+       }
+
        /**
         * Call wfTransactionalTimeLimit() if this request was POSTed
         * @since 1.26
@@ -2065,6 +2074,7 @@ abstract class ApiBase extends ContextSource {
                        $status = $newStatus;
                }
 
+               $this->addBlockInfoToStatus( $status );
                throw new ApiUsageException( $this, $status );
        }
 
@@ -2102,15 +2112,21 @@ abstract class ApiBase extends ContextSource {
        /**
         * Helper function for permission-denied errors
         * @since 1.29
+        * @since 1.33 Changed the third parameter from $user to $options.
         * @param Title $title
         * @param string|string[] $actions
-        * @param User|null $user
+        * @param array $options Additional options
+        *   - user: (User) User to use rather than $this->getUser()
+        *   - autoblock: (bool, default false) Whether to spread autoblocks
+        *  For compatibility, passing a User object is treated as the value for the 'user' option.
         * @throws ApiUsageException if the user doesn't have all of the rights.
         */
-       public function checkTitleUserPermissions( Title $title, $actions, $user = null ) {
-               if ( !$user ) {
-                       $user = $this->getUser();
+       public function checkTitleUserPermissions( Title $title, $actions, $options = [] ) {
+               if ( !is_array( $options ) ) {
+                       wfDeprecated( '$user as the third parameter to ' . __METHOD__, '1.33' );
+                       $options = [ 'user' => $options ];
                }
+               $user = $options['user'] ?? $this->getUser();
 
                $errors = [];
                foreach ( (array)$actions as $action ) {
@@ -2123,6 +2139,10 @@ abstract class ApiBase extends ContextSource {
                                $this->trackBlockNotices( $errors );
                        }
 
+                       if ( !empty( $options['autoblock'] ) ) {
+                               $user->spreadAnyEditBlock();
+                       }
+
                        $this->dieStatus( $this->errorArrayToStatus( $errors, $user ) );
                }
        }
index 5e5efa5..8131ea5 100644 (file)
@@ -116,7 +116,8 @@ class ApiEditPage extends ApiBase {
                // Now let's check whether we're even allowed to do this
                $this->checkTitleUserPermissions(
                        $titleObj,
-                       $titleObj->exists() ? 'edit' : [ 'edit', 'create' ]
+                       $titleObj->exists() ? 'edit' : [ 'edit', 'create' ],
+                       [ 'autoblock' => true ]
                );
 
                $toMD5 = $params['text'];
index 9edf929..2492db2 100644 (file)
@@ -181,7 +181,7 @@ class ApiFeedContributions extends ApiBase {
 
                if ( $content instanceof TextContent ) {
                        // only textual content has a "source view".
-                       $html = nl2br( htmlspecialchars( $content->getNativeData() ) );
+                       $html = nl2br( htmlspecialchars( $content->getText() ) );
                } else {
                        // XXX: we could get an HTML representation of the content via getParserOutput, but that may
                        //     contain JS magic and generally may not be suitable for inclusion in a feed.
index f6b6b35..cc4490e 100644 (file)
@@ -86,6 +86,7 @@ class ApiMove extends ApiBase {
                $status = $this->movePage( $fromTitle, $toTitle, $params['reason'], !$params['noredirect'],
                        $params['tags'] ?: [] );
                if ( !$status->isOK() ) {
+                       $user->spreadAnyEditBlock();
                        $this->dieStatus( $status );
                }
 
index 148ac67..9f561b7 100644 (file)
@@ -487,7 +487,7 @@ class ApiParse extends ApiBase {
                        }
 
                        $wgParser->startExternalParse( $titleObj, $popts, Parser::OT_PREPROCESS );
-                       $xml = $wgParser->preprocessToDom( $this->content->getNativeData() )->__toString();
+                       $xml = $wgParser->preprocessToDom( $this->content->getText() )->__toString();
                        $result_array['parsetree'] = $xml;
                        $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'parsetree';
                }
index 95f8cda..8aff2aa 100644 (file)
@@ -305,7 +305,9 @@ class ApiQueryBlocks extends ApiQueryBase {
                        switch ( $restriction->getType() ) {
                                case 'page':
                                        $value = [ 'id' => $restriction->getValue() ];
-                                       self::addTitleInfo( $value, $restriction->getTitle() );
+                                       if ( $restriction->getTitle() ) {
+                                               self::addTitleInfo( $value, $restriction->getTitle() );
+                                       }
                                        break;
                                default:
                                        $value = $restriction->getValue();
index 3d0a0fb..0d2aeab 100644 (file)
@@ -471,7 +471,7 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
 
                if ( $this->fld_parsetree || ( $this->fld_content && $this->generateXML ) ) {
                        if ( $content->getModel() === CONTENT_MODEL_WIKITEXT ) {
-                               $t = $content->getNativeData(); # note: don't set $text
+                               $t = $content->getText(); # note: don't set $text
 
                                $wgParser->startExternalParse(
                                        $title,
@@ -503,7 +503,7 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
 
                        if ( $this->expandTemplates && !$this->parseContent ) {
                                if ( $content->getModel() === CONTENT_MODEL_WIKITEXT ) {
-                                       $text = $content->getNativeData();
+                                       $text = $content->getText();
 
                                        $text = $wgParser->preprocess(
                                                $text,
index b667382..c933bc4 100644 (file)
        "apihelp-compare-paramvalue-prop-size": "حجم المراجعات 'من' و'إلى'.",
        "apihelp-compare-param-slots": "إرجاع فرق فردي لهذه الفتحات، بدلا من فرق واحد مشترك لجميع فتحات.",
        "apihelp-compare-example-1": "إنشاء فرق بين المراجعة 1 و2.",
-       "apihelp-createaccount-summary": "انشاء حساب مستخدم جديد",
+       "apihelp-createaccount-summary": "Ø¥نشاء حساب مستخدم جديد",
        "apihelp-createaccount-param-preservestate": "إذا تم عرض <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> بشكل صحيح لـ<samp>hasprimarypreservedstate</samp>، فقد تم تعليم طلبات <samp>primary-required</samp> لكي يجب حذفها، إذا عرضت قيمة غير فارغة لـ<samp>preservedusername</samp> فيجب استخدام اسم المستخدم هذا للوسيط <var>username</var>.",
        "apihelp-createaccount-example-create": "بدء عملية إنشاء المستخدم <kbd>Example</kbd> بكلمة المرور <kbd>ExamplePassword</kbd>.",
        "apihelp-cspreport-summary": "مستخدمة من قبل المتصفحات للإبلاغ عن انتهاكات سياسة أمن المحتوى. لا ينبغي أبدا أن تستخدم هذه الوحدة، إلا عند استخدامها تلقائيا باستخدام متصفح ويب CSP متوافق.",
        "apihelp-userrights-example-user": "إضافة المستخدم <kbd>FooBot</kbd> إلى مجموعة <kbd>bot</kbd> وإزالته من المجموعات <kbd>sysop</kbd> و<kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-userid": "إضافة المستخدم بالمعرف <kbd>123</kbd> إلى مجموعة <kbd>bot</kbd> وإزالته من المجموعات <kbd>sysop</kbd> و<kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-expiry": "إضافة المستخدم <kbd>SometimeSysop</kbd> إلى مجموعة <kbd>sysop</kbd> لمدة شهر واحد.",
-       "apihelp-validatepassword-summary": "التحقق من صحة كلمة المرور ضد سياسات كلمة مرور الويكي.",
+       "apihelp-validatepassword-summary": "التحقق من صحة كلمة السر ضد سياسات كلمة السر للويكي.",
        "apihelp-validatepassword-extended-description": "يتم الإبلاغ عن الصلاحية كـ<samp>Good</samp> إذا كانت كلمة المرور مقبولة، أو <samp>Change</samp> إذا كان قد يتم استخدام كلمة المرور لتسجيل الدخول ولكن يجب تغييرها، أو <samp>Invalid</samp> إذا كان كلمة المرور غير قابلة للاستخدام.",
        "apihelp-validatepassword-param-password": "كلمة المرور للتحقق.",
        "apihelp-validatepassword-param-user": "اسم المستخدم; للاستخدام عند اختبار إنشاء الحساب، يجب ألا يكون المستخدم المحدد موجودا.",
index 42e5a8b..1c1b14c 100644 (file)
        "apihelp-query+allpages-param-limit": "Combien de pages renvoyer au total.",
        "apihelp-query+allpages-param-dir": "L'ordre dans lequel lister.",
        "apihelp-query+allpages-param-filterlanglinks": "Filtrer si une page a des liens de langue. Noter que cela ne prend pas en compte les liens de langue ajoutés par des extensions.",
-       "apihelp-query+allpages-param-prexpiry": "Quelle expiration de protection sur laquelle filtrer la page :\n;indefinite:N’obtenir que les pages avec une expiration de protection infinie.\n;definite:N’obtenir que les pages avec une expiration de protection définie (spécifique).\n;all:Obtenir toutes les pages avec une expiration de protection.",
+       "apihelp-query+allpages-param-prexpiry": "Quelle expiration de protection sur laquelle filtrer la page :\n;indefinite:N’obtenir que les pages avec une expiration de protection infinie.\n;definite:N’obtenir que les pages avec une expiration de protection définie (spécifique).\n;all:Obtenir toutes les pages avec une expiration de protection quelconque.",
        "apihelp-query+allpages-example-B": "Afficher une liste des pages commençant par la lettre <kbd>B</kbd>.",
        "apihelp-query+allpages-example-generator": "Afficher l’information sur 4 pages commençant par la lettre <kbd>T</kbd>.",
        "apihelp-query+allpages-example-generator-revisions": "Afficher le contenu des 2 premières pages hors redirections commençant par <kbd>Re</kbd>.",
        "apihelp-userrights-summary": "Modifier l’appartenance d’un utilisateur à un groupe.",
        "apihelp-userrights-param-user": "Nom d’utilisateur.",
        "apihelp-userrights-param-userid": "ID de l’utilisateur.",
-       "apihelp-userrights-param-add": "Ajouter l’utilisateur à ces groupes, ou s’ils sont déjà membres, mettre à jour la date d’expiration de leur appartenance à ce groupe.",
+       "apihelp-userrights-param-add": "Ajouter les utilisateurs à ces groupes, ou s’ils sont déjà membres, mettre à jour la date d’expiration de leur appartenance à ce groupe.",
        "apihelp-userrights-param-expiry": "Horodatages d’expiration. Peuvent être relatifs (par ex. <kbd>5 mois</kbd> ou <kbd>2 semaines</kbd>) ou absolus (par ex. <kbd>2014-09-18T12:34:56Z</kbd>). Si uniquement un horodatage est fixé, il sera utilisé pour tous les groupes passés au paramètre <var>$1add</var>. Utiliser <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd>, ou <kbd>never</kbd> pour une lien utilisateur-groupe qui n’expire jamais.",
        "apihelp-userrights-param-remove": "Supprimer l’utilisateur de ces groupes.",
        "apihelp-userrights-param-reason": "Motif de la modification.",
        "apierror-mustbeloggedin-generic": "Vous devez être connecté.",
        "apierror-mustbeloggedin-linkaccounts": "Vous devez être connecté pour lier des comptes.",
        "apierror-mustbeloggedin-removeauth": "Vous devez être connecté pour supprimer les données d’authentification.",
-       "apierror-mustbeloggedin-uploadstash": "La réserve de téléversement n’est disponible que pour les utilisateurs connectés.",
+       "apierror-mustbeloggedin-uploadstash": "La zone de préparation des téléversements n’est disponible que pour les utilisateurs connectés.",
        "apierror-mustbeloggedin": "Vous devez être connecté pour $1.",
        "apierror-mustbeposted": "Le module <kbd>$1</kbd> nécessite une requête POST.",
-       "apierror-mustpostparams": "{{PLURAL:$2|Le paramètre suivant a été trouvé|Les paramètres suivants ont été trouvés}} dans la chaîne de requête, mais doit être dans le corps du POST : $1.",
-       "apierror-noapiwrite": "La modification de ce wiki via l’API est désactivée. Assurez-vous que la déclaration <code>$wgEnableWriteAPI=true;</code> st inclue dans le fichier <code>LocalSettings.php</code> du wiki.",
+       "apierror-mustpostparams": "{{PLURAL:$2|Le paramètre suivant a été trouvé|Les paramètres suivants ont été trouvés}} dans la chaîne de requête, mais {{PLURAL:$2|doit|doivent}} être dans le corps du POST : $1.",
+       "apierror-noapiwrite": "La modification de ce wiki via l’API est désactivée. Assurez-vous que la déclaration <code>$wgEnableWriteAPI=true;</code> est incluse dans le fichier <code>LocalSettings.php</code> du wiki.",
        "apierror-nochanges": "Aucun changement n’a été demandé.",
        "apierror-nodeleteablefile": "Pas de telle ancienne version du fichier.",
        "apierror-no-direct-editing": "La modification directe via l’API n’est pas prise en charge pour le modèle de contenu $1 utilisé par $2.",
        "apiwarn-tokennotallowed": "L'action « $1 » n'est pas autorisée pour l'utilisateur actuel.",
        "apiwarn-tokens-origin": "Les jetons ne peuvent pas être obtenus quand la politique de même origine n’est pas appliquée.",
        "apiwarn-truncatedresult": "Ce résultat a été tronqué parce que sinon, il dépasserait la limite de $1 octets.",
-       "apiwarn-unclearnowtimestamp": "Passer « $2 » comme paramètre d’horodatage <var>$1</var> a été rendu désuet. Si, pour une raison quelconque, vous avez besoin de spécifier explicitement l’heure courante sans la recalculer du côté client, utilisez <kbd>now</kbd>.",
+       "apiwarn-unclearnowtimestamp": "Passer « $2 » comme paramètre d’horodatage <var>$1</var> est obsolète. Si, pour une raison quelconque, vous avez besoin de spécifier explicitement l’heure courante sans la recalculer du côté client, utilisez <kbd>now</kbd>.",
        "apiwarn-unrecognizedvalues": "{{PLURAL:$3|Valeur non reconnue|Valeurs non reconnues}} pour le paramètre <var>$1</var> : $2.",
        "apiwarn-unsupportedarray": "Le paramètre <var>$1</var> utilise une syntaxe PHP de tableau non prise en charge.",
        "apiwarn-urlparamwidth": "Valeur de la largeur définie dans <var>$1urlparam</var> ($2) ignorée en faveur de la largeur calculée à partir de <var>$1urlwidth</var>/<var>$1urlheight</var> ($3).",
        "api-usage-mailinglist-ref": "S’abonner à la liste de diffusion mediawiki-api-announce sur &lt;https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce&gt; pour les signalisations d’obsolescence de l’API ou de modifications en rupture.",
        "api-exception-trace": "$1 à $2($3)\n$4",
        "api-credits-header": "Remerciements",
-       "api-credits": "Développeurs de l’API :\n* Roan Kattouw (développeur en chef Sept. 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (créateur, développeur en chef Sept. 2006–Sept. 2007)\n* Brad Jorsch (développeur en chef depuis 2013)\n\nVeuillez envoyer vos commentaires, suggestions et questions à mediawiki-api@lists.wikimedia.org\nou remplir un rapport de bogue sur https://phabricator.wikimedia.org/."
+       "api-credits": "Développeurs de l’API :\n* Yuri Astrakhan (créateur, développeur en chef Sept. 2006–Sept. 2007)\n* Roan Kattouw (développeur en chef Sept. 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Brad Jorsch (développeur en chef depuis 2013)\n\nVeuillez envoyer vos commentaires, suggestions et questions à mediawiki-api@lists.wikimedia.org\nou remplir un rapport de bogue sur https://phabricator.wikimedia.org/."
 }
index 8ffe98f..721cd0b 100644 (file)
@@ -17,7 +17,8 @@
                        "Einreiher",
                        "Mpiva",
                        "Margherita.mignanelli",
-                       "Manfredi26"
+                       "Manfredi26",
+                       "Daimona Eaytoy"
                ]
        },
        "apihelp-main-extended-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentazione]] (in inglese)\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]] (in inglese)\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annunci sull'API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bug & richieste]\n</div>\n<strong>Stato:</strong> l'API MediaWiki è un'interfaccia matura e stabile che è attivamente supportata e migliorata. Anche se cerchiamo di evitarlo, potremmo dover fare delle modifiche che causano malfunzionamenti; iscriviti alla [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mailing list sugli annunci delle API MediaWiki] per essere informato sugli aggiornamenti.\n\n<strong>Istruzioni sbagliate:</strong> quando vengono impartite alle API delle istruzioni sbagliate, un'intestazione HTTP verrà inviata col messaggio \"MediaWiki-API-Error\" e, sia il valore dell'intestazione, sia il codice d'errore, verranno impostati con lo stesso valore. Per maggiori informazioni leggi [[mw:Special:MyLanguage/API:Errors_and_warnings|API:Errori ed avvertimenti]] (in inglese).\n\n<p class=\"mw-apisandbox-link\"><strong>Test:</strong> per testare facilmente le richieste API, vedi [[Special:ApiSandbox]].</p>",
        "apihelp-paraminfo-param-helpformat": "Formato delle stringhe di aiuto.",
        "apihelp-parse-param-summary": "Oggetto da analizzare.",
        "apihelp-parse-param-redirects": "Se <var>$1page</var> o <var>$1pageid</var> è impostato come reindirizzamento, lo risolve.",
-       "apihelp-parse-param-prop": "Quali pezzi di informazioni ottenere:",
+       "apihelp-parse-param-prop": "Quali informazioni ottenere:",
        "apihelp-parse-example-text": "Analizza wikitext.",
        "apihelp-parse-example-texttitle": "Analizza wikitext, specificando il titolo della pagina.",
        "apihelp-parse-example-summary": "Analizza un oggetto.",
        "apihelp-query+allfileusages-param-from": "Il titolo del file da cui iniziare l'elenco.",
        "apihelp-query+allfileusages-param-to": "Il titolo del file al quale interrompere l'elenco.",
        "apihelp-query+allfileusages-param-prefix": "Ricerca per tutti i titoli dei file che iniziano con questo valore.",
-       "apihelp-query+allfileusages-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+allfileusages-param-prop": "Quali informazioni includere:",
        "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+alllinks-param-from": "Il titolo del collegamento da cui iniziare l'elenco.",
        "apihelp-query+alllinks-param-to": "Il titolo del collegamento al quale interrompere l'elenco.",
        "apihelp-query+alllinks-param-prefix": "Ricerca per tutti i titoli dei collegamenti che iniziano con questo valore.",
-       "apihelp-query+alllinks-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+alllinks-param-prop": "Quali informazioni includere:",
        "apihelp-query+alllinks-paramvalue-prop-ids": "Aggiunge l'ID pagina della pagina collegata (non può essere usato con <var>$1unique</var>).",
        "apihelp-query+alllinks-paramvalue-prop-title": "Aggiunge il titolo del collegamento.",
        "apihelp-query+alllinks-param-namespace": "Il namespace da elencare.",
        "apihelp-query+allpages-param-limit": "Quante pagine totali restituire.",
        "apihelp-query+allpages-param-dir": "La direzione in cui elencare.",
        "apihelp-query+allredirects-param-from": "Il titolo del reindirizzamento da cui iniziare l'elenco.",
-       "apihelp-query+allredirects-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+allredirects-param-prop": "Quali informazioni includere:",
        "apihelp-query+allredirects-paramvalue-prop-title": "Aggiunge il titolo del redirect.",
        "apihelp-query+allredirects-param-namespace": "Il namespace da elencare.",
        "apihelp-query+allredirects-param-limit": "Quanti elementi totali restituire.",
        "apihelp-query+mystashedfiles-param-limit": "Quanti file restituire.",
        "apihelp-query+alltransclusions-summary": "Elenca tutte le inclusioni (pagine incorporate utilizzando &#123;&#123;x&#125;&#125;), comprese le non esistenti.",
        "apihelp-query+alltransclusions-param-from": "Il titolo dell'inclusione da cui iniziare l'elenco.",
-       "apihelp-query+alltransclusions-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+alltransclusions-param-prop": "Quali informazioni includere:",
        "apihelp-query+alltransclusions-paramvalue-prop-title": "Aggiunge il titolo dell'inclusione.",
        "apihelp-query+alltransclusions-param-namespace": "Il namespace da elencare.",
        "apihelp-query+alltransclusions-param-limit": "Quanti elementi totali restituire.",
        "apihelp-query+allusers-param-dir": "Direzione dell'ordinamento.",
        "apihelp-query+allusers-param-group": "Includi solo gli utenti nei gruppi indicati.",
        "apihelp-query+allusers-param-excludegroup": "Escludi gli utenti nei gruppi indicati.",
-       "apihelp-query+allusers-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+allusers-param-prop": "Quali informazioni includere:",
        "apihelp-query+allusers-param-limit": "Quanti nomi utente totali restituire.",
        "apihelp-query+authmanagerinfo-summary": "Recupera informazioni circa l'attuale stato di autenticazione.",
        "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "Verifica se lo stato di autenticazione dell'utente attuale è sufficiente per la specifica operazione sensibile alla sicurezza.",
        "apihelp-query+categoryinfo-summary": "Restituisce informazioni su una categoria indicata.",
        "apihelp-query+categoryinfo-example-simple": "Ottieni informazioni su <kbd>Category:Foo</kbd> e <kbd>Category:Bar</kbd>.",
        "apihelp-query+categorymembers-summary": "Elenca tutte le pagine in una categoria indicata.",
-       "apihelp-query+categorymembers-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+categorymembers-param-prop": "Quali informazioni includere:",
        "apihelp-query+categorymembers-paramvalue-prop-ids": "Aggiunge l'ID pagina.",
        "apihelp-query+categorymembers-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
        "apihelp-query+categorymembers-paramvalue-prop-type": "Aggiunge il tipo di come la pagina è stata categorizzata (<samp>page</samp>, <samp>subcat</samp> o <samp>file</samp>).",
        "apihelp-query+embeddedin-param-dir": "La direzione in cui elencare.",
        "apihelp-query+embeddedin-param-limit": "Quante pagine totali restituire.",
        "apihelp-query+extlinks-param-limit": "Quanti collegamenti restituire.",
-       "apihelp-query+exturlusage-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+exturlusage-param-prop": "Quali informazioni includere:",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "Aggiunge l'ID della pagina.",
        "apihelp-query+exturlusage-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
        "apihelp-query+exturlusage-paramvalue-prop-url": "Aggiunge l'URL utilizzato nella pagina.",
        "apihelp-query+logevents-paramvalue-prop-title": "Aggiunge il titolo della pagine per l'evento nel registro.",
        "apihelp-query+logevents-param-start": "Il timestamp da cui iniziare l'elenco.",
        "apihelp-query+logevents-param-end": "Il timestamp al quale interrompere l'elenco.",
-       "apihelp-query+pageswithprop-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+pageswithprop-param-prop": "Quali informazioni includere:",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "Aggiunge l'ID pagina.",
        "apihelp-query+pageswithprop-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
        "apihelp-query+pageswithprop-paramvalue-prop-value": "Aggiunge il valore della proprietà di pagina.",
        "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Aggiungi la data di registrazione dell'utente.",
        "apihelp-query+userinfo-example-simple": "Ottieni informazioni sull'utente attuale.",
        "apihelp-query+users-summary": "Ottieni informazioni su un elenco di utenti.",
-       "apihelp-query+users-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+users-param-prop": "Quali informazioni includere:",
        "apihelp-query+users-paramvalue-prop-cancreate": "Indica se può essere creata un'utenza per nomi utente validi ma non registrati.",
        "apihelp-query+users-param-users": "Un elenco di utenti di cui ottenere informazioni.",
        "apihelp-query+watchlist-summary": "Ottieni le ultime modifiche alle pagine tra gli osservati speciali dell'utente attuale.",
index fe98013..2d4fc69 100644 (file)
@@ -15,7 +15,8 @@
                        "Sethakill",
                        "Woytecr",
                        "InternerowyGołąb",
-                       "CiaPan"
+                       "CiaPan",
+                       "Vlad5250"
                ]
        },
        "apihelp-main-extended-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentacja]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista dyskusyjna]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Ogłoszenia dotyczące API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Błędy i propozycje]\n</div>\n<strong>Stan:</strong> Wszystkie funkcje opisane na tej stronie powinny działać, ale API nadal jest aktywnie rozwijane i mogą się zmienić w dowolnym czasie. Subskrybuj [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ listę dyskusyjną mediawiki-api-announce], aby móc na bieżąco dowiadywać się o aktualizacjach.\n\n<strong>Błędne żądania:</strong> Gdy zostanie wysłane błędne żądanie do API, zostanie wysłany w odpowiedzi nagłówek HTTP z kluczem \"MediaWiki-API-Error\" i zarówno jego wartość jak i wartość kodu błędu wysłanego w odpowiedzi będą miały taką samą wartość. Aby uzyskać więcej informacji, zobacz [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Błędy i ostrzeżenia]].\n\n<strong>Testowanie:</strong> Aby łatwo testować żądania API, zobacz [[Special:ApiSandbox]].",
        "api-pageset-param-redirects-generator": "Automatycznie rozwiązuj przekierowania ze stron podanych w <var>$1titles</var>, <var>$1pageids</var>, oraz <var>$1revids</var>, a także ze stron zwróconych przez <var>$1generator</var>.",
        "api-pageset-param-converttitles": "Konwertuj tytuły do innych wariantów, jeżeli trzeba. Będzie działać tylko wtedy, gdy język zawartości wiki będzie wspierał konwersje wariantów. Języki, które wspierają konwersję wariantów to m.in. $1.",
        "api-help-title": "Pomoc MediaWiki API",
-       "api-help-lead": "To jest automatycznie wygenerowana strona dokumentacji MediaWiki API.\nDokumentacja i przykłady: https://www.mediawiki.org/wiki/API",
+       "api-help-lead": "To jest automatycznie wygenerowana strona dokumentacji MediaWiki API.\n\nDokumentacja i przykłady: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "Moduł główny",
        "api-help-undocumented-module": "Brak dokumentacji dla modułu $1.",
        "api-help-flag-deprecated": "Ten moduł jest przestarzały.",
index bc7c779..1c87ea9 100644 (file)
@@ -69,11 +69,8 @@ class TemporaryPasswordAuthenticationRequest extends AuthenticationRequest {
                $minLength = $config->get( 'MinimalPasswordLength' );
                $policy = $config->get( 'PasswordPolicy' );
                foreach ( $policy['policies'] as $p ) {
-                       if ( isset( $p['MinimalPasswordLength'] ) ) {
-                               $minLength = max( $minLength, $p['MinimalPasswordLength'] );
-                       }
-                       if ( isset( $p['MinimalPasswordLengthToLogin'] ) ) {
-                               $minLength = max( $minLength, $p['MinimalPasswordLengthToLogin'] );
+                       foreach ( [ 'MinimalPasswordLength', 'MinimumPasswordLengthToLogin' ] as $check ) {
+                               $minLength = max( $minLength, $p[$check]['value'] ?? $p[$check] ?? 0 );
                        }
                }
 
index bf7ef04..5d3fabb 100644 (file)
@@ -35,7 +35,7 @@ class PageRestriction extends AbstractRestriction {
        const TYPE_ID = 1;
 
        /**
-        * @var \Title
+        * @var \Title|bool
         */
        protected $title;
 
@@ -43,6 +43,10 @@ class PageRestriction extends AbstractRestriction {
         * {@inheritdoc}
         */
        public function matches( \Title $title ) {
+               if ( !$this->getTitle() ) {
+                       return false;
+               }
+
                return $title->equals( $this->getTitle() );
        }
 
@@ -66,11 +70,17 @@ class PageRestriction extends AbstractRestriction {
         * @return \Title|null
         */
        public function getTitle() {
-               if ( !$this->title ) {
+               if ( $this->title === null ) {
                        $this->title = \Title::newFromID( $this->value );
+
+                       // If the title does not exist, set to false to prevent multiple database
+                       // queries.
+                       if ( $this->title === null ) {
+                               $this->title = false;
+                       }
                }
 
-               return $this->title;
+               return $this->title ?? null;
        }
 
        /**
index 65e659d..ceb51f2 100644 (file)
@@ -23,6 +23,7 @@
  * @author Timo Tijhof
  */
 
+use MediaWiki\MediaWikiServices;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerInterface;
 use Psr\Log\NullLogger;
@@ -36,7 +37,7 @@ use Wikimedia\Rdbms\Database;
  */
 class MessageBlobStore implements LoggerAwareInterface {
 
-       /* @var ResourceLoader|null */
+       /* @var ResourceLoader */
        private $resourceloader;
 
        /**
@@ -50,13 +51,13 @@ class MessageBlobStore implements LoggerAwareInterface {
        protected $wanCache;
 
        /**
-        * @param ResourceLoader|null $rl
+        * @param ResourceLoader $rl
         * @param LoggerInterface|null $logger
         */
-       public function __construct( ResourceLoader $rl = null, LoggerInterface $logger = null ) {
+       public function __construct( ResourceLoader $rl, LoggerInterface $logger = null ) {
                $this->resourceloader = $rl;
                $this->logger = $logger ?: new NullLogger();
-               $this->wanCache = ObjectCache::getMainWANInstance();
+               $this->wanCache = MediaWikiServices::getInstance()->getMainWANObjectCache();
        }
 
        /**
@@ -190,12 +191,6 @@ class MessageBlobStore implements LoggerAwareInterface {
         * @return ResourceLoader
         */
        protected function getResourceLoader() {
-               // Back-compat: This class supports instantiation without a ResourceLoader object.
-               // Lazy-initialise this property because most callers don't need it.
-               if ( $this->resourceloader === null ) {
-                       $this->logger->warning( __CLASS__ . ' created without a ResourceLoader instance' );
-                       $this->resourceloader = new ResourceLoader();
-               }
                return $this->resourceloader;
        }
 
index 21b262a..1d00d19 100644 (file)
@@ -1034,7 +1034,9 @@ class LocalisationCache {
                # HACK: If using a null (i.e. disabled) storage backend, we
                # can't write to the MessageBlobStore either
                if ( $purgeBlobs && !$this->store instanceof LCStoreNull ) {
-                       $blobStore = new MessageBlobStore();
+                       $blobStore = new MessageBlobStore(
+                               MediaWikiServices::getInstance()->getResourceLoader()
+                       );
                        $blobStore->clear();
                }
        }
index 7a54f95..b8ab971 100644 (file)
@@ -472,17 +472,6 @@ class ChangesList extends ContextSource {
                        ' <span class="mw-changeslist-separator"></span> ';
        }
 
-       /**
-        * @param string &$s Article link will be appended to this string, in place.
-        * @param RecentChange $rc
-        * @param bool $unpatrolled
-        * @param bool $watched
-        * @deprecated since 1.27, use getArticleLink instead.
-        */
-       public function insertArticleLink( &$s, RecentChange $rc, $unpatrolled, $watched ) {
-               $s .= $this->getArticleLink( $rc, $unpatrolled, $watched );
-       }
-
        /**
         * @param RecentChange &$rc
         * @param bool $unpatrolled
index 28b30d8..51a26ba 100644 (file)
@@ -77,12 +77,12 @@ class EnhancedChangesList extends ChangesList {
                $this->lastdate = '';
                $this->rclistOpen = false;
                $this->getOutput()->addModuleStyles( [
+                       'mediawiki.icon',
                        'mediawiki.special.changeslist',
                        'mediawiki.special.changeslist.enhanced',
                ] );
                $this->getOutput()->addModules( [
                        'jquery.makeCollapsible',
-                       'mediawiki.icon',
                ] );
 
                return '<div class="mw-changeslist">';
index 6ebe800..66a8165 100644 (file)
@@ -141,11 +141,11 @@ class ChangeTags {
         * we consider the tag hidden, and return false.
         *
         * @param string $tag
-        * @param MessageLocalizer $context
+        * @param IContextSource $context
         * @return string|bool Tag description or false if tag is to be hidden.
         * @since 1.25 Returns false if tag is to be hidden.
         */
-       public static function tagDescription( $tag, MessageLocalizer $context ) {
+       public static function tagDescription( $tag, IContextSource $context ) {
                $msg = $context->msg( "tag-$tag" );
                if ( !$msg->exists() ) {
                        // No such message, so return the HTML-escaped tag name.
@@ -168,11 +168,11 @@ class ChangeTags {
         * for the long description.
         *
         * @param string $tag
-        * @param MessageLocalizer $context
+        * @param IContextSource $context
         * @return Message|bool Message object of the tag long description or false if
         *  there is no description.
         */
-       public static function tagLongDescriptionMessage( $tag, MessageLocalizer $context ) {
+       public static function tagLongDescriptionMessage( $tag, IContextSource $context ) {
                $msg = $context->msg( "tag-$tag-description" );
                if ( !$msg->exists() ) {
                        return false;
@@ -196,8 +196,6 @@ class ChangeTags {
         * @return string Truncated long tag description.
         */
        public static function truncateTagDescription( $tag, $length, IContextSource $context ) {
-               // FIXME: Make this accept MessageLocalizer and Language instead of IContextSource
-
                $originalDesc = self::tagLongDescriptionMessage( $tag, $context );
                // If there is no tag description, return empty string
                if ( !$originalDesc ) {
@@ -422,8 +420,6 @@ class ChangeTags {
                        }
                }
 
-               self::purgeTagUsageCache();
-
                Hooks::run( 'ChangeTagsAfterUpdateTags', [ $tagsToAdd, $tagsToRemove, $prevTags,
                        $rc_id, $rev_id, $log_id, $params, $rc, $user ] );
 
@@ -1458,18 +1454,15 @@ class ChangeTags {
                $cache->touchCheckKey( $cache->makeKey( 'valid-tags-hook' ) );
 
                MediaWikiServices::getInstance()->getChangeTagDefStore()->reloadMap();
-
-               self::purgeTagUsageCache();
        }
 
        /**
         * Invalidates the tag statistics cache only.
         * @since 1.25
+        * @deprecated since 1.33 the cache this purges no longer exists
         */
        public static function purgeTagUsageCache() {
-               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
-
-               $cache->touchCheckKey( $cache->makeKey( 'change-tag-statistics' ) );
+               wfDeprecated( __METHOD__, '1.33' );
        }
 
        /**
index 8fea3ec..d45b2ce 100644 (file)
@@ -22,7 +22,7 @@
  * @since 1.16.3
  */
 class IcuCollation extends Collation {
-       const FIRST_LETTER_VERSION = 3;
+       const FIRST_LETTER_VERSION = 4;
 
        /** @var Collator */
        private $primaryCollator;
@@ -225,6 +225,7 @@ class IcuCollation extends Collation {
                'tl' => [ "Ñ", "Ng" ], // not in libicu
                'to' => [ "Ng", "ʻ" ],
                'tr' => [ "Ç", "Ğ", "İ", "Ö", "Ş", "Ü" ],
+               '-tr' => [ "ı" ],
                'tt' => [ "Ә", "Ө", "Ү", "Җ", "Ң", "Һ" ], // not in libicu
                'uk' => [ "Ґ", "Ь" ],
                'uz' => [ "Ch", "G'", "Ng", "O'", "Sh" ], // not in libicu
index ae47b86..49e3132 100644 (file)
@@ -59,7 +59,7 @@ abstract class ContentHandler {
         * If $content is null, this method returns the empty string.
         *
         * If $content is an instance of TextContent, this method returns the flat
-        * text as returned by $content->getNativeData().
+        * text as returned by $content->getText().
         *
         * If $content is not a TextContent object, the behavior of this method
         * depends on the global $wgContentHandlerTextFallback:
index 40521d5..87863a4 100644 (file)
@@ -1033,7 +1033,7 @@ class DifferenceEngine extends ContextSource {
                        // Try cache
                        if ( !$this->mRefreshCache ) {
                                $difftext = $cache->get( $key );
-                               if ( $difftext ) {
+                               if ( is_string( $difftext ) ) {
                                        wfIncrStats( 'diff_cache.hit' );
                                        $difftext = $this->localiseDiff( $difftext );
                                        $difftext .= "\n<!-- diff cache key $key -->\n";
@@ -1642,8 +1642,8 @@ class DifferenceEngine extends ContextSource {
                        $this->mOldPage = Title::newFromLinkTarget( $oldRevision->getPageAsLinkTarget() );
                        // This method is meant for edit diffs and such so there is no reason to provide a
                        // revision that's not readable to the user, but check it just in case.
-                       $this->mOldContent = $oldRevision ? $oldRevision->getContent( SlotRecord::MAIN,
-                               RevisionRecord::FOR_THIS_USER, $this->getUser() ) : null;
+                       $this->mOldContent = $oldRevision->getContent( SlotRecord::MAIN,
+                               RevisionRecord::FOR_THIS_USER, $this->getUser() );
                } else {
                        $this->mOldPage = null;
                        $this->mOldRev = $this->mOldid = false;
index 55a7b2d..96b43d6 100644 (file)
@@ -36,13 +36,6 @@ use MediaWiki\MediaWikiServices;
  */
 class WikiRevision implements ImportableUploadRevision, ImportableOldRevision {
 
-       /**
-        * @since 1.17
-        * @deprecated in 1.29. Unused.
-        * @note Introduced in 9b3128eb2b654761f21fd4ca1d5a1a4b796dc912, unused there, unused now.
-        */
-       public $importer = null;
-
        /**
         * @since 1.2
         * @var Title
index a146ae4..6315de4 100644 (file)
@@ -23,6 +23,8 @@
 use Wikimedia\Rdbms\LBFactorySingle;
 use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\DBExpectedError;
+use Wikimedia\Rdbms\DBConnectionError;
 
 /**
  * Base class for DBMS-specific installation helper classes.
@@ -371,6 +373,7 @@ abstract class DatabaseInstaller {
        /**
         * Perform database upgrades
         *
+        * @suppress SecurityCheck-XSS Escaping provided by $this->outputHandler
         * @return bool
         */
        public function doUpgrade() {
@@ -620,7 +623,12 @@ abstract class DatabaseInstaller {
                        return false;
                }
 
-               if ( !$this->db->selectDB( $this->getVar( 'wgDBname' ) ) ) {
+               try {
+                       $this->db->selectDB( $this->getVar( 'wgDBname' ) );
+               } catch ( DBConnectionError $e ) {
+                       // Don't catch DBConnectionError
+                       throw $e;
+               } catch ( DBExpectedError $e ) {
                        return false;
                }
 
index d64e2d7..7a92807 100644 (file)
@@ -1074,7 +1074,9 @@ abstract class DatabaseUpdater {
                }
 
                // ResourceLoader: Message cache
-               $blobStore = new MessageBlobStore();
+               $blobStore = new MessageBlobStore(
+                       MediaWikiServices::getInstance()->getResourceLoader()
+               );
                $blobStore->clear();
 
                // ResourceLoader: File-dependency cache
index 5a3d77a..20661f2 100644 (file)
@@ -1464,6 +1464,7 @@ abstract class Installer {
        /**
         * Installs the auto-detected extensions.
         *
+        * @suppress SecurityCheck-OTHER It thinks $exts/$IP is user controlled but they are not.
         * @return Status
         */
        protected function includeExtensions() {
index ae07d0c..b061d0d 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup Deployment
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * Output class modelled on OutputPage.
  *
@@ -147,7 +149,7 @@ class WebInstallerOutput {
                        'mediawiki.skinning.interface',
                ];
 
-               $resourceLoader = new ResourceLoader();
+               $resourceLoader = MediaWikiServices::getInstance()->getResourceLoader();
 
                if ( file_exists( "$wgStyleDirectory/Vector/skin.json" ) ) {
                        // Force loading Vector skin if available as a fallback skin
index a212289..8c17ac7 100644 (file)
        "config-db-username": "اسم مستخدم قاعدة البيانات:",
        "config-db-password": "كلمة سر قاعدة البيانات:",
        "config-db-install-username": "أدخل اسم المستخدم الذي سيتم استخدامه للاتصال بقاعدة البيانات أثناء عملية التثبيت. هذا ليس اسم مستخدم لحساب ميدياويكي. هذا اسم مستخدم لقاعدة البيانات الخاصة بك.",
-       "config-db-install-password": "أدخل كلمة المرور التي سيتم استخدامها للاتصال بقاعدة البيانات أثناء عملية التثبيت. ليست هذه كلمة مرور لحساب ميدياويكي. هذه كلمة مرور لقاعدة البيانات الخاصة بك.",
+       "config-db-install-password": "أدخل كلمة السر التي سيتم استخدامها للاتصال بقاعدة البيانات أثناء عملية التثبيت. ليست هذه كلمة سر لحساب ميدياويكي. هذه كلمة سر لقاعدة البيانات الخاصة بك.",
        "config-db-install-help": "أدخل اسم المستخدم وكلمة المرور الذين سيتم استخدامهما للاتصال بقاعدة البيانات أثناء عملية التثبيت.",
        "config-db-account-lock": "استخدم نفس اسم المستخدم وكلمة المرور أثناء التشغيل العادي",
        "config-db-wiki-account": "حساب المستخدم للتشغيل العادي",
        "config-admin-help": "أدخل اسم المستخدم المفضل لديك هنا، على سبيل المثال \"جو أشرف فاروق\". هذا هو الاسم الذي ستستخدمه لتسجيل الدخول إلى الويكي.",
        "config-admin-name-blank": "أدخل اسم مستخدم لإداري.",
        "config-admin-name-invalid": "اسم المستخدم المحدد \"<nowiki>$1</ nowiki>\" غير صالح. حدد اسم مستخدم مختلفا.",
-       "config-admin-password-blank": "أدخل كلمة مرور حساب الإداري.",
+       "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-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يجب عليك الاشتراك فيها وتحديث تثبيت ميدياويكي الخاص بك عندما تظهر إصدارات جديدة.",
index eaa5914..0e83199 100644 (file)
        "config-invalid-db-server-oracle": "Няслушнае TNS базы зьвестак «$1».\nВыкарыстоўвайце або «TNS Name», або радок «Easy Connect» ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Мэтады найменьня Oracle])",
        "config-invalid-db-name": "Няслушная назва базы зьвестак «$1».\nНазва можа ўтрымліваць толькі ASCII-літары (a-z, A-Z), лічбы (0-9), сымбалі падкрэсьліваньня(_) і працяжнікі (-).",
        "config-invalid-db-prefix": "Няслушны прэфікс базы зьвестак «$1».\nЁн можа зьмяшчаць толькі ASCII-літары (a-z, A-Z), лічбы (0-9), сымбалі падкрэсьліваньня (_) і працяжнікі (-).",
-       "config-connection-error": "$1.\n\nПраверце хост, імя карыстальніка і пароль ніжэй і паспрабуйце зноў.",
+       "config-connection-error": "$1.\n\nПраверце хост, імя карыстальніка і пароль і паспрабуйце зноў. Калі вы ўжываеце «localhost» у якасьці хосту базы зьвестак, паспрабуйце «127.0.0.1» замест (ці наадварот).",
        "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 можа выкарыстоўвацца толькі для стварэньня новых рахункаў!",
index 5116fa6..7fb9851 100644 (file)
@@ -87,7 +87,7 @@
        "config-db-host": "Сървър на базата от данни:",
        "config-db-host-help": "Ако базата от данни е на друг сървър, в кутията се въвежда името на хоста или IP адреса.\n\nАко се използва споделен уеб хостинг, доставчикът на услугата би трябвало да е предоставил в документацията си коректния хост.\n\nАко инсталацията протича на Windows-сървър и се използва MySQL, използването на \"localhost\" може да е неприемливо. В такива случаи се използва \"127.0.0.1\" за локален IP адрес.\n\nПри използване на PostgreSQL, това поле се оставя празно, за свързване чрез Unix socket.",
        "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-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\nАко се използва споделен хостинг, доставчикът на услугата би трябвало да е предоставил или име на базата от данни, която да бъде използвана, или да позволява създаването на бази от данни чрез контролния панел.",
index 35088ed..dd265a1 100644 (file)
@@ -81,6 +81,7 @@
        "config-uploads-not-safe": "<strong>Avís:</strong> El directori de càrregues per defecte <code>$1</code> és vulnerable a l'execució d'scripts arbitraris.\nEncara que el MediaWiki comprova tots els fitxers que es carreguen davant d'amenaces de seguretat, és molt recomanable [https://www.mediawiki.org/ wiki/Special:MyLanguage/Manual:Security#Upload_security tancar aquesta vulnerabilitat de seguretat] abans d'habilitar les càrregues.",
        "config-db-type": "Tipus de base de dades:",
        "config-db-host": "Servidor de la base de dades:",
+       "config-db-host-help": "Si el servidor de base de dades és en un servidor diferent, introduïu el nom del servidor o l'adreça IP a continuació.\n\nSi feu servir un hostatge web compartit, el vostre proveïdor us hauria de proporcionar el nom del servidor a la documentació.\n\nSi feu servir MySQL, «localhost» podria no funcionar com a nom de servidor. Si no funciona, proveu «127.0.0.1» com a adreça IP local.\n\nSi feu servir PostgreSQL, deixeu aquest camp en blanc per a connectar-vos a través d'un sòcol Unix.",
        "config-db-host-oracle": "TNS de la base de dades:",
        "config-db-wiki-settings": "Identifica aquest wiki",
        "config-db-name": "Nom de la base de dades (sense guionets):",
        "config-missing-db-server-oracle": "Heu d’introduir un valor per a «{{int:config-db-host-oracle}}».",
        "config-invalid-db-name": "El nom de la base de dades, «$1», no és vàlid.\nUtilitzeu només lletres de l’ASCII (a-z, A-Z), xifres (0-9), guions baixos (_) i guionets (-).",
        "config-invalid-db-prefix": "El prefix de la base de dades, «$1», no és vàlid.\nUtilitzeu només lletres de l’ASCII (a-z, A-Z), xifres (0-9), guions baixos (_) i guionets (-).",
-       "config-connection-error": "$1.\n\nComproveu el servidor central, el nom d'usuari i la contrasenya i torneu-ho a provar.",
+       "config-connection-error": "$1.\n\nComproveu el servidor central, el nom d'usuari i la contrasenya i torneu-ho a provar. Si feu servir «localhost» com a servidor de base de dades, proveu llavors d'utilitzar «127.0.0.1» (o a l'inrevés).",
        "config-invalid-schema": "L’esquema «$1» no és vàlid per al MediaWiki.\nUtilitzeu només lletres de l’ASCII (a-z, A-Z), xifres (0-9), guions baixos (_) i guionets (-).",
        "config-db-sys-create-oracle": "L'instal·lador només accepta emprar un compte SYSDBA per a la creació d'un nou compte.",
        "config-db-sys-user-exists-oracle": "El compte d’usuari «$1» ja existeix. SYSDBA només es pot fer servir per crear comptes nous.",
index 92d508a..943b8fc 100644 (file)
@@ -64,6 +64,8 @@
        "config-header-sqlite": "SQLite-indstillinger",
        "config-header-oracle": "Oracle-indstillinger",
        "config-invalid-db-type": "Ugyldig databasetype",
+       "config-sqlite-readonly": "Filen <code>$1</code> er ikke skrivbar.",
+       "config-sqlite-cant-create-db": "Kunne ikke oprette databasefilen <code>$1</code>.",
        "config-db-web-create": "Opret kontoen hvis den ikke allerede findes",
        "config-mysql-innodb": "InnoDB (anbefalet)",
        "config-mysql-myisam": "MyISAM",
index 781e4d2..01dc661 100644 (file)
@@ -66,9 +66,9 @@
        "config-wincache": "[https://www.iis.net/downloads/microsoft/wincache-extension WinCache] es installate",
        "config-no-cache-apcu": "<strong>Attention:</strong> Impossibile trovar [https://secure.php.net/apcu APCu] o [https://www.iis.net/downloads/microsoft/wincache-extension WinCache].\nLe cache de objectos non es activate.",
        "config-mod-security": "<strong>Attention</strong>: [https://modsecurity.org/ mod_security]/mod_security2 es active in tu servitor web. Multe configurationes commun de isto causa problemas pro MediaWiki o altere software que permitte al usatores de publicar contento arbitrari. Si possibile, isto deberea esser disactivate.\nAlteremente, consulta le [https://modsecurity.org/documentation/ documentation de mod_security] o contacta le servicio de adjuta de tu servitor si tu incontra estranie errores.",
-       "config-diff3-bad": "GNU diff3 non trovate.",
+       "config-diff3-bad": "Le utilitate de comparation de texto GNU diff3 non ha essite trovate. Es possibile ignorar isto pro le momento, ma tu poterea incontrar conflictos de modification plus frequentemente.",
        "config-git": "Systema de controlo de version Git trovate: <code>$1</code>",
-       "config-git-bad": "Systema de controlo de version Git non trovate.",
+       "config-git-bad": "Le systema de controlo de version Git non ha essite trovate. Tu pote ignorar isto pro le momento. Nota ben que le pagina Special:Version non monstrara le \"commit hashes\".",
        "config-imagemagick": "ImageMagick trovate: <code>$1</code>.\nLe miniaturas de imagines essera activate si tu activa le incargamento de files.",
        "config-gd": "Le bibliotheca graphic GD se trova integrate in le systema.\nLe miniaturas de imagines essera activate si tu activa le incargamento de files.",
        "config-no-scaling": "Non poteva trovar le bibliotheca GD ni ImageMagick.\nLe miniaturas de imagines essera disactivate.",
@@ -83,7 +83,7 @@
        "config-using-32bit": "<strong>Attention:</strong> tu systema pare operar con integres de 32 bits. Isto [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit non es recommendate].",
        "config-db-type": "Typo de base de datos:",
        "config-db-host": "Servitor de base de datos:",
-       "config-db-host-help": "Si tu servitor de base de datos es in un altere servitor, entra hic le nomine o adresse IP del servitor.\n\nSi tu usa un servitor web usate in commun, tu providitor deberea dar te le correcte nomine de servitor in su documentation.\n\nSi tu face le installation in un servitor Windows e usa MySQL, le nomine \"localhost\" possibilemente non functiona como nomine de servitor. In tal caso, essaya \"127.0.0.1\", i.e. le adresse IP local.\n\nSi tu usa PostgreSQL, lassa iste campo vacue pro connecter via un \"socket\" de Unix.",
+       "config-db-host-help": "Si tu servitor de base de datos es in un altere servitor, entra hic le nomine o adresse IP del servitor.\n\nSi tu usa un servitor web usate in commun, tu providitor deberea dar te le correcte nomine de servitor in su documentation.\n\nSi tu usa MySQL, le nomine \"localhost\" possibilemente non functiona como nomine de servitor. In tal caso, essaya \"127.0.0.1\", i.e. le adresse IP local.\n\nSi tu usa PostgreSQL, lassa iste campo vacue pro connecter via un \"socket\" de Unix.",
        "config-db-host-oracle": "TNS del base de datos:",
        "config-db-host-oracle-help": "Entra un [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm nomine Local Connect] valide; un file tnsnames.ora debe esser visibile a iste installation.<br />Si tu usa bibliothecas de cliente 10g o plus recente, tu pote anque usar le methodo de nomination [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].",
        "config-db-wiki-settings": "Identificar iste wiki",
        "config-invalid-db-server-oracle": "TNS de base de datos \"$1\" invalide.\nUsa o \"TNS Name\" o un catena \"Easy Connect\". ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Methodos de nomenclatura de Oracle])",
        "config-invalid-db-name": "Nomine de base de datos \"$1\" invalide.\nUsa solmente litteras ASCII (a-z, A-Z), numeros (0-9), characteres de sublineamento (_) e tractos de union (-).",
        "config-invalid-db-prefix": "Prefixo de base de datos \"$1\" invalide.\nUsa solmente litteras ASCII (a-z, A-Z), numeros (0-9), characteres de sublineamento (_) e tractos de union (-).",
-       "config-connection-error": "$1.\n\nVerifica le servitor, nomine de usator e contrasigno hic infra e reproba.",
+       "config-connection-error": "$1.\n\nVerifica le servitor, nomine de usator e contrasigno e reproba. Si tu usa \"localhost\" como nomine de servitor, essaya substituer \"127.0.0.1\" (o vice versa).",
        "config-invalid-schema": "Schema invalide pro MediaWiki \"$1\".\nUsa solmente litteras ASCII (a-z, A-Z), numeros (0-9) e characteres de sublineamento (_).",
        "config-db-sys-create-oracle": "Le installator supporta solmente le uso de un conto SYSDBA pro le creation de un nove conto.",
        "config-db-sys-user-exists-oracle": "Le conto de usator \"$1\" ja existe. SYSDBA pote solmente esser usate pro le creation de un nove conto!",
        "config-install-mainpage-failed": "Non poteva inserer le pagina principal: $1",
        "config-install-done": "<strong>Felicitationes!</strong>\nTu ha installate MediaWiki.\n\nLe installator ha generate un file <code>LocalSettings.php</code>.\nIste contine tote le configuration.\n\nEs necessari discargar lo e poner lo in le base del installation wiki (le mesme directorio que index.php).\nLe discargamento debe haber comenciate automaticamente.\n\nSi le discargamento non ha comenciate, o si illo esseva cancellate, recomencia le discargamento con un clic sur le ligamine sequente:\n\n$3\n\n<strong>Nota:</strong> Si tu non discarga iste file de configuration ora, illo non essera disponibile plus tarde.\n\nPost facer isto, tu pote <strong>[$2 entrar in tu wiki]</strong>.",
        "config-install-done-path": "<strong>Felicitationes!</strong>\nTu ha installate MediaWiki.\n\nLe installator ha generate un file <code>LocalSettings.php</code>.\nIste contine tote le configuration.\n\nEs necessari discargar lo e poner lo in <code>$4</code>.\nLe discargamento debe haber comenciate automaticamente.\n\nSi le discargamento non ha comenciate, o si illo esseva cancellate, recomencia le discargamento con un clic sur le ligamine sequente:\n\n$3\n\n<strong>Nota:</strong> Si tu non discarga iste file de configuration ora, illo non essera disponibile plus tarde.\n\nPost facer isto, tu pote <strong>[$2 entrar in tu wiki]</strong>.",
-       "config-install-success": "MediaWiki ha essite installate con successo. Tu pote ora\nvisitar <$1$2> pro vider tu wiki.\nSi tu ha questiones, consulta nostre lista de questiones frequentemente ponite:\n<https://www.mediawiki.org/wiki/Manual:FAQ> o usa un del\nforos de supporto indicate sur ille pagina.",
+       "config-install-success": "MediaWiki ha essite installate con successo. Tu pote ora\nvisitar <$1$2> pro vider tu wiki.\nSi tu ha questiones, consulta nostre lista de questiones frequentemente ponite:\n<https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ> o usa un del\nforos de supporto indicate sur ille pagina.",
        "config-download-localsettings": "Discargar <code>LocalSettings.php</code>",
        "config-help": "adjuta",
        "config-help-tooltip": "clicca pro displicar",
index 93039ff..707fc24 100644 (file)
        "config-env-hhvm": "HHVM $1 er uppsett.",
        "config-apc": "[https://secure.php.net/apc APC] er uppsett",
        "config-wincache": "[https://www.iis.net/downloads/microsoft/wincache-extension WinCache] er uppsett",
-       "config-diff3-bad": "GNU diff3 fannst ekki.",
+       "config-diff3-bad": "GNU diff3 textasamanburðartólið fannst ekki. Þú getur hunsað þetta núna, en þú gætir lent oftar í breytingaárekstrum.",
        "config-using-server": "Nota \"<nowiki>$1</nowiki>\" sem heiti á þjóni.",
        "config-using-uri": "Nota \"<nowiki>$1$2</nowiki>\" sem slóð á þjón.",
        "config-db-type": "Tegund gagnagrunns:",
        "config-db-host": "Netþjónn gagnagrunns:",
-       "config-db-name": "Heiti gagnagrunns:",
+       "config-db-name": "Heiti gagnagrunns (engin bandstrik):",
        "config-db-name-oracle": "Gagnagrunnsskema:",
        "config-db-username": "Notandanafn á gagnagrunni:",
        "config-db-password": "Lykilorð gagnagrunns:",
        "config-db-port": "Gátt gagnagrunns:",
        "config-sqlite-dir": "Gagnamappa SQLite:",
-       "config-type-mysql": "MySQL (eða samhæft)",
+       "config-type-mysql": "MariaDB, MySQL, eða samhæft",
        "config-type-postgres": "PostgreSQL",
        "config-type-sqlite": "SQLite",
        "config-type-oracle": "Oracle",
        "config-type-mssql": "Microsoft SQL Server",
-       "config-header-mysql": "Stillingar MySQL",
+       "config-header-mysql": "Stillingar MariaDB/MySQL",
        "config-header-postgres": "Stillingar PostgreSQL",
        "config-header-sqlite": "Stillingar SQLite",
        "config-header-oracle": "Stillingar Oracle",
@@ -61,7 +61,7 @@
        "config-show-table-status": "<code>SHOW TABLE STATUS</code> beiðni mistókst!",
        "config-db-web-account": "Gagnagrunnsreikningur fyrir vefaðgang",
        "config-mysql-engine": "Gagnagrunnshýsing:",
-       "config-mysql-innodb": "InnoDB",
+       "config-mysql-innodb": "InnoDB (mælt með)",
        "config-mysql-myisam": "MyISAM",
        "config-mssql-auth": "Tegund auðkenningar:",
        "config-mssql-sqlauth": "SQL Server auðkenning",
index 1d7e908..5be6e03 100644 (file)
@@ -21,7 +21,8 @@
                        "Einreiher",
                        "Tosky",
                        "Selven",
-                       "Sarah Bernabei"
+                       "Sarah Bernabei",
+                       "ArTrix"
                ]
        },
        "config-desc": "Programma di installazione per MediaWiki",
@@ -96,6 +97,7 @@
        "config-no-cli-uploads-check": "<strong>Attenzione:</strong> la directory predefinita per i caricamenti (<code>$1</code>) non è stata verificata per la vulnerabilità sull'esecuzione arbitraria di script durante l'installazione da linea di comando.",
        "config-brokenlibxml": "Il tuo sistema ha una combinazione di versioni di PHP e libxml2 che è difettosa e che può provocare un danneggiamento non visibile di dati in MediaWiki ed in altre applicazioni per il web.\nAggiorna a libxml2 2.7.3 o successivo ([https://bugs.php.net/bug.php?id=45996 il bug è studiato dal lato PHP]).\nInstallazione interrotta.",
        "config-suhosin-max-value-length": "Suhosin è installato e limita il parametro GET <code>length</code> a $1 byte.\nIl componente MediaWiki ResourceLoader funzionerà aggirando questo limite, ma riducendo le prestazioni.\nSe possibile, dovresti impostare <code>suhosin.get.max_value_length</code> a 1024 o superiore in <code>php.ini</code>, ed impostare <code>$wgResourceLoaderMaxQueryLength</code> allo stesso valore in <code>LocalSettings.php</code>.",
+       "config-using-32bit": "<strong>Attenzione</strong> sembra che il tuo sistema utilizzi interi a 32-bit, ciò [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit non è raccomandato].",
        "config-db-type": "Tipo di database:",
        "config-db-host": "Host del database:",
        "config-db-host-help": "Se il server del tuo database è su un server diverso, immetti qui il nome dell'host o il suo indirizzo IP.\n\nSe stai utilizzando un web hosting condiviso, il tuo hosting provider dovrebbe fornirti il nome host corretto nella sua documentazione.\n\nSe stai utilizzando MySQL, l'uso di \"localhost\" potrebbe non funzionare correttamente come nome del server. In caso di problemi, prova a impostare \"127.0.0.1\" come indirizzo IP locale.\n\nSe usi PostgreSQL, lascia questo campo vuoto per consentire di connettersi tramite un socket Unix.",
        "config-help-tooltip": "fai clic per espandere",
        "config-nofile": "Il file \"$1\" non può essere trovato. È stato eliminato?",
        "config-extension-link": "Sapevi che il tuo wiki supporta le  [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions estensioni]?\n\nPuoi navigare tra le [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category estensioni per categoria].",
+       "config-skins-screenshots": "$1 (screenshots: $2)",
        "config-extensions-requires": "$1 (richiesto $2)",
+       "config-screenshot": "screenshot",
        "config-extension-not-found": "Impossibile trovare il file di registrazione per l'estensione \"$1\"",
        "config-extension-dependency": "Si è verificato un errore di dipendenza durante l'installazione dell'estensione \"$1\": $2",
        "mainpagetext": "<strong>MediaWiki è stato installato.</strong>",
index 4e1ae0e..73ab2ba 100644 (file)
@@ -83,7 +83,7 @@
        "config-using-32bit": "<strong>Предупредување:</strong> вашиот систем работи на 32-битни цели броеви. Ова [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-не се препорачува].",
        "config-db-type": "Тип на база:",
        "config-db-host": "Домаќин на базата:",
-       "config-db-host-help": "Ð\90ко Ð²Ð°Ñ\88аÑ\82а Ð±Ð°Ð·Ð° Ðµ Ð½Ð° Ð´Ñ\80Ñ\83г Ð¾Ð¿Ñ\81лÑ\83жÑ\83ваÑ\87, Ñ\82огаÑ\88 Ñ\82Ñ\83ка Ð²Ð½ÐµÑ\81еÑ\82е Ð³Ð¾ Ð¸Ð¼ÐµÑ\82о Ð½Ð° Ð´Ð¾Ð¼Ð°Ñ\9cиноÑ\82 Ð¸Ð»Ð¸ IP-адÑ\80еÑ\81аÑ\82а.\n\nÐ\90ко ÐºÐ¾Ñ\80иÑ\81Ñ\82иÑ\82е Ð·Ð°ÐµÐ´Ð½Ð¸Ñ\87ко (Ñ\81поделено) Ð²Ð´Ð¾Ð¼Ñ\83ваÑ\9aе, Ñ\82огаÑ\88 Ð²Ð°Ñ\88иоÑ\82 Ð²Ð´Ð¾Ð¼Ð¸Ñ\82ел Ñ\82Ñ\80еба Ð´Ð° Ð³Ð¾ Ð½Ð°Ð²ÐµÐ´Ðµ Ñ\82оÑ\87ноÑ\82о Ð¸Ð¼Ðµ Ð½Ð° Ð´Ð¾Ð¼Ð°Ñ\9cиноÑ\82 Ð²Ð¾ Ð½ÐµÐ³Ð¾Ð²Ð°Ñ\82а Ð´Ð¾ÐºÑ\83менÑ\82аÑ\86иÑ\98а.\n\nÐ\90ко Ð²Ð¾Ñ\81поÑ\81Ñ\82авÑ\83ваÑ\82е Ð½Ð° Ð¾Ð¿Ñ\81лÑ\83жÑ\83ваÑ\87 Ð½Ð° Windows Ð¸ ÐºÐ¾Ñ\80иÑ\81Ñ\82иÑ\82е MySQL, Ð¼Ð¾Ð¶Ð½Ð¾Ñ\81Ñ\82а â\80\9elocalhostâ\80\9c Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð½Ðµ Ñ\84Ñ\83нкÑ\86иониÑ\80а Ð·Ð° Ð¾Ð¿Ñ\81лÑ\83жÑ\83ваÑ\87коÑ\82о Ð¸Ð¼Ðµ. Ð\92о Ñ\82оÑ\98 Ñ\81лÑ\83Ñ\87аÑ\98, Ð¾Ð±Ð¸Ð´ÐµÑ\82е Ñ\81е Ñ\81о Ð²Ð½ÐµÑ\81Ñ\83ваÑ\9aе Ð½Ð° â\80\9e127.0.0.1â\80\9c ÐºÐ°ÐºÐ¾ Ð¼ÐµÑ\81на IP-адÑ\80еÑ\81а.\n\nÐ\90ко ÐºÐ¾Ñ\80иÑ\81Ñ\82иÑ\82е PostgreSQL, Ð¾Ñ\81Ñ\82авеÑ\82е Ð³Ð¾ Ð¿Ð¾Ð»ÐµÐ²Ð¾ Ð¿Ñ\80азно Ð·Ð° Ð´Ð° Ñ\81е Ð¿Ð¾Ð²Ñ\80зеÑ\82е Ð¿Ñ\80екÑ\83 Unix-пÑ\80иклÑ\83Ñ\87ок.",
+       "config-db-host-help": "Ако вашата база е на друг опслужувач, тогаш тука внесете го името на домаќинот или IP-адресата.\n\nАко користите заедничко (споделено) вдомување, тогаш вашиот вдомител треба да го наведе точното име на домаќинот во неговата документација.\n\nАко користите MySQL, можноста „localhost“ може да не функционира за опслужувачкото име. Во тој случај, обидете се со внесување на „127.0.0.1“ како месна IP-адреса.\n\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 месно име за поврзување]. На оваа воспоставка мора да ѝ биде видлива податотеката tnsnames.ora.<br />Ако користите клиентски библиотеки 10g или понови, тогаш можете да го користите и методот на иметнување на [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].",
        "config-db-wiki-settings": "Идентификувај го викиво",
        "config-invalid-db-server-oracle": "Неважечки TNS „$1“.\nКористете или „TNS Name“ или низата „Easy Connect“ ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Методи на именување за Oracle])",
        "config-invalid-db-name": "Неважечко име на базата „$1“.\nКористете само ASCII-букви (a-z, A-Z), бројки (0-9), долни црти (_) и цртички (-).",
        "config-invalid-db-prefix": "Неважечка претставка за базата „$1“.\nКористете само ASCII-букви (a-z, A-Z), бројки (0-9), долни црти (_) и цртички (-).",
-       "config-connection-error": "$1.\n\nПроверете го долунаведениот домаќин, корисничко име и лозинка и обидете се повторно.",
+       "config-connection-error": "$1.\n\nПроверете го долунаведениот домаќин, корисничко име и лозинка и обидете се повторно. Ако користите „localhost“ како домаќин на базата, заменете го со „127.0.0.1“ (или обратно).",
        "config-invalid-schema": "Неважечка шема за МедијаВики „$1“.\nКористете само букви, бројки и долни црти.",
        "config-db-sys-create-oracle": "Воспоставувачот поддржува само употреба на SYSDBA-сметка за создавање на нова сметка.",
        "config-db-sys-user-exists-oracle": "Корисничката сметка „$1“ веќе постои. SYSDBA служи само за создавање на нова сметка!",
index 8c19cb1..54f743d 100644 (file)
@@ -84,9 +84,9 @@
        "config-wincache": "[https://www.iis.net/downloads/microsoft/wincache-extension WinCache] is op dit moment geïnstalleerd",
        "config-no-cache-apcu": "<strong>Waarschuwing:</strong> [https://secure.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] of [https://www.iis.net/downloads/microsoft/wincache-extension WinCache] is niet aangetroffen.\nHet cachen van objecten is niet ingeschakeld.",
        "config-mod-security": "<strong>Waarschuwing:</strong> Uw webserver heeft de module [https://modsecurity.org/ mod_security]/mod_security2 ingeschakeld. Veel standaard instellingen hiervan zorgen voor problemen in combinatie met MediaWiki en andere software die gebruikers in staat stelt willekeurige inhoud te posten.\nIndien mogelijk, zou deze moeten worden uitgeschakeld. Lees anders de [https://modsecurity.org/documentation/ documentatie over mod_security] of neem contact op met de helpdesk van uw provider als u tegen problemen aanloopt.",
-       "config-diff3-bad": "GNU diff3 niet aangetroffen.",
+       "config-diff3-bad": "GNU diff3 niet aangetroffen. U kunt dit voorlopig negeren, maar bewerkingsconflicten kunnen vaker voorkomen.",
        "config-git": "Versiecontrolesoftware git is aangetroffen: <code>$1</code>",
-       "config-git-bad": "Geen git versiecontrolesoftware aangetroffen.",
+       "config-git-bad": "Geen git versiecontrolesoftware aangetroffen. U kunt dit voorlopig negeren. Merk op dat Speciaal:SoftwareVersie geen commit hashes toont.",
        "config-imagemagick": "ImageMagick aangetroffen: <code>$1</code>.\nHet aanmaken van miniaturen van afbeeldingen wordt ingeschakeld als u uploaden inschakelt.",
        "config-gd": "Ingebouwde GD grafische bibliotheek aangetroffen.\nHet aanmaken van miniaturen van afbeeldingen wordt ingeschakeld als u uploaden inschakelt.",
        "config-no-scaling": "Noch de GD-bibliotheek noch ImageMagick zijn  aangetroffen.\nHet maken van miniaturen van afbeeldingen wordt uitgeschakeld.",
index 890da8f..0efcc11 100644 (file)
        "config-using-32bit": "<strong>Uwaga:</strong> twój system wydaje się działać na 32 bitowej architekturze. Jest to [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit niezalecane].",
        "config-db-type": "Typ bazy danych:",
        "config-db-host": "Adres serwera bazy danych:",
-       "config-db-host-help": "Jeśli serwer bazy danych jest na innej maszynie, wprowadź jej nazwę domenową lub adres IP.\n\nJeśli korzystasz ze współdzielonego hostingu, operator serwera powinien podać Ci prawidłową nazwę serwera w swojej dokumentacji.\n\nJeśli instalujesz oprogramowanie na serwerze Windows i korzystasz z MySQL, użycie „localhost” może nie zadziałać jako nazwa hosta. Jeśli wystąpi ten problem, użyj „127.0.0.1” jako lokalnego adresu IP.\n\nJeżeli korzystasz z PostgreSQL, pozostaw to pole puste, aby połączyć się poprzez gniazdo Unixa.",
+       "config-db-host-help": "Jeśli serwer bazy danych jest na innej maszynie, wprowadź jej nazwę domenową lub adres IP.\n\nJeśli korzystasz ze współdzielonego hostingu, operator serwera powinien podać Ci prawidłową nazwę serwera w swojej dokumentacji.\n\nJeśli korzystasz z MySQL, użycie „localhost” może nie zadziałać jako nazwa hosta. Jeśli wystąpi ten problem, użyj „127.0.0.1” jako lokalnego adresu IP.\n\nJeżeli korzystasz z PostgreSQL, pozostaw to pole puste, aby połączyć się poprzez gniazdo Unixa.",
        "config-db-host-oracle": "Nazwa instancji bazy danych (TNS):",
        "config-db-host-oracle-help": "Wprowadź prawidłową [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm nazwę połączenia lokalnego]. Plik „tnsnames.ora” musi być widoczny dla instalatora.<br />Jeśli używasz biblioteki klienckiej 10g lub nowszej możesz również skorzystać z metody nazw [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm łatwego łączenia].",
        "config-db-wiki-settings": "Zidentyfikuj tę wiki",
        "config-invalid-db-server-oracle": "Nieprawidłowa nazwa instancji bazy danych (TNS) „$1”.\nUżyj \"TNS Name\" lub \"Easy Connect\" ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Oracle Naming Methods])",
        "config-invalid-db-name": "Nieprawidłowa nazwa bazy danych „$1”.\nUżywaj wyłącznie liter ASCII (a-z, A-Z), cyfr (0-9), podkreślenia (_) lub znaku odejmowania (-).",
        "config-invalid-db-prefix": "Nieprawidłowy prefiks bazy danych „$1”.\nUżywaj wyłącznie liter ASCII (a-z, A-Z), cyfr (0-9), podkreślenia (_) lub znaku odejmowania (-).",
-       "config-connection-error": "$1.\n\nSprawdź adres serwera, nazwę użytkownika i hasło, a następnie spróbuj ponownie.",
+       "config-connection-error": "$1.\n\nSprawdź adres serwera, nazwę użytkownika i hasło, a następnie spróbuj ponownie. Jeżeli korzystasz z „localhosta” jako serwera bazy danych, spróbuj zamiast tego użyć „127.0.0.1” (lub na odwrót).",
        "config-invalid-schema": "Nieprawidłowa nazwa schematu dla MediaWiki „$1”.\nNazwa może zawierać wyłącznie liter ASCII (a-z, A-Z), cyfr (0-9) i podkreślenia (_).",
        "config-db-sys-create-oracle": "Instalator może wykorzystać wyłącznie konto SYSDBA do tworzenia nowych kont użytkowników.",
        "config-db-sys-user-exists-oracle": "Konto użytkownika „$1” już istnieje. SYSDBA można użyć tylko do utworzenia nowego konta!",
index a01d5b7..97288bb 100644 (file)
@@ -91,7 +91,7 @@
        "config-invalid-db-server-oracle": "Neveljaven TNS zbirke podatkov »$1«.\nUporabite ali \"ime TNS\" ali niz \"Easy Connect\" ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Načini poimenovanja Oracle])",
        "config-invalid-db-name": "Neveljavno ime zbirke podatkov »$1«.\nUporabljajte samo črke ASCII (a-z, A-Z), številke (0-9), podčrtaje (_) in vezaje (-).",
        "config-invalid-db-prefix": "Neveljavna predpona zbirke podatkov »$1«.\nUporabljajte samo črke ASCII (a-z, A-Z), številke (0-9), podčrtaje (_) in vezaje (-).",
-       "config-connection-error": "$1.\n\nPreverite gostitelja, uporabniško ime in geslo spodaj ter poskusite znova.",
+       "config-connection-error": "$1.\n\nPreverite gostitelja, uporabniško ime in geslo ter poskusite znova. Če kot gostitelja zbirke podatkov uporabljate »localhost«, poskusite namesto tega uporabiti »127.0.0.1« (ali obratno).",
        "config-postgres-old": "Potreben je PostgreSQL $1 ali novejši; vi imate $2.",
        "config-sqlite-connection-error": "$1.\n\nPreverite mapo podatkov in ime zbirke podatkov spodaj ter poskusite znova.",
        "config-sqlite-readonly": "Datoteka <code>$1</code> ni zapisljiva.",
index 45ab4d3..d624acf 100644 (file)
@@ -67,7 +67,7 @@ abstract class Job implements IJobSpecification {
         * @param string $command Job command
         * @param Title $title Associated title
         * @param array $params Job parameters
-        * @throws MWException
+        * @throws InvalidArgumentException
         * @return Job
         */
        public static function factory( $command, Title $title, $params = [] ) {
index fa17284..cda0636 100644 (file)
@@ -206,6 +206,7 @@ class JobQueueDB extends JobQueue {
        /**
         * This function should *not* be called outside of JobQueueDB
         *
+        * @suppress SecurityCheck-SQLInjection Bug in phan-taint-check handling bulk inserts
         * @param IDatabase $dbw
         * @param IJobSpecification[] $jobs
         * @param int $flags
index 6ce8f45..536177e 100644 (file)
@@ -384,7 +384,7 @@ class MultiHttpClient implements LoggerAwareInterface {
 
                curl_setopt( $ch, CURLOPT_HEADERFUNCTION,
                        function ( $ch, $header ) use ( &$req ) {
-                               if ( !empty( $req['flags']['relayResponseHeaders'] ) ) {
+                               if ( !empty( $req['flags']['relayResponseHeaders'] ) && trim( $header ) !== '' ) {
                                        header( $header );
                                }
                                $length = strlen( $header );
index 88f87f8..40030c3 100644 (file)
@@ -74,13 +74,11 @@ use Psr\Log\NullLogger;
  *
  * ### Deploying WANObjectCache
  *
- * There are three supported ways to set up broadcasted operations:
+ * There are two supported ways to set up broadcasted operations:
  *
- *   - A) Configure the 'purge' EventRelayer to point to a valid PubSub endpoint
- *        that has subscribed listeners on the cache servers applying the cache updates.
- *   - B) Omit the 'purge' EventRelayer parameter and set up mcrouter as the underlying cache
- *        backend, using a memcached BagOStuff class for the 'cache' parameter. The 'region'
- *        and 'cluster' parameters must be provided and 'mcrouterAware' must be set to `true`.
+ *   - A) Set up mcrouter as the underlying cache backend, using a memcached BagOStuff class
+ *        for the 'cache' parameter. The 'region' and 'cluster' parameters must be provided
+ *        and 'mcrouterAware' must be set to `true`.
  *        Configure mcrouter as follows:
  *          - 1) Use Route Prefixing based on region (datacenter) and cache cluster.
  *               See https://github.com/facebook/mcrouter/wiki/Routing-Prefix and
@@ -90,11 +88,11 @@ use Psr\Log\NullLogger;
  *               configure 'set' and 'delete' operations to go to all servers in the cache
  *               cluster, instead of just one server determined by hashing.
  *               See https://github.com/facebook/mcrouter/wiki/List-of-Route-Handles.
- *   - C) Omit the 'purge' EventRelayer parameter and set up dynomite as cache middleware
- *        between the web servers and either memcached or redis. This will broadcast all
- *        key setting operations, not just purges, which can be useful for cache warming.
- *        Writes are eventually consistent via the Dynamo replication model.
- *        See https://github.com/Netflix/dynomite.
+ *   - B) Set up dynomite as a cache middleware between the web servers and either memcached
+ *        or redis and use it as the underlying cache backend, using a memcached BagOStuff
+ *        class for the 'cache' parameter. This will broadcast all key setting operations,
+ *        not just purges, which can be useful for cache warming. Writes are eventually
+ *        consistent via the Dynamo replication model. See https://github.com/Netflix/dynomite.
  *
  * Broadcasted operations like delete() and touchCheckKey() are done asynchronously
  * in all datacenters this way, though the local one should likely be near immediate.
@@ -120,10 +118,6 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        protected $cache;
        /** @var MapCacheLRU[] Map of group PHP instance caches */
        protected $processCaches = [];
-       /** @var string Purge channel name */
-       protected $purgeChannel;
-       /** @var EventRelayer Bus that handles purge broadcasts */
-       protected $purgeRelayer;
        /** @bar bool Whether to use mcrouter key prefixing for routing */
        protected $mcrouterAware;
        /** @var string Physical region for mcrouter use */
@@ -141,9 +135,6 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        /** @var float Unix timestamp of the oldest possible valid values */
        protected $epoch;
 
-       /** @var int ERR_* constant for the "last error" registry */
-       protected $lastRelayError = self::ERR_NONE;
-
        /** @var int Callback stack depth for getWithSetCallback() */
        private $callbackDepth = 0;
        /** @var mixed[] Temporary warm-up cache */
@@ -168,6 +159,8 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
 
        /** Seconds to keep lock keys around */
        const LOCK_TTL = 10;
+       /** Seconds to no-op key set() calls to avoid large blob I/O stampedes */
+       const COOLOFF_TTL = 1;
        /** Default remaining TTL at which to consider pre-emptive regeneration */
        const LOW_TTL = 30;
 
@@ -199,6 +192,9 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        /** Tiny negative float to use when CTL comes up >= 0 due to clock skew */
        const TINY_NEGATIVE = -0.000001;
 
+       /** Seconds of delay after get() where set() storms are a consideration with 'lockTSE' */
+       const SET_DELAY_HIGH_SEC = 0.1;
+
        /** Cache format version number */
        const VERSION = 1;
 
@@ -222,6 +218,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        const INTERIM_KEY_PREFIX = 'WANCache:i:';
        const TIME_KEY_PREFIX = 'WANCache:t:';
        const MUTEX_KEY_PREFIX = 'WANCache:m:';
+       const COOLOFF_KEY_PREFIX = 'WANCache:c:';
 
        const PURGE_VAL_PREFIX = 'PURGED:';
 
@@ -230,13 +227,9 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
 
        const PC_PRIMARY = 'primary:1000'; // process cache name and max key count
 
-       const DEFAULT_PURGE_CHANNEL = 'wancache-purge';
-
        /**
         * @param array $params
         *   - cache    : BagOStuff object for a persistent cache
-        *   - channels : Map of (action => channel string). Actions include "purge".
-        *   - relayers : Map of (action => EventRelayer object). Actions include "purge".
         *   - logger   : LoggerInterface object
         *   - stats    : LoggerInterface object
         *   - asyncHandler : A function that takes a callback and runs it later. If supplied,
@@ -260,8 +253,6 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         */
        public function __construct( array $params ) {
                $this->cache = $params['cache'];
-               $this->purgeChannel = $params['channels']['purge'] ?? self::DEFAULT_PURGE_CHANNEL;
-               $this->purgeRelayer = $params['relayers']['purge'] ?? new EventRelayerNull( [] );
                $this->region = $params['region'] ?? 'main';
                $this->cluster = $params['cluster'] ?? 'wan-main';
                $this->mcrouterAware = !empty( $params['mcrouterAware'] );
@@ -1049,21 +1040,28 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         *      is useful if thousands or millions of keys depend on the same entity. The entity can
         *      simply have its "check" key updated whenever the entity is modified.
         *      Default: [].
-        *   - graceTTL: If the key is invalidated (by "checkKeys") less than this many seconds ago,
-        *      consider reusing the stale value. The odds of a refresh becomes more likely over time,
-        *      becoming certain once the grace period is reached. This can reduce traffic spikes
-        *      when millions of keys are compared to the same "check" key and touchCheckKey() or
-        *      resetCheckKey() is called on that "check" key. This option is not useful for the
-        *      case of the key simply expiring on account of its TTL (use "lowTTL" instead).
+        *   - graceTTL: If the key is invalidated (by "checkKeys"/"touchedCallback") less than this
+        *      many seconds ago, consider reusing the stale value. The odds of a refresh becomes
+        *      more likely over time, becoming certain once the grace period is reached. This can
+        *      reduce traffic spikes when millions of keys are compared to the same "check" key and
+        *      touchCheckKey() or resetCheckKey() is called on that "check" key. This option is not
+        *      useful for avoiding traffic spikes in the case of the key simply expiring on account
+        *      of its TTL (use "lowTTL" instead).
         *      Default: WANObjectCache::GRACE_TTL_NONE.
-        *   - lockTSE: If the key is tombstoned or invalidated (by "checkKeys") less than this many
-        *      seconds ago, try to have a single thread handle cache regeneration at any given time.
-        *      Other threads will try to use stale values if possible. If, on miss, the time since
-        *      expiration is low, the assumption is that the key is hot and that a stampede is worth
-        *      avoiding. Setting this above WANObjectCache::HOLDOFF_TTL makes no difference. The
-        *      higher this is set, the higher the worst-case staleness can be. This option does not
-        *      by itself handle the case of the key simply expiring on account of its TTL, so make
-        *      sure that "lowTTL" is not disabled when using this option.
+        *   - lockTSE: If the key is tombstoned or invalidated (by "checkKeys"/"touchedCallback")
+        *      less than this many seconds ago, try to have a single thread handle cache regeneration
+        *      at any given time. Other threads will use stale values if possible. If, on miss,
+        *      the time since expiration is low, the assumption is that the key is hot and that a
+        *      stampede is worth avoiding. Note that if the key falls out of cache then concurrent
+        *      threads will all run the callback on cache miss until the value is saved in cache.
+        *      The only stampede protection in that case is from duplicate cache sets when the
+        *      callback takes longer than WANObjectCache::SET_DELAY_HIGH_SEC seconds; consider
+        *      using "busyValue" if such stampedes are a problem. Note that the higher "lockTSE" is
+        *      set, the higher the worst-case staleness of returned values can be. Also note that
+        *      this option does not by itself handle the case of the key simply expiring on account
+        *      of its TTL, so make sure that "lowTTL" is not disabled when using this option. Avoid
+        *      combining this option with delete() as it can always cause a stampede due to their
+        *      being no stale value available until after a thread completes the callback.
         *      Use WANObjectCache::TSE_NONE to disable this logic.
         *      Default: WANObjectCache::TSE_NONE.
         *   - busyValue: If no value exists and another thread is currently regenerating it, use this
@@ -1238,9 +1236,9 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
 
                $preCallbackTime = $this->getCurrentTime();
                // Determine if a cached value regeneration is needed or desired
-               if ( $value !== false
-                       && $this->isAliveOrInGracePeriod( $curTTL, $graceTTL )
-                       && $this->isValid( $value, $versioned, $asOf, $minTime )
+               if (
+                       $this->isValid( $value, $versioned, $asOf, $minTime ) &&
+                       $this->isAliveOrInGracePeriod( $curTTL, $graceTTL )
                ) {
                        $preemptiveRefresh = (
                                $this->worthRefreshExpiring( $curTTL, $lowTTL ) ||
@@ -1264,44 +1262,49 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
                        }
                }
 
-               // A deleted key with a negative TTL left must be tombstoned
-               $isTombstone = ( $curTTL !== null && $value === false );
-               if ( $isTombstone && $lockTSE <= 0 ) {
-                       // Use the INTERIM value for tombstoned keys to reduce regeneration load
-                       $lockTSE = self::INTERIM_KEY_TTL;
-               }
-               // Assume a key is hot if requested soon after invalidation
-               $isHot = ( $curTTL !== null && $curTTL <= 0 && abs( $curTTL ) <= $lockTSE );
-               // Use the mutex if there is no value and a busy fallback is given
-               $checkBusy = ( $busyValue !== null && $value === false );
-               // Decide whether a single thread should handle regenerations.
-               // This avoids stampedes when $checkKeys are bumped and when preemptive
-               // renegerations take too long. It also reduces regenerations while $key
-               // is tombstoned. This balances cache freshness with avoiding DB load.
-               $useMutex = ( $isHot || ( $isTombstone && $lockTSE > 0 ) || $checkBusy );
-
-               $lockAcquired = false;
+               // Only a tombstoned key yields no value yet has a (negative) "current time left"
+               $isKeyTombstoned = ( $curTTL !== null && $value === false );
+               // Decide if only one thread should handle regeneration at a time
+               $useMutex =
+                       // Note that since tombstones no-op set(), $lockTSE and $curTTL cannot be used to
+                       // deduce the key hotness because $curTTL will always keep increasing until the
+                       // tombstone expires or is overwritten by a new tombstone. Also, even if $lockTSE
+                       // is not set, constant regeneration of a key for the tombstone lifetime might be
+                       // very expensive. Assume tombstoned keys are possibly hot in order to reduce
+                       // the risk of high regeneration load after the delete() method is called.
+                       $isKeyTombstoned ||
+                       // Assume a key is hot if requested soon ($lockTSE seconds) after invalidation.
+                       // This avoids stampedes when timestamps from $checkKeys/$touchedCallback bump.
+                       ( $curTTL !== null && $curTTL <= 0 && abs( $curTTL ) <= $lockTSE ) ||
+                       // Assume a key is hot if there is no value and a busy fallback is given.
+                       // This avoids stampedes on eviction or preemptive regeneration taking too long.
+                       ( $busyValue !== null && $value === false );
+
+               $hasLock = false;
                if ( $useMutex ) {
                        // Acquire a datacenter-local non-blocking lock
                        if ( $this->cache->add( self::MUTEX_KEY_PREFIX . $key, 1, self::LOCK_TTL ) ) {
-                               // Lock acquired; this thread should update the key
-                               $lockAcquired = true;
-                       } elseif ( $value !== false && $this->isValid( $value, $versioned, $asOf, $minTime ) ) {
+                               // Lock acquired; this thread will recompute the value and update cache
+                               $hasLock = true;
+                       } elseif ( $this->isValid( $value, $versioned, $asOf, $minTime ) ) {
+                               // Lock not acquired and a stale value exists; use the stale value
                                $this->stats->increment( "wanobjectcache.$kClass.hit.stale" );
-                               // If it cannot be acquired; then the stale value can be used
+
                                return $value;
                        } else {
-                               // Use the INTERIM value for tombstoned keys to reduce regeneration load.
-                               // For hot keys, either another thread has the lock or the lock failed;
-                               // use the INTERIM value from the last thread that regenerated it.
-                               $value = $this->getInterimValue( $key, $versioned, $minTime, $asOf );
-                               if ( $value !== false ) {
-                                       $this->stats->increment( "wanobjectcache.$kClass.hit.volatile" );
-
-                                       return $value;
+                               // Lock not acquired and no stale value exists
+                               if ( $isKeyTombstoned ) {
+                                       // Use the INTERIM value from the last thread that regenerated it if possible
+                                       $value = $this->getInterimValue( $key, $versioned, $minTime, $asOf );
+                                       if ( $value !== false ) {
+                                               $this->stats->increment( "wanobjectcache.$kClass.hit.volatile" );
+
+                                               return $value;
+                                       }
                                }
-                               // Use the busy fallback value if nothing else
+
                                if ( $busyValue !== null ) {
+                                       // Use the busy fallback value if nothing else
                                        $miss = is_infinite( $minTime ) ? 'renew' : 'miss';
                                        $this->stats->increment( "wanobjectcache.$kClass.$miss.busy" );
 
@@ -1324,27 +1327,32 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
                }
                $valueIsCacheable = ( $value !== false && $ttl >= 0 );
 
-               // When delete() is called, writes are write-holed by the tombstone,
-               // so use a special INTERIM key to pass the new value around threads.
-               if ( ( $isTombstone && $lockTSE > 0 ) && $valueIsCacheable ) {
-                       $tempTTL = max( 1, (int)$lockTSE ); // set() expects seconds
-                       $newAsOf = $this->getCurrentTime();
-                       $wrapped = $this->wrap( $value, $tempTTL, $newAsOf );
-                       // Avoid using set() to avoid pointless mcrouter broadcasting
-                       $this->setInterimValue( $key, $wrapped, $tempTTL );
-               }
-
-               // Save the value unless a mutex-winning thread is already expected to do that
-               if ( $valueIsCacheable && ( !$useMutex || $lockAcquired ) ) {
-                       $setOpts['lockTSE'] = $lockTSE;
-                       $setOpts['staleTTL'] = $staleTTL;
-                       // Use best known "since" timestamp if not provided
-                       $setOpts += [ 'since' => $preCallbackTime ];
-                       // Update the cache; this will fail if the key is tombstoned
-                       $this->set( $key, $value, $ttl, $setOpts );
+               if ( $valueIsCacheable ) {
+                       $ago = max( $this->getCurrentTime() - $preCallbackTime, 0.0 );
+                       if ( $isKeyTombstoned ) {
+                               if ( $this->checkAndSetCooloff( $key, $kClass, $ago, $lockTSE, $hasLock ) ) {
+                                       // When delete() is called, writes are write-holed by the tombstone,
+                                       // so use a special INTERIM key to pass the new value among threads.
+                                       $tempTTL = max( self::INTERIM_KEY_TTL, (int)$lockTSE ); // set() expects seconds
+                                       $newAsOf = $this->getCurrentTime();
+                                       $wrapped = $this->wrap( $value, $tempTTL, $newAsOf );
+                                       // Avoid using set() to avoid pointless mcrouter broadcasting
+                                       $this->setInterimValue( $key, $wrapped, $tempTTL );
+                               }
+                       } elseif ( !$useMutex || $hasLock ) {
+                               if ( $this->checkAndSetCooloff( $key, $kClass, $ago, $lockTSE, $hasLock ) ) {
+                                       // Save the value unless a lock-winning thread is already expected to do that
+                                       $setOpts['lockTSE'] = $lockTSE;
+                                       $setOpts['staleTTL'] = $staleTTL;
+                                       // Use best known "since" timestamp if not provided
+                                       $setOpts += [ 'since' => $preCallbackTime ];
+                                       // Update the cache; this will fail if the key is tombstoned
+                                       $this->set( $key, $value, $ttl, $setOpts );
+                               }
+                       }
                }
 
-               if ( $lockAcquired ) {
+               if ( $hasLock ) {
                        // Avoid using delete() to avoid pointless mcrouter broadcasting
                        $this->cache->changeTTL( self::MUTEX_KEY_PREFIX . $key, (int)$preCallbackTime - 60 );
                }
@@ -1355,6 +1363,41 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
                return $value;
        }
 
+       /**
+        * @param string $key
+        * @param string $kClass
+        * @param float $elapsed Seconds spent regenerating the value
+        * @param float $lockTSE
+        * @param $hasLock bool
+        * @return bool Whether it is OK to proceed with a key set operation
+        */
+       private function checkAndSetCooloff( $key, $kClass, $elapsed, $lockTSE, $hasLock ) {
+               // If $lockTSE is set, the lock was bypassed because there was no stale/interim value,
+               // and $elapsed indicates that regeration is slow, then there is a risk of set()
+               // stampedes with large blobs. With a typical scale-out infrastructure, CPU and query
+               // load from $callback invocations is distributed among appservers and replica DBs,
+               // but cache operations for a given key route to a single cache server (e.g. striped
+               // consistent hashing).
+               if ( $lockTSE < 0 || $hasLock ) {
+                       return true; // either not a priori hot or thread has the lock
+               } elseif ( $elapsed <= self::SET_DELAY_HIGH_SEC ) {
+                       return true; // not enough time for threads to pile up
+               }
+
+               $this->cache->clearLastError();
+               if (
+                       !$this->cache->add( self::COOLOFF_KEY_PREFIX . $key, 1, self::COOLOFF_TTL ) &&
+                       // Don't treat failures due to I/O errors as the key being in cooloff
+                       $this->cache->getLastError() === BagOStuff::ERR_NONE
+               ) {
+                       $this->stats->increment( "wanobjectcache.$kClass.cooloff_bounce" );
+
+                       return false;
+               }
+
+               return true;
+       }
+
        /**
         * @param mixed $value
         * @param float $asOf
@@ -1395,7 +1438,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
 
                $wrapped = $this->cache->get( self::INTERIM_KEY_PREFIX . $key );
                list( $value ) = $this->unwrap( $wrapped, $this->getCurrentTime() );
-               if ( $value !== false && $this->isValid( $value, $versioned, $asOf, $minTime ) ) {
+               if ( $this->isValid( $value, $versioned, $asOf, $minTime ) ) {
                        $asOf = $wrapped[self::FLD_TIME];
 
                        return $value;
@@ -1747,15 +1790,6 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         * @return int ERR_* class constant for the "last error" registry
         */
        final public function getLastError() {
-               if ( $this->lastRelayError ) {
-                       // If the cache and the relayer failed, focus on the latter.
-                       // An update not making it to the relayer means it won't show up
-                       // in other DCs (nor will consistent re-hashing see up-to-date values).
-                       // On the other hand, if just the cache update failed, then it should
-                       // eventually be applied by the relayer.
-                       return $this->lastRelayError;
-               }
-
                $code = $this->cache->getLastError();
                switch ( $code ) {
                        case BagOStuff::ERR_NONE:
@@ -1774,7 +1808,6 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         */
        final public function clearLastError() {
                $this->cache->clearLastError();
-               $this->lastRelayError = self::ERR_NONE;
        }
 
        /**
@@ -1923,26 +1956,13 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
                                $this->makePurgeValue( $this->getCurrentTime(), self::HOLDOFF_NONE ),
                                $ttl
                        );
-               } elseif ( $this->purgeRelayer instanceof EventRelayerNull ) {
+               } else {
                        // This handles the mcrouter and the single-DC case
                        $ok = $this->cache->set(
                                $key,
                                $this->makePurgeValue( $this->getCurrentTime(), self::HOLDOFF_NONE ),
                                $ttl
                        );
-               } else {
-                       $event = $this->cache->modifySimpleRelayEvent( [
-                               'cmd' => 'set',
-                               'key' => $key,
-                               'val' => 'PURGED:$UNIXTIME$:' . (int)$holdoff,
-                               'ttl' => max( $ttl, self::TTL_SECOND ),
-                               'sbt' => true, // substitute $UNIXTIME$ with actual microtime
-                       ] );
-
-                       $ok = $this->purgeRelayer->notify( $this->purgeChannel, $event );
-                       if ( !$ok ) {
-                               $this->lastRelayError = self::ERR_RELAY;
-                       }
                }
 
                return $ok;
@@ -1959,19 +1979,9 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
                        // See https://github.com/facebook/mcrouter/wiki/Multi-cluster-broadcast-setup
                        // Wildcards select all matching routes, e.g. the WAN cluster on all DCs
                        $ok = $this->cache->delete( "/*/{$this->cluster}/{$key}" );
-               } elseif ( $this->purgeRelayer instanceof EventRelayerNull ) {
+               } else {
                        // Some other proxy handles broadcasting or there is only one datacenter
                        $ok = $this->cache->delete( $key );
-               } else {
-                       $event = $this->cache->modifySimpleRelayEvent( [
-                               'cmd' => 'delete',
-                               'key' => $key,
-                       ] );
-
-                       $ok = $this->purgeRelayer->notify( $this->purgeChannel, $event );
-                       if ( !$ok ) {
-                               $this->lastRelayError = self::ERR_RELAY;
-                       }
                }
 
                return $ok;
@@ -2076,16 +2086,18 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        }
 
        /**
-        * Check whether $value is appropriately versioned and not older than $minTime (if set)
+        * Check if $value is not false, versioned (if needed), and not older than $minTime (if set)
         *
-        * @param array $value
+        * @param array|bool $value
         * @param bool $versioned
         * @param float $asOf The time $value was generated
         * @param float $minTime The last time the main value was generated (0.0 if unknown)
         * @return bool
         */
        protected function isValid( $value, $versioned, $asOf, $minTime ) {
-               if ( $versioned && !isset( $value[self::VFLD_VERSION] ) ) {
+               if ( $value === false ) {
+                       return false;
+               } elseif ( $versioned && !isset( $value[self::VFLD_VERSION] ) ) {
                        return false;
                } elseif ( $minTime > 0 && $asOf < $minTime ) {
                        return false;
index e4ab95c..fb8a754 100644 (file)
@@ -69,7 +69,6 @@ class WANObjectCacheReaper implements LoggerAwareInterface {
         *        The callback must fully duck-type test the object, since can be any model class.
         * @param array $params Additional options:
         *          - channel: the name of the update event stream.
-        *            Default: WANObjectCache::DEFAULT_PURGE_CHANNEL.
         *          - initialStartWindow: seconds back in time to start if the position is lost.
         *            Default: 1 hour.
         *          - logger: an SPL monolog instance [optional]
index 974c7df..b3597df 100644 (file)
@@ -2278,7 +2278,9 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
        }
 
        public function buildStringCast( $field ) {
-               return $field;
+               // In theory this should work for any standards-compliant
+               // SQL implementation, although it may not be the best way to do it.
+               return "CAST( $field AS CHARACTER )";
        }
 
        public function buildIntegerCast( $field ) {
index 93bb5d3..a6027e6 100644 (file)
@@ -1398,6 +1398,11 @@ class DatabaseMssql extends Database {
 
                return $old;
        }
+
+       public function buildStringCast( $field ) {
+               return "CAST( $field AS NVARCHAR )";
+       }
+
 }
 
 /**
index 186c89f..62110ef 100644 (file)
@@ -1548,6 +1548,10 @@ abstract class DatabaseMysqlBase extends Database {
                        !preg_match( '/^SELECT\s+(GET|RELEASE|IS_FREE)_LOCK\(/', $sql );
        }
 
+       public function buildStringCast( $field ) {
+               return "CAST( $field AS BINARY )";
+       }
+
        /**
         * @param string $field Field or column to cast
         * @return string
index b3f9eff..f2e4e3d 100644 (file)
@@ -305,7 +305,7 @@ class LoadBalancer implements ILoadBalancer {
 
                                $host = $this->getServerName( $i );
                                if ( $lag === false && !is_infinite( $maxServerLag ) ) {
-                                       $this->replLogger->error(
+                                       $this->replLogger->debug(
                                                __METHOD__ .
                                                ": server {host} is not replicating?", [ 'host' => $host ] );
                                        unset( $loads[$i] );
index d70688f..61efba0 100644 (file)
@@ -40,7 +40,6 @@ class PageDataRequestHandler {
         * @param WebRequest $request
         *
         * @return bool
-        * @throws HttpError
         */
        public function canHandleRequest( $subPage, WebRequest $request ) {
                if ( $subPage === '' || $subPage === null ) {
index 072c3c6..df9259b 100644 (file)
@@ -895,7 +895,8 @@ class WikiPage implements Page, IDBAccessObject {
         *   Revision::RAW              get the text regardless of permissions
         * @param User|null $user User object to check for, only if FOR_THIS_USER is passed
         *   to the $audience parameter
-        * @return string Comment stored for the last article revision
+        * @return string|null Comment stored for the last article revision, or null if the specified
+        *  audience does not have access to the comment.
         */
        public function getComment( $audience = Revision::FOR_PUBLIC, User $user = null ) {
                $this->loadLastEdit();
index f4856be..078c819 100644 (file)
@@ -275,6 +275,7 @@ class LinkHolderArray {
 
        /**
         * Replace internal links
+        * @suppress SecurityCheck-XSS Gets confused with $entry['pdbk']
         * @param string &$text
         */
        protected function replaceInternal( &$text ) {
@@ -418,6 +419,7 @@ class LinkHolderArray {
        /**
         * Replace interwiki links
         * @param string &$text
+        * @suppress SecurityCheck-XSS Gets confused with $this->interwikis['pdbk']
         */
        protected function replaceInterwiki( &$text ) {
                if ( empty( $this->interwikis ) ) {
index 43c72b1..ce7ae13 100644 (file)
@@ -145,6 +145,19 @@ class ParserCache {
                return is_object( $value ) ? $value : false;
        }
 
+       /**
+        * @param WikiPage $article
+        * @param string $metricSuffix
+        */
+       private function incrementStats( $article, $metricSuffix ) {
+               // old style global metric (can be removed once no longer used)
+               wfIncrStats( 'pcache.' . $metricSuffix );
+               // new per content model metric
+               $contentModel = str_replace( '.', '_', $article->getContentModel() );
+               $metricSuffix = str_replace( '.', '_', $metricSuffix );
+               wfIncrStats( 'pcache.' . $contentModel . '.' . $metricSuffix );
+       }
+
        /**
         * Generates a key for caching the given article considering
         * the given parser options.
@@ -181,7 +194,7 @@ class ParserCache {
                        $this->getOptionsKey( $article ), $casToken, BagOStuff::READ_VERIFIED );
                if ( $optionsKey instanceof CacheTime ) {
                        if ( $useOutdated < self::USE_EXPIRED && $optionsKey->expired( $article->getTouched() ) ) {
-                               wfIncrStats( "pcache.miss.expired" );
+                               $this->incrementStats( $article, "miss.expired" );
                                $cacheTime = $optionsKey->getCacheTime();
                                wfDebugLog( "ParserCache",
                                        "Parser options key expired, touched " . $article->getTouched()
@@ -190,7 +203,7 @@ class ParserCache {
                        } elseif ( $useOutdated < self::USE_OUTDATED &&
                                $optionsKey->isDifferentRevision( $article->getLatest() )
                        ) {
-                               wfIncrStats( "pcache.miss.revid" );
+                               $this->incrementStats( $article, "miss.revid" );
                                $revId = $article->getLatest();
                                $cachedRevId = $optionsKey->getCacheRevisionId();
                                wfDebugLog( "ParserCache",
@@ -238,7 +251,7 @@ class ParserCache {
                        $useOutdated ? self::USE_OUTDATED : self::USE_CURRENT_ONLY
                );
                if ( $parserOutputKey === false ) {
-                       wfIncrStats( 'pcache.miss.absent' );
+                       $this->incrementStats( $article, 'miss.absent' );
                        return false;
                }
 
@@ -247,7 +260,7 @@ class ParserCache {
                $value = $this->mMemc->get( $parserOutputKey, $casToken, BagOStuff::READ_VERIFIED );
                if ( !$value ) {
                        wfDebug( "ParserOutput cache miss.\n" );
-                       wfIncrStats( "pcache.miss.absent" );
+                       $this->incrementStats( $article, "miss.absent" );
                        return false;
                }
 
@@ -258,14 +271,14 @@ class ParserCache {
                        : $article;
 
                if ( !$useOutdated && $value->expired( $touched ) ) {
-                       wfIncrStats( "pcache.miss.expired" );
+                       $this->incrementStats( $article, "miss.expired" );
                        $cacheTime = $value->getCacheTime();
                        wfDebugLog( "ParserCache",
                                "ParserOutput key expired, touched $touched, "
                                . "epoch {$this->cacheEpoch}, cached $cacheTime\n" );
                        $value = false;
                } elseif ( !$useOutdated && $value->isDifferentRevision( $article->getLatest() ) ) {
-                       wfIncrStats( "pcache.miss.revid" );
+                       $this->incrementStats( $article, "miss.revid" );
                        $revId = $article->getLatest();
                        $cachedRevId = $value->getCacheRevisionId();
                        wfDebugLog( "ParserCache",
@@ -275,13 +288,13 @@ class ParserCache {
                } elseif (
                        Hooks::run( 'RejectParserCacheValue', [ $value, $wikiPage, $popts ] ) === false
                ) {
-                       wfIncrStats( 'pcache.miss.rejected' );
+                       $this->incrementStats( $article, 'miss.rejected' );
                        wfDebugLog( "ParserCache",
                                "ParserOutput key valid, but rejected by RejectParserCacheValue hook handler.\n"
                        );
                        $value = false;
                } else {
-                       wfIncrStats( "pcache.hit" );
+                       $this->incrementStats( $article, "hit" );
                }
 
                return $value;
index b648260..4158082 100644 (file)
@@ -245,6 +245,7 @@ class ResourceLoader implements LoggerAwareInterface {
                $this->logger = $logger ?: new NullLogger();
 
                if ( !$config ) {
+                       // TODO: Deprecate and remove.
                        $this->logger->debug( __METHOD__ . ' was called without providing a Config instance' );
                        $config = MediaWikiServices::getInstance()->getMainConfig();
                }
@@ -422,6 +423,11 @@ class ResourceLoader implements LoggerAwareInterface {
 
                // Add the QUnit testrunner as implicit dependency to extension test suites.
                foreach ( $testModules['qunit'] as &$module ) {
+                       // Shuck any single-module dependency as an array
+                       if ( is_string( $module['dependencies'] ) ) {
+                               $module['dependencies'] = [ $module['dependencies'] ];
+                       }
+
                        $module['dependencies'][] = 'test.mediawiki.qunit.testrunner';
                }
 
index 57392b9..67de192 100644 (file)
@@ -133,9 +133,19 @@ class ResourceLoaderContext implements MessageLocalizer {
        /**
         * Return a dummy ResourceLoaderContext object suitable for passing into
         * things that don't "really" need a context.
+        *
+        * Use cases:
+        * - Creating html5shiv script tag in OutputPage.
+        * - Unit tests (deprecated, create empty instance directly or use RLTestCase).
+        *
         * @return ResourceLoaderContext
         */
        public static function newDummyContext() {
+               // This currently creates a non-empty instance of ResourceLoader (all modules registered),
+               // but that's probably not needed. So once that moves into ServiceWiring, this'll
+               // become more like the EmptyResourceLoader class we have in PHPUnit tests, which
+               // is what this should've had originally. If this turns out to be untrue, change to:
+               // `MediaWikiServices::getInstance()->getResourceLoader()` instead.
                return new self( new ResourceLoader(
                        MediaWikiServices::getInstance()->getMainConfig(),
                        LoggerFactory::getInstance( 'resourceloader' )
index 0e53e5e..4444b13 100644 (file)
@@ -878,25 +878,16 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
        /**
         * Get the contents of a list of CSS files.
         *
-        * This is considered a private method. Exposed for internal use by WebInstallerOutput.
-        *
-        * @private
+        * @internal This is considered a private method. Exposed for internal use by WebInstallerOutput.
         * @param array $styles Map of media type to file paths to read, remap, and concatenate
         * @param bool $flip
-        * @param ResourceLoaderContext|null $context
+        * @param ResourceLoaderContext $context
         * @return array List of concatenated and remapped CSS data from $styles,
         *     keyed by media type
         * @throws MWException
-        * @since 1.27 Calling this method without a ResourceLoaderContext instance
-        *   is deprecated.
         */
-       public function readStyleFiles( array $styles, $flip, $context = null ) {
-               if ( $context === null ) {
-                       wfDeprecated( __METHOD__ . ' without a ResourceLoader context', '1.27' );
-                       $context = ResourceLoaderContext::newDummyContext();
-               }
-
-               if ( empty( $styles ) ) {
+       public function readStyleFiles( array $styles, $flip, $context ) {
+               if ( !$styles ) {
                        return [];
                }
                foreach ( $styles as $media => $files ) {
index ae79dda..b392625 100644 (file)
@@ -956,16 +956,25 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface {
                        $cache::TTL_WEEK,
                        function () use ( $contents, $fileName ) {
                                $parser = self::javaScriptParser();
+                               $err = null;
                                try {
+                                       Wikimedia\suppressWarnings();
                                        $parser->parse( $contents, $fileName, 1 );
-                                       $result = $contents;
                                } catch ( Exception $e ) {
-                                       // We'll save this to cache to avoid having to re-validate broken JS
-                                       $err = $e->getMessage();
-                                       $result = "mw.log.error(" .
-                                               Xml::encodeJsVar( "JavaScript parse error: $err" ) . ");";
+                                       $err = $e;
+                               } finally {
+                                       Wikimedia\restoreWarnings();
                                }
-                               return $result;
+                               if ( $err ) {
+                                       // Send the error to the browser console client-side.
+                                       // By returning this as replacement for the actual script,
+                                       // we ensure modules are safe to load in a batch request,
+                                       // without causing other unrelated modules to break.
+                                       return 'mw.log.error(' .
+                                               Xml::encodeJsVar( 'JavaScript parse error: ' . $err->getMessage() ) .
+                                               ');';
+                               }
+                               return $contents;
                        }
                );
        }
index d504611..1936d00 100644 (file)
@@ -433,9 +433,9 @@ class Command {
                        // TODO replace with clear_last_error when requirements are bumped to PHP7
                        set_error_handler( function () {
                        }, 0 );
-                       \MediaWiki\suppressWarnings();
+                       \Wikimedia\suppressWarnings();
                        trigger_error( '' );
-                       \MediaWiki\restoreWarnings();
+                       \Wikimedia\restoreWarnings();
                        restore_error_handler();
 
                        $readPipes = array_filter( $pipes, function ( $fd ) use ( $desc ) {
index 4e23777..dfdbc07 100644 (file)
@@ -792,6 +792,10 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                        $out->addJsConfigVars( 'wgStructuredChangeFiltersMessages', $messages );
                        $out->addJsConfigVars( 'wgStructuredChangeFiltersCollapsedState', $collapsed );
 
+                       $out->addJsConfigVars(
+                               'wgRCFiltersChangeTags',
+                               $this->getChangeTagList()
+                       );
                        $out->addJsConfigVars(
                                'StructuredChangeFiltersDisplayConfig',
                                [
@@ -819,61 +823,48 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                'wgStructuredChangeFiltersCollapsedPreferenceName',
                                static::$collapsedPreferenceName
                        );
+
+                       $out->addJsConfigVars(
+                               'StructuredChangeFiltersLiveUpdatePollingRate',
+                               $this->getConfig()->get( 'StructuredChangeFiltersLiveUpdatePollingRate' )
+                       );
                } else {
                        $out->addBodyClasses( 'mw-rcfilters-disabled' );
                }
        }
 
-       /**
-        * Get config vars to export with the mediawiki.rcfilters.filters.ui module.
-        *
-        * @param ResourceLoaderContext $context
-        * @return array
-        */
-       public static function getRcFiltersConfigVars( ResourceLoaderContext $context ) {
-               return [
-                       'RCFiltersChangeTags' => self::getChangeTagList( $context ),
-                       'StructuredChangeFiltersEditWatchlistUrl' =>
-                               SpecialPage::getTitleFor( 'EditWatchlist' )->getLocalURL()
-               ];
-       }
-
        /**
         * Fetch the change tags list for the front end
         *
-        * @param ResourceLoaderContext $context
         * @return array Tag data
         */
-       protected static function getChangeTagList( ResourceLoaderContext $context ) {
+       protected function getChangeTagList() {
                $cache = ObjectCache::getMainWANInstance();
+               $context = $this->getContext();
                return $cache->getWithSetCallback(
-                       $cache->makeKey( 'changeslistspecialpage-changetags', $context->getLanguage() ),
+                       $cache->makeKey( 'changeslistspecialpage-changetags', $context->getLanguage()->getCode() ),
                        $cache::TTL_MINUTE * 10,
                        function () use ( $context ) {
                                $explicitlyDefinedTags = array_fill_keys( ChangeTags::listExplicitlyDefinedTags(), 0 );
                                $softwareActivatedTags = array_fill_keys( ChangeTags::listSoftwareActivatedTags(), 0 );
 
-                               // Hit counts disabled for perf reasons, see T169997
-                               /*
                                $tagStats = ChangeTags::tagUsageStatistics();
                                $tagHitCounts = array_merge( $explicitlyDefinedTags, $softwareActivatedTags, $tagStats );
 
-                               // Sort by hits
-                               arsort( $tagHitCounts );
-                               */
-                               $tagHitCounts = array_merge( $explicitlyDefinedTags, $softwareActivatedTags );
-
-                               // HACK work around ChangeTags::truncateTagDescription() requiring a RequestContext
-                               $fakeContext = new RequestContext;
-                               $fakeContext->setLanguage( Language::factory( $context->getLanguage() ) );
+                               // Sort by hits (disabled for now)
+                               //arsort( $tagHitCounts );
 
                                // Build the list and data
                                $result = [];
                                foreach ( $tagHitCounts as $tagName => $hits ) {
                                        if (
-                                               // Only get active tags
-                                               isset( $explicitlyDefinedTags[ $tagName ] ) ||
-                                               isset( $softwareActivatedTags[ $tagName ] )
+                                               (
+                                                       // Only get active tags
+                                                       isset( $explicitlyDefinedTags[ $tagName ] ) ||
+                                                       isset( $softwareActivatedTags[ $tagName ] )
+                                               ) &&
+                                               // Only get tags with more than 0 hits
+                                               $hits > 0
                                        ) {
                                                $result[] = [
                                                        'name' => $tagName,
@@ -884,7 +875,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                                ChangeTags::truncateTagDescription(
                                                                        $tagName,
                                                                        self::TAG_DESC_CHARACTER_LIMIT,
-                                                                       $fakeContext
+                                                                       $context
                                                                ),
                                                        'cssClass' => Sanitizer::escapeClass( 'mw-tag-' . $tagName ),
                                                        'hits' => $hits,
index 81b82d9..59c14fc 100644 (file)
@@ -177,8 +177,8 @@ class SpecialBlock extends FormSpecialPage {
                                'type' => 'radio',
                                'cssclass' => 'mw-block-editing-restriction',
                                'options' => [
-                                       $this->msg( 'ipb-sitewide' )->text() => 'sitewide',
-                                       $this->msg( 'ipb-partial' )->text() => 'partial',
+                                       $this->msg( 'ipb-sitewide' )->escaped() => 'sitewide',
+                                       $this->msg( 'ipb-partial' )->escaped() => 'partial',
                                ],
                                'section' => 'actions',
                        ];
@@ -405,7 +405,9 @@ class SpecialBlock extends FormSpecialPage {
                                foreach ( $block->getRestrictions() as $restriction ) {
                                        switch ( $restriction->getType() ) {
                                                case PageRestriction::TYPE:
-                                                       $pageRestrictions[] = $restriction->getTitle()->getPrefixedText();
+                                                       if ( $restriction->getTitle() ) {
+                                                               $pageRestrictions[] = $restriction->getTitle()->getPrefixedText();
+                                                       }
                                                        break;
                                                case NamespaceRestriction::TYPE:
                                                        $namespaceRestrictions[] = $restriction->getValue();
index 02c33b5..2fe38ed 100644 (file)
@@ -171,7 +171,7 @@ class SpecialBookSources extends SpecialPage {
                        if ( $content instanceof TextContent ) {
                                // XXX: in the future, this could be stored as structured data, defining a list of book sources
 
-                               $text = $content->getNativeData();
+                               $text = $content->getText();
                                $out->addWikiTextAsInterface( str_replace( 'MAGICNUMBER', $isbn, $text ) );
 
                                return true;
index 5b939ef..3a180db 100644 (file)
@@ -152,6 +152,15 @@ class SpecialContributions extends IncludableSpecialPage {
                }
                $this->opts = ContribsPager::processDateFilter( $this->opts );
 
+               if ( $this->opts['namespace'] < NS_MAIN ) {
+                       $this->getOutput()->wrapWikiMsg(
+                               "<div class=\"mw-negative-namespace-not-supported error\">\n\$1\n</div>",
+                               [ 'negative-namespace-not-supported' ]
+                       );
+                       $out->addHTML( $this->getForm() );
+                       return;
+               }
+
                $feedType = $request->getVal( 'feed' );
 
                $feedParams = [
index e4672f8..6022ff4 100644 (file)
@@ -146,15 +146,18 @@ class DeletedContributionsPage extends SpecialPage {
                if ( $talk ) {
                        $tools = SpecialContributions::getUserLinks( $this, $userObj );
 
-                       # Link to contributions
-                       $insert['contribs'] = $linkRenderer->makeKnownLink(
+                       $contributionsLink = $linkRenderer->makeKnownLink(
                                SpecialPage::getTitleFor( 'Contributions', $nt->getDBkey() ),
                                $this->msg( 'sp-deletedcontributions-contribs' )->text()
                        );
-
-                       // Swap out the deletedcontribs link for our contribs one
-                       $tools = wfArrayInsertAfter( $tools, $insert, 'deletedcontribs' );
-                       unset( $tools['deletedcontribs'] );
+                       if ( isset( $tools['deletedcontribs'] ) ) {
+                               // Swap out the deletedcontribs link for our contribs one
+                               $tools = wfArrayInsertAfter(
+                                       $tools, [ 'contribs' => $contributionsLink ], 'deletedcontribs' );
+                               unset( $tools['deletedcontribs'] );
+                       } else {
+                               $tools['contribs'] = $contributionsLink;
+                       }
 
                        $links = $this->getLanguage()->pipeList( $tools );
 
index aebec2f..10a9e96 100644 (file)
@@ -468,7 +468,7 @@ class SpecialEmailUser extends UnlistedSpecialPage {
                        if ( $data['CCMe'] && $to != $from ) {
                                $ccTo = $from;
                                $ccFrom = $from;
-                               $ccSubject = $context->msg( 'emailccsubject' )->rawParams(
+                               $ccSubject = $context->msg( 'emailccsubject' )->plaintextParams(
                                        $target->getName(), $subject )->text();
                                $ccText = $text;
 
index 4b1b344..d99de1e 100644 (file)
@@ -110,10 +110,10 @@ class SpecialProtectedpages extends SpecialPage {
                                'class' => 'HTMLMultiSelectField',
                                'label' => $this->msg( 'protectedpages-filters' )->text(),
                                'flatlist' => true,
-                               'options' => [
-                                       $this->msg( 'protectedpages-indef' )->text() => 'indefonly',
-                                       $this->msg( 'protectedpages-cascade' )->text() => 'cascadeonly',
-                                       $this->msg( 'protectedpages-noredirect' )->text() => 'noredirect',
+                               'options-messages' => [
+                                       'protectedpages-indef' => 'indefonly',
+                                       'protectedpages-cascade' => 'cascadeonly',
+                                       'protectedpages-noredirect' => 'noredirect',
                                ],
                                'default' => $filters,
                        ],
index 1b2bda9..c4e4635 100644 (file)
@@ -119,7 +119,9 @@ class SpecialRedirect extends FormSpecialPage {
                        // ... and we can
                        if ( $mto && !$mto->isError() ) {
                                // ... change the URL to point to a thumbnail.
-                               $url = $mto->getUrl();
+                               // Note: This url is more temporary as can change
+                               // if file is reuploaded and has different aspect ratio.
+                               $url = [ $mto->getUrl(), $height === -1 ? 301 : 302 ];
                        }
                }
 
@@ -224,7 +226,21 @@ class SpecialRedirect extends FormSpecialPage {
                                break;
                }
                if ( $status && $status->isGood() ) {
-                       $this->getOutput()->redirect( $status->getValue() );
+                       // These urls can sometimes be linked from prominent places,
+                       // so varnish cache.
+                       $value = $status->getValue();
+                       if ( is_array( $value ) ) {
+                               list( $url, $code ) = $value;
+                       } else {
+                               $url = $value;
+                               $code = 301;
+                       }
+                       if ( $code === 301 ) {
+                               $this->getOutput()->setCdnMaxage( 60 * 60 );
+                       } else {
+                               $this->getOutput()->setCdnMaxage( 10 );
+                       }
+                       $this->getOutput()->redirect( $url, $code );
 
                        return true;
                }
index 9654bb7..3e560ad 100644 (file)
@@ -493,7 +493,7 @@ class SpecialUndelete extends SpecialPage {
                                'readonly' => 'readonly',
                                'cols' => 80,
                                'rows' => 25
-                       ], $content->getNativeData() . "\n" );
+                       ], $content->getText() . "\n" );
 
                        $buttonFields[] = new OOUI\ButtonInputWidget( [
                                'type' => 'submit',
index 971aa43..0fc6e13 100644 (file)
@@ -102,6 +102,11 @@ class SpecialWatchlist extends ChangesListSpecialPage {
 
                if ( $this->isStructuredFilterUiEnabled() ) {
                        $output->addModuleStyles( [ 'mediawiki.rcfilters.highlightCircles.seenunseen.styles' ] );
+
+                       $output->addJsConfigVars(
+                               'wgStructuredChangeFiltersEditWatchlistUrl',
+                               SpecialPage::getTitleFor( 'EditWatchlist' )->getLocalURL()
+                       );
                }
        }
 
index 3fac73c..aedb9e6 100644 (file)
@@ -99,7 +99,7 @@ class ActiveUsersPager extends UsersPager {
                ];
                $options = [];
                if ( $data !== null ) {
-                       $options['ORDER BY'] = 'qcc_title ' . $data['dir'];
+                       $options['ORDER BY'] = 'qcc_title ' . $data['order'];
                        $options['LIMIT'] = $data['limit'];
                        $conds = array_merge( $conds, $data['conds'] );
                }
index 8fc586b..2fc946e 100644 (file)
@@ -32,7 +32,6 @@ use Wikimedia\Rdbms\IResultWrapper;
 class BlockListPager extends TablePager {
 
        protected $conds;
-       protected $page;
 
        /**
         * Array of restrictions.
@@ -46,7 +45,6 @@ class BlockListPager extends TablePager {
         * @param array $conds
         */
        public function __construct( $page, $conds ) {
-               $this->page = $page;
                $this->conds = $conds;
                $this->mDefaultDirection = IndexPager::DIR_DESCENDING;
                parent::__construct( $page->getContext() );
@@ -262,11 +260,13 @@ class BlockListPager extends TablePager {
 
                        switch ( $restriction->getType() ) {
                                case PageRestriction::TYPE:
-                                       $items[$restriction->getType()][] = HTML::rawElement(
-                                               'li',
-                                               [],
-                                               Linker::link( $restriction->getTitle() )
-                                       );
+                                       if ( $restriction->getTitle() ) {
+                                               $items[$restriction->getType()][] = HTML::rawElement(
+                                                       'li',
+                                                       [],
+                                                       Linker::link( $restriction->getTitle() )
+                                               );
+                                       }
                                        break;
                                case NamespaceRestriction::TYPE:
                                        $text = $restriction->getValue() === NS_MAIN
index 2b094b1..d03401d 100644 (file)
  */
 class NewPagesPager extends ReverseChronologicalPager {
 
-       // Stored opts
+       /**
+        * @var FormOptions
+        */
        protected $opts;
 
        /**
-        * @var HTMLForm
+        * @var SpecialNewpages
         */
        protected $mForm;
 
+       /**
+        * @param SpecialNewpages $form
+        * @param FormOptions $opts
+        */
        public function __construct( $form, FormOptions $opts ) {
                parent::__construct( $form->getContext() );
                $this->mForm = $form;
index f457d2f..bc4202e 100644 (file)
@@ -23,7 +23,7 @@ use MediaWiki\Linker\LinkRenderer;
 
 class ProtectedPagesPager extends TablePager {
 
-       public $mForm, $mConds;
+       public $mConds;
        private $type, $level, $namespace, $sizetype, $size, $indefonly, $cascadeonly, $noredirect;
 
        /**
@@ -32,7 +32,7 @@ class ProtectedPagesPager extends TablePager {
        private $linkRenderer;
 
        /**
-        * @param SpecialProtectedpages $form
+        * @param SpecialPage $form
         * @param array $conds
         * @param string $type
         * @param string $level
@@ -48,7 +48,6 @@ class ProtectedPagesPager extends TablePager {
                $sizetype, $size, $indefonly, $cascadeonly, $noredirect,
                LinkRenderer $linkRenderer
        ) {
-               $this->mForm = $form;
                $this->mConds = $conds;
                $this->type = ( $type ) ? $type : 'edit';
                $this->level = $level;
index 49055af..296fe11 100644 (file)
  */
 class ProtectedTitlesPager extends AlphabeticPager {
 
-       public $mForm, $mConds;
+       /**
+        * @var SpecialProtectedtitles
+        */
+       public $mForm;
 
+       /**
+        * @var array
+        */
+       public $mConds;
+
+       /**
+        * @param SpecialProtectedtitles $form
+        * @param array $conds
+        * @param string|null $type
+        * @param string|null $level
+        * @param int|null $namespace
+        * @param string|null $sizetype
+        * @param int|null $size
+        */
        public function __construct( $form, $conds, $type, $level, $namespace,
                $sizetype = '', $size = 0
        ) {
@@ -55,7 +72,7 @@ class ProtectedTitlesPager extends AlphabeticPager {
         * @return Title
         */
        function getTitle() {
-               return $this->mForm->getTitle();
+               return $this->mForm->getPageTitle();
        }
 
        function formatRow( $row ) {
index e41a98b..6d9d6b0 100644 (file)
@@ -10,9 +10,7 @@
                                <div class="mw-rcfilters-ui-highlights-color-c5" data-color="c5"></div>
                        </div>
                </td>
-               <td>
-                       <span class="mw-collapsible-toggle mw-collapsible-arrow mw-enhancedchanges-arrow mw-enhancedchanges-arrow-space"></span>
-               </td>
+               <td><span class="mw-collapsible-toggle mw-collapsible-arrow mw-enhancedchanges-arrow mw-enhancedchanges-arrow-space mw-collapsible-toggle-collapsed"></span></td>
                <td class="mw-changeslist-line-prefix">{{{ prefix }}}</td>
                <td class="mw-enhanced-rc" colspan="2">{{{ collectedRcFlags }}}&#160;{{ timestamp }}&#160;</td>
                <td class="mw-changeslist-line-inner">
index 95b4cb4..a85e7e8 100644 (file)
@@ -88,7 +88,6 @@ class WatchedItemQueryService {
 
        /**
         * @return IDatabase
-        * @throws MWException
         */
        private function getConnection() {
                return $this->loadBalancer->getConnectionRef( DB_REPLICA, [ 'watchlist' ] );
index 262903d..de0e4a6 100644 (file)
@@ -23,7 +23,7 @@ class SelectWithInputWidget extends \OOUI\Widget {
         *   - array $config['textinput'] Configuration for the TextInputWidget
         *   - array $config['dropdowninput'] Configuration for the DropdownInputWidget
         *   - bool $config['or'] Configuration for whether the widget is dropdown AND input
-        *                              or dropdown OR input
+        *       or dropdown OR input
         */
        public function __construct( array $config = [] ) {
                // Configuration initialization
@@ -36,7 +36,7 @@ class SelectWithInputWidget extends \OOUI\Widget {
                        $config
                );
 
-               if ( isset( $config['disabled'] ) && $config['disabled'] == true ) {
+               if ( isset( $config['disabled'] ) && $config['disabled'] ) {
                        $config['textinput']['disabled'] = true;
                        $config['dropdowninput']['disabled'] = true;
                }
index 006e3b7..8aa7c87 100644 (file)
@@ -1033,7 +1033,7 @@ class LanguageConverter {
                                $revision = Revision::newFromTitle( $title );
                                if ( $revision ) {
                                        if ( $revision->getContentModel() == CONTENT_MODEL_WIKITEXT ) {
-                                               $txt = $revision->getContent( Revision::RAW )->getNativeData();
+                                               $txt = $revision->getContent( Revision::RAW )->getText();
                                        }
 
                                        // @todo in the future, use a specialized content model, perhaps based on json!
index 4f24713..aaa5d16 100644 (file)
@@ -173,7 +173,7 @@ class Names {
                'gan' => '贛語', # Gan (multiple scripts - defaults to Traditional)
                'gan-hans' => "赣语(简体)\u{200E}", # Gan (Simplified Han)
                'gan-hant' => "贛語(繁體)\u{200E}", # Gan (Traditional Han)
-               'gcr' => 'kréyòl gwiyanè', # Guianan Creole
+               'gcr' => 'kriyòl gwiyannen', # Guianan Creole
                'gd' => 'Gàidhlig', # Scots Gaelic
                'gl' => 'galego', # Galician
                'glk' => 'گیلکی', # Gilaki
index 37055b1..b36855f 100644 (file)
        "passwordreset-domain": "النطاق:",
        "passwordreset-email": "عنوان البريد الإلكتروني:",
        "passwordreset-emailtitle": "تفاصيل حساب {{SITENAME}}",
-       "passwordreset-emailtext-ip": "احد Ù\85ا (Ù\82د Ù\8aÙ\83Ù\88Ù\86 Ø§Ù\86ت$1)Ø·Ù\84ب Ù\85Ø°Ù\83رة ØªÙ\81اصÙ\8aÙ\84 Ø§Ù\84حساب Ù\84{{SITENAME}} ($4).اÙ\84Ù\85ستخدÙ\85 Ø§Ù\84اتÙ\8a {{PLURAL:$3|اÙ\84حساب Ù\87Ù\88|اÙ\84حسابات Ù\87Ù\8a}} Ù\82د Ù\82رÙ\86 Ø¨Ù\87ذا Ø§Ù\84عÙ\86Ù\88اÙ\86 :\n\n$2\n\n{{PLURAL:$3|Ù\83Ù\84Ù\85Ø© Ø§Ù\84Ù\85رÙ\88ر Ø§Ù\84Ù\85ؤÙ\82تة|Ù\83Ù\84Ù\85ات Ø§Ù\84Ù\85رÙ\88ر Ø§Ù\84Ù\85ؤÙ\82Ø©}}سÙ\8aÙ\86تÙ\87Ù\8a Ù\81Ù\8a {{PLURAL:$5|Ù\8aÙ\88Ù\85|اÙ\8aاÙ\85$5 }}\nÙ\85Ù\86 Ø§Ù\84اÙ\81ضÙ\84 Ø§Ù\86 ØªØ³Ø¬Ù\84 Ø§Ù\84دخÙ\88Ù\84 Ù\88تختار Ù\83Ù\84Ù\85Ø© Ù\85رÙ\88ر Ø¬Ø¯Ù\8aدة Ø§Ù\84اÙ\86 .\nإذا Ù\82اÙ\85 Ø´Ø®Øµ Ø¢Ø®Ø± Ø¨Ù\87ذا Ø§Ù\84Ø·Ù\84بØ\8c Ø£Ù\88 Ø¥Ø°Ø§  ØªØ°Ù\83رت Ù\83Ù\84Ù\85Ø© Ø§Ù\84Ù\85رÙ\88ر Ø§Ù\84أصÙ\84Ù\8aØ© Ø§Ù\84خاصة Ø¨Ù\83Ø\8cÙ\88Ù\84Ù\85 ØªØ¹Ø¯ ØªØ±ØºØ¨ Ù\81Ù\8a ØªØºÙ\8aÙ\8aرÙ\87Ø\8c Ù\8aÙ\85Ù\83Ù\86Ù\83 ØªØ¬Ø§Ù\87Ù\84 Ù\87Ø°Ù\87 Ø§Ù\84رساÙ\84Ø© Ù\88Ù\85تابعة Ø§Ø³ØªØ®Ø¯Ø§Ù\85  Ù\83Ù\84Ù\85Ø© Ø§Ù\84Ù\85رÙ\88رالقديمة.",
-       "passwordreset-emailtext-user": "احد ما (قد يكون انت$1)طلب مذكرة تفاصيل الحساب ل{{SITENAME}} ($4).المستخدم الاتي {{PLURAL:$3|الحساب هو|الحسابات هي}} قد قرن بهذا العنوان :\n\n$2\n\n{{PLURAL:$3|كلمة المرور المؤقتة|كلمات المرور المؤقة}}سينتهي في {{PLURAL:$5|يوم|ايام$5 }}\nمن الافضل ان تسجل الدخول وتختار كلمة مرور جديدة الان .\nإذا قام شخص آخر بهذا الطلب، أو إذا  تذكرت كلمة المرور الأصلية الخاصة بك،ولم تعد ترغب في تغييره، يمكنك تجاهل هذه الرسالة ومتابعة استخدام  كلمة المرورالقديمة.",
+       "passwordreset-emailtext-ip": "أحد Ù\85ا (Ù\82د Ù\8aÙ\83Ù\88Ù\86 Ø£Ù\86تØ\8c Ù\85Ù\86 Ø§Ù\84عÙ\86Ù\88اÙ\86 $1)  Ø·Ù\84ب Ø¥Ø¹Ø§Ø¯Ø© Ø¶Ø¨Ø· Ù\83Ù\84Ù\85Ø© Ø³Ø± Ø­Ø³Ø§Ø¨Ù\83 Ø¹Ù\84Ù\89 {{SITENAME}} ($4). {{PLURAL:$3||اÙ\84حساب|اÙ\84حساباÙ\86| Ø§Ù\84حسابات}} Ø£Ø¯Ù\86اÙ\87 Ù\82د Ø§Ù\82ترÙ\86ت Ø¨Ø¨Ø±Ù\8aدÙ\83 Ø§Ù\84Ø¥Ù\84Ù\83ترÙ\88Ù\86Ù\8a :\n\n$2\n\n{{PLURAL:$3||Ù\83Ù\84Ù\85Ø© Ø§Ù\84سر Ø§Ù\84Ù\85ؤÙ\82تة|Ù\83Ù\84Ù\85ات Ø§Ù\84سر Ø§Ù\84Ù\85ؤÙ\82تة}} Ø³ØªÙ\86تÙ\87Ù\8a ØµÙ\84احÙ\8aتÙ\87ا Ù\81Ù\8a {{PLURAL:$5||Ù\8aÙ\88Ù\85 Ù\88احد|Ù\8aÙ\88Ù\85Ù\8aÙ\86|$5 Ø£Ù\8aاÙ\85|$5 Ù\8aÙ\88Ù\85ا|$5 Ù\8aÙ\88Ù\85}}\nÙ\8aÙ\85Ù\83Ù\86Ù\83 ØªØ³Ø¬Ù\8aÙ\84 Ø§Ù\84دخÙ\88Ù\84 Ù\88اختÙ\8aار Ù\83Ù\84Ù\85Ø© Ø³Ø± Ø¬Ø¯Ù\8aدة. Ø¥Ø°Ø§ Ù\83اÙ\86 Ù\87ذا Ø§Ù\84Ø·Ù\84ب ØªÙ\85 Ø¨Ù\88اسطة Ø´Ø®Øµ Ø£Ø®Ø±Ø\8c Ø£Ù\88 Ø¥Ø°Ø§ ØªØ°Ù\83رت Ù\83Ù\84Ù\85Ø© Ø§Ù\84سر Ø§Ù\84أصÙ\84Ù\8aØ© Ø§Ù\84خاصة Ø¨Ù\83Ø\8c Ù\88Ù\84Ù\85 ØªØ¹Ø¯ ØªØ±ØºØ¨ Ù\81Ù\8a ØªØºÙ\8aÙ\8aرÙ\87اØ\8c Ù\8aÙ\85Ù\83Ù\86Ù\83 ØªØ¬Ø§Ù\87Ù\84 Ù\87Ø°Ù\87 Ø§Ù\84رساÙ\84Ø© Ù\88Ù\85تابعة Ø§Ø³ØªØ®Ø¯Ø§Ù\85 Ù\83Ù\84Ù\85Ø© Ø§Ù\84سر القديمة.",
+       "passwordreset-emailtext-user": "المستخدم $1 على {{SITENAME}} طلب إعادة ضبط كلمة سر حسابك على {{SITENAME}} ($4). {{PLURAL:$3||الحساب|الحسابان| الحسابات}} أدناه قد اقترنت ببريدك الإلكتروني :\n\n$2\n\n{{PLURAL:$3||كلمة السر المؤقتة|كلمات السر المؤقتة}} ستنتهي صلاحيتها في {{PLURAL:$5||يوم واحد|يومين|$5 أيام|$5 يوما|$5 يوم}}\nيمكنك تسجيل الدخول واختيار كلمة سر جديدة. إذا كان هذا الطلب تم بواسطة شخص أخر، أو إذا تذكرت كلمة السر الأصلية الخاصة بك، ولم تعد ترغب في تغييرها، يمكنك تجاهل هذه الرسالة ومتابعة استخدام كلمة السر القديمة.",
        "passwordreset-emailelement": "اسم المستخدم: \n$1\n\nكلمة السر المؤقتة: \n$2",
        "passwordreset-emailsentemail": "أرسل بريد إلكتروني تذكيري",
        "changeemail": "تغيير عنوان البريد الإلكتروني",
        "recentchangeslinked": "تغييرات ذات علاقة",
        "recentchangeslinked-title": "التغييرات المرتبطة ب \"$1\"",
        "recentchangeslinked-summary": "هذي ليستة بالتبديلات إلّي صاروا ما صارلهمش برشا للپاجات إلّي موجود ليان يدّي ليهم في پاج بذاتها (ولّا في پاج متاع تصنيف معين).\nالپاجات في [[Special:Watchlist|ليستة الپاجات إلّي تّبعها]] '''مكتوبين بالغليظ'''",
-       "recentchangeslinked-page": "Ø¥سم الپاج:",
+       "recentchangeslinked-page": "اسم الپاج:",
        "recentchangeslinked-to": "أظهر التغييرات للصفحات الموصولة للصفحة المعطاة عوضاً عن ذلك",
        "upload": "صبّ فشياي",
        "uploadlogpage": "سجل الرفع",
index e79de32..5d02563 100644 (file)
        "wrongpasswordempty": "كلمة السر المدخلة كانت فارغة.\nمن فضلك حاول مرة أخرى.",
        "passwordtooshort": "يجب أن تتكون كلمة السر على الأقل من {{PLURAL:$1|حرف واحد|حرفين|$1 حروف|$1 حرفا|$1 حرف}}.",
        "passwordtoolong": "كلمات السر لا يجب أن تكون أطول من  {{PLURAL:$1|1 حرف|$1 حروف}}.",
-       "passwordtoopopular": "لا يمكن استخدام كلمات المرور المختارة بشكل عام; يُرجَى اختيار كلمة مرور يصعب تخمينها.",
-       "passwordinlargeblacklist": "كلمة المرور التي تم إدخالها موجودة في قائمة كلمات المرور شائعة الاستخدام; الرجاء اختيار كلمة مرور فريدة.",
+       "passwordtoopopular": "لا يمكن استخدام كلمات السر المختارة بشكل عام; يرجى اختيار كلمة سر يصعب تخمينها.",
+       "passwordinlargeblacklist": "كلمة السر التي تم إدخالها موجودة في قائمة كلمات المرور شائعة الاستخدام; الرجاء اختيار كلمة سر فريدة.",
        "password-name-match": "يجب أن تكون كلمة المرور مختلفة عن اسم المستخدم.",
        "password-login-forbidden": "تم منع استخدام اسم المستخدم هذا وكلمة السر.",
        "mailmypassword": "أعد تعيين كلمة السر",
        "botpasswords-disabled": "كلمات السر الخاصة بالبوت معطلة.",
        "botpasswords-no-central-id": "لاستخدام كلمة السر الخاصة بالبوت، يجب أن تقوم بتسجيل الدخول من خلال حساب موحد.",
        "botpasswords-existing": "كلمات مرور البوت الموجودة",
-       "botpasswords-createnew": "إنشاء كلمة مرور جديدة للبوت",
-       "botpasswords-editexisting": "تعديل كلمة مرور موجودة للبوت",
+       "botpasswords-createnew": "إنشاء كلمة سر جديدة للبوت",
+       "botpasswords-editexisting": "تعديل كلمة سر موجودة للبوت",
        "botpasswords-label-needsreset": "(تحتاج كلمة المرور إلى إعادة الضبط)",
        "botpasswords-label-appid": "اسم البوت:",
        "botpasswords-label-create": "أنشأ",
        "botpasswords-deleted-body": "كلمة سر البوت \"$1\" {{GENDER:$2|للمستخدم|للمستخدمة}} \"$2\" قد حذفت.",
        "botpasswords-newpassword": "كلمة السر الجديدة لتسجيل الدخول ب <strong>$1</strong> هي <strong>$2</strong>. <em>من فضلك سجل هذه كمرجع في المستقبل .</em><br> (للبوتات القديمة التي تتطلب أن يكون اسم تسجيل الدخول مثل اسم المستخدم النهائي، يمكنك أيضا استخدام <strong>$3</strong> كاسم مستخدم و <strong>$4</strong> ككلمة سر.)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider غير متاح.",
-       "botpasswords-restriction-failed": "قيود كلمة مرور البوت تمنع هذا الولوج.",
+       "botpasswords-restriction-failed": "قيود كلمة سر البوت تمنع هذا الولوج.",
        "botpasswords-invalid-name": "اسم المستخدم الموفر لا يحتوي على فاصل كلمة سر البوت (\"$1\").",
        "botpasswords-not-exist": "المستخدم \"$1\" لا يمتلك كلمة سر بوت بالاسم \"$2\".",
-       "botpasswords-needs-reset": "يجب إعادة تعيين كلمة مرور البوت لاسم بوت \"$2\" {{GENDER:$1|المستخدم|المستخدم}}\".",
+       "botpasswords-needs-reset": "يجب إعادة تعيين كلمة سر البوت لاسم بوت \"$2\" {{GENDER:$1|المستخدم|المستخدم}}\".",
        "botpasswords-locked": "لا يمكنك تسجيل الدخول بكلمة مرور بوت حيث تم منع حسابك.",
        "resetpass_forbidden": "كلمات السر لا يمكن تغييرها",
        "resetpass_forbidden-reason": "لا يمكن تغيير كلمة المرور: $1",
        "resetpass-abort-generic": "منعت مُلحقة إتمام صيرورة تغيير كلمة السّر.",
        "resetpass-expired": "انتهت مدة صلاحية كلمة السر الخاصة بك. الرجاء تعيين كلمة سر جديدة لتسجيل الدخول.",
        "resetpass-expired-soft": "انتهت مدة صلاحية كلمة السر الخاصة بك; الرجاء تغيير كلمة سر جديدة الآن أو النقر على زر إلغاء لإعادة تعيين كلمة السر لاحقاً.",
-       "resetpass-validity": "كلمة المرور غير صالحة: $1\n\nيُرجَى تعيين كلمة مرور جديدة لتسجيل الدخول.",
+       "resetpass-validity": "كلمة السر غير صالحة: $1\n\nيرجى تعيين كلمة سر جديدة لتسجيل الدخول.",
        "resetpass-validity-soft": "كلمة السر الخاصة بك غير صالحة :  $1 \n\nرجاءا اختر كلمة سر جديدة الآن، أو انقر فوق \"{{int:authprovider-resetpass-skip-label}}\" لتغييرها في وقت لاحق.",
        "passwordreset": "إعادة ضبط كلمة السر",
        "passwordreset-text-one": "أكمل هذا النموذج لإعادة ضبط كلمة السر الخاصة بك.",
        "edit-slots-cannot-add": "{{PLURAL:$1|الفتحة|الفتحات}} التالية غير مدعومة هنا: $2.",
        "edit-slots-cannot-remove": "{{PLURAL:$1|الفتحة|الفتحات}} التالية مطلوبة ولا يمكن إزالتها: $2.",
        "edit-slots-missing": "{{PLURAL:$1|الفتحة|الفتحات}} التالية مفقودة: $2.",
-       "postedit-confirmation-created": "تÙ\85 Ø§نشاء الصفحة.",
+       "postedit-confirmation-created": "تÙ\85 Ø¥نشاء الصفحة.",
        "postedit-confirmation-restored": "تم استعادة الصفحة.",
        "postedit-confirmation-saved": "تعديلك حفظ.",
        "postedit-confirmation-published": "تم نشر تعديلك.",
        "statistics-edits-average": "متوسط التعديلات لكل صفحة",
        "statistics-users": "مستخدمون مسجلون",
        "statistics-users-active": "مستخدمون نشطون",
-       "statistics-users-active-desc": "المستخدمون الذين قاموا بفعل في آخر {{PLURAL:$1||يوم|يومين|$1 أيام|$1 يوماً|$1 يوم}}",
+       "statistics-users-active-desc": "المستخدمون الذين قاموا بفعل في آخر {{PLURAL:$1|$1 يوم|يوم|يومين|$1 أيام|$1 يوما|$1 يوم}}",
        "pageswithprop": "صفحات مع خاصية الصفحة",
        "pageswithprop-legend": "صفحات مع خاصية الصفحة",
        "pageswithprop-text": "تسرد هذه الصفحة الصفحات التي تستخدم خاصية صفحة معينة.",
        "apisandbox-intro": "استخدم هذه الصفحة للتجربة ب<strong>MediaWiki web service API</strong>.\nارجع إلى [[mw:API:Main page|توثيق الAPI]] للمزيد من التفاصيل حول استخدام الAPI. مثال: [https://www.mediawiki.org/wiki/API#A_simple_example احصل على محتوى صفحة رئيسية]. اختر فعلا لترى المزيد من الأمثلة.\n\nلاحظ أنه، على الرغم من أن هذا ملعب، فالأفعال التي تقوم بها على هذه الصفحة ربما تعدل الويكي.",
        "apisandbox-submit": "عمل الطلب",
        "apisandbox-reset": "إفراغ",
-       "apisandbox-retry": "أعد المحاولة",
+       "apisandbox-retry": "إعادة المحاولة",
        "apisandbox-loading": "تحميل المعلومات لAPI module \"$1\"...",
        "apisandbox-load-error": "حدث خطأ أثناء تحميل المعلومات لAPI module \"$1\": $2",
        "apisandbox-no-parameters": "وحدة API هذه ليس بها معاملات.",
        "ipb_expiry_old": "توقيت انتهاء المنع واقع في الماضي.",
        "ipb_expiry_temp": "عمليات منع أسماء المستخدمين المخفية يجب أن تكون دائمة.",
        "ipb_hide_invalid": "غير قادر على منع الحساب؛ لديه أكثر من {{PLURAL:$1|تعديل واحد|$1 تعديل}}.",
+       "ipb_hide_partial": "عمليات المنع التي تشمل إخفاء اسم المستخدم يجب أن تكون عمليات منع كاملة.",
        "ipb_already_blocked": "\"$1\" ممنوع حالياً",
        "ipb-needreblock": "$1 ممنوع حالياً. هل تريد تغيير الإعدادات؟",
        "ipb-otherblocks-header": "{{PLURAL:$1||المنع الآخر|المنعان الآخران|المنوعات الأخرى}}",
        "authmanager-realname-help": "الاسم الحقيقي للمستخدم",
        "authmanager-provider-password": "توثيق مبني على كلمة المرور",
        "authmanager-provider-password-domain": "توثيق مبني على كلمة المرور والنطاق",
-       "authmanager-provider-temporarypassword": "كلمة مرور مؤقتة",
+       "authmanager-provider-temporarypassword": "كلمة سر مؤقتة",
        "authprovider-confirmlink-message": "بناء على محاولات تسجيل الدخول الحديثة الخاصة بك، فالحسابات التالية يمكن وصلها بحساب الويكي الخاص بك. وصلهم يفعل تسجيل الدخول عبر هذه الحسابات. من فضلك اختر أيهم ينبغي أن يتم وصلها.",
        "authprovider-confirmlink-request-label": "الحسابات التي ينبغي أن يتم وصلها",
        "authprovider-confirmlink-success-line": "$1: تم الوصل بشكل صحيح.",
index 7155b22..3030ab4 100644 (file)
@@ -24,7 +24,8 @@
                        "Fitoschido",
                        "Sagsag",
                        "Bodhisattwa",
-                       "Vlad5250"
+                       "Vlad5250",
+                       "ৰাজীৱ গোস্বামী"
                ]
        },
        "tog-underline": "সংযোগসমূহ অধোৰেখিত কৰক:",
        "resetpass_submit": "গুপ্তশব্দ বহুৱাওক আৰু প্ৰৱেশ কৰক",
        "changepassword-success": "আপোনাৰ গুপ্তশব্দ সফলতাৰে সলনি কৰা হৈছে!",
        "changepassword-throttled": "আপুনি স‍ম্প্ৰতি অজস্ৰবাৰ লগ্‌-ইনৰ প্ৰয়াস কৰিছে।\nঅনুগ্ৰহ কৰি $1 সময়ৰ পিছত আকৌ চেষ্টা কৰক।",
+       "botpasswords-disabled": "Bot গুপ্তশব্দ নিষ্ক্ৰিয়",
        "botpasswords-label-create": "সৃষ্টি কৰক",
        "botpasswords-label-update": "আপডেট কৰক",
        "botpasswords-label-cancel": "বাতিল কৰক",
index 56b6f0f..be1b221 100644 (file)
        "ipb-disableusertalk": "Забараніць гэтаму ўдзельніку рэдагаваць сваю старонку размоў падчас блакіроўкі",
        "ipb-change-block": "Змяніць настройкі блакіравання ўдзельніка",
        "ipb-confirm": "Пацвердзіць блакіроўку",
+       "ipb-sitewide": "Ва ўсім праекце",
+       "ipb-partial": "Частковая",
+       "ipb-pages-label": "Старонкі",
+       "ipb-namespaces-label": "Прасторы назваў",
        "badipaddress": "Недапушчальны адрас IP",
        "blockipsuccesssub": "Паспяховае блакаванне",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] быў заблакаваны.<br />\nБлокі пералічаны ў [[Special:BlockList|спісе блокаў]].",
        "ipb-blocklist": "Паказаць наяўныя блокі",
        "ipb-blocklist-contribs": "Уклад {{GENDER:$1|$1}}",
        "ipb-blocklist-duration-left": "засталося $1",
+       "block-actions": "Дзеянні для блакіроўкі:",
        "block-expiry": "Згасае:",
+       "block-options": "Дадатковыя опцыі:",
+       "block-target": "Удзельнік або адрас IP:",
        "unblockip": "Зняць блок з удзельніка",
        "unblockiptext": "З дапамогай формы ніжэй можна вярнуць дазвол на праўкі для раней заблакіраванага IP-адраса або ўдзельніка.",
        "ipusubmit": "Зняць гэты блок",
        "ipb_expiry_old": "Час сканчэння — у мінулым.",
        "ipb_expiry_temp": "Скрытыя блокі на імёны ўдзельнікаў мусяць быць сталымі.",
        "ipb_hide_invalid": "Немагчыма заглушыць гэты рахунак; для яго маецца больш за {{PLURAL:$1|адну праўку|$1 праўкі|$1 правак}}.",
+       "ipb_hide_partial": "Блакіроўкі схаваных імёнаў удзельнікаў мусяць пашырацца на ўвесь праект.",
        "ipb_already_blocked": "\"$1\" ужо знаходзіцца пад блокам",
        "ipb-needreblock": "$1 ужо заблакіраваны. Жадаеце змяніць настройкі блакіроўкі?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Іншая блакіроўка|Іншыя блакіроўкі}}",
index 1c86ba5..13382b1 100644 (file)
        "unwatchedpages": "Ненаблюдавани страници",
        "listredirects": "Списък на пренасочванията",
        "listduplicatedfiles": "Списък на повтарящи се файлове",
-       "listduplicatedfiles-summary": "Това Ðµ Ñ\81пиÑ\81Ñ\8aк Ð½Ð° Ñ\84айловеÑ\82е, Ð·Ð° ÐºÐ¾Ð¸Ñ\82о Ð¿Ð¾Ñ\81леднаÑ\82а Ð²ÐµÑ\80Ñ\81иÑ\8f Ðµ Ð´Ñ\83бликаÑ\82 Ñ\81 Ð¿Ð¾Ñ\81леднаÑ\82а Ð²ÐµÑ\80Ñ\81иÑ\8f Ð½Ð° Ð´Ñ\80Ñ\83г Ñ\84айл. Ð\9fоказани Ñ\81а Ñ\81амо Ð»Ð¾ÐºÐ°Ð»ните файлове.",
+       "listduplicatedfiles-summary": "Това Ðµ Ñ\81пиÑ\81Ñ\8aк Ð½Ð° Ñ\84айловеÑ\82е, Ð·Ð° ÐºÐ¾Ð¸Ñ\82о Ð¿Ð¾Ñ\81леднаÑ\82а Ð²ÐµÑ\80Ñ\81иÑ\8f Ðµ Ð´Ñ\83бликаÑ\82 Ñ\81 Ð¿Ð¾Ñ\81леднаÑ\82а Ð²ÐµÑ\80Ñ\81иÑ\8f Ð½Ð° Ð´Ñ\80Ñ\83г Ñ\84айл. Ð\9fоказани Ñ\81а Ñ\81амо Ð¼ÐµÑ\81Ñ\82ните файлове.",
        "listduplicatedfiles-entry": "[[:File:$1|$1]] има [[$3|{{PLURAL:$2|дубликат|$2 дубликата}}]].",
        "unusedtemplates": "Неизползвани шаблони",
        "unusedtemplatestext": "Тази страница съдържа списък на страниците в именно пространство {{ns:template}}, които не са включени в друга страница. Проверявайте за препратки към отделните шаблони преди да ги изтриете или предложите за изтриване.",
        "ipb_expiry_old": "Срокът на изтичане е минал.",
        "ipb_expiry_temp": "Скритите потребителски имена трябва да се блокират безсрочно.",
        "ipb_hide_invalid": "Тази потребителска сметка не може да бъде прикрита; с нея са направени повече от {{PLURAL:$1|една редакция|$1 редакции}}.",
+       "ipb_hide_partial": "Скритите забрани за потребителски имена трябва да се прилагат за цяло уики.",
        "ipb_already_blocked": "„$1“ е вече блокиран.",
        "ipb-needreblock": "$1 е вече блокиран. Желаете ли да промените настройките?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Друго блокиране|Други блокирания}}",
        "allmessagesname": "Име",
        "allmessagesdefault": "Текст по подразбиране",
        "allmessagescurrent": "Текущ текст",
-       "allmessagestext": "Тази Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81Ñ\8aдÑ\8aÑ\80жа Ñ\81пиÑ\81Ñ\8aк Ð½Ð° Ñ\81иÑ\81Ñ\82емниÑ\82е Ñ\81Ñ\8aобÑ\89ениÑ\8f Ð¾Ñ\82 Ð¸Ð¼ÐµÐ½Ð½Ð¾Ñ\82о Ð¿Ñ\80оÑ\81Ñ\82Ñ\80анÑ\81Ñ\82во â\80\9eÐ\9cедиÑ\8fУикиâ\80\9c.\nÐ\9fоÑ\81еÑ\82еÑ\82е [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Localisation] Ð¸ [https://translatewiki.net translatewiki.net], Ð°ÐºÐ¾ Ð¶ÐµÐ»Ð°ÐµÑ\82е Ð´Ð° Ð´Ð¾Ð¿Ñ\80инеÑ\81еÑ\82е Ð·Ð° Ð¾Ð±Ñ\89аÑ\82а Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ\86иÑ\8f на софтуера МедияУики.",
+       "allmessagestext": "Тази Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81Ñ\8aдÑ\8aÑ\80жа Ñ\81пиÑ\81Ñ\8aк Ð½Ð° Ñ\81иÑ\81Ñ\82емниÑ\82е Ñ\81Ñ\8aобÑ\89ениÑ\8f Ð¾Ñ\82 Ð¸Ð¼ÐµÐ½Ð½Ð¾Ñ\82о Ð¿Ñ\80оÑ\81Ñ\82Ñ\80анÑ\81Ñ\82во â\80\9eÐ\9cедиÑ\8fУикиâ\80\9c.\nÐ\9fоÑ\81еÑ\82еÑ\82е [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Localisation] Ð¸ [https://translatewiki.net translatewiki.net], Ð°ÐºÐ¾ Ð¶ÐµÐ»Ð°ÐµÑ\82е Ð´Ð° Ð´Ð¾Ð¿Ñ\80инеÑ\81еÑ\82е Ð·Ð° Ð¾Ð±Ñ\89оÑ\82о Ð¿Ñ\80евеждане на софтуера МедияУики.",
        "allmessagesnotsupportedDB": "Тази страница не може да бъде използвана, тъй като е изключена възможността <strong>$wgUseDatabaseMessages</strong>",
        "allmessages-filter-legend": "Филтър",
        "allmessages-filter": "Филтриране по ниво на персонализация:",
index a06994f..74c7e34 100644 (file)
        "privacypage": "Project:গোপনীয়তার নীতি",
        "badaccess": "অনুমোদন ত্রুটি",
        "badaccess-group0": "আপনি যে কাজের জন্য অনুরোধ করেছেন তা আপনার সম্পন্ন করার অনুমতি নেই।",
-       "badaccess-groups": "à¦\86পনি à¦¯à§\87 à¦\95াà¦\9cà¦\9fি à¦\95রতà§\87 à¦\9aাà¦\9aà§\8dà¦\9bà§\87ন à¦¤à¦¾ à¦\95à§\87বল {{PLURAL:$2|à¦\8fà¦\87 à¦¦à¦²à§\87র|à¦\8fà¦\87 à¦¦à¦²à¦\97à§\81লির à¦¯à§\87à¦\95à§\8bন à¦\8fà¦\95à¦\9fির}} à¦\8fà¦\95à¦\9cন à¦¸à¦¦à¦¸à§\8dয à¦¬à§\8dযবহারà¦\95ারà§\80 à¦¸à¦®à§\8dপাদন à¦\95রতà§\87 à¦ªà¦¾à¦°à§\87ন: $1।",
+       "badaccess-groups": "আপনি যে কাজটি করতে চাচ্ছেন তা কেবল {{PLURAL:$2|এই দলের|এই দলগুলির যেকোন একটির}} একজন ব্যবহারকারী সম্পাদন করতে পারেন: $1।",
        "versionrequired": "মিডিয়াউইকির $1 নং সংস্করণ প্রয়োজন",
        "versionrequiredtext": "এই পাতাটি ব্যবহার করার জন্য মিডিয়াউইকির $1 নং সংস্করণ প্রয়োজন। [[Special:Version|সংস্করণ পাতা]] দেখুন।",
        "ok": "ঠিক আছে",
        "nolicense": "কিছুই নির্বাচন করা হয়নি",
        "licenses-edit": "লাইসেন্স-সংক্রান্ত পছন্দগুলি সম্পাদনা করুন",
        "license-nopreview": "(প্রাকদর্শন লভ্য নয়)",
-       "upload_source_url": " (আপনি একটি বৈধ, উন্মুক্ত URL থেকে ফাইল চয়ন করেছেন)",
+       "upload_source_url": "(একটি বৈধ ও উন্মুক্ত URL থেকে ফাইল চয়ন করছেন)",
        "upload_source_file": "(আপনার কম্পিউটারের একটি ফাইল)",
        "listfiles-delete": "অপসারণ",
        "listfiles-summary": "এই বিশেষ পাতাটি আপলোড করা সকল ফাইল প্রদর্শন করে।",
        "emailccsubject": "$1-কে আপনার বার্তার প্রতিলিপি: $2",
        "emailsent": "ই-মেইল প্রেরণ করা হয়েছে",
        "emailsenttext": "আপনার ই-মেইল বার্তা প্রেরণ করা হয়েছে।",
-       "emailuserfooter": "এই ইমেইলটি {{SITENAME}} সাইটের \"{{int:emailuser}}\" সুবিধা ব্যবহার করে $1-এর পক্ষ থেকে {{GENDER:$2|$2}}-এর নিকট {{GENDER:$1|পাঠানো হয়েছে}}। যদি {{GENDER:$2|আপনি}} এই ইমেইলটির উত্তর দেন, তাহলে {{GENDER:$2|আপনার}} উত্তরর ইমেইলটি সরাসরি {{GENDER:$1|মূল প্রেরকের}} কাছে পাঠানো হবে, সেই সাথে {{GENDER:$2|আপনার}} ইমেল ঠিকানা {{GENDER:$1|তাঁর}} কাছে প্রকাশ করা হবে।",
+       "emailuserfooter": "এই ইমেইলটি {{SITENAME}} সাইটের \"{{int:emailuser}}\" সুবিধা ব্যবহার করে $1-এর পক্ষ থেকে {{GENDER:$2|$2}}-এর নিকট {{GENDER:$1|পাঠানো হয়েছে}}। যদি {{GENDER:$2|আপনি}} এই ইমেইলটির উত্তর দেন, তাহলে {{GENDER:$2|আপনার}} উত্তর দেওয়ার ইমেইলটি সরাসরি {{GENDER:$1|মূল প্রেরকের}} কাছে পাঠানো হবে, সেই সাথে {{GENDER:$2|আপনার}} ইমেল ঠিকানা {{GENDER:$1|তাঁর}} কাছে প্রকাশ করা হবে।",
        "usermessage-summary": "বাদবাকি সিস্টেম বার্তা",
        "usermessage-editor": "সিস্টেম ম্যাসেঞ্জার",
        "usermessage-template": "MediaWiki:ব্যবহারকারী বার্তা",
index 5f32141..ab3b572 100644 (file)
@@ -10,7 +10,8 @@
                        "아라",
                        "Mjbmr",
                        "Beyronvan",
-                       "Isevand"
+                       "Isevand",
+                       "Kikumoron"
                ]
        },
        "tog-underline": "هومپاٛیڤٱندٱل زیر خٱتدار",
        "mainpage": "سرتال",
        "mainpage-description": "سرتال",
        "policy-url": "Project:رٱڤشت کار",
-       "portal": "سرآسۊناْ کاریاروݩ",
-       "portal-url": "Project:سرآسۊناْ کاریاروݩ",
+       "portal": "سرآسوناْ کاریاروݩ",
+       "portal-url": "Project:سرآسوناْ کاریاروݩ",
        "privacy": "رٱدیارکونی رازڤادٙاری",
        "privacypage": "Project:رٱدیارکونی رازڤاڌاری",
        "badaccess": "خٱتا :ساْلا بیار",
        "red-link-title": "$1 (چونو بلگاْیی نیڌس)",
        "sort-descending": "ڤدین یٱک کٱم آڤیڌن",
        "sort-ascending": "پوشت سریٱک کم ڤابیڌن",
-       "nstab-main": "بٱلگٱ",
+       "nstab-main": "بٱلگاْ",
        "nstab-user": "بٱلگاْ کاریار",
        "nstab-media": "بٱلگاْ ڤارسگٱری",
        "nstab-special": "بٱلگاْ ڤیجٱ",
        "delete-scheduled": "بٱلٛگاْ$1 سی پاکسا کۊڌالکاری آڤیڌاْ.لوتفٱن سٱڤۊر ڤۊهین",
        "delete-hook-aborted": "پژار ڤا قولاڤ لٱق آڤیڌ\nاشکافنیڌنی سی هؽ داڌ نڤیڌ",
        "no-null-revision": "سی بٱلگاْ $1 ڤانیٱری خومسا ناْ راس کونین",
-       "badtitle": "داسۊن گٱن",
-       "badtitletext": "داسۊن خاسدنی نادیار، هالی، یا داسۊنی کاْ میٛنجقا زڤونی یا میٛنجقا ڤیکی ڤا هومپاٛیڤٱند دوروسد ناراْ و یا گاشا چٱنتا کاراکتر داراْ کاْ ڤا میٛن داسۊن نۉ باْیوفتاْ ڤا کار.",
+       "badtitle": "داسوݩ گٱن",
+       "badtitletext": "داسوݩ خاسدنی نادیار، هالی، یا داسۊنی کاْ میٛنجقا زڤونی یا میٛنجقا ڤیکی ڤا هومپاٛیڤٱند دوروسد ناراْ و یا گاشا چٱنتا کاراکتر داراْ کاْ ڤا میٛن داسۊن نۉ باْیوفتاْ ڤا کار.",
        "title-invalid-empty": "اوڌڤان بٱلٛگاْ دٱرخاس آڤیڌاْ پٱتی هؽڌآ یا تاٛنا اوڌڤان مؽن نوم گوڌ آڤیڌاْ هؽڌآ",
        "title-invalid-utf8": "اوڌڤان بٱلٛگاْ دٱرخاس آڤیڌاْ هؽل ڤیڌاْ نادوروس یونیکوڌ هؽڌآ",
        "title-invalid-interwiki": "بٱلٛگاْ دٱرخاس آڤیڌاْ دارای پاٛڤٱن مؽن ڤیکی هؽڌآ کاْ نؽڤۊهاْ مؽن اوڌڤانٱل نهاڌاْ ڤۊهاْ",
        "mypreferencesprotected": "ایسا سلا آلشدکاری چیا دیٱر خوتۊناْ نارین.",
        "ns-specialprotected": "نیبۊ بٱلگاْیٱل ڤیجاْ ناْ آلشد کرد",
        "titleprotected": "ای داسۊن ڤا دٱسدا کاریار [[User:$1|$1]] نیاگری ڤابیڌاْ.\nدلیلس یوناْ <em>$2</em>.",
+       "filereadonlyerror": "ایسا نٱترین جانیا \"$1\" ناْ آلشد کونین سی یو کاْ جاگٱ جانیا \"$2\" فٱقٱت ب هال و بال خوندناْ.\nدیڤونداری کاْ قولفس کرداْ چونو گوهڌاْ:\"$3\".",
        "invalidtitle": "داسوݩ بی ٱرزشد",
        "invalidtitle-knownnamespace": "داسوݩ نادیار سی نوم جا \"$2\" و متن \"$3\"",
        "invalidtitle-unknownnamespace": "داسوݩ گٱن ڤا شوماراْ نومجا نادیار سی $1 و متن \"$2\"",
        "cannotlogoutnow-title": "ایسا ایساْ نٱترین بیائین ب دٱر",
        "cannotlogoutnow-text": "تا گاتی کاْ $1 ناْ ڤٱنین ڤا کار نٱترین بیائین ڤامیٛن.",
        "welcomeuser": "خوش ٱڤوڌین،$1!",
-       "welcomecreation-msg": "هساوتوݩ راسد ڤابی.\nب ڤیرتوݩ بۊ کاْ {{نوم دیارگٱ}} [[Special:Preferences|preferences]]  خوتۊناْ آلشد کونین.",
+       "welcomecreation-msg": "هساوتوݩ راسد ڤابی.\nب ڤیرتوݩ بۊ کاْ {{نوم دیارگٱ}} [[Special:Preferences|preferences]]  خوتوناْ آلشد کونین.",
        "yourname": "نوم کاریاری:",
        "userlogin-yourname": "نوم کاریاری",
        "userlogin-yourname-ph": "نوم کاریاریتۊناْ بزنین",
        "password-change-forbidden": "ایسا نٱترین رازیناْ گوڌٱشتن خوتۊناْ میٛن ای ڤیکی آلشد کونین.",
        "externaldberror": "اٛشتڤایی میٛن پاٛیڤٱند ڤا رسیناْگا اْتفاق ڤٱستاْ یا ایسا ساْلا یوناْ کاْ یٱ هساو کاریاری خارجی ز خوتۊناْ ب هاْنگوم سازی کونین نارین.",
        "login": "ڤامیٛن ٱڤوڌن",
-       "login-security": "نشۊن دیارکون خوتۊناْ آلشد کونین",
+       "login-security": "نشوݩ دیارکون خوتۊناْ آلشد کونین",
        "nav-login-createaccount": "ٱڤوڌن ڤامیٛن/راس کردن هساو کاریاری",
        "logout": "ز سامۊناْ درٱڤوڌن",
        "userlogout": "ز سامۊناْ درٱڤوڌن",
        "userlogin-resetpassword-link": "رازیناْ گوڤٱرتنتۊ ز ڤیرتۊن رٱهڌاْ؟",
        "userlogin-helplink2": "هومیاری کردن سی ڤامیٛن ٱڤوڌن",
        "userlogin-loggedin": "ایسا ایساْ چی {{GENDER:$1|$1}} ٱڤۊڌین ڤامیٛن. فورم داْڤۊنی ناْ ڤٱنین ڤا کار و چی یٱ کاریار دیٱ بیائین ڤا میٛن",
+       "userlogin-reauth": "ایسا ڤا ز نۉ بیائین ڤامیٛن سی یو کاْ دیار ڤابۊ ایسا {{GENDER:$1|$1}} هڌین.",
        "userlogin-createanother": "یٱ هساو کاریاری دیٱ راسد کونین",
-       "createacct-emailrequired": "تیرنشۊن ٱنجومانامٱ",
-       "createacct-emailoptional": "تیرنشۊن ٱنجومانامٱ",
-       "createacct-email-ph": "تیرنشۊن ٱنجوماناماْ تۊناْ بزنین.",
-       "createacct-another-email-ph": "تیرنشۊن ٱنجوماناماْ تۊناْ بزنین.",
+       "createacct-emailrequired": "تیرنشوݩ ٱنجومانامٱ",
+       "createacct-emailoptional": "تیرنشوݩ ٱنجومانامٱ",
+       "createacct-email-ph": "تیرنشوݩ ٱنجوماناماْ تۊناْ بزنین.",
+       "createacct-another-email-ph": "تیرنشوݩ ٱنجوماناماْ تۊناْ بزنین.",
        "createaccountmail": "یٱ رازیناْ گوڌٱشتن موڤٱقٱتی ناْ ڤاْنین ڤا کار و سی یٱ تیرنشوݩ ٱنجوماناماْ تیار ڤابیڌاْ باْسیس کونین.",
        "createaccountmail-help": "ایسا ترین یٱ هساو کاریاری سی یکی دیٱ راسد کونین بی یو کاْ رازیناْ گوڌٱشتنساْ ڤٱنین ڤا ڤیر.",
        "createacct-realname": "نوم راستٱکی(اٛژباری نی)",
        "createacct-reason": "دلیل",
        "createacct-reason-ph": "سی چ ایسا دارین یٱ هساو کاریاری دیٱر راسد اْکونین",
        "createacct-reason-help": "پاٛیغوم دیار کرداْ میٛن پاٛرستنوماْ راسد کردن هساو کاریاری",
-       "createacct-submit": "هساو خوتۊناْ راسد کونین",
+       "createacct-submit": "هساو خوتوناْ راسد کونین",
        "createacct-another-submit": "راسد کردن هساو کارياری",
-       "createacct-continue-submit": "هساو راسد کردن خوتۊناْ اٛڌاماْ بڌین",
-       "createacct-another-continue-submit": "هساڤ راسد کردن خوتۊناْ اٛڌاماْ بڌین",
+       "createacct-continue-submit": "هساو راسد کردن خوتوناْ اٛڌاماْ بڌین",
+       "createacct-another-continue-submit": "هساڤ راسد کردن خوتوناْ اٛڌاماْ بڌین",
        "createacct-benefit-heading": "{{SITENAME}}  ڤ دٱسد خٱلکی چی ایسا رٱڤٱندیاری ڤابیڌاْ.",
        "createacct-benefit-body1": "{{PLURAL:$1|آلشدکاری|آلشدکاریٱل}}",
        "createacct-benefit-body2": "{{PLURAL:$1|بٱلگاْ|بٱلگاْیٱل}}",
        "createacct-error": "خٱتا راس کردن هساو کاریاری",
        "createaccounterror": "نیبۊ هساو کاریاری راسد کونین:$1",
        "nocookiesnew": "هساو کاریاری راست ڤابی، ڤٱلی ایسا هاْنی نٱڤوڌیناْ ڤامیٛن.{{SITENAME}} کۊکیا ناْ سی ڤامیٛن ٱڤوڌن ناْ کاریارٱل اْڤٱناْ ڤا کار.\nکۊکیا ایسا ناکونشتگٱر ڤابیڌناْ.\nلوتف کونین کونشتگٱرسون کونین، اوسو ڤا یٱ نوم کاریاری و رازیناْ گوڌٱشتن دیٱ بیائین ڤامیٛن.",
+       "nocookieslogin": "{{SITENAME}} کۊکیٱل سی ڤامیٛن ٱڤوڌن ڤٱنس ڤاکار.\nکۊکیٱل ایسا ناکونشتگٱر ڤابیڌناْ.\nلوتف کونین ڤنوناْ کونشتگٱر کونین و ز نۉ تلاش کونین.",
        "nocookiesfornew": "هساو کاریاری راسد نٱڤابی، سی یو ناْ کاْ ایما نٱتریم سرچشماْساْ پوشت راست کاری کونیم.\nخاتر جٱم بۊین کاْ کۊکیٱل کونشتکار ڤابیناْ، ای بٱلگاْ ناْ ز نۉ سوڤار کونین و یٱ کاْرٱت دیٱ تلاش کونین.",
+       "createacct-loginerror": "هساو ڤا خۊڤی راسد ڤابی، ڤیٛلی ایسا نٱترین خودٱنجوم بیائین ڤامیٛن.لوتف کونین چونو [[Special:UserLogin|manual login]] بیائین ڤامیٛن.",
+       "noname": "ایسا یٱ نوم کاریاری خۊ تیار نٱکردیناْ.",
        "loginsuccesstitle": "ایسا ٱڤوڌین ڤامیٛن",
        "loginsuccess": "'''ایسا ٱڤوڌین ڤامیٛن {{SITENAME}} چی \"$1\".'''",
        "nosuchuser": "چونو کاریاری ڤا نوم \"$1\" نیڌس.\nنوم کاریاری ب هٱرف کۊچیر و گٱپ هٱساساْ , یا [[Special:CreateAccount|یٱ هساو کاریاری دیاْ راسد کونین]].",
        "wrongpasswordempty": "رازیناْ گوڌٱشتنتۊن هالی یا نادیار بی.\nمٱنمۊنداریم ز نۉ تلاش کونین.",
        "passwordtooshort": "رازیناْ گوڌاْشدن ایسا ڤا هٱدٱقل {{PLURAL:$1|1 کاراکتر|$1 کاراکترٱل}} داشداْ بۊ.",
        "passwordtoolong": "رازیناْ گوڌاْشدن ایسا نٱڤا  بیشتر ز {{PLURAL:$1|1 کاراکتر|$1 کاراکترٱل}} داشداْ بۊ.",
+       "passwordtoopopular": "نٱترین رازیناْ گوڌٱشتن دٱم دٱسد ناْ ڤٱنین ڤاکار. لوتف کونین رازیناْ گوڌٱشتنی ناْ ڤوردارین کاْ ب ڤیر کٱسی نٱرٱساْ.",
+       "passwordinlargeblacklist": "رازیناْ گوڌٱشتن ایسا میٛن نومگٱ رازیناْیٱل گوڌٱشتن دٱم دٱسداْ. لوتف کونین یٱ رازیناْ گوڌٱشتن دیٱ ناْ ڤوردارین.",
        "password-name-match": "رازیناْ گوڌٱشتنتوݩ ڤا نوم کاریاری فٱرخ داشداْ بۊ",
+       "password-login-forbidden": "ایسا نٱترین ای نوم کاریاری و رازیناْ گوڌٱشتن ناْ ڤٱنین ڤا کار.",
        "mailmypassword": "ز نۉ داڌن رازیناْ گوڌٱشتن",
        "passwordremindertitle": "رازیناْ گوڌٱشتن موڤٱقٱتی سی {{SITENAME}}",
        "passwordremindertext": "یٱ نفر (گاشا خوتوݩ، ز تیرنشوݩ آی پی $1) یٱ رازیناْ گوڌٱشتن تازاْ خاسداْ سی  {{SITENAME}} ($4). یٱ رازیناْ گوڌاْشتن موڤٱقٱتی سی کاریار\n\"$2\" راسد ڤابیڌاْ و میٛن\"$3\" لاهاڌاْ ڤابیڌاْ. ٱ ب دلتوݩ بۊ, ڤا رۉین میٛن ساموناْ و یٱ رازیناْ گوڌاْشتن تازاْ گولاْڤورچین کونین.\n\nٱر هو کٱسی کاْ چونو چی خاسداْ بۊ کاْس دیٱری بۊ, یا ٱر ایسا رازیناْ گوڌٱشتنتوݩ ب ڤیرتوݩ بۊ و سی یٱ گات تیلدار خاین هوناْ آلشد کونین، ایسا ڤا ای پاٛیغوم ناْ باْنین کنار و هٱمچونو هٱمو رازیناْ گوڌٱشتن دیندایی خوتوناْ ڤٱنین ڤا کار.",
        "noemail": "هیژ تیرنشوݩ ٱنجوماناماْیی سی کاریار \"$1\" زٱفت نٱڤابیڌاْ.",
-       "passwordsent": "یه رمز تازه ارسال وابید به نشانی امیل ثبت وابده سی \"$1\".\nلطفا بعد از دریافت آن داخل سیستم بوین.",
+       "noemailcreate": "ایسا ڤا یٱ تیرنشوݩ جادیار داشداْ بۊین",
+       "passwordsent": "یٱ رازیناْ گوڌٱشتن باْسی ڤابی ب تیرنشوݩ ٱنجوماناماْیی کاْ سٱڤت کردیناْ \"$1\".\nخاهشت اْکونیم نیا گرهڌنس بیائین ڤامیٛن.",
+       "blocked-mailpassword": "ایسا نٱترین ڤا تیرنشوݩ آی پی خوتوݩ ڤیرایشد کونین، سی نیاگری ز سۊاٛستفاڌاْ ز سلا ٱڤوردن سی ڤاجوسد رازیناْ گوڌٱشتنتوݩ ز ای آی پی ناْ ناراْ.",
        "eauthentsent": "یٱ ٱنجوماناماْ پوشت راست کردنی سی یٱ تیرنشوݩ ڤیجاْ بیٛسی ڤابیڌاْ.\nنیا یو کاْ یٱ ٱنجوماناماْ دیٱر سی هساوتوݩ بیٛسی ڤابۊ، ایسا ڤا نیا رٱدیارکونی ناْ ز ٱنجوماناماْ بگرین، سی یو کاْ هساو ایسا ز راستی پوشت راست ڤابۊ.",
+       "throttled-mailpassword": "یٱ رازیناْ گوڌٱشتن ز نۉ سیتو بیٛسی ڤابیڌاْ، میٛن {{PLURAL:$1|ساعت|$1 ساعتٱل}}.\nسی نیاگری ز ٱزیٱت ڤابیڌن، فٱقٱت یٱ رازیناْ گوڌٱشتن ز نۉ بیٛسی ڤابیڌاْ سی ٱنجوماناماْتوݩ میٛن {{PLURAL:$1|ساعت|$1 ساعتٱل}} .",
+       "mailerror": "خٱتا میٛن باْسی کردن ٱنجوماناماْ:$1",
+       "acct_creation_throttle_hit": "ڤانیٱرٱل ای ڤیکی کاْ تیرنشوݩ آی پی ایسا ناْ ڤٱندناْ ڤا کار میٛن $2 دیندایی{{PLURAL:$1|یٱ هساو کاریاری|$1 هساو کاریاری}} ناْ راسد کردناْ، کاْ بیشترین ٱندازاْ موجاز سیسوݩ میٛن هٱمو گات بیڌاْ.\nسی هٱمی یو، ڤانیٱرٱلی کاْ ای تیرنشوݩ آی پی ناْ ڤٱندناْ ڤا کار ایساْ نٱترن یٱ هساو کاریاری تازاْ راسد کونن.",
+       "emailauthenticated": "تیرنشوݩ ٱنجوماناماْتوݩ میٛن $2 سی $3 پوشت راسد کاری ڤابی.",
+       "emailnotauthenticated": "تیرنشوݩ ٱنجوماناماْتوݩ هٱنی پوشت راسدکاری نٱڤٱبیڌاْ.\nهٱنی ٱنجوماناماْیی سی چیٱلی کاْ نیاتونن بیٛسی نٱڤابیڌاْ.",
+       "noemailprefs": "سی رٱڤٱندن چونو چی یٱ تیرنشوݩ ٱنجوماناماْ میٛن چیا خوتوݩ تیار کونین.",
+       "emailconfirmlink": "تیرنشوݩ ٱنجوماناماْ خوتوناْ پوشت راسدکاری کونین.",
+       "invalidemailaddress": "تیرنشوݩ ٱنجوماناماْیی کاْ داڌیناْ خۊ نی، سی یو کاْ فورمٱتس گٱناْ.\nلوتف کونین یٱ تیرنشوݩ ڤا فورمٱت خۊ بزنین یا جاساْ هالی بیٛنین.",
+       "cannotchangeemail": "نٱترین تیرنشوݩ ٱنجوماناماْ هساو میٛن ای ڤیکی ناْ آلشدکاری کونین",
        "emaildisabled": "ای دیارگٱ نٱتٱراْ سیتوݩ ٱنجوماناماْ بفرشناْ",
        "accountcreated": "هساو راسد ڤابی",
-       "createaccount-title": "هساڤ سي {{SITENAME}} راسد ڤابي",
+       "accountcreatedtext": "هساو کاریاری سی  [[{{ns:کاریار}}:$1|$1]] ([[{{ns:چٱک چناْ کاریار}}:$1|چٱک چناْ]]) راسد ڤابیڌاْ.",
+       "createaccount-title": "هساو سی {{SITENAME}} راسد ڤابی",
+       "createaccount-text": "یٱ نفر ڤا ٱنجوماناماْ ایسا یٱ هساو کاریاری میٛن  {{SITENAME}} ($4) ڤا نوم\"$2\" راسد کرداْ، و رازیناْ گوڌٱشتنس یوناْ:\"$3\"\nایسا ڤا رۉین ڤامیٛن و رازیناْ گوڌٱشتن خوتوناْ آلشد کونین.\nٱر چونو هساو اٛشتاڤایی راسد ڤابیڌاْ کاری ڤا ای پاٛیغوم ناشداْ بۊین.",
+       "login-throttled": "ایسا تا ایساْ سی ڤامیٛن ٱڤوڌن غٱلٱڤاْ تلاش کردیناْ.\n$1 لوتف کو یاْتی دٱس ڤاڌار و ز نۉ تلاش کو.",
+       "login-abort-generic": "ٱڤوڌن ڤامیٛنتو خراو ڤابی یا نتیجاْ ناشت.",
+       "login-migrated-generic": "هساو کاریاریتوݩ جا ب جا ڤابیڌاْ، و نوم کاریاری ایسا دٱ میٛن ڤیکی نیڌس.",
        "loginlanguagelabel": "زڤون:$1",
+       "suspicious-userlogout": "خاستتوݩ سی رٱهڌن ب دٱر ز ساموناْ رٱڌ ڤابی چونو کاْ دیاراْ چونو خاستی ڤا یٱ یا یٱ پوروکسی میٛنجقاگر بیٛسی ڤابیڌاْ بۊ",
+       "createacct-another-realname-tip": "نو راستٱکی دل ب خائیاْ.\nٱر بزنینس گات ڤورگٱشتن ب آریٛنگٱلتوݩ و ڤورگٱشت هونو ب ایسا نوم راستٱکی توݩ ناْ ڤٱناْ ڤا کار.",
        "pt-login": "ڤامین ٱڤوڌن",
        "pt-login-button": "ڤامیٛن ٱڤوڌن",
+       "pt-login-continue-button": "پوشت سریٱک بیائین ڤامیٛن",
        "pt-createaccount": "راسد کردن هساو کاریاری",
-       "pt-userlogout": "ز سامۊناْ درٱڤوڌن",
-       "changepassword": "آلشد کردن رازينإ گوڤأرتن",
+       "pt-userlogout": "ز ساموناْ درٱڤوڌن",
+       "php-mail-error-unknown": "خٱتا نادیار د آلشتگٱر PHP's mail()",
+       "user-mail-no-addy": "سی بیٛسی کردن ٱنجوماناماْ بی یو کاْ یٱ تیرنشوݩ ٱنجوماناماْیی بۊ تلاش ڤابی",
+       "user-mail-no-body": "ایسا تلاش کردین یٱ ٱنجوماناماْ ڤا میٛنوناْ کۊتال یا هالی بیٛسی کونین.",
+       "changepassword": "آلشد کردن رازیناْ گوڌٱشتن",
+       "resetpass_announce": "سی تٱموم کردن ڤامیٛن ٱڤوڌن، ایسا ڤا یٱ رازیناْ گوڌٱشتن تازاْ ناْ بزنین.",
        "resetpass_header": "رازیناْ گوڌاْشتن هساو ناْ آلشد کونین",
-       "oldpassword": "رازينإ گوڤأرتن ديندایي:",
-       "newpassword": "رازينإ گوڤأرتن تازأ:",
-       "retypenew": "تایپ دوباره رمز:",
-       "botpasswords": "رازينإیل گوڤأرتن بوتا",
+       "oldpassword": "رازیناْ گوڌٱشتن دیندایی:",
+       "newpassword": "رازیناْ گوڌٱشتن تازاْ:",
+       "retypenew": "رازیناْ گوڌٱشدن خوتۊناْ ز نۉ بزنین:",
+       "resetpass_submit": "رازیناْ گوڌٱشتن توݩ بزنین بیائین ڤامیٛن",
+       "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-needsreset": "(ڤا ز نۉ رازیناْ گوڌٱشتن باْنین)",
        "botpasswords-label-appid": "نوم بوت:",
        "botpasswords-label-create": "راس كردن",
        "botpasswords-label-update": "ب هنگوم سازی",
-       "botpasswords-label-cancel": "أنجومشيڤ کردن",
+       "botpasswords-label-cancel": "ٱنجومشیڤ کردن",
        "botpasswords-label-delete": "پاکسا کردن",
-       "botpasswords-label-resetpassword": "ز نۉ داڌن رازينإ گوأرتن",
-       "botpasswords-label-grants-column": "داڌإ ڤابي",
-       "resetpass-submit-loggedin": "آلشد کردن رازينإ گوڤأرتن",
-       "resetpass-submit-cancel": "أنجومشيڤ کردن",
-       "passwordreset": "ز نۉ داڌن رازیناْ گوڤٱرتن",
-       "passwordreset-username": "نوم کارياري",
-       "passwordreset-domain": "پوشگر",
-       "passwordreset-email": "تيرنشۈن أنجومانامأ",
+       "botpasswords-label-resetpassword": "ز نۉ داڌن رازیناْ گوڌٱشتن",
+       "botpasswords-label-grants": "هوقۊق کونشتگٱر ڤابیڌنی:",
+       "botpasswords-label-grants-column": "داڌاْ ڤابی",
+       "botpasswords-bad-appid": "نوم\"$1\" سی بوت خۊ نی.",
+       "botpasswords-insert-failed": "اْزاف کردن نوم \"$1\" سی بوت ناخوش سرٱنجوم بی. آیا هاْنی اْزاف نٱڤابیڌاْ?",
+       "botpasswords-update-failed": "ب هنگوم سازی نوم \"$1\" سی بوت ناخوش سرٱنجوم بی. آیا هاْنی پاکسا نٱڤٱبیڌاْ?",
+       "botpasswords-created-title": "رازیناْ گوڌٱشتن سی بوت راسد ڤابی",
+       "botpasswords-created-body": "رازیناْ گوڌٱشتن سی \"$1\" {{GENDER:$2|کاریار}} \"$2\" راسد ڤابی.",
+       "botpasswords-updated-title": "رازیناْ گوڌٱشتن بوت ب هنگوم سازی ڤابی",
+       "botpasswords-updated-body": "رازیناْ گوڌٱشتن سی \"$1\" {{GENDER:$2|کاریار}} \"$2\" ب هنگوم ساز ڤابی.",
+       "botpasswords-deleted-title": "رازیناْ گوڌٱشتن سی بوت پاکسا ڤابی",
+       "botpasswords-deleted-body": "رازیناْ گوڌٱشتن سی \"$1\" {{GENDER:$2|کاریار}} \"$2\" پاکسا ڤابی.",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider نیڌس.",
+       "botpasswords-restriction-failed": "دٱسگریٱل رازیناْ گوڌٱشتن روبات نیا ای ڤامیٛن ٱڤوڌن ناْ اْگراْ.",
+       "botpasswords-invalid-name": "نوم کاریاری تیار ڤابیڌاْ سٱڤاگٱر رازیناْ گوڌٱشتن روباتی ناراْ(\"$1\").",
+       "botpasswords-not-exist": "کاریار\"$1\" رازیناْ گوڌٱشتن روباتی کاْ نومس\"$2\" بۊ ناراْ.",
+       "botpasswords-needs-reset": "رازیناْ گوڌٱشتن روباتی \"$2\" سی {{GENDER:$1|کاریار}}\"$1\" ڤا ز نۉ میزونکاری ڤابۊ.",
+       "botpasswords-locked": "ایسا نٱترین ڤا یٱ رازیناْ گوڌٱشتن بوت بیائین ڤامیٛن سی یو کاْ هساوتون قولف ڤابیڌاْ.",
+       "resetpass_forbidden": "نیبۊ رازیناْیٱل گوڌٱشتن ناْ آلشد کونین",
+       "resetpass_forbidden-reason": "نٱترین رازیناْیٱل گوڌٱشتن سی $1 آلشد کونین.",
+       "resetpass-no-info": "ایسا سی یو کاْ ب ای بٱلگاْ دٱسرسی داشداْ بۊین ڤا بیائین ڤامیٛن.",
+       "resetpass-submit-loggedin": "آلشد کردن رازیناْ گوڌٱشتن",
+       "resetpass-submit-cancel": "ٱنجومشیڤ کردن",
+       "resetpass-wrong-oldpass": "رازیناْ گوڌٱشتن موڤٱقٱت یا ایسنی لیش.\nگاشا ایسا هٱمیساْ رازیناْ گوڌٱشتنتوناْ آلشد کرداْ بوین یا دٱرخاست یٱ رازیناْ گوڌٱشتن موڤٱقٱت دیٱ کرداْ بۊین.",
+       "resetpass-recycled": "لوتف کونین رازیناْ گوڌٱشتن خوتوناْ آلشد کونین سی یٱ رازیناْ گوڌٱشتن غیٛر ز رازیناْ گوڌٱشتن ایسنی.",
+       "resetpass-temp-password": "رازیناْ گوڌٱشتن موڤٱقٱت:",
+       "resetpass-abort-generic": "آلشد کردن رازیناْ گوڌٱشتن ڤا یکی ز دیندادیسٱل ٱنجومشیڤ ڤابیڌاْ.",
+       "resetpass-expired": "گات رازیناْ گوڌٱشتن ایسا خلاس ڤابیڌاْ. لوتف کونین یٱ رازیناْ گوڌٱشتن تازاْ سی ڤامیٛن ٱڤوڌن بیٛنین.",
+       "resetpass-validity": "رازیناْ گوڌٱشتن ایسا خۊ نیڌ:$1\n\nلوتف کونین یٱ رازیناْ گوڌٱشتن تازاْ سی ڤامیٛن ٱڤوڌن بیٛنین.",
+       "passwordreset": "ز نۉ داڌن رازیناْ گوڌٱشتن",
+       "passwordreset-text-one": "سی ڤاجوست رازیناْ گوڌٱشتنتوݩ ای فورم ناْ پور کونین.",
+       "passwordreset-text-many": "{{PLURAL:$1|سی گرهڌن یٱ رازیناْ گوڌٱشتن موڤٱقٱت ز ٱنجوماناماْ، یکی ز هوناْیٱل ناْ پور کونین.}}",
+       "passwordreset-username": "نوم کاریاری",
+       "passwordreset-domain": "پۊشگر",
+       "passwordreset-email": "تیرنشوݩ ٱنجومانامٱ",
        "passwordreset-emailtitle": "جوزيات هساو میٛن {{SITENAME}}",
-       "passwordreset-invalidemail": "تيرنشۈن أنجومانامأ نادوروسد",
-       "changeemail-oldemail": "تيرنشۈن أنجومانامإ ايسني",
-       "changeemail-newemail": "تيرنشۈن أنجومانامإ تازأ:",
-       "changeemail-none": "(هيش كوم)",
-       "changeemail-password": "رازينإ گوڤأرتن {{SITENAME}} ایسا:",
-       "changeemail-submit": "آلشد کردن أنجومانامأ",
-       "resettokens": "ز نۉ کردن نشۈنإیل",
+       "passwordreset-emailelement": "نوم کاریاری: \n$1\n\nرازیناْ گوڌٱشتن موڤٱقٱتی: \n$2",
+       "passwordreset-invalidemail": "تیرنشوݩ ٱنجوماناماْ نادوروسد",
+       "changeemail": "آلشد کردن یا ڤورداشتن تیرنشوݩ ٱنجوماناماْ",
+       "changeemail-oldemail": "تیرنشوݩ ٱنجوماناماْ ایسنی:",
+       "changeemail-newemail": "تیرنشوݩ ٱنجوماناماْ تازاْ:",
+       "changeemail-none": "(هیش كوم)",
+       "changeemail-password": "رازیناْ گوڌٱشتن {{SITENAME}} ایسا:",
+       "changeemail-submit": "آلشد کردن ٱنجوماناماْ",
+       "changeemail-nochange": "لوتف کونین یٱ تیرنشوݩ ٱنجوماناماْ تازاْ بزنین.",
+       "resettokens": "ز نۉ کردن نشوناْیٱل",
        "resettokens-text": "اؽسا تٱرین شناساننداٛیٱلؽ کاْ اجازاٛ دٱسرٱسی ڤاْ قٱرڌؽ داداٛیٱل سیخؤاٛی مؽنڌار ڤا هساوتۊن ناْ اْڌاْ دوکرتشناسی کونین.\nؤخڌؽ ڤا ای کارناْ ٱنجوم ڤڌین کاْ تٱساڌوفٱن هونوناْ ڤا کسؽ ڤاْ هومبٱشنی نهاڌین یا کسؽ ڤاْمؽ ڤیڌ ڤاْ هساو اؽسا",
        "resettokens-no-tokens": "هیچ شناسانٱنڌاٛئی سی دوکرتشناسی نؽڌا",
-       "resettokens-tokens": "نشۈنإیل:",
-       "resettokens-token-label": "$1 (أرزایشت تازأ: $2)",
+       "resettokens-tokens": "نشوناْیٱل:",
+       "resettokens-token-label": "$1 (ٱرزایشت تازاْ: $2)",
        "resettokens-watchlist-token": "شناسانٱنڌاٛ خوراک ڤباٛی [[Special:Watchlist|آلشڌ بٱلٛگیٱلؽ کاْ دیناگری اْکونین]] (ٱتم/آراْس‌اْس)",
        "resettokens-done": "دوکرتشناسی شناسانٱنڌاٛیٱل",
        "resettokens-resetbutton": "دوکرتشناسی شناسانٱنڌاٛیٱل دزاْ آڤیڌاْ",
        "bold_tip": "متن گٱپ نما",
        "italic_sample": "متن ایتالیک",
        "italic_tip": "متن ایتالیک",
-       "link_sample": "داسۊن هومپاٛیڤٱند",
+       "link_sample": "داسوݩ هومپاٛیڤٱند",
        "link_tip": "هومپاٛیڤٱند داخلی",
-       "extlink_sample": "http://www.example.com داسۊن هومپاٛیڤٱند",
+       "extlink_sample": "http://www.example.com داسوݩ هومپاٛیڤٱند",
        "extlink_tip": "(ڤٱن ڤا ڤیرت http:// prefix)\nهومپاٛیڤٱند  خارجی",
        "headline_sample": "سرخٱت متن",
        "headline_tip": "ریتراز 2 سرخٱت",
        "sig_tip": "اْمزا ایسا ڤا گاتدیساْ",
        "hr_tip": "خٱت ٱوفوتی (کم ڤٱنین ڤا کار)",
        "summary": "چکستٱ:",
-       "subject": "داسۈن",
+       "subject": "داسوݩ",
        "minoredit": "یو یٱ ڤیرایشد کۊچیراْ",
        "watchthis": "پاٛگری ای بٱلگاْ",
        "savearticle": "بٱلگاْ اْمایاْ ڤابۊ",
        "publishpage-start": "تیژنیڌن بٱلٛگاْ....",
        "publishchanges-start": "تیژنیڌن آلشڌکاریٱل",
        "preview": "پيش ساٛیل",
-       "showpreview": "نشۊن دائن پیش ساٛیل",
-       "showdiff": "نشۊن دائن آلشدا",
+       "showpreview": "نشوݩ دائن پیش ساٛیل",
+       "showdiff": "نشوݩ دائن آلشدا",
        "anoneditwarning": "<strong>ب ڤیرتوݩ بۊ:</strong> ایسا هاْنی نٱڤۊڌین ڤامین. تیرنشوݩ آی پی ایسا سی هر گاتی کاْ آلشدکاری کونین سی کول خٱلک دیاراْ. ٱر <strong>[$1 رۉین ڤامین]</strong> یا <strong>[$2 یٱ هساو کاریاری راسد کونین]</strong>، آلشدکاریٱل ایسا ڤا نوم کاریاری خوتوݩ دیاری اْبۊ و یو سی ایسا بیتراْ.",
+       "missingcommenttext": "لوتفٱن یٱ کامنت بیٛنین.",
+       "missingcommentheader": "<strong>ب ڤیر ڤٱن:</strong> ایسا هیٛنی یٱ داسوݩ سی ای کامنت کۊ نکردیناْ.\nٱر ایسا یٱ کرٱت دٱ ری \"$1\" بپۊرنین، ڤیرایشت کاریوݩ هالی کۊ اْبۊ.",
        "summary-preview": "پیش ساٛیل آلشدکاری خولاساْ:",
+       "subject-preview": "پیش ساٛیل داسوݩ:",
+       "blockedtitle": "کاریار نیاگری ڤابی.",
        "blockedtext": " \"'''دٱسرسی نوم کاریاری یا تیرنشوݩ آی پی ایسا نیاگری ڤابیڌاْ.'''\n $1 چونو کرداْ.\nدلیلس یو بیڌاْ: $2''\n* شورۊ نیاگری: $8\n* مجال تٱموم ڤابیڌن نیاگری: $6\n* کاریاری کاْ ڤا نیاگری ڤابیڌاْ بۊ: $7\nایسا تاْرین ڤا $1 یا یکی ز [[{{MediaWiki:Grouppage-sysop}}|سٱردیڤۊنکاروݩ]] تماس بگرین و ڤاسوݩ گٱپ بزنین.\nب ڤیرتوݩ بۊ کاْ ایسا ناْترن «ب ای کاریار ٱنجوماناماْ» بفرشنین مٱر تیرنشوݩ جادیاری ناْ میٛن  [[Special:Preferences|چیا ٱسلی کاریاری]] خوتوݩ سٱبت کرداْ بۊین.\nتیرنشوݩ IP ایسا $3 و شوماراْ نیاگری ڤابیڌاْ ایسا $5 اْ. لوتفٱن چونو شوماراْ یٱلی ناْ میٛن پاٛی جۊریٱل توݩ ب ڤیرتوݩ بۊ.",
        "blockednoreason": "هیژ دلیلی سیس نی",
+       "whitelistedittext": "$1 لوتف کونین بٱلگاْیٱل ناْ آلشدکاری کونین.",
        "nosuchsectiontitle": "بٱئرجا دیاری نیکوناْ",
-       "loginreqtitle": "ڤامإن إڤوڌن لازومإ",
-       "loginreqlink": "ڤامین ٱڤوڌن",
-       "accmailtitle": "رازينإ گوڤأرتن فرشناڌإ ڤابيڌإ",
-       "newarticle": "(تازه)",
+       "loginreqtitle": "ڤامیٛن ٱڤوڌن لازوماْ.",
+       "loginreqlink": "ڤامیٛن ٱڤوڌن",
+       "loginreqpagetext": "$1 لوتف کونین بٱلگاْیٱل دیٱر ناْ ساٛیل کونین.",
+       "accmailtitle": "رازیناْ گوڌٱشتن باْسی ڤابیڌاْ",
+       "newarticle": "(تازاْ)",
        "newarticletext": "ایسا ز دین یٱ هومپاٛیڤٱندی هڌین کاْ نیڌس. سی رٱڤٱندیاری بٱلگاْ شورۊ کونین میٛن ای جٱڤاْ داٛڤۊنی بنڤیسین(سی دۊنسدن بیشدر سئیل [$1]کونین).\nیر ایسا سی اْشتڤاکارش ايچونین، دوگماْ رٱهڌن ڤاپوشد نٱ بپۊرنین.",
        "noarticletext": " ایساْ ای بٱلگاْ نڤشداْیی ناراْ، ایسا تاْرین [[Special:Search/{{PAGENAME}}داسۊن ای بٱلگاْ نٱ میٛن بٱلگاْیٱل دیٱری پاٛی جۊری کونین]] یا [{{fullurl:{{FULLPAGENAME}}|action=edit}} ای بٱلگاْ نٱ آلشدکاری کونين].",
        "noarticletext-nopermission": " ایساْ ای بٱلگاْ نڤشداْیی ناراْ، ایسا تاْرین [[Special:Search/{{PAGENAME}}داسۊن ای بٱلگاْ نٱ میٛن بٱلگاْیٱل دیٱری پاٛی جۊری کونین]] یا [{{fullurl:{{FULLPAGENAME}}|action=edit}} ای بٱلگاْ نٱ آلشد کونين].",
        "continue-editing": "رۉ مئن راستاگاْ آلشدکاری",
        "editing": "ب هال و بال آلشدکاری $1",
        "creating": "راسد کردن $1",
-       "editingsection": "ب هال و بال آلشدکاری $1 (بٱرجا)",
+       "editingsection": "ب هال و بال آلشدکاری $1 (بٱئرجا)",
+       "editingcomment": "ب هال و بال آلشدکاری $1 (بٱئرجا)",
+       "editconflict": "ری ب ری کاری میٛن ڤیرایشت:$1",
        "yourtext": "متن ايسا",
        "storedversion": "ڤانیٱری کۊ ڤابیڌاْ",
-       "yourdiff": "فرخ",
-       "copyrightwarning": "لطفاً دقت کنین که درنظر گریده ابوه که همه شراکتهای ایسا  {{SITENAME}} تحت «$2» منتشر ابون ).\n\n\n(سی دیدن  جزئیات بیشتر به $1 برین\n\nایر نه خوین نوشته‌هاتو بی‌رحمانه اصلاح بوه و به دلخواه ارسال بوه، ایچو نفرستن.<br />\nدرضمن ایسادارین به ایما قول ادین که خودتو یونه نوشتین یا هونه زه یک منبع آزاد با مالکیت عمومی یا مثل هو ورداشتین. '''کارهای دارای کارهای دارای حق کپی رایت را بی‌اجازه نفرستین!'''',",
+       "yourdiff": "فٱرخ",
+       "copyrightwarning": "ب ڤیرتوݩ بۊ کاْ تٱموم هومیاریٱل ایسا   {{SITENAME}} زیرناْخیز «$2» دٱرتیچ اْبوݩ).\n\n(سی دیڌن  جوزئیات بیشتر ز $1 رۉین\n\nٱر نیخاین نڤشداْیٱلوݩ گٱن آلشدکاری نٱڤبۊن و دل ب خایی باْسی ڤابۊن، ایچو باْسی سوݩ نٱکونین.<br />\nهٱنی ٱم ایسا دارین بیما قۉل اْڌین کاْ خوتوݩ یوناْ نڤشدیناْ یا هوناْ ز یٱ سرچشماْ آزاڌ ڤا مالکیت خٱلکمٱند یا چی هو ڤورداشتین ساْ. '''چیا ناْ بی موجٱڤز و بی سلا کوپی رایت باْسی نٱکونین!''''",
+       "copyrightwarning2": "ب ڤیرتوݩ بۊ کاْ تٱموم هومیاریٱل ایسا {{SITENAME}} زیرناْخیز «$2» دٱرتیچ اْبوݩ).\n\n(سی دیڌن  جوزئیات بیشتر ز $1 رۉین\n\nٱر نیخاین نڤشداْیٱلوݩ گٱن آلشدکاری نٱڤبۊن و دل ب خایی باْسی ڤابۊن، ایچو باْسی سوݩ نٱکونین.<br />\nهٱنی ٱم ایسا دارین بیما قۉل اْڌین کاْ خوتوݩ یوناْ نڤشدیناْ یا هوناْ ز یٱ سرچشماْ آزاڌ ڤا مالکیت خٱلکمٱند یا چی هو ڤورداشتین ساْ. '''چیا ناْ بی موجٱڤز و بی سلا کوپی رایت باْسی نٱکونین!''''",
        "templatesused": "{{PLURAL:$1|چۊاْ|چۊاْیٱل}} ڤا کار ڤٱسداْ میٛن ای بٱلگاْ:",
        "templatesusedpreview": "قالڤٱل یا اولگۊیٱل ڤاْ کار رٱئڌاْ مؽن ای نهانماو",
        "template-protected": "(پٱر و پیم ڤابیڌٱ)",
        "template-semiprotected": "(نسم نیماْ پٱر و پیم ڤابیڌاْ)",
        "hiddencategories": "ای بٱلگاْ یکی ز ٱندوما {{PLURAL:$1|1 hidden category|$1 hidden categories}} اْ:",
        "nocreatetext": "{{SITENAME}}قابلیت درست کردن صفحات تازه را محدود کرده‌. ترین برگردین و صفحه‌ موجود را اصلاح کنین یا اینکه  [[Special:UserLogin|به سیستم داخل بوین یا حساب کاربری درست کنین]].",
+       "sectioneditnotsupported-title": "ایسا سیٛلا آلشدکاری بٱئرجا ناْ نارین.",
        "permissionserrors": "پٱلاْ:اْجازاْ ڤگرا",
        "permissionserrorstext-withaction": "ایسا سی نیاگری $2 ساٛلا\nنارین {{PLURAL:$1|دلیل|دلیلٱل}}:",
        "recreate-moveddeleted-warn": "'''هوشڌار: ایسا هنؽ سٱرزاْنۊ بٱلٛگی ناْ ؤرکل اْکونین کاْ نهاتٱرپاکسا آڤیڌاْ '''مؽن فرگ داشڌ ڤۊهین کاْ آلشڌ ای بٱلٛگاْ کارؽ دوروساْ هؽڌا آ نٱ. نمایاٛ پاکسا  مؽنڌار ڤا ای بٱلٛگاْ سی راهٱتی کار ڤا دینا آؤوڌاْ",
        "moveddeleted-notice": "ای بٱلٛیاْ پاکسا آڤیڌاْ،ؤرداوناْ سیاهؽ پاکسا،هناڌاری ۉ کلٛ کرڌن ای بٱلٛیاْ ؤرتی نهاڌ آڤیڌاْ",
+       "log-fulllog": "دیڌن هٱماْ پهرستنوماْیٱل",
+       "edit-hook-aborted": "پژار ڤا قولاڤ لٱق آڤیڌ\nاشکافنیڌنی سی هؽ داڌ نڤیڌ",
+       "edit-gone-missing": "نیبۊ ای بٱلگاْ ناْ ب هنگوم کونین.\nچونو ب نٱزٱر اْیا کاْ هو پاکسا ڤابیڌاْ.",
        "edit-conflict": "ری ب ری کاری میٛن ڤیرایشت.",
+       "postedit-confirmation-created": "بٱلگاْ راسد ڤابی.",
+       "postedit-confirmation-restored": "بٱلگاْ ز نۉ کۊ ڤابی.",
+       "postedit-confirmation-saved": "ڤیرایشتتوݩ کۊ ڤابی.",
+       "postedit-confirmation-published": "ڤیرایشتتوݩ دٱرتیچ ڤابی",
+       "edit-already-exists": "نٱترین یٱ بٱلگاْ تازاْ راسد کونین.\nهو میٛنسدی هڌس.",
+       "defaultmessagetext": "متن پاٛغوم پیش فٱرز",
+       "content-failed-to-parse": "ز یٱک تیچستن چیا میٛن $2 میٛن مودل $1:$3",
+       "invalid-content-data": "دونسمٱندی میٛنوناْ نادیار",
+       "editpage-invalidcontentmodel-title": "میٛنوناْ مودل هامینداری نیبۊ",
+       "editpage-invalidcontentmodel-text": "میٛنوناْ مودل \"$1\" هامینداری نیبۊ",
+       "editpage-notsupportedcontentformat-title": "شیڤات میٛنوناْ مودل هامینداری نیبۊ",
        "slot-name-main": "سرتال",
-       "content-model-wikitext": "ڤيکي تکست",
-       "content-model-javascript": "جاڤا إسکريپت",
-       "content-json-empty-object": "داسۊن هالی",
+       "content-model-wikitext": "ڤیکی تکست",
+       "content-model-text": "نفشداْ ساڌاْ",
+       "content-model-javascript": "جاڤا اْسکریپت",
+       "content-json-empty-object": "داسوݩ هالی",
        "content-json-empty-array": "آرایاْ هالی",
+       "template-loop-category": "بٱلگاْیٱلی کاْ خٱتا هٱلقاْ چۊاْ دارن",
        "undo-failure": "سی نڤیڌن سلۊکی ڤا آلشڌکاریٱل مؽنجخائی ای آلشڌکاریناْ نؽڤۊ بؽ هرنڳ کرڌ",
+       "undo-nochange": "چونو کاْ دیار ای آلشدکاری سرییٛ خومسا ڤابیڌاْ.",
+       "undo-summary": "ٱنجومشیڤ ڤابیڌاْن ڤانیٱری $1 ڤا [[Special:Contributions/$2|$2]] ([[User talk:$2|چٱک چناْ]])",
+       "undo-summary-username-hidden": "ٱنجومشیڤ کردن ڤانیٱری $1 کاْ ڤا یٱ کاریار نادیٱر ٱنجوم ڤابیڌاْ.",
        "viewpagelogs": "دیاری کردن پهرستنۊماْیٱل ای بٱلگاْ",
-       "currentrev": "نسخه جاری",
+       "nohistory": "هیژ ڤیرگار ڤیرایشتی سی ای بٱلگاْ نیڌ.",
+       "currentrev": "آخری ڤانیٱری",
        "currentrev-asof": "آخرین ڤانیٱری جۊر $1",
        "revisionasof": "ڤانیٱری چی $1",
        "revision-info": "نوسقاْ ڤانیٱری ڤابیڌاْ جۊر $1 ڤا $2",
        "cur": "ایسنی",
        "next": "نيایي",
        "last": "دیندایی",
-       "page_first": "اولین",
+       "page_first": "ٱڤلی",
        "page_last": "آخری",
        "histlegend": "گولاْڤورچین کردن سٱڤا: رو رادیۉ جٱڤاْیٱل ڤانیٱری نشۊن باْنین سی کنار یٱک ناهاڌن و اْمتیاز داڌن و یا میٛن دوگماْیٱل ناْ سی موساڤقاْ بپۊرنین .<br />\n<br />\nمیرات: <strong>({{int:cur}})</strong> = فٱرخ ڤا نوسقاْ ایسنی, <strong>({{int:last}})</strong> =فٱرخ ڤا نوسقاْ دیندایی, <strong>{{int:minoreditletter}}</strong> = هیرداْ ڤیرایشت.",
        "history-fieldset-title": "پاٛی جۊری سی ڤانیٱریٱل",
+       "history-show-deleted": "فٱقٱت ڤانیاری پاکسا ڤابیڌاْ",
        "histfirst": "دینداتری",
        "histlast": "تازاْترين",
        "historysize": "({{PLURAL:$1|1 بایت|$1 بایتٱل}})",
-       "historyempty": "(هالي)",
+       "historyempty": "(هالی)",
        "history-feed-title": "ؤیرگارکاْ آلشڌکاریٱل",
        "history-feed-description": "ؤرگارکاْ آلشڌکاریٱل ای بٱلٛگاْ مؽن ڤیکی",
        "history-feed-item-nocomment": "$1 میٛن $2",
+       "history-edit-tags": "آلشدکاری سردیسٱل ڤانیاریٱل گولاْڤورچین ڤابیڌاْ.",
+       "rev-deleted-comment": "(خولاساْ آلشدکاری پاکسا ڤابی)",
+       "rev-deleted-user": "(نوم کاریاری پاکسا ڤابیڌاْ)",
        "rev-delundel": "آلشد هال و بال ديڌن",
-       "rev-showdeleted": "دياري کردن",
-       "revdelete-show-file-submit": "هأرإ",
+       "rev-showdeleted": "دیاری کردن",
+       "revisiondelete": "پاکسا کردن/زنداْ کردن ڤانیٱریٱل",
+       "revdelete-nooldid-title": "ڤانیٱری نادیار",
+       "revdelete-no-file": "جانیا تیار ڤابیڌاْ ڤوجۊڌ ناراْ.",
+       "revdelete-show-file-submit": "هٱراْ",
+       "revdelete-hide-text": "متن ڤانیٱری",
+       "revdelete-hide-image": "میٛنۊناْیٱل جانیا ناْ قام کو",
+       "revdelete-hide-comment": "خولاساْ آلشدکاری",
+       "revdelete-hide-user": "نوم کاریاری آلشدکار/تیرنشوݩ آی پی",
+       "revdelete-radio-same": "(آلشدکاری مٱکونین)",
        "revdelete-radio-set": "قام آبیڌاْ",
        "revdelete-radio-unset": "دٱم تی",
        "revdelete-log": "دلیل:",
-       "mergehistory-from": "بألگإ سرچشمأ:",
+       "revdel-restore": "آلشد هال و بال ديڌن",
+       "pagehist": "ڤیرگار بٱلگاْ",
+       "deletedhist": "ڤیرگار پاکسا ڤابیڌاْ",
+       "revdelete-reasonotherlist": "دلیل هاْنی",
+       "revdelete-edit-reasonlist": "دلیل پاکسا کردن آلشدکاریٱل",
+       "mergehistory-from": "بٱلگاْ سرچشماْ:",
+       "mergehistory-into": "بٱگاْ مٱقسٱڌ:",
+       "mergehistory-list": "ڤیرگار آلشدکاریٱل سٱریٱک بیڌنی",
+       "mergehistory-go": "دیاری کردن آلشدکاریٱل سٱریٱک بیڌنی",
+       "mergehistory-submit": "سر یٱک کردن ڤانیاریٱل",
+       "mergehistory-fail-invalid-source": "سرچشمٱ بٱلگاْ نادیاراْ.",
+       "mergehistory-fail-invalid-dest": "بٱلگاْ مٱقسٱڌ نادیاراْ.",
        "mergehistory-reason": "دلیل:",
        "mergelog": "سیائاْ ؤریٱک",
+       "revertmerge": "سٱڤا کردن",
        "history-title": "دوڤارتاْ دیڌن ڤیرگار $1",
        "difference-title": "فٱرخ میٛنجقا ڤاناٛیریا \"$1\"",
+       "difference-title-multipage": "فٱرخ میٛنجقا بٱلگاْیٱل \"$1\" و \"$2\"",
+       "difference-multipage": "(فٱرخ میٛنجقا بٱلگاْیٱل)",
        "lineno": "خٱت $1:",
        "compareselectedversions": "کنار یٱک ناهاڌن ڤانیٱریٱل گولاْڤورچین ڤابیڌاْ",
        "editundo": "ٱنجومشیڤ کردن",
        "diff-empty": "(یٱ جۊر)",
        "diff-multi-sameuser": "({{PLURAL:$1|یٱ دۊناٛ نوسقاٛ مؽنجخایی|$1 نوسقاٛیٱل مؽنجخایی}} ب دٱسد{{PLURAL:$2|کاریاری ديٱ|$2 کاريارا}} نشۊن دیاری نٱکرداْ)",
        "diff-multi-otherusers": "({{PLURAL:$1|یٱ نوسقاْ میٛنجقایی|$1 نوسقاْیٱل میٛنجایی}} ڤا دٱسد {{PLURAL:$2|کاریاری دیٱ|$2 کاریارٱل}} نشۊن داڌاْ نٱڤابیڌاْ)",
+       "diff-paragraph-moved-tonew": "پاراگراف جا ب جا ڤابی، یٱ کاْرٱت بپۊرنین تا رۉین یٱ جا دیٱر.",
+       "diff-paragraph-moved-toold": "پاراگراف جا ب جا ڤابی، یٱ کاْرٱت بپۊرنین تا رۉین ب جا نیایی.",
        "searchresults": "نتيجاْیٱل پاٛی جۊری",
+       "search-filter-title-prefix-reset": "پاٛی جۊری میٛن تٱموم بٱلگاْیٱل",
        "searchresults-title": "نتيجاْیٱل پاٛی جۊری سی \"$1\"",
        "prevn": "دیندایی {{PLURAL:$1|$1}}",
        "nextn": "نیایی {{PLURAL:$1|$1}}",
+       "prev-page": "بٱلگاْ دیندایی",
        "next-page": "بٱلگاْ نيايی",
        "prevn-title": "دیندایی $1 {{PLURAL:$1|نتيجٱ|نتیجاْیٱل}}",
        "nextn-title": "نیایی $1 {{PLURAL:$1|نتيجٱ|نتیجاْیٱل}}",
-       "shown-title": "نشۊن دائن $1 {{PLURAL:$1|نتیجاْ|نتیجاْیٱل}} سی هر بٱلگٱ",
-       "viewprevnext": "دیئن ($1 {{int:pipe-separator}} $2) ($3)",
+       "shown-title": "نشوݩ دائن $1 {{PLURAL:$1|نتیجاْ|نتیجاْیٱل}} سی هر بٱلگاْ",
+       "viewprevnext": "دیڌن ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "<strong>ایچو میٛن ای ڤیکی یٱ بٱلگاْ هڌ کاْاْسمس \"[[:$1]]\" اْ </strong> {{PLURAL:$2|0=|هٱمچونو ساٛیل نتیجاْیٱلی کاْ دیار کرداْ ناْ کونین.}}",
        "searchmenu-new": "<strong>اي بٱلگاْ نٱ میٛن \"[[:$1]]\" ای ڤیکی راسد کو!</strong> {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}",
        "searchprofile-articles": "بٱلگاْیٱل مینۊناْ دار",
        "searchprofile-advanced-tooltip": "نوم جایٱل نوم دیار نٱ بگٱرد.",
        "search-result-size": "$1 ({{PLURAL:$2|1 ڤاجاْیٱل|$2 ڤاجاْیٱل}})",
        "search-result-category-size": "\n{{PLURAL:$1|یٱهومڤٱن|$1 هومڤٱن}} ({{PLURAL:$2|یٱزؽر بنکۊ|$2 زؽر بنکۊ}}، {{PLURAL:$3|یٱ پٱرڤٱناْ|$3 پٱرڤٱناْ}})",
-       "search-redirect": "(ڤاگٱردۊنی ز $1)",
+       "search-redirect": "(ڤاگٱردونی ز $1)",
        "search-section": "(بٱرجا $1)",
        "search-category": "(دٱسداْ $1)",
-       "search-file-match": "(Û\8cÚ©Û\8c Ú©Ø±Ø¯Ù\86 Ù\85Û\8cÙ\86Û\8aناْ جانیا)",
+       "search-file-match": "(Û\8cÚ©Û\8c Ú©Ø±Ø¯Ù\86 Ù\85Û\8cÙ\9bÙ\86Ù\88ناْ جانیا)",
        "search-suggest": "مٱنزۊرت یو بی:$1",
-       "search-interwiki-more": "(بيشدر)",
-       "searchall": "هٱمٱ",
+       "search-interwiki-default": "نتیجاْیٱل $1:",
+       "search-interwiki-more": "(بيشتر)",
+       "search-interwiki-more-results": "نتیجاْیٱل بیشتر",
+       "search-relatedarticle": "ڤا یٱک",
+       "searchrelated": "ڤا یٱک",
+       "searchall": "هٱماْ",
        "search-showingresults": "{{PLURAL:$4|نتیجاْیٱل<strong>$1</strong> ز <strong>$3</strong>|نتیجاْ یٱل<strong>$1 - $2</strong ز <strong>$3</strong>}}",
-       "search-nonefound": "هیژ نتیجاْیی ڤا پاٛی جوست تۊن یکی نیڌ.",
+       "search-nonefound": "هیژ نتیجاْیی ڤا پاٛی جوست توݩ یکی نیڌ.",
+       "powersearch-legend": "پاٛی جۊری پیشکرداْ",
        "powersearch-togglelabel": "ڤارسی کردن:",
-       "powersearch-toggleall": "Ù\87Ù\85Ø£",
+       "powersearch-toggleall": "Ù\87Ù±Ù\85اÙ\92",
        "powersearch-togglenone": "هيش کوم",
-       "preferences": "اولویتها",
+       "search-external": "پاٛی جۊری ب دٱر",
+       "preferences": "چیا دیٱر",
        "mypreferences": "چیا دیٱر",
-       "prefs-skin": "پۈسدأ",
-       "skin-preview": "پيش سإیل",
-       "prefs-watchlist": "سإیل برگ",
-       "prefs-editwatchlist": "ڤيرایشد سإیل برگ",
+       "prefs-edits": "شماراْ آلشدکاریٱل:",
+       "prefs-skin": "پۊسداْ",
+       "skin-preview": "پيش ساٛیل",
+       "prefs-user-pages": "بٱلگاْ کاریار",
+       "prefs-personal": "پوروفایل کاریار",
+       "prefs-rc": "آلشدکاریٱل ایسنی",
+       "prefs-watchlist": "ساٛیل بٱرگ",
+       "prefs-editwatchlist": "آلشدکاری ساٛیل بٱرگ",
+       "prefs-editwatchlist-clear": "ساٛیل بٱرگ خوتوناْ پاکسا کونین",
+       "prefs-watchlist-edits-max": "شوماراْ بیشتروناْ:1000",
+       "prefs-watchlist-token": "نشوناْ ساٛیل بٱرگ:",
        "prefs-misc": "شيڤسدن",
-       "prefs-resetpass": "آلشد کردن رازينإ گوڤأرتن",
-       "saveprefs": "إمایإ کردن",
-       "searchresultshead": "پی جۈري",
-       "stub-threshold-sample-link": "نمۈنأ",
-       "timezoneregion-africa": "إفرقا",
-       "timezoneregion-america": "إمرکا",
+       "prefs-resetpass": "آلشد کردن رازیناْ گوڌٱشتن",
+       "prefs-setemail": "تیرنشوݩ ٱنجوماناماْ تۊناْ بزنین.",
+       "prefs-rendering": "شٱک و شیڤات",
+       "saveprefs": "کۊ کردن",
+       "prefs-editing": "ب هال و بال ڤیرایشت",
+       "searchresultshead": "پاٛی جۊری",
+       "stub-threshold-sample-link": "نموناْ",
+       "stub-threshold-disabled": "ناکونشتگٱر کردن",
+       "prefs-help-recentchangescount": "شوماراْ بیشتروناْ:1000",
+       "timezonelegend": "گات راستاگٱ:",
+       "localtime": "گات ڤولاتی:",
+       "timezoneuseserverdefault": "ڤیکی پیش فٱرز($1) ڤٱنین ڤا کار",
+       "timezone-useoffset-placeholder": "ٱرزایشت نموناْ:\"-07:00\" یا \"01:00\"",
+       "servertime": "گات رسیناْجا:",
+       "guesstimezone": "ڤا جاگٱرد پور اْبۊ",
+       "timezoneregion-africa": "اْفرقا",
+       "timezoneregion-america": "اْمرکا",
+       "timezoneregion-arctic": "قوتب شمال",
        "timezoneregion-asia": "آسيا",
-       "yourrealname": "نام واقعی:",
-       "prefs-help-realname": "ذکر نام واقعی اختیاریه ایر تصمیم به گدن بگیرین هنگام ارجاع به آثارتو و انتساب هونو به ایسا زه نام واقعیتو استفاده ابوه",
+       "timezoneregion-atlantic": "جهون اۉ آتلانتیک",
+       "timezoneregion-australia": "اوستارالیا",
+       "timezoneregion-europe": "اورۊپا",
+       "timezoneregion-indian": "جهون اۉ هند",
+       "timezoneregion-pacific": "جهون اۉ آروم",
+       "allowemail": "کاریارٱل دیٱر تٱرن سیم ٱنجوماناماْ بیٛسی کونن.",
+       "prefs-searchoptions": "پاٛی جۊری",
+       "prefs-namespaces": "نوم ڤارگٱیٱل",
+       "default": "پیش فٱرز",
+       "prefs-files": "جانیایٱل",
+       "prefs-custom-css": "CSS جاڤٱسداْ",
+       "prefs-custom-json": "JSON جاڤٱسداْ",
+       "prefs-custom-js": "JavaScript جاڤٱسداْ",
+       "prefs-common-config": "CSS/JSON/JavaScript هومبٱئر سی تٱموم پۊستاْیٱل:",
+       "prefs-emailconfirm-label": "پوشت راست کاری انجوماناماْ:",
+       "youremail": "ٱنجوماناماْ",
+       "username": "{{GENDER:$1|نوم کاریاری}}:",
+       "prefs-memberingroups": "{{GENDER:$2|ٱندوم}}  {{PLURAL:$1|دٱسداْ|دٱسداْیٱل}}:",
+       "group-membership-link-with-expiry": "$1 (تا $2)",
+       "prefs-registration": "گات سٱڤت نام:",
+       "yourrealname": "نوم راستاْکی:",
+       "yourlanguage": "زڤون",
+       "yourvariant": "میٛنوناْ آلشتگٱر زڤون:",
+       "yournick": "اْمزا تازاْ",
+       "badsig": "اْمزار خوم نادیار.\nسٱردیسٱل HTML ناْ ڤارسی کو.",
+       "yourgender": "ایسا بیشتر دۊس دارین چ جۊری گوهڌاْ ڤابۊ؟",
+       "gender-male": "هو(پیا) ڤیکی ناْ آلشد کرد.",
+       "gender-female": "هو(زیناْ) ڤیکی ناْ آلشد کرد.",
+       "email": "ٱنجوماناماْ",
+       "prefs-help-realname": "نوم راستٱکی دل ب خاییاْ.\nار ایسا هوناْ ڤارڌ کونین، میٛن گات ڤاگٱردونی سی کارٱلتون ڤا نوم خوتون اٛستفاڌاْ بۊ.",
+       "prefs-help-email-required": "ڤا تیرنشوݩ ٱنجوماناماْ بۊ.",
+       "prefs-info": "ڌونائیٱل ٱسلی",
+       "prefs-i18n": "میٛن زایاراْیی سازی",
+       "prefs-signature": "اْمزا",
+       "prefs-dateformat": "شلگ گات",
+       "prefs-timeoffset": "جا ب جایی گات",
+       "prefs-advancedediting": "گوزیناْیٱل کولی",
+       "prefs-developertools": "ٱڤزارٱل گٱپ کلونکار",
+       "prefs-editor": "ڤیرایشتکار",
+       "prefs-preview": "پيش ساٛیل",
+       "prefs-advancedrc": "گوزیناْیٱل پیشکرداْ",
+       "prefs-advancedrendering": "گوزیناْیٱل پیشکرداْ",
+       "prefs-advancedsearchoptions": "گوزیناْیٱل پیشکرداْ",
+       "prefs-advancedwatchlist": "گوزیناْیٱل پیشکرداْ",
+       "prefs-displayrc": "گوزیناْیٱل نشوݩ داڌئن",
+       "prefs-displaywatchlist": "گوزیناْیٱل نشوݩ داڌئن",
+       "prefs-pageswatchlist": "بٱلگاْیٱل زیر تی",
+       "prefs-tokenwatchlist": "نشوݩ",
+       "prefs-diffs": "فٱرخ",
+       "userrights": "هوقۊق کاریار",
+       "userrights-lookup-user": "یٱ کاریار ناْ گولاْ ڤورچین کونین",
+       "userrights-user-editname": "نوم کاریاریتۊناْ بزنین",
+       "editusergroup": "سوڤارکرد جٱرغاْیٱل کاریار",
+       "editinguser": "آلشدکاری هوقۊق کاریاری {{GENDER:$1|کاریار}} <strong>[[User:$1|$1]]</strong> $2",
+       "viewinguserrights": "دیڌن هوقۊق کاریاری {{GENDER:$1|کاریار}} <strong>[[User:$1|$1]]</strong> $2",
+       "userrights-editusergroup": "آلشدکاری {{GENDER:$1|کاریار}} جٱرغاْیٱل",
+       "userrights-viewusergroup": "دیڌن {{GENDER:$1|کاریار}} جٱرغاْیٱل",
+       "saveusergroups": "کۊ کردن {{GENDER:$1|کاریار}} جٱرغاْیٱل",
+       "userrights-groupsmember": "ٱندوم:",
+       "userrights-groupsmember-auto": "ٱندوم نادیار:",
+       "userrights-reason": "دلیل:",
+       "userrights-changeable-col": "جٱرغاْیٱلی کاْ ایسا تٱرین آلشدسوݩ کونین.",
+       "userrights-unchangeable-col": "جٱرغاْیٱلی کاْ ایسا نٱتٱرین آلشدسوݩ کونین.",
+       "userrights-expiry-none": "تٱموم نٱڤابی",
+       "userrights-expiry": "خلاس ڤابیڌاْ:",
+       "userrights-expiry-othertime": "گات هیٛنی:",
+       "userrights-expiry-options": "1 رۊز:1 رۊز،1 هٱفتاْ:1 هٱفتاْ،1 ما:1 ،ما،3 مایٱل:3 مایٱل،6 مایٱل:6 مایٱل،1 year:1 سال",
+       "userrights-invalid-expiry": "گات تٱموم ڤابیڌن سی جٱرغٱ\"$1\" لیشاْ.",
+       "userrights-expiry-in-past": "گات تٱموم ڤابیڌن سی جٱرغٱ\"$1\" رٱڌ ڤابیڌاْ.",
+       "group": "جٱرغاْ:",
+       "group-user": "کاریارٱل",
+       "group-autoconfirmed": "کاریارٱل خودپوشت راسد ڤابیڌاْ.",
        "group-bot": "روڤاتٱل",
        "group-sysop": "سٱردیڤۊنکارۊن",
-       "grouppage-bot": "{{ns:project}}:بوتا",
-       "grouppage-sysop": "{{ns:project}}:سٱردیڤۊنکاریۊن",
+       "group-bureaucrat": "بوروکراتٱل",
+       "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|تیاْ پا}}",
+       "grouppage-user": "{{ns:project}}:کاریارٱل",
+       "grouppage-autoconfirmed": "{{ns:project}}:کاریار خودٱنجومکار",
+       "grouppage-bot": "{{ns:project}}:بوتٱل",
+       "grouppage-sysop": "{{ns:project}}:سٱردیڤۊنکارٱل",
+       "grouppage-bureaucrat": "{{ns:project}}:بوروکراتون",
+       "right-read": "خوندن بٱلگاْیٱل",
+       "right-edit": "آلشدکاری بٱلگاْ",
+       "right-createtalk": "راسد کردن بٱلگاْیٱل چٱک چناْ.",
+       "right-createaccount": "راس کردن یٱ هساو کاریاری نۉ",
+       "right-minoredit": "نشوندار کردن آلشدکاریٱل جۊر یٱ هیرداْ ڤیرایشد",
+       "right-move": "جا ب جایی بٱلگاْ",
+       "right-move-rootuserpages": "جا ب جا کردن ریشاْ بٱلگاْیٱل کاریار",
+       "right-move-categorypages": "جا ب جا کردن دٱسداْ بٱلگاْیٱل",
+       "right-movefile": "جا ب جایی جانیایٱل",
+       "right-upload": "سوڤار کردن جانیایٱل",
+       "right-upload_by_url": "سوڤار کرد جانیایٱل ز یٱ یۊ آر اْل",
        "right-writeapi": "سي نڤشدن اْی پی آی ڤٱنين ڤاکار",
+       "right-delete": "پاکسا کردن بٱلگاْیٱل",
+       "right-bigdelete": "بٱلگاْیٱلی ناْ کاْ ڤیرگار گٱپ دارن پاکسا کونین.",
+       "right-browsearchive": "پاٛی جۊری میٛن بٱلگاْیٱل پاکسا ڤابیڌاْ.",
+       "right-undelete": "بٱلگاْ ناْ پاکسا نٱکونین",
+       "right-block": "نیا کاریارٱل دیٱر ناْ ز آلشدکاری بگرین.",
+       "right-blockemail": "نیا کاریار ناْ سی بیٛسی کردن ٱنجوماناماْ بگرین",
+       "right-hideuser": "نیاگری یٱ نوم کاریاری، قام کردنس ز ڤٱر تی خٱلک",
+       "right-unblockself": "خوساْ قولف نٱکونین",
+       "right-editinterface": "رابت کاریار ناْ آلشد کو.",
+       "right-editusercss": "آلشدکاری جانیایٱل CSS کاریارٱل دیٱر.",
+       "right-edituserjson": "آلشدکاری جانیایٱل JSON کاریارٱل دیٱر.",
+       "right-edituserjs": "آلشدکاری جانیایٱل JavaScript کاریارٱل دیٱر.",
+       "right-import": "ڤارڌ کردن بٱلگاْیٱل ز ڤیکیٱل دیٱ",
+       "right-importupload": "ڤارڌ کردن بٱگاْیٱل ز جانیا سوڤار ڤابیڌاْ.",
+       "right-userrights": "هوقۊق تٱموم کاریارٱل ناْ آلشد کونین",
+       "right-userrights-interwiki": "هوقۊق کاریاری تٱموم کاریارٱل میٛن ڤیکیٱل دیٱری ناْ آلشد کونین.",
+       "right-siteadmin": "رسیناْجا ناْ یا قولف کونین یا قولف نٱکونین",
+       "right-sendemail": "بیٛسی کردن ٱنجوماناماْ سی کاریارٱل دیٱر",
+       "grant-group-email": "ٱنجوماناماْ باْسی ڤابیڌاْ.",
+       "grant-blockusers": "قولف کردن یا نٱکردن کاریارٱل",
        "grant-createaccount": "راسد کردن هساو کاریاری",
+       "grant-createeditmovepage": "راسد کردن، آلشدکاری و جا ب جا کردن بٱلگاْیٱل",
+       "grant-editmycssjs": " CSS/JSON/JavaScript کاریاری خوتوناْ آلشد کونین",
+       "grant-editmywatchlist": "ساٛیل بٱرگ خوتوݩ ناْ آلشد کونین",
+       "grant-editprotected": "آلشدکاری بٱلگاْیٱل پٱر و پیم ڤابیڌاْ",
+       "grant-uploadeditmovefile": "سوڤار کردن، جانشین کردن، و جا ب جا کردن جانیایٱل",
+       "grant-uploadfile": "سوڤار کردن جانیایٱل تازاْ.",
+       "grant-basic": "هوقۊق ٱسلی",
+       "grant-viewmywatchlist": "ڤیر ڤٱنین ڤا ساٛیل بٱرگ خوتوݩ",
        "newuserlogpage": "راسد ڤابیاْ ڤا کاریار",
        "rightslog": "پهرستنۊماْ حقوق کاریار",
+       "action-read": "ای بٱلگاْ بخون",
        "action-edit": "ای بلگٱ نٱ آلشدکاری کو",
-       "action-createaccount": "ڤاکل ای هساْو مؽنتوری",
-       "nchanges": "$1 {{PLURAL:$1|تغییر|تغییرات}}",
+       "action-createpage": "ای بٱلگاْ ناْ راسد کو",
+       "action-createaccount": "ڤاکل ای هساو مؽنتوری",
+       "action-history": "دیڌن ڤیرگار ای بٱلگاْ",
+       "action-minoredit": "ای آلشدکاری ناْ چی یٱ هیرداْ ڤیرایشت نشوݩ دیار کو",
+       "action-move": "جابجا کردن ای بٱلگاْ",
+       "action-move-subpages": "ای بٱلگاْ و زیربٱلگاْیٱلساْ جا ب جا کو",
+       "action-move-rootuserpages": "جا ب جا کردن ریشاْ بٱلگاْیٱل کاریار",
+       "action-move-categorypages": "جا ب جا کردن دٱسداْ بٱلگاْیٱل",
+       "action-movefile": "جا ب جا کردن ای جانیا",
+       "action-upload": "ای جانیا ناْ سوڤار کونین",
+       "action-writeapi": "سي نڤشدن اْی پی آی ڤٱنين ڤاکار",
+       "action-delete": "ای بٱلگاْ ناْ پاکسا کو",
+       "action-deleterevision": "پاکسا کردن ڤانیاریٱل",
+       "action-undelete": "پاکسا نٱکردن بٱلگاْیٱل",
+       "action-userrights": "هوقۊق تٱموم کاریارٱل ناْ آلشد کونین",
+       "action-siteadmin": "رسیناْجا ناْ یا قولف کونین یا قولف نٱکونین",
+       "action-sendemail": "ٱنجوماناماْ باْسی ڤابیڌاْ.",
+       "action-editmywatchlist": "ساٛیل بٱرگ خوتوݩ ناْ آلشد کونین",
+       "action-viewmywatchlist": "ڤیر ڤٱنین ڤا ساٛیل بٱرگ خوتوݩ",
+       "nchanges": "$1 {{PLURAL:$1|آلشدکاری|آلشدکاریٱل}}",
+       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|ز آخری دیڌن}}",
        "enhancedrc-history": "ڤیرگار",
        "recentchanges": "آلشدکاریا ایسنی",
        "recentchanges-legend": "گوزیناْیٱل آلشدکاریٱل ایسنی",
        "recentchanges-label-plusminus": "ٱندازاْ بٱلگاْ ب شومار ای بایتٱل آلشد کرداْ.",
        "recentchanges-legend-heading": "<strong>میراس:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (هٱچونوݩ ڤاْ[[Special:NewPages|نومگٱ بٱلٛگیٱل نۊ]] ساٛل ؤوٱنین)",
+       "recentchanges-submit": "دیاری کردن",
+       "rcfilters-tag-remove": "ڤورداشتن '$1'",
+       "rcfilters-activefilters": "فیلترٱل کونشتکار",
+       "rcfilters-activefilters-hide": "قام کردن",
+       "rcfilters-activefilters-show": "دیاری کردن",
+       "rcfilters-advancedfilters": "فیلترٱل پیشکرداْ",
+       "rcfilters-limit-title": "نتیجاْیٱل سی دیاری کردن",
+       "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|آلشدکاری|آلشدکاریٱل}}, $2",
+       "rcfilters-days-title": "رۊزٱل ایسنی",
+       "rcfilters-days-show-days": "$1 {{PLURAL:$1|رۊز|رۊزٱل}}",
+       "rcfilters-highlighted-filters-list": "پورٱنڳ ڤابیڌاْ:$1",
+       "rcfilters-quickfilters": "فیلترٱل کۊ ڤابیڌاْ",
+       "rcfilters-quickfilters-placeholder-title": "هیژ فیلتری کۊ نٱڤابیڌاْ",
+       "rcfilters-savedqueries-defaultlabel": "فیلترٱل کۊ ڤابیڌاْ",
+       "rcfilters-savedqueries-rename": "ز نۉ نوم نهاڌن",
+       "rcfilters-savedqueries-remove": "پاکسا کردن",
+       "rcfilters-savedqueries-new-name-label": "نوم",
+       "rcfilters-savedqueries-apply-label": "راسد کردن فیلتر",
+       "rcfilters-savedqueries-cancel-label": "ٱنجومشیڤ کردن",
+       "rcfilters-clear-all-filters": "پاک کردن تٱموم فیلترٱل",
+       "rcfilters-show-new-changes": "ساٛیل کردن تازاْترین آلشدکاریٱل",
+       "rcfilters-invalid-filter": "فیلتر نادیار",
+       "rcfilters-filterlist-title": "فیلترٱل",
+       "rcfilters-filterlist-whatsthis": "یونو چ جۊر کار اْکونن؟",
+       "rcfilters-highlightmenu-title": "یٱ رٱنڳ گولاْڤورچین کونین",
+       "rcfilters-filterlist-noresults": "هیچ فیلتری دیاری نکرد.",
+       "rcfilters-filter-editsbyself-label": "ایسا آلشدس کردین",
+       "rcfilters-filter-editsbyother-label": "آلشدکاریٱل دیٱرون",
+       "rcfilters-filter-user-experience-level-registered-label": "سٱڤت نام ڤابیڌاْ",
+       "rcfilters-filter-user-experience-level-unregistered-label": "سٱڤت نام نٱڤابیڌاْ",
+       "rcfilters-filter-user-experience-level-newcomer-label": "تازاْ ڤٱرڌٱل",
+       "rcfilters-filter-bots-label": "بوت",
+       "rcfilters-filter-humans-label": "آئم(بوت نٱ)",
+       "rcfilters-filter-minor-label": "هیرداْ ڤیرایشت",
+       "rcfilters-filter-watchlist-watched-label": "میٛن ساٛیل بٱرگ",
+       "rcfilters-filter-watchlist-watched-description": "آلشدکاریٱل میٛن بٱلگاْیٱلی کاْ میٛن ساٛیل بٱرگتونن",
+       "rcfilters-filter-watchlistactivity-unseen-label": "آلشدکاریٱل دیاری نٱکرداْ",
+       "rcfilters-filter-watchlistactivity-seen-label": "آلشدکاریٱل دیاری کرداْ",
+       "rcfilters-filtergroup-changetype": "جۊر آلشدکاری",
+       "rcfilters-filter-pageedits-label": "آلشدکاریٱل بٱلگاْ",
+       "rcfilters-filter-newpages-label": "راسد کردن بٱلگاْ",
+       "rcfilters-filter-categorization-label": "آلشدکاری دٱسداْیٱل",
+       "rcfilters-filtergroup-lastRevision": "آخری ڤانیٱریٱل",
+       "rcfilters-filter-lastrevision-label": "آخری ڤانیٱری",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:نیڌ</strong> $1",
+       "rcfilters-target-page-placeholder": "نوم یٱ بٱلگاْ(یا دٱسداْ) ناْ بزنین",
        "rcnotefrom": "ڤازیر {{PLURAL:$5|آلشدکاری|آلشدکاریٱل}}ز ڤیرگار strong>$3, $4</strong> تا ڤیرگار <strong>$1</strong>  دیاری اْکونن .",
        "rclistfrom": "دیار کردن آلشدکاریٱل ز $3 $2",
        "rcshowhideminor": "آلشدکاری کۊچیر $1",
-       "rcshowhideminor-show": "نشۊن دائن",
+       "rcshowhideminor-show": "نشوݩ دائن",
        "rcshowhideminor-hide": "قام کردن",
        "rcshowhidebots": "$1 بوتا",
-       "rcshowhidebots-show": "نشۊن دائن",
+       "rcshowhidebots-show": "نشوݩ دائن",
        "rcshowhidebots-hide": "قام کردن",
        "rcshowhideliu": "$1 کاریارٱل سٱڤت نام کرداْ",
        "rcshowhideliu-show": "دیار کردن",
        "rcshowhideliu-hide": "قام کردن",
        "rcshowhideanons": "$1 کاریارٱل ڤامیٛن نٱڤوڌاْ",
-       "rcshowhideanons-show": "نشۊن دائن",
+       "rcshowhideanons-show": "نشوݩ دائن",
        "rcshowhideanons-hide": "قام کردن",
        "rcshowhidepatr": "$1 آلشدکاریٱل تیڤاڌاشت ڤابیڌاْ",
-       "rcshowhidemine": "$1 آلشدکاریا مو",
-       "rcshowhidemine-show": "نشۊن دائن",
+       "rcshowhidepatr-show": "دیاری کردن",
+       "rcshowhidepatr-hide": "قام کردن",
+       "rcshowhidemine": "$1 آلشدکاریٱل مو",
+       "rcshowhidemine-show": "نشوݩ دائن",
        "rcshowhidemine-hide": "قام کردن",
+       "rcshowhidecategorization": "دٱسداْ بٱندی بٱلگاْ $1",
+       "rcshowhidecategorization-show": "دیاری کردن",
+       "rcshowhidecategorization-hide": "قام کردن",
        "rclinks": "دیاری کردن دینائی $1 آلشڌ مؽن $2 رۊز دیندایی",
        "diff": "فٱرخ",
        "hist": "گوزارشت",
        "minoreditletter": "م",
        "newpageletter": "ن",
        "boteditletter": "ب",
-       "rc-change-size-new": "$1 {{PLURAL:$1|بایت|بایتا}} نیا آلشدکاری",
+       "rc-change-size-new": "$1 {{PLURAL:$1|بایت|بایتٱل}} نیا آلشدکاری",
+       "newsectionsummary": "/* $1 */ بٱئرجا تازاْ",
+       "rc-enhanced-expand": "دیاری کردن جوزئیات",
+       "rc-enhanced-hide": "قام کردن جوزئیات",
        "rc-old-title": "زاتٱ چی \"$1\" راس ڤابیڌاْ",
        "recentchangeslinked": "آلشدکاریٱل تاْ یٱک",
        "recentchangeslinked-feed": "تغییرات مرتبط",
        "recentchangeslinked-summary": "نوم یٱ بٱلٛگاْ ناْ ڤامؽ کونین تا آلشڌکاری بٱلٛگیٱل کاْ ڤاْ هومؽنڌارکرڌیناْ یا زاْ هو مؽنڌاری گریڌین ناْ ڤڤینین(سی نیٱشڌن هوم ڤٱنوناْ یٱ بنکۊ چونوݩ چی ائی ناْ ڤزٱنین:نوم بونکۊ). \nآلشڌکاریٱل بلٛگیٱلؽ کاْ مؽن[[Special:Watchlist|نومگٱ دیناگریٱل اؽسا]] هؽڌن <strong>ؤٱرڌار</strong> نمای اْڤۊهاْ",
        "recentchangeslinked-page": "نوم بٱلگاْ:",
        "recentchangeslinked-to": "آلشدکاریٱلی کاْ میٛن بٱلگاْیٱل هومپاٛیڤٱند بیناْ ب جا بٱلگاْ داڌاْ ڤابیڌاْ دیاریسۊن کو",
+       "recentchanges-page-added-to-category": "[[:$1]] اْزاف ڤابی ب دٱسداْ",
+       "recentchanges-page-removed-from-category": "[[:$1]] ز دٱسداْ جوڌا ڤابی",
        "upload": "سوڤار کردن جانیا",
-       "uploadbtn": "آپلود فایل",
+       "uploadbtn": "سوڤار کردن جانیا",
+       "uploadnologin": "هیٛنی نٱڤۊڌیناْ ڤامیٛن",
+       "uploaderror": "خٱتا سوڤارکرد",
        "uploadlogpage": "پهرستنۊماْ سوڤارکرد",
+       "filename": "نوم جانیا",
        "filedesc": "چكستٱ",
+       "fileuploadsummary": "چکستٱ:",
+       "filereuploadsummary": "آلشدکاریٱل جانیا:",
+       "filestatus": "هال و بال کوپی رایت:",
+       "filesource": "سرچشمٱ:",
+       "empty-file": "جانیایی کاْ داڌینساْ هالیاْ.",
+       "file-too-large": "جانیایی کاْ داڌینساْ غٱلٱڤاْ گٱپاْ",
+       "filename-tooshort": "نوم جانیا غٱلٱڤاْ کۊچیراْ.",
+       "filetype-banned": "چونو جانیایی قٱڌقان ڤابیڌاْ.",
+       "illegal-filename": "سلا نی چونو نومی سی جانیا بیٛنین",
+       "unknown-error": "یٱ خٱتا نادیار اْتفاق ڤٱسداْ.",
+       "tmp-create-error": "نیبۊ یٱ جانیا موڤٱقٱتی راسد کونین.",
+       "uploadwarning": "هوشدا سوڤارکرد",
+       "savefile": "کۊ کردن جانیا",
+       "uploaddisabled": "سوڤارکرد ز کار ڤٱسداْ.",
+       "copyuploaddisabled": "سوڤار کرد ڤا یۊ آر اْل ز کار ڤٱسداْ.",
+       "uploaddisabledtext": "سوڤارکرد جانیا ز کار ڤٱسداْ.",
+       "upload-source": "سرچشماْ جانیا",
+       "sourcefilename": "سرچشماْ نوم جانیا:",
+       "sourceurl": "سرچشماْ يۊ آر ال:",
+       "destfilename": "نوم جانیا مٱقسٱڌ:",
+       "upload-description": "تۉزی جانیا",
+       "watchthisupload": "ساٛیل ای جانیا کونین",
+       "upload-proto-error": "پورتوکول نادوروسد",
+       "upload-file-error": "خٱتا میٛنجقایی",
+       "upload-misc-error": "خٱتا سوڤارکرد نادیار",
+       "upload-dialog-title": "سوڤار کردن جانیا",
+       "upload-dialog-button-cancel": "ٱنجومشیڤ کردن",
+       "upload-dialog-button-back": "دیندا",
+       "upload-dialog-button-done": "ٱنجوم ڤابی",
+       "upload-dialog-button-save": "کۊ کردن",
+       "upload-dialog-button-upload": "سوڤارکرد",
+       "upload-form-label-infoform-title": "جوزئیات",
+       "upload-form-label-infoform-name": "نوم",
+       "upload-form-label-infoform-description": "تۉزی",
+       "upload-form-label-usage-title": "ڤا کار ڤٱندن",
+       "upload-form-label-usage-filename": "نوم جانيا",
+       "upload-form-label-own-work": "یو کار موناْ.",
+       "upload-form-label-infoform-categories": "دٱسداْیٱل",
+       "upload-form-label-infoform-date": "ڤیرگار",
+       "http-invalid-url": "یۊ آر اْل لیش:$1",
+       "http-read-error": "خٱتا خوندن اْچ تی تی پی.",
+       "http-internal-error": "خٱتا میٛنجقایی اْچ تی تی پی",
        "license": "میٛن هال و بال لیسانس دار ڤابیڌن",
        "license-header": "میٛن هال و بال ليسانس دار ڤابيڌن",
+       "listfiles-delete": "پاکسا کردن",
        "imgfile": "جانیا",
        "listfiles": "نومگاْ جانیا",
+       "listfiles_thumb": "بٱن کیٛلکی",
+       "listfiles_date": "ڤیرگار",
+       "listfiles_name": "نوم",
+       "listfiles_user": "کاریار",
+       "listfiles_size": "ٱندازاْ",
+       "listfiles_description": "تۉزی",
+       "listfiles_count": "نوسقاْیٱل",
+       "listfiles-latestversion-yes": "هٱراْ",
+       "listfiles-latestversion-no": "نٱ",
        "file-anchor-link": "جانیا",
        "filehist": "ڤیرگار جانیا",
        "filehist-help": "ری ڤیرگار بپۊرنین تا نوسقاْیی کاْ خاین باْنیٱرین",
-       "filehist-revert": "لرنیئن",
+       "filehist-deleteall": "هٱماْ ناْ پاکسا کو",
+       "filehist-deleteone": "پاکسا کردن",
+       "filehist-revert": "لرنیڌن",
        "filehist-current": "تازاْ باڤ",
        "filehist-datetime": "گات/مجال",
-       "filehist-thumb": "ٱسگ بٱن کاْلکی",
+       "filehist-thumb": "ٱسگ بٱن کیٛلکی",
        "filehist-thumbtext": "كۊچیر کردن سی نوسقاْ $1",
        "filehist-nothumb": "نڤیڌن بٱن کلکی",
        "filehist-user": "کاریار",
        "linkstoimage-more": "More than $1 {{PLURAL:$1|page uses|pages use}} this file.\nThe following list shows the {{PLURAL:$1|first page|first $1 pages}} that use this file only.\nA [[Special:WhatLinksHere/$2|full list]] is available.",
        "nolinkstoimage": "ای پٱرڤٱناْ مؽن هیچ بٱلٛیاْ نؽڌا",
        "linkstoimage-redirect": "$1 (ڤاگٱردۊنی جانیا) $2",
-       "sharedupload": "ای فایل یک آپلود اشتراکی هده و ممکنه زه طریق  پروژه‌های دیگه  هم قابل دسترسی بوه",
+       "sharedupload": "ای جانیا کاْ ز  $1 گاشا میٛن پوروجاْیٱل دیٱ ڤٱسداْ بۊ ڤاکار",
        "sharedupload-desc-here": "جانیایی کاْ میٛن $1 گاشا میٛن پوروجٱیٱل هٱنی ٱم ب کار گرهڌاْ ڤابیڌاْ بۊ.\nتۉزی سی [$2 file description page] میٛن دڤۊن دیاراْ",
        "filepage-nofile": "چونو جانیایی ڤا چونڤ اْسمی نیڌس.",
-       "uploadnewversion-linktext": "آپلود کردن یه نسخه تازه زه ای فایل",
+       "uploadnewversion-linktext": "یٱ نوسقاْ تازاْ زی جانیا سوڤار کونین",
+       "shared-repo-from": "ز $1",
        "upload-disallowed-here": "ايسا ناْترین ای جانیا نٱ ز نۉ سوڤار کونین",
+       "filerevert": "ز سرگرهڌن سی $1",
+       "filerevert-legend": "ز سرگرهڌن جانیا",
+       "filerevert-comment": "دلیل:",
+       "filerevert-submit": "لرنیڌن",
+       "filedelete": "$1 ناْ پاکسا کو",
+       "filedelete-legend": "پاکسا کردن جانیا",
+       "filedelete-comment": "دلیل:",
+       "filedelete-submit": "پاکسا کردن",
+       "filedelete-success": "<strong>$1</strong> پاکسا ڤابیڌاْ.",
+       "filedelete-otherreason": "دیٱری/دلیل اْزافی:",
+       "filedelete-reason-otherlist": "دلیل هیٛنی",
+       "filedelete-reason-dropdown": "*دلیل جاڤٱسداْ سی پاکسا کردن\n*تی پۊشنیڌن ز کوپی رایت\n*جانیا تکراری",
+       "filedelete-edit-reasonlist": "دلیل پاکسا کردن ناْ آلشد کونین",
+       "filedelete-maintenance-title": "نیبۊ جانیا ناْ پاکسا کونین",
        "mimesearch": "MIME جستجو رو پایه",
-       "listredirects": "لیست تغییر مسیرها",
-       "unusedtemplates": "قالبها یا الگوهای استفاده نوابیده",
+       "mimetype": "جۊر MIME:",
+       "download": "گرهڌن",
+       "listredirects": "نومگاْ ڤاگٱردونیٱل",
+       "unusedtemplates": "چۊئاْیٱل ڤا کار نٱڤٱسداْ",
+       "unusedtemplateswlh": "هومپاٛیڤٱندٱل هیٛنی",
        "randompage": "بٱلگاْ شامسٱکی",
-       "randomredirect": "تغییر مسیر اتفاقی",
+       "randomincategory-category": "دٱسداْ:",
+       "randomincategory-submit": "رۉ",
+       "randomredirect": "ڤاگٱردونی بٱختٱکی",
        "statistics": "آمار",
-       "doubleredirects": "تغییر مسیر دوبله",
+       "statistics-header-pages": "آمار بٱلگاْ",
+       "statistics-header-edits": "آمار آلشدکاریٱل",
+       "statistics-header-users": "آمار کاریارٱل",
+       "statistics-articles": "بٱلگاْیٱل مینۊناْ دار",
+       "statistics-pages": "بٱگاْیٱل",
+       "statistics-files": "جانیایٱل سوڤار ڤابیڌاْ",
+       "statistics-users": "کاریارٱل سٱڤت نام کرداْ",
+       "statistics-users-active": "کاریارٱل کونشتکار",
+       "pageswithprop-prop": "نوم خاسیٱت:",
+       "pageswithprop-submit": "رۉ",
+       "doubleredirects": "ڤاگٱردونی دۊبلاْ",
        "double-redirect-fixer": "ساموݩکار آلشڌتورٱل",
-       "brokenredirects": "تغییرمسیرهای اشکسته وخراو",
-       "withoutinterwiki": "صفحات بدون لینک های زبانی میان ویکی",
-       "fewestrevisions": "صفحات با کمترین تعداداصلاحات وتجدیدنظرها",
+       "brokenredirects": "ڤاگٱردونیٱل بی سرٱنجوم",
+       "brokenredirects-edit": "آلشدکاری کردن",
+       "brokenredirects-delete": "پاکسا کردن",
+       "withoutinterwiki": "بٱلگاْیٱلی کاْ هومپاٛیڤٱند زڤون نارن",
+       "withoutinterwiki-legend": "دیندادیس",
+       "withoutinterwiki-submit": "دیاری کردن",
+       "fewestrevisions": "بٱلگاْیٱلی کاْ کمترین ڤانیٱری ناْ دارن",
        "nbytes": "$1 {{PLURAL:$1|بایت|بایت}}",
-       "nlinks": "$1 {{PLURAL:$1|لینک|لینکها}}",
-       "nmembers": "$1 {{PLURAL:$1|ٱندوم|ٱندوما}}",
-       "lonelypages": "صفحات یتیم وابیده",
-       "uncategorizedpages": "صفحات دسته بندی نوابیده",
-       "uncategorizedcategories": "دسته های دسته بندی نوابیده",
-       "uncategorizedimages": "فایلهای تصویری دسته بندی نوابیده",
-       "uncategorizedtemplates": "قالبها یا الگوهای دسته بندی نوابیده",
-       "unusedcategories": "دسته های استفاده نوابیده",
-       "unusedimages": "فایلهای استفاده نوابیده",
-       "wantedcategories": "دسته های  درخواستی",
-       "wantedpages": "صفحات درخواستی",
-       "mostlinked": "صفحاتی که بیشتر زه همه به هونو لینک داده وابیده",
-       "mostlinkedcategories": "دسته هایی که بیشتر زه همه به هونو لینک داده وابیده",
-       "mostlinkedtemplates": "قالبها یا الگوهایی که بیشتر زه همه به هونو لینک داده وابیده",
-       "mostcategories": "صفحات با بیشترین تعداد دسته بندی",
-       "mostimages": "تصاویری که بیشتر زه همه به هونو لینک داده وابیده",
-       "mostrevisions": "صفحات با تعداد اصلاحات زیاد",
+       "ncategories": "{{PLURAL:$1|دٱسداْ|دٱسداْیٱل}}",
+       "ninterwikis": "$1 {{PLURAL:$1|میٛن ڤیکی|میٛن ڤیکی یٱل}}",
+       "nlinks": "$1 {{PLURAL:$1|هومپاٛیڤٱند|هومپاٛیڤٱندٱل}}",
+       "nmembers": "$1 {{PLURAL:$1|ٱندوم|ٱندومٱل}}",
+       "nmemberschanged": "$1 → $2 {{PLURAL:$2|ٱندوم|ٱندومٱل}}",
+       "nrevisions": "$1 {{PLURAL:$1|ڤانیٱری|ڤانیٱریٱل}}",
+       "nimagelinks": "ڤا کار ڤٱسداْ میٛن $1 {{PLURAL:$1|بٱلگاْ|بٱلگاْیٱل}}",
+       "ntransclusions": "ڤا کار ڤٱسداْ میٛن $1 {{PLURAL:$1|بٱلگاْ|بٱلگاْیٱل}}",
+       "specialpage-empty": "نتیجاْیی سی ای گوزارشت نی.",
+       "lonelypages": "بٱلگاْیٱل ییٛتیم",
+       "uncategorizedpages": "بٱلگاْیٱل دٱسداْ بٱندی نٱڤابیڌاْ",
+       "uncategorizedcategories": "دٱسداْیٱل دٱسداْ بٱندی نٱڤابیڌاْ",
+       "uncategorizedimages": "جانیایٱل دٱسداْ بٱندی نٱڤابیڌاْ",
+       "uncategorizedtemplates": "چۊئاْیٱل دٱسداْ بٱندی نٱڤابیڌاْ",
+       "unusedcategories": "دٱسداْیٱل ڤا کار نٱڤٱسداْ",
+       "unusedimages": "جانیایٱل ڤا کار نٱڤٱسداْ",
+       "wantedcategories": "دٱسداْیٱل خاستنی",
+       "wantedpages": "بٱلگاْیٱل خاستنی",
+       "wantedfiles": "جانیایٱل خاستنی",
+       "wantedtemplates": "چۊئاْیٱل خاستنی",
+       "mostlinked": "بٱلگاْیٱلی کاْ بیشترین هومپاٛیڤٱند ناْ دارن",
+       "mostlinkedcategories": "دٱسداْیٱلی کاْ بیشترین هومپاٛیڤٱند ناْ دارن",
+       "mostlinkedtemplates": "چۊئاْیٱلی کاْ بیشترین هومپاٛیڤٱند ناْ دارن",
+       "mostcategories": "بٱلگاْیٱلی کاْ بیشترین دٱسداْبندی ناْ دارن",
+       "mostimages": "عسگایی کاْ بیشترین هومپاٛیڤٱند ناْ دارن",
+       "mostrevisions": "بٱلگاْیٱلی کاْ بیشترین ڤانیٱری ناْ دارن",
        "prefixindex": "نماواٛ نهاڤٱنڌ",
-       "shortpages": "صفحات کوتاه",
-       "longpages": "صفحات بلند",
-       "deadendpages": "صفحات بن بست ولاینحل",
-       "protectedpages": "صفحات حفاظت وحمایت وابیده",
+       "prefixindex-submit": "دیاری کردن",
+       "prefixindex-strip": "دیندادیس ناْ میٛن نتیچاْیٱل قام کو",
+       "shortpages": "بٱلگاْیٱل کۊچیر",
+       "longpages": "بٱلگاْیٱل بولوند",
+       "deadendpages": "بٱلگاْیٱل بون بٱست",
+       "protectedpages": "بٱلگاْیٱل پٱر و پیم ڤابیڌاْ",
+       "protectedpages-filters": "فيلترٱل",
+       "protectedpages-page": "بٱلگاْ",
+       "protectedpages-expiry": "خلاس ڤابیڌاْ:",
+       "protectedpages-performer": "کاریار پٱر و پیم ڤابیڌاْ.",
+       "protectedpages-params": "پینیارٱل پٱر و پیم کاری",
+       "protectedpages-reason": "دلیل",
+       "protectedpages-submit": "نشوݩ داڌن بٱلگاْیٱل",
+       "protectedpages-unknown-timestamp": "نادیار",
+       "protectedpages-unknown-performer": "کاریار نادیار",
        "listusers": "نومگاْ کاریار",
+       "listusers-creationsort": "میزونکاری ز ری گات راست ڤابیڌن",
+       "listusers-desc": "میزونکاری ز ری گٱپ کۊچیری",
+       "usereditcount": "$1 {{PLURAL:$1|آلشدکاری|آلشدکاریٱل}}",
+       "usercreated": "{{GENDER:$3|راسد ڤابیڌاْ}} سی $1 تا $2",
        "newpages": "بٱلگاْیٱل نۏ",
-       "ancientpages": "کهنه ترین صفحات",
-       "move": "جابجا کردن",
-       "movethispage": "جابجایی ای صفحه",
+       "newpages-submit": "دیاری کردن",
+       "newpages-username": "نوم کاریاری:",
+       "ancientpages": "بٱلگاْیٱل دینداتری",
+       "move": "جاب جا کردن",
+       "movethispage": "جاب جا کردن ای بٱلگاْ",
        "pager-newer-n": "{{PLURAL:ڤانیاتر ز 1|ڤانیاتر ز $1}}",
        "pager-older-n": "{{PLURAL:$1|گٱپسالتر 1|گٱپسالتر $1}}",
+       "apihelp": "هومیاری اْی پی آی",
+       "apihelp-no-such-module": "ماجۊل \"$1\" دیاری نٱکرد.",
+       "apisandbox-submit": "خاستن",
+       "apisandbox-reset": "پاکسا کردن",
+       "apisandbox-retry": "ز نۉ تلاش کردن",
+       "apisandbox-helpurls": "هومپاٛیڤٱند هومیاری",
+       "apisandbox-examples": "نموناْیٱل",
+       "apisandbox-dynamic-parameters": "پینیارٱل اْزافی",
+       "apisandbox-dynamic-parameters-add-label": "اْزاف کردن پینیار:",
+       "apisandbox-dynamic-parameters-add-placeholder": "نوم پینیار.",
+       "apisandbox-add-multi": "اْزاف کردن",
+       "apisandbox-results": "نتیجاْیٱل",
+       "apisandbox-request-url-label": "درخاست یۊ آر اْل:",
+       "apisandbox-request-json-label": "درخاست JSON:",
+       "apisandbox-continue": "ديندا گرهڌن",
+       "apisandbox-continue-clear": "پاکسا کردن",
+       "apisandbox-multivalue-all-values": "$1 (تٱموم ٱرزایشتٱل)",
        "booksources": "سرچشماْیٱل کتاو",
        "booksources-search-legend": "پاٛ جۊری سی سٱرچٱشمٱیٱل کتاو",
        "booksources-search": "پاٛی جۊری",
        "specialloguserlabel": "مؽنتور:",
        "speciallogtitlelabel": "دال(داسۊن یا {{ns:user}}:نوم کاریاری سی کاریار):",
        "log": "پاْرستنوماْیٱل",
+       "logeventslist-submit": "نشوݩ دائن",
        "all-logs-page": "گشڌنمائیٱل",
        "alllogstext": "نمایشت یٱ جا کاْ تٱموم پهرستنۊماْیٱل میٛن {{SITENAME}}.\nایسا تاْرین ڤا گولاْڤورچین کردن جۊر پهرستنۊماْ ، نوم کاریاری(هساس ب کۊچیری و گٱپی هٱرفا) و بٱلگاْیٱل آلشت کرداْ(هساس ب گٱپی و کۊچیری هٱرفا) نمایشت نٱ دیر ز ڤیر کونین.",
        "logempty": "چونو چی کاْ ایسا خاسدین میٛن پهرستنۊماْ نیڌس",
+       "checkbox-select": "گولاْڤورچین کردن: $1",
+       "checkbox-all": "هٱماْ",
+       "checkbox-none": "هيش کوم",
        "allpages": "تٱموم بٱلگاْیٱل",
-       "nextpage": "صÙ\81Ø­Ù\87 Ø¨Ø¹Ø¯ی ($1)",
-       "prevpage": "صÙ\81Ø­Ù\87 Ù\82بÙ\84Û\8c($1)",
-       "allpagesfrom": "نمایش دادن صفحات با شروع زه:",
+       "nextpage": "بٱÙ\84گاÙ\92 Ù\86Û\8cاÛ\8cی ($1)",
+       "prevpage": "بٱÙ\84گاÙ\92 Ø¯Û\8cÙ\86داÛ\8cÛ\8c ($1)",
+       "allpagesfrom": "بٱلگاْیٱلی کاْ ز شورۊ ڤابیڌاْ ناْ دیاری کو:",
        "allarticles": "تٱموم بٱلگاْیٱل",
        "allpagessubmit": "رۉ",
-       "allpagesprefix": "نشو دادن صفحات همراه با پیشوند:",
+       "allpagesprefix": "دیاری کردن بٱلگاْیٱل ڤا پیشڤٱند:",
        "allpages-hide-redirects": "بؽ دیارنیڌن آلشڌتورٱل",
        "categories": "دٱسداْیٱل",
+       "categories-submit": "دیاری کردن",
+       "sp-deletedcontributions-contribs": "هومياریٱل",
+       "linksearch": "هومپاٛیڤٱند پاٛی جۊری خارجی",
+       "linksearch-pat": "سازاْیار پاٛی جۊری:",
+       "linksearch-ns": "نوم جا:",
+       "linksearch-ok": "پاٛی جۊری",
+       "listusers-submit": "نشوݩ دائن",
+       "listusers-noresult": "چونو کاریاری ڤوجۊڌ ناراْ.",
+       "listusers-blocked": "(نیاگری ڤابیڌاْ)",
+       "activeusers": "نومگٱ کاریارٱل کونشتکار",
+       "activeusers-noresult": "چونو کاریارٱلی ڤوجۊڌ نارن.",
+       "activeusers-submit": "دیاری کردن کاریارٱل کونتشکار",
+       "listgrouprights-group": "جٱرغاْ",
+       "listgrouprights-rights": "هوقۊق",
+       "listgrouprights-helppage": "هومیاری:هوقۊق جٱرغاْ",
        "listgrouprights-members": "(نومگاْ ٱندومٱل)",
+       "listgrouprights-addgroup": "{{PLURAL:$2|جٱرغاْ|جٱرغاْیٱل}} ناْ اْزاف کونین: $1",
+       "listgrouprights-removegroup": "{{PLURAL:$2|جٱرغاْ|جٱرغاْیٱل}} ناْ ڤوردارین: $1",
+       "listgrouprights-addgroup-all": "اْزاف کردن تٱموم جٱرغاْیٱل",
+       "listgrouprights-removegroup-all": "ڤورداشتن تٱموم جٱرغاْیٱل",
+       "listgrants-rights": "هوقۊق",
+       "trackingcategories-name": "نوم پاٛیغوم",
        "emailuser": "ٱنجوماناماْ کاریار",
-       "usermessage-editor": "پاٛیغوم فرشن سامۊناْیی",
+       "emailuser-title-notarget": "ٱنجوماناماْ کاریار",
+       "defemailsubject": "{{SITENAME}} ٱنجوماناماْ ز کاریار \"$1\"",
+       "emailusername": "نوم کاریاری:",
+       "emailusernamesubmit": "داڌن",
+       "email-legend": "یٱ ٱنجومانٱماْ سی کاریار دیٱری {{SITENAME}} بیٛسی کو",
+       "emailfrom": "ز:",
+       "emailto": "سی:",
+       "emailsubject": "داسوݩ:",
+       "emailmessage": "پاٛیغوم",
+       "emailsend": "بیٛسی کردن",
+       "emailccme": "یٱ کوپی ز پاٛیغوموم سیم بیٛسی کو",
+       "emailsent": "ٱنجوماناماْ بیٛسی ڤابیڌاْ",
+       "emailsenttext": "پاٛیغومتوݩ ٱنجوماناماْیی بیٛسی ڤابیڌاْ.",
+       "usermessage-summary": "لاهاڌن پاٛیغوم سیستمی.",
+       "usermessage-editor": "پاٛیغوم فرشن ساموناْیی",
        "watchlist": "لیسڌ دیناگریٱل مو",
-       "mywatchlist": "سئیل بٱرگ",
+       "mywatchlist": "ساÙ\9bیل بٱرگ",
        "watchlistfor2": "سی $1 $2",
-       "addedwatchtext": "صفحه «<nowiki>$1</nowiki>» به [[Special:Watchlist|لیست پی‌گیری‌های ]] ایسا\nاضاف وابید.\nتغییرات این صفحه و صفحه صحبت مر بوطه اش در آینده ایچو لیست ابوه. به‌علاوه، ای صفحه، سی واضح‌تر دیده وابیدن در [[Special:RecentChanges|فهرست تغییرات اخیر]] به شکل <b>سیاه</b> ایا.\n\nایر بعدا خواستین ای  صفحه زه لیست پی‌گیریهاتو ورداشته بوه، رو «'''عدم پی‌گیری'''» در بالای صفحه کلیک کنین.",
-       "removedwatchtext": "آن صفحه\"[[:$1]]\" جابجا وابیده زه[[Special:لیست پیگیری|لیست پیگیری ایسا]].",
+       "watchnologin": "هٱنی نٱڤۊڌیناْ ڤامیٛن",
+       "addwatch": "اْزاف کردن ب ساٛیل بٱرگ",
+       "addedwatchtext": "\"[[:$1]]\" و بٱلگاْ چٱک چناْس  اْزاف ڤابی ب [[Special:ساٛیل بٱرگ|ساٛیل بٱرگ]]توݩ .",
+       "removewatch": "ڤورداشتن ز ساٛیل بٱرگ",
+       "removedwatchtext": "\"[[:$1]]\" و بٱلگاْ چٱک چناْس  ز [[Special:نومگاْ ساٛیل بٱرگ|نومگٱ ساٛیل بٱرگ]]ایسا ڤورداشتاْ ڤابی.",
+       "removedwatchtext-talk": "\"[[:$1]]\" و بٱلگاْ هومیاریس  ز [[Special:نومگاْ ساٛیل بٱرگ|نومگٱ ساٛیل بٱرگ]]ایسا ڤورداشتاْ ڤابی.",
        "watch": "پاٛیگری",
-       "watchthispage": "پیگیری ای صفحه",
+       "watchthispage": "پاٛگری ای بٱلگاْ",
        "unwatch": "پاٛیگری نٱڤابیڌاْ",
        "watchlist-details": "{{PLURAL:$1|$1 بٱلٛگاْ|$1 بٱلٛگیٱل}} مؽن لیست دیناگری ایسا,هؽڌا",
        "wlheader-showupdated": "بٱلٛگیٱلؽ کاْ دیناتٱر زاْ آخرین ساٛل اؽسا آلشڌ آڤیڌ ناْ<strong>پورٱنڳ</strong> نماونیڌاْ آڤیڌناْ",
        "wlnote": "ڤاْ لٱم {{PLURAL:$1|آلشڌؽ|<strong>$1</strong> آلشڌؽ}} کاْ ڤاْ {{PLURAL:$2|سات|<strong>$2</strong> سات}} رٱئڌاْ انجوم آڤؽڌ مۉجۊڌ هؽڌا،ؤرگار دوکرٱت ڤینی دینائی: $3، $4",
        "wlshowlast": "نماونیڌن ٱخیری $1 سات $2 رۊز",
+       "watchlist-hide": "قام کردن",
+       "watchlist-submit": "نشوݩ دائن",
+       "wlshowhideminor": "هیرداْ ڤیرایشت",
+       "wlshowhidebots": "روڤاتٱل",
+       "wlshowhideliu": "کاریارٱل سٱڤت نام کرداْ",
+       "wlshowhideanons": "کاریارٱل نادیار",
+       "wlshowhidemine": "آلشدکاریٱل مو",
+       "wlshowhidecategorization": "دٱسداْ بٱندی بٱلگاْ",
        "watchlist-options": "دزاٛیٱل دیناگری",
-       "watching": "مئن حالت پي جوري",
-       "unwatching": "درحالت عدم پیگیری...",
+       "watching": "میٛن هال و بال پاٛیگری",
+       "unwatching": "میٛن هال و بال پاٛیگری نٱکردن...",
        "enotif_reset": "دزاٛکرڌن گشڌ بٱلٛگیٱل ڤاْ اوڌڤان نیٱشڌ آڤیڌاْ",
-       "deletepage": "حذف صفحه",
-       "historywarning": "توجه: آن صفحه ای که ایسا اخوین حذف کنین گزارش تاریخی داره:",
-       "confirmdeletetext": "ایسا اخوین یه صفحه بلند با همه گزارش تاریخی هونه حذف کنین.\nلطفا کانفیرم یا تائید کنین که تمایل وقصد ای کار را دارین, وایسا دوین یا می دانید نتایج وآثار ای کار را, و ایسا انجام ادین ای کار را مطابق با [[{{MediaWiki:Policy-url}}|سیاست‌ها]].",
-       "actioncomplete": "عمل  مربوطه راکامل کن",
-       "deletedtext": "\"$1\" حذف وابیده.\nبوین $2 سی ثبت حذف آخر.",
+       "enotif_impersonal_salutation": "{{SITENAME}} کاریار",
+       "enotif_minoredit": "یو یٱ هیرداْ ڤیرایشداْ",
+       "deletepage": "پاکسا کردن بٱلگاْ",
+       "confirm": "پوشت راست کاری کردن",
+       "excontent": "میٛنوناْ: \"$1\" بی",
+       "delete-confirm": "پاکسا کردن \"$1\"",
+       "delete-legend": "پاکسا کردن",
+       "historywarning": "ب ڤیرتوݩ بۊ:بٱلگاْیی کاْ ایسا خاین پاکساس کونین یٱ ڤیرگار $1 ڤا{{PLURAL:$1|ڤانیٱری|ڤانیٱریٱل}} داراْ:",
+       "historyaction-submit": "نشوݩ دائن",
+       "confirmdeletetext": "ایسا اْخاین یٱ بٱلگاْ بولوند ناْ ڤا تٱموم ڤیرگارس پاکسا کونن.\nلوتف کونین پوشت راستکاری کونین کاْ چونو کاری ناْ اْخاین ٱنجوم بڌین، ایسا دونین کاْ نتیجاْ و آریٛنگ کاری کاْ خاین ٱنجوم بڌین ڤا زی ری  [[{{MediaWiki:Policy-url}}|سیاستٱل]] بۊ.",
+       "actioncomplete": "کار کاْ خلاس ڤابی",
+       "actionfailed": "کار کاْ ناخوش سرٱنجوم بی",
+       "deletedtext": "\"$1\" پاکسا ڤابیڌاْ.\nبیٛنیٱر ب $2 سی سٱڤت آخری پاکسا کاریٱل.",
        "dellogpage": "پهرستنۊماْ پاکسا کردن",
+       "deletionlog": "پهرستنۊماْ پاکسا کردن",
        "deletecomment": "دلیل:",
-       "deleteotherreason": "دÛ\8cÙ\87/دÙ\84Û\8cÙ\84 Ø§Ø¶افی:",
-       "deletereasonotherlist": "دÙ\84Û\8cÙ\84 Ø¯Û\8cÙ\87",
+       "deleteotherreason": "دÛ\8cٱر/دÙ\84Û\8cÙ\84 Ø§Ù\92زافی:",
+       "deletereasonotherlist": "دÙ\84Û\8cÙ\84 Ø¯Û\8cٱر",
        "rollbacklink": "ڤورگٱشتن",
        "rollbacklinkcount": "چٱڤاساْ کردن $1 {{PLURAL:$1|آلشدکاری|آلشدکاریٱل}}",
+       "changecontentmodel-title-label": "داسوݩ بٱلگاْ",
+       "changecontentmodel-model-label": "مودل میٛنوناْ تازاْ",
+       "changecontentmodel-reason-label": "دلیل:",
+       "changecontentmodel-submit": "آلشد کردن",
        "protectlogpage": "پهرستنۊماْ پٱر و پیم کاری",
        "protectedarticle": "پٱر و پیم ڤابیڌاٛ \"[[$1]]\"",
        "modifiedarticleprotection": "بارت هناگری«[[$1]]» ناْ آلشڌنیڌ",
-       "prot_1movedto2": "[[$1]] جابجا وابید به[[$2]]",
+       "prot_1movedto2": "[[$1]] جا ب جا ڤابی سی [[$2]]",
        "protectcomment": "دلیل:",
-       "protectexpiry": "سپرÛ\8c Ù\88ابÛ\8cÚ\8eÙ\87 Ø§:",
-       "protect_expiry_invalid": "با سپری وابیدن وقت غیر معتبره.",
-       "protect_expiry_old": "سپری وابیدن وقت مربوط به گذشته.",
-       "protect-text": "ایسا ممکنه بوینین وتغییر بدین سطح حمایت زه ای صفحه'''$1'''.",
-       "protect-locked-access": "حساب کاربری ایسا اجازه تغییر سطح حمایت ای صفحه را نداره.\nای چونه تنظیمات جاری سی آن صفحه '''$1''':",
-       "protect-cascadeon": "ای صفحه  در حال حاضر حفاظت وحمایت وابیده چون که در {{PLURAL:$1|صفحه|صفحات}}\nزیر که گزینه حفاظت وحمایت موجی {{PLURAL:$1|آن|آن‌ها}} فعال هده ،\nایسا ترین سطح حفاظت ای صفحه را تغییر بدین اما ای کارنتره تاثیری رو\nحفاظت وحمایت موجی صفحه داشته بوه.",
+       "protectexpiry": "Ø®Ù\84اس Ú¤Ø§Ø¨Û\8cÚ\8cاÙ\92:",
+       "protect_expiry_invalid": "گات تٱموم ڤابیڌن دوروست نیڌ.",
+       "protect_expiry_old": "گات تٱموم ڤابیڌن ز دینداتراْ.",
+       "protect-text": "گاشا ایسا ریتراز پٱر و پیم کاری بٱلگاْ ناْ بیٛنیٱرین و آلشدس کونین سی '''$1'''.",
+       "protect-locked-access": "هساو کاریاری ایسا سلا آلشدکاری ریتراز پٱر و پیم کاری ناْ ناراْ.\nمیزونکاری ایسنی سی بلگاْ ایچوناْ '''$1''':",
+       "protect-cascadeon": "This page is currently protected because it is transcluded in the following {{PLURAL:$1|page, which has|pages, which have}} cascading protection turned on.\nChanges to this page's protection level will not affect the cascading protection.",
        "protect-default": "هٱماْ کاریارٱل سلادارن",
-       "protect-fallback": "درخواست\"$1\" اجازه",
-       "protect-level-autoconfirmed": "بستن کاربران ثبت نام نوابیده",
-       "protect-level-sysop": "Sysops فقط",
-       "protect-summary-cascade": "موجی کردن",
-       "protect-expiring": "سپری وابیده $1 (UTC)",
+       "protect-fallback": "فٱقٱت کاریارٱلی کاْ ب «$1» دٱسرسی دارن، سلادار ای کارن.",
+       "protect-level-autoconfirmed": "فٱقٱت کاریارٱلی کاْ خودپوشت راست کاری ڤابیڌناْ سلا چونو کاری دارن",
+       "protect-level-sysop": "فٱقٱت سردیڤونکارٱل",
+       "protect-summary-cascade": "مۉجی کردن",
+       "protect-expiring": "گات تٱمو ڤابیڌاْ $1 (UTC)",
+       "protect-expiry-indefinite": "بی گات",
        "protect-cascade": "حمایت صفحات دربرگیرنده در ای صفحه (cascading protection)",
        "protect-cantedit": "ایسا نترین تغییر بدین سطوح حمایتی ای صفحه را, زیرا ایسا اجازه اصلاح آن را ندارین.",
+       "protect-othertime": "گات هیٛنی:",
+       "protect-othertime-op": "گات هیٛنی:",
+       "protect-otherreason-op": "دلیل هیٛنی",
        "protect-expiry-options": "۱ ساعت:1 hour,۱ روز:1 day,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌نهایت:infinite",
        "restriction-type": "اجازه:",
        "restriction-level": "سطح محدودیت:",
-       "restriction-edit": "ڤيرایشت کردن",
+       "pagesize": "(بایتٱل)",
+       "restriction-edit": "آلشدکاری کردن",
        "restriction-move": "جا ڤا جا کردن",
+       "restriction-create": "راس كردن",
+       "restriction-upload": "سوڤارکرد",
        "undeletebtn": "بازیافت",
+       "undeleteviewlink": "ديڌن",
+       "undeletecomment": "دلیل:",
+       "undelete-search-submit": "پاٛی جۊری",
+       "undelete-show-file-submit": "هٱراْ",
        "namespace": "نوم جا:",
        "invert": "گولڤورچین کردن بٱرٱسگ بۊ",
        "tooltip-invert": "ز ری ای جٱڤاْ بپۊرنین و آلشدٱلی ناْ کاْ ماٛنجقا نوم ڤٱرگٱ گولاْڤورچین ڤابیڌن و ٱنجوم داڌاْ ڤابیڌناْ قام کونین.",
        "sp-contributions-blocklog": "پهرستنوماْ قولف ڤابیڌاْ",
        "sp-contributions-uploads": "سوڤارکردٱل",
        "sp-contributions-logs": "پاْرستنۊماْیٱل",
-       "sp-contributions-talk": "Ú\86Ù±Ú© Ú\86Ù\86اÙ\9b",
+       "sp-contributions-talk": "Ú\86Ù±Ú© Ú\86Ù\86اÙ\92",
        "sp-contributions-search": "سی هومیاریٱل پاٛی جۊری ڤابۊ",
        "sp-contributions-username": "نوم ناٛشۊن آی پی یا نوم کاریاری",
        "sp-contributions-toponly": "فقٱت آلشدکاریٱلی کاْ جۏزڤاْ آخریݩ دۉران دیاری کو",
        "whatlinkshere-hidelinks": "هومپاٛیڤٱند سی $1",
        "whatlinkshere-hideimages": "جانیا هومپاٛیڤٱندٱل $1",
        "whatlinkshere-filters": "فيلترٱل",
-       "blockip": "بستن کاربر",
+       "whatlinkshere-submit": "رۉ",
+       "autoblockid": "خود نیاگری #$1",
+       "block": "قولف کردن کاریار",
+       "unblock": "قولف نکردن کاریار",
+       "blockip": "قولف کردن {{GENDER:$1|کاریار}}",
+       "ipaddressorusername": "نوم نشوݩ آی پی یا نوم کاریاری",
+       "ipbreason": "دلیل:",
        "ipbcreateaccount": "راسد کردن هساو کاریاری",
+       "ipbsubmit": "ای کاریار ناْ نیاگری کو",
+       "ipbother": "گات هیٛنی:",
        "ipboptions": "۲ سات:2 hours,۱ رۊز:1 day,۳ رۊز:3 days,۱ هٱفتاْ:1 week,۲ هٱفتاْ:2 weeks,۱ ما:1 month,۳ ما:3 months,۶ ما:6 months,۱ سال:1 year,بی ڤیرگار:infinite",
+       "ipb-pages-label": "بٱگاْیٱل",
+       "ipb-namespaces-label": "نوم ڤارگٱیٱل",
+       "autoblocklist-submit": "پاٛی جۊری",
        "ipblocklist": "آدرسهای  آی پی وکاربران بسته وابیدند",
        "blocklist-userblocks": "قام کردن هساو نیاگری ڤابیڌاْ.",
        "infiniteblock": "بؽ تٱ",
index f4e74cb..eb808fd 100644 (file)
@@ -83,7 +83,7 @@
        "mon": "Lun",
        "tue": "Meu",
        "wed": "Mer",
-       "thu": "Meu",
+       "thu": "Yaou",
        "fri": "Gwe",
        "sat": "Sad",
        "january": "Genver",
        "december-date": "$1 a viz Kerzu",
        "period-am": "mintin",
        "period-pm": "goude-merenn",
-       "pagecategories": "{{PLURAL:$1|Rummad |Rummad }}",
+       "pagecategories": "{{PLURAL:$1|Rummad|Rummadoù}}",
        "category_header": "Niver a bennadoù er rummad \"$1\"",
        "subcategories": "Isrummadoù",
        "category-media-header": "Restroù liesvedia er rummad \"$1\"",
        "duplicate-args-category": "Pajennoù a ra gant arguzennoù eilet er galvoù patrom",
        "duplicate-args-category-desc": "Er bajenn-mañ ez eus galvoù patroù a ra gant arguzennoù eilet, evel <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> pe <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "<strong>Diwallit :</strong>: Re a c'halvoù koustus e-keñver an arc'hwelioù parser zo er bajenn-mañ.\n\nDleout a rafe bezañ nebeutoc'h eget $2 {{PLURAL:$2|galv}}, ha {{PLURAL:$1|$1 galv}} zo.",
-       "expensive-parserfunction-category": "Pagjennoù enno re a c'halvoù koustus e-keñver an arc'hwelioù parser.",
+       "expensive-parserfunction-category": "Pajennoù enno re a c'halvoù koustus e-keñver an arc'hwelioù parser",
        "post-expand-template-inclusion-warning": "Diwallit : re a batromoù zo war ar bajenn-mañ.\nLod anezho a vo lakaet a-gostez.",
        "post-expand-template-inclusion-category": "Pajennoù enno re a batromoù",
        "post-expand-template-argument-warning": "Diwallit : war ar bajenn-mañ ez eus eus da nebeutañ un arventenn eus ur patrom zo re vras.\nA-gostez eo bet lezet an arventenn-se.",
index e2af414..dde20d9 100644 (file)
        "contribsub2": "Per a {{GENDER:$3|$1}} ($2)",
        "contributions-userdoesnotexist": "El compte d'usuari «$1» no està registrat.",
        "nocontribs": "No s’ha trobat cap canvi que encaixés amb aquests criteris.",
-       "uctop": "actual",
+       "uctop": "darrera",
        "month": "Mes (i anteriors):",
        "year": "Any (i anteriors):",
        "sp-contributions-newbies": "Mostra les contribucions dels usuaris novells",
index a79c51c..50ec661 100644 (file)
        "nstab-template": "Skabelon",
        "nstab-help": "Hjælpeside",
        "nstab-category": "Kategori",
-       "mainpage-nstab": "Hovedside",
+       "mainpage-nstab": "Fovedside",
        "nosuchaction": "Funktionen findes ikke",
        "nosuchactiontext": "Handlingen som er angivet i URL'en er ugyldig.\nDu har måske skrevet URL'en forkert eller fulgt et ukorrekt link.\nDet kan også skyldes en fejl i softwaren, som bruges af {{SITENAME}}.",
        "nosuchspecialpage": "En sådan specialside findes ikke",
index da46154..c661dba 100644 (file)
        "september": "Keşkelun",
        "october": "Tışrino Verên",
        "november": "Tışrino Peyên",
-       "december": "Gağan",
+       "december": "Kanun",
        "january-gen": "Çele",
-       "february-gen": "Sıbat",
+       "february-gen": "Gucige",
        "march-gen": "Adar",
        "april-gen": "Nisane",
        "may-gen": "Gulane",
        "september-gen": "Keşkelun",
        "october-gen": "Tışrino Verên",
        "november-gen": "Tışrino Peyên",
-       "december-gen": "Gağan",
+       "december-gen": "Kanun",
        "jan": "Çel",
-       "feb": "Sbt",
+       "feb": "Gcg",
        "mar": "Adr",
        "apr": "Nsn",
        "may": "Gul",
        "nov": "Tşp",
        "dec": "Gğn",
        "january-date": "$1 Çele",
-       "february-date": "$1 Sıbat",
+       "february-date": "$1 Gucige",
        "march-date": "$1 Adar",
        "april-date": "$1 Nisane",
        "may-date": "$1 Gulane",
        "september-date": "$1 Keşkelun",
        "october-date": "$1 Tışrino Verên",
        "november-date": "$1 Tışrino Peyên",
-       "december-date": "$1 Gağan",
+       "december-date": "$1 Kanun",
        "period-am": "VD",
        "period-pm": "BD",
        "pagecategories": "{{PLURAL:$1|Kategoriye|Kategoriyi}}",
        "and": "&#32;u",
        "faq": "PVP",
        "actions": "Hereketi",
-       "namespaces": "Heruna naman",
+       "namespaces": "Heruna nameyan",
        "variants": "Varyanti",
        "navigation-heading": "Menuyê navigasyoni",
        "errorpagetitle": "Xeta",
        "delete": "Bestere",
        "undelete_short": "{{PLURAL:$1|Yew vırnayışi|$1 Vırnayışan}} mestere",
        "viewdeleted_short": "{{PLURAL:$1|Jew vurnayış esternayi|$1 Vurnayışanê esternayan}} bımotne",
-       "protect": "Bısıtarne",
+       "protect": "Bışevekne",
        "protect_change": "bıvırne",
        "unprotect": "Starnayışi bıvurne",
        "newpage": "Perra newi",
        "newmessageslinkplural": "{{PLURAL:$1|yew mesaco newe|999=mesacê newey}}",
        "newmessagesdifflinkplural": "{{PLURAL:$1|vurnayışo peyên|999=vurnayışê peyêni}}",
        "youhavenewmessagesmulti": "$1 mesaco newe esto",
-       "editsection": "bıvırne",
+       "editsection": "bıvurne",
        "editold": "bıvurne",
        "viewsourceold": "çımey cı bıvinê",
-       "editlink": "bıvırne",
+       "editlink": "bıvurne",
        "viewsourcelink": "çımey bıvêne",
        "editsectionhint": "Leteyo ke bıvuriyo: $1",
        "toc": "Zerreki",
        "sort-ascending": "Rêzkerdışo zêdiyaye",
        "nstab-main": "Pele",
        "nstab-user": "Pera karberi",
-       "nstab-media": "Perra medya",
+       "nstab-media": "Pela medya",
        "nstab-special": "Perra xısusiye",
        "nstab-project": "Perra proji",
        "nstab-image": "Dosya",
        "cascadeprotected": "Ena perre vırnayışan rê akerde niya, çunke a {{PLURAL:$1|perre|perranê}} bınênan de zi yew be yew ravêrdeya, gırweniyena:\n$2",
        "namespaceprotected": "No '''$1''' ca de icazetê şıma çino şıma pel rêz keri.",
        "customcssprotected": "İzına şıma çıniya ke ena perra CSSi bıvırnên, çıke ena perra xısusiye eyaranê karberan gêna xo miyan.",
+       "customjsonprotected": "İzına şıma çıniya ke ena pela JSONi bıvırnên, çıke ena pela xısusiye eyaranê karberan gêna xo miyan.",
        "customjsprotected": "İzına şıma çıniya ke ena perra Java Scripti bıvırnên, çıke ena perra xısusiye eyaranê karberan gêna xo miyan.",
        "mycustomcssprotected": "Desturê şıma çıniyo ke na pela CSSi bıvurnê.",
+       "mycustomjsonprotected": "Desturê şıma çıniyo ke na pela JSONi bıvurnê.",
        "mycustomjsprotected": "Desturê şıma çıniyo ke na pela JavaScripti bıvurnê.",
        "myprivateinfoprotected": "Ğısusi malumatana ğo timar kerdışire icazeta şıma çıniya.",
        "mypreferencesprotected": "Terciha timar kerdışire icazeta şıam çıniya.",
        "virus-unknownscanner": "antiviruso ke nêzanyeno:",
        "logouttext": "'''Henda şıma hesab ra veciyay.'''\n\nDiqat kerê ke tayê perri şenê hewna zey şıma kewtê ra cı bıasê, heta şıma ver-virê şanekerê (browserê) xo besterê.",
        "cannotlogoutnow-title": "Enewke ronıştışo nêracneyêno",
+       "cannotlogoutnow-text": "Gurenayışê $1i de veciyayış mımkın niyo.",
        "welcomeuser": "Heyr amey, $1!",
        "welcomecreation-msg": "Hesabê şıma abiyo.\n[[Special:Preferences|{{SITENAME}} vurnayişê tercihanê xo]], xo vir ra mekere.",
        "yourname": "Namey karberi:",
        "cannotloginnow-title": "Enewke ronıştışo nêabeno",
        "cannotloginnow-text": "$1 karkerdışa ronıştış akerdış mıkum niyo.",
        "cannotcreateaccount-title": "Nêşenay hesab rakerê",
+       "cannotcreateaccount-text": "Direkt hesabvıraştış na wiki sero mımkın niyo.",
        "yourdomainname": "Yewdestê şıma:",
        "password-change-forbidden": "Şıma na wiki de nêşenê parola bıvurnê.",
        "externaldberror": "Ya database de xeta esta ya zi heqê şıma çino şıma no hesab bıvurni.",
        "createacct-realname": "Nameyo raştıkên (mecburi niyo)",
        "createacct-reason": "Sebeb",
        "createacct-reason-ph": "Şımaye çı xo re zewbi hesab vırazeni?",
+       "createacct-reason-help": "Roceka hesabvıraştışi de mesaco asaye",
        "createacct-submit": "Hesabê xo vıraze",
        "createacct-another-submit": "Hesab vıraze",
        "createacct-continue-submit": "Hesab vıraştışi rê devam ke",
        "nocookieslogin": "Semedê akerdışê hesabi çerezê {{SITENAME}}i gurêniyenê.\nŞıma çerezi qapan kerdi.\nRavêri inan akerê u reyna bıcerrebnê.",
        "nocookiesfornew": "Hesabê karberi nêvıraziya, MA nêzana sebebê cı kotirawo.\nAkerdış dê çerezarê xo emel bê uena pela fına barkerê.",
        "nocookiesforlogin": "{{int:nocookieslogin}}",
+       "createacct-loginerror": "Hesabê şıma vıraziya, labelê ronıştışo otomatik anêbiyayo. Kerem ke, şo pela  [[Special:UserLogin|cıkewtışo manuel]].",
        "noname": "Yew nameyo maqbul bınuse.",
        "loginsuccesstitle": "Hesab abıya",
        "loginsuccess": "'''{{SITENAME}} dı name dê \"$1\" şıma hesab akerdo.'''",
        "botpasswords-existing": "Paroleyê botanê mewcudi",
        "botpasswords-createnew": "Newe Paroleyê boti vıraze",
        "botpasswords-editexisting": "Mewcud parolaye boti timar ke",
+       "botpasswords-label-needsreset": "(parola gani ravurriyo)",
        "botpasswords-label-appid": "Nameyê boti:",
        "botpasswords-label-create": "Vıraze",
        "botpasswords-label-update": "Rocane ke",
        "botpasswords-label-cancel": "Bıtexelne",
        "botpasswords-label-delete": "Bestere",
        "botpasswords-label-resetpassword": "Parola raçarne",
+       "botpasswords-label-grants": "İmtıyazê ravêrdeyi:",
        "botpasswords-label-grants-column": "Dayen",
+       "botpasswords-bad-appid": "Nameyê boti \"$1\" ravêrde niyo.",
        "botpasswords-created-title": "Parolay boti vırazi yê",
        "botpasswords-updated-title": "Parolay boti rocane yê",
        "botpasswords-deleted-title": "Parolay boti esteri yê",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider nêgureniyeno.",
        "resetpass_forbidden": "parolayi nêvuryayi",
+       "resetpass_forbidden-reason": "Parola nêvuriyena: $1",
        "resetpass-no-info": "şıma gani hesab akere u hona bıeşke bırese cı",
        "resetpass-submit-loggedin": "Parola bıvurne",
        "resetpass-submit-cancel": "Bıtexelne",
        "passwordreset-emailtext-user": "$1 enê karberi, {{SITENAME}}  ra ($4) teferuatê hesab dê şıma  va wa biyaro xo viri. Karbero ke cêrdeyo {{PLURAL:$3|hesaba|eno hesaba}} ena e-posta adresiya aleqey cı esto:\n\n$2\n\n{{PLURAL:$3|ena parola idaretena|ena parola idareten}} {{PLURAL:$5|jew roc|$5  roca}}rêya.\nEna parolaya deqewe de u xorê ju parolaya newi bıweçine. Parolaya şıma emaya şıma viri se  yana  ena e-posta şıma nê weştase u şıma qayıl niye parolaya xo bıvurnese, ena mesacer peygoş bıkerê.",
        "passwordreset-emailelement": "Nameyê karberi: \n$1\n\nParolaya vêrdiye: \n$2",
        "passwordreset-emailsentemail": "Eger kı ena e-posta şıma rê se, yew e-posta do bırışiyo eno hesab.",
+       "passwordreset-nocaller": "Yew meyman tedarık kerê",
+       "passwordreset-nosuchcaller": "Meyman çıniyo: $1",
        "passwordreset-invalidemail": "Adresê eposta raşt niya",
        "changeemail": "E-posta adresa xo wedarne",
        "changeemail-header": "E-posta adresa xo vuriyayışi rë ena former pır kerë. Eger kı şıma qayılë kı e postay adresi ra wedarnë se formi rıştış dı heruna e posta veng verdë",
        "changeemail-no-info": "Şıma gani bıkewê pele ke derdest bıresê na pele.",
        "changeemail-oldemail": "E-postay şımawa nıkaêne:",
        "changeemail-newemail": "E-postay şımawa newiye:",
-       "changeemail-none": "(Ã\87ıniyo)",
+       "changeemail-none": "(çıniyo)",
        "changeemail-password": "Parolay şımawa {{SITENAME}}i:",
        "changeemail-submit": "E-postay xo bıvırnên",
        "changeemail-throttled": "Şıma zaf ronıştış akerdış ke.\nKerem ke verdi dekewten $1 bıpawe.",
+       "changeemail-nochange": "Kerem ke, yew adresa e-posteyê newiye cı ke.",
        "resettokens": "Nışanan reset ke",
        "resettokens-text": "Şıma tiya de hesabê şıma ra elaqedar tayê kılitê icazetê cıresayışê melumati şenê sıfır kerê.\n\nŞıma be ğeletiye ra ke nê kerdê vıla ya zi hesabê şıma de xırabiye ke esta, naye bıkerê.",
        "resettokens-no-tokens": "Nışanê reseti çıniyê",
-       "resettokens-tokens": "Nışani:",
+       "resettokens-tokens": "Kıliti:",
        "resettokens-token-label": "$1 (weziyeto nıkaên: $2)",
        "resettokens-watchlist-token": "Web Feed rê nışan (Atom/RSS)ê [[Special:Watchlist|vêreno perranê lista şımawa seyrkerdışi]]",
        "resettokens-done": "Nışanan reset ke",
        "templatesused": "{{PLURAL:$1|Şablon|Şabloni}} ke ena perrer de karneyayê:",
        "templatesusedpreview": "{{PLURAL:$1|Sablon|Sabloni}}  ke na verqayt de xebetnayê:",
        "templatesusedsection": "{{PLURAL:$1|Template|Templateyan}}  ke na qısım de xebetniyenê:",
-       "template-protected": "(sıtarna)",
+       "template-protected": "(şeveknaye)",
        "template-semiprotected": "(nime staryayış)",
        "hiddencategories": "Ena per de {{PLURAL:$1|1 kategoriyo nımıte|$1 kategoriyê nımıtey}} muhtewa benê:",
        "edittools": "<div id=\"specialcharss\" class=\"toccolours specialchars\" style=\"margin-top:.5em; padding: .3em .5em; font-size: 100%; color:#aaa; text-align:left;\" title=\"{{int:bw-edittools-tooltip}}\">\n<p class=\"specialbasic\" id=\"Standard\">\n'''{{int:bw-edittools-lead-in}}''' \n<charinsert>Á á É é Í í Ó ó Ú ú Ý ý</charinsert> –\n<charinsert>À à È è Ì ì Ò ò Ù ù </charinsert> –\n<charinsert> â Ê ê Î î Ô ô Û û </charinsert> –\n<charinsert>Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ</charinsert> –\n<charinsert>Æ æ Ø ø Œ œ ẞ ß </charinsert> –\n<charinsert>Å å Ů ů </charinsert> –\n<charinsert>àã Ẽ ẽ ɛ̃ Ĩ ĩ Ñ ñ Õ õ ɔ̃ Ũ ũ </charinsert> –\n<charinsert>Рð Þ þ </charinsert> –\n<charinsert>Ç ç Ģ ģ Ķ ķ Ļ ļ Ņ ņ Ŗ ŗ Ş ş Ţ ţ </charinsert> –\n<charinsert>Ć ć Ĺ ĺ Ń ń Ŕ ŕ Ś ś Ý ý Ź ź </charinsert> –\n<charinsert>Č č Ď ď Ľ ľ Ň ň Ř ř Š š Ť ť Ž ž </charinsert> –\n<charinsert>Ǎ ǎ Ě ě Ǐ ǐ Ǒ ǒ Ǔ ǔ </charinsert> –\n<charinsert>Ā ā Ē ē Ī ī Ō ō Ū ū </charinsert> –\n<charinsert>ǖ ǘ ǚ ǜ </charinsert> –\n<charinsert>Ĉ ĉ Ĝ ĝ Ĥ ĥ Ĵ ĵ Ŝ ŝ Ŵ ŵ Ŷ ŷ </charinsert> –\n<charinsert>Ă ă Ğ ğ Ŭ ŭ </charinsert> –\n<charinsert>Ċ ċ Ė ė Ġ ġ Għ għ İ ı Ż ż </charinsert> –\n<charinsert>Ą ą Ę ę Į į Ų ų </charinsert> –\n<charinsert>Ő ő Ű ű </charinsert> –\n<charinsert>Đ đ Ħ ħ Ł ł Ŀ ŀ </charinsert> –\n<charinsert>Ɖ ɖ Ɛ ɛ Ƒ ƒ Ɣ ɣ Ŋ ŋ Ɔ ɔ Ʋ ʋ </charinsert> -\n<charinsert>Ə ə </charinsert> –\n<charinsert>– — ’</charinsert> –\n<charinsert>~ | ° ¹ ² ³ ⅛ ¼ ⅓ ⅜ ½ ⅝ ¾ ⅔ ⅞ € $ ¥ £ † × ← → ↔ ↑ ± ≠ © ® ™ ‰ «+» ‹+› „+“ „+” ‚+‘ ¡ ¿ …</charinsert> –\n<charinsert>&amp;nbsp; &nbsp; [[Category:+]] #REDIRECT[[+]] {{msg-mw|+|notext=1}} &#33;!FUZZY!! ~~~~  &lt;nowiki>+</nowiki></charinsert>\n<charinsert>ڈ ڑ ٹ </charinsert>\n<charinsert>ټ څ ځ ډ ړ ږ ښ ڼ ؤ ي ې ۍ ئ </charinsert>\n<charinsert>{{{+}}} {{+}} {{subst:+}} <noinclude>+</noinclude></charinsert>\n<charinsert>&lt;!--&nbsp;+&nbsp;--> &lt;br&nbsp;/></charinsert>\n</p></div>",
        "searchrelated": "eleqeyın",
        "searchall": "pêro",
        "showingresults": "#<strong>$2</strong> netican ra {{PLURAL:$1|<strong>1</strong> netice cêr dero|<strong>$1</strong> neticey cêr derê}}.",
-       "showingresultsinrange": "{{PLURAL:$1|<strong>1</strong> netice|<strong>$1</strong> neticey}} be mabeynê #<strong>$2</strong> ra be #<strong>$3</strong> cêr asenê.",
+       "showingresultsinrange": "Cêr de #<strong>$2</strong> be heta #<strong>$3</strong> ra {{PLURAL:$1|<strong>1</strong> netice mocniyeno|<strong>$1</strong> neticeyi mocniyenê}}.",
        "search-showingresults": "{{PLURAL:$4|<strong>$3</strong>| <strong>$3</strong> netican ra <strong>$1 ra hetana $2</strong> asenê}}",
        "search-nonefound": "Zey perskerdışê şıma peyniye çıniya.",
        "search-nonefound-thiswiki": "Ena sita dı zey waşten da şıma theba nêvineya",
        "powersearch-legend": "Cıgeyrayışo hera",
        "powersearch-ns": "Cayanê naman de cıgeyrayış:",
-       "powersearch-togglelabel": "Kontrol ke:",
+       "powersearch-togglelabel": "Weçine:",
        "powersearch-toggleall": "Pêro",
        "powersearch-togglenone": "Çıniyo",
        "powersearch-remember": "Cıgeyrayışanê newe tepyayan de biya xo viri",
        "email-allow-new-users-label": "Karberanê neweyan ra eposte gırotışi rê mısade bıdê",
        "email-blacklist-label": "Wa nê karberi mı rê mesac nêrışê:",
        "prefs-searchoptions": "Cı geyre",
-       "prefs-namespaces": "Heruna naman",
+       "prefs-namespaces": "Heruna nameyan",
        "default": "qısur",
        "prefs-files": "Dosyeyi",
        "prefs-custom-css": "CSSê xasi",
        "prefs-changesrc": "Vuriyayışê ke mocniyê",
        "prefs-changeswatchlist": "Vuriyayışê ke mocniyê",
        "prefs-pageswatchlist": "Pelê ke teqib benê",
-       "prefs-tokenwatchlist": "Morge",
+       "prefs-tokenwatchlist": "Kılit",
        "prefs-diffs": "Ferqi",
        "prefs-help-prefershttps": "Na tercih, fına dekewten dı bena aktiv.",
        "prefswarning-warning": "Şıma tercihanê xo de vurnayışi kerdi ke ney hewna qeyd nêbiyê. \nEke şıma na pele ra bêtıknayışê \"$1\" ra veciyê, tercihê şıma newe nêbenê.",
        "userrights-expiry-current": "$1 de qediyeno",
        "userrights-expiry-none": "Bêdem",
        "userrights-expiry": "Qediyayış:",
+       "userrights-expiry-existing": "Wextê qediyayışiyê mewcudi: $3, $2",
        "userrights-expiry-othertime": "Wexto bin:",
+       "userrights-expiry-options": "1 roce:1 day,1 hefte:1 week,1 aşme:1 month,3 aşmi:3 months,6 aşmi:6 months,1 serre:1 year",
        "userrights-conflict": "Heqan de karberi de dıbare vıcyayo! Kerem ke vurnayışane xo çımser ra ravyarne  u tesdiq keri.",
        "group": "Grube:",
        "group-user": "Karberi",
        "group-autoconfirmed": "Karberê ke otomatikmen biyê araşt",
-       "group-bot": "Roboti",
+       "group-bot": "Boti",
        "group-sysop": "İdarekari",
        "group-interface-admin": "İdarekarê namnişani",
        "group-bureaucrat": "Buroqrati",
        "right-upload_by_url": "Yew URL ra dosyeyan bar ke",
        "right-purge": "Virê sita seba yew pele bêdestur bestere.",
        "right-autoconfirmed": "Perê ke nême kılit biyê, inan bıvurne",
-       "right-bot": "Zey yew kardê otomotiki kar bıvin",
+       "right-bot": "Zey yew karê otomatiki kar bıvêne",
        "right-nominornewtalk": "Pelanê werênayışan rê vurnayışê qıckeki çıniyê, qutiya mesacanê newiyan bıgurene",
        "right-apihighlimits": "Persanê API de sinoranê berzêran bıgurene",
        "right-writeapi": "Xebtnayışê API nusnayışi",
        "grant-group-high-volume": "Performansa aktiviteya vengê berzi",
        "grant-group-customization": "Şexsi kerdış u tercihi",
        "grant-group-administration": "Performans hereketa idarey",
+       "grant-group-private-information": "Melumatê xısusiyê ke heqa şıma derê, bıresê inan",
        "grant-group-other": "Enwayi babet aktivitey",
        "grant-blockusers": "Karberi men ke u meni wedarne",
        "grant-createaccount": "Hesab vıraze",
        "rightslog": "Qeydê heqanê karberi",
        "rightslogtext": "Ena listeyê loganê ke heqqa karbaranî mucneno.",
        "action-read": "ena pela wanayış",
-       "action-edit": "ena perre bıvurnê",
-       "action-createpage": "na perer bıvıraz",
+       "action-edit": "ena pele bıvurne",
+       "action-createpage": "na pele vıraze",
        "action-createtalk": "pelanê werênayışi bıvıraze",
        "action-createaccount": "hesabê nê karberi bıvıraze",
        "action-autocreateaccount": "nê hesabê karberiyê teberi otomatik vıraze",
        "rcfilters-tag-remove": "'$1' wedare",
        "rcfilters-legend-heading": "<strong>Lista kılmkerdışan:</strong>",
        "rcfilters-other-review-tools": "Hacetê çımeştışê bini",
+       "rcfilters-group-results-by-page": "Goreyê pele neticeyê gruban",
        "rcfilters-activefilters": "Parzûnê aktifi",
        "rcfilters-activefilters-hide": "Bınımne",
        "rcfilters-activefilters-show": "Bımocne",
        "rcfilters-advancedfilters": "Parzûnê raverşiyayeyi",
        "rcfilters-limit-title": "Neticeyê ke bımocniyê",
        "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|vurnayış|vurnayışi}}, $2",
+       "rcfilters-date-popup-title": "Leteyê demiyo ke cıgeyriyo",
        "rcfilters-days-title": "Rocê peyêni",
        "rcfilters-hours-title": "Seatê peyêni",
        "rcfilters-days-show-days": "($1 {{PLURAL:$1|roce|roci}})",
        "rcfilters-days-show-hours": "($1 {{PLURAL:$1|saete|saeti}})",
        "rcfilters-quickfilters": "Parzûnê qeydbiyayeyi",
        "rcfilters-quickfilters-placeholder-title": "Qet yew parzûn qeyd nêbiyo",
+       "rcfilters-quickfilters-placeholder-description": "Eyaranê parzûni qeydkerdış u bahdo zi seba gurenayışi rê, cêr de simgeyanê cayanê parzûnanê aktifan bıtıknê.",
        "rcfilters-savedqueries-defaultlabel": "Parzûnê qeydbiyayeyi",
        "rcfilters-savedqueries-rename": "Reyna name ke",
        "rcfilters-savedqueries-setdefault": "Wa hesabiyaye bımano",
+       "rcfilters-savedqueries-unsetdefault": "Hesebiyayeyan ra vece",
        "rcfilters-savedqueries-remove": "Bestere",
        "rcfilters-savedqueries-new-name-label": "Name",
+       "rcfilters-savedqueries-new-name-placeholder": "Ğayeyê parzûni bışınasnê",
        "rcfilters-savedqueries-apply-label": "Parzûn vıraze",
        "rcfilters-savedqueries-apply-and-setdefault-label": "Parzûno hesebiyaye vıraze",
        "rcfilters-savedqueries-cancel-label": "Bıtexelne",
+       "rcfilters-savedqueries-add-new-title": "Eyarê parzûnê newcudi qeyd kerê",
+       "rcfilters-restore-default-filters": "Parzûnê ke estê peyser biya",
        "rcfilters-clear-all-filters": "Parzûnan pêro pak kerê",
        "rcfilters-show-new-changes": "Vurnayışanê neweyan bımocne",
        "rcfilters-search-placeholder": "Vurnayışanê peyênan parzûn kerê (menuyi bıgurenê ya zi nameyê parzûni cıgeyrê)",
        "rcfilters-filter-editsbyself-label": "Vurnayışê şıma",
        "rcfilters-filter-editsbyself-description": "İştırakê şıma.",
        "rcfilters-filter-editsbyother-label": "Ê binan ra vurnayışi",
+       "rcfilters-filter-editsbyother-description": "Bê vurnayışanê şıma vurnayışi pêro.",
+       "rcfilters-filtergroup-userExpLevel": "Qeydê karberi u tecrube",
        "rcfilters-filter-user-experience-level-registered-label": "Qeydıni",
        "rcfilters-filter-user-experience-level-registered-description": "İdarekarê cıkewteyi.",
        "rcfilters-filter-user-experience-level-unregistered-label": "Bêqeydıni",
+       "rcfilters-filter-user-experience-level-unregistered-description": "Karberê ke nêkewtê cı.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Ameyayeyê neweyi",
        "rcfilters-filter-user-experience-level-newcomer-description": "Karberê qeydınê ke 10 ra kemi vurnayışi ya zi 4 rocan ra fealiyetê xo estê.",
        "rcfilters-filter-user-experience-level-learner-label": "Musayoği",
        "rcfilters-filter-user-experience-level-experienced-label": "Karberê mısayeyi",
+       "rcfilters-filtergroup-automated": "İştırakê otomatiki",
        "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Terefê hacetanê otomatikan ra vurnayışi vıraziyayi.",
        "rcfilters-filter-humans-label": "İnsan (bot niyo)",
        "rcfilters-filter-humans-description": "Terefê insanan ra vuriyayışi.",
        "rcfilters-filter-reviewstatus-unpatrolled-label": "Desturê dewriya ra nêvêrdo",
+       "rcfilters-filter-reviewstatus-manual-label": "Lokal dewriya biyo",
        "rcfilters-filter-reviewstatus-auto-label": "Otomatik kontrol bi",
        "rcfilters-filtergroup-significance": "Gıraniye",
        "rcfilters-filter-minor-label": "Vurriyayışê werdiyi",
        "rcfilters-filter-minor-description": "Vurriyayışê ke nuştekari vurnayışo werdi etiket kerdê.",
        "rcfilters-filter-major-label": "Vurriyayışê ke werdi niyê",
+       "rcfilters-filter-major-description": "Vurnayışê etiketanê ke werdi nişan biyê.",
        "rcfilters-filtergroup-watchlist": "Pelê ke seyr benê",
        "rcfilters-filter-watchlist-watched-label": "Lista seyrkerdışi de",
+       "rcfilters-filter-watchlist-watched-description": "Pelanê lista seyrkerdışi de vurnayışi.",
        "rcfilters-filter-watchlist-watchednew-label": "Vurnayışê lista seykerdışiya newiye",
        "rcfilters-filter-watchlist-notwatched-label": "Lista seyrkerdışi de niya",
        "rcfilters-filtergroup-watchlistactivity": "Fealiyetê pela seyrkerdışi",
        "rcfilters-filter-newpages-description": "Vurnayışê ke pelanê newiyab vırazenê.",
        "rcfilters-filter-categorization-label": "Vuriyayışê kategoriyan",
        "rcfilters-filter-categorization-description": "Kategoriyan ra qeydê cıkerdış u wedardışê pelan.",
+       "rcfilters-filter-logactions-label": "Rocekê iştırakan",
        "rcfilters-filtergroup-lastRevision": "Çımraviyarnayışê tewr peyêni",
        "rcfilters-filter-lastrevision-label": "Çımraviyarnayışo peyên",
        "rcfilters-filter-lastrevision-description": "Tenya vurnayışê yew peleyo tewr peyên.",
        "rcfilters-exclude-button-off": "Weçinayeyi ciya bıtepışê",
        "rcfilters-exclude-button-on": "Weçinayeyo ciya",
        "rcfilters-view-tags": "Vurnayışê etiketıni",
+       "rcfilters-view-namespaces-tooltip": "Neticeyan goreyê cayê nameyi parzûn kerê",
+       "rcfilters-view-tags-tooltip": "Ebe gurenayışê neticeyanê vurnayışê etikan ra parzûn ke",
        "rcfilters-view-return-to-default-tooltip": "Peyser şo parzûnê menuyê bıngehi",
+       "rcfilters-view-tags-help-icon-tooltip": "Derheqê vurnayışanê etiketınan ra tayêna melumat bıgê",
        "rcfilters-liveupdates-button": "Rocaneyê ganıni",
        "rcfilters-liveupdates-button-title-on": "Rocaneyanê cındeyan ragê",
+       "rcfilters-liveupdates-button-title-off": "Vurnayışanê neweyan ganın bıvêne",
+       "rcfilters-watchlist-markseen-button": "Vurnayışanê pêroyıne asaye nişan kerê",
+       "rcfilters-watchlist-edit-watchlist-button": "Lista pelanê seyrkedışê xo bıvurne",
        "rcfilters-preference-label": "Mabeynrıyê non-JavaScript'i bıkarne",
        "rcfilters-watchlist-preference-label": "Mabeynrıyê non-JavaScript'i bıkarne",
+       "rcfilters-filter-showlinkedfrom-label": "Gıreyê pelan ra vurnayışan bıvêne",
        "rcfilters-target-page-placeholder": "Yew nameyê pele (ya zi kategoriye) cı kerê",
        "rcnotefrom": "Cêr de <strong>$2</strong> ra nata {{PLURAL:$5|vurnayışiyê}} asenê (tewr vêşi <strong>$1</strong> asenê) <strong>$3, $4</strong>",
        "rclistfromreset": "Weçinayışê tarixi ragoze",
        "rcshowhideminor": "Vırnayışê werdiy $1",
        "rcshowhideminor-show": "Bımocne",
        "rcshowhideminor-hide": "Bınımne",
-       "rcshowhidebots": "botan $1",
+       "rcshowhidebots": "boti $1",
        "rcshowhidebots-show": "Bımocne",
        "rcshowhidebots-hide": "Bınımne",
        "rcshowhideliu": "karberê qeydbiyay $1",
        "double-redirect-fixer": "Fixerî redirek bike",
        "brokenredirects": "Serşıkıtışê xırabeyi",
        "brokenredirectstext": "Redireksiyonê ey ki pelanê hama çiniyeno ra link dano:",
-       "brokenredirects-edit": "bıvırne",
+       "brokenredirects-edit": "bıvurne",
        "brokenredirects-delete": "bestere",
        "withoutinterwiki": "Pelê ke zıwananê binan rê gıreyê cı çıniyo",
        "withoutinterwiki-summary": "Enê pelî ke versiyonê ziwanî binî ra link nidano.",
        "apihelp": "Peştiya APIyi",
        "apihelp-no-such-module": "Modulê \"$1\" çıniyo.",
        "apisandbox": "API qumdor",
+       "apisandbox-api-disabled": "API na site de dewre ra veciyayo.",
        "apisandbox-submit": "Bıwazê",
        "apisandbox-reset": "Bestere",
        "apisandbox-retry": "Anciya bıcerrebne",
+       "apisandbox-no-parameters": "Nê modulê APIyi de parametreyi çıniyê.",
        "apisandbox-helpurls": "Linkê peşti",
        "apisandbox-examples": "Nımuneyi",
        "apisandbox-dynamic-parameters": "Parametreya debyayi",
        "booksources-search": "Cı geyre",
        "booksources-text": "listeya cêrıni, keyepelê kitap rotoxan o.",
        "booksources-invalid-isbn": "ISBN raşt nêasena bıewnê çımeyê orjinali, raşt kopya biya nê nêbiyaya?",
+       "magiclink-tracking-rfc": "Pelê ke gıreyê efsunê RFCi gurenenê",
+       "magiclink-tracking-pmid": "Pelê ke gıreyê efsunê PMIDi gurenenê",
+       "magiclink-tracking-isbn": "Pelê ke gıreyê efsunê ISBNi gurenenê",
        "specialloguserlabel": "Kerdoğ:",
        "speciallogtitlelabel": "Meqsed (sername ya zi {{ns:user}}:karberi rê nameyê karberi):",
        "log": "Qeydi",
        "logeventslist-submit": "Bımocne",
+       "logeventslist-more-filters": "Rocekanê cıkerdışan bımocne:",
        "logeventslist-patrol-log": "Rocekê dewriya",
        "logeventslist-tag-log": "Rocekê etiketan",
        "all-logs-page": "Heme qeydê pêroyi",
        "log-edit-tags": "Etiketanê weçinayê qeydan bıvurnê",
        "checkbox-select": "Weçinaye: $1",
        "checkbox-all": "Pêro",
-       "checkbox-none": "Temam",
+       "checkbox-none": "Çıniyo",
        "checkbox-invert": "Dimlaşt ke",
        "allpages": "Pêro peli",
        "nextpage": "Pela peyco ($1)",
        "sp-deletedcontributions-contribs": "iştiraki",
        "linksearch": "Gıreyê teberi cı geyrê",
        "linksearch-pat": "bıgêr motif:",
-       "linksearch-ns": "Heruna namey:",
+       "linksearch-ns": "Heruna nameyan:",
        "linksearch-ok": "Cı geyre",
        "linksearch-text": "Jokeri ê zey \"*.wikipedia.org\"i benê ke bıgureniyê.\nTewr senık yew sewiya serêna cayê tesiri lazıma, mesela \"*.org\".<br />\nQeydeyê {{PLURAL:$2|protoqol|protoqoli}}:destegbiyayey: $1 (qet yew qeydeyo hesabiyaye http:// ke name nêbiyo).",
        "linksearch-line": "$1, $2 ra link biya",
        "listgrouprights-addgroup-self-all": "şıma eşkeni hesabê xo re heme gruban têare bıkerî",
        "listgrouprights-removegroup-self-all": "şıma hesabê xo ra eşkeni heme gruban bıveci",
        "listgrouprights-namespaceprotection-header": "Kılm kerdena nameyan",
-       "listgrouprights-namespaceprotection-namespace": "Heruna nami",
+       "listgrouprights-namespaceprotection-namespace": "Heruna nameyan",
        "listgrants": "Hibey",
        "listgrants-grant": "Hibe",
        "listgrants-rights": "Heqi",
        "trackingcategories-msg": "Kategoriya teqibi",
        "trackingcategories-name": "Namey mesaci",
        "trackingcategories-desc": "Kriterê definayışê kategoriye",
+       "trackingcategories-nodesc": "Şınasnayış çıniyo.",
        "trackingcategories-disabled": "Kategoriya feal niya",
        "mailnologin": "adresa erşawıtışi/ruşnayişi çina.",
        "mailnologintext": "qey karberanê binan re e-posta erşawıtış de gani şıma [[Special:UserLogin|hesab aker]]ê [[Special:Preferences|pelê tercihani]] de gani yew e-postayo meqbul bıbo.",
        "rollbacklinkcount": "$1 {{PLURAL:$1|vurnayış|vurnayışi}} peyd gıroti",
        "rollbacklinkcount-morethan": "$1 {{PLURAL:$1|vurnayış|vuranyışi}} tewr peyd gırot",
        "rollbackfailed": "Peyserardış nêbi",
+       "rollback-missingrevision": "Melumatê versiyoni bar nêbiyo.",
        "cantrollback": "karbero peyin têna paşt dayo, no semedi ra vuriyayiş tepiya nêgeriyeni.",
        "alreadyrolled": "[[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}} hetê [[Special:Contributions/$2|{{int:contribslink}}]]) ra perrê ıney[[:$1]] de vırnayış biyo u no vırnayiş tepeya nêgêriyeno;\nyewna ten perre de vırnayiş kerdo u perre tepiya nêgeriyeno.\n\noyo ke vırnayışo peyên kerdo: [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Xulasay vurnayışi: <em>$1</em> bi",
        "revertpage": "Hetê [[Special:Contributions/$2|$2]] ([[User talk:$2|Mesac]]) ra vurnayiş biyo u ney vurnayişi tepiya geriyayo u no [[User:$1|$1]] kes o ke cuwa ver revizyon kerdo revizyonê no kesi tepiya anciyayo.",
        "revertpage-nouser": "No keso ke vuriyayiş kerdo vuriyayişé{{GENDER:$1|[[User:$1|$1]]}} ker o",
-       "rollback-success": "vurnayişê no kesi $1 tepiya geriyayo u hetê no\n$2 kesi ra cıwa ver o ke revizyon biyo no revizyon tepiya anciyayo.",
+       "rollback-success": "Terefê {{GENDER:$3|$1}}i ra vuriyayışi peyser gêriyayi; peyser geyriya be revizyonê {{GENDER:$4|$2}}i.",
        "sessionfailure-title": "Seans xeripiya",
        "sessionfailure": "cıkewtışê hesabê şıma de yew problem aseno;\nno kar semedê dızdiyê hesabi ibtal biyo.\nkerem kerê \"tepiya\" şiyerê u pel o ke şıma tera ameyî u o pel newe ra bar kerê , newe ra tesel/cereb kerê.",
        "changecontentmodel": "Modelê zerrekê pele bıvurne",
        "changecontentmodel-reason-label": "Sebeb:",
        "changecontentmodel-submit": "Bıvırne",
        "changecontentmodel-success-title": "Modelê zerreki vurriya",
+       "changecontentmodel-emptymodels-title": "Modelê zerreki mewcud niyo",
        "log-name-contentmodel": "Qeydê vurnayışanê modelê zerreki",
        "logentry-contentmodel-change-revertlink": "peyser biya",
        "logentry-contentmodel-change-revert": "peyser biya",
        "pagesize": "(bitî)",
        "restriction-edit": "Bıvurne",
        "restriction-move": "Bıkırış",
-       "restriction-create": "Bıvıraz",
+       "restriction-create": "Vıraze",
        "restriction-upload": "Bar ke",
        "restriction-level-sysop": "tam pawiyayo",
        "restriction-level-autoconfirmed": "nêm pawiyayo",
        "undelete-error-long": "hewn a kerdışê na dosyayi wexta tepiya geriyenê xeta vıraziya:\n\n$1",
        "undelete-show-file-confirm": "\"<nowiki>$1</nowiki>\" şıma emin î dosyaya revizyonê no $2 $3 tarixi bıvini?",
        "undelete-show-file-submit": "Eya",
-       "namespace": "Heruna namey:",
+       "namespace": "Heruna nameyan:",
        "invert": "Weçinayışi dimlaşt ke",
        "tooltip-invert": "nameyo ke nışan biyo (u nameyo elekeyın zi nışanyyayo se) vurnayışan  zerrekan nımtışi re ena dore tesdiqi nışan kerê",
        "namespace_association": "Heruna namanê elaqedaran",
        "export-download": "yewna qaydeyi de qeydker",
        "export-templates": "şablonan daxil ker",
        "export-pagelinks": "behsê xorıniya pelê pêrabesteyani:",
+       "export-manual": "Pelan be dest ra cı ke:",
        "allmessages": "Mesacê sistemi",
        "allmessagesname": "Name",
        "allmessagesdefault": "Metnê mesacê hesabiyayey",
        "allmessages-filter": "goreyê xususi kerdışi re filtre bıker",
        "allmessages-filter-unmodified": "Nivurnaye",
        "allmessages-filter-all": "Pêro",
-       "allmessages-filter-modified": "Vurnaye",
+       "allmessages-filter-modified": "Vurniya",
        "allmessages-prefix": "pê prefiks filtre bıker",
        "allmessages-language": "Zıwan:",
        "allmessages-filter-submit": "Şo",
        "thumbnail-temp-create": "İdare dosyay resimiya nêvırazêna",
        "thumbnail-dest-create": "Resimo werdiyo keyd nêbeno",
        "thumbnail_invalid_params": "Parametreya thumbnailî raşt niyşê",
+       "thumbnail_toobigimagearea": "Ebadê $1 ra gırd dosyeyi",
        "thumbnail_dest_directory": "Nieşkenî direktorê destinasyonî virazî",
        "thumbnail_image-type": "Tipê resimî kebul nibeno",
        "thumbnail_gd-library": "Configurasyonê katalog ê GDî tam niyo:funksiyonê $1î vînî biyo",
        "tooltip-pt-watchlist": "Listey peranê ke to gırotê seyr kerdış",
        "tooltip-pt-mycontris": "Yew lista iştırakanê {{GENDER:|şıma}}",
        "tooltip-pt-login": "Mayê şıma ronıştış akerdışi rê dawet keme; labelê ronıştış mecburi niyo",
+       "tooltip-pt-login-private": "Gurenayışê nê wikiyi rê cıkewtış lazımo",
        "tooltip-pt-logout": "Bıveciye",
        "tooltip-pt-createaccount": "Şıma rê tewsiyey ma xorê jew hesab akerê. Fına zi hesab akerdış mecburi niyo.",
        "tooltip-ca-talk": "Heqa pela zerreki de werênayış",
        "tooltip-feed-atom": "Qe ena pele atom feed",
        "tooltip-t-contributions": "Yew lista iştırakanê {{GENDER:$1|enê karberi}}",
        "tooltip-t-emailuser": "{{GENDER:$1|Enê karberi}} rê yew e-poste bırışe",
+       "tooltip-t-info": "Derheqê ena pele de zêdêr melumat",
        "tooltip-t-upload": "Dosyeyan bar ke",
        "tooltip-t-specialpages": "Listeya peranê hısusiyan hemın",
        "tooltip-t-print": "Versiyono perre ro ke nuşterniyaye.",
        "pageinfo-protect-cascading-yes": "Eya",
        "pageinfo-protect-cascading-from": "Sıtarkerdey cı ra yenê war",
        "pageinfo-category-info": "Melumatê kategori",
+       "pageinfo-category-total": "Amarê ezayan pêro piya",
        "pageinfo-category-pages": "Amarê pelan",
        "pageinfo-category-subcats": "Amarê bınkategoriyan",
        "pageinfo-category-files": "Amarê dosyeyan",
        "confirmrecreate-noreason": "karbero [[User:$1|$1]] ([[User talk:$1|mesac]]) , dest pêkerdışiena pela sero vurnayışiya tepya ena pela {{GENDER:$1|besternê}}. Şıma qayıli ke ena pela fına vırazê se ena pela tesdiq kerê.",
        "recreate": "Werzayne",
        "unit-pixel": "px",
+       "confirm-purge-title": "Na pele pak ke",
        "confirm_purge_button": "Temam",
        "confirm-purge-top": "Vervirê na pele bestere?",
        "confirm-purge-bottom": "Pakkerdışê yew perre virê verêni estereno u çımraviyarnayışê peyêni gêno ver.",
        "confirm-unwatch-button": "TEMAM",
        "confirm-unwatch-top": "Ena pele lista xoya seyirkerdışi ra bıvece?",
        "confirm-rollback-button": "TEMAM",
+       "confirm-mcrrestore-title": "Yew revizyoni peyser biya",
+       "confirm-mcrundo-title": "Yew vurnayışi peyser bıgê",
+       "mcrundofailed": "Peyser nêgêriya",
        "semicolon-separator": "&#32;",
        "comma-separator": ",&#32;",
        "colon-separator": ":&#32;",
        "version-specialpages": "Perê hısusiy",
        "version-parserhooks": "Çengelê Parserî",
        "version-variables": "Vurnayeyî",
-       "version-editors": "Editori",
+       "version-editors": "Vurnayoği",
        "version-antispam": "Spam vındarnayış",
        "version-api": "API",
        "version-other": "Bin",
        "version-software-version": "Versiyon",
        "version-entrypoints": "Heruna cıkewtışê URLi",
        "version-entrypoints-header-entrypoint": "Heruna dekewtışi",
-       "version-entrypoints-header-url": "GRE",
+       "version-entrypoints-header-url": "URL",
        "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Article path]",
        "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Script path]",
+       "version-libraries": "Kıtabxaneyê barbiyayeyi",
        "version-libraries-library": "Kıtıbxane",
        "version-libraries-version": "Versiyon",
        "version-libraries-license": "Lisans",
        "redirect-file": "Namey dosya",
        "redirect-logid": "Qeydé  ID",
        "redirect-not-exists": "Erc nêvineyê",
+       "redirect-not-numeric": "Erc numerik niyo",
        "fileduplicatesearch": "Dosyayanê zey pêyan cı geyrê",
        "fileduplicatesearch-summary": "Dosyanê çıftan bınê têmiyankewteyan de bıgeyre.",
        "fileduplicatesearch-filename": "Nameyê dosyayi",
        "specialpages-group-media": "Raporê medya û barkerdışi",
        "specialpages-group-users": "Karberi u heqê inan",
        "specialpages-group-highuse": "Pelê ke zêdêr gureniyenê",
-       "specialpages-group-pages": "Listên pelan",
+       "specialpages-group-pages": "Listeyê pelan",
        "specialpages-group-pagetools": "Haletê pelan",
        "specialpages-group-wiki": "Melumat u haceti",
        "specialpages-group-redirects": "Pelê serşıkıtışiyê xısusiyi",
        "tag-filter": "Parzûnê [[Special:Tags|etiketi]]:",
        "tag-filter-submit": "Parzûn",
        "tag-list-wrapper": "[[Special:Tags|{{PLURAL:$1|Etiket|Etiketi}}]]: $2",
+       "tag-mw-contentmodelchange": "vurnayışê modelê zerreki",
        "tag-mw-new-redirect": "Serşıkıtışo newe",
        "tag-mw-blank": "Vengkerdış",
        "tag-mw-blank-description": "Vengiya na pele bıvurne",
        "tags-edit-title": "Etiketan bıvurne",
        "tags-edit-manage-link": "Etiketan idare kerê",
        "tags-edit-existing-tags": "Etiketê ke estê:",
-       "tags-edit-existing-tags-none": "<em>Qet yew</em>",
+       "tags-edit-existing-tags-none": "<em>Çıniyo</em>",
        "tags-edit-new-tags": "Etiketê neweyi:",
        "tags-edit-add": "Nê etiketan cı kerê:",
+       "tags-edit-remove": "Nê etiketan wedare:",
+       "tags-edit-remove-all-tags": "(etiketan pêro wedare)",
+       "tags-edit-chosen-placeholder": "Tayê etiketan weçine",
        "tags-edit-reason": "Sebeb:",
        "comparepages": "Pelan têversanê",
        "compare-page1": "Pele 1",
        "revdelete-restricted": "vergırewtışê ke xızmekaran rê biye",
        "revdelete-unrestricted": "vergırewtışê ke xızmekaran rê dariyê we",
        "logentry-partialblock-block-page": "{{PLURAL:$1|pele|peli}} $2",
+       "logentry-partialblock-block-ns": "{{PLURAL:$1|cayê nameyi|cayê nameyan}} $2",
        "logentry-move-move": "$1 perra $3 {{GENDER:$2|kırışt}} $4",
        "logentry-move-move-noredirect": "$1, pera $3'i bêhetenayış {{GENDER:$2|kırışt}} pera $4`i",
        "logentry-move-move_redir": "$1 {{GENDER:$2|kırışna}} riperr $3 be $4 weçarnayış sera.",
        "logentry-newusers-create2": "Hesabê karberi $1 terefê $3 ra {{GENDER:$2|vıraziya}}",
        "logentry-newusers-byemail": "Karber $1 hesabe $3 {{GENDER:$2|virast}} u parola rist epostadaci",
        "logentry-newusers-autocreate": "Hesabê karberi $1 otomatikmen {{GENDER:$2|vıraşt}}",
+       "logentry-protect-protect": "$1, pela $3 {{GENDER:$2|şeveknê}} $4",
+       "logentry-protect-protect-cascade": "$1, pela $3 {{GENDER:$2|şeveknê}} $4 [qademeyın]",
        "logentry-rights-rights": "$1 qandê {{GENDER:$6|$3}} rê ezayiya grube $4 ra $5 {{GENDER:$2|vuriye}}",
        "logentry-rights-rights-legacy": "$1 qandê $3 rê ezayiya grube {{GENDER:$2|vuriye}}",
        "logentry-rights-autopromote": "$1 otomatikmen $4 ra $5 {{GENDER:$2|terfi bi}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|bar kerd}} $3",
        "logentry-upload-overwrite": "$1 versiyonê $3 {{GENDER:$2|bar kerd}}",
+       "logentry-upload-revert": "$1, {{GENDER:$2|bar kerd}} $3",
        "log-name-managetags": "Qeydê idareyê etiketi",
        "log-name-tag": "Qeydê etiketi",
        "rightsnone": "(çıniyo)",
        "feedback-bugornote": "Jew mersela teferruato teknik esta şıma reca malumatê şıma hazıro se [ $1  jew xırab rapor] bıvinê.Zewbi zi, formê cerê xo rê şenê karfiyê. Vatışê xo pela da \"[ $3  $2 ]\", namey karber dê xoya piya u wasteriya karfiye.",
        "feedback-cancel": "Bıtexelne",
        "feedback-close": "Temam",
+       "feedback-dialog-title": "Cewab bırışe",
        "feedback-error1": "Xeta: APIi ra peyniyê nêşınasiyay",
        "feedback-error2": "Xeta: Timar kerdış nebı",
        "feedback-error3": "Xeta: API ra cewab çıno",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bayt|bayti}}",
        "limitreport-expansiondepth": "Tewr veşi herayina dergbiyayışi",
        "limitreport-expensivefunctioncount": "Amoriya fonksiyonde vay agozni",
+       "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|bayt|bayti}}",
        "expandtemplates": "Şablonan hera kı",
        "expand_templates_intro": "Na pela xususi metın geno u şablonê ke tedeyê reyna reyna hêra keno.\nU hem zi nê fonksiyonan hêra keno\n<nowiki>{{</nowiki>#language:…}}</code>, u zey nê parametreyan\n<nowiki>{{</nowiki>CURRENTDAY}}</code>\nEneri Medya wiki sera xo keno.",
        "expand_templates_title": "Sernameyê weziyeti, misal qandê {{FULLPAGENAME}}.:",
        "right-pagelang": "Zıwanê pele bıvurne",
        "action-pagelang": "zıwanê pele bıvurne",
        "log-name-pagelang": "Qeydê vurriyayışa zıwani",
+       "mediastatistics": "İstatistikê medya",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 bayt|$1 bayti}} ($2; $3%)",
        "mediastatistics-table-mimetype": "Tewrê MIME",
+       "mediastatistics-table-count": "Amarê dosyeyan",
+       "mediastatistics-table-totalbytes": "Ebad pêro",
        "mediastatistics-header-unknown": "Nêzanaye",
+       "mediastatistics-header-bitmap": "Asayışê Bitmapi",
        "mediastatistics-header-audio": "Veng",
        "mediastatistics-header-video": "Videoyi",
        "mediastatistics-header-multimedia": "Medyaya dewlemende",
        "mediastatistics-header-office": "Ofis",
        "mediastatistics-header-text": "Tewrê metıni",
        "mediastatistics-header-total": "Dosyeyi pêro",
+       "json-error-syntax": "Xetaya rêza qıseyan",
+       "headline-anchor-title": "Enê leteyi rê gıre",
        "special-characters-group-latin": "Latin",
        "special-characters-group-latinextended": "latinkiya hêrabiyaye",
        "special-characters-group-ipa": "IPA",
        "special-characters-title-endash": "tira kılme",
        "special-characters-title-emdash": "tira derge",
        "special-characters-title-minus": "işaretê kemiye",
-       "mw-widgets-abandonedit": "Verdé qeyd kerdışi şıma qayılé peyser şıré verén asayışin?",
-       "mw-widgets-abandonedit-discard": "Timari wa besteriyê",
-       "mw-widgets-abandonedit-keep": "Timari rê devam ke",
+       "mw-widgets-abandonedit": "Qeydkerdışi ra ravêr, şıma qayılê peyser şêrê asayışo vêrên?",
+       "mw-widgets-abandonedit-discard": "Vurnayışan vece",
+       "mw-widgets-abandonedit-keep": "Vurnayışi rê dewam ke",
        "mw-widgets-abandonedit-title": "Vac welay?",
+       "mw-widgets-dateinput-no-date": "Tarix nêweçiniya",
        "mw-widgets-dateinput-placeholder-day": "SSSS-AA-RR",
        "mw-widgets-dateinput-placeholder-month": "SSSS-AA",
+       "mw-widgets-mediasearch-input-placeholder": "Medya cı geyre",
+       "mw-widgets-mediasearch-noresults": "Neticeyi nêvêniyayi.",
+       "mw-widgets-titleinput-description-new-page": "pele hewna çıniya",
        "mw-widgets-titleinput-description-redirect": "berd be $1",
+       "mw-widgets-categoryselector-add-category-placeholder": "Yew kategoriye cı ke...",
        "mw-widgets-usersmultiselect-placeholder": "Tayêna cı ke...",
        "mw-widgets-titlesmultiselect-placeholder": "Tayêna cı ke...",
+       "date-range-from": "Nê tarixi ra:",
+       "date-range-to": "Heta nê tarixi:",
        "randomrootpage": "Pela raştameya rıçıkıne",
        "log-action-filter-block": "Tipê kılitkerdışi:",
+       "log-action-filter-delete": "Tewrê esterıtışi:",
+       "log-action-filter-import": "Tewrê zerrenayışi:",
+       "log-action-filter-move": "Tewrê berdışi:",
        "log-action-filter-newusers": "Babetê hesabvıraştışi:",
+       "log-action-filter-patrol": "Tewrê dewriya:",
+       "log-action-filter-protect": "Tewrê sıtarnayışi:",
+       "log-action-filter-rights": "Tewrê vurnayışê heqe:",
+       "log-action-filter-suppress": "Tewrê wedardışi:",
+       "log-action-filter-upload": "Tewrê barkerdışi:",
        "log-action-filter-all": "Pêro",
        "log-action-filter-block-block": "Kılitkerdış",
-       "authprovider-resetpass-skip-label": "Bıvêre",
+       "log-action-filter-block-reblock": "Vurniyayışê kılitkerdışi",
+       "log-action-filter-block-unblock": "Ake",
+       "log-action-filter-contentmodel-change": "Modelê zerreki bıvurne",
+       "log-action-filter-delete-delete": "Esterıtışê pele",
+       "log-action-filter-delete-restore": "Esterıtışê pele peyser bıgê",
+       "log-action-filter-delete-event": "Rocek esterıtış",
+       "authprovider-resetpass-skip-label": "Ravêre",
        "authprovider-resetpass-skip-help": "Peysereştışê parola ra bıvêre.",
        "authform-notoken": "Tokeno kemi",
        "authform-wrongtoken": "Nişano ğelet",
index 81c305f..7416d3f 100644 (file)
        "anoncontribs": "Contributions",
        "contribsub2": "For {{GENDER:$3|$1}} ($2)",
        "contributions-userdoesnotexist": "User account \"$1\" is not registered.",
+       "negative-namespace-not-supported": "Namespaces with negative values are not supported.",
        "nocontribs": "No changes were found matching these criteria.",
        "uctop": "current",
        "month": "From month (and earlier):",
index 27cc07b..f8507b8 100644 (file)
        "undo-main-slot-only": "La redakto ne povis esti malfarita, ĉar ĝi koncernas enhavon ekster la ĉefa traktujo.",
        "undo-norev": "La redakto ne povis esti malfarita ĉar ĝi aŭ ne ekzistas aŭ estis forigita.",
        "undo-nochange": "Ŝajne la redakto jam estis malfarita.",
-       "undo-summary": "Nuligis version $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskuto]] | [[Special:Contributions/$2|{{MediaWiki:Contribslink}}]])",
+       "undo-summary": "Versiono $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskuto]] | [[Special:Contributions/$2|{{MediaWiki:Contribslink}}]]) nuligita",
        "undo-summary-username-hidden": "Malfari ŝanĝon $1 de kaŝita uzanto",
        "cantcreateaccount-text": "Konto-kreado de ĉi tiu IP-adreso ('''$1''') estis forbarita de [[User:$3|$3]].\n\nLa kialo donata de $3 estas ''$2''.",
        "cantcreateaccount-range-text": "La kreado de kontoj de IP-adresoj en la intervalo <strong>$1</strong>, kiu inkludas vian IP-adreson (<strong>$4</strong>), estis blokita de [[User:$3|$3]].\n\nLa donita kialo de $3 estas <em>$2</em>",
index de6344d..941da39 100644 (file)
                        "Theklan",
                        "Laura Ospina",
                        "Pipino-pumuki",
-                       "Carlosmg.dg"
+                       "Carlosmg.dg",
+                       "Mynor Archila"
                ]
        },
        "tog-underline": "Enlaces a subrayar:",
        "edit-gone-missing": "No se ha podido actualizar la página.\nParece haber sido borrada.",
        "edit-conflict": "Conflicto de edición.",
        "edit-no-change": "Se ignoró tu edición porque no se hizo ningún cambio en el texto.",
+       "edit-slots-cannot-add": "{{PLURAL:$1|La siguiente ranura no es soportada|Las siguientes ranuras no son soportadas}} aquí:",
+       "edit-slots-missing": "{{PLURAL:$1|Falta el siguiente espacio|Faltan los siguientes espacios}}: $2",
        "postedit-confirmation-created": "Se ha creado la página.",
        "postedit-confirmation-restored": "Se ha restaurado la página.",
        "postedit-confirmation-saved": "Se ha guardado tu edición.",
        "move": "Trasladar",
        "movethispage": "Trasladar esta página",
        "unusedimagestext": "Los siguientes archivos existen pero no están insertados en ninguna página.\nTen en cuenta que otros sitios web pueden enlazar un archivo directamente por la URL, y por tanto pueden estar listados aquí a pesar de estar siendo usados de forma activa.",
+       "unusedimagestext-categorizedimgisused": "Los siguientes archivos existen, pero no están integrados en ninguna página. Las imágenes categorizadas son consideradas como utilizadas, a pesar de que no están incrustadas en ninguna página. Por favor tómese en cuenta que otros sitios pueden enlazarse a un archivo con una URL directa, y todavía pueden enlistarse aquí a pesar de estar en uso activo.",
        "unusedcategoriestext": "Las siguientes categorías han sido creadas, pero ningún artículo o categoría las utiliza.",
        "notargettitle": "No hay página objetivo",
        "notargettext": "No has especificado sobre qué página deseas llevar a cabo esta acción.",
        "contribsub2": "Para {{GENDER:$3|$1}} ($2)",
        "contributions-userdoesnotexist": "La cuenta de usuario «$1» no está registrada.",
        "nocontribs": "No se encontraron cambios que cumplieran estos criterios.",
-       "uctop": "edición actual",
+       "uctop": "última",
        "month": "Desde el mes (y anteriores):",
        "year": "Desde el año (y anteriores):",
        "date": "Desde el día (y anteriores):",
        "ipb_expiry_old": "El tiempo de expiración está en el pasado.",
        "ipb_expiry_temp": "Los bloqueos a nombres de usuario ocultos deben ser permanentes.",
        "ipb_hide_invalid": "No se puede suprimir esta cuenta; tiene más de {{PLURAL:$1|una edición|$1 ediciones}}.",
+       "ipb_hide_partial": "Los bloqueos que ocultan nombres de usuario no pueden ser parciales.",
        "ipb_already_blocked": "La cuenta «$1» ya está bloqueada.",
        "ipb-needreblock": "$1 ya está bloqueado. ¿Quieres cambiar el bloqueo?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Otro bloqueo|Otros bloqueos}}",
        "specialpages-group-developer": "Herramientas para desarrolladores",
        "blankpage": "Página vacía",
        "intentionallyblankpage": "Esta página está en blanco de manera intencionada.",
+       "disabledspecialpage-disabled": "Esta página ha sido desactivada por el administrador del sistema.",
        "external_image_whitelist": " #Deja esta línea exactamente como está<pre>\n#Colocar fragmentos de expresiones regulares (sólo la parte que va entre los //) debajo\n#Estos coincidirán con los URLs de las imágenes externas (hotlinked)\n#Aquellos que coincidan serán mostrados como imágenes, de lo contrario solamente un vínculo a la imagen será mostrada\n#Las líneas que empiezan por «#» se consideran comentarios\n#Esta es insensible a las mayúsculas\n\n#Colocar todos los fragmentos regex arriba de esta línea. Deja esta línea exactamente como está</pre>",
        "tags": "Etiquetas de cambios",
        "tag-filter": "Filtro de [[Special:Tags|etiquetas]]:",
        "logentry-block-block": "$1 {{GENDER:$2|bloqueó}} a {{GENDER:$4|$3}} durante un plazo de $5 $6",
        "logentry-block-unblock": "$1 {{GENDER:$2|desbloqueó}} a {{GENDER:$4|$3}}",
        "logentry-block-reblock": "$1 {{GENDER:$2|cambió}} la configuración del bloqueo de {{GENDER:$4|$3}} durante un plazo de $5 $6",
-       "logentry-partialblock-block": "$1 {{GENDER:$2|bloqueó}} a {{GENDER:$4|$3}} la edición en {{PLURAL:$8|la página|las páginas}} $7 por un tiempo de caducidad de $5 $6",
-       "logentry-partialblock-reblock": "$1 {{GENDER:$2|cambió}} la configuración del bloqueo a {{GENDER:$4|$3}} impidiendo la edición en {{PLURAL:$8|la página|las páginas}} $7 por un tiempo de caducidad de $5 $6",
+       "logentry-partialblock-block-page": "{{PLURAL:$1|la página|las páginas}} $2",
+       "logentry-partialblock-block-ns": "{{PLURAL:$1|el espacio de nombres|los espacios de nombres}} $2",
+       "logentry-partialblock-block": "$1 {{GENDER:$2|bloqueó}} a {{GENDER:$4|$3}} la edición en $7 durante un plazo de $5 $6",
+       "logentry-partialblock-reblock": "$1 {{GENDER:$2|cambió}} la configuración del bloqueo a {{GENDER:$4|$3}} impidiendo la edición en $7 durante un plazo de $5 $6",
+       "logentry-non-editing-block-block": "$1 {{GENDER:$2|bloqueó}} a {{GENDER:$4|$3}} para acciones específicas no relativas con la edición durante un plazo de $5 $6",
+       "logentry-non-editing-block-reblock": "$1 {{GENDER:$2|modificó}} la configuración del bloqueo de {{GENDER:$4|$3}} para acciones específicas no relativas con la edición durante un plazo de $5 $6",
        "logentry-suppress-block": "$1 {{GENDER:$2|bloqueó}} a {{GENDER:$4|$3}} durante un plazo de $5 $6",
        "logentry-suppress-reblock": "$1 {{GENDER:$2|cambió}} la configuración del bloqueo de {{GENDER:$4|$3}} durante un plazo de $5 $6",
        "logentry-import-upload": "$1 {{GENDER:$2|importó}} $3 subiendo un archivo",
index 5f5cc2c..655f524 100644 (file)
@@ -31,7 +31,8 @@
                        "Metsavend",
                        "Cumbril",
                        "Ilmarine",
-                       "Fitoschido"
+                       "Fitoschido",
+                       "Mardus"
                ]
        },
        "tog-underline": "Linkide allakriipsutus:",
        "pagecategories": "{{PLURAL:$1|Kategooria|Kategooriad}}",
        "category_header": "Leheküljed kategoorias \"$1\"",
        "subcategories": "Alamkategooriad",
-       "category-media-header": "Meediumifailid kategoorias \"$1\"",
-       "category-empty": "<em>Selles kategoorias pole praegu ühtegi lehekülge ega meediumifaili.</em>",
+       "category-media-header": "Meediafaile kategoorias \"$1\"",
+       "category-empty": "<em>Selles kategoorias pole praegu ühtegi lehekülge ega meediafaili.</em>",
        "hidden-categories": "{{PLURAL:$1|Peidetud kategooria|Peidetud kategooriad}}",
        "hidden-category-category": "Peidetud kategooriad",
        "category-subcat-count": "{{PLURAL:$2|Selles kategoorias on ainult järgmine alamkategooria.|{{PLURAL:$1|Järgmine alamkategooria|Järgmised $1 alamkategooriat}} on selles kategoorias (kokku $2).}}",
        "sort-ascending": "Järjesta tõusvalt",
        "nstab-main": "Artikkel",
        "nstab-user": "Kasutaja leht",
-       "nstab-media": "Meediumileht",
+       "nstab-media": "Meedialeht",
        "nstab-special": "Eri",
        "nstab-project": "Projektileht",
        "nstab-image": "Fail",
        "right-deletechangetags": "Kustutada andmebaasist [[Special:Tags|märgiseid]]",
        "grant-generic": "Volituse \"$1\" õiguste komplekt",
        "grant-group-page-interaction": "Interaktsioon lehekülgedega",
-       "grant-group-file-interaction": "Interaktsioon meediumifailidega",
+       "grant-group-file-interaction": "Käsitle meediafaile",
        "grant-group-watchlist-interaction": "Interaktsioon sinu jälgimisloendiga",
        "grant-group-email": "E-kirja saatmine",
        "grant-group-high-volume": "Suuremahuline tegevus",
        "tooltip-t-permalink": "Püsilink lehekülje sellele redaktsioonile",
        "tooltip-ca-nstab-main": "Vaata sisulehekülge",
        "tooltip-ca-nstab-user": "Näita kasutaja lehte",
-       "tooltip-ca-nstab-media": "Vaata meediumifaili lehekülge",
+       "tooltip-ca-nstab-media": "Vaata meedialehte",
        "tooltip-ca-nstab-special": "See on erilehekülg ja seda ei saa redigeerida.",
        "tooltip-ca-nstab-project": "Näita projekti lehte",
        "tooltip-ca-nstab-image": "Vaata faili lehekülge",
        "version-editors": "Toimetid",
        "version-antispam": "Rämpsposti tõkestus",
        "version-other": "Muu",
-       "version-mediahandlers": "Meediumitöötlejad",
+       "version-mediahandlers": "Meedia käsitlejad",
        "version-hooks": "Haagid",
        "version-parser-extensiontags": "Parseri lisasildid",
        "version-parser-function-hooks": "Parserifunktsioonid",
        "default-skin-not-found-no-skins": "Oih! Sinu viki vaikekujundus, milleks muutuja <code dir=\"ltr\">$wgDefaultSkin</code> järgi on <code>$1</code>, pole saadaval.\n\nÜhtegi kujundust pole paigaldatud.\n\n; Kui oled MediaWiki just paigaldanud või täiendasid seda:\n: Paigaldasid tarkvara ilmselt Giti kaudu või otse lähtekoodist või mõnel muul viisil. See on ootuspärane. MediaWiki 1.24 ja uuemad versioonid ei sisalda peahoidlas ühtegi kujundust. Proovi [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org-i kujunduste kataloogist] mõni kujundus paigaldada. Selleks saad:\n:* laadida alla [https://www.mediawiki.org/wiki/Download lintarhiivi paigaldaja], mis sisaldab mitut kujundust ja tarkvaralisa. Saad sealt kleepimiseks kopeerida kausta <code dir=\"ltr\">skins/</code>;\n:* [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org-ist] kindla kujunduse lintarhiivi alla laadida;\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins kasutada Giti, et kujundusi alla laadida].\n: Selle tegemine ei tohiks häirida Giti hoidlat, kui oled MediaWiki arendaja. Vaata [https://www.mediawiki.org/wiki/Manual:Skin_configuration kujunduste häälestusjuhendist], kuidas kujundusi lubada ja kuidas valida vaikekujundus.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (lubatud)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>keelatud</strong>)",
-       "mediastatistics": "Meediumifailide arvandmestik",
+       "mediastatistics": "Meediastatistika",
        "mediastatistics-summary": "Arvandmed üles laaditud failitüüpide kohta. See käib ainult failide viimaste versioonide kohta. Vanu ja kustutatud versioone pole arvesse võetud.",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 bait|$1 baiti}} ($2; $3%)",
        "mediastatistics-bytespertype": "Failide kogusuurus selles alaosas: $1 {{PLURAL:$1|bait|baiti}} ($2; $3%).",
        "mw-widgets-dateinput-no-date": "Kuupäev valimata",
        "mw-widgets-dateinput-placeholder-day": "AAAA-KK-PP",
        "mw-widgets-dateinput-placeholder-month": "AAAA-KK",
-       "mw-widgets-mediasearch-input-placeholder": "Otsi meediumifaile",
+       "mw-widgets-mediasearch-input-placeholder": "Otsi meediat",
        "mw-widgets-mediasearch-noresults": "Tulemusi ei leitud.",
        "mw-widgets-titleinput-description-new-page": "lehekülge pole veel",
        "mw-widgets-titleinput-description-redirect": "ümbersuunamine leheküljele \"$1\"",
index b960391..bc3c797 100644 (file)
        "exif-copyrighted-false": "Status for ophavsret er ikke angivet",
        "exif-photometricinterpretation-0": "Sort-hvid (sort er 0)",
        "exif-photometricinterpretation-1": "Sort-hvid (sort er 0)",
+       "exif-photometricinterpretation-3": "Palet",
        "exif-unknowndate": "Ukendt dato",
        "exif-orientation-1": "Normal",
        "exif-orientation-2": "Horisontalt spejlet",
index e0a7f19..4c9f08d 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Beyronvan",
                        "Bonevarluri",
-                       "Mogoeilor"
+                       "Mogoeilor",
+                       "Lorestani"
                ]
        },
        "exif-imagewidth": "پئنا",
@@ -16,8 +17,8 @@
        "exif-planarconfiguration": "سرجایک کردن رسینه",
        "exif-ycbcrsubsampling": "نسوت زیرنمونه Y وه C",
        "exif-ycbcrpositioning": "جاگری کردن Y و C",
-       "exif-xresolution": "گپ نما کردن د آسو",
-       "exif-yresolution": "Ú¯Ù¾ Ù\86Ù\85ا Ú©Ø±Ø¯Ù\86 Ø¯ Ù\88ارÙ\88",
+       "exif-xresolution": "گٱپ Ù\86Ù\85ا Ú©Ø±Ø¯Ù\86 Ø¯ Ø¢Ø³Ù\88",
+       "exif-yresolution": "گٱپ Ù\86Ù\85ا Ú©Ø±Ø¯Ù\86 Ø¯ Ú¤Ø§Ø±Û\89",
        "exif-stripoffsets": "جاگه رسینه یا عسگ",
        "exif-rowsperstrip": "انازه ردیفیا سی هر نوار",
        "exif-stripbytecounts": "نقطه یا سی هر نوار جمع و جور بیه",
        "exif-primarychromaticities": "رنگ گرتن چیا مهمتر",
        "exif-ycbcrcoefficients": "ضریبا ماتریس جا وه جایی جاگه رئنی",
        "exif-referenceblackwhite": "جفت انازه سرچشمه سیا و اسبئ",
-       "exif-datetime": "Ø¢Ù\84شت Ø¯Ø¦Ù\86 Ù\88خت Ù\88 Ø¯Ù\85Ù\88Ù\86 Ø¬Ø§Ù\86Û\8cا",
+       "exif-datetime": "Ø¢Ù\84شت Ø¯Ø§Ù\9bÛ\8cÙ\86 Ú¤Ù±Ø®Øª Û\89 Ø²Ù\85Ù\88Ý© Ø¬Ø§Ù\86ؽا",
        "exif-imagedescription": "نوم عسگ",
        "exif-make": "سازیار دیربین",
-       "exif-model": "مدل دیربین",
-       "exif-software": "نرم افزار به کار گرتنی",
+       "exif-model": "مودل دیربین",
+       "exif-software": "نٱرم ٱفزار ڤ کار گرتنی",
        "exif-artist": "نیسنه",
        "exif-copyright": "حق تکثیر دار",
-       "exif-exifversion": "نسقه Exif",
+       "exif-exifversion": "نۏسخٱ Exif",
        "exif-flashpixversion": "نسقه حامین داری Flashpix",
-       "exif-colorspace": "رئن ورگه",
+       "exif-colorspace": "رٱنڳ ڤورگٱ",
        "exif-componentsconfiguration": "مئنی هر اندوم",
        "exif-compressedbitsperpixel": "شکل جمع و جیل کردن عسگ",
        "exif-pixelxdimension": "پئنا عسگ",
        "exif-pixelydimension": "درازا عسگ",
        "exif-usercomment": "ویر و باوریا کارور",
        "exif-relatedsoundfile": "جانیا دنگ دار مرتوط",
-       "exif-datetimeoriginal": "دÙ\85Ù\88Ù\86 Ù\88 Ù\88خت Ø±Ø§Ø³ Ø¨Û\8cئن دونسمنیا",
-       "exif-datetimedigitized": "گات و وخت دیجیتالی کردن",
+       "exif-datetimeoriginal": "زÙ\85Ù\88Ý© Û\89 Ú¤Ù±Ø®Øª Ø¯Û\8fرس Ø¨Û\8cÛ\8cن دونسمنیا",
+       "exif-datetimedigitized": "گات ۉ ڤٱخت دیجیتالی کردن",
        "exif-subsectime": "کم کردن ثانیه گات و وخت",
        "exif-subsectimeoriginal": "کم کردن ثانیه گات اصلی",
        "exif-subsectimedigitized": "کم کردن ثانیه گات دیجیتالی",
        "exif-copyrighted-true": "کپی رایت بیه",
        "exif-copyrighted-false": "حال و بال کپی رایت میزوکاری نبیه",
        "exif-unknowndate": "گات نادیار",
-       "exif-orientation-1": "Ø¢دی",
+       "exif-orientation-1": "عادی",
        "exif-orientation-2": "پشت ری بیه افقی",
        "exif-orientation-3": "180 گرینج لر دئه",
        "exif-orientation-4": "پشت ری بیه عمودی",
index fcf47da..2eb4efa 100644 (file)
        "prefs-advancedwatchlist": "گزینه‌های پیشرفته",
        "prefs-displayrc": "گزینه‌های نمایش",
        "prefs-displaywatchlist": "گزینه‌های نمایش",
+       "prefs-pageswatchlist": "صفحه‌های پی‌گیری‌شده",
        "prefs-tokenwatchlist": "بلیط",
        "prefs-diffs": "تفاوت‌ها",
        "prefs-help-prefershttps": "تأثیر این ترجیح بعد از ورود بعدی شما اعمال خواهد شد.",
        "rcfilters-watchlist-showupdated": "تغییرات صفحاتی که شما از زمانی که تغییر بازدیدشان نکرده‌اید به صورت <strong>پررنگ</strong> و با نشانگر توپر نمایش می‌یابد.",
        "rcfilters-preference-label": "مخفی کردن نسخه بهبود یافته تغییرات اخیر",
        "rcfilters-preference-help": "تغییرات رابط کاربری که در سال ۲۰۱۷ اضافه شده است را بر می‌گرداند.",
-       "rcfilters-watchlist-preference-label": "نمایش نسخهٔ بهبودیافتهٔ فهرست پیگیری",
+       "rcfilters-watchlist-preference-label": "استفاده واسط بدون جاوااسکریپت",
        "rcfilters-watchlist-preference-help": "واگردان در سال ۲۰۱۷ دوباره طراحی شد و تمام ابزارها اضافه و از آن زمان به بعد اضافه شدند.",
        "rcfilters-filter-showlinkedfrom-label": "نمایش تغییرات صفحاتی که پیوند شده‌اند",
        "rcfilters-filter-showlinkedfrom-option-label": "<strong>صفحات پیوند به</strong> صفحهٔ انتخاب شده",
        "ipb-disableusertalk": "ویرایش صفحهً بحث توسط خود کاربر",
        "ipb-change-block": "بستن دوبارهٔ کاربر با این تنظیم‌ها",
        "ipb-confirm": "تأیید بستن",
+       "ipb-partial": "جزئی",
        "ipb-pages-label": "صفحات",
        "ipb-namespaces-label": "فضاهای نام",
        "badipaddress": "نشانی آی‌پی نامعتبر",
        "ipb-blocklist-contribs": "مشارکت‌های $1",
        "ipb-blocklist-duration-left": "$1 باقی مانده",
        "block-expiry": "زمان سرآمدن:",
+       "block-prevent-edit": "در حال ویرایش",
+       "block-reason": "دلیل:",
        "unblockip": "باز کردن کاربر",
        "unblockiptext": "برای بازگرداندن دسترسی نوشتن به یک نشانی آی‌پی یا نام کاربری بسته‌شده از فرم زیر استفاده کنید.",
        "ipusubmit": "باز کردن دسترسی",
        "createaccountblock": "امکان ساخت حساب گرفته‌شده",
        "emailblock": "ایمیل بسته‌شده",
        "blocklist-nousertalk": "نمی‌تواند صفحهٔ بحث خود را ویرایش کند",
+       "blocklist-editing": "در حال ویرایش",
+       "blocklist-editing-page": "صفحات",
+       "blocklist-editing-ns": "فضاهای نام",
        "ipblocklist-empty": "فهرست بسته‌شدن‌ها خالی‌است.",
        "ipblocklist-no-results": "دسترسی حساب کاربری یا نشانی آی‌پی مورد نظر قطع نیست.",
        "blocklink": "بستن",
        "pageinfo-display-title": "نمایش عنوان",
        "pageinfo-default-sort": "کلید مرتب‌سازی پیش‌فرض",
        "pageinfo-length": "حجم صفحه  (بایت)",
+       "pageinfo-namespace": "فضای نام",
        "pageinfo-article-id": "شناسهٔ صفحه",
        "pageinfo-language": "زبان محتوای صفحه",
        "pageinfo-language-change": "تغییر",
        "confirmrecreate": "کاربر [[User:$1|$1]] ([[User talk:$1|بحث]]) این مقاله را پس از اینکه شما آغاز به ویرایش آن نموده‌اید به دلیل زیر حذف کرده است :\n: ''$2'' \nلطفاً تأیید کنید که مجدداً می‌خواهید این مقاله را بسازید.",
        "confirmrecreate-noreason": "کاربر [[User:$1|$1]] ([[User talk:$1|بحث]]) این صفحه را پس از شروع ویرایش‌تان {{GENDER:$1|پاک}} کرده‌است.  لطفاً تأیید کنید که شما واقعاً می‌خواهید آن را دوباره ایجاد کنید.",
        "recreate": "باز ایجاد",
-       "confirm-purge-title": "خالی کردن کاشه این صفحه",
+       "confirm-purge-title": "خالی‌کردن حافظهٔ نهان این صفحه",
        "confirm_purge_button": "تأیید",
        "confirm-purge-top": "پاک کردن نسخهٔ حافظهٔ نهانی (Cache) این صفحه را تأیید می‌کنید؟",
        "confirm-purge-bottom": "خالی کردن میانگیر یک صفحه باعث می‌شود که آخرین نسخهٔ آن نمایش یابد.",
index 25eae75..f82b638 100644 (file)
        "blocklist-nousertalk": "oman keskustelusivun muokkaaminen estetty",
        "blocklist-editing": "muokkaaminen",
        "blocklist-editing-sitewide": "muokkaaminen (sivuston laajuisesti)",
+       "blocklist-editing-page": "лопат",
+       "blocklist-editing-ns": "лемпотмот",
        "ipblocklist-empty": "Estolista on tyhjä.",
        "ipblocklist-no-results": "Pyydettyä IP-osoitetta tai käyttäjätunnusta ei ole estetty.",
        "blocklink": "estä",
        "ipb_expiry_old": "Vanhentumisaika on menneisyyttä.",
        "ipb_expiry_temp": "Piilotettujen käyttäjätunnusten estojen tulee olla pysyviä.",
        "ipb_hide_invalid": "Tämän tunnuksen piilottaminen ei onnistu; sillä on enemmän kuin {{PLURAL:$1|yksi muokkaus|$1 muokkausta}}.",
+       "ipb_hide_partial": "Кекшезь совамолемень саймес саематне эрявить теемс сайтань келес.",
        "ipb_already_blocked": "”$1” on jo estetty.",
        "ipb-needreblock": "$1 on jo estetty. Haluatko muuttaa eston asetuksia?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Muu esto|Muut estot}}",
        "logentry-block-block": "$1 {{GENDER:$2|esti}} käyttäjän {{GENDER:$4|$3}}. Eston kesto on $5 $6",
        "logentry-block-unblock": "$1 {{GENDER:$2|poisti muokkauseston}} käyttäjältä {{GENDER:$4|$3}}",
        "logentry-block-reblock": "$1 {{GENDER:$2|muutti}} eston asetuksia kohteessa {{GENDER:$4|$3}}. Eston kesto on $5 $6",
-       "logentry-partialblock-block": "$1 {{GENDER:$2|esti}} käyttäjää {{GENDER:$4|$3}} muokkaamasta {{PLURAL:$8||sivuja}} $7. Eston kesto on $5 $6",
+       "logentry-partialblock-block-page": "{{PLURAL:$1|лопа|лопат}} $2",
+       "logentry-partialblock-block-ns": "{{PLURAL:$1|лемпотмо|лемпотмот}} $2",
+       "logentry-partialblock-block": "$1 {{GENDER:$2|саймас саизе}} {{GENDER:$4|$3}}-нь, илязо витне-петне $7, зярдо витнема-петнема шказо $5 $6",
        "logentry-partialblock-reblock": "$1 {{GENDER:$2|muutti}} käyttäjän {{GENDER:$4|$3}} muokkauseston asetuksia estäen muokkausten tekemisen {{PLURAL:$8||sivuihin}} $7. Eston kesto on $5 $6",
        "logentry-non-editing-block-block": "$1 {{GENDER:$2|esti}} käyttäjää {{GENDER:$4|$3}} suorittamasta määrättyjä toimenpiteitä (lukuun ottamatta muokkaamista). Eston kesto on $5 $6",
        "logentry-non-editing-block-reblock": "$1 {{GENDER:$2|muutti}} käyttäjän {{GENDER:$4|$3}} toimintaeston asetuksia, jotka koskevat määrättyjä toimenpiteitä. Eston kesto on $5 $6",
index 2b33f5d..5bdfdab 100644 (file)
        "tog-watchuploads": "Ajouté nouvèl fiché ki mo ka enpòrté à mo lis di swivi",
        "tog-watchrollback": "Ajouté à mo lis di swivi paj-ya asou lakèl mo éfègtchwé roun révokasyon",
        "tog-minordefault": "Marké tout mo modifikasyon-yan kou fika minò pa défo",
-       "tog-previewontop": "Afiché prévizwalizasyon-an laro di zonn di modifikasyon",
-       "tog-previewonfirst": "Afiché prévizwalizasyon-an lò di pronmyé modifikasyon",
-       "tog-enotifwatchlistpages": "Avèrti mo pa kouryé lòské roun paj oben roun fiché di mo lis di swivi sa modifyé",
-       "tog-enotifusertalkpages": "Avèrti mo pa kouryé lò mo paj di diskisyon sa modifyé",
-       "tog-enotifminoredits": "Avèrti mo pa kour égalman lò dé modifikasyon minò dé paj oben dé fiché",
-       "tog-enotifrevealaddr": "Afiché mo adrès élègtronnik annan kour di notifikasyon",
+       "tog-previewontop": "Afiché prévizwèlizasyon-an laro di zonn-an di modifikasyon",
+       "tog-previewonfirst": "Afiché prévizwèlizasyon-an lò di pronmyé modifikasyon-an",
+       "tog-enotifwatchlistpages": "Avèrti mo pa kourilèt lò roun paj oben roun fiché di mo lis di swivi fika modifyé",
+       "tog-enotifusertalkpages": "Avèrti mo pa kourilèt lò mo paj di diskisyon fika modifyé",
+       "tog-enotifminoredits": "Avèrti mo pa kourilèt égalman lò dé modifikasyon minò dé paj oben dé fiché",
+       "tog-enotifrevealaddr": "Afiché mo adrès élègtronnik annan kourilèt di notifikasyon",
        "tog-shownumberswatching": "Afiché nonm-an di itilizatò an kour",
        "tog-oldsig": "Zòt signatir atchwèl :",
        "tog-fancysig": "Trété signatir-a kou di wikitègs (san lyannaj otonmantik)",
        "tog-uselivepreview": "Afiché apèrsou san roucharjé paj-a",
-       "tog-forceeditsummary": "Avèrti mo lòské mo pa èspésifyé di rézimen di modifikasyon",
+       "tog-forceeditsummary": "Avèrti mo lò mo pa èspésifyé di rézimen di modifikasyon",
        "tog-watchlisthideown": "Maské mo pròp modifikasyon annan lis di swivi",
        "tog-watchlisthidebots": "Maské modifikasyon-yan ki fè pa dé robo annan lis di swivi",
        "tog-watchlisthideminor": "Maské modifikasyon-yan minò annan lis di swivi",
        "tog-watchlisthideanons": "Maské modifikasyon-yan di itilizatò annonnim annan lis di swivi-a",
        "tog-watchlisthidepatrolled": "Maské modifikasyon-yan ki rouli annan lis di swivi",
        "tog-watchlisthidecategorization": "Maské katégorizasyon dé paj",
-       "tog-ccmeonemails": "• Voyé mo roun kopi dé kour ki mo ka voyé pou ròt itilizatò",
+       "tog-ccmeonemails": "• Voyé mo roun kopi dé kourilèt ki mo ka voyé pou ròt itilizatò",
        "tog-diffonly": "Pa afiché kontni di paj-ya anba diff",
        "tog-showhiddencats": "Afiché katégori-ya ki kaché",
-       "tog-norollbackdiff": "Pa afiché diff aprè révoké",
+       "tog-norollbackdiff": "Pa afiché diff-a apré révoké",
        "tog-useeditwarning": "Avèrti mo lò mo ka kité roun paj an kour di modifikasyon san sovgardé",
        "tog-prefershttps": "Toujou itilizé roun konnègsyon sékirizé lò mo konnègté",
        "underline-always": "Toujou",
        "category-header-numerals": "$1–$2",
        "about": "Apropo",
        "article": "Paj di kontni",
-       "newwindow": "(Ka ouvri so kò annan roun nouvèl lafinèt)",
+       "newwindow": "(ka louvri so kò annan roun nouvèl lafinèt)",
        "cancel": "Annilé",
        "moredotdotdot": "Plis...",
        "morenotlisted": "Sa lis pouvé fika enkonplèt",
        "toolbox": "Zouti",
        "tool-link-userrights": "Modifyé group-ya di itiliz{{GENDER:$1|ò|ris}}-a",
        "tool-link-userrights-readonly": "Wè group-ya di itilizat{{GENDER:$1|ò|ris}}",
-       "tool-link-emailuser": "Voyé roun kouryé pou {{GENDER:$1|sa itilizatò|sa itilizatris}}",
+       "tool-link-emailuser": "Voyé roun kourilèt pou {{GENDER:$1|sa itilizatò}}",
        "imagepage": "Wè paj-a di fiché",
        "mediawikipage": "Wè paj di mésaj",
        "templatepage": "Wè paj di modèl",
        "laggedslavemode": "Panga, sa paj pa pouvé kontni tout dannyé modifikasyon-yan ki éfègtchwé",
        "readonly": "Baz di data vérouyé",
        "enterlockreason": "Endiké rézon-an di vérouyaj ensi ki roun èstimasyon di so douré",
-       "readonlytext": "Ajou ké mizajou di baz di data sa atchwèlman bloké, probabman pou pèrmèt mentnans di baz-a, aprè sa, tout bagaj ké rantré annan lòrd.\n\nAdministratò sistenm-an ki vérouyé baz di data fourni èsplikasyon-an ki ka swiv :<br /> $1",
+       "readonlytext": "Ajou-ya ké mizajou-ya di baz di data fika atchwèlman bloké, probabman pou pèrmèt mentnans-a di baz-a, apré sa, tout bagaj ké rantré annòrd.\n\nAdministratò sistenm-an ki vérouyé baz di data fourni lèsplikasyon-an ki ka swiv :<br /> $1",
        "missing-article": "Baz-a di data pa trouvé tègs-a di roun paj ki li té divèt trouvé, ki entitilé « $1 » $2.\n\nJénéralman, sala ka sirvini an swivan roun lyannaj bò'd roun dif ki périmen oben bò'd listorik-a di roun paj ki siprimen.\n\nSi a pa sa ki la, zòt pitèt trouvé roun annonmanli annan progranm-an.\nSouplé, signalé li à roun [[Special:ListUsers/sysop|administratò]] é pa bliyé di endiké li URL-a di paj-a.",
        "missingarticle-rev": "(niméro di vèrsyon : $1)",
        "missingarticle-diff": "(diff : $1, $2)",
        "userlogin-loggedin": "Zòt déja konnègté an tan ki $1.\nItilizé fòrmilèr-a ki anba pou konnègté zòt kò ké rounòt kont itilizatò.",
        "userlogin-reauth": "Zòt divèt roukonèkté zòt kò pou vérifyé ki zòt sa {{GENDER:$1|$1}}.",
        "userlogin-createanother": "Kréyé rounòt kont",
-       "createacct-emailrequired": "Adrès di kour",
-       "createacct-emailoptional": "Adrès di kour (fakiltativ)",
-       "createacct-email-ph": "Zòt adrès di kouryé",
-       "createacct-another-email-ph": "Rantré adrès-a di kouryé",
-       "createaccountmail": "Itilizé roun mo di pas aléyatwar tanporèr é voyé li pou adrès-a di kouryé spésifyé",
+       "createacct-emailrequired": "Adrès di kourilèt",
+       "createacct-emailoptional": "Adrès di kourilèt (fakiltativ)",
+       "createacct-email-ph": "Antré zòt adrès di kourilèt",
+       "createacct-another-email-ph": "Antré adrès-a di kourilèt",
+       "createaccountmail": "Itilizé roun modipas aléyatwè ki tanporèr é voyé li pou adrès-a di kourilèt ki èspésifyé",
        "createaccountmail-help": "Pouvé fika itilizé pou kréyé roun kont pou rounòt moun san konèt mo di pas-a.",
        "createacct-realname": "Non réyèl (fakiltatif)",
        "createacct-reason": "Motif",
        "mailmypassword": "Réynisyalizé modipas-a",
        "passwordremindertitle": "Nouvèl mo di pas tanporèr pou {{SITENAME}}",
        "passwordremindertext": "Tchèk moun (dipi adrès IP-a $1) doumandé roun modipas nòv pou {{SITENAME}} ($4). Oun modipas tanporèr pou itilizatò-a\n« $2 » té kréyé é sa « $3 ». Si sala té zòt entansyon,\nzòt divèt konnègté zòt kò é chwézi roun modipas nòv.\nZòt modipas tanporèr ké èspiré annan $5 jou{{PLURAL:}}.\n\nSi zòt pa lotò di sa doumann, oben si zòt ka souvni zòt kò atchwèlman di zòt modipas é zòt pli ka swété an chanjé, zòt pouvé ignoré sa mésaj é kontinwé di itilizé zòt ansyen modipas.",
-       "noemail": "Pyès adrès di kouryé té anréjistré pou itilizat{{GENDER:$1|ò|ris}}-a « $1 ».",
-       "noemailcreate": "Zòt divèt fourni roun adrès di kour valid",
-       "passwordsent": "Roun nouvèl mo di pas té voyé kot adrès-a di kouryé di itilizat{{GENDER:$1|ò|ris}} « $1 ».\nSouplé, roukonèkté zòt kò aprè ki zòt rousouvri li.",
+       "noemail": "Pyès adrès di kourilèt fika anréjistré pou itilizatò-a « $1 ».",
+       "noemailcreate": "Zòt divèt fourni roun adrès di kourilèt valid",
+       "passwordsent": "Roun nouvèl modipas fika voyé bò'd adrès-a di kourilèt di itilizatò « $1 ».\nSouplé, roukonnègté zòt kò apré ki zòt rousouvri li.",
        "blocked-mailpassword": "Zòt adrès IP bloké an modifikasyon. Pou évité abi-ya, i pa otorizé di itilizé rékipérasyon-an di mo à partir di sa adrès IP.",
-       "eauthentsent": "Roun kouryé di konfirmasyon té voyé à adrès-a ki endiké.\nAnvan ki rounòt kouryé fika voyé à sa kont, zòt ké divèt swiv lenstrigsyon di kouryé é konfirmen ki kont-a sa byen zòtpa.",
-       "throttled-mailpassword": "Roun kouryé di réynisyalizasyon di zòt modipas té ja fika voyé douran {{PLURAL:$1|dannyé lò}}. \nAfen di évité abi-ya, roun sèl kouryé di réynisyalizasyon di zòt modipas ké fika voyé pa {{PLURAL:$1|lò|entèrval di $1 lò}}.",
-       "mailerror": "Lérò lò di voyé-a di kour : $1",
+       "eauthentsent": "Roun kourilèt di konfirmasyon fika voyé bò'd adrès-a ki endiké.\nAnvan ki rounòt kourilèt fika voyé bò'd sa kont, zòt ké divèt swiv lenstrigsyon di kourilèt é konfirmen ki kont-a byen di zòt.",
+       "throttled-mailpassword": "Roun kourilèt di réynisyalizasyon di zòt modipas té ja fika voyé pannan {{PLURAL:$1|dannyé lèr|$1 dannyé lèr-ya}}. \nPou évité abi-ya, roun sèl kourilèt di réynisyalizasyon di zòt modipas ké fika voyé pa {{PLURAL:$1|lèr|entèrval di $1 lèr}}.",
+       "mailerror": "Lérò lò di voyé-a di kourilèt : $1",
        "acct_creation_throttle_hit": "Vizitò-ya di sa wiki ki ka itilizé zòt adrès IP kréyé {{PLURAL:$1|roun kont|$1 kont}} douran dannyé $2, sa ki fika limit magsimal ki otorizé annan sa entèrval di tan.\nPa konsékan, kréyasyon-an di kont pou vizitò-ya ki ka itilizé sa adrès IP sa tanporèrman sispann.",
-       "emailauthenticated": "Zòt adrès di kouryé té konfirmen $2 à $3.",
-       "emailnotauthenticated": "Zòt adrès di kouryé pòkò konfirmen.\nPyès kouryé ké fika voyé pou chaken dé fongsyon ki ka swiv.",
-       "noemailprefs": "Endiké roun adrès di kour annan zòt préférans pou itilizé sa fongsyon-yan.",
-       "emailconfirmlink": "Konfirmen zòt adrès di kour",
-       "invalidemailaddress": "Sa adrès kouryé pa pouvé fika asèpté pas so fòrma ka parèt enkorèk.\nRantré roun adrès korèkman fòrmaté oben lésé sa chan vid.",
-       "cannotchangeemail": "Adrès di kouryé dé kont pa pouvé fika modifyé asou sa wiki.",
-       "emaildisabled": "Sa sit pa pouvé voyé di kour.",
+       "emailauthenticated": "Zòt adrès di kourilèt fika konfirmen $2 à $3.",
+       "emailnotauthenticated": "Zòt adrès di kourilèt pòkò konfirmen.\nPyès kourilèt ké fika voyé pou chaken dé fongsyon ki ka swiv.",
+       "noemailprefs": "Endiké roun adrès di kourilèt annan zòt préférans pou itilizé sa fongsyon-yan.",
+       "emailconfirmlink": "Konfirmen zòt adrès di kourilèt",
+       "invalidemailaddress": "Sa adrès kourilèt pa pouvé fika asèpté pas so fòrma ka parèt enkorèk.\nAntré roun adrès ki korèkman fòrmaté oben lésé sa chan-an vid.",
+       "cannotchangeemail": "Adrès-ya di kourilèt dé kont pa pouvé fika modifyé asou sa wiki.",
+       "emaildisabled": "Sa sit pa pouvé voyé di kourilèt.",
        "accountcreated": "Kont kréyé",
        "accountcreatedtext": "Kont itilizatò pou [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|diskisyon]]) té kréyé.",
        "createaccount-title": "Kréyasyon di roun kont pou {{SITENAME}}",
-       "createaccount-text": "Tchèk moun kréyé roun kont pou zòt adrès di kouryé asou {{SITENAME}} ($4) ki entitilé « $2 », ké modipas « $3 ».\nZòt divèt ouvri roun sésyon é modifyé atchwèlman zòt modipas.\n\nIgnoré sa mésaj si sa kont té kréyé pa lérò.",
+       "createaccount-text": "Tchèk moun kréyé roun kont pou zòt adrès di kourilèt asou {{SITENAME}} ($4) ki entitilé « $2 », ké modipas « $3 ».\nZòt divèt louvri roun sésyon é modifyé atchwèlman zòt modipas.\n\nIgnoré sa mésaj si sa kont fika kréyé pa lérò.",
        "login-throttled": "Zòt tanté dannyéman roun nonm tròp élvé di konnègsyon.\nSouplé, antann $1 anvan di éséyé òkò.",
        "login-abort-generic": "Zòt échwé zòt tantativ di konnègsyon",
        "login-migrated-generic": "Zòt kont té migré, é zòt non d'itilizatò pa ka ègzisté òkò asou sa wiki.",
        "pt-createaccount": "Kréyé roun kont",
        "pt-userlogout": "Dékonnègté so kò",
        "php-mail-error-unknown": "Lérò enkonnèt annan fongsyon-an <kod>mail()</kod> di PHP.",
-       "user-mail-no-addy": "Enposib di voyé roun kouryé san adrès di kouryé.",
-       "user-mail-no-body": "Ésè di voyé di roun kouryé ké roun kò vid oben anòrmalman kour.",
+       "user-mail-no-addy": "Enposib di voyé roun kourilèt san adrès di kourilèt.",
+       "user-mail-no-body": "Lésè di voyé di roun kourilèt ké roun kò vid oben anòrmalman kourt.",
        "changepassword": "Chanjé di modipas",
        "resetpass_announce": "Pou tèrminé zòt enskripsyon, zòt divèt fourni roun mo di pas nòv.",
        "resetpass_text": "<!-- Ajouté tègs-a isi -->",
        "resetpass-submit-cancel": "Annilé",
        "resetpass-wrong-oldpass": "Mo di pas atchwèl oben tanporèr envalid.\nZòt pitèt ja chanjé zòt mo di pas oben doumandé roun mo di pas nòv tanporèr.",
        "resetpass-recycled": "Souplé, modifyé zòt modipas ké ròt kichoz ki atchwèl-a.",
-       "resetpass-temp-emailed": "Zòt konnègté ké roun kod tanporèr ki fourni pa kouryé.\nPou tèrminé konnègsyon-an, zòt divèt fourni roun nouvèl modipas isi :",
+       "resetpass-temp-emailed": "Zòt konnègté ké roun kod tanporèr ki fourni pa kourilèt.\nPou tèrminen konnègsyon-an, zòt divèt fourni roun nouvèl modipas isi :",
        "resetpass-temp-password": "Modipas tanporèr :",
        "resetpass-expired-soft": "Zòt modipas èspiré, é divèt fika modifyé. Souplé, chwézi roun nouvèl atchwèlman oben kliké asou « {{int:authprovider-resetpass-skip-label}} » pou fè li plita.",
        "resetpass-validity-soft": "Zòt modipas pa valid : $1\n\nSouplé, chwézi roun nouvèl modipas atchwèlman, oben kliké asou « {{int:authprovider-resetpass-skip-label}} » pou modifyé li plita.",
        "passwordreset": "Réynisyalizasyon di modipas",
        "passwordreset-text-one": "Ranplisé sa fòrmilèr pou zòt mo di pas.",
-       "passwordreset-emaildisabled": "Fongsyonnalité-ya di kouryé té dézagtivé asou sa wiki.",
+       "passwordreset-emaildisabled": "Fongsyonnalité-ya di kourilèt fika dézagtivé asou sa wiki.",
        "passwordreset-username": "Non di itilizatò :",
        "passwordreset-domain": "Domenn :",
-       "passwordreset-email": "Adrès di kour :",
+       "passwordreset-email": "Adrès di kourilèt :",
        "passwordreset-emailtitle": "Détay di kont asou {{SITENAME}}",
        "passwordreset-emailelement": "Non di itilizatò : \n$1\n\nMo di pas tanporèr : \n$2",
        "passwordreset-nocaller": "Oun apélan divèt fika fourni",
        "passwordreset-nosuchcaller": "Apélan-an pa ka ègzisté : $1",
        "passwordreset-invalidemail": "Adrès di mésajri envalid",
        "passwordreset-nodata": "Pyès non d'itilizatò oben adrès di mésajri té fourni",
-       "changeemail": "Chanjé oben siprimen adrès-a di kour",
+       "changeemail": "Chanjé oben siprimen adrès-a di kourilèt",
        "changeemail-no-info": "Zòt divèt fika konnègté pou agsédé dirèkman à sa paj.",
-       "changeemail-oldemail": "Adrès di kour atchwèl :",
-       "changeemail-newemail": "Nouvèl adrès di kour :",
+       "changeemail-oldemail": "Adrès di kourilèt atchwèl :",
+       "changeemail-newemail": "Nouvèl adrès di kourilèt :",
        "changeemail-none": "(pyès)",
        "changeemail-password": "Zòt mo di pas asou {{SITENAME}} :",
-       "changeemail-submit": "Chanjé adrès di kouryé",
+       "changeemail-submit": "Chanjé adrès-a di kourilèt",
        "changeemail-throttled": "Zòt fè tròp tantativ di konnègsyon. \nSouplé, antann $1 anvan di réyéséyé.",
-       "changeemail-nochange": "Souplé, sézi roun nouvèl adrès di kouryé diférant di présédant-a.",
+       "changeemail-nochange": "Souplé, sézi roun nouvèl adrès di kourilèt ki diféran di présédant-a.",
        "resettokens": "Réynisyalizé jéton-yan.",
        "resettokens-no-tokens": "I pa gen pyès jéton à réynisyalizé.",
        "resettokens-tokens": "Jéton :",
        "savechanges-start": "Anréjistré modifikasyon-yan…",
        "publishpage-start": "Pibliyé paj-a…",
        "publishchanges-start": "Pibliyé modifikasyon-yan…",
-       "preview": "Prévizwalizasyon",
+       "preview": "Prévizwèlizasyon",
        "showpreview": "Prévizwèlizé",
        "showdiff": "Wè modifikasyon-yan",
        "anoneditwarning": "<strong>Panga :</strong> zòt pa konnègté. Zòt adrès IP ké vizib pa tout moun si zòt ka fè dé modifikasyon. Si zòt <strong>[$1 ka konnègté zòt kò]</strong> oben <strong>[$2 kréyé roun kont]</strong>, zòt modifikasyon ké fika atribiyé à zòt pròp non di itilizatò é zòt ké gen ròt avantaj.",
-       "blockedtext": "<strong>Zòt kont itilizatò oben zòt adrès IP bloké.</strong>\n\nBlokaj té éfègtchwé pa $1.\nRézon-an ki évoké ka swiv : <em>$2</em>.\n\n* Koumansman di blokaj : $8\n* Lèspirasyon di blokaj : $6\n* Kont bloké : $7.\n\nZòt pouvé kontagté $1 oben rounòt [[{{MediaWiki:Grouppage-sysop}}|administratò]] pou an diskité.\nZòt pouvé itilizé fongsyon-an « {{int:emailuser}} » rounso si roun adrès di kouryé valid sa èspésifyé annan zòt [[Special:Preferences|préférans]] é rounso si sa fongsyonnalité pa bloké pou zòt.\nZòt adrès IP atchwèl sa $3 é zòt idantifyan di blokaj sa $5.\nSouplé, enkli tout détay-ya lasou'l annan chaken dé rékèt ki zòt ké fè.",
+       "blockedtext": "<strong>Zòt kont itilizatò oben zòt adrès IP fika bloké.</strong>\n\nBlokaj té éfègtchwé pa $1.\nRézon-an ki évoké ka swiv : <em>$2</em>.\n\n* Koumansman di blokaj : $8\n* Lèspirasyon di blokaj : $6\n* Kont bloké : $7.\n\nZòt pouvé kontagté $1 oben rounòt [[{{MediaWiki:Grouppage-sysop}}|administratò]] pou diskité apropo di sa.\nZòt pouvé itilizé fongsyon-an « {{int:emailuser}} » rounso si roun adrès di kourilèt valid sa èspésifyé annan zòt [[Special:Preferences|préférans]] é rounso si sa fongsyonnalité pa fika bloké ba zòt.\nZòt adrès IP atchwèl sa $3 é zòt idantifyan di blokaj sa $5.\nSouplé, enkli tout détay-ya lasou'l annan chak rékèt ki zòt ké fè.",
        "loginreqlink": "konnègté so kò",
        "newarticletext": "Zòt swiv roun lyannaj bò'd roun paj ki pa ka ègzisté òkò. \nAfen di kréyé sa paj, rantré zòt tègs annan bwèt-a ki apré (zòt pouvé konsilté [$1 paj di lèd-a] pou plis di lenfòrmasyon).\nSi zòt vini{{GENDER:|}} isi pa lérò, kliké asou bouton-an <strong>Viré</strong> di zòt navigatò.",
-       "anontalkpagetext": "----\n<em>Zòt asou paj di diskisyon di roun itilizatò annonnim ki pa òkò kréyé di kont oben ki pa ka an itilizé</em>.\nPou sa rézon, nou divèt itilizé so adrès IP pou idantifyé li.\nOun adrès IP pouvé fika patajé pa plizyò itilizatò.\nSi zòt roun itiliza{{GENDER:|ò}} annonnim é si zòt ka kontasté ki dé koumantèr ki pa ka konsèrné zòt sa adrèsé pou zòt, zòt pouvé [[Special:CreateAccount|kréyé roun kont]] oben [[Special:UserLogin|konnègté zòt kò]] atò di évité tout konfizyon fitir ké ròt kontribitò annonnim.",
+       "anontalkpagetext": "----\n<em>Zòt asou paj-q di diskisyon di roun itilizatò annonnim ki pa òkò kréyé di kont oben ki pa ka itilizé roun</em>.\nPou sa rézon, nou divèt itilizé so adrès IP pou idantifyé li.\nOun adrès konran IP pouvé fika patajé pa plizyò itilizatò.\nSi zòt sa roun itiliza{{GENDER:|ò}} annonnim é si zòt ka kontasté ki dé koumantèr ki pa ka konsèrnen zòt, fika adrésé ba zòt, zòt pouvé [[Special:CreateAccount|kréyé roun kont]] oben [[Special:UserLogin|konnègté zòt kò]] pou évité tout konfizyon fitir ké ròt kontribitò annonnim.",
        "noarticletext": "I pa gen atchwèlman pyès tègs asou sa paj.\nZòt pouvé [[Special:Search/{{PAGENAME}}|lansé oun sasé asou sa tit]] annan ròt paj-ya,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sasé annan lopérasyon-yan ki lyannen]\noben [{{fullurl:{{FULLPAGENAME}}|action=edit}} kréyé sa paj]</span>.",
        "noarticletext-nopermission": "I pa gen atchwèlman pyès tègs asou sa paj.\nZòt pouvé [[Special:Search/{{PAGENAME}}|fè roun sasé asou sa tit]] annan ròt paj-ya,\noben <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|paj={{FULLPAGENAMEE}}}} sasé annan journal-ya ki asosyé]</span>, mé zòt pa gen pèrmisyon-an di kréyé sa paj.",
        "userpage-userdoesnotexist-view": "Kont itilizatò-a « $1 » pa anréjistré.",
        "clearyourcache": "<strong>Nòt :</strong> apré zòt anréjistré zòt modifikasyon, zòt divèt fòrsé roucharjman konplè di kach di zòt navigatò pou wè chanjman-yan.\n* <strong>Firefox / Safari :</strong> mentni touch-a <em>Maj</em> (<em>Shift</em>) an klikan asou bouton-an <em>Atchwalizé</em> oben présé <em>Ctrl-F5</em> oben <em>Ctrl-R</em> (<em>⌘-R</em> asou roun Mac) \n* <strong>Google Chrome :</strong> apiyé asou <em>Ctrl-Maj-R</em> (<em>⌘-Shift-R</em> asou roun Mac) \n* <strong>Internet Explorer :</strong> mentni touch-a <em>Ctrl</em> an klikan asou bouton-an <em>Atchwalizé</em> oben présé <em>Ctrl-F5</em> \n* <strong>Opera :</strong> alé annan <em>Menu → Settings</em> (<em>Opera → Préférences</em> asou roun Mac) é answit à <em>Konfidansyalité & sékrité → Éfasé data di lésplorasyon-yan → Zimaj ké fiché an kach</em>.",
-       "previewnote": "<strong>Raplé-zòt ki a jis roun prévizwalizasyon.</strong>\nZòt modifikasyon pa òkò anréjistré !",
+       "previewnote": "<strong>Pa bliyé ki a jis roun prévizwèlizasyon.</strong>\nZòt modifikasyon pa òkò fika anréjistré !",
        "continue-editing": "Alé kot zonn di modifikasyon",
        "editing": "Modifikasyon di $1",
        "creating": "Kréyasyon di $1",
        "yourtext": "Zòt tègs",
        "yourdiff": "Diférans",
        "templatesused": "{{PLURAL:$1|Modèl itilizé}} pa sa paj :",
-       "templatesusedpreview": "{{PLURAL:$1|Modèl itilizé}} annan sa prévizwalizasyon :",
+       "templatesusedpreview": "{{PLURAL:$1|Modèl itilizé}} annan sa prévizwèlizasyon :",
        "template-protected": "(protéjé)",
        "template-semiprotected": "(sémi-protéjé)",
        "hiddencategories": "{{PLURAL:$1|Katégori kaché}} don sa paj ka fè parti :",
        "allpages-hide-redirects": "Maské roudirègsyon-yan",
        "categories": "Lis dé katégori",
        "listgrouprights-members": "(lis dé manm)",
-       "emailuser": "Voyé li roun kour",
+       "emailuser": "Voyé li roun kourilèt",
        "usermessage-editor": "Mésajé di sistèm",
        "watchlist": "Lis di swivi",
        "mywatchlist": "Lis di swivi",
        "tooltip-t-recentchangeslinked": "Lis dé modifikasyon résan ki lyannen ké sa paj",
        "tooltip-feed-atom": "Flux Atom pou sa paj",
        "tooltip-t-contributions": "Wè lis dé kontribisyon di {{GENDER:$1|sa itilizatò|sa itilizatris}}",
-       "tooltip-t-emailuser": "Voyé roun kouryé à {{GENDER:$1|sa itilizatò|sa itilizatris}}",
+       "tooltip-t-emailuser": "Voyé roun kourilèt pou {{GENDER:$1|sa itilizatò}}",
        "tooltip-t-upload": "Télévèrsé dé fiché",
        "tooltip-t-specialpages": "Lis di tout paj èspésyal",
        "tooltip-t-print": "Vèrsyon enprimab di sa paj",
        "tooltip-compareselectedversions": "Afiché diférans-ya ant dé vèrsyon-yan ki sélègsyonnen di sa paj",
        "tooltip-watch": "Ajouté sa paj annan zòt lis di swivi",
        "tooltip-rollback": "« Révoké » ka annilé an roun klik modifikasyon(-an oben -yan) di sa paj ki réyalizé pa so dannyé kontribitò",
-       "tooltip-undo": "« Annilé » ka rétabli modifikasyon-an ki ka présédé é ka ouvri lafinèt di modifikasyon an mòd prévizwalizasyon. I posib di ajouté roun rézon annan rézimen-an.",
+       "tooltip-undo": "« Annilé » ka rétabli modifikasyon-an ki ka présédé é ka louvri lafinèt di modifikasyon an mòd prévizwèlizasyon. I posib di ajouté roun rézon annan rézimen-an.",
        "tooltip-summary": "Rantré roun brèf rézimen",
        "simpleantispam-label": "Vérifikasyon anti-pouryèl.\nPa <strong>enskri</strong> anyen isi !",
        "pageinfo-title": "Lenfòrmasyon pou « $1 »",
index 23937e0..52599fe 100644 (file)
        "ipb_expiry_old": "O tempo de expiración é no pasado.",
        "ipb_expiry_temp": "Os bloqueos a nomes de usuario agochados deberían ser permanentes.",
        "ipb_hide_invalid": "Non se pode suprimir esta conta; ten máis {{PLURAL:$1|dunha edición|de $1 edicións}}.",
+       "ipb_hide_partial": "Os bloqueos con nome de usuario oculto deben ser para todo o sitio.",
        "ipb_already_blocked": "\"$1\" xa está bloqueado",
        "ipb-needreblock": "$1 xa está bloqueado. Quere cambiar as configuracións?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Outro bloqueo|Outros bloqueos}}",
        "expand_templates_generate_rawhtml": "Amosar o HTML en bruto",
        "expand_templates_preview": "Vista previa",
        "expand_templates_preview_fail_html": "<em>Dado que o código HTML puro está activado en {{SITENAME}} e se produciu unha perda dos datos da sesión, a vista previa está oculta como precaución contra ataques mediante código JavaScript.</em>\n\n<strong>Se este é un intento lexítimo de acceso á vista previa, probe de novo.</strong>\nEn caso de que siga sen funcionar, intente [[Special:UserLogout|saír]] e volver entrar na súa conta e verifique que o seu navegador permite o uso de cookies neste sitio.",
-       "expand_templates_preview_fail_html_anon": "<em>Dado que o código HTML puro está activado en {{SITENAME}} e produciuse unha perda dos datos da sesión, a vista previa está oculta como precaución contra ataques mediante código JavaScript.</em>\n\n<strong>Se este é un intento lexítimo de acceso á vista previa, probe a [[Special:UserLogout|saír]] e volver a entrar coa súa conta.</strong>",
+       "expand_templates_preview_fail_html_anon": "<em>Dado que o código HTML puro está activado en {{SITENAME}} e produciuse unha perda dos datos da sesión, a vista previa está oculta como precaución contra ataques mediante código JavaScript.</em>\n\n<strong>Se este é un intento lexítimo de acceso á vista previa, probe a [[UserLogin|iniciar a sesión]] e volver a entrar coa súa conta.</strong>",
        "expand_templates_input_missing": "Necesita proporcionar polo menos algún texto wiki de entrada.",
        "pagelanguage": "Cambiar a lingua da páxina",
        "pagelang-name": "Páxina",
index ce64a0a..1729226 100644 (file)
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|uloi]])",
        "duplicate-defaultsort": "'''Chotrai:''' Default arin manddunk chavi ''$2'' rodd korta adhlem default arin manddunk chavi ''$1'', haka.",
        "redirect": "Fayl, vaporpi, pan, uzollnni vo sotr ank‎ vorvim punornirdexon kor",
-       "redirect-summary": "Hem vixex pan punornirdexit korta eka faylik (faylichem nanv dilear), eke panak (uziollnecho ank vo panacho ank dilear), ek vaporpeachem panak (eke vaporpeache ank dilear), vo ek sotr provishtt (sotrachem ank dilear). Vapor: [[{{#Special:Redirect}}/file/Dekhik.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], vo [[{{#Special:Redirect}}/logid/186]].",
+       "redirect-summary": "Hem vixex pan punornirdexit korta eka faylik (faylichem nanv dilear), eke panak (uziollnecho ank vo panacho ank dilear), ek vaporpeachem panak (eke vaporpeache ank dilear), vo ek sotr nond (sotrachem ank dilear). Vapor: [[{{#Special:Redirect}}/file/Dekhik.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], vo [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Voch‎",
        "redirect-lookup": "Suchien polloi:",
        "redirect-value": "Mol:",
index 41842e4..1f0d32e 100644 (file)
        "anoncontribs": "תרומות",
        "contribsub2": "עבור {{GENDER:$3|$1}} ($2)",
        "contributions-userdoesnotexist": "חשבון המשתמש \"$1\" אינו רשום.",
+       "negative-namespace-not-supported": "אין תמיכה במרחבי שם בעלי ערך שלילי.",
        "nocontribs": "לא נמצאו שינויים המתאימים לקריטריונים אלו.",
        "uctop": "נוכחי",
        "month": "עד החודש:",
index f228ab7..2e120fc 100644 (file)
        "tog-watchlisthideminor": "मेरी ध्यानसूची से छोटे परिवर्तन छिपाएँ",
        "tog-watchlisthideliu": "मेरी ध्यानसूची में सत्रारंम्भित सदस्यों के सम्पादन न दिखाएँ",
        "tog-watchlistreloadautomatically": "जब भी छननी बदलने पर ध्यानसूची को अपने आप ही लोड करें (जावास्क्रिप्ट अनिवार्य)",
-       "tog-watchlistunwatchlinks": "दà¥\87à¤\96नà¥\87वालà¥\80 à¤¸à¥\82à¤\9aà¥\80 à¤ªà¥\8dरविषà¥\8dà¤\9fियà¥\8bà¤\82 à¤\95à¥\87 à¤²à¤¿à¤\8f à¤¸à¥\80धा à¤\85नदà¥\87à¤\96ा/दà¥\87à¤\96ा à¤\95ड़à¥\80 à¤\9cà¥\8bड़à¥\87à¤\82 (à¤\9fà¥\89à¤\97ल à¤\95ारà¥\8dयà¤\95à¥\8dषमता à¤\95à¥\87 à¤²à¤¿à¤\8f à¤\9cावासà¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤\86वशà¥\8dयà¤\95)",
+       "tog-watchlistunwatchlinks": "दà¥\87à¤\96नà¥\87वालà¥\80 à¤¸à¥\82à¤\9aà¥\80 à¤ªà¥\8dरविषà¥\8dà¤\9fियà¥\8bà¤\82 à¤\95à¥\87 à¤²à¤¿à¤\8f à¤¸à¥\80धा à¤\85नदà¥\87à¤\96ा/दà¥\87à¤\96ा à¤\9aिहà¥\8dन ({{int:Watchlist-unwatch}}/{{int:Watchlist-unwatch-undo}}) à¤ªà¥\83षà¥\8dठà¥\8bà¤\82 à¤\95à¥\8b à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\95à¥\87 à¤¸à¤¾à¤¥ à¤\9cà¥\8bड़à¥\87à¤\82 (à¤\9fà¥\89à¤\97ल à¤\95à¥\87 à¤\95ारà¥\8dय à¤\95रनà¥\87 à¤¹à¥\87तà¥\81 à¤\9cावासà¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤\86वशà¥\8dयà¤\95 à¤¹à¥\88)",
        "tog-watchlisthideanons": "अनाम सदस्यों द्वारा किए सम्पादनों को मेरी ध्यानसूची में न दिखायें",
        "tog-watchlisthidepatrolled": "परीक्षित सम्पादन मेरी ध्यानसूची में छुपाएँ",
        "tog-watchlisthidecategorization": "पृष्ठों का श्रेणीकरण छुपाएँ",
        "lockmanager-fail-closelock": "\"$1\" की लॉक फ़ाइल बंद नहीं की जा सकी।",
        "lockmanager-fail-deletelock": "\"$1\" की लॉक फ़ाइल हटाई नहीं जा सकी।",
        "lockmanager-fail-acquirelock": "\"$1\" के लिए लॉक प्राप्त नहीं किया जा सका।",
-       "lockmanager-fail-openlock": "\"$1\" à¤\95à¥\87 à¤²à¤¿à¤¯à¥\87 à¤²à¥\89à¤\95 à¥\9eाà¤\87ल à¤\96à¥\8bलà¥\80 à¤¨à¤¹à¥\80à¤\82 à¤\9cा à¤¸à¤\95à¥\80।",
+       "lockmanager-fail-openlock": "\"$1\" à¤\95à¥\87 à¤²à¤¿à¤¯à¥\87 à¤²à¥\89à¤\95 à¤«à¤¼à¤¾à¤\87ल à¤\96à¥\8bलà¥\80 à¤¨à¤¹à¥\80à¤\82 à¤\9cा à¤¸à¤\95à¥\80। à¤¸à¥\81निशà¥\8dà¤\9aित à¤\95रà¥\87à¤\82 à¤\95ि à¤\86पà¤\95à¥\80 à¤\85पलà¥\8bड à¤¡à¤¾à¤¯à¤°à¥\87à¤\95à¥\8dà¤\9fà¥\8dरà¥\80 à¤¸à¤¹à¥\80 à¤¸à¥\87 à¤\95à¥\89नà¥\8dफ़िà¤\97र à¤¹à¥\88 à¤¤à¤¥à¤¾ à¤\86पà¤\95ा à¤µà¥\87ब à¤¸à¤°à¥\8dवर à¤\95à¥\8b à¤µà¤\83 à¤¡à¤¾à¤¯à¤°à¥\87à¤\95à¥\8dà¤\9fà¥\8dरà¥\80 à¤¦à¥\87à¤\96नà¥\87 à¤\95à¥\80 à¤\85नà¥\81मति à¤¹à¥\88।\nà¤\85धिà¤\95 à¤\9cानà¤\95ारà¥\80 à¤\95à¥\87 à¤²à¤¿à¤¯à¥\87 https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgUploadDirectory à¤¦à¥\87à¤\96à¥\87à¤\82।",
        "lockmanager-fail-releaselock": "\"$1\" के लिए लॉक हटाया नहीं जा सका।",
        "lockmanager-fail-db-bucket": "बकेट $1 में आवश्यक संख्या में लॉक डाटाबेसों से सम्पर्क नहीं हो पाया।",
        "lockmanager-fail-db-release": "डाटाबेस $1 से ताला हटाया नहीं जा सका।",
        "uploadstash-zero-length": "फ़ाइल शून्य लंबाई की है|",
        "invalid-chunk-offset": "अग्राह्य चंक ऑफ़सेट",
        "img-auth-accessdenied": "अनुमति नहीं है",
-       "img-auth-nopathinfo": "PATH_INFO मौजूद नहीं है।\nआपके सर्वर में इस जानकारी को भेजने के लिए जमाव नहीं है।\nयह सी॰जी॰आई-आधारित हो सकता है और img_auth को स्वीकार नहीं करता है।\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization देखें।",
+       "img-auth-nopathinfo": "पाथ जानकारी उपलब्ध नहीं है।\nआपके सर्वर को REQUEST_URI तथा/अथवा PATH_INFO चरों को पास करने के लिये सेट अप होना चाहिये। अगर ऐसा है तो $wgUsePathInfo को सक्रिय करने का प्रयास करें।  \nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization देखें।",
        "img-auth-notindir": "अनुरोधित पथ जमाई हुई अपलोड डायरेक्टरी में नहीं है।",
        "img-auth-badtitle": "\"$1\" से एक वैध शीर्षक बनाने में असमर्थ।",
        "img-auth-nologinnWL": "आपने सत्रारंभ नहीं किया हुआ है और \"$1\" श्वेतसूची में नहीं है।",
        "move": "स्थानान्तरण",
        "movethispage": "पृष्ठ का नाम बदलें",
        "unusedimagestext": "निम्न फ़ाइलें मौजूद हैं, पर किसी भी पृष्ठ में प्रयुक्त नहीं हैं।\nकृपया ध्यान दें कि अन्य वेब साइट एक सीधी कड़ी से फ़ाइल से जुड़ी हो सकती हैं, और सक्रिय उपयोग में होने के बावजूद यहाँ दिखाई जा सकती है।",
+       "unusedimagestext-categorizedimgisused": "निम्नोक्त फ़ाइल अस्तित्व में तो है मगर किसी पृष्ठ से जुड़ा नहीं है। श्रेणीबद्ध चित्र को प्रयुक्त ही माना जाता है भले ही वह किसी पृष्ठ से न जुड़े हों।\nकृपया ध्यान दें कि अन्य वेबसाइटें सीधे इस फ़ाइल से जुड़ी हो सकती हैं, और कई अन्य भी यहाँ सूचीबद्ध हो सकती हैं भले ही वह वर्तमान प्रयोग में न हों।",
        "unusedcategoriestext": "निम्नलिखित श्रेणी पृष्ठ मौजूद हैं जबकि कोई भी पृष्ठ या अन्य श्रेणियाँ इनका प्रयोग नहीं करते हैं।",
        "notargettitle": "लक्ष्य नहीं",
        "notargettext": "इस क्रिया को करने के लिये आपने लक्ष्य पृष्ठ या सदस्य बताया नहीं है।",
        "apisandbox-dynamic-parameters-add-label": "प्राचल जोड़ें:",
        "apisandbox-dynamic-parameters-add-placeholder": "प्राचल नाम",
        "apisandbox-dynamic-error-exists": "प्राचल नाम \"$1\" पहले से मौजूद है।",
+       "apisandbox-templated-parameter-reason": "This [[Special:ApiHelp/main#main/templatedparams|templated parameter]] is offered based on the {{PLURAL:$1|value|values}} of $2.",
        "apisandbox-deprecated-parameters": "प्राचल पुराना हो चुका है",
        "apisandbox-fetch-token": "टोकन स्वतः भरें",
        "apisandbox-add-multi": "जोड़ें",
        "cachedspecial-refresh-now": "नवीनतम देखें।",
        "categories": "श्रेणियाँ",
        "categories-submit": "दिखाएँ",
-       "categoriespagetext": "निम्नोक्त {{PLURAL:$1|श्रेणी|श्रेणियों}} में पृष्ठ या मीडिया है।\nजिन श्रेणियों का [[Special:UnusedCategories|अप्रयुक्त श्रेणियाँ]] यहाँ नहीं दिखाई गई हैं।\n[[Special:WantedCategories|वांछित श्रेणियाँ]] भी देखें।",
+       "categoriespagetext": "निम्नोक्त {{PLURAL:$1|श्रेणी|श्रेणियों}} में पृष्ठ या मीडिया है और यह अप्रयुक्त नहीं भी हो सकती है।\n[[Special:WantedCategories|वांछित श्रेणियाँ]] भी देखें।",
        "categoriesfrom": "इस अक्षर से शुरू होने वाली श्रेणीयाँ दर्शायें:",
        "deletedcontributions": "हटाए गए सदस्य योगदान",
        "deletedcontributions-title": "हटाए गए सदस्य योगदान",
        "ipb_expiry_old": "समाप्ती समय बीत चुका है।",
        "ipb_expiry_temp": "छुपायें हुए सदस्यनाम ब्लॉक्स हमेशा के लिये होने चाहिये।",
        "ipb_hide_invalid": "इस खाते को छिपा नहीं पाए; इस से {{PLURAL:$1|एक सम्पादन किया गया है|$1 सम्पादन किये गये हैं}}।",
+       "ipb_hide_partial": "छुपे सदस्यनाम अवरोध साइटवाइड अवरोध होने चाहिये।",
        "ipb_already_blocked": "\"$1\" को पहलेसे ब्लॉक हैं",
        "ipb-needreblock": "$1 पहले ही अवरोधित है।\nक्या आप अवरोध के जमाव बदलना चाहेंगे?",
        "ipb-otherblocks-header": "अन्य  {{PLURAL:$1| block|blocks}}",
        "mcrundofailed": "वापस लेना असफल रहा",
        "mcrundo-missingparam": "अनुरोध पर अपेक्षित प्राचल गायब हैं।",
        "mcrundo-changed": "आपके परिवर्तन देखने के बाद पृष्ठ बदल चुका है। कृपया नये परिवर्तनों का पुनरीक्षण करें।",
+       "mcrundo-parse-failed": "नये अवतरण की व्याख्या असफल रही: $1",
        "semicolon-separator": ";",
        "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← पिछला पृष्ठ",
        "logentry-partialblock-block-ns": "{{PLURAL:$1|नामस्थान}} $2",
        "logentry-partialblock-block": "$1 ने {{GENDER:$4|$3}} को $7 सम्पादित करने से $5 $6 समय तक {{GENDER:$2|अवरोधित कर दिया है}}",
        "logentry-partialblock-reblock": "$1 ने {{GENDER:$4|$3}} की $7 पर अवरोध सेटिंग में {{GENDER:$2|बदलाव कर दिया है}}। अब यह प्रतिबन्ध $5 $6 समय तक रहेगा।",
+       "logentry-non-editing-block-block": "$1 ने {{GENDER:$4|$3}} को विशेष गैर-सम्पादन कार्यों से $5 $6 समय तक {{GENDER:$2|अवरोधित कर दिया है}}",
+       "logentry-non-editing-block-reblock": "$1 ने {{GENDER:$4|$3}} की विशेष गैर-सम्पादन कार्यों की अवरोध सेटिंग में {{GENDER:$2|बदलाव कर दिया है}}। अब यह प्रतिबन्ध $5 $6 समय तक रहेगा।",
        "logentry-suppress-block": "$1 ने {{GENDER:$4|$3}} को $5 के लिए {{GENDER:$2|अवरोधित}} कर दिया। $6",
        "logentry-suppress-reblock": "$1 ने {{GENDER:$4|$3}} के अवरोध में {{GENDER:$2|बदलाव}} कर दिया और यह अवरोध $5 रहेगा। $6",
        "logentry-import-upload": "$1 {{GENDER:$2|आयात किया गया}} $3 फ़ाइल अपलोड के माध्यम से",
index 7e4bcd9..1aa611d 100644 (file)
@@ -77,7 +77,7 @@
        "tog-watchlisthideminor": "Sakrij manje promjene s popisa praćenja",
        "tog-watchlisthideliu": "Sakrij uređivanja prijavljenih s popisa praćenja",
        "tog-watchlistreloadautomatically": "Ponovo učitaj popis praćenja kad god dođe do promjene filtra (potreban JavaScript)",
-       "tog-watchlistunwatchlinks": "Dodaj poveznice za izravno dodavanje/uklanjanje stranica s popisa praćenja (za funkcionalnost mogućnosti potreban je JavaScript)",
+       "tog-watchlistunwatchlinks": "Dodaj oznake za praćenje/prekid praćenja ({{int:Watchlist-unwatch}}/{{int:Watchlist-unwatch-undo}}) praćenim stranicama koje su promijenjene (za funkcionalnost mogućnosti potreban je JavaScript)",
        "tog-watchlisthideanons": "Sakrij uređivanja neprijavljenih s popisa praćenja",
        "tog-watchlisthidepatrolled": "Sakrij pregledane izmjene u popisu praćenja",
        "tog-watchlisthidecategorization": "Sakrij kategorizaciju stranica",
        "returnto": "Vrati se na $1.",
        "tagline": "Izvor: {{SITENAME}}",
        "help": "Pomoć",
+       "help-mediawiki": "Pomoć o MediaWikiju",
        "search": "Traži",
        "searchbutton": "Traži",
        "go": "Kreni",
        "wrongpasswordempty": "Niste unijeli zaporku. Pokušajte ponovno.",
        "passwordtooshort": "Zaporka mora sadržavati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}.",
        "passwordtoolong": "Zaporke ne mogu biti duže od {{PLURAL:$1|jednoga znaka|$1 znaka|$1 znakova}}.",
-       "passwordtoopopular": "Uobičajeno upotrebljavane zaporke ne može se koristiti. Molimo Vas da izaberete što jedinstveniju zaporku.",
+       "passwordtoopopular": "Uobičajeno upotrebljavane zaporke ne mogu se koristiti. Molimo Vas izaberite što jedinstveniju zaporku.",
+       "passwordinlargeblacklist": "Unešena zaporka je na popisu uobičajeno upotrebljavanih. Molimo Vas izaberite što jedinstveniju zaporku.",
        "password-name-match": "Vaša zaporka mora biti različita od Vašeg suradničkog imena.",
        "password-login-forbidden": "Uporaba ovog suradničkog imena i lozinke nije dozvoljena.",
        "mailmypassword": "Pošalji mi novu zaporku",
        "passwordremindertitle": "{{SITENAME}}: nova zaporka.",
-       "passwordremindertext": "Netko je (vjerojatno Vi, s IP adrese $1) zatražio novu zaporku za projekt {{SITENAME}} ($4).\nPrivremena zaporka za suradnika \"$2\" je postavljena na \"$3\".\nUkoliko ste to Vi učinili, molimo Vas da se prijavite i promijenite zaporku.\nPrivremena zaporka vrijedi još {{PLURAL:$5|$5 dan|$5 dana}}.\n\nUkoliko niste zatražili novu zaporku, ili ste se sjetili stare zaporke i\nviše ju ne želite promijeniti, slobodno zanemarite ovu poruku i nastavite\nkoristiti staru zaporku.",
+       "passwordremindertext": "Netko je (s IP adrese $1) zatražio novu zaporku za projekt {{SITENAME}} ($4).\nPrivremena zaporka za suradnika \"$2\" je postavljena na \"$3\".\nUkoliko ste to Vi učinili, molimo Vas da se prijavite i promijenite zaporku.\nPrivremena zaporka vrijedi još {{PLURAL:$5|$5 dan|$5 dana}}.\n\nUkoliko niste zatražili novu zaporku, ili ste se sjetili stare zaporke i\nviše ju ne želite promijeniti, slobodno zanemarite ovu poruku i nastavite\nkoristiti staru zaporku.",
        "noemail": "Suradnik \"$1\" nema zapisanu e-mail adresu.",
        "noemailcreate": "Morate navesti važeću e-mail adresu",
        "passwordsent": "Nova je zaporka poslana na adresu elektroničke pošte suradnika \"$1\"",
        "user-mail-no-body": "Pokušali ste poslati e-mail bez sadržaja ili s prekratkim sadržajem.",
        "changepassword": "Promjena zaporke",
        "resetpass_announce": "Da biste završili proces mijenjanja zaporke, upišite \nnovu zaporku.",
+       "resetpass_text": "<!-- Ovdje dodajte tekst -->",
        "resetpass_header": "Promijeni zaporku računa",
        "oldpassword": "Stara zaporka",
        "newpassword": "Nova zaporka",
        "botpasswords-update-failed": "Nije moguće ažurirati bot s imenom \"$1\". Možda je izbrisan?",
        "botpasswords-created-title": "Stvorena bot zaporka",
        "botpasswords-updated-title": "Zaporka za Vašeg bota obnovljena je",
-       "botpasswords-updated-body": "Zaporka za bota imena »$1« suradnika »$2« obnovljena je.",
+       "botpasswords-updated-body": "Zaporka za bota imena »$1« {{GENDER:$2|suradnika|suradnice}} »$2« obnovljena je.",
        "botpasswords-deleted-title": "Zaporka je za Vašeg bota uklonjena",
+       "botpasswords-deleted-body": "Zaporka za bota imena »$1« {{GENDER:$2|suradnika|suradnice}} »$2« izbrisana je.",
        "resetpass_forbidden": "Zaporka ne može biti promijenjena",
        "resetpass_forbidden-reason": "Zaporka ne može biti promijenjena: $1",
        "resetpass-no-info": "Morate biti prijavljeni da biste izravno pristupili ovoj stranici.",
        "resetpass-abort-generic": "Poništena je promjena zaporke.",
        "resetpass-expired": "Istekla Vam je valjanost zaporke. Molimo Vas, potvrdite novu zaporku za prijavu.",
        "resetpass-expired-soft": "Istekla vam je valjanost zaporke i trebate ju promijeniti. Molimo odaberite novu zaporku ili pritisnite na \"{{int:authprovider-resetpass-skip-label}}\", za kasniju promjenu.",
+       "resetpass-validity": "Vaša je zaporka nevaljala: $1\n\nMolimo postavite novu zaporku za prijavu.",
        "resetpass-validity-soft": "Zaporka Vam ne vrijedi: $1\n\nMolimo odaberite novu zaporku ili pritisnite na \"{{int:authprovider-resetpass-skip-label}}\", za kasniju promjenu.",
        "passwordreset": "Ponovo postavi zaporku",
        "passwordreset-text-one": "Ispunite ovaj obrazac ako želite ponovno postaviti Vašu zaporku.",
        "subject-preview": "Pregled teme:",
        "previewerrortext": "Pri pokušaju prikazivanja pretpregleda vaših promjena došlo je do pogrješke.",
        "blockedtitle": "Suradnik je blokiran",
-       "blockedtext": "<strong>Vaše je suradničko ime blokirano ili je Vaša IP adresa blokirana.</strong>\n\nBlokirao Vas je $1.\nRazlog blokiranja je sljedeći: <em>$2</em>.\n\n* Početak blokade: $8\n* Blokada istječe: $6\n* Blokirani suradnik: $7\n\nMožete kontaktirati $1 ili jednog od [[{{MediaWiki:Grouppage-sysop}}|administratora]] kako bi Vam pojasnili razlog blokiranja.\n\nPrimijetite da ne možete koristiti opciju \"Pošalji e-poruku suradnici – suradniku\" ako niste upisali valjanu adresu e-pošte u Vašim [[Special:Preferences|suradničkim postavkama]] i ako niste u tome onemogućeni prilikom blokiranja.\n\nVaša trenutačna IP adresa je $3, a oznaka bloka #$5. Molimo uvrstite sve gore navedene detalje u svaki upit koji napišete.",
-       "autoblockedtext": "Vaša IP adresa automatski je blokirana zbog toga što ju je koristio drugi suradnik, kojeg je blokirao $1.\nRazlog blokiranja je sljedeći:\n\n:<em>$2</em>\n\n* Početak blokade: $8\n* Blokada istječe: $6\n* Blokirani suradnik: $7\n\nMožete kontaktirati $1 ili jednog od [[{{MediaWiki:Grouppage-sysop}}|administratora]] kako bi Vam pojasnili razlog blokiranja.\n\nPrimijetite da ne možete rabiti opciju \"Pošalji e-poruku suradnici – suradniku\" ako niste upisali valjanu adresu e-pošte u Vašim [[Special:Preferences|suradničkim postavkama]] i ako niste u tome onemogućeni prilikom blokiranja.\n\nVaša trenutačna IP adresa je $3, a oznaka bloka #$5. Molimo uvrstite sve gore navedene detalje u svaki upit koji napišete.",
+       "blockedtext": "<strong>Vaše je suradničko ime blokirano ili je Vaša IP adresa blokirana.</strong>\n\nBlokirao Vas je $1.\nRazlog blokiranja je sljedeći: <em>$2</em>.\n\n* Početak blokade: $8\n* Blokada istječe: $6\n* Blokirani suradnik: $7\n\nMožete kontaktirati $1 ili jednog od [[{{MediaWiki:Grouppage-sysop}}|administratora]] kako bi Vam pojasnili razlog blokiranja.\n\nPrimijetite da ne možete koristiti mogućnost \"{{int:emailuser}}\" ako niste upisali valjanu adresu e-pošte u Vašim [[Special:Preferences|suradničkim postavkama]] i ako niste u tome onemogućeni prilikom blokiranja.\n\nVaša trenutačna IP adresa je $3, a oznaka bloka #$5. Molimo uvrstite sve gore navedene detalje u svaki upit koji napišete.",
+       "autoblockedtext": "Vaša IP adresa automatski je blokirana zbog toga što ju je koristio drugi suradnik, kojeg je blokirao $1.\nRazlog blokiranja je sljedeći:\n\n:<em>$2</em>\n\n* Početak blokade: $8\n* Blokada istječe: $6\n* Blokirani suradnik: $7\n\nMožete kontaktirati $1 ili jednog od [[{{MediaWiki:Grouppage-sysop}}|administratora]] kako bi Vam pojasnili razlog blokiranja.\n\nPrimijetite da ne možete rabiti mogućnost \"{{int:emailuser}}\" ako niste upisali valjanu adresu e-pošte u Vašim [[Special:Preferences|suradničkim postavkama]] i ako niste u tome onemogućeni prilikom blokiranja.\n\nVaša trenutačna IP adresa je $3, a oznaka bloka #$5. Molimo uvrstite sve gore navedene detalje u svaki upit koji napišete.",
        "systemblockedtext": "MediaWiki je automatski blokirao Vaše suradničko ime ili IP-adresu.\nDano je sljedeće obrazloženje:\n\n:<em>$2</em>\n\n* Početak blokade: $8\n* Istek blokade: $6\n* Blokada je namijenjena za: $7\n\nVaša trenutačna IP-adresa je $3.\nAko imate pitanja u svezi s blokadom, priložite sve pojedinosti koje su prethodno navedene.",
+       "actionblockedtext": "Izvršenje ove radnje Vam je blokirano.",
        "blockednoreason": "bez obrazloženja",
        "whitelistedittext": "Za uređivanje stranice molimo $1.",
        "confirmedittext": "Morate potvrditi Vašu adresu e-pošte prije nego što Vam bude omogućeno uređivanje. Molim unesite i ovjerite Vašu adresu e-pošte u [[Special:Preferences|suradničkim postavkama]].",
        "accmailtext": "Nova zaporka za [[User talk:$1|$1]] je poslana na $2.\n\nNakon prijave, zaporka za ovaj novi račun može biti promijenjena na stranici ''[[Special:ChangePassword|promijeni zaporku]]'' nakon prijave.",
        "newarticle": "(Novo)",
        "newarticletext": "Došli ste na stranicu koja još ne postoji.\nAko želite stvoriti tu stranicu, počnite tipkati u prozor ispod ovog teksta (pogledajte [$1 stranicu za pomoć]).\nAko ste ovamo dospjeli slučajno, kliknite gumb '''natrag''' (back) u svom pregledniku.",
-       "anontalkpagetext": "----\n<em>Ovo je stranica za razgovor s neprijavljenim suradnikom koji još nije otvorio suradnički račun ili se njime ne koristi.</em>\nZbog toga se moramo služiti brojčanom IP adresom kako bismo ga identificirali. \nTakvu adresu često može dijeliti više ljudi. \nAko ste neprijavljeni suradnik i smatrate da su Vam upućeni irelevantni komentari, molimo Vas da [[Special:CreateAccount|otvorite suradnički račun]] ili [[Special:UserLogin|se prijavite]] te tako u budućnosti izbjegnete zamjenu s drugim neprijavljenim suradnicima.",
+       "anontalkpagetext": "----\n<em>Ovo je stranica za razgovor s neprijavljenim suradnikom koji još nije otvorio suradnički račun ili se njime ne koristi.</em>\nZbog toga se moramo služiti brojčanom IP adresom kako bismo ih identificirali. \nTakvu adresu često može dijeliti više ljudi. \nAko ste neprijavljeni suradnik i smatrate da su Vam upućeni irelevantni komentari, molimo Vas da [[Special:CreateAccount|otvorite suradnički račun]] ili [[Special:UserLogin|se prijavite]] te tako u budućnosti izbjegnete zamjenu s drugim neprijavljenim suradnicima.",
        "noarticletext": "Na ovoj stranici trenutačno nema sadržaja.\nMožete [[Special:Search/{{PAGENAME}}|potražiti ovaj naslov]] na drugim stranicama,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane evidencije]\nili [{{fullurl:{{FULLPAGENAME}}|action=edit}} stvoriti ovu stranicu]</span>.",
        "noarticletext-nopermission": "Ova stranica nema sadržaja.\nMožete [[Special:Search/{{PAGENAME}}|tražiti naslov ove stranice]] na drugim stranicama ili <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane evidencije]</span>, ali ne možete stvoriti ovu stranicu.",
        "missing-revision": "Uređivanje broj $1 na stranici \"{{FULLPAGENAME}}\" ne postoji.\n\nOvo je obično uzrokovano kada kliknete na zastarjelu poveznicu na stranice koja je obrisana.\nViše informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].",
        "userpage-userdoesnotexist": "Suradničko ime \"<nowiki>$1</nowiki>\" nije prijavljeno. Jeste li sigurni da želite stvoriti/uređivati ovu stranicu?",
        "userpage-userdoesnotexist-view": "Suradnički račun \"$1\" nije registriran.",
        "blocked-notice-logextract": "Ovaj suradnik je trenutačno blokiran.\nPosljednja stavka evidencije blokiranja navedena je niže kao napomena:",
-       "clearyourcache": "'''Napomena:''' Nakon snimanja ćete možda trebati očistiti međuspremnik svog preglednika kako biste vidjeli promjene.\n* '''Firefox / Safari:''' držite ''Shift'' i pritisnite ''Reload'', ili pritisnite bilo ''Ctrl-F5'' ili ''Ctrl-R'' (''Command-R'' na Macu)\n* '''Google Chrome:''' pritisnite ''Ctrl-Shift-R'' (''Command-Shift-R'' na Macu)\n* '''Internet Explorer:''' držite ''Ctrl'' i kliknite ''Refresh'', ili pritisnite ''Ctrl-F5''\n* '''Opera:''' očistite međuspremnik u ''Tools → Preferences''",
+       "clearyourcache": "<strong>Napomena:</strong> Nakon snimanja ćete možda trebati očistiti međuspremnik svog preglednika kako biste vidjeli promjene.\n* <strong>Firefox / Safari:</strong> držite <em>Shift</em>em i pritisnite <em>Reload</em>, ili pritisnite bilo <em>Ctrl-F5</em> ili <em>Ctrl-R</em> (<em>⌘-R</em> na Macu)\n* <strong>Google Chrome:</strong> pritisnite <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> na Macu)\n* <strong>Internet Explorer:</strong> držite <em>Ctrl</em> i kliknite <em>Refresh</em>, ili pritisnite <em>Ctrl-F5</em>\n* <strong>Opera:</strong> idite na <em>Menu → Settings</em> (<em>Opera → Preferences</em> na Macu) te na <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
        "usercssyoucanpreview": "'''Savjet:''' Rabite puce \"{{int:showpreview}}\" za testiranje svog CSS-a prije snimanja.",
        "userjsyoucanpreview": "'''Savjet:''' Rabite puce \"{{int:showpreview}}\" za testiranje svog novog JavaScripta prije snimanja.",
        "usercsspreview": "'''Ne zaboravite: samo isprobavate/pregledavate svoj suradnički CSS. Još nije snimljen!'''",
        "previewnote": "<strong>Ne zaboravite da je ovo samo pregled kako će stranica izgledati.</strong>\nVaše uređivanje još nije snimljeno!",
        "continue-editing": "Nastavi uređivati",
        "previewconflict": "Ovaj pregled odražava stanje u gornjem polju za unos koje će biti sačuvano\nako pritisnete \"Sačuvaj stranicu\".",
-       "session_fail_preview": "'''Ispričavamo se! Nismo mogli obraditi Vašu izmjenu zbog gubitka podataka o prijavi.\nMolimo pokušajte ponovno. Ako i dalje ne bude uspijevalo, pokušajte se [[Special:UserLogout|odjaviti]] i ponovno prijaviti.'''",
-       "session_fail_preview_html": "'''Oprostite! Pretpregled nije moguć jer je ''session'' istekao.'''\n\n''Budući da je na ovom wikiju ({{SITENAME}}) omogućen unos HTML oznaka (tagova), pretpregled je skriven kao mjera predostrožnosti protiv napada pomoću JavaScripta.''\n\n'''Ako ste pokušali vidjeti kako stranica izgleda, molimo probajte opet. Ako ne uspije, [[Special:UserLogout|odjavite se]] i prijavite se ponovo.'''",
+       "session_fail_preview": "Ispričavamo se! Nismo mogli obraditi Vašu izmjenu zbog gubitka podataka o prijavi.\n\nMoguće je da ste odjavljeni. <strong>Molimo provjerite jeste li još uvijek prijavljeni i pokušajte ponovno</strong>.\nAko ovo ne radi, probajte se [[Special:UserLogout|odjaviti]] i opet prijaviti te provjeriti dopušta li preglednik kolačiće za ovo mrežno mjesto.",
+       "session_fail_preview_html": "Ispričavamo se! Nismo mogli obraditi Vašu izmjenu zbog gubitka podataka o prijavi.\n\n<em>Budući da je na ovom wikiju ({{SITENAME}}) omogućen unos HTML oznaka (tagova), pretpregled je skriven kao mjera predostrožnosti protiv napada pomoću JavaScripta.</em>\n\n<strong>Ako je ovo opravdan pokušaj uređivanja, molimo pokušajte opet</strong>\nAko ovo ne radi, probajte se [[Special:UserLogout|odjaviti]] i opet prijaviti te provjeriti dopušta li preglednik kolačiće za ovo mrežno mjesto.",
        "token_suffix_mismatch": "'''Vaše uređivanje je odbačeno jer je Vaš web preglednik ubacio znak/znakove interpunkcije u token uređivanja.'''\nStoga je uređivanje odbačeno da se spriječi uništavanje teksta stranice.\nTo se ponekad događa kad rabite neispravan web-baziran anonimni posrednik (proxy).",
        "edit_form_incomplete": "'''Neki dijelovi obrasca za uređivanja nisu dostigli do poslužitelja; provjerite jesu li izmjene netaknute i pokušajte ponovno.'''",
        "editing": "Uređujete $1",
        "editingsection": "Uređujete $1 (odlomak)",
        "editingcomment": "Uređujete $1 (novi odlomak)",
        "editconflict": "Istovremeno uređivanje: $1",
-       "explainconflict": "Netko je u međuvremenu promijenio stranicu.\nGornje polje sadrži sadašnji tekst stranice.\nU donjem polju prikazane su Vaše promjene.\nMorat ćete unijeti Vaše promjene u sadašnji tekst.\n'''Samo''' će tekst u gornjem polju biti sačuvan kad pritisnete \"$1\".",
+       "explainconflict": "Someone else has changed this page since you started editing it.\nThe upper text area contains the page text as it currently exists.\nYour changes are shown in the lower text area.\nYou will have to merge your changes into the existing text.\n<strong>Only</strong> the text in the upper text area will be saved when you press \"$1\".\n\nNetko je promijenio ovu stranicu od kada ste je Vi počeli uređivati. Gornje polje sadrži sadašnji tekst stranice.\nU donjem polju prikazane su Vaše promjene.\nMorat ćete unijeti Vaše promjene u sadašnji tekst.\n<strong>'''Samo</strong>''' će tekst u gornjem polju biti sačuvan kad pritisnete \"$1\".",
        "yourtext": "Vaš tekst",
        "storedversion": "Pohranjena inačica",
        "editingold": "'''UPOZORENJE: Uređujete stariju inačicu\nove stranice. Ako je sačuvate, sve će promjene učinjene nakon ove inačice biti izgubljene.'''",
        "permissionserrorstext-withaction": "Nemate dopuštenje za $2, iz {{PLURAL:$1|navedenog|navedenih}} razloga:",
        "recreate-moveddeleted-warn": "<strong>Upozorenje: ponovo stvarate stranicu koja je prethodno bila izbrisana.</strong>\n\nRazmotrite je li prikladno nastaviti s uređivanjem ove stranice.\nZa Vašu informaciju slijedi evidencija brisanja i premještanja ove stranice:",
        "moveddeleted-notice": "Ova je stranica izbrisana.\nEvidencije brisanja, zaštićivanja i premještanja za ovu stranicu prikazane su niže za uputu.",
-       "moveddeleted-notice-recent": "Žao nam je, ova stranica je izbrisana u prošla 24 sata. \nNiže je navedena evidencija brisanja i premještanja.",
+       "moveddeleted-notice-recent": "Žao nam je, ova stranica je izbrisana u prošla 24 sata. \nNiže je navedena evidencija brisanja, zaštićivanja i premještanja.",
        "log-fulllog": "Prikaži cijelu evidenciju",
        "edit-hook-aborted": "Uređivanje prekinuto kukom.\nRazlog nije ponuđen.",
        "edit-gone-missing": "Stranica nije spremljena.\nČini se kako je obrisana.",
        "postedit-confirmation-created": "Stranica je stvorena.",
        "postedit-confirmation-restored": "Stranica je vraćena.",
        "postedit-confirmation-saved": "Vaše je uređivanje sačuvano.",
+       "postedit-confirmation-published": "Vaše je uređivanje objavljeno.",
        "edit-already-exists": "Neuspješno stvaranje nove stranice.\nStranica već postoji.",
        "defaultmessagetext": "Prvotni tekst poruke",
        "content-failed-to-parse": "Obrada (''parsiranje'') formata $2 za model $1 nije uspjela: $3",
        "editpage-invalidcontentmodel-text": "Model sadržaja »$1« nije podržan.",
        "editpage-notsupportedcontentformat-title": "Format sadržaja nije podržan",
        "editpage-notsupportedcontentformat-text": "Format sadržaja $1 nije podržan modelom sadržaja $2.",
+       "slot-name-main": "Glavni",
        "content-model-wikitext": "wikitekst",
        "content-model-text": "obični tekst",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "content-model-json": "JSON",
        "content-json-empty-object": "Prazan objekt",
        "content-json-empty-array": "Prazno polje",
        "deprecated-self-close-category": "Stranice s krivo zatvorenim HTML oznakama‎",
        "rev-showdeleted": "prikaži",
        "revisiondelete": "Izbriši/vrati izmjene",
        "revdelete-nooldid-title": "Nema tražene izmjene",
-       "revdelete-nooldid-text": "Niste naveli željenu izmjenu (izmjene), željena izmjena ne postoji, ili  pokušavate sakriti trenutačnu izmjenu.",
+       "revdelete-nooldid-text": "Niste naveli željenu izmjenu (izmjene), željena izmjena ne postoji, ili pokušavate sakriti trenutačnu izmjenu.",
        "revdelete-no-file": "Navedena datoteka ne postoji.",
        "revdelete-show-file-confirm": "Jeste li sigurni da želite pregledati izbrisanu inačicu datoteke \"<nowiki>$1</nowiki>\" od $2 u $3?",
        "revdelete-show-file-submit": "Da",
        "prefs-editwatchlist-clear": "očisti popis praćenja",
        "prefs-watchlist-days": "Broj dana koji će se prikazati na popisu praćenja:",
        "prefs-watchlist-days-max": "Najviše $1 {{PLURAL:$1|dan|dana}}",
-       "prefs-watchlist-edits": "Broj uređivanja koji će se prikazati na proširenom popisu praćenja:",
+       "prefs-watchlist-edits": "Najveći broj uređivanja koji će se prikazati na popisu praćenja:",
        "prefs-watchlist-edits-max": "Maksimalni broj: 1000",
        "prefs-watchlist-token": "Tajni ključ popisa praćenja:",
        "prefs-watchlist-managetokens": "Upravljaj tajnim ključevima",
        "stub-threshold-disabled": "Onemogućeno",
        "recentchangesdays": "Broj dana prikazanih u nedavnim promjenama:",
        "recentchangesdays-max": "(maksimalno $1 {{PLURAL:$1|dan|dana}})",
-       "recentchangescount": "Zadani broj izmjena koje se prikazuju:",
-       "prefs-help-recentchangescount": "Ovo uključuje nedavne promjene, stare izmjene, i evidencije.",
-       "prefs-help-watchlist-token2": "Ovo je tajni ključ prema sažetku Vašeg popisa praćenja. Svaki suradnik kojem je poznat, moći će čitati Vaš popis praćenih stranica. Ne dijelite ga ni s kim. [[Special:ResetTokens|Kliknite ovdje ako ga želite ponovo postaviti]].",
+       "recentchangescount": "Zadani broj izmjena koje se prikazuju u nedavnim promjenama, povijesti stranica i u evidencijama:",
+       "prefs-help-recentchangescount": "Najveći broj: 1000",
+       "prefs-help-watchlist-token2": "Ovo je tajni ključ prema sažetku Vašeg popisa praćenja. \nSvaki suradnik kojem je poznat, moći će čitati Vaš popis praćenih stranica. Ne dijelite ga ni s kim.\nAko je potrebno možete ga [[Special:ResetTokens|ponovo postaviti]].",
        "savedprefs": "Vaše postavke su sačuvane.",
        "savedrights": "Suradnička su prava {{GENDER:$1|suradnika $1|suradnice $1}} spremljena.",
        "timezonelegend": "Vremenska zona:",
        "localtime": "Lokalno vrijeme:",
        "timezoneuseserverdefault": "Koristi postavke wikija ($1)",
-       "timezoneuseoffset": "Drugo (odredite razliku)",
+       "timezoneuseoffset": "Drugo (navedite razliku)",
        "servertime": "Vrijeme na poslužitelju:",
        "guesstimezone": "Vrijeme dobiveno od preglednika",
        "timezoneregion-africa": "Afrika",
        "timezoneregion-europe": "Europa",
        "timezoneregion-indian": "Indijski ocean",
        "timezoneregion-pacific": "Tihi ocean",
-       "allowemail": "Omogući primanje e-maila od drugih suradnika",
+       "allowemail": "Dopusti drugim suradnicima da mi šalju e-poštu",
        "email-allow-new-users-label": "Dopusti e-poruke od posve novopridošlih suradnika",
        "email-blacklist-label": "Zabrani sljedećim suradnicima da mi šalju e-poruke:",
        "prefs-searchoptions": "Način traženja",
        "prefs-files": "Datoteke",
        "prefs-custom-css": "Prilagođen CSS",
        "prefs-custom-js": "Prilagođen JS",
-       "prefs-common-config": "Dijeljeni CSS/JS za sve izglede:",
+       "prefs-common-config": "Dijeljeni CSS/JSON/JavaScript za sve izglede:",
        "prefs-reset-intro": "Možete koristiti ovu stranicu za povrat Vaših postavki na prvotne postavke. Ovo se ne može poništiti.",
        "prefs-emailconfirm-label": "Potvrda e-mail adrese:",
        "youremail": "Vaša adresa e-pošte:",
        "grant-createaccount": "Otvori račune",
        "grant-createeditmovepage": "Stvaranje, uređivanje i premještanje stranica",
        "grant-delete": "Brisanje stranica, izmjena i unosa u evidencijama",
-       "grant-editmyoptions": "Uređivanje vlastitih suradničkih postavki",
+       "grant-editmyoptions": "Uređivanje vlastitih suradničkih postavki i JSON konfiguracije",
        "grant-editmywatchlist": "Uređivanje Vašega popisa praćenih stranica",
        "grant-editpage": "Uređivanje postojećih stranica",
        "grant-editprotected": "Uređivanje zaštićenih stranica",
        "rcfilters-activefilters-show-tooltip": "Prikaži područja aktivnih filtara",
        "rcfilters-advancedfilters": "Napredni filtri",
        "rcfilters-limit-title": "Rezultata za prikaz",
-       "rcfilters-limit-and-date-label": "{{PLURAL:$1|$1 izmjena|$1 izmjene|$1 izmjena}}, $2",
+       "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|izmjena|izmjene|izmjena}}, $2",
        "rcfilters-date-popup-title": "Razdoblje za pretraživanje",
        "rcfilters-days-title": "Nedavnih dana",
        "rcfilters-hours-title": "Nedavnih sati",
        "rcfilters-savedqueries-rename": "Preimenuj",
        "rcfilters-savedqueries-setdefault": "Postavi kao predodređeno",
        "rcfilters-savedqueries-unsetdefault": "Ukloni kao zadano",
-       "rcfilters-savedqueries-remove": "Ukloni",
+       "rcfilters-savedqueries-remove": "Izbriši",
        "rcfilters-savedqueries-new-name-label": "Naziv",
        "rcfilters-savedqueries-new-name-placeholder": "Opišite svrhu filtra",
        "rcfilters-savedqueries-apply-label": "Stvori filtar",
        "rcfilters-restore-default-filters": "Vrati zadane filtre",
        "rcfilters-clear-all-filters": "Očisti sve filtre",
        "rcfilters-show-new-changes": "Vidi najnovije izmjene",
-       "rcfilters-search-placeholder": "Filtriraj nedavne promjene (pretražite ili počnite unositi)",
+       "rcfilters-search-placeholder": "Filtriraj promjene (rabite izbornik ili potražite ime filtra)",
        "rcfilters-invalid-filter": "Filter nije valjan",
        "rcfilters-empty-filter": "Nema aktivnih filtara. Prikazani su svi doprinosi.",
        "rcfilters-filterlist-title": "Filtri",
        "rcfilters-filterlist-whatsthis": "Kako ovo radi?",
-       "rcfilters-filterlist-feedbacklink": "Recite nam Vaše mišljenje o ovim (novim) oruđima za filtriranje",
+       "rcfilters-filterlist-feedbacklink": "Recite nam Vaše mišljenje o ovim oruđima za filtriranje",
        "rcfilters-highlightbutton-title": "Označi rezultate",
        "rcfilters-highlightmenu-title": "Odaberite boju",
        "rcfilters-highlightmenu-help": "Odaberite boju za označavanje ovog svojstva",
        "rcfilters-filterlist-noresults": "Nema rezultata za traženo filtriranje",
        "rcfilters-noresults-conflict": "Rezultati pretrage nisu pronađeni zbog sukoba kriterija pretrage",
-       "rcfilters-state-message-fullcoverage": "Označavanje svih filtera u grupi je isto kao da nije označen niti jedan, tako da filter nema učinka. Grupa uključuje: $1",
+       "rcfilters-state-message-fullcoverage": "Označavanje svih filtera u ovoj grupi je isto kao da nije označen niti jedan, tako da filter nema učinka. Grupa uključuje: $1",
        "rcfilters-filtergroup-authorship": "Doprinosi prema autorima",
        "rcfilters-filter-editsbyself-label": "Uređivanja koja ste Vi napravili",
        "rcfilters-filter-editsbyself-description": "Vaša uređivanja.",
        "rcfilters-filter-editsbyother-label": "Promjene drugih suradnika",
        "rcfilters-filter-editsbyother-description": "Sve promjene osim Vaših.",
-       "rcfilters-filtergroup-userExpLevel": "Napredna razina (samo za registrirane suradnike)",
+       "rcfilters-filtergroup-userExpLevel": "Suradnička registracija i iskustvo",
        "rcfilters-filter-user-experience-level-registered-label": "Registrirani",
        "rcfilters-filter-user-experience-level-registered-description": "Prijavljeni suradnici.",
        "rcfilters-filter-user-experience-level-unregistered-label": "Neregistrirani",
        "rcfilters-filter-user-experience-level-unregistered-description": "Suradnici koji nisu prijavljeni.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Novopridošli",
-       "rcfilters-filter-user-experience-level-newcomer-description": "Registrirani suradnici s manje od 10 uređivanja i 4 dana aktivnosti.",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Registrirani suradnici s manje od 10 uređivanja ili 4 dana aktivnosti.",
        "rcfilters-filter-user-experience-level-learner-label": "Početnici",
        "rcfilters-filter-user-experience-level-learner-description": "Registrirani suradnici čije je iskustvo između novih i iskusnih suradnika.",
        "rcfilters-filter-user-experience-level-experienced-label": "Iskusni suradnici",
        "rcfilters-watchlist-markseen-button": "Označi sve izmjene kao pregledane",
        "rcfilters-watchlist-edit-watchlist-button": "Izmijeni popis praćenih stranica",
        "rcfilters-watchlist-showupdated": "Izmjene na stranicama koje niste posjetili otkako su se izmjene dogodile istaknute su <strong>podebljanim slovima</strong>, s ispunjenim kružićima.",
-       "rcfilters-preference-label": "Skrij poboljšanu inačicu nedavnih promjena",
-       "rcfilters-preference-help": "Vraća natrag stanje prije redizajna sučelja 2017., te svih oruđa dodanih tada i poslije toga.",
-       "rcfilters-watchlist-preference-label": "Sakrij poboljšanu inačicu popisa praćenja",
-       "rcfilters-watchlist-preference-help": "Vraća natrag stanje prije redizajna sučelja 2017., te svih oruđa dodanih tada i poslije toga.",
+       "rcfilters-preference-label": "Rabi sučelje bez JavaScripta",
+       "rcfilters-preference-help": "Učitavanje nedavnih promjena bez pretrage s filtrima ili mogućnosti isticanja.",
+       "rcfilters-watchlist-preference-label": "Rabi sučelje bez JavaScripta",
+       "rcfilters-watchlist-preference-help": "Učitavanje popisa praćenja bez pretrage s filtrima ili mogućnosti isticanja.",
        "rcfilters-filter-showlinkedfrom-label": "Prikaži promjene na povezanim stranicama",
        "rcfilters-filter-showlinkedfrom-option-label": "<strong>Stranice na koje se povezuje</strong> izabrana stranica",
        "rcfilters-filter-showlinkedto-option-label": "<strong>Stranice koje povezuju</strong> na izabranu stranicu",
        "recentchangeslinked-feed": "Povezane stranice",
        "recentchangeslinked-toolbox": "Povezane promjene",
        "recentchangeslinked-title": "Povezane promjene sa stranicom »$1«",
-       "recentchangeslinked-summary": "Ova posebna stranica pokazuje nedavne promjene na povezanim stranicama (ili stranicama određene kategorije). Stranice koje su na [[Special:Watchlist|Vašem popisu praćenja]] su '''podebljane'''.",
+       "recentchangeslinked-summary": "Unesite ime stranice da biste vidjeli promjene na stranicama povezanim s ovom ili s nje. (Da biste vidjeli članove kategorije, unesite {{ns:category}}:ime kategorije). Izmjene na stranicama na [[Special:Watchlist|Vašem popisu praćenja]] su <strong>podebljane</strong>.",
        "recentchangeslinked-page": "Naslov stranice:",
        "recentchangeslinked-to": "Pokaži promjene na stranicama s poveznicom na ovu stranicu",
        "recentchanges-page-added-to-category": "[[:$1]] dodano u kategoriju",
        "largefileserver": "Veličina ove datoteke veća je od one dopuštene postavkama poslužitelja.",
        "emptyfile": "Datoteka koju ste postavili je prazna. Možda se radi o krivo utipkanom imenu datoteke. Provjerite želite li zaista postaviti ovu datoteku.",
        "windows-nonascii-filename": "Ovaj wiki ne podržava imena datoteka s posebnim znakovima.",
-       "fileexists": "Datoteka s ovim imenom već postoji, pogledajte <strong>[[:$1]]</strong> ako niste sigurni želite li je uistinu promijeniti.\n[[$1|thumb]]",
+       "fileexists": "Datoteka s ovim imenom već postoji, molimo provjerite <strong>[[:$1]]</strong> ako niste sigurni želite li je uistinu promijeniti.\n[[$1|thumb]]",
        "filepageexists": "Opis stranice za ovu datoteku je već napravljen ovdje <strong>[[:$1]]</strong>, ali datoteka sa ovim nazivom trenutno ne postoji.\nSažetak koji ste naveli neće se pojaviti na stranici opisa.\nDa bi se Vaš opis ovdje našao, potrebno je da ga ručno uredite.\n[[$1|thumb]]",
        "fileexists-extension": "Već postoji datoteka sa sličnim imenom: [[$2|thumb]]\n* Ime datoteke koju postavljate: <strong>[[:$1]]</strong>\n* Ime postojeće datoteke: <strong>[[:$2]]</strong>\nŽelite li možda izabrati više različito ime?",
        "fileexists-thumbnail-yes": "Datoteka je najvjerojatnije slika u smanjenoj veličini ''(thumbnail)''. [[$1|thumb]]\nMolimo provjerite datoteku <strong>[[:$1]]</strong>.\nUkoliko je ta datoteka ista kao i ova koju ste upravo pokušali snimiti, samo u višoj rezoluciji, nije nužno snimanje smanjenje slike ''(thumbnaila)'', prikazivanje smanjene slike iz izvornika radi se softverski.",
        "backend-fail-read": "Datoteka \"$1\" je nečitljiva.",
        "backend-fail-create": "Ne mogu stvoriti ili pisati u datoteku $1.",
        "backend-fail-maxsize": "Ne mogu zapisati datoteku \"$1\" jer je veća od {{PLURAL:$2|$2 bajta|$2 bajta|$2 bajtova}}.",
-       "backend-fail-readonly": "Baza ili datotečni sustav \"$1\" trenutačno nije dostupan za pisanje. Razlog je: \"''$2''\"",
+       "backend-fail-readonly": "Baza ili datotečni sustav \"$1\" trenutačno nije dostupan za pisanje. Razlog je: <em>$2</em>",
        "backend-fail-synced": "Datoteka \"$1\" nije identična inačici u internom skladištu",
        "backend-fail-connect": "Ne mogu se spojiti na spremište poslužitelja \"$1“.",
        "backend-fail-internal": "Došlo je do nepoznate pogrješke u spremištu poslužitelja \"$1\".",
        "lockmanager-fail-closelock": "Ne mogu zatvoriti ''lock'' datoteku za \"$1\".",
        "lockmanager-fail-deletelock": "Ne mogu obrisati ''lock'' datoteku  za \"$1\".",
        "lockmanager-fail-acquirelock": "Ne mogu stvoriti ''lock'' datoteku za \"$1\".",
-       "lockmanager-fail-openlock": "Ne mogu otvoriti ''lock'' datoteku  za \"$1\".",
+       "lockmanager-fail-openlock": "Ne mogu otvoriti zaključanu datoteku za \"$1\". Provjerite je li popis datoteka (direktorij) ispravno konfiguriran te ima li mrežni poslužitelj dopuštenje za pisanje u popis. Za više informacija vidjeti https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgUploadDirectory.",
        "lockmanager-fail-releaselock": "Ne mogu obrisati ''lock'' datoteku  za \"$1\".",
        "lockmanager-fail-db-bucket": "Ne mogu uspostaviti vezu s poslužiteljem zaključavanja za $1",
        "lockmanager-fail-db-release": "Ne mogu otključati bazu podataka $1.",
        "uploadstash-summary": "Ova stranica pruža pristup datotekama koje su snimljene na wiki (ili u procesu snimanja), ali još nisu objavljeni na wiki. Ove datoteke nisu vidljive nikome, osim suradniku koji ih je snimio.",
        "uploadstash-clear": "Očisti niz datoteka",
        "uploadstash-nofiles": "Nemate neobjavljenih datoteka",
-       "uploadstash-badtoken": "Obavljanje akcije je bilo neuspješano, možda jer je vaša prijava istekla. Pokušajte ponovno.",
-       "uploadstash-errclear": "Brisanje neobjavljenih datoteka nije uspjelo.",
+       "uploadstash-badtoken": "Obavljanje radnje nije bilo uspješno, moguće da su Vam istekla prava uređivanja. Pokušajte ponovno.",
+       "uploadstash-errclear": "Brisanje datoteka nije uspjelo.",
        "uploadstash-refresh": "Osvježi popis datoteka",
        "uploadstash-thumbnail": "pogledaj kao minijaturu",
        "uploadstash-exception": "Postavljanje u zalihu nije bilo moguće ($1): »$2«.",
        "uploadstash-zero-length": "Veličina datoteke je nula bajtova.",
        "invalid-chunk-offset": "Nevaljana točka nastavka snimanja",
        "img-auth-accessdenied": "Pristup onemogućen",
-       "img-auth-nopathinfo": "Nedostaje PATH_INFO.\nVaš poslužitelj nije postavljen da prosljeđuje ovu informaciju.\nMožda se temelji na CGI skripti i ne može podržavati img_auth.\n[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization?uselang=hr Pogledajte stranicu o autorizaciji slika]",
+       "img-auth-nopathinfo": "Nedostaje informacija o putanji.\nVaš poslužitelj mora biti postavljen tako da prosljeđuje varijable REQUEST_URI i/ili PATH_INFO.\nAko je tako, probajte omogućiti $wgUsePathInfo.\n[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization?uselang=hr Pogledajte stranicu o autorizaciji slika]",
        "img-auth-notindir": "Zahtjevana putanja nije u direktoriju podešenom za postavljanje.",
        "img-auth-badtitle": "Ne mogu stvoriti valjani naslov iz \"$1\".",
        "img-auth-nologinnWL": "Niste prijavljeni i \"$1\" nije na popisu dozvoljenih.",
        "filehist-filesize": "Veličina datoteke",
        "filehist-comment": "Komentar",
        "imagelinks": "Uporaba datoteke",
-       "linkstoimage": "{{PLURAL:$1|Sljedeća stranica povezuje|$1 sljedeće stranice povezuju|$1 sljedećih stranica povezuje}} na ovu datoteku:",
-       "linkstoimage-more": "Više od $1 {{PLURAL:$1|stranice povezuje|stranica povezuje}} na ovu datoteku.\nSljedeći popis prikazuje {{PLURAL:$1|stranice koje|prvih $1 stranica koje}} vode na ovu datoteku.\n[[Special:WhatLinksHere/$2|Ovdje se nalazi]] potpuni popis.",
-       "nolinkstoimage": "Nijedna stranica ne povezuje na ovu sliku.",
+       "linkstoimage": "{{PLURAL:$1|Sljedeća stranica rabi|$1 sljedeće stranice rabe|$1 sljedećih stranica rabi}} ovu datoteku:",
+       "linkstoimage-more": "Više od $1 {{PLURAL:$1|stranice rabi|stranica rabi}} na ovu datoteku.\nSljedeći popis prikazuje {{PLURAL:$1|stranice koje|prvih $1 stranica koje}} rabe ovu datoteku.\n[[Special:WhatLinksHere/$2|Ovdje se nalazi]] potpuni popis.",
+       "nolinkstoimage": "Nijedna stranica ne rabi ovu datoteku.",
        "morelinkstoimage": "Pogledaj [[Special:WhatLinksHere/$1|više poveznica]] za ovu datoteku.",
        "linkstoimage-redirect": "$1 (preusmjeravanje datoteke) $2",
        "duplicatesoffile": "{{PLURAL:$1|Sljedeća datoteka je kopija|$1 sljedeće datoteke su kopije|$1 sljedećih datoteka su kopije}} ove datoteke ([[Special:FileDuplicateSearch/$2|više detalja]]):",
        "filedelete-maintenance": "Brisanje i vraćanje datoteka privremeno je onemogućeno zbog održavanja.",
        "filedelete-maintenance-title": "Ne mogu obrisati datoteku",
        "mimesearch": "MIME tražilica",
-       "mimesearch-summary": "Ova stranica omogućuje pretraživanje datoteka prema njihovim MIME zaglavljima. Ulazni parametar: tip_datoteke/podtip, npr. <code>image/jpeg</code>.",
+       "mimesearch-summary": "Ova stranica omogućuje pretraživanje datoteka prema njihovim MIME zaglavljima. Ulazni parametar: tip_datoteke/podtip/*, npr. <code>image/jpeg</code>.",
        "mimetype": "MIME tip datoteke:",
        "download": "skidanje",
        "unwatchedpages": "Nepraćene stranice",
        "pageswithprop-submit": "Idi",
        "doubleredirects": "Dvostruka preusmjeravanja",
        "doubleredirectstext": "Ova stranica sadrži popis stranica koje preusmjeravju na druge stranice za preusmjeravanje.\nSvaki redak sadrži poveznice na prvo i drugo preusmjeravanje, kao i odredište drugog preusmjeravanja\nkoja obično ukazuje na \"pravu\" odredišnu stranicu, na koju bi trebalo pokazivati prvo preusmjeravanje.\n<del>Precrtane</del> stavke su riješene.",
-       "double-redirect-fixed-move": "[[$1]] je premješten, sada je preusmjeravanje na [[$2]]",
-       "double-redirect-fixed-maintenance": "Ispravljanje dvostrukih preusmjeravanja s [[$1]] na [[$2]].",
+       "double-redirect-fixed-move": "[[$1]] je premješten. Automatski je ažurirano i preusmjerava na [[$2]]",
+       "double-redirect-fixed-maintenance": "Automatsko ispravljanje dvostrukih preusmjeravanja s [[$1]] na [[$2]] kao dio održavanja.",
        "double-redirect-fixer": "Popravljač preusmjeravanja",
        "brokenredirects": "Kriva preusmjeravanja",
        "brokenredirectstext": "Sljedeća preusmjeravanja povezuju na nepostojeće stranice:",
        "prefixindex": "Sve stranice prema početku naslova",
        "prefixindex-namespace": "Sve stranice s predmetkom (imenski prostor $1)",
        "prefixindex-submit": "Prikaži",
-       "prefixindex-strip": "Ne prikazuj predmetak u popisu",
+       "prefixindex-strip": "Ne prikazuj predmetak u rezultatima",
        "shortpages": "Kratke stranice",
        "longpages": "Duge stranice",
        "deadendpages": "Stranice na koje ne vodi ijedna druga stranica",
        "cachedspecial-refresh-now": "Pogledaj najnoviju.",
        "categories": "Kategorije",
        "categories-submit": "Prikaži",
-       "categoriespagetext": "Sljedeće {{PLURAL:$1|kategorija sadrži|kategorije sadrže}} stranice ili datoteke.\n[[Special:UnusedCategories|Nekorištene kategorije]] ovdje nisu prikazane.\nTakođer pogledajte [[Special:WantedCategories|tražene kategorije]].",
+       "categoriespagetext": "{{PLURAL:$1|Sljedeća kategorija postoji|Sljedeće kategorije postoje}} na wikiju i možda {{PLURAL:$1|je/nije u uporabi|jesu/nisu u uporabi}}.\n\nTakođer pogledajte [[Special:WantedCategories|tražene kategorije]].",
        "categoriesfrom": "Prikaži kategorije počevši od:",
        "deletedcontributions": "Obrisani suradnički doprinosi",
        "deletedcontributions-title": "Obrisani suradnički doprinosi",
        "enotif_body_intro_restored": "Stranica $1 projekta {{SITENAME}} {{GENDER:$2|vratio|vratila}} je dana $PAGEEDITDATE {{GENDER:$2|suradnik|suradnica}} $2, vidi $3 za trenutačnu inačicu stranice.",
        "enotif_body_intro_changed": "Stranica $1 projekta {{SITENAME}} {{GENDER:$2|promijenio|promijenila}} je dana $PAGEEDITDATE {{GENDER:$2|suradnik|suradnica}} $2, vidi $3 za trenutačnu inačicu stranice.",
        "enotif_lastvisited": "Za sve izmjene od Vašega posljednjeg posjeta, pogledajte $1",
-       "enotif_lastdiff": "Pogledajte $1 kako biste mogli vidjeti tu izmjenu.",
+       "enotif_lastdiff": "Da biste vidjeli ovu izmjenu, pogledajte $1.",
        "enotif_anon_editor": "neprijavljeni suradnik $1",
        "enotif_body": "Poštovani $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nSažetak uređivača: $PAGESUMMARY $PAGEMINOREDIT\n\nMožete kontaktirati suradnika koji je posljednji uređivao stranicu:\nmail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nDo Vašega ponovnog posjeta stranici ne ćete dobivati nove obavijesti. Postavke za izvješćivanje možete vratiti na prvobitno zadane za sve praćene stranice Vašega popisa praćenja.\n\nVaš sustav izvješćivanja {{SITENAME}}.\n\n--\nZa promjene postavki izvješćivanja putem e-pošte, posjetite\n{{canonicalurl:{{#special:Preferences}}}}\n\nZa promjene svog popisa praćenja, posjetite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nZa brisanje stranica iz svog popisa praćenja, posjetite\n$UNWATCHURL\n\nZa povratne informacije i pomoć posjetite:\n$HELPPAGE",
        "enotif_minoredit": "Ovo je sitnije uređivanje",
        "delete-toobig": "Ova stranica ima veliku povijest uređivanja, preko $1 {{PLURAL:$1|promjene|promjena}}. Brisanje takvih stranica je ograničeno da se onemoguće slučajni problemi u radu {{SITENAME}}.",
        "delete-warning-toobig": "Ova stranica ima veliku povijest uređivanja, preko $1 {{PLURAL:$1|promjene|promjena}}. Brisanje može poremetiti bazu podataka {{SITENAME}}; postupajte s oprezom.",
        "deleteprotected": "Ne možete obrisati ovu stranicu jer je zaštićena.",
-       "deleting-backlinks-warning": "'''Upozorenje:''' brišete stranicu koja je uključena u druge ili druge stranice povezuju na nju.",
+       "deleting-backlinks-warning": "<strong>Upozorenje:</strong> \nbrišete stranicu koja je uključena u [[Special:WhatLinksHere/{{FULLPAGENAME}}|druge]] ili druge stranice povezuju na nju.",
        "rollback": "Ukloni posljednju promjenu",
        "rollbacklink": "ukloni",
        "rollbacklinkcount": "ukloni $1 {{PLURAL:$1|uređivanje|uređivanja}}",
        "rollback-success": "Uklonjeno uređivanje {{GENDER:$3|suradnika|suradnice}} $1; vraćeno na posljednju inačicu {{GENDER:$4|suradnika|suradnice}} $2.",
        "rollback-success-notify": "Uklonili ste izmjene suradnika $1;\nvraćeno na posljednju izmjenu suradnika $2. [$3 Prikaži izmjene]",
        "sessionfailure-title": "Prekid sesije",
-       "sessionfailure": "Izgleda da postoji problem s uspostavom sjednice kod Vašega prijavljivanja; ta radnja otkazana je kao način sprječavanja krađe sjednice. Molimo Vas da se u pregledniku vratite natrag na prethodnu stranicu, ponovo ju učitate i zatim pokušate opet.",
+       "sessionfailure": "Izgleda da postoji problem s Vašom prijavom; ta radnja otkazana je kao način sprječavanja zlouporabe. Molimo ponovno pošaljite obrazac.",
        "changecontentmodel": "Promjena modela sadržaja stranice",
        "changecontentmodel-legend": "Promijeni model sadržaja",
        "changecontentmodel-title-label": "Naziv stranice",
        "protect-locked-blocked": "Ne možete mijenjati nivo zaštite dok ste blokirani.\nSlijede postavke stranice '''$1''':",
        "protect-locked-dblock": "Razina zaštite ne može biti promijenjena jer je baza zaključana.\nSlijede postavke stranice '''$1''':",
        "protect-locked-access": "Nemate ovlasti za mijenjanje razine zaštite.\nSlijede trenutačne postavke stranice '''$1''':",
-       "protect-cascadeon": "Ova stranica je zaštićena jer je uključena u {{PLURAL:$1|stranicu, koja ima|stranice, koje imaju|stranice, koje imaju}} uključenu prenosivu zaštitu. Možete promijeniti stupanj zaštite ove stranice, no to neće utjecati na prenosivu zaštitu.",
+       "protect-cascadeon": "Ova je stranica zaštićena jer je uključena u {{PLURAL:$1|stranicu koja ima|stranice koje imaju}} uključenu prenosivu zaštitu. \nMožete promijeniti stupanj zaštite ove stranice, no to neće utjecati na prenosivu zaštitu.",
        "protect-default": "Omogućeno svim suradnicima",
        "protect-fallback": "Potrebno je imati \"$1\" ovlasti",
        "protect-level-autoconfirmed": "Dopušteno samo autopotvrđenim suradnicima",
        "undeletepagetext": "{{PLURAL:$1|Sljedeća stranica je obrisana, ali se još uvijek nalazi|Sljedećih $1 stranica su obrisane, ali se još uvijek nalaze}} u bazi i mogu se obnoviti.\nBaza se povremeno čisti od ovakvih stranica.",
        "undelete-fieldset-title": "Vrati izmjene",
        "undeleteextrahelp": "Da biste vratili cijelu povijest stranice, ostavite sve ''kućice'' neoznačene i kliknite '''''{{int:undeletebtn}}'''''.\nAko želite vratiti određene izmjene, označite ih i kliknite '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|inačica je arhivirana|inačice su arhivirane|inačica je arhivirano}}",
+       "undeleterevisions": "$1 {{PLURAL:$1|inačica je izbrisana|inačice su izbrisane|inačica je izbrisano}}",
        "undeletehistory": "Ako vratite izbrisanu stranicu, bit će vraćene i sve prijašnje promjene. Ako je u međuvremenu stvorena nova stranica s istim imenom, vraćena stranica bit će upisana kao prijašnja promjena sadašnje.",
        "undeleterevdel": "Vraćanje stranice neće biti izvršeno ako je rezultat toga djelomično brisanje posljednjeg uređivanja.\nU takvim slučajevima morate isključiti ili otkriti najnovije obrisane promjene.",
        "undeletehistorynoadmin": "Ovaj je članak izbrisan. Razlog za brisanje prikazan je u donjem sažetku, zajedno s\ndetaljima o suradnicima koji su uređivali ovu stranicu prije brisanja.\nTekst izbrisanih inačica dostupan je samo administratorima.",
        "undeleteviewlink": "pregled",
        "undeleteinvert": "Obrni odabir",
        "undeletecomment": "Razlog:",
-       "cannotundelete": "Vraćanje obrisane inačice nije uspjelo:\n$1",
+       "cannotundelete": "Sva ili neka vraćanja nisu uspjela:\n$1",
        "undeletedpage": "'''$1 je vraćena'''\n\nPogledajte [[Special:Log/delete|evidenciju brisanja]] za zapise nedavnih brisanja i vraćanja.",
        "undelete-header": "Pogledaj [[Special:Log/delete|evidenciju brisanja]] za nedavno obrisane stranice.",
        "undelete-search-title": "Pretraži obrisane stranice",
        "block": "Blokiraj suradnika",
        "unblock": "Deblokiraj suradnika",
        "blockip": "Blokiraj {{GENDER:$1|suradnika|suradnicu}}",
-       "blockiptext": "Koristite donji obrazac za blokiranje pisanja pojedinih suradnika ili IP adresa .\nTo biste trebali raditi samo zbog sprječavanja vandalizma i u skladu\nsa [[{{MediaWiki:Policy-url}}|smjernicama]].\nUpišite i razlog za ovo blokiranje (npr. stranice koje su\nvandalizirane).",
+       "blockiptext": "Koristite donji obrazac za blokiranje pisanja pojedinih suradnika ili IP adresa.\nTo biste trebali raditi samo zbog sprječavanja vandalizma i u skladu\nsa [[{{MediaWiki:Policy-url}}|smjernicama]].\nUpišite i razlog za ovo blokiranje (npr. stranice koje su\nvandalizirane).\nMožete blokirati i opseg IP adresa rabeći [https://hr.wikipedia.org/wiki/CIDR CIDR] sintaksu; najveći dopušteni opseg je /$1 za IPv4 i /$2 za IPv6.",
        "ipaddressorusername": "IP adresa ili suradničko ime",
        "ipbreason": "Razlog:",
        "ipbreason-dropdown": "*Najčešći razlozi za blokiranje\n** Netočne informacije\n** Uklanjanje sadržaja stranica\n** Postavljanje ''spam'' vanjskih poveznica\n** Grafiti\n** Osobni napadi (ili napadačko ponašanje)\n** Čarapare (zloporaba više suradničkih računa)\n** Neprihvatljivo suradničko ime",
        "ipb-hardblock": "Onemogući prijavljene suradnike uređivati s ove IP adrese",
-       "ipbcreateaccount": "Spriječi otvaranje suradničkih računa",
-       "ipbemailban": "Onemogući blokiranom suradniku slanje e-pošte",
+       "ipbcreateaccount": "Stvaranje računa",
+       "ipbemailban": "Slanje e-pošte",
        "ipbenableautoblock": "Automatski blokiraj IP adrese koje koristi ovaj suradnik",
        "ipbsubmit": "Blokiraj ovog suradnika",
        "ipbother": "Drugi rok:",
        "ipboptions": "2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 tjedan:1 week,2 tjedna:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,neograničeno:infinite",
        "ipbhidename": "Sakrij suradničko ime iz uređivanja i popisa",
        "ipbwatchuser": "Prati suradničku stranicu i stranicu za razgovor ovog suradnika",
-       "ipb-disableusertalk": "Onemogući ovog suradnika da uređuje svoju stranicu za razgovor dok je blokiran",
+       "ipb-disableusertalk": "Uređivanje vlastite stranice za razgovor",
        "ipb-change-block": "Ponovno blokiraj suradnika s ovim postavkama",
        "ipb-confirm": "Potvrdi blokiranje",
        "badipaddress": "Nevaljana IP adresa.",
        "lockedbyandtime": "(od $1 dana $2 u $3)",
        "move-page": "Premjesti $1",
        "move-page-legend": "Premjesti stranicu",
-       "movepagetext": "Uporabom ovog obrasca ćete preimenovati stranicu i premjestiti sve stare izmjene na novo ime.\nStari će se naslov pretvoriti u stranicu koja automatski preusmjerava na novi naslov.\nMožete odabrati automatsko ažuriranje preusmjeravanja na izvorni naslov.\nAko se ne odlučite na to, provjerite [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|neispravna preusmjeravanja]].\nDužni ste provjeriti da sve poveznice i dalje nastave voditi na prave stranice.\n\nStranica se '''ne će''' premjestiti ako već postoji stranica s novim naslovom, osim u slučaju prazne stranice ili stranice za preusmjeravanje koja nema nikakvih starih izmjena.\nTo znači: 1. ako pogriješite, možete opet preimenovati stranicu na stari naslov, 2. ne može se dogoditi da izbrišete neku postojeću stranicu.\n\n'''Upozorenje!'''\nOvo može biti drastična i neočekivana promjena kad su u pitanju popularne stranice. Molimo dobro razmislite prije nego što preimenujete stranicu.",
+       "movepagetext": "Uporabom ovog obrasca ćete preimenovati stranicu i premjestiti povijest uređivanja na novo ime.\nStari će naslov preusmjeravati na stranicu s novim imenom.\nMožete odabrati automatsko ažuriranje preusmjeravanja na izvorni naslov.\nAko se ne odlučite na to, provjerite [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|neispravna preusmjeravanja]].\nDužni ste provjeriti da sve poveznice i dalje nastave voditi na prave stranice.\n\nStranica se <strong>ne će</strong> premjestiti ako već postoji stranica s novim naslovom, osim u slučaju prazne stranice ili stranice za preusmjeravanje koja nema nikakvih starih izmjena.\nTo znači da možete preimenovati stranicu natrag odakle je preimenovana ako napravite grešku, ali ne možete prepisati preko postojeće stranice.\n\n<strong>Napomena:</strong>\novo može biti drastična i neočekivana promjena kad su u pitanju popularne stranice. Molimo dobro razmislite prije nego što preimenujete stranicu.",
        "movepagetext-noredirectfixer": "Pomoću donjeg obrasca ćete preimenovati stranicu i premjestiti sve stare izmjene na novo ime. \nStari će se naslov pretvoriti u stranicu koja automatski preusmjerava na novi naslov. \nBudite sigurni da ste provjerili [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|nevaljana preusmjeravanja]]. \nVi ste odgovorni za to da poveznice i dalje povezuju tamo gdje treba.\n\nImajte na umu da stranica <strong>ne će</strong> biti premještena ako već postoji stranica s novim naslovom, osim u slučaju stranice za preusmjeravanje koja nema nikakvih starih izmjena. \nTo znači da stranicu možete preimenovati u prethodno ime ako ste pogriješili te ne možete pisati preko postojeće stranice. \n\n<strong>Napomena:</strong>\nOvo može biti drastična i neočekivana promjena kad su u pitanju popularne stranice; \nbudite sigurni da razumijete posljedice ove akcije prije nastavka.",
-       "movepagetalktext": "Stranica za razgovor, ako postoji, automatski će se premjestiti zajedno sa stranicom koju premještate. '''Stranica se za razgovor ne će premjestiti ako:'''\n*premještate stranicu iz jednog prostora u drugi,\n*pod novim imenom već postoji stranica za razgovor s nekim sadržajem, ili\n*maknete kvačicu u kućici na dnu ove stranice.\n\nU tim ćete slučajevima morati sami premjestiti ili iskopirati stranicu za razgovor,\nako to želite.",
+       "movepagetalktext": "Ako označite ovu kvačicu, pripadajuća stranica za razgovor biti će automatski premještena na novo ime osim ako već postoji stranica za razgovor koja nije prazna. \n\nU tom slučaju morat ćete ručno premjestiti ili spojiti stranice.",
        "moveuserpage-warning": "'''Upozorenje:''' Premještate suradničku stranicu. Imajte na umu da će stranica biti premještena, ali suradnik ''ne će'' biti preimenovan.",
        "movenologintext": "Ako želite premjestiti stranicu morate biti [[Special:UserLogin|prijavljeni]].",
        "movenotallowed": "Nemate pravo premještanja stranica.",
        "movenosubpage": "Ova stranica nema podstranica.",
        "movereason": "Razlog:",
        "revertmove": "vrati",
-       "delete_and_move_text": "==Nužno brisanje==\n\nOdredišni članak \"[[:$1]]\" već postoji. Želite li ga obrisati da biste napravili mjesto za premještaj?",
+       "delete_and_move_text": "Odredišna stranica \"[[:$1]]\" već postoji. Želite li je obrisati da biste napravili mjesto za premještaj?",
        "delete_and_move_confirm": "Da, izbriši stranicu",
        "delete_and_move_reason": "obrisano kako bi se napravilo mjesto za premještaj, stari naziv \"[[$1]]\"",
        "selfmove": "Izvorni i odredišni naslov su isti; ne mogu premjestiti stranicu na nju samu.",
        "move-leave-redirect": "Ostavi preusmjeravanje",
        "protectedpagemovewarning": "<strong>Upozorenje:</strong> ova je stranica zaštićena i mogu je premjestiti samo suradnici s administratorskim pravima.</strong>\nPosljednja stavka u evidenciji navedena je niže kao napomena:",
        "semiprotectedpagemovewarning": "<strong>Napomena:</strong> ova je stranica zaštićena i mogu je premjestiti samo automatski potvrđeni suradnici.\nPosljednja stavka u evidenciji navedena je niže kao napomena:",
-       "move-over-sharedrepo": "== Datoteka postoji ==\n[[:$1]] postoji na zajednički korištenom repozitoriju. Premještanje datoteke na ovaj naslov će prepisati zajednički korištenu datoteku.",
+       "move-over-sharedrepo": "[[:$1]] postoji na zajedničkom repozitoriju. Premještanje datoteke na ovaj naslov će prepisati zajednički korištenu datoteku.",
        "file-exists-sharedrepo": "Naziv datoteke koje ste odabrali već se rabi na zajednički korištenom repozitoriju.\nMolimo odaberite drugo ime.",
        "export": "Izvezi stranice",
        "exporttext": "Možete izvesti tekst i prijašnje promjene jedne ili više stranica uklopljene u kȏd XML. U budućim inačicama MediaWiki softvera bit će moguće uvesti ovakvu stranicu u neki drugi wiki pomoću [[Special:Import|import page]]. Trenutačna inačica to još ne podržava.\n\nZa izvoz stranica unesite njihove naslove u polje ispod, jedan naslov po retku, i označite želite li trenutačnu inačicu zajedno sa svim prijašnjima, ili samo trenutačnu inačicu s informacijom o zadnjoj promjeni.\n\nU potonjem slučaju možete rabiti i poveznicu, npr. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] za članak [[{{MediaWiki:Mainpage}}]].",
        "import-nonewrevisions": "Nema uvezenih inačica (ili su sve već prisutne ili su preskočene zbog pogrješaka).",
        "xml-error-string": "$1 u retku $2, stupac $3 (bajt $4): $5",
        "import-upload": "Postavljanje XML datoteka",
-       "import-token-mismatch": "Izgubljeni su podaci o sesiji. Molimo pokušajte ponovno.",
+       "import-token-mismatch": "Gubitak podataka o prijavi.\n\nMoguće je da ste odjavljeni. '''Molimo provjerite jeste li još uvijek prijavljeni i pokušajte ponovno'''.\nAko ovo ne radi, probajte se [[Special:UserLogout|odjaviti]] i opet prijaviti te provjeriti dopušta li preglednik kolačiće za ovo mrežno mjesto.",
        "import-invalid-interwiki": "Ne mogu uvesti iz navedene wiki.",
        "import-error-edit": "Stranica \"$1\" nije uvezena jer vam nije dopušteno da je uređujete.",
        "import-error-create": "Stranica \"$1\" nije uvezena jer vam nije dopušteno da ju stvorite.",
        "import-error-interwiki": "Stranica \"$1\" nije uvezena jer je njen naziv rezerviran za vanjsko povezivanje (međuwiki poveznice).",
        "import-error-special": "Stranica \"$1\" nije uvezena jer pripada posebnom imenskom prostoru u koji se stranice ne uvoze.",
-       "import-error-invalid": "Stranica \"$1\" nije uvezena jer je njen naziv nevaljan.",
+       "import-error-invalid": "Stranica \"$1\" nije uvezena jer je njen naziv na koji bi trebala biti uvezena nevaljan na ovom wikiju.",
        "import-error-unserialize": "Inačica $2 stranice \"$1\" ne može biti pročitana/uvezena. Zapisano je da inačica rabi $3 tip sadržaja u $4 formatu.",
        "import-options-wrong": "{{PLURAL:$2|Pogrješna opcija|Pogrješne opcije}}: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "Zadana početna stranica ima nevaljan naslov.",
        "import-rootpage-nosubpage": "Imenski prostor \"$1\" početne stranice ne dopušta podstranice.",
        "importlogpage": "Evidencija uvoza članaka",
        "importlogpagetext": "Administrativni uvoz stranica s poviješću uređivanja s drugih wikija.",
-       "import-logentry-upload-detail": "$1 {{PLURAL:$1|izmjena|izmjene|izmjena}}",
-       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|promjena|promjene|promjena}} od $2",
+       "import-logentry-upload-detail": "$1 {{PLURAL:$1|izmjena uvezena|izmjene uvezene|izmjena uvezeno}}",
+       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|promjena uvezena|promjene uvezene|promjena uvezeno}} od $2",
        "javascripttest": "Testiranje JavaScripta",
        "javascripttest-qunit-intro": "Pogledajte [$1 testnu dokumentaciju] na mediawiki.org.",
        "tooltip-pt-userpage": "Moja suradnička stranica",
        "previousdiff": "← Starija izmjena",
        "nextdiff": "Novija izmjena →",
        "mediawarning": "'''Upozorenje''': Ova datoteka možda sadrži štetan kod.\nNjegovim izvršavanjem mogli biste oštetiti svoj sustav.",
-       "imagemaxsize": "Ograniči veličinu slike:<br />''(za stranicu s opisom datoteke)''",
+       "imagemaxsize": "Ograniči veličinu slike na stranicama za opis datoteka:",
        "thumbsize": "Veličina sličice (umanjene inačice slike):",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|stranica|stranice}}",
        "file-info": "veličina datoteke: $1, MIME tip: $2",
        "scarytranscludefailed-httpstatus": "[Preuzimanje predloška nije uspjelo za $1: HTTP $2]",
        "scarytranscludetoolong": "[URL je predug]",
        "deletedwhileediting": "'''Upozorenje''': ova stranica je obrisana nakon što ste počeli uređivati!",
-       "confirmrecreate": "Suradnik [[User:$1|$1]] ([[User talk:$1|talk]]) izbrisao je ovaj članak nakon što ste ga počeli uređivati. Razlog brisanja\n: ''$2''\nPotvrdite namjeru vraćanja ovog članka.",
-       "confirmrecreate-noreason": "Suradnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovaj članak nakon što ste ga počeli uređivati. Molimo potvrdite da stvarno želite ponovo započeti ovaj članak.",
+       "confirmrecreate": "Suradnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) {{GENDER:$1|izbrisao|izbrisala}} je ovaj članak nakon što ste ga počeli uređivati. Razlog brisanja\n: <em>$2</em>\nMolimo potvrdite namjeru vraćanja ove stranice.",
+       "confirmrecreate-noreason": "Suradnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) {{GENDER:$1|izbrisao|izbrisala}} je ovu stranicu nakon što ste započeli uređivanje. Molimo potvrdite da stvarno želite ponovo započeti ovu stranicu.",
        "recreate": "Vrati",
        "confirm-purge-title": "Osvježi ovu stranicu",
        "confirm_purge_button": "U redu",
        "version-poweredby-others": "ostali",
        "version-poweredby-translators": "prevoditelji s projekta translatewiki.net",
        "version-credits-summary": "Željeli bismo zahvaliti sljedećim suradnicima na njihovom doprinosu [[Special:Version|MediaWikiju]].",
-       "version-license-info": "MediaWiki je slobodni softver; možete ga distribuirati i/ili mijenjati pod uvjetima GNU opće javne licencije u obliku u kojem ju je objavila Free Software Foundation; bilo verzije 2 licencije, ili (Vama na izbor) bilo koje kasnije verzije.\n\nMediaWiki je distribuiran u nadi da će biti koristan, no BEZ IKAKVOG JAMSTVA; čak i bez impliciranog jamstva MOGUĆNOSTI PRODAJE ili PRIKLADNOSTI ZA ODREĐENU NAMJENU. Pogledajte GNU opću javnu licenciju za više detalja.\n\nTrebali ste primiti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju GNU opće javne licencije] uz ovaj program; ako ne, pišite na Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, ili je [//www.gnu.org/licenses/old-licenses/gpl-2.0.html pročitajte online].",
+       "version-license-info": "MediaWiki je slobodni softver; možete ga distribuirati i/ili mijenjati pod uvjetima GNU opće javne licencije u obliku u kojem ju je objavila Free Software Foundation; bilo verzije 2 licencije, ili (Vama na izbor) bilo koje kasnije verzije.\n\nMediaWiki je distribuiran u nadi da će biti koristan, no <em>BEZ IKAKVOG JAMSTVA</em>; čak i bez impliciranog jamstva <strong>MOGUĆNOSTI PRODAJE</strong> ili <strong>PRIKLADNOSTI ZA ODREĐENU NAMJENU</strong>. Pogledajte GNU opću javnu licenciju za više detalja.\n\nTrebali ste primiti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju GNU opće javne licencije] uz ovaj program; ako ne, pišite na Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, ili je [//www.gnu.org/licenses/old-licenses/gpl-2.0.html pročitajte online].",
        "version-software": "Instalirani softver",
        "version-software-product": "Proizvod",
        "version-software-version": "Verzija",
        "special-characters-title-endash": "crtica",
        "special-characters-title-emdash": "dulja crtica",
        "special-characters-title-minus": "znak za minus",
-       "mw-widgets-abandonedit": "Jeste li sigurni da želite napustiti uređivanje stranice bez spremanja izmjena?",
+       "mw-widgets-abandonedit": "Jeste li sigurni da želite napustiti uređivanje bez spremanja izmjena?",
        "mw-widgets-abandonedit-discard": "Odbaci izmjene",
        "mw-widgets-abandonedit-keep": "Nastavi s uređivanjem",
        "mw-widgets-abandonedit-title": "Jeste li sigurni?",
index db44cc4..0f072ab 100644 (file)
        "savearticle": "Հիշել էջը",
        "savechanges": "Պահպանել փոփոխությունները",
        "publishpage": "Ստեղծել էջը",
-       "publishchanges": "Õ\80Õ«Õ·Õ¥Õ¬ Ö\83Õ¸Ö\83Õ¸Õ­Õ¸Ö\82Õ©ÕµÕ¸Ö\82Õ¶Õ¶Õ¥Ö\80Õ¨",
-       "publishchanges-start": "Õ\80Õ«Õ·Õ¥Õ¬ Ö\83Õ¸Ö\83Õ¸Õ­Õ¸Ö\82Õ©ÕµÕ¸Ö\82Õ¶Õ¶Õ¥Ö\80Õ¨…",
+       "publishchanges": "Õ\8aÕ¡Õ°ÕºÕ¡Õ¶Õ¥Õ¬",
+       "publishchanges-start": "Õ\8aÕ¡Õ°ÕºÕ¡Õ¶Õ¥Õ¬…",
        "preview": "Նախադիտում",
        "showpreview": "Նախադիտել",
        "showdiff": "Կատարված փոփոխությունները",
index 6f53635..78914c8 100644 (file)
        "ipb_expiry_old": "Le hora de expiration es in le passato.",
        "ipb_expiry_temp": "Le blocadas de nomines de usator celate debe esser permanente.",
        "ipb_hide_invalid": "Impossibile supprimer iste conto; illo ha plus de {{PLURAL:$1|un modification|$1 modificationes}}.",
+       "ipb_hide_partial": "Blocadas in que le nomine de usator es celate debe esser pro tote le sito.",
        "ipb_already_blocked": "\"$1\" es ja blocate",
        "ipb-needreblock": "$1 es ja blocate. Esque tu vole cambiar le configurationes?",
        "ipb-otherblocks-header": "Altere {{PLURAL:$1|blocada|blocadas}}",
index ad0dd7a..f9ba01e 100644 (file)
        "magiclink-tracking-isbn": "Halaman yang menggunakan pranala magis ISBN",
        "magiclink-tracking-isbn-desc": "Halaman ini menggunakan pranala magis ISBN. Lihat [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] bagaimana melakukan migrasi.",
        "specialloguserlabel": "Pengguna:",
-       "speciallogtitlelabel": "Target (judul atau{{ns:pengguna}}:nama pengguna untuk pengguna)",
+       "speciallogtitlelabel": "Target (judul atau {{ns:user}}:nama pengguna untuk pengguna)",
        "log": "Catatan (Log)",
        "logeventslist-submit": "Tampilkan",
        "logeventslist-more-filters": "Tampilkan log tambahan:",
index 5008609..ea128ce 100644 (file)
@@ -49,6 +49,7 @@
        "tog-showhiddencats": "Zi ébéonọr zonari a zonari",
        "tog-norollbackdiff": "Kwà diff mgbe byárá na mgbe láázú mèchàrà",
        "tog-useeditwarning": "gwam mgbe m hapụrụ ihu akwụkwọ nhaziri na echekwaghị ihe ndị m gbamworo",
+       "tog-prefershttps": "gbaa mbọ na eji njikọta doro anya mgbe ọbụla ị chọrọ ibanye n'ịntanetị",
        "underline-always": "M̀gbèọbụlà",
        "underline-never": "Emelaème",
        "underline-default": "Ndatụ ihü njikota",
        "october-date": "Ọnwaìri $1",
        "november-date": "Ọnwaìrinàotù $1",
        "december-date": "Ọnwa Iri na abụọ $1",
+       "period-pm": "oge mgbede",
        "pagecategories": "{{PLURAL:$1|Ụdàkọ}}",
        "category_header": "Ihu nà ime ụdàkọ \"$1\"",
        "subcategories": "Ụdàkọòkpurù",
        "view": "Lèzí",
        "view-foreign": "Zi nà $1",
        "edit": "Mèzi",
+       "edit-local": "hazie nkọwa njirimara",
        "create": "Ké",
        "create-local": "Tinye nkọwa ebe osi",
        "delete": "Kàcha",
        "talk": "Nkpata okà",
        "views": "Há hụrụ ya olé",
        "toolbox": "Ngwa ọrụ",
+       "tool-link-userrights": "gbanwee {{GENDER:$1|user}} otu ndia",
+       "tool-link-userrights-readonly": "lee {{GENDER:$1|user}} otu ndia",
+       "tool-link-emailuser": "ziga mailụ a{{GENDER:$1|user}}",
        "imagepage": "Zìri ihu àfabà",
        "mediawikipage": "Zìri ihunde ozi",
        "templatepage": "Zìri ihunde àtụ̀",
        "otherlanguages": "Nà asụ̀sụ̀ ndị ọ̀zọ",
        "redirectedfrom": "(Dupụ̀rụ̀ sì $1)",
        "redirectpagesub": "Kufù ebe ihü nka na ga",
+       "redirectto": "zigagharia na",
        "lastmodifiedat": "Oge ikpeazu Edeziri ihuakwụkwọ a bụ $1, mgbe $2",
        "viewcount": "Ha banyere ihü nka na {{PLURAL:$1|otu|$1 mgbe ole}}.",
        "protectedpage": "Ihü a cẹdolu a cẹdo",
        "jumptonavigation": "nturuụzọ̀",
        "jumptosearch": "tùwe",
        "view-pool-error": "Ndó, ihe na enye juchàrà ejucha oge nka.\nMadu kachạrạ ndi choro ihu ihü nka.\nBiko chetukwa oge kà oruo mgbe I choro I banyé ihü nka ozor.\n\n$1",
+       "generic-pool-error": "Ewewla iwe, sava ejula eju ugbu a.\nọtụtụ ndị mmadụ na-achọ inyocha akọrọngwa a.\nbiko chetụ obere oge tupu ịchọo ịga nwaa ọzọ.",
        "pool-timeout": "Ógè e zuole Í ché ncedọ",
        "pool-queuefull": "Pool kyu zùrù",
        "pool-errorunknown": "Nsogbu nke námaghi",
+       "pool-servererror": "pulu kauta sava adịghị ugbu a",
+       "poolcounter-usage-error": "e nwere nsogbu",
        "aboutsite": "Màkà {{SITENAME}}",
        "aboutpage": "Project:Màkà",
        "copyright": "Ihe di ime nọr okpúrụ $1",
index 295f1b4..26301fc 100644 (file)
        "accmailtitle": "Pasovorto sendita.",
        "accmailtext": "Hazarde kreita pasovorto por [[User talk:$1|$1]] sendesis ad $2. Ol povas chanjesar che la pagino <em>[[Special:ChangePassword|chanjar pasovorto]]</em> pos vua 'login'.",
        "newarticle": "(nova)",
-       "newarticletext": "Vu sequis ligilo a pagino qua ne existas ankore.\nPor krear ica pagino, voluntez startar skribar en la infra buxo.\n(regardez la [$1 helpo] por plusa informo).\nSe vu esas hike erore, kliktez sur la butono por retrovenar en vua navigilo.",
+       "newarticletext": "Vu sequis ligilo a pagino qua ankore ne existas.\nPor krear ica pagino, komencez skribar en l'infra buxo (regardez la [$1 helpo] por plusa informo).\nSe vu esas hike erore, kliktez sur la butono por retrovenar en vua navigilo.",
        "anontalkpagetext": "----\n<em>Yen la diskuto-pagino por anonima uzero, qua ankore ne kreabas konto, o se kreis ne uzas ol.</em>\nDo, ni mustas uzar la IP-adreso por identifikar ilu/elu.\nTala IP-adreso povas uzesar da multa uzeri.\nSe vu esas anonima uzero e kreas ke nerelevanta komenti sendesis a vu, voluntez [[Special:CreateAccount|krear konto]], o [[Special:UserLogin|facar 'log in']] por preventar futura konfundo kun altra anonima uzeri.",
        "noarticletext": "Til nun ne existas texto en ica pagino.\nVu povas [[Special:Search/{{PAGENAME}}|serchar ica titulo]] en altra pagini, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchar en la relata registri], o [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktar ica pagino]</span>.",
        "noarticletext-nopermission": "Til nun ne existas texto en ica pagino.\nVu povas [[Special:Search/{{PAGENAME}}|serchar ica titulo]] en altra pagini, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchar en la relata registri], o [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktar ica pagino]</span>, tamen vu ne havas permiso por krear ica pagino.",
        "uploaddisabledtext": "Ne permisesas sendar arkivi.",
        "upload-maxfilesize": "Maxima grandeso dil arkivo: $1",
        "watchthisupload": "Surveyar ica arkivo",
+       "filewasdeleted": "Altr arkivo kun ca sama nomo sendesis antee, e pose efacesis.\nAnte probar risendar ol, vu mustas ante verifikar $1.",
        "upload-file-error": "Interna eroro",
        "upload-file-error-text": "Eventis interna eroro kande on probis kreir tempala arkivo che la reto-servero.\nVoluntes kontaktar ula [[Special:ListUsers/sysop|administrero]].",
        "upload-misc-error": "Sendo-eroro nekonocita",
        "linkstoimage-redirect": "$1 (arkivo ridirektita) $2",
        "sharedupload": "Ca arkivo esas de $1 e posible esas uzata da altra projekti.",
        "sharedupload-desc-here": "Ca arkivo jacas en $1, e povas uzesar en altra projeti.\nLa deskriptado en lua [$2 pagino di deskriptado] montresas adinfre.",
+       "sharedupload-desc-edit": "Ca arkivo venas de $1 e povas uzesar en altra projeti.\nPosible vu deziros redaktar ibe lua deskripto en [$2 lua deskripto-pagino].",
+       "sharedupload-desc-create": "Ca arkivo venas de $1 e povas uzesar en altra projeti.\nPosible vu deziros redaktar ibe lua deskripto en [$2 lua deskripto-pagino].",
        "filepage-nofile": "Nula arkivo kun ica nomo existas.",
        "filepage-nofile-link": "Ne existas arkivo kun ta nomo, tamen vu povas [$1 sendar ol].",
        "uploadnewversion-linktext": "Adkargez nova versiono dil arkivo",
        "autosumm-changed-redirect-target": "Chanjis la ridirektilo de [[$1]] a [[$2]]",
        "autosumm-new": "Pagino kreesis kun '$1'",
        "autosumm-newblank": "Kreita vakua pagino",
+       "size-bytes": "$1 {{PLURAL:$1|bicoko*|bicoki*}}",
        "watchlistedit-normal-title": "Modifikez surveyo-listo",
        "watchlistedit-normal-legend": "Removar tituli de surveyo-listo",
        "watchlistedit-normal-explain": "La tituli de vua surveyo-listo montresas adinfre.\nPor removar ula titulo, markizez la buxo proxim ol, e kliktez \"{{int:Watchlistedit-normal-submit}}\".\nVu anke povas [[Special:EditWatchlist/raw|redaktar direkte la 'kruda' listo]].",
index 501a4b0..1692f47 100644 (file)
        "grant-delete": "Eyða síðum, yfirferðum og annálsfærslum",
        "grant-editinterface": "Breyta nafnrými MediaWiki og JSON notanda/vefsvæðis",
        "grant-editmycssjs": "Breyta þínum eigin CSS/JSON/JavaScript",
-       "grant-editmyoptions": "Breyta notandastillingunum þínum",
+       "grant-editmyoptions": "Breyta notandastillingunum þínum og JSON-uppsetningu",
        "grant-editmywatchlist": "Breyta vaktlistanum þínum",
        "grant-editpage": "Breyta fyrirliggjandi síðum",
        "grant-editprotected": "Breyta vernduðum síðum",
        "uploadstash-zero-length": "Lengd skráar er núll.",
        "invalid-chunk-offset": "Ógild raðbreyting bunka",
        "img-auth-accessdenied": "Aðgangur óheimill",
-       "img-auth-nopathinfo": "PATH_INFO vantar.\nBiðlarinn þínn er ekki stilltur til að gefa upp þessar upplýsingar.\nÞær mega vera CGI-byggðar og mega ekki styðja img_auth.\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization",
+       "img-auth-nopathinfo": "Vantar upplýsingar um slóð.\nÞjónninn þinn er ekki stilltur til að senda REQUEST_URI og/eða PATH_INFO breyturnar.\nEf svo er, prófaðu að virkja $wgUsePathInfo.\nSkoðaðu https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "img-auth-notindir": "Umbeðin slóð var ekki í stilltri innhleðslumöppu.",
        "img-auth-badtitle": "Mistókst að búa til gildan titil útfrá „$1”.",
        "img-auth-nologinnWL": "Þú ert ekki skráð(ur) inn og „$1“ er ekki á hvítlista.",
        "ipbreason": "Ástæða:",
        "ipbreason-dropdown": "* Algengar bannástæður\n** Setur inn rangar upplýsingar\n** Fjarlægir efni af síðum\n** Setur inn rusltengla á utanaðkomandi síður\n** Setur inn vitleysu/þvaður á síður\n** Yfirþyrmandi framkoma/áreitni\n** Misnotkun á fjölda notandanafna\n** Óásættanlegt notandanafn",
        "ipb-hardblock": "Banna innskráðum notendum að breyta frá þessu IP-vistfangi.",
-       "ipbcreateaccount": "Banna nýskráningu notandanafns",
-       "ipbemailban": "Banna notanda að senda tölvupóst",
+       "ipbcreateaccount": "Gerð notandaaðgangs",
+       "ipbemailban": "Senda tölvupóst",
        "ipbenableautoblock": "Banna síðasta vistfang notanda sjálfkrafa; og þau vistföng sem viðkomandi notar til að breyta síðum",
        "ipbsubmit": "Banna notanda",
        "ipbother": "Annar tími:",
        "ipboptions": "2 tíma:2 hours,1 dag:1 day,3 daga:3 days,1 viku:1 week,2 vikur:2 weeks,1 mánuð:1 month,3 mánuði:3 months,6 mánuði:6 months,1 ár:1 year,aldrei:infinite",
        "ipbhidename": "Fela notandanafn úr breytingaskrá og listum",
        "ipbwatchuser": "Vakta notanda- og spjallsíður þessa notanda",
-       "ipb-disableusertalk": "Banna þessum notanda að breyta eigin spjallsíðu",
+       "ipb-disableusertalk": "Breyta eigin spjallsíðu",
        "ipb-change-block": "Endurbanna notanda með þessum stillingum",
        "ipb-confirm": "Staðfesta bann",
        "ipb-sitewide": "Á öllum vefnum",
index b5360b8..a3d5a17 100644 (file)
                        "Wedhro",
                        "Malore",
                        "Ruthven",
-                       "Manfredi26"
+                       "Manfredi26",
+                       "Albe Albe 460"
                ]
        },
        "tog-underline": "Sottolinea i collegamenti:",
        "proxyblockreason": "Questo indirizzo IP è stato bloccato perché risulta essere un proxy aperto. Si prega di contattare il proprio fornitore di accesso a Internet o il supporto tecnico e informarli di questo grave problema di sicurezza.",
        "sorbsreason": "Questo indirizzo IP è elencato come proxy aperto nella lista DNSBL utilizzata da {{SITENAME}}.",
        "sorbs_create_account_reason": "Non è possibile creare nuove utenze con questo indirizzo IP perché è elencato come proxy aperto nella lista DNSBL utilizzata da {{SITENAME}}.",
+       "softblockrangesreason": "I contributi anonimi non sono consentiti dal tuo indirizzo IP ($1). Accedi con la tua utenza.",
        "xffblockreason": "Un indirizzo IP presente nell'intestazione X-Forwarded-For, tuo o del server proxy che stai utilizzando, è stato bloccato. La motivazione originale del blocco è: $1",
        "cant-see-hidden-user": "L'utente che si sta tentando di bloccare è stato già bloccato e nascosto. Poiché non hai il permesso \"hideuser\", non è possibile visualizzare o modificare il blocco dell'utente.",
        "ipbblocked": "Non puoi bloccare o sbloccare altri utenti, perché tu stesso sei bloccato",
        "movepage-moved": "'''\"$1\" è stata spostata a \"$2\"'''",
        "movepage-moved-redirect": "È stato creato un redirect.",
        "movepage-moved-noredirect": "La creazione di un redirect è stata soppressa.",
+       "movepage-delete-first": "La pagina di destinazione ha troppe versioni da cancellare come parte di uno spostamento della pagina. Per prima cosa cancella la manualmente pagina, poi riprova.",
        "articleexists": "Una pagina con questo nome esiste già oppure il nome scelto non è valido.\nScegliere un titolo diverso per la pagina.",
        "cantmove-titleprotected": "Lo spostamento della pagina non è possibile in quanto il nuovo titolo è stato protetto per impedirne la creazione",
        "movetalk": "Sposta anche la pagina di discussione.",
        "pagedata-not-acceptable": "Nessun formato corrispondente trovato. Tipi MIME supportati: $1",
        "pagedata-bad-title": "Titolo non valido: $1.",
        "unregistered-user-config": "Per motivi di sicurezza, non è possibile caricare sottopagine utente JavaScript, CSS e JSON per utenti non registrati.",
+       "passwordpolicies-summary": "Questo è un elenco delle politiche sulle password efficaci per i gruppi di utenti definiti in questo wiki.",
        "passwordpolicies-group": "Gruppo",
        "passwordpolicies-policies": "Politiche",
        "passwordpolicies-policy-minimalpasswordlength": "La password deve essere lunga almeno $1 {{PLURAL:$1|carattere|caratteri}}",
        "passwordpolicies-policy-maximalpasswordlength": "La password deve essere lunga meno di $1 {{PLURAL:$1|carattere|caratteri}}",
        "passwordpolicies-policy-passwordcannotbepopular": "La password non può essere {{PLURAL:$1|la password più popolare|nell'elenco delle $1 password più popolari}}",
        "passwordpolicies-policy-passwordnotinlargeblacklist": "La password non può essere nell'elenco delle 100 000 password utilizzate più comunemente.",
+       "easydeflate-invaliddeflate": "Il contenuto fornito non è compresso correttamente",
        "unprotected-js": "Per motivi di sicurezza, non è possibile caricare JavaScript da pagine non protette. Crea javascript solo nel namespace MediaWiki o come sottopagina Utente"
 }
index 1d91d0e..83d1e70 100644 (file)
        "rcfilters-quickfilters-placeholder-description": "フィルターの設定を保存し、後で再び使用するためには、下のアクティブフィルター内のブックマークアイコンをクリックしてください。",
        "rcfilters-savedqueries-defaultlabel": "保存したフィルター",
        "rcfilters-savedqueries-rename": "名称を変更",
-       "rcfilters-savedqueries-setdefault": "デフォルトに設定",
+       "rcfilters-savedqueries-setdefault": "既定に設定",
        "rcfilters-savedqueries-unsetdefault": "既定から削除",
        "rcfilters-savedqueries-remove": "削除",
        "rcfilters-savedqueries-new-name-label": "名称",
        "ipb-sitewide": "サイト全体",
        "ipb-partial": "部分的",
        "ipb-pages-label": "ページ",
+       "ipb-namespaces-label": "名前空間",
        "badipaddress": "無効なIPアドレス",
        "blockipsuccesssub": "ブロックしました",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]]をブロックしました。<br />\n[[Special:BlockList|ブロックの一覧]]を参照してください。",
        "blocklist-nousertalk": "自分のトークページも編集禁止",
        "blocklist-editing": "編集",
        "blocklist-editing-sitewide": "編集(サイト全体)",
+       "blocklist-editing-ns": "名前空間",
        "ipblocklist-empty": "ブロック一覧は空です。",
        "ipblocklist-no-results": "指定されたIPアドレスまたは利用者名はブロックされていません。",
        "blocklink": "ブロック",
index 38a6b90..f077799 100644 (file)
        "botpasswords-label-cancel": "Bıtexelne",
        "resetpass_forbidden": "Paroley nêşikinê bıvurniyê",
        "resetpass-submit-loggedin": "Parola bıvurne",
-       "resetpass-submit-cancel": "Peyd kı",
+       "resetpass-submit-cancel": "Bıtexelne",
        "resetpass-temp-password": "Parola vêrdiye:",
        "bold_sample": "Nusto qolınd",
        "bold_tip": "Nusto qolınd",
        "recentchanges-label-bot": "No vurnais terefê zu boti ra bi",
        "recentchanges-label-unpatrolled": "No vurnais hona çım ra ranêvêrdo",
        "recentchanges-legend-newpage": "$1 - pela newiye",
+       "rcfilters-savedqueries-cancel-label": "Bıtexelne",
        "rcnotefrom": "Cêr de vurnayîşê esto ke '''$2''' ra raver  (heta '''$1''' mucnayiyo).",
        "rclistfrom": "$3 $2 ra hata nıka vurnaisunê newu bıasne",
        "rcshowhideminor": "$1 vurnaisê qızkeki",
index 3bf8c6a..aec8a3c 100644 (file)
        "thursday": "پٱن شمٱ",
        "friday": "جۏمٱ",
        "saturday": "شٱمٱ",
-       "sun": "یٱشمٱ",
+       "sun": "یاٛشٱمٱ",
        "mon": "دۏشٱمٱ",
        "tue": "ساْ شٱمٱ",
-       "wed": "چارشمٱ",
-       "thu": "پٱن شمٱ",
-       "fri": "جومە",
-       "sat": "شأمە",
+       "wed": "Ú\86ارشٱÙ\85Ù±",
+       "thu": "پٱÙ\86 Ø´Ù±Ù\85Ù±",
+       "fri": "جۏمٱ",
+       "sat": "شٱمٱ",
        "january": "جانڤیٱ",
        "february": "فڤریٱ",
        "march": "مارس",
@@ -88,7 +88,7 @@
        "october": "اوکتوبر",
        "november": "نوڤامر",
        "december": "دسامر",
-       "january-gen": "جانڤیە",
+       "january-gen": "جانڤیٱ",
        "february-gen": "فڤریٱ",
        "march-gen": "مارس",
        "april-gen": "آڤریل",
        "november-date": "نوڤامر $1",
        "december-date": "دئسامر $1",
        "pagecategories": "{{PLURAL:$1|}}{{PLURAL:$1|دٱسٱ|دٱسٱيا}}",
-       "category_header": "بٱلگٱیا مین دٱسٱ \"$1\"",
-       "subcategories": "زيردأسە یا",
+       "category_header": "بٱلگٱیا مؽن دٱسٱ \"$1\"",
+       "subcategories": "زؽر دٱسٱیا",
        "category-media-header": "ڤارسگٱر د دٱسٱ \"$1\"",
        "category-empty": "ای دٱسٱ د راستٱکی د ڤٱرگرتٱ هیچ بٱلگٱ یا ڤارسگٱری نی",
        "hidden-categories": "{{PLURAL:$1|دٱسٱ قایم بیٱ|دٱسٱیا قایم بیٱ}}",
        "category-article-count-limited": "نئها {{PLURAL:$1|بألگە هی|$1بألگە یا هئن}} د دأسە ئیسئنی.",
        "category-file-count": "{{PLURAL:$2|ای دٱسٱ فٱقٱت د ڤٱرگرتٱ جانیا نئهاییٱ.| نئهایی {{PLURAL:$1|جانیا هی|$1 جانیایا هین}} د ای دٱسٱ، ڤ دٱر د کول $2 .}}",
        "category-file-count-limited": " {{PLURAL:$1|[جانیا هی|1$جانیایا هین}} نئهایی هان د دأسە ئیسئنی.",
-       "listingcontinuesabbrev": "دومالە",
+       "listingcontinuesabbrev": "دومالٱ",
        "index-category": "بألگە یا سیاە دار",
        "noindex-category": "بلگٱیا بی سیائٱ",
        "broken-file-category": "بألگە یایی کئ هوم پئیڤأند جانیایا ئشگئسئ نە دارئن",
        "categoryviewer-pagedlinks": "($1) ($2)",
        "about": "دئبارە",
        "article": "مینوٙنە یا بألگە",
-       "newwindow": "(د Û\8cئ Ú¯Ø¦Ù\84 Ù\86Û\8cÙ\85دأرÛ\8c ØªØ§Ø²Û\95 Ú¤Ø§ش کو)",
+       "newwindow": "(د Û\8cاÙ\9b Ù\86Û\8cÙ\85درÛ\8c ØªØ§Ø²Ù± Ú¤Ø§Ø²ش کو)",
        "cancel": "ٱنجوم شیڤسن",
        "moredotdotdot": "بیشتئر",
        "morenotlisted": "ئی نومگە کامئل بییە.",
        "variants": "آلشتگریٛا",
        "navigation-heading": "نوم جاگٱ ناڤگردی",
        "errorpagetitle": "غألأط",
-       "returnto": "ڤورگأشتئن د $1.",
+       "returnto": "ڤرگٱشتن د $1.",
        "tagline": "د {{SITENAME}}",
        "help": "هومياری",
        "search": "پاٛ جۊری",
        "permalink": "هوم پاٛڤٱن هٱمیشاٛیی",
        "print": "چاپ گئرئتئن",
        "view": "دیین",
-       "view-foreign": "د $1 نه بوینیت",
+       "view-foreign": "د $1 ناْ بونؽت",
        "edit": "ڤیرایش",
        "edit-local": "توضی ڤولات نئشینی نە ڤیرایئشت بأکیت",
        "create": "راس كئردئن",
-       "create-local": "بئ گئل توضی ڤولات نئشینی ئضاف بأکیت",
+       "create-local": "یاٛ تۉزی ڤلات نشینی اْزاف بٱکؽت",
        "delete": "پاکسا کئردئن",
        "undelete_short": "ناپاکسا کئردئن {{PLURAL:$1|یئ گئل ڤیرایئشت|$1 ڤیرایئشتیا}}",
        "viewdeleted_short": "{{PLURAL:$1|}}سئیل بأکیت{{[PLURAL:$1|یئ گئل ڤیرایئشت پاکسا بییە|$1ڤیرایئشتیا پاکسا بیینە}}",
        "protect": "پأر و پیم بأکیت",
        "protect_change": "آلئشت بأکیت",
        "unprotect": "آلئشت دأئن پأر و پیم کاری",
-       "newpage": "بألگە نۊ",
+       "newpage": "بٱلگٱ نۊ",
        "talkpagelinktext": "چٱک چنٱ",
        "specialpage": "بألگە ڤیجە",
        "personaltools": "ٱڤزارؽا شٱخسی",
        "currentevents-url": "Project:روخ ڤنؽا ایسنی",
        "disclaimers": "تیٱپۊشکاریٛا",
        "disclaimerpage": "پرۉژٱ: تیٱپوشی کردن همٱگیر",
-       "edithelp": "هومياری سی ڤیرایشت",
+       "edithelp": "هومياری سی ڤیرایش",
        "helppage-top-gethelp": "هومياری",
        "mainpage": "سرآسونٱ",
        "mainpage-description": "سرآسونٱ",
        "sort-descending": "کأم بییئن سأرجاخود",
        "sort-ascending": "زياد بيیئن سأرجادخود",
        "nstab-main": "بٱلگٱ",
-       "nstab-user": "بلگٱ کاریار",
+       "nstab-user": "بٱÙ\84Ú¯Ù± Ú©Ø§Ø±Û\8cار",
        "nstab-media": "بألگە ڤارئسگأر",
        "nstab-special": "بٱلگٱیا ڤیژٱ",
        "nstab-project": "بألگە پوروجە",
        "perfcached": "رئسینە یا نئهایی د ڤیرگە قام بییە موٙکیس بینە و گاسی هأنی ڤئ هئنگوم سازی نأبینە.بیشتئروٙنە {{PLURAL:$4|یئ گئل نأتیجە|$4 یئ گئل نأتیجە}} د ڤیرگە قام بییە هان د دأسرئس.",
        "perfcachedts": "رئسینە یا نئهایی د ڤیرگە قام بییە موٙکیس بینە و گاسی هأنی ڤئ هئنگوم سازی نأبینە.بیشتئروٙنە {{PLURAL:$4|یئ گئل نأتیجە|$4 یئ گئل نأتیجە}} د ڤیرگە قام بییە هان د دأسرئس.",
        "querypage-no-updates": "نأبوٙە ئی بألگە ڤئ هئنگوم سازی با.\nرئسینە یا ئیچئ تازە کاری نأبینە.",
-       "viewsource": "سئÛ\8cÙ\84 Ø¯ Ø³Ø±Ú\86Ø´Ù\85Ù± Ø¨Ù±Ú©Û\8cت",
+       "viewsource": "ساÙ\9bÙ\84Ù\9b Ø¯ Ø³Ø±Ú\86Ø´Ù\85Ù± Ø¨Ù±Ú©Ø½ت",
        "viewsource-title": "سئیل د سأرچئشمە $1 بأکیت",
        "actionthrottled": "کونئشتکاری نئهاگئری بییە",
        "actionthrottledtext": "سی نئهاگئری د دأرتیچ بییئن ئسپأم نأبوٙە کئ شوما چئنی کاری نە د یئ گاتی کوٙتا چأن گئل أنجوم بئییت.\nلوطف بأکیت د چأن دئیقە هأنی د نۊ تئلاش بأکیت.",
        "welcomecreation-msg": "حئساڤتوٙ دوروس بییە.\nد ڤیرئتوٙ نأروە کئ {{نوم دیارگە}} [[Special:Preferences|preferences]]  خوتوٙنە آلئشت بأکیت.",
        "yourname": "نوم کاریاری:",
        "userlogin-yourname": "نوم کاریاری",
-       "userlogin-yourname-ph": "Ù\86Ù\88Ù\85 Ú©Ø§Ø±Û\8cارÛ\8c ØªÙ\88Ù\99Ù\86Û\95 Ø¨Ø£Ø²Ø¦Ù\86Û\8cت",
+       "userlogin-yourname-ph": "Ù\86Ù\88Ù\85 Ú©Ø§Ø±Û\8cارÛ\8c ØªÙ\88Ù\86اÙ\92 Ø¨Ù±Ø²Ù\86ؽت",
        "createacct-another-username-ph": "نوم کاریاری توٙنە بأزئنیت",
        "yourpassword": "رازینە گوڤاردئن:",
-       "userlogin-yourpassword": "رازینە گوڤاردئن",
+       "userlogin-yourpassword": "رازینٱ گوڤاردن",
        "userlogin-yourpassword-ph": "رازینٱ گوئارسناْ بٱزاْ",
        "createacct-yourpassword-ph": "رازینە گوڤاردئن نە بأزە",
        "yourpasswordagain": "یئ گئل هأنی رازینە گوڤاردئن نە بأزە",
        "yourdomainname": "پوشگئر شوما:",
        "password-change-forbidden": "شوما نئمی توٙنیت رازینە گوڤاردئن خوتوٙنە د ئی ڤیکی آلئشت بأکیت.",
        "externaldberror": "ئشتئڤایی د ئرتئڤاط ڤا رئسینە گا پیش ئوٙماە یا شوما صئلا یأنە کئ یئ گئل حئساڤ خارجی خوتوٙنە ڤئ هئنگوم سازی بأکیت ناریت.",
-       "login": "ڤامین اۊمائن",
+       "login": "ڤامؽن اوماین",
        "nav-login-createaccount": " ڤامین ئوٙمائن/راس کئردئن حئساڤ",
        "logout": "د ساموٙنە دئرئوٙمائن",
        "userlogout": "د ساموٙنە دئرئوٙمائن",
        "login-throttled": "شوما تا ئیسئ سی ڤامین ئوٙمائن فئرە تئلاش کئردیتە.\n$1 لوطف بأکیت سی تئلاش هأنی گوری بئسیت.",
        "login-abort-generic": "ڤامین ئوٙمائن توٙ ناخوش سأرنجوم بی- گأن بی",
        "login-migrated-generic": "حئساڤ کاریاری شوما جا ڤئ جا بییە، و نوم کاریاری شوما دە د ئی ڤیکی نیئش.",
-       "loginlanguagelabel": "زۊن:$1",
+       "loginlanguagelabel": "زڤون:$1",
        "suspicious-userlogout": "د حاست ڤئ دأر رأتئن شوما تیە پوشی بییە سی یە کئ ڤئ نأظأر یما کئ ڤئ سی یئ گئل دوڤارتە نیأر گأن یا یئ گئل پوروکسی کئ ها د ڤیرگە کأش کئل بییە.",
        "createacct-another-realname-tip": "نوم راستأکی دئل ڤئ حاییە.\nأر شوما ڤئنە نئها ئمایە بأکیت، یە سی هوم نئسبأت دأئن کاریاری سی کاریاش ڤئ کار گئرئتئ بوٙە.",
        "pt-login": "ڤا مؽن اوماین",
        "resettokens-watchlist-token": "دیارگأر سی حوڤال حوٙن تورگە(أتوم/آر ئس ئس) سی [[Special:سئیل بأرگ|آلئشت دأئن بألگە یا د سئیل بأرگئتوٙ]]",
        "resettokens-done": "نئشوٙنە یا تازه بیینە",
        "resettokens-resetbutton": "نئشوٙنە گولئ ڤورچیە د نوٙ زئنە بینە",
-       "bold_sample": "نیسسٱ مین پور",
-       "bold_tip": "نیسسٱ مین پور",
-       "italic_sample": "Ù\86Û\8cسئسÛ\95 Ú©Ø£Ø¬ Ù\88 Ú©Ù\88Ù\84Û\95",
-       "italic_tip": "Ù\86Û\8cسئسÛ\95 Û\8cا Ú©Ø£Ø¬ Ù\88 Ú©Ù\88Ù\84Û\95",
-       "link_sample": "داسÙ\88Ù\99Ù\86 Ù\87Ù\88Ù\85 Ù¾Û\8cÚ¤Ù\86د",
-       "link_tip": "هوم پیڤند مینجایی",
-       "extlink_sample": "http://www.example.com Ø¯Ø§Ø³Ù\88Ù\99Ù\86 Ù\87Ù\88Ù\85 Ù¾Ø¦Û\8cڤأÙ\86د",
-       "extlink_tip": "Ù\87Ù\88Ù\85 Ù¾Ø¦Û\8cڤأÙ\86د Ø®Ø§Ø±Ø¦Ø¬Û\8c(د Ú¤Û\8cر Ø¯Ø§Ø´ØªÙ\88Ù\99ئیت)",
-       "headline_sample": "سأرخأط نیسئسە",
-       "headline_tip": "رÛ\8cتئراز 2 Ø®Ø£Ø· Ø³Ø£Ø±Ú¤Ø£ن",
-       "nowiki_sample": "د Ø§Û\8cÚ\86اÙ\9b Û\8cاÙ\9b Ú¯Ø§Ù\9bÙ\84 Ù\86Û\8cسسٱ Ú¤Ø§Ø±Ø¯ Ø¨Ù±Ú©Û\8cت",
+       "bold_sample": "نیسسٱ مؽن پور",
+       "bold_tip": "نیسسٱ مؽن پور",
+       "italic_sample": "Ù\86Û\8cسسٱ Ú©Ù±Ø¬ Û\89 Ù\87ار",
+       "italic_tip": "Ù\86Û\8cسسٱÛ\8cا Ú©Ù±Ø¬ Û\89 Ú©Ù\88Ù\84Ù±",
+       "link_sample": "داسÙ\88Ù\86 Ù\87Ù\88Ù\85 Ù¾Ø§Ù\9bÚ¤Ù±Ù\86",
+       "link_tip": "هوم پاٛڤٱن مؽنجایی",
+       "extlink_sample": "http://www.example.com Ø¯Ø§Ø³Ù\88Ù\86 Ù\87Ù\88Ù\85 Ù¾Ø§Ù\9bÚ¤Ù±Ù\86",
+       "extlink_tip": "Ù\87Ù\88Ù\85 Ù¾Ø§Ù\9bÚ¤Ù±Ù\86 Ø®Ø§Ø±Ø¬Û\8c(د Ú¤Û\8cر Ø¯Ø§Ø´ØªÛ\8aیت)",
+       "headline_sample": "سٱرخٱت نیسسٱ",
+       "headline_tip": "رÛ\8cتراز 2 Ø®Ù±Øª Ø³Ù±Ø±Ú¤Ù±ن",
+       "nowiki_sample": "د Ø§Û\8cÚ\86اÙ\92 Û\8cاÙ\9b Ù\86Û\8cسسٱ Ú¤Ø§Ø±Ø¯ Ø¨Ù±Ú©Ø½ت",
        "nowiki_tip": "د شکل ڤیکی تیٱپۊشی بٱک",
        "image_sample": "Example.jpg",
-       "image_tip": "جانیا چار قئر گئرئتە",
+       "image_tip": "جانؽا چار قر گرتٱ",
        "media_sample": "Example.ogg",
-       "media_tip": "جانیا هوم پیڤند",
-       "sig_tip": "اÙ\9bÙ\85زا Ø´Ù\88ما ڤا گاتدیس",
-       "hr_tip": "خأط آسوٙ ڤأنە(جئگا جئگا ڤئ کار گئرئتئن)",
+       "media_tip": "جانؽا هوم پاٛڤٱن",
+       "sig_tip": "اÙ\92Ù\85زا Ø´ما ڤا گاتدیس",
+       "hr_tip": "خٱت آسو ڤٱنٱ(جگا جگا ڤ کار گرتن)",
        "summary": "چکسٱ",
        "subject": "ذاسوٙن/سأرتال:",
        "minoredit": "یٱ یاٛ گاٛل ڤیرایشت کوچکٱ",
-       "watchthis": "دیئن ای بلگٱ",
-       "savearticle": "اÙ\9bÙ\85اÛ\8cÙ± Ú©Ø±Ø¯Ù\86 Ø¨لگٱ",
+       "watchthis": "دیین اؽ بٱلگٱ",
+       "savearticle": "Ø¢Ù\85ادٱ Ú©Ø±Ø¯Ù\86 Ø¨Ù±لگٱ",
        "preview": "پيش سئيل",
-       "showpreview": "نشۊ دٱئن پیش سئیل",
-       "showdiff": "نشۊ دٱئن آلشتکاریا",
+       "showpreview": "نشوݩ داٛین پیش ساٛلٛ",
+       "showdiff": "نشوݩ داٛین آلشتکاریا",
        "blankarticle": "<strong>زنئار:</strong> بلگه ای که شما دروس کردیته حالیه.\nار شما د نو ری \"$1\" بپورنیت, بلگه وه شکل که هیچ مینونه ای دش نبا دروس بوئه.",
-       "anoneditwarning": "<strong>زاٛنار:</strong> شوما هٱنی نیۊمایتٱ ڤامین. تیرنشۊن آی پی شوما سی هر گاتی کاٛ آلشتکاری بٱکیت سی کول خٱلک دیاری می کٱ. ٱر <strong>[$1 روئیت ڤامین]</strong> یا <strong>[$2 یاٛ گاٛل هساڤ کاریاری راس بٱکیت]</strong>، ڤیرایشتیا شوما ڤ نوم کاریاری خوتۊ دیاری می کٱ و سی شوما بیترٱ.",
+       "anoneditwarning": "<strong>زٱنڳیار:</strong> شما هنی نۏمایتٱ ڤامؽن. تیرنشوݩ آی پی شما سی هٱر گاتؽ کاْ آلشتکاری بٱکؽت سی کولٛ خٱلک دؽاری مؽکٱ. ٱر <strong>[$1 رۉییت ڤامؽن]</strong> یا <strong>[$2 یاٛ هساو کاریاری دۏرس بٱکؽت]</strong>، ڤیرایشتؽا شما ڤ نوم کاریاری خوتو دیاری مؽکٱ ۉ سی شما بؽترٱ.",
        "anonpreviewwarning": "<em>شوما نیوٙمایتە ڤامین. تیرنئشوٙن آی پی شوما د ڤیرگار ڤیرایئشت ئی بألگە ئمایە بوٙە.</em>",
        "missingsummary": "<strong>ڤیر دیارکو:</strong> شوما هأنی یئ گئل چئکئسە ڤیرایئشتی نە نئها ئمایە کاری نأکئردیتە.\nأر شوما د نۊ د ری \"$1\" بأپوٙرنیت، ڤیرایئشت کاری شوما حالی ئمایە بوٙە.",
        "selfredirect": "<strong>هوشدار:</strong> شوما د حال و بال ڤاگأردوٙنی ئی بألگە د خوش هیین.\nگاسی دال ئشتئڤایی سی ڤاگأردوٙنی ئنتئخاڤ کئردیتە، یا گاسی بألگە نە ئشتئڤایی ڤیرایئشت کاری می کیت.\nأر ری \"$1\" دۊ گئل بأپوٙرنیت، ڤاگأردوٙنی راس موٙە.",
        "nosuchsectiontitle": "بأرجا پئیدا نأبوٙە",
        "nosuchsectiontext": "شوما سی ڤیرایئشت کاری جایی کئ ڤوجوٙد نارە تئلاش کئردیتە.\nگاسی ڤئ ئوٙسئ کئ شوما بألگە نە دئیتە جا ڤئ جا بییە یا پاکسا بییە.",
        "loginreqtitle": "ڤامین ئوٙمائن گأرأکە",
-       "loginreqlink": "ڤامین اۊمائن",
+       "loginreqlink": "ڤامؽن اوماین",
        "loginreqpagetext": "$1 لوطف بأکیت بألگە یا هأنی نە سئیل بأکیت.",
        "accmailtitle": "رازینە گوڤاردئن کئل بی",
        "accmailtext": "یئ گئل رازینە گوڤاردئن شامسأکی سی[[User talk:$1|$1]] سی $2 کئل بییە.بوٙە ڤئنە د گات ڤئ کار گئرئتئن بألگە ڤامین ئوٙمائن <em>[[Special:آلئشت دأئن رازینە گوڤاردئن|آلئشت دأئن رازینە گوڤاردئن]]</em> آلئشت کاری با.",
        "templatesusedpreview": "{{PLURAL:$1| چۊٱ|چۊٱ یا}} ڤ کار گرتٱ بیٱ د پیش ساٛلٛ :",
        "templatesusedsection": "{{PLURAL:$1|چوٙأ|چوٙأ یا}} ڤئ کار گئرئتە بییە د ئی بأرجا:",
        "template-protected": "(پٱر ۉ پیم بیٱ)",
-       "template-semiprotected": "(Ù\86ئصÙ\85 Ù\88 Ù\86Û\8cÙ\85Û\95 Ù¾Ø£Ø± Ù\88 Ù¾Û\8cÙ\85 Ø¨Û\8cÛ\8cÛ\95)",
+       "template-semiprotected": "(Ù\86سÙ\85 Û\89 Ù\86Û\8cÙ\85Ù± Ù¾Ù±Ø± Û\89 Ù¾Û\8cÙ\85 Ø¨Û\8cÙ±)",
        "hiddencategories": "اؽ بٱلگٱ یٱکؽ د ٱندومیائٱ {{PLURAL:$1|1 hidden category|$1 hidden categories}} :",
        "edittools-upload": "-",
        "nocreatetext": "{{SITENAME}} سی رأڤأندیاری بألگە یا تازە نئھاگئری بییە.\nشوما می توٙنیت روئیت ڤادئما و بألگە ئی کئ بییشە ڤیرایئشت کاری بأکیت،[[Special:ڤامین ئوٙمائن کاریار|بیائیت ڤامین یا یە کئ یئ گئل حئساڤ دوروس بأکیت]].",
        "previousrevision": "ڤانیٱری زیتری ←",
        "nextrevision": "ڤانیٱری تازٱتر",
        "currentrevisionlink": "آخری ڤانیٱری",
-       "cur": "تازٱ باۋ",
+       "cur": "تازٱ باو",
        "next": "نئهایی",
-       "last": "داٛمایی",
+       "last": "دمایی",
        "page_first": "أڤئلی",
        "page_last": "آخئر",
        "histlegend": "انتخاو فرخدار:جعویا رادیو نه سی دوواره دیئن و وارسی نشو دار بکید و یا ری رئتن کلیک بکید .<br />\nشرح نوشته: '''({{int:cur}})''' = وا آخری دوواره دیئن فرخ داره '''({{ int:last}})'''= وا دواره دیئن انجوم دئنی فرخ داره  '''{{int:minoreditletter}}''' =ویرایشت کؤچک.",
        "titlematches": "داسون بلگه یکی بیه",
        "textmatches": "هومسازی نیسسه بلگه.",
        "notextmatches": "نیسسه بلگه هومسازی ناره",
-       "prevn": "وادما {{PLURAL:$1|$1}}",
-       "nextn": "Ù\86Ù\8aاÙ\8aی {{PLURAL:$1|$1}}",
+       "prevn": "ڤادما {{PLURAL:$1|$1}}",
+       "nextn": "Ù\86Ù\88ئاÛ\8cی {{PLURAL:$1|$1}}",
        "prev-page": "بلگه دمايی",
        "next-page": "بلگه نهایی",
        "prevn-title": "پيشتر $1 {{PLURAL:$1|نتيجه|نتيجيا}}",
        "nextn-title": "نيايی $1 {{PLURAL:$1|نتيجه|نتيجيا}}",
        "shown-title": "نشوݩ داٛین $1 {{PLURAL:$1|نتیجٱ|نتیجٱیا}} سی هار بٱلگٱ",
-       "viewprevnext": "ديئن ($1 {{int:pipe-separator}} $2) ($3)",
+       "viewprevnext": "ديین ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''ایچه بلگه ای هئ وه نوم\"[[:$1]]\" که ها د ای ویکی'''",
-       "searchmenu-new": "'''ای بلگه نه راس كو \"[[:$1]]\" د ای  ويكي!'''",
+       "searchmenu-new": "'''اؽ بٱلگٱ ناْ دۏرس كو \"[[:$1]]\" د اؽ ڤیکی!'''",
        "searchprofile-articles": "بٱلگٱيا مؽنونٱ دار",
        "searchprofile-images": "ڤارسگرؽا خلکمن",
        "searchprofile-everything": "همٱ چی",
        "searchprofile-advanced-tooltip": "نوم جايا نوم دؽار بٱگٱرد",
        "search-result-size": "$1 ({{PLURAL:$2|1 کلٱمٱ|$2 کلٱمٱیا}})",
        "search-result-category-size": "{{PLURAL:$1|1 ٱندوم|$1 ٱندومؽا}} ({{PLURAL:$2|1 زؽردٱسٱ|$2 زؽردٱسٱیا}}، {{PLURAL:$3|1 جانیا|$3 جانیایا}}",
-       "search-redirect": "(ڤورگشتن سی $1)",
+       "search-redirect": "(ڤرگٱشتن سی $1)",
        "search-section": "(بهرجا $1)",
        "search-category": "(دسه $1)",
        "search-file-match": "(یکی کردن مینونه جانیا)",
        "search-interwiki-more": "(بیشتر)",
        "search-relatedarticle": "مرتوط",
        "searchrelated": "مرتوط",
-       "searchall": "همٱ",
+       "searchall": "Ù\87Ù±Ù\85Ù±",
        "showingresults": "نمائشت بیشترونه {{PLURAL:$1|'''۱''' نتیجه|'''$1''' نتیجه}} د هار، شرو د شماره'''$2'''.",
        "showingresultsinrange": "نمائشت بیشترونه {{PLURAL:$1|'''۱''' نتیجه|'''$1''' نتیجه}} د هار، شرو د شماره'''$2''' تا شماره '''$3'''.",
-       "search-showingresults": "{{PLURAL:$4|نتیجه یا<strong>$1</strong> د <strong>$3</strong>|نتیجه یا<strong>$1 - $2</strong د <strong>$3</strong>}}",
-       "search-nonefound": "Ù\87Û\8cÚ\98 Ù\86تÛ\8cجÙ\87 Û\8cÛ\8c Ù\88ا Ù¾Û\8c Ø¬Ø³Øª ØªÙ\88 Û\8cÚ©Û\8c Ù\86ئ.",
+       "search-showingresults": "{{PLURAL:$4|نٱتیجٱیا<strong>$1</strong> د <strong>$3</strong>|نٱتیجٱیا<strong>$1 - $2</strong د <strong>$3</strong>}}",
+       "search-nonefound": "Ù\87Û\8cÚ\86 Ù\86تÛ\8cجاÙ\9bÛ\8cؽ Ú¤Ø§ Ù¾Ø§Ù\9bجÛ\8aرÛ\8c ØªÙ\88 Û\8cٱکؽ Ù\86ؽ.",
        "powersearch-legend": "پی جوری پیشکرده",
        "powersearch-ns": "د نوم جايا نوم ديار پی جوری بک:",
        "powersearch-togglelabel": "ڤارئسی کئردئن:",
        "searchdisabled": "مئن جوری د {{SITENAME}} کنشتگر نئ.\nموقتاً می تونیت مئن جوری Google نه بونیت وه کار.\nد ویرتو با که نتیجه یایی که د مئن جوری وا او روشت وه دست میان شایت وه روز نبان.",
        "search-error": "یه گل خطا سی اوسنی که پی جوری می کردیت اتفاق افتائه:$1",
        "preferences": "خوصوٙیات هأنی",
-       "mypreferences": "Ú\86Û\8cا Ù\87Ù±Ù\86Û\8c",
+       "mypreferences": "چیا هنی",
        "prefs-edits": "شومارە ڤیرایئشتیا:",
        "prefsnologintext2": "لطف بکیت بیایت وامین و ترجیحات خوتونه آلشت بئیت.",
        "prefs-skin": "پوس",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|د آخری دیئن}}",
        "enhancedrc-history": "ڤیرگار",
        "recentchanges": "آلشتؽا ایسنی",
-       "recentchanges-legend": "گوزینٱیا آلشتیا ایسناٛنی",
-       "recentchanges-summary": "دو بیشتر آلشتیا تازباو نه د ویکی نه د ای بلگه پیگری کو.",
+       "recentchanges-legend": "گوزینٱیا آلشتؽا ایسنی",
+       "recentchanges-summary": "دۏ بؽشتر آلشتؽا تازباو ناْ د ڤیکی ناْ د اؽ بٱلگٱ پاٛجۊری کو.",
        "recentchanges-noresult": "هیژ آلشتی د درازا دوره دیار بیه وا ای معیاریا یکی نبی.",
        "recentchanges-feed-description": "دو بیشتر آلشتیا تازباو نه د ویکی که ها د هوال حون پیگری کو.",
        "recentchanges-label-newpage": "اؽ ڤیرایش یاٛ بٱلگٱ تازٱ دۏرس کردٱ.",
        "recentchanges-label-minor": "یٱ یاٛ ڤیرایش کوچکٱ",
        "recentchanges-label-bot": "اؽ ڤيرايش ناْ ياٛ بوت ٱنجوم داٛیٱ",
-       "recentchanges-label-unpatrolled": "ای ويرايشت هنی تيه واداشت نبيه",
-       "recentchanges-label-plusminus": "انازه بلگه وه شمار ای بایتیا آلشت کرده.",
-       "recentchanges-legend-heading": "<strong>Ù\85Û\8cراث:</strong>",
+       "recentchanges-label-unpatrolled": "اؽ ڤيرايش هنی تيٱ ڤاداشت ناٛیٱ",
+       "recentchanges-label-plusminus": "ٱندازٱ بٱلگٱ ڤ شماراٛ اؽ بایتؽا آلشت کردٱ.",
+       "recentchanges-legend-heading": "<strong>Ù\85Û\8cرات:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (همچنو باٛینؽت [[ڤیژٱ:بٱلگٱیا تازٱ|نوم گٱ بٱلگٱیا تازٱ]])",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "rcnotefrom": "د هار آلشتیا د $2 هیئن(د بال د $1 نشون دئه بیه)",
-       "rclistfrom": "آلشتیا تازه ایی که وا $3 $2 شرو بیه نشونش بئه",
-       "rcshowhideminor": "Ú¤Û\8cراÛ\8cشتÛ\8cا Ù\81اÙ\9bرٱ کوچک $1",
+       "rclistfrom": "آلشتؽا تازاٛیؽ کاْ ڤا $3 $2 شرۊ بیٱ نشونش باٛیٱ",
+       "rcshowhideminor": "Ú¤Û\8cراÛ\8cشؽا Ù\81رٱ کوچک $1",
        "rcshowhideminor-show": "نشو دئن",
-       "rcshowhideminor-hide": "قام کردن",
+       "rcshowhideminor-hide": "قایم کردن",
        "rcshowhidebots": "$1 روباتؽا یا بوتؽا",
-       "rcshowhidebots-show": "نشۊ دٱئن",
+       "rcshowhidebots-show": "نشوݩ داٛین",
        "rcshowhidebots-hide": "قام کردن",
        "rcshowhideliu": "$1 کاریاریا سٱبت نوم کردٱ",
        "rcshowhideliu-show": "نشۊ دٱئن",
-       "rcshowhideliu-hide": "قام کئردئن",
-       "rcshowhideanons": "کاریار نادیار $1",
+       "rcshowhideliu-hide": "قایم کردن",
+       "rcshowhideanons": "کاریار نادؽار $1",
        "rcshowhideanons-show": "نئشوٙ دأئن",
-       "rcshowhideanons-hide": "قام کردن",
+       "rcshowhideanons-hide": "قایم کردن",
        "rcshowhidepatr": "$1 ویرایشتیا تیه پرس بیه",
        "rcshowhidepatr-show": "نئشوٙ دأئن",
        "rcshowhidepatr-hide": "قام کئردئن",
-       "rcshowhidemine": "Ú¤Û\8cراÛ\8cئشتÛ\8cا Ù\85ئ $1",
+       "rcshowhidemine": "Ú¤Û\8cراÛ\8cشؽا Ù\85اÙ\92 $1",
        "rcshowhidemine-show": "نئشوٙ دأئن",
-       "rcshowhidemine-hide": "قام کردن",
+       "rcshowhidemine-hide": "قایم کردن",
        "rcshowhidecategorization": "جأرغە کاری بألگە $1",
        "rcshowhidecategorization-show": "نئشوٙ دأئن",
        "rcshowhidecategorization-hide": "قام کئردئن",
-       "rclinks": "آخرین آلشتیا $1 د آخرین رۊزیا دیاری بٱک $2",
+       "rclinks": "آخرین آلشتؽا $1 د آخرین رۊزؽا دؽاری بٱک $2",
        "diff": "فٱرق",
        "hist": "ڤیرگار",
-       "hide": "قام کردن",
-       "show": "نشۊ دٱئن",
+       "hide": "قایم کردن",
+       "show": "نشوݩ داٛین",
        "minoreditletter": "م",
        "newpageletter": "ن",
        "boteditletter": "ب",
        "rc-enhanced-expand": "جزيات نشون بيئه",
        "rc-enhanced-hide": "جزياته قام كو",
        "rc-old-title": "ذاتا چی \"$1\" راس بیه",
-       "recentchangeslinked": "آلشتیا تی یٱکی",
+       "recentchangeslinked": "آلشتؽا تاٛ یٱکؽ",
        "recentchangeslinked-feed": "آلشتیا تی یکی",
        "recentchangeslinked-toolbox": "آلشتؽا تاٛ یٱک",
-       "recentchangeslinked-title": "آلشتیا تاٛ یکی د $1",
+       "recentchangeslinked-title": "آلشتؽا تاٛ یٱکؽ د $1",
        "recentchangeslinked-summary": "اؽ نوم بٱلگٱ تازٱ د بٱلگٱیایی کاْ ڤا بٱلگٱیا ڤیژٱ هوم پاٛڤٱن بینٱ آلشت بیٱ(یا سی ٱندومؽا دٱسٱ بٱنی بیٱ)\nبٱلگٱیایی کاْ هان د [[Special:Watchlist|your watchlist]]ۉ گٱپ بینٱ",
-       "recentchangeslinked-page": "نوم بلگٱ:",
-       "recentchangeslinked-to": "آلشتیایی که د بلگه یا هوم پیوند بینه وه جا بلگه دئیه بیه نشو بیه",
+       "recentchangeslinked-page": "Ù\86Ù\88Ù\85 Ø¨Ù±Ù\84Ú¯Ù±:",
+       "recentchangeslinked-to": "آلشتؽایؽ کاْ د بٱلگٱیا هوم پاٛڤٱن بینٱ ڤ جا بٱلگٱ داٛیٱ بیٱ نشوݩ باٛیٱ",
        "recentchanges-page-added-to-category": "[[:$1]]د دأسە ئضاف بی",
        "recentchanges-page-added-to-category-bundled": "[[:$1]] و {{PLURAL:$2|بألگە تأکی|$2 بألگە یا}} د دأسە ئضاف بییئن",
        "recentchanges-page-removed-from-category": "[[:$1]] د دٱسٱ جگا بی",
        "upload-curl-error28": "تموم بیئن مئلت سی سوار کرد",
        "upload-curl-error28-text": "ای دیارگه فره دیر دتو واکنشت نشو دئه.\nلطف بکیت سی یه که دیارگه کنشگتر و ری خطه یه گل وارسی بکیت، اوسه یه گر واستید و هنی تلاش بکیت.\nشایت بیتر با که د گات خلوتری هنی تلاش بکیت.",
        "license": "ليانس دار بيئن",
-       "license-header": "د حال وبال ليسانس دار بيئن",
+       "license-header": "د هال ۉ بال للیسانس دار بیین",
        "nolicense": "هیچی انتخاو نبیه",
        "licenses-edit": "گزینه یا مجوز ویرایشت",
        "license-nopreview": "(پیش سیل د دسرس نئ)",
        "uploadnewversion-linktext": "یه گل نسقه تازه د ای جانیا سوار بکید",
        "shared-repo-from": "د $1",
        "shared-repo": "یه گنجینه هومبئر",
-       "upload-disallowed-here": "شما نمی تونیت ای جانیانه د نو سوار بکیت",
+       "upload-disallowed-here": "شما نمؽ تونؽت اؽ جانؽاناْ د نۊ سڤار بٱکؽت",
        "filerevert": "د سرگرتن سی $1",
        "filerevert-legend": "د سرگرتن جانیا",
        "filerevert-intro": "شما د حال و بار لرسن'''[[Media:$1|$1]]''' وه [$4 نسقه ای که ها د ویرگار$2 ساعت $3] هیئت.",
        "booksources-invalid-isbn": "شازک که دئه بیه معتور نئ؛ وارسی خطایا د گات ؤرداشتن د سرچشمه اولی وه کار گرته بوئه.",
        "specialloguserlabel": "انجومکار:",
        "speciallogtitlelabel": "حاستئنی(داسوٙن یا نوم کاریاری سی کاریار):",
-       "log": "Ù¾Ù\87رستÙ\86Ù\88Ù\85Ù\87 یا",
+       "log": "Ù¾Ù\87رستÙ\86Ù\88Ù\85Ù±یا",
        "all-logs-page": "همه پهرستنومه یا عمومی",
        "alllogstext": "نماشت یه جا همه پهرستنومه یا که هان د{{SITENAME}}.\nمی تونید وا انتخاو نوع پهرستنومه، نوم کاریاری(حساس وه کؤچکی و گپی حرفیا) و بلگه یا آلشت کرده(حساس و گپی و کؤچکی حرنیا) نمایشت نه دیر د ویرتر بکیت.\n\n{{SITENAME}}.",
        "logempty": "او چی ای که شما میهایت د پهرستنومه نیئش.",
        "sp-contributions-newonly": "فقٱت ڤیرایشؽایؽ کاْ هؽن دۏرس کردن بٱلگان نشوݩ باٛیٱ.",
        "sp-contributions-submit": "پاٛ جۊری",
        "whatlinkshere": "کوم هوم پاٛڤٱنؽا هان ایچاْ",
-       "whatlinkshere-title": "بÙ\84Ú¯Ù\87 Ø§Û\8c Ú©Ù\87 Ø¯ $1 Ù\87Ù\88Ù\85 Ù¾Û\8cÙ\88Ù\86د Ø¨Û\8cÙ\87",
-       "whatlinkshere-page": "بلگٱ",
+       "whatlinkshere-title": "بٱÙ\84گاÙ\9bؽ Ú©Ø§Ù\92 Ø¯ $1 Ù\87Ù\88Ù\85 Ù¾Ø§Ù\9bÚ¤Ù±Ù\86 Ø¨Û\8cÙ±",
+       "whatlinkshere-page": "بٱÙ\84Ú¯Ù±",
        "linkshere": "بلگیا نهایی د '''$2''' هوم پیوند بیه",
        "nolinkshere": "هیژ بگله ای د  '''$2''' هوم پیوند نبیه",
        "nolinkshere-ns": "هیچ بلگه ای د نومجا انتخاو بیه وه'''$2''' هوم پیوند ناره.",
        "whatlinkshere-prev": "{{PLURAL:$1|دمایی|دمایی $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|نهایی|نهایی $1}}",
        "whatlinkshere-links": "هوم پیوندیا",
-       "whatlinkshere-hideredirs": "$1 Ú¤Ø§Ø±Ú¯Ø±Ø¯Û\8aنیا",
-       "whatlinkshere-hidetrans": "$1 چٱن نتیجٱیی",
-       "whatlinkshere-hidelinks": "هوم پیڤندیا $1",
+       "whatlinkshere-hideredirs": "$1 Ú¤Ø±Ú¯Ù±Ø±Ø¯Ù\88نیا",
+       "whatlinkshere-hidetrans": "$1 چٱن نتیجاٛیی",
+       "whatlinkshere-hidelinks": "هوم پاٛڤٱنؽا $1",
        "whatlinkshere-hideimages": "جانیا هوم پیۋندیا $1",
-       "whatlinkshere-filters": "فيلتريا",
+       "whatlinkshere-filters": "فيلٛترؽا",
        "autoblockid": "خود نهاگری #$1",
        "block": "منع کارور",
        "unblock": "کاریار نهاگری نبیه",
        "semiprotectedpagemovewarning": "<strong>د ویر داشتویت:</strong> ای بلگه سی یه که فقط کاریاریا ثوت نام کرده تونستون دش ویرایشت بکه ن پر و پیم بیه.\nآخرین پهرستنومه دئه بیه سی سرچشمه هار نها اماییه بیه:",
        "move-over-sharedrepo": "== جانیا هئیش ==\n[[:$1]] ها د یه گل اماییه جا بهربیه. جا وه جاکاری یه گل جانیا وه ای نوم باعث موئه که یه گل جانیا بهربیه باطل با.",
        "file-exists-sharedrepo": "نوم جانیا انتخاو بیه و ایسنی د یه گل اماییه جا بهربیه وه کار گرته بیه.\nلطف بکیت یه گل نوم هنی نه انتخاو بکیت.",
-       "export": "وه صحرا ديئن بلگيا",
+       "export": "ڤ سٱرا داٛین بٱلگٱیا",
        "exporttext": "شما می تونیت نیسسه و ویرگارچه ویرایشت یه بلگه جادیار بیه یا یه گل کوملوس د بلگه یا نه وه حال و بار پوشیه د ایکس ام ال برویت وه در.\nای دونسمنیا نه بوئه د یه گل ویکی هنی که نرم افزار «ویکی وارسگر» نه انجومکاری می که د طریق [[Special:Import|بلگه وامین اوردن]] وامین اورد.\n\nسی وه در دئن بلگه یا، داسون ونونه بیاریت د جعوه هاری(د هر خط فقط یه گل داسون) و مشخص بکیت که آیا نسقه ایسنی بلگه واگرد نسقه یا دمادار و ویرگارچه بلگه نه میهایت، یا تینا نسقه ایسنی بلگه و دونسمنیا آخری ویرایشت نه میهایت .\n\nد حال و بار دوئم، شما می تونیت یه گل هوم پیوند نه وه کار بئیرت چی [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] سی بلگه «[[{{MediaWiki:Mainpage}}]]».",
        "exportall": "وه صحرا ديئن همه بلگيا",
        "exportcuronly": "فقط مینونه دار وانئری ایسنی با،نه همه ویرگار نه",
        "tooltip-ca-talk": "سالفٱ دبارٱ مینونٱ بٱلگٱ.",
        "tooltip-ca-edit": "ڤیرایش ایٛ بٱلگٱ",
        "tooltip-ca-addsection": "د یاٛ بهرجا هنی شرۊ بٱک",
-       "tooltip-ca-viewsource": "ای بلگه پر و پیم بيه.\nشما تونيت سرچمه ش بئوينيت",
+       "tooltip-ca-viewsource": "اؽ بٱلگٱ پر ۉ پیم بیٱ.\nشما مؽ تونؽت سرچشمٱشاْ باٛینؽت",
        "tooltip-ca-history": "دوئرٱ دیین اؽ بٱلگٱ",
        "tooltip-ca-protect": "ای بلگه نه حفاظت بكيد",
        "tooltip-ca-unprotect": "پر و پیم گیری د ای بلگه نه آلشت بکیت",
        "tooltip-t-recentchangeslinked": "آلشتؽا تازٱ مؽن بٱلگٱیایی کاْ د اؽ بٱلگٱ هوم پاٛڤٱن بینٱ",
        "tooltip-feed-rss": "هوال حون آر اس اس سی ای بلگه",
        "tooltip-feed-atom": "هڤال هۊن ٱتومی سی اؽ بٱلگٱ",
-       "tooltip-t-contributions": "یاٛ گاٛل سیائٱ هومیاری سی {{GENDER:$1|ای کاریار}}",
+       "tooltip-t-contributions": "یاٛ سیائٱ هومیاری سی {{GENDER:$1|اؽ کاریار}}",
        "tooltip-t-emailuser": "سی اؽ كاریار ايماٛیل کلٛ كو",
        "tooltip-t-info": "دونسمنیا بیشتر دباره ای بلگه",
        "tooltip-t-upload": "سڤار کردن جانؽایا",
        "tooltip-t-print": "نۏسخٱ پاٛلا بی ینی سی اؽ بٱلگٱ",
        "tooltip-t-permalink": "هوم پاٛڤٱن همیشاٛیی سی دوئارٱ دیین اؽ بٱلگٱ",
        "tooltip-ca-nstab-main": "ديین مؽنونٱ بٱلگٱ",
-       "tooltip-ca-nstab-user": "دياٛن بلگٱ کاریار",
+       "tooltip-ca-nstab-user": "دیین بٱلگٱ کاریار",
        "tooltip-ca-nstab-media": "دیئن بلگه وارسگر",
        "tooltip-ca-nstab-special": "یٱ یاٛ بٱلگٱ ڤیژٱ آ؛ نمۊئٱ ڤیرایشش بٱکؽت",
        "tooltip-ca-nstab-project": "ديئن بلگه پروجه",
        "tooltip-ca-nstab-help": "ديئن بلگه هومیاری",
        "tooltip-ca-nstab-category": "ديین بٱلگٱ دٱسٱ بٱنی",
        "tooltip-minoredit": "یه نه د عنوان حیرده ویرایشت ثوت کو",
-       "tooltip-save": "آلشتیاتۊنٱ اٛمایٱ بٱکیت",
-       "tooltip-preview": "پیش سیل آلشتیاتو،لطف بکیت وه نونه دما د اماییه کاریشو وه کار بیئریت!",
-       "tooltip-diff": "آلشتیا نه که شما د ای متن راس کردیته نشو بیئه",
+       "tooltip-save": "آلشتؽا توناْ آمادٱ بٱکؽت",
+       "tooltip-preview": "پیش ساٛلٛ آلشتؽاتو، لوتف بٱکؽت ڤنوناْ دما د آمایٱ کاریشو ڤ کار باٛیرؽت!",
+       "tooltip-diff": "آلشتؽا ناْ کاْ شما د ای مٱتن دۏرس کردؽتٱ نشوݩ باٛیٱ",
        "tooltip-compareselectedversions": "فرخیا مینجا د تا د دو بار دیاٛن ای بلگٱ نٱ بۉنیت",
        "tooltip-watch": "ای بلگه نه د سیل برگتو اضاف بکید",
        "tooltip-watchlistedit-normal-submit": "ؤرداشتن سرونیا",
        "tooltip-rollback": "\"ڤرگٱشتن\" لٛرسن د هال و بال ٱڤٱل سی اؽ بٱلگٱ سی یٱ کاْ هومیاری نؽایی بؽتر کاری بیٱ ڤا یاٛ پۊرنین.",
        "tooltip-undo": "انجوم نگرتن ای ویرایشت ورگن و همه فرمیا ویرایشت تانه که حالت پیش سیل واکو.یه اجازه میئه سی اضاف کردن یه دلیل د چکسته.",
        "tooltip-preferences-save": "اولويتيا نه ذخيره بكيد",
-       "tooltip-summary": "يه چكسته كؤچك وارد بكيد",
+       "tooltip-summary": "ياٛ چكسٱ کوچک ڤارد بٱکؽت",
        "interlanguage-link-title": "$1-$2",
        "interlanguage-link-title-nonlang": "$1 – $2",
        "anonymous": "ناشناس {{PLURAL:$1|کارور|کاروریا}}  {{سیل جا}}",
        "spam_reverting": "واگردونی وه آخری نسقه ای که هوم پیوندی وه $1 ناره.",
        "spam_blanking": "همه وانئریایی که مینونه دار هوم پیوند $1 هئن، دارن حالی بوئن",
        "spam_deleting": "همه وانئریایی که مینونه دار هوم پیوند $1 هئن، دارن پاکساگری بوئن",
-       "simpleantispam-label": "ۋارسی ری ۋ ری کاری اٛسپم.\nای \"جاگٱ\" نٱ پور نٱکیت!",
+       "simpleantispam-label": "ڤارسی ری ڤ ری کاری اْسپٱم.\nاؽ \"جاگٱ\" ناْ پور نٱکؽت!",
        "pageinfo-title": "دونسمنیا سی \"$1\"",
        "pageinfo-not-current": "د بدبختی،نبوئه که ای دونسمنیا نه سی وانئریا دماتری نهااماییه بکیت.",
        "pageinfo-header-basic": "دونسمنیا پایه",
        "yesterday-at": "دیرو د $1",
        "bad_image_list": "دونسمنديانه وه ای شلگ وارد بكيت:\n\nفقط سرخط يایی که وا * شرو بوئن د وير گرته بوئن. اولی چسب ون مئن هر سرخط، باید چسب ونی وه یک عسگ گن با.\nچسب ونيا نيایی د همو سرخط، وه عنوان چيا استثنادار د وير گرته بوئن",
        "metadata": "رسینٱیا فرٱ گٱپ",
-       "metadata-help": "ای فایل شومل دونسمنیا هنی یه.شایت د دیربین رقم ون یا اسکنری که سی راس کردنشو استفاده بیه،وه ایچه اضاف بیه",
+       "metadata-help": "اؽ فایلٛ شامل دونسمنیا هنی یٱ.شایت د دیر بیین رقٱم ڤٱن یا اسکنری کاْ سی راس کردنشو اْستفادٱ بیٱ، ڤ ایچاْ اْزاف بیٱ",
        "metadata-expand": "نشو دئن جزییات دمادیسگری",
        "metadata-collapse": "قام کردن جزییات دمادیسگری",
        "metadata-fields": "رشتٱیا یا گٱپ دونسمنیا کاْ د اؽ پاٛغوم نومگٱ کاری بینٱ د ڤٱر گرتٱ بٱلگٱ عٱسک کاْ ڤٱختؽ جٱدڤٱل گٱپ دونسمنیا ڤاز مۊئٱ نشوݩ داٛیٱ بۊئٱن.\nچی یا هنی سی یٱ کا پیش فٱرزٱن قایم مۊئٱن.\n*راس کو\n*مودل\n*دم ڤٱخت ٱسل\n*ڤٱخت آشگار\n*اْف اْن شمارٱ\n*ایزو نرخ من سرعت\n*فوکالنس\n*هونٱرمٱن\n*کوپی رایت\n*هالٱت جی پی اْس \n*جی پی اْس گٱپ هالٱت\n*جی پی اْس هٱمٱ هالٱت",
        "hijri-calendar-m2": "صفر",
        "hijri-calendar-m3": "ربیع الاول",
        "hijri-calendar-m4": "رجو",
-       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|چک چنه]])",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|چٱک چنٱ]])",
        "timezone-utc": "UTC",
        "duplicate-defaultsort": "زنهار کلیت پیش فرض جور بیه $2 تازه ای یا کلید پیش فرض جوربیه $1 رد بیه.",
        "duplicate-displaytitle": "<strong>هشدار:</strong> نشو دئن داسون\" $2 \"باعث باطل بیین نشو دئن داسون \" $1 \" موئه.",
        "htmlform-cloner-create": "هنی اضاف بکیت",
        "htmlform-cloner-delete": "ؤرداشتن",
        "htmlform-cloner-required": "سی کمترونه یه گل ارزایشت لازمه",
-       "logentry-delete-delete": "$1 Ø¨Ù\84Ú¯Ù\87 {{GENDER:$2|پاکسا Ø¨Û\8cÙ\87}} $3",
+       "logentry-delete-delete": "$1 Ø¨Ù±Ù\84Ú¯Ù± {{GENDER:$2|پاکسا Ø¨Û\8cÙ±}} $3",
        "logentry-delete-restore": "$1 {{GENDER:$2|}} بلگٱ $3 د نۏ زاٛنٱ بیٱ",
        "logentry-delete-event": "$1 دیاری {{PLURAL:$5|یه گل رخ ون د پهرستنومه|$5 رخ ونیا د پهرستنومه}} نه $3 {{GENDER:$2|آلشتکاری کرد}}: $4",
        "logentry-delete-revision": "$1 دیاری {{PLURAL:$5|یه گل وانئری|$5 وانئریا}} نه $3 {{GENDER:$2|آلشتکاری کرد}}: $4",
index 9d4130a..73ff960 100644 (file)
        "viewsourcetext": "Tu vari apskatīt un nokopēt šīs lapas vikitekstu.",
        "protectedinterface": "Šī lapa satur programmatūras interfeisā lietotu tekstu un ir bloķēta pret izmaiņām, lai pasargātu no bojājumiem.\nLai pievienotu izmaiņas tulkojumā visās ''wiki'', lūdzam izmantot ''MediaWiki'' lokalizēšanas projektu [https://translatewiki.net/ translatewiki.net].",
        "editinginterface": "'''Brīdinājums:''' Tu izmaini lapu, kuras saturu izmanto wiki programmatūras lietotāja saskarnē (''interfeisā''). Šīs lapas izmaiņas ietekmēs lietotāja saskarni citiem lietotājiem. Pēc modificēšanas šīs izmaiņas būtu lietderīgi pievienot arī ''MediaWiki'' lokalizēšanas projektā [https://translatewiki.net/ translatewiki.net].",
+       "translateinterface": "Lai pievienotu vai mainītu tulkojumus visās vikivietnēs, lūdzu izmanto [https://translatewiki.net/ translatewiki.net], MediaWiki lokalizācijas projektus.",
        "namespaceprotected": "Tev nav atļaujas izmainīt lapas, kas atrodas '''$1''' ''namespacē''.",
        "customcssprotected": "Jums nav tiesību rediģēt šo CSS lapu, jo tā satur cita lietotāja personiskos iestatījumus.",
        "customjsprotected": "Jums nav tiesību rediģēt šo JavaScript lapu, jo tā satur cita lietotāja personiskos iestatījumus.",
        "userlogin-resetpassword-link": "Aizmirsi savu paroli?",
        "userlogin-helplink2": "Palīdzība ar pieslēgšanos",
        "userlogin-loggedin": "Tu esi pieslēdzies ar lietotājvārdu {{GENDER:$1|$1}}.\nLai pieslēgtos ar citu lietotājvārdu, aizpildi šo formu.",
+       "userlogin-reauth": "Tev vēlreiz jāpieslēdzas, lai apstiprinātu, ka esi {{GENDER:$1|$1}}.",
        "userlogin-createanother": "Izveidot citu kontu",
        "createacct-emailrequired": "E-pasta adrese",
        "createacct-emailoptional": "E-pasta adrese (nav obligāta)",
        "passwordreset-nocaller": "Jānorāda izsaucējs",
        "passwordreset-nosuchcaller": "Izsaucējs nepastāv: $1",
        "passwordreset-invalidemail": "Nederīga e-pasta adrese",
+       "passwordreset-nodata": "Netika norādīts ne lietotājvārds, ne e-pasta adrese",
        "changeemail": "Mainīt vai noņemt e-pasta adresi",
        "changeemail-header": "Mainīt konta e-pasta adresi",
        "changeemail-oldemail": "Pašreizējā e-pasta adrese:",
        "prefs-help-signature": "Komentāri diskusiju lapās ir jāparaksta, pievienojot simbolu virkni \"<nowiki>~~~~</nowiki>\", kas tiek automātiski aizstāta ar tavu parakstu un parakstīšanās laiku.",
        "badsig": "Kļūdains ''paraksta'' kods; pārbaudi HTML (ja tāds ir lietots).",
        "badsiglength": "Paraksts ir pārāk garš.\nTam ir jābūt īsākam par  $1 {{PLURAL:$1|simboliem|simbolu|simboliem}}.",
-       "yourgender": "Dzimums:",
+       "yourgender": "Kā tevi labāk aprakstīt?",
        "gender-unknown": "Pieminot tevi, ja iespējams, programmatūra izmantos dzimumam neitrālus vārdus",
        "gender-male": "Viņš labo viki lapas",
        "gender-female": "Viņa labo viki lapas",
        "rcfilters-filter-editsbyself-description": "Tevis veiktie labojumi.",
        "rcfilters-filter-editsbyother-label": "Citu labojumi",
        "rcfilters-filter-editsbyother-description": "Visas izmaiņas bez tavējām.",
-       "rcfilters-filtergroup-userExpLevel": "Pieredzes līmenis (tikai reģistrētiem dalībniekiem)",
+       "rcfilters-filtergroup-userExpLevel": "Dalībnieku reģistrācijas statuss un pieredze",
        "rcfilters-filter-user-experience-level-registered-label": "Reģistrēti",
        "rcfilters-filter-user-experience-level-registered-description": "Pieslēgušies redaktori.",
        "rcfilters-filter-user-experience-level-unregistered-label": "Nereģistrēti",
index 778b55e..e53fa1e 100644 (file)
                        "Baloch Khan",
                        "Muhraz",
                        "Ardzun",
-                       "Amjad Khan"
+                       "Amjad Khan",
+                       "Zakiy"
                ]
        },
        "tog-underline": "Garih bawahi tautan:",
        "tog-hideminor": "Suruakan suntiangan ketek di parubahan baru",
        "tog-hidepatrolled": "Suruakan suntiangan nan lah dipatroli di parubahan tabaru",
        "tog-newpageshidepatrolled": "Suruakan laman nan lah dipatroli dari daftar laman baru",
+       "tog-hidecategorization": "Suruakan pankgategorian halaman",
        "tog-extendwatchlist": "Kambangan daftar pantau untuak mancaliak kasado parubahan, indak nan baru se",
-       "tog-usenewrc": "Gunoan tampilan parubahan tingkek lanjuik (paralu JavaScript)",
+       "tog-usenewrc": "Kalompokkan suntiangan di tampilan parubahan paliang baru jo daftar pantauan badasarkan halaman",
        "tog-numberheadings": "Agiah nomor judul sacaro otomatis",
        "tog-editondblclick": "Suntiang laman jo klik duo kali (paralu JavaScript)",
-       "tog-editsectiononrightclick": "Aktipan bagian panyuntiangan jo mangklik kanan pado judul bagian (paralu JavaScript)",
+       "tog-editsectiononrightclick": "Aktipan bagian panyuntiangan jo mangklik kanan pado judul bagian",
        "tog-watchcreations": "Tambahan laman nan den buek jo gambar nan den unggah ka daftar pantau",
        "tog-watchdefault": "Tambahan laman jo gambar nan den suntiang ka daftar pantau",
        "tog-watchmoves": "Tambahan laman jo gambar nan den pindah ka daftar pantau",
        "tog-watchdeletion": "Tambahan laman jo gambar nan den hapuih ka daftar pantau",
+       "tog-watchuploads": "Tambahan bakeh baru nan ambo unggah ka daftar pantauan",
+       "tog-watchrollback": "Tambahan halaman nan pernah ambo baliakan ke dalam daftar pantauan ambo",
        "tog-minordefault": "Tandoi kasado suntiangan sabagai suntiangan ketek sacaro baku",
        "tog-previewontop": "Tunjuakan pratonton sabalun kotak suntiang",
        "tog-previewonfirst": "Tunjuakan pratonton pado suntiangan patamo",
        "tog-shownumberswatching": "Tunjuakan jumlah pamantau",
        "tog-oldsig": "Tando tangan kini:",
        "tog-fancysig": "Jadikan tando tangan manjadi teks wiki (indak jo tautan otomatis)",
-       "tog-uselivepreview": "Gunoan pratonton langsuang (paralu JavaScript) (uji-cubo)",
+       "tog-uselivepreview": "Gunoan pratonton langsuang",
        "tog-forceeditsummary": "Ingekan ambo bilo kotak ikhtisar suntiangan kosong",
        "tog-watchlisthideown": "Suruakan suntiangan surang pado daftar pantau",
        "tog-watchlisthidebots": "Suruakan suntiangan bot pado daftar pantau",
        "tog-watchlisthideminor": "Suruakan suntiangan ketek pado daftar pantau",
        "tog-watchlisthideliu": "Suruakan suntiangan pangguno masuak log pado daftar pantau",
+       "tog-watchlistreloadautomatically": "Muek ulang daftar pantauan sacaro otomatih katiko sabuah sariangan baubah (paralu JavaScript)",
        "tog-watchlisthideanons": "Suruakan suntiangan pangguno anonim pado daftar pantau",
        "tog-watchlisthidepatrolled": "Suruakan suntiangan tapatroli pado daftar pantau",
        "tog-ccmeonemails": "Kiriman Ambo salinan surel nan dikiriman ka urang lain",
index e2abf15..3502c47 100644 (file)
        "recentchanges-page-removed-from-category": "[[:$1]] отстранета од категорија",
        "recentchanges-page-removed-from-category-bundled": "[[:$1]] отстранета од категорија, [[Special:WhatLinksHere/$1|оваа страница е вклучена во рамките на други страници]]",
        "autochange-username": "Автоматски промени на МедијаВики",
-       "upload": "Ð\9fодигаÑ\9aе",
+       "upload": "Ð\9fодигни Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82ека",
        "uploadbtn": "Подигни",
        "reuploaddesc": "Прекини и назад кон образецот за подигање",
        "upload-tryagain": "Поднеси изменет опис на податотеката",
        "feedback-external-bug-report-button": "Поднеси техничка задача",
        "feedback-dialog-title": "Поднеси мислење",
        "feedback-dialog-intro": "Послужете се со едноставниот образец подолу за да го поднесете вашето мислење. Коментарот ќе ви биде додаден на страницата „$1“, заедно со вашето корисничко име.",
-       "feedback-error1": "Грешка: Непрепознаен исход од извршникот",
+       "feedback-error1": "Грешка: Непрепознаен исход од API",
        "feedback-error2": "Грешка: Уредувањето не успеа",
        "feedback-error3": "Грешка: Извршникот не одговара",
        "feedback-error4": "Грешка: Не можам да објавам под дадениот наслов",
index 3bc3856..c9fd357 100644 (file)
        "delete-edit-reasonlist": "ဖျက်ပစ်ရသော အကြောင်းရင်းများကို တည်းဖြတ်ရန်",
        "deleteprotected": "ဤစာမျက်နှာသည် ကာကွယ်ထားသောကြောင့် ဖျက်ပစ်၍မရနိုင်ပါ။",
        "deleting-backlinks-warning": "<strong>သတိပေးချက်။</strong> သင်ဖျက်ပစ်တော့မည့် စာမျက်နှာအား [[Special:WhatLinksHere/{{FULLPAGENAME}}|အခြားစာမျက်နှာများမှ]] ချိတ်ဆက်ထားခြင်း သို့မဟုတ် ထည့်သွင်းထားခြင်း ရှိနေသည်။",
+       "deleting-subpages-warning": "<strong>သတိပေးချက်။</strong> သင်ဖျက်တော့မည့် စာမျက်နှာတွင် [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|စာမျက်နှာခွဲ တစ်ခု|စာမျက်နှာခွဲ $1 ခု|51=စာမျက်နှာခွဲ ၅၀ ကျော်}}]] ရှိနေသည်။",
        "rollback": "နောက်ပြန်ပြင် တည်းဖြတ်မှုများ",
        "rollbacklink": "နောက်ပြန် ပြန်သွားရန်",
        "rollbacklinkcount": "{{PLURAL:$1|တည်းဖြတ်မှု|တည်းဖြတ်မှုများ}} $1 ကို နောက်ပြန်ပြင်ရန်",
index e2a40d9..0333212 100644 (file)
@@ -31,6 +31,8 @@
        "tog-watchdefault": "Совавтомс монь витевть лопатнень ванома лемрисьмезэнь",
        "tog-watchmoves": "Совавтомс монь одов лемдявт лопатнень-керьмазтнэнь ванома лемрисьмезэнь",
        "tog-watchdeletion": "Совавтомс монь нардавт лопатнень-керьмазтнэнь ванома лемрисьмезэнь",
+       "tog-watchuploads": "Поладомс од файлат ваннома лемрисьмезэнь тонгомстост",
+       "tog-watchrollback": "Поладомс ваннома лемрисьмезэнь лопат, конатнень потмост велявтокшнынь мекев",
        "tog-minordefault": "Тешкстамс витевкстнэнь апокшкэкс, бути лиякс апак ёвта",
        "tog-previewontop": "Невтемс сёрмадовксонть васнянь невтевксэнь вальманть витеманьседенть икеле",
        "tog-previewonfirst": "Васнянь невтевкс васенцеде витнемстэ-петнемстэ",
@@ -53,6 +55,7 @@
        "tog-ccmeonemails": "Кучт монень копия е-сёрматнеде, конатнень кучан лия теицянень",
        "tog-diffonly": "Иляк невтне лопапотмоксонть diffs ало",
        "tog-showhiddencats": "Невтемс кекшень категориятнень",
+       "tog-norollbackdiff": "А невтемс явовоманзо лопапотмонть велявтомадо мейле",
        "underline-always": "Свал",
        "underline-never": "Зярдояк",
        "underline-default": "Браузерэнь ушодкс ладсематне",
        "talk": "Кортнема",
        "views": "Ваномкат",
        "toolbox": "Кедьёнкст",
+       "tool-link-emailuser": "Кучомс е-сёрма те {{GENDER:$1|теицянтень}}",
        "imagepage": "Ваномс файлань лопанть",
        "mediawikipage": "Невтемензе сёрма паргонть лопанть",
        "templatepage": "Ванномс лопапарцунонь лопанть",
        "nosuchspecialpage": "Истямо башка лопа арась",
        "nospecialpagetext": "<strong>Лопась, конань вешик, арась.</strong>\n\nВант те лемрисьменть [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Ильведькс",
-       "databaseerror": "Датабазань ильведькс",
-       "databaseerror-textcl": "Датабазань кевкстемасо лиссь ильведевкс.",
+       "databaseerror": "Датаюртсо ильведькс",
+       "databaseerror-text": "Датаюртонь кевкстемасо лиссь ильведевкс.\nТе паряк тень эйстэ мейс программакерькссэ сийне.",
+       "databaseerror-textcl": "Датаюртонь кевкстемасо лиссь ильведевкс.",
        "databaseerror-query": "Вешемась: $1",
        "databaseerror-function": "Функциясь: $1",
        "databaseerror-error": "Ильведькс: $1",
        "laggedslavemode": "Ванок: Кизды, лопасонть материалось таштомсь.",
-       "readonly": "Датабазась панжома экшсэ",
+       "readonly": "Датаюртось панжома экшсэ",
        "enterlockreason": "Сёрмадт мейс сёлгамс эряви, ды ёвтак, зярдо таго арьсят панжови",
-       "missing-article": "Дата юртсто а муеви эрявикс текстэсь, сонзэ лемезэ \"$1\" $2.\n\nСеде сеедьстэ истя лиси, зярдо таштомозь diff эли историянь сюлмавома песь вети нардань лопас.\n\nЛисиндерясь аволь истя, можок муить программа керьксстэнть (тапавкс тарка) сийне.\nПачтта сёрмине теде [[Special:ListUsers/sysop|системань ветийнень]] URL адресэнть тештязь.",
+       "missing-article": "Датаюртсто а муеви эрявикс текстэсь, сонзэ лемезэ \"$1\" $2.\n\nСеде сеедьстэ истя лиси, зярдо таштомозь diff эли историянь сюлмавома песь вети нардазь лопас.\n\nЛисиндерясь аволь истя, можок муить программакерьксстэнть (тапавкс тарка) сийне.\nПачтта сёрмине теде [[Special:ListUsers/sysop|системань ветийнень]] URL адресэнть тештязь.",
        "missingarticle-rev": "(лиякстомтома#: $1)",
        "missingarticle-diff": "(Мейсэ явовить: $1, $2)",
        "internalerror": "Потмоильведькс",
        "virus-scanfailed": "сканнось эзь лисе (код $1)",
        "virus-unknownscanner": "апак содань антивирус:",
        "welcomeuser": "Совак, $1, инеськеть!",
-       "yourname": "Теицянь лем:",
+       "yourname": "Теицянь леметь:",
        "userlogin-yourname": "Совамовал",
-       "userlogin-yourname-ph": "СовавÑ\82Ñ\8bк Ñ\81овамовалоÑ\82",
+       "userlogin-yourname-ph": "СовавÑ\82Ñ\8bк Ñ\82еиÑ\86Ñ\8fнÑ\8c Ð»ÐµÐ¼ÐµÑ\82Ñ\8c",
        "createacct-another-username-ph": "Совавтык совамовалот",
        "yourpassword": "Салава валот:",
        "userlogin-yourpassword": "салававал",
        "timezoneregion-europe": "Эвропа",
        "timezoneregion-indian": "Индиянь иневедь",
        "timezoneregion-pacific": "Сэтьме иневедь",
+       "allowemail": "Меремс лия теицянень кучомс тень е-сёрмат",
        "prefs-searchoptions": "Вешнемс",
        "prefs-namespaces": "Лем потмот",
        "default": "зярдо лиякс апак ёвта",
        "yournick": "Кедень путома:",
        "badsiglength": "Кедень путомат пек кувака.\nЭйсэнзэ иляст уле $1 -до ламо {{PLURAL:$1|тешкст|тешкст}}.",
        "yourgender": "Тонсь кода меревлить эсь прядот?",
-       "gender-unknown": "Ð\90 Ð¼ÐµÑ\80евлинÑ\8c",
+       "gender-unknown": "ТонÑ\82Ñ\8c Ð»Ð°Ð½Ð³Ð° ÐºÐ¾Ñ\80Ñ\82амÑ\81Ñ\82о, Ð¿Ñ\80огÑ\80аммакеÑ\80Ñ\8cкÑ\81Ñ\8dÑ\81Ñ\8c Ð° Ð»ÐµÐ´Ñ\81Ñ\82Ñ\8fÑ\82анзаÑ\82 Ñ\81Ñ\8bменÑ\8c ÐºÐ¾Ñ\80Ñ\8fÑ\81 ÐºÑ\83ва Ð¼Ð°Ñ\88Ñ\82ови",
        "gender-male": "Сон витни-петни викилопатнесэ",
        "gender-female": "Сон витни-петни викилопатнесэ",
        "email": "Е-сёрма",
        "prefs-editor": "Витницязо-петницязо",
        "prefs-preview": "Васнянь неевтезэ",
        "prefs-diffs": "Мейсэ явовить верзиятне",
-       "userrights-lookup-user": "Сови ÐºÑ\83Ñ\80оÑ\82ненÑ\8c Ð²ÐµÑ\82Ñ\8fмоÑ\81Ñ\8c",
+       "userrights-lookup-user": "Ð\9aоÑ\87камÑ\81 Ñ\82еиÑ\86Ñ\8f",
        "userrights-user-editname": "Сёрмадт теицянь лем:",
-       "editusergroup": "Ð\92иÑ\82немÑ\81-пеÑ\82немÑ\81 Ñ\81ови куротнень",
+       "editusergroup": "ТонгомÑ\81 Ñ\82еиÑ\86Ñ\8fкуротнень",
        "saveusergroups": "Ванстомс сови куротнень",
        "userrights-reason": "Тувталось:",
-       "userrights-nodatabase": "«$1» датабазась арась эли сон аволь тескень.",
+       "userrights-nodatabase": "«$1» датаюртось арась эли сон аволь тескень.",
        "userrights-changeable-col": "Курот, конат тонеть полавтовить",
        "userrights-unchangeable-col": "Курот, конат тонеть а полавтовить",
        "group": "Группа:",
-       "group-user": "Совицятне",
+       "group-user": "Теицятне",
        "group-autoconfirmed": "Сынсь кемекстазь сёрмадыцят",
        "group-bot": "Ботт",
        "group-sysop": "Администраторт",
        "group-bureaucrat": "Бюрократт",
        "group-all": "(весе)",
        "group-user-member": "{{GENDER:$1|теиця}}",
-       "group-autoconfirmed-member": "\n{{GENDER:$1|Ñ\81онÑ\81Ñ\8c ÐºÐµÐ¼ÐµÐºÑ\81Ñ\82авиÑ\86Ñ\8f теиця}}",
+       "group-autoconfirmed-member": "\n{{GENDER:$1|Ñ\81онÑ\81Ñ\8c ÐºÐµÐ¼ÐµÐºÑ\81Ñ\82азÑ\8c теиця}}",
        "group-bot-member": "{{GENDER:$1|Бот}}",
        "group-sysop-member": "{{GENDER:$1|Администратор}}",
        "group-bureaucrat-member": "\n{{GENDER:$1|Бюрократ}}",
-       "grouppage-user": "{{ns:project}}:Совицятне",
+       "grouppage-user": "{{ns:project}}:Теицятне",
+       "grouppage-autoconfirmed": "{{ns:project}}:Сынсь кемекстазь теицят",
        "grouppage-bot": "{{ns:project}}:Ботт",
        "grouppage-sysop": "{{ns:project}}:Администраторт",
        "grouppage-bureaucrat": "{{ns:project}}:Бюрократт",
        "right-edit": "Витнемс-петнемс лопат",
        "right-createpage": "Теемс-шкамс лопат (аволь кортнема лопат)",
        "right-createtalk": "Теемс-шкамс кортнема лопат",
-       "right-createaccount": "Теемс-шкамс совицянь од таркат",
+       "right-createaccount": "Теемс-шкамс од совамо таркат",
        "right-minoredit": "Тешкстамс витнематнень-петнематнень а покшкынекс",
        "right-move": "Ютавтомс лопат лияв",
        "right-move-subpages": "Печтевтемс лопатнень алкс лопанек",
        "right-patrol": "Тешкстамс лиянь витнематнень-петнематнень лувонь кирдиеньсекс",
        "right-mergehistory": "Вейсэндямс лопатнень юрост-путовксост",
        "right-userrights": "Витнемс-петнемс совицянь весе видечитнень",
-       "right-siteadmin": "Датабазань сёлгомо ды панжомо",
+       "right-siteadmin": "Сёлгомс ды панжомс датаюртонть",
+       "grant-createaccount": "Шкамс совамо таркат",
+       "grant-createeditmovepage": "Шкамс, витнемс-петнемс ды печтевтемс лопат",
+       "grant-editmywatchlist": "Витнемс-петнемс ваннома лемрисьменть",
+       "grant-rollback": "Велявтомс мекев лопатнес полавтоматнень",
+       "grant-uploadfile": "Тонгомс од файлат",
+       "grant-viewmywatchlist": "Ваномс ваннома лемрисьменть",
        "newuserlogpage": "Теицянь шкамодо-теемадо конёв",
        "newuserlogpagetext": "Те теицянь шкавксто журнал",
        "rightslog": "Уськетеицянть видечинть кемекстома",
        "action-mergehistory": "вейсэндямс те лопанть юронзо-путовксонзо",
        "action-userrights": "витнемс-петнемс совицянь весе видечитнень",
        "action-userrights-interwiki": "витнемс-петнемс лия викитнесэ теицянь видечитнень",
-       "action-siteadmin": "Сёлгомс эли панжомс датабазанть",
+       "action-siteadmin": "Сёлгомс эли панжомс датаюртонть",
        "action-sendemail": "кучомс е-сёрмат",
-       "action-deletechangetags": "нардамс тэгтнень датабазасто",
+       "action-deletechangetags": "нардамс тэгтнень датаюртстонть",
        "nchanges": "$1 {{PLURAL:$1|полавтнема|полавтнемат}}",
        "enhancedrc-history": "путовксонзо-юронзо",
        "recentchanges": "Чиень полавтнемат-лиякстомтомат",
        "empty-file": "Тонь максовт файлась чаво.",
        "filename-tooshort": "Файлань лементь а саты кувалмозо.",
        "unknown-error": "А содавикс манявкс лиссь.",
-       "file-thumbnail-no": "Файланть лемезэ ушодови  <strong>$1</strong>.\nСонсь маряви вишкалгавтозь фотокуво, покшолмазо ''(кенжешка)''.\nУлиндеряй файланть покш верзиязо, йовкстыка сонзэ  - арась, полавтыка тетень лемензэ.",
+       "file-thumbnail-no": "Файланть лемезэ ушодови  <strong>$1</strong>.\nСонсь маряви вишкалгавтозь фотокуво, покшолмазо ''(кенжешка)''.\nУлиндеряй файланть покш верзиязо, тонгика сонзэ  - арась, полавтыка тетень лемензэ.",
        "file-exists-duplicate": "Те кавонзавкс файла вана {{PLURAL:$1|те файланть|неть файлатнень}} эйстэ:",
        "uploadwarning": "Совавтомадо кардамонь пачтямо",
        "savefile": "Ванстомс файланть",
        "destfilename": "Теевиця файланть лемезэ",
        "upload-maxfilesize": "Файлань покшолмазо иляссо юта: $1",
        "upload-description": "Файланть йовтамозо",
-       "upload-options": "Ð\99овкÑ\81Ñ\82амонь параметрат",
+       "upload-options": "Тонгомань параметрат",
        "watchthisupload": "Ваномс те лопанть мельга",
        "upload-proto-error": "Аволь истямо протокол",
        "upload-file-error": "Потмонь ильведькс",
        "sharedupload": "Те файлась саезь \"$1\" файлань пусмосто, сон нолдави тевс лия проектсэяк.",
        "sharedupload-desc-here": "Те файлась сась истямо $1 таркасто, паряк сон нолдави тевс лия проектсэ.\nКувалманзо сёрмадовксось [$2 файладонть ёвтнема лопазо] невтезь ало.",
        "filepage-nofile": "Истямо лем марто файла арась.",
-       "uploadnewversion-linktext": "Ð\99овкÑ\81Ñ\82ак од версия те файластонть",
+       "uploadnewversion-linktext": "ТонгÑ\82 од версия те файластонть",
        "shared-repo-from": "вана теньстэ $1",
        "shared-repo": "вейсэнь ванстома тарка",
        "upload-disallowed-here": "Те файланть лангс од а сёрмадови.",
        "statistics-header-hooks": "Лия статистика",
        "statistics-articles": "Потмо марто лопат",
        "statistics-pages": "Лопат",
-       "statistics-files": "Ð\99овкÑ\81Ñ\82ань файлат",
+       "statistics-files": "Тонгозь файлат",
        "statistics-users-active": "Чистэ лисийть-совийть",
        "doubleredirects": "Кавксть ютавтозь",
        "double-redirect-fixer": "Печтевтемс витнема-петнема пель",
        "deletereasonotherlist": "Лия тувтал",
        "deletereason-dropdown": "*Нардамонь сех вастневиця тувталтнэ\n** Теицянть вешемазо\n** Теицянь видечинть коламозо\n** Вандализма",
        "delete-edit-reasonlist": "Витнемс-петнемс нардамонь тувталтнэнь",
-       "rollback": "Ð\9aевеÑ\80демÑ\81 Ð²Ð¸Ñ\82немаÑ\82ненÑ\8c-пеÑ\82немаÑ\82ненÑ\8c Ð¼ÐµÐºÐµÐ²",
+       "rollback": "Ð\92елÑ\8fвÑ\82омÑ\81 Ð¼ÐµÐºÐµÐ² Ð²Ð¸Ñ\82немаÑ\82ненÑ\8c-пеÑ\82немаÑ\82ненÑ\8c",
        "rollbacklink": "кевердемс",
-       "rollbackfailed": "Ð\9cекев ÐºÐµÐ²ÐµÑ\80демась эзь лисе",
+       "rollbackfailed": "Ð\9cекев Ð²ÐµÐ»Ñ\8fвÑ\82омась эзь лисе",
        "rollback-missingrevision": "Ревизиядатась а тонгови.",
        "protectlogpage": "Ванстомань совамо-кемекстамо",
        "protectedarticle": "ванстозь \"[[$1]]\"",
        "block-log-flags-noemail": "е-сёрма озавтозь саймес",
        "block-log-flags-hiddenname": "лисиенть-совиенть лемезэ кекшезь",
        "ipb_already_blocked": "\"$1\" уш саймас саезь",
-       "lockdb": "Сёлгомс датабазанть",
-       "unlockdb": "Панжомс датабазанть",
-       "lockconfirm": "Истя, ули мелем сёлгамс датабазанть.",
-       "unlockconfirm": "Истя, ули мелем панжомс датабазанть.",
-       "lockbtn": "Сёлгамс датабазанть",
-       "unlockbtn": "Панжомс датабазанть",
-       "lockdbsuccesssub": "Теветь лиссь, датабазась сёлговсь",
-       "unlockdbsuccesssub": "Датабазась сёлгозель, ней таго панжадо",
-       "databaselocked": "Датабазась уш сёлгозь.",
-       "databasenotlocked": "Датабазась апак сёлго.",
+       "lockdb": "Сёлгомс датаюртонть",
+       "unlockdb": "Панжомс датаюртонть",
+       "lockconfirm": "Истя, ули мелем сёлгамс датаюртонть.",
+       "unlockconfirm": "Истя, ули мелем панжомс датаюртонть.",
+       "lockbtn": "Сёлгамс датаюртонть",
+       "unlockbtn": "Панжомс датаюртонть",
+       "lockdbsuccesssub": "Теветь лиссь, датаюртось сёлговсь",
+       "unlockdbsuccesssub": "Датаюртось сёлгозель, ней таго панжадо",
+       "databaselocked": "Датаюртось уш сёлгозь.",
+       "databasenotlocked": "Датаюртось апак сёлго.",
        "move-page": "Печтевтемс $1 лия таркав",
        "move-page-legend": "Печтевтемс лопанть",
        "movepagetext": "Ало максозь лувонть тевс нолдазь, одс лемдят лопа, ве шкасто печтевтят од таркас сонзэ лиякстомтома юронзо-журналонзо.\nИкелень лемезэ тееви печтевтема лопакс, кона ютавты лисийть-совийть од лементень.\nНевтевкстнэ икелень лементь лангс а кармить лиякстомтовомо (инеськеть, вант улить - арасть [[Special:DoubleRedirects|кавтонь кирдань]] ды [[Special:BrokenRedirects|сезень печтевтемат]]).\nЭсеть лангсо вана невтевкстнэ невтест сев, ков эряви.\n\nМель явт, улиндеряй анок лопа од лементь таркасо, лопась  '''а печтевтеви'''. Печтевтеви ансяк сестэ, зярдо лопась чаво эли ашти певтевтема лопакс, конань арась витнемань-петнемань икелькс умазо. Лиякс меремга, маштови одов лемдемс лопа икелень лемсэнзэ, зярдо теят ильведевкс; уликс лия лопа а нардави.\n\n'''ВАНОК!'''\nОдс лемдямось тусы покш ды пек апак учонь полавтовомат лопатненень, конатнес ''весеменень пек содавикст''.\nИнеськеть, поладомадо икеле васня вант, чарькодят - чарькодят козонь те тевесь вети.",
        "importcantopen": "Совавтозь файлась эзь панжово",
        "importbadinterwiki": "Амаштовикс интервики сюлмавома пе",
        "importsuccess": "Совавтомась прядовсь!",
-       "importnofile": "Кодамояк совавтома файла эзь йовкставо.",
+       "importnofile": "Кодамояк совавтома файла эзь тонгово.",
        "import-noarticle": "Совавтомс лопат арасть!",
        "import-upload": "Ёвкстамс XML датанть",
        "importlogpage": "Импортонть журналось",
        "tooltip-feed-atom": "Атом лезкс те лопантень",
        "tooltip-t-contributions": "Невтть мезе {{GENDER:$1|те теицясь}} полавтсь",
        "tooltip-t-emailuser": "Кучомс е-сёрма {{GENDER:$1|те теицянтень}}",
-       "tooltip-t-upload": "Ð\99овкÑ\81Ñ\82амс файлат",
+       "tooltip-t-upload": "Тонгомс файлат",
        "tooltip-t-specialpages": "Башка тевень лопатне мельга-мельцек",
        "tooltip-t-print": "Лопанть конёв лангс нолдавома версиязо",
        "tooltip-t-permalink": "Свал шкань сюлмавома пе лопань те верзиянтень",
        "tooltip-diff": "Невтемс мейсэ лиякстомтыть текстэнть.",
        "tooltip-compareselectedversions": "Вант явовкст кавто саезь версиятнень те лопанть.",
        "tooltip-watch": "Топавтомс те лопанть тынк ваномалопаньте",
-       "tooltip-upload": "Ушодомс йовкстамонть",
+       "tooltip-upload": "Ушодомс тонгоманть",
        "tooltip-rollback": "\"Мекев кевердема\" повнэнть весть лепштямось велявтсынзе те лопасонть меельцекс теезь витнематнень-петнематнень",
        "tooltip-undo": "\"Велявтомс мекев\" велявтсы витнемань-петнемань тевенть ды панжсы васнянь невтемань формасо.\nСонзэ вельде маштови поладомс полавтомадо тувтал.",
        "tooltip-preferences-save": "Ванстомс эсень аравтоматнень",
        "patrol-log-page": "Ванстнемадо конёв",
        "deletedrevision": "Нардань ташто лиякстомтома $1",
        "filedeleteerror-short": "\"$1\" керьмазонть нардамсто лиссь ильведевкс",
+       "filedelete-old-unregistered": "Кочказь файланть \"$1\" ревизиязо датаюртсо арась.",
        "previousdiff": "← Седе икелень верзиязо",
        "nextdiff": "Од верзиязо →",
        "thumbsize": "Кенжешканть покшолмазо:",
        "intentionallyblankpage": "Те лопась арьсезь-содазь чавосто кадозь",
        "tag-filter": "[[Special:Tags|Tag]] сувтемесь:",
        "tag-filter-submit": "Сувтемень пачк нолдамс",
+       "tag-mw-rollback": "Мекев велявтома",
        "tags-active-yes": "Истя",
        "tags-active-no": "Аволь",
+       "tags-source-extension": "Программакерькссэ вешема",
        "tags-edit": "витнемс-петнемс",
        "tags-create-submit": "Шкамс",
        "compare-page1": "Лопа 1",
        "duration-centuries": "$1 {{PLURAL:$1|пинге|пингеть}}",
        "duration-millennia": "$1 {{PLURAL:$1|тёжтьие|тёжтьиеть}}",
        "expand_templates_preview": "Васнянь неевтезэ",
-       "pagelang-db-failed": "Датабазантень эзь полавтово лопанть келезэ.",
+       "pagelang-db-failed": "Датаюртонтень эзь полавтово лопанть келезэ.",
        "mediastatistics-header-audio": "Аудио",
        "mediastatistics-header-video": "Видеот",
        "special-characters-group-latin": "Латиница",
index a787e6b..bcec234 100644 (file)
        "prefs-changesrc": "Endringer vist",
        "prefs-changeswatchlist": "Endringer vist",
        "prefs-pageswatchlist": "Overvåkede sider",
-       "prefs-tokenwatchlist": "Merke",
+       "prefs-tokenwatchlist": "Nøkkel",
        "prefs-diffs": "Forskjeller",
        "prefs-help-prefershttps": "Denne preferansen vil virke etter neste innlogging.",
        "prefswarning-warning": "Du har gjort endringer i dine innstillinger som ikke er lagret ennå.\nDersom du forlater denne siden utenk å klikke på \"$1\" blir ikke innstillingene dine oppdatert.",
        "blocklist-nousertalk": "kan ikke redigere sin egen diskusjonsside",
        "blocklist-editing": "redigering",
        "blocklist-editing-sitewide": "redigering (hele nettstedetttttttttt)",
+       "blocklist-editing-page": "sider",
+       "blocklist-editing-ns": "navnerom",
        "ipblocklist-empty": "Blokkeringslisten er tom.",
        "ipblocklist-no-results": "Den angitte IP-adressen eller brukeren er ikke blokkert.",
        "blocklink": "blokker",
        "ipb_expiry_old": "Utløpstiden har allerede vært.",
        "ipb_expiry_temp": "For å skjule brukernavnet må blokkeringen være permanent.",
        "ipb_hide_invalid": "Denne kontoen kan ikke skjules; den har mer enn {{PLURAL:$1|én redigering|$1 redigeringer}}.",
+       "ipb_hide_partial": "Blokkeringer med skjult brukernavn må gjelde hele nettstedet.",
        "ipb_already_blocked": "«$1» er allerede blokkert",
        "ipb-needreblock": "$1 er blokkert fra før. Vil du endre innstillingene?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Annen blokkering|Andre blokkeringer}}",
        "logentry-block-block": "$1 {{GENDER:$2|blokkerte}} {{GENDER:$4|$3}} med en utløpstid på $5 $6",
        "logentry-block-unblock": "$1 {{GENDER:$2|opphevet blokkeringen av}} {{GENDER:$4|$3}}",
        "logentry-block-reblock": "$1 {{GENDER:$2|endret}} blokkeringsinnstillingen av {{GENDER:$4|$3}} med en utløpstid på $5 $6",
-       "logentry-partialblock-block": "$1 {{GENDER:$2|blokkerte}} {{GENDER:$4|$3}} fra å redigere {{PLURAL:$8|siden|sidene}} $7 med en utløpstid på $5 $6",
-       "logentry-partialblock-reblock": "$1 {{GENDER:$2|endret}} blokkeringsinnstillingene for {{GENDER:$4|$3}} og forhindret redigeringen av {{PLURAL:$8|siden|sidene}} $7 med en utløpstid på $5 $6",
+       "logentry-partialblock-block-page": "{{PLURAL:$1|siden|sidene}} $2",
+       "logentry-partialblock-block-ns": "{{PLURAL:$1|navnerommet|navnerommene}} $2",
+       "logentry-partialblock-block": "$1 {{GENDER:$2|blokkerte}} {{GENDER:$4|$3}} fra å redigere $7 med en utløpstid på $5 $6",
+       "logentry-partialblock-reblock": "$1 {{GENDER:$2|endret}} blokkeringsinnstillingene for {{GENDER:$4|$3}} og forhindret redigeringen av $7 med en utløpstid på $5 $6",
        "logentry-non-editing-block-block": "$1 {{GENDER:$2|blokkerte}} {{GENDER:$4|$3}} fra visse handlinger som ikke er redigering med en utløpstid på $5 $6",
        "logentry-non-editing-block-reblock": "$1 {{GENDER:$2|endret}} blokkeringsinnstillingene for {{GENDER:$4|$3}} for visse handlinger som ikke er redigering med en utløpstid på $5 $6",
        "logentry-suppress-block": "$1 {{GENDER:$2|blokkerte}} {{GENDER:$4|$3}} med en utløpstid på $5 $6",
index a98909e..ecd9c70 100644 (file)
@@ -33,7 +33,8 @@
                        "ديفيد",
                        "Haribanshi",
                        "Parbat subedi",
-                       "पर्वत सुबेदी"
+                       "पर्वत सुबेदी",
+                       "हिमाल सुबेदी"
                ]
        },
        "tog-underline": "रेखाङ्कित लिङ्क:",
        "authmanager-email-label": "ईमेल",
        "authmanager-email-help": "इमेल ठेगाना",
        "authprovider-resetpass-skip-label": "छोड्नुहोस्",
-       "edit-error-short": "त्रुटि: $1"
+       "edit-error-short": "त्रुटि: $1",
+       "passwordpolicies": "पासवोर्ड नितिहरू"
 }
index a57e93f..592f33b 100644 (file)
        "returnto": "Attende til $1.",
        "tagline": "Frå {{SITENAME}}",
        "help": "Hjelp",
+       "help-mediawiki": "Hjelp om MediaWiki",
        "search": "Søk",
        "search-ignored-headings": "#<!-- la denne lina vere som ho er --> <pre>\n# Overskrifter som skal ignorerast av søk.\n# Endringar til denne trer i kraft så snart sida med overskrifta blir indeksert.\n# Du kan tvinge gjenindeksering av sida ved å gjere ein null-redigering.\n# Syntaksen er som fylgjer:\n# * Alt frå eit «#»-teikn til slutten av lina er ein kommentar.\n# * Kvar ikkje-blank line er den eksakte tittelen som skal ignorerast, det vert òg skilt mellom store og små bokstavar\nLitteratur\nBakgrunnsstoff\nKjelder\nReferansar\n#</pre> <!-- la denne line vere som ho er -->",
        "searchbutton": "Søk",
        "ns-specialprotected": "Sider i {{ns:special}}-namnerommet kan ikkje endrast.",
        "titleprotected": "Denne sidetittelen er verna mot oppretting av [[User:$1|$1]].\nGrunnen som er gjeven er: <em>$2</em>.",
        "filereadonlyerror": "Kan ikkje endra fila «$1» av di filsamlinga «$2» er skriveverna.\n\nAdministratoren som låste filsamlinga oppgav den fylgjande årsaka: «$3».",
+       "invalidtitle": "Ugyldig tittel",
        "invalidtitle-knownnamespace": "Ugyldig tittel med namnerommet «$2» og teksten «$3»",
        "invalidtitle-unknownnamespace": "Ugyldig tittel med ukjend namneromstal $1 og teksten «$2»",
        "exception-nologin": "Ikkje innlogga",
        "changepassword-success": "Passordet ditt er no endra!",
        "changepassword-throttled": "Du har gjort for mange nylege innloggingsforsøk.\nVer god å venta $1 før du prøver igjen.",
        "botpasswords": "Botpassord",
+       "botpasswords-label-create": "Opprett",
+       "botpasswords-label-update": "Oppdater",
+       "botpasswords-label-cancel": "Bryt av",
+       "botpasswords-label-delete": "Slett",
        "resetpass_forbidden": "Passord kan ikkje endrast",
        "resetpass-no-info": "Du må vera innlogga for å få direktetilgang til denne sida.",
        "resetpass-submit-loggedin": "Endra passord",
index 37a78dd..8c49771 100644 (file)
        "enterlockreason": "ਤਾਲਾ-ਬੰਦੀ ਲਈ ਕਾਰਨ ਦਾਖ਼ਲ ਕਰੋ, ਨਾਲ਼ ਹੀ ਤਾਲਾ-ਬੰਦੀ ਦੇ ਰਿਲੀਜ਼ ਹੋਣ ਦਾ ਅੰਦਾਜ਼ਨ ਵਕਤ",
        "readonlytext": "ਡੈਟਾਬੇਸ ਨੂੰ ਇਸ ਵੇਲ਼ੇ ਤਾਲਾ ਲੱਗਾ ਹੋਇਆ ਹੈ, ਸ਼ਾਇਦ ਆਮ ਰੱਖ-ਰਖਾਵ ਲਈ, ਇਸਤੋਂ ਬਾਅਦ ਇਹ ਆਮ ਵਾਂਗ ਉਪਲੱਬਧ ਹੋਵੇਗਾ।\nਜਿਸ ਪ੍ਰਬੰਧਕ ਨੇ ਇਸਨੂੰ ਤਾਲਾ ਲਾਇਆ ਹੈ ਉਸਦਾ ਕਹਿਣਾ ਹੈ ਕਿ: $1",
        "missing-article": "ਡਾਟਾਬੇਸ ਨੂੰ ''$1'' $2 ਨਾਮ ਦਾ ਕੋਈ ਸਫ਼ਾ ਨਹੀਂ ਮਿਲਿਆ।\nਆਮ ਤੌਰ ਤੇ ਹਟਾਏ ਜਾ ਚੁੱਕੇ ਸਫ਼ੇ ਦੀ ਅਤੀਤ ਕੜੀ ਦੀ ਵਰਤੋਂ ਕਰਨ ਨਾਲ ਇੰਝ ਹੁੰਦਾ ਹੈ।\nਜੇ ਇਹ ਗੱਲ ਨਹੀਂ ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਤੁਹਾਨੂੰ ਸਾਫ਼ਟਵੇਅਰ ਵਿਚ ਖਾਮੀ ਮਿਲ ਗਈ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਸਫ਼ੇ ਦੇ ਪਤੇ ਸਮੇਤ [[Special:ListUsers/sysop|ਪ੍ਰਸ਼ਾਸਕ]] ਨੂੰ ਇਤਲਾਹ ਦਿਓ।",
-       "missingarticle-rev": "(ਰà©\80ਵਿà¨\9c਼ਨ#: $1)",
+       "missingarticle-rev": "(ਦà©\81ਹਰਾà¨\85#: $1)",
        "missingarticle-diff": "(ਅੰਤਰ: $1, $2)",
        "readonly_lag": "ਜਦੌਂ ਤਕ ਅਧੀਨ ਡੇਟਾਬੇਸ ਸਰਵਰ ਸੁਤੰਤਰ ਡੈਟਾਬੇਸ ਸਰਵਰ ਦੀ ਪਕੜ ਵਿਚ ਨਹੀਂ ਆ ਜਾਂਦੇ ਡੈਟਾਬੇਸ ਸਵੈ ਜਕੜਿਆ ਗਿਆ ਹੈ।",
        "internalerror": "ਅੰਦਰੂਨੀ ਗ਼ਲਤੀ",
        "userlogin-yourname": "ਵਰਤੋਂਕਾਰ ਨਾਂ",
        "userlogin-yourname-ph": "ਆਪਣਾ ਵਰਤੋਂਕਾਰ-ਨਾਂ ਭਰੋ",
        "createacct-another-username-ph": "ਵਰਤੋਂਕਾਰ-ਨਾਂ ਭਰੋ",
-       "yourpassword": "ਪਾਸਵਰਡ:",
+       "yourpassword": "ਲੰà¨\98-ਸ਼ਬਦ:",
        "userlogin-yourpassword": "ਲੰਘ-ਸ਼ਬਦ",
-       "userlogin-yourpassword-ph": "à¨\86ਪਣਾ à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨¦à¨¿à¨\89",
-       "createacct-yourpassword-ph": "ਪਾਸਵਰਡ à¨¦à¨¿à¨\89",
-       "yourpasswordagain": "ਪਾਸਵਰਡ à¨®à©\81à©\9c ਲਿਖੋ:",
-       "createacct-yourpasswordagain": "ਪਾਸਵਰਡ ਪੁਸ਼ਟੀ",
-       "createacct-yourpasswordagain-ph": "ਪਾਸਵਰਡ à¨«à©\87ਰ à¨¦à¨¿à¨\89",
+       "userlogin-yourpassword-ph": "à¨\86ਪਣਾ à¨²à©°à¨\98-ਸ਼ਬਦ à¨¦à¨¾à¨\96ਲ à¨\95ਰà©\8b",
+       "createacct-yourpassword-ph": "à¨\87ੱà¨\95 à¨²à©°à¨\98-ਸ਼ਬਦ à¨¦à¨¾à¨\96ਲ à¨\95ਰà©\8b",
+       "yourpasswordagain": "ਲੰà¨\98-ਸ਼ਬਦ à¨«à©\87ਰ ਲਿਖੋ:",
+       "createacct-yourpasswordagain": "ਲੰà¨\98-ਸ਼ਬਦ ਪੁਸ਼ਟੀ",
+       "createacct-yourpasswordagain-ph": "ਲੰà¨\98-ਸ਼ਬਦ à¨«à©\87ਰ à¨¦à¨¾à¨\96ਲ à¨\95ਰà©\8b",
        "userlogin-remembermypassword": "ਮੈਨੂੰ ਲਾਗਇਨ ਰੱਖੋ",
        "userlogin-signwithsecure": "ਸੁਰੱਖਿਅਤ ਕੁਨੈਕਸ਼ਨ ਰੱਖੋ",
        "cannotcreateaccount-title": "ਖਾਤੇ ਨਹੀਂ ਬਣ ਸਕੇ",
        "yourdomainname": "ਤੁਹਾਡਾ ਡੋਮੇਨ:",
-       "password-change-forbidden": "à¨\87ਸ à¨µà¨¿à¨\95à©\80 à¨¤à©\87 à¨¤à©\81ਸà©\80à¨\82 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ ਨਹੀਂ ਬਦਲ ਸਕਦੇ।",
+       "password-change-forbidden": "à¨\87ਸ à¨µà¨¿à¨\95à©\80 à¨\89ੱਤà©\87 à¨¤à©\81ਸà©\80à¨\82 à¨²à©°à¨\98-ਸ਼ਬਦ ਨਹੀਂ ਬਦਲ ਸਕਦੇ।",
        "externaldberror": "ਜਾਂ ਤਾਂ ਪ੍ਰਮਾਣਕੀ ਡਾਟਾਬੇਸ ਦੋਸ਼ ਆਇਆ ਹੈ ਜਾਂ ਤੁਹਾਨੂੰ ਆਪਣੇ ਬਾਹਰੀ ਖਾਤੇ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।",
        "login": "ਦਾਖਲ",
        "login-security": "ਆਪਣੀ ਪਛਾਣ ਦੀ ਪੜਤਾਲ ਕਰਵਾਉ",
        "userlogin-noaccount": "ਖਾਤਾ ਨਹੀਂ ਹੈ?",
        "userlogin-joinproject": "{{SITENAME}} ਦਾ ਹਿੱਸਾ ਬਣੋ",
        "createaccount": "ਖਾਤਾ ਬਣਾਓ",
-       "userlogin-resetpassword-link": "à¨\86ਪਣਾ à¨ªà¨¾à¨¸à¨µà¨°à¨¡ ਭੁੱਲ ਗਏ ਹੋ?",
+       "userlogin-resetpassword-link": "à¨\86ਪਣਾ à¨²à©°à¨\98-ਸ਼ਬਦ ਭੁੱਲ ਗਏ ਹੋ?",
        "userlogin-helplink2": "ਦਾਖ਼ਲ ਹੋਣ ਵਿਚ ਮਦਦ",
        "userlogin-loggedin": "ਤੁਸੀਂ ਪਹਿਲੋਂ ਹੀ {{GENDER:$1|$1}} ਵਜੋਂ ਦਾਖ਼ਲ ਹੋ ਚੁੱਕੇ ਹੋਂ।\nਕਿਸੇ ਹੋਰ ਵਰਤੋਂਕਾਰ ਵਜੋਂ ਦਾਖ਼ਲ ਹੋਣ ਵਾਸਤੇ ਹੇਠ ਦਿੱਤਾ ਫਾਰਮ ਭਰੋ।",
        "userlogin-createanother": "ਹੋਰ ਖਾਤਾ ਬਣਾਓ",
        "createacct-emailoptional": "ਈਮੇਲ ਪਤਾ (ਚੋਣਵਾਂ)",
        "createacct-email-ph": "ਆਪਣਾ ਈਮੇਲ ਪਤਾ ਦਿਉ",
        "createacct-another-email-ph": "ਆਪਣਾ ਈਮੇਲ ਐਡਰੈਸ ਦਿਓ",
-       "createaccountmail": "à¨\86ਰà¨\9c਼à©\80 à¨°à¨²à¨¼à¨µà¨¾à¨\82 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨µà¨°à¨¤à©\8bà¨\82 à¨\85ਤà©\87 à¨\87ਸ à¨¨à©\82à©° à¨\96ਾਸ à¨\88ਮà©\87ਲ à¨ªà¨¤à©\87 à¨\89ੱਤà©\87 à¨­à©\87à¨\9c à¨¦à¨¿à¨\89",
+       "createaccountmail": "à¨\86ਰà¨\9c਼à©\80 à¨°à¨²à¨¼à¨µà¨¾à¨\82 à¨²à©°à¨\98-ਸ਼ਬਦ à¨µà¨°à¨¤à©\8bà¨\82 à¨\85ਤà©\87 à¨\87ਸ à¨¨à©\82à©° à¨\96਼ਾਸ à¨\88ਮà©\87ਲ à¨ªà¨¤à©\87 à¨\89ੱਤà©\87 à¨­à©\87à¨\9cà©\8b",
        "createacct-realname": "ਅਸਲੀ ਨਾਂ (ਚੋਣਵਾਂ)",
        "createacct-reason": "ਕਾਰਨ",
        "createacct-reason-ph": "ਤੁਸੀਂ ਹੋਰ ਖਾਤਾ ਕਿਉਂ ਬਣਾ ਰਹੇ ਹੋ",
        "createacct-benefit-body1": "{{PLURAL:$1|ਸੋਧ|ਸੋਧਾਂ}}",
        "createacct-benefit-body2": "{{PLURAL:$1|ਸਫ਼ਾ|ਸਫ਼ੇ}}",
        "createacct-benefit-body3": "ਹਾਲੀਆ {{PLURAL:$1|ਯੋਗਦਾਨੀ}}",
-       "badretype": "ਤà©\81ਹਾਡà©\87 à¨µà¨²à©\8bà¨\82 à¨¦à¨¿à©±à¨¤à©\87 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨®à¨¿à¨²à¨¦à©\87 à¨¨à¨¹à©\80à¨\82 à¨¹à¨¨।",
+       "badretype": "ਤà©\81ਹਾਡà©\87 à¨µà©±à¨²à©\8bà¨\82 à¨¦à¨¾à¨\96ਲ à¨\95à©\80ਤਾ à¨²à©°à¨\98-ਸ਼ਬਦ à¨®à©\87ਲ à¨¨à¨¹à©\80à¨\82 à¨\96ਾà¨\82ਦਾ।",
        "userexists": "ਵਰਤੋਂਕਾਰ-ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ। ਵੱਖਰਾ ਨਾਂ ਚੁਣੋ ਜੀ।",
        "loginerror": "ਲਾਗਇਨ ਗ਼ਲਤੀ",
        "createacct-error": "ਖਾਤਾ ਬਣਾਉਣ ਵਿਚ ਗਲਤੀ",
        "nosuchusershort": "\"$1\" ਨਾਂ ਨਾਲ ਕੋਈ ਵੀ ਵਰਤੋਂਕਾਰ ਨਹੀਂ ਹੈ। ਆਪਣੇ ਸਪੈਲਿੰਗ ਧਿਆਨ ਨਾਲ ਚੈੱਕ ਕਰੋ।",
        "nouserspecified": "ਤੁਹਾਨੂੰ ਇੱਕ ਯੂਜ਼ਰ-ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ।",
        "login-userblocked": "ਇਹ ਯੂਜ਼ਰ-ਨਾਂ ਪਾਬੰਦੀਸ਼ੁਦਾ ਹੈ। ਲਾਗਇਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।",
-       "wrongpassword": "à¨\97਼ਲਤ à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨¦à¨¿à©±à¨¤à¨¾ à¨¹à©\88। à¨®à©\81à©\9c-à¨\95à©\8bਸ਼ਿਸ਼ à¨\95ਰà©\8b à¨\9cà©\80।",
-       "wrongpasswordempty": "à¨\96਼ਾਲà©\80 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨¦à¨¿à©±à¨¤à¨¾ à¨¹à©\88। à¨®à©\81à©\9c-à¨\95à©\8bਸ਼ਿਸ਼ à¨\95ਰà©\8b à¨\9cà©\80।",
-       "passwordtooshort": "ਪਾਸਵਰਡ {{PLURAL:$1|1 ਅੱਖਰ|$1 ਅੱਖਰਾਂ}} ਦਾ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ।",
-       "passwordtoolong": "ਪਾਸਵਰਡ {{PLURAL:$1|1 ਅੱਖਰ|$1 ਅੱਖਰਾਂ}} ਤੋਂ ਵੱਡਾ ਨਹੀਂ ਹੋ ਸਕਦਾ।",
+       "wrongpassword": "à¨\97਼ਲਤ à¨²à©°à¨\98-ਸ਼ਬਦ à¨¦à¨¾à¨\96ਲ à¨\95à©\80ਤਾ à¨\97ਿà¨\86। à¨\95ਿਰਪਾ à¨\95ਰà¨\95à©\87 à¨«à©\87ਰ à¨\95à©\8bਸ਼ਿਸ਼ à¨\95ਰà©\8b।",
+       "wrongpasswordempty": "à¨\96਼ਾਲà©\80 à¨²à©°à¨\98-ਸ਼ਬਦ à¨¦à¨¾à¨\96ਲ à¨\95à©\80ਤਾ à¨\97ਿà¨\86। à¨\95ਿਰਪਾ à¨\95ਰà¨\95à©\87 à¨«à©\87ਰ à¨\95à©\8bਸ਼ਿਸ਼ à¨\95ਰà©\8b।",
+       "passwordtooshort": "ਲੰà¨\98-ਸ਼ਬਦ {{PLURAL:$1|1 ਅੱਖਰ|$1 ਅੱਖਰਾਂ}} ਦਾ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ।",
+       "passwordtoolong": "ਲੰà¨\98-ਸ਼ਬਦ {{PLURAL:$1|1 ਅੱਖਰ|$1 ਅੱਖਰਾਂ}} ਤੋਂ ਵੱਡਾ ਨਹੀਂ ਹੋ ਸਕਦਾ।",
        "password-name-match": "ਤੁਹਾਡਾ ਪਛਾਣ-ਸ਼ਬਦ ਤੁਹਾਡੇ ਵਰਤੋਂਕਾਰ ਨਾਂ ਤੋਂ ਵੱਖਰਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।",
-       "password-login-forbidden": "à¨\87ਹ à¨¯à©\82à¨\9c਼ਰ-ਨਾà¨\82 à¨\85ਤà©\87 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ ਵਰਤਣ ਦੀ ਮਨਾਹੀ ਹੈ।",
-       "mailmypassword": "ਨਵਾà¨\82 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ ਈ-ਮੇਲ ਕਰੋ",
-       "passwordremindertitle": "{{SITENAME}} à¨²à¨\88 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨¯à¨¾à¨¦ à¨°à©±à¨\96à©\8b",
+       "password-login-forbidden": "à¨\87ਹ à¨µà¨°à¨¤à©\8bà¨\82à¨\95ਾਰ-ਨਾà¨\82 à¨\85ਤà©\87 à¨²à©°à¨\98-ਸ਼ਬਦ ਵਰਤਣ ਦੀ ਮਨਾਹੀ ਹੈ।",
+       "mailmypassword": "ਨਵਾà¨\82 à¨²à©°à¨\98-ਸ਼ਬਦ ਈ-ਮੇਲ ਕਰੋ",
+       "passwordremindertitle": "{{SITENAME}} à¨²à¨\88 à¨¨à¨µà¨¾à¨\82 à¨\86ਰà¨\9c਼à©\80 à¨²à©°à¨\98-ਸ਼ਬਦ",
        "passwordremindertext": "ਕਿਸੇ ਨੇ (ਸ਼ਾਇਦ ਤੁਸੀਂ, IP ਪਤਾ $1 ਤੋਂ) {{SITENAME}} ਲਈ ਪਾਸਵਰਡ ਬਦਲਣ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ ($4)।\nਮੈਂਬਰ \"$2\" ਲਈ ਆਰਜ਼ੀ ਪਾਸਵਰਡ ਬਣਾ ਕੇ \"$3\" ਤੇ ਭੇਜ ਦਿੱਤਾ ਗਿਆ ਹੈ।\nਜੇ ਤੁਹਾਡਾ ਇਹੀ ਇਰਾਦਾ ਸੀ ਤਾਂ ਤੁਹਾਨੂੰ ਚਾਹੀਦਾ ਹੈ ਹੁਣੇ ਲਾਗਇਨ ਕਰਕੇ ਆਪਣਾ ਪਾਸਵਰਡ ਲਓ।\nਤੁਹਾਡਾ ਆਰਜ਼ੀ ਪਾਸਵਰਡ {{PLURAL:$5|ਇਕ ਦਿਨ|$5 ਦਿਨਾਂ}} ਵਿਚ ਖ਼ਤਮ ਹੋ ਜਾਵੇਗਾ।\n\nਜੇ ਕਿਸੇ ਹੋਰ ਨੇ ਇਹ ਬੇਨਤੀ ਕੀਤੀ ਸੀ ਜਾਂ ਜੇ ਤੁਹਾਨੂੰ ਆਪਣਾ ਪਾਸਵਰਡ ਯਾਦ ਹੈ ਅਤੇ ਤੁਸੀਂ ਇਸਨੂੰ ਬਦਲਣਾ ਨਹੀਂ ਚਾਹੁੰਦੇ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਕੇ ਆਪਣਾ ਪੁਰਾਣਾ ਪਾਸਵਰਡ ਵਰਤਣਾ ਜਾਰੀ ਰੱਖ ਸਕਦੇ ਹੋ।",
        "noemail": "ਯੂਜ਼ਰ \"$1\" ਲਈ ਰਿਕਾਰਡ ਵਿੱਚ ਕੋਈ ਈਮੇਲ ਐਡਰੈੱਸ ਨਹੀਂ ਹੈ।",
        "noemailcreate": "ਤੁਹਾਨੂੰ ਠੀਕ ਈਮੇਲ ਪਤਾ ਦੇਣਾ ਪਵੇਗਾ",
        "accountcreated": "ਖਾਤਾ ਬਣਾਇਆ",
        "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|ਗੱਲਬਾਤ]]) ਲਈ ਵਰਤੋਂਕਾਰ ਖਾਤਾ ਬਣਾਇਆ ਗਿਆ।",
        "createaccount-title": "{{SITENAME}} ਲਈ ਅਕਾਊਂਟ ਬਣਾਉਣਾ",
-       "createaccount-text": "à¨\95ਿਸà©\87 à¨¨à©\87 \"$2\" à¨®à©\88à¨\82ਬਰ-ਨਾਮ à¨\85ਤà©\87 \"$3\" à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨¨à¨¾à¨²à¨¼ {{SITENAME}} ($4) à¨¤à©\87, à¨¤à©\81ਹਾਡਾ à¨\88-ਮà©\87ਲ à¨ªà¨¤à¨¾ à¨µà¨°à¨¤à¨¦à©\87 à¨¹à©\8bà¨\8f, à¨\96ਾਤਾ à¨¬à¨£à¨¾à¨\87à¨\86 à¨¹à©\88।\nਤà©\81ਹਾਨà©\82à©° à¨¹à©\81ਣà©\87 à¨²à¨¾à¨\97à¨\87ਨ à¨\95ਰà¨\95à©\87 à¨\86ਪਣਾ à¨ªà¨¾à¨¸à¨µà¨°à¨¡ ਬਦਲਣਾ ਚਾਹੀਦਾ ਹੈ।\n\nਜੇ ਇਹ ਖਾਤਾ ਗ਼ਲਤੀ ਨਾਲ਼ ਬਣ ਗਿਆ ਹੈ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਸਕਦੇ ਹੋ।",
+       "createaccount-text": "à¨\95ਿਸà©\87 à¨¨à©\87 \"$2\" à¨¨à¨¾à¨\82 à¨\85ਤà©\87 \"$3\" à¨²à©°à¨\98-ਸ਼ਬਦ à¨¨à¨¾à¨²à¨¼ {{SITENAME}} ($4) à¨¤à©\87, à¨¤à©\81ਹਾਡਾ à¨\88-ਮà©\87ਲ à¨ªà¨¤à¨¾ à¨µà¨°à¨¤à¨¦à©\87 à¨¹à©\8bà¨\8f, à¨\96ਾਤਾ à¨¬à¨£à¨¾à¨\87à¨\86 à¨¹à©\88।\nਤà©\81ਹਾਨà©\82à©° à¨¹à©\81ਣà©\87 à¨²à¨¾à¨\97à¨\87ਨ à¨\95ਰà¨\95à©\87 à¨\86ਪਣਾ à¨²à©°à¨\98-ਸ਼ਬਦ ਬਦਲਣਾ ਚਾਹੀਦਾ ਹੈ।\n\nਜੇ ਇਹ ਖਾਤਾ ਗ਼ਲਤੀ ਨਾਲ਼ ਬਣ ਗਿਆ ਹੈ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਸਕਦੇ ਹੋ।",
        "login-throttled": "ਤੁਸੀਂ ਬਹੁਤ ਸਾਰੀਆਂ ਤਾਜ਼ਾ ਲਾਗਇਨ ਕੋਸ਼ਿਸ਼ਾਂ ਕੀਤੀਆਂ ਹਨ।\nਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ $1 ਉਡੀਕ ਕਰੋ ਜੀ।",
        "login-abort-generic": "ਤੁਹਾਡਾ ਦਾਖ਼ਲਾ ਅਸਫਲ ਸੀ - ਅਧੂਰਾ ਛੱਡਿਆ",
        "login-migrated-generic": "ਤੁਹਾਡੇ ਖਾਤੇ ਦੀ ਥਾਂ ਬਦਲ ਦਿੱਤੀ ਗਈ ਹੈ ਅਤੇ ਤੁਹਾਡਾ ਵਰਤੋਂਕਾਰ-ਨਾਂ ਹੁਣ ਇਸ ਵਿਕੀ 'ਤੇ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।",
        "user-mail-no-addy": "ਬਿਨਾਂ ਈ-ਮੇਲ ਪਤਾ ਦਿੱਤੇ ਈ-ਮੇਲ ਭੇਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ।",
        "user-mail-no-body": "ਖ਼ਾਲੀ ਜਾਂ ਬਹੁਤੀ ਛੋਟੀ ਸਮੱਗਰੀ ਨਾਲ਼ ਈਮੇਲ ਭੇਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਗਈ",
        "changepassword": "ਪਛਾਣ-ਸ਼ਬਦ ਬਦਲੋ",
-       "resetpass_announce": "ਲਾਗਇਨ ਪੂਰਾ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ ਨਵਾਂ ਪਾਸਵਰਡ ਬਣਾਉਣਾ ਪਵੇਗਾ।",
+       "resetpass_announce": "ਲਾਗਇਨ ਪੂਰਾ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਇੱਕ ਨਵਾਂ ਲੰਘ-ਸ਼ਬਦ ਸੂਤਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।",
        "resetpass_header": "ਖਾਤੇ ਦਾ ਪਛਾਣ-ਸ਼ਬਦ ਬਦਲੋ",
        "oldpassword": "ਪੁਰਾਣਾ ਪਛਾਣ-ਸ਼ਬਦ:",
-       "newpassword": "ਨਵਾà¨\82 à¨ªà¨¾à¨¸à¨µà¨°à¨¡:",
-       "retypenew": "ਨਵਾà¨\82 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨®à©\81à©\9c-ਲਿਖੋ:",
-       "resetpass_submit": "ਪਾਸਵਰਡ à¨¸à©\88ੱà¨\9f ਕਰੋ ਅਤੇ ਲਾਗਇਨ ਕਰੋ",
-       "changepassword-success": "ਤà©\81ਹਾਡਾ à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨ à©\80à¨\95 à¨¤à¨°à©\8dਹਾà¨\82 ਬਦਲਿਆ ਜਾ ਚੁੱਕਾ ਹੈ!",
+       "newpassword": "ਨਵਾà¨\82 à¨²à©°à¨\98-ਸ਼ਬਦ:",
+       "retypenew": "ਨਵਾà¨\82 à¨²à©°à¨\98-ਸ਼ਬਦ à¨«à©\87ਰ ਲਿਖੋ:",
+       "resetpass_submit": "ਲੰà¨\98-ਸ਼ਬਦ à¨¸à©\82ਤਰ ਕਰੋ ਅਤੇ ਲਾਗਇਨ ਕਰੋ",
+       "changepassword-success": "ਤà©\81ਹਾਡਾ à¨²à©°à¨\98-ਸ਼ਬਦ ਬਦਲਿਆ ਜਾ ਚੁੱਕਾ ਹੈ!",
        "changepassword-throttled": "ਤੁਸੀਂ ਦਾਖ਼ਲ ਹੋਣ ਦੀਆਂ ਬਹੁਤ ਸਾਰੀਆਂ ਤਾਜ਼ਾ ਕੋਸ਼ਿਸ਼ਾਂ ਕੀਤੀਆਂ ਹਨ।\nਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ $1 ਉਡੀਕ ਕਰੋ ਜੀ।",
-       "botpasswords": "ਬà©\8cà¨\9f à¨ªà¨¾à¨¸à¨µà¨°à¨¡",
+       "botpasswords": "ਬà©\8cà¨\9f à¨²à©°à¨\98-ਸ਼ਬਦ",
        "botpasswords-label-appid": "ਬੌਟਾ ਨਾੰ:",
        "botpasswords-label-create": "ਬਣਾਓ",
        "botpasswords-label-update": "ਨਵਿਆਉ",
        "botpasswords-label-cancel": "ਰੱਦ ਕਰੋ",
        "botpasswords-label-delete": "ਮਿਟਾਓ",
-       "botpasswords-label-resetpassword": "ਪਾਸਵਰਡ à¨®à©\81à©\9c-ਸà©\88ੱà¨\9f ਕਰੋ",
-       "resetpass_forbidden": "ਪਾਸਵਰਡ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ",
+       "botpasswords-label-resetpassword": "ਲੰà¨\98-ਸ਼ਬਦ à¨«à©\87ਰ-ਸà©\82ਤਰ ਕਰੋ",
+       "resetpass_forbidden": "ਲੰà¨\98-ਸ਼ਬਦ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ",
        "resetpass-no-info": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਸਿੱਧੇ ਹੀ ਵੇਖਣ ਲਈ ਤੁਹਾਨੂੰ ਲਾਗਇਨ ਕਰਨਾ ਪਵੇਗਾ।",
        "resetpass-submit-loggedin": "ਪਛਾਣ-ਸ਼ਬਦ ਬਦਲੋ",
        "resetpass-submit-cancel": "ਰੱਦ ਕਰੋ",
        "resetpass-wrong-oldpass": "ਗ਼ਲਤ ਆਰਜ਼ੀ ਜਾਂ ਚਾਲੂ ਪਾਸਵਰਡ।\nਸ਼ਾਇਦ ਤੁਸੀਂ ਕਾਮਯਾਬੀ ਨਾਲ਼ ਆਪਣਾ ਪਾਸਵਰਡ ਬਦਲ ਚੁੱਕੇ ਹੋ ਜਾਂ ਆਰਜ਼ੀ ਪਾਸਵਰਡ ਲਈ ਬੇਨਤੀ ਕੀਤੀ ਸੀ।",
        "resetpass-recycled": "ਆਪਣਾ ਨਵਾਂ ਪਛਾਣ-ਸ਼ਬਦ ਮੌਜੂਦਾ ਪਛਾਣ-ਸ਼ਬਦ ਤੋਂ ਵੱਖਰਾ ਬਣਾਉ ਜੀ।",
        "resetpass-temp-emailed": "ਤੁਸੀਂ ਈਮੇਲ ਕੀਤੇ ਇੱਕ ਆਰਜ਼ੀ ਕੋਡ ਨਾਲ਼ ਦਾਖ਼ਲ ਹੋਏ।\nਦਾਖ਼ਲਾ ਕਾਰਵਾਈ ਮੁਕਾਉਣ ਵਾਸਤੇ ਤੁਹਾਨੂੰ ਇੱਥੇ ਇੱਕ ਨਵਾਂ ਪਛਾਣ-ਸ਼ਬਦ ਬਣਾਉਣਾ ਪਵੇਗਾ:",
-       "resetpass-temp-password": "à¨\86ਰà¨\9c਼à©\80 à¨ªà¨¾à¨¸à¨µà¨°à¨¡:",
+       "resetpass-temp-password": "à¨\86ਰà¨\9c਼à©\80 à¨²à©°à¨\98-ਸ਼ਬਦ:",
        "resetpass-abort-generic": "ਇੱਕ ਐਕਸਟੈਂਸ਼ਨ ਵੱਲੋਂ ਪਾਸਵਰਡ ਦੀ ਤਬਦੀਲੀ ਰੱਦ ਕੀਤੀ ਗਈ",
        "resetpass-expired": "ਤੁਹਾਡੇ ਪਛਾਣ-ਸ਼ਬਦ ਦੀ ਮਿਆਦ ਮੁੱਕ ਗਈ ਹੈ। ਦਾਖ਼ਲ ਹੋਣ ਲਈ ਮਿਹਰਬਾਨੀ ਕਰਕੇ ਨਵਾਂ ਪਛਾਣ-ਸ਼ਬਦ ਬਣਾਉ।",
        "resetpass-expired-soft": "ਤੁਹਾਡੇ ਪਛਾਣ-ਸ਼ਬਦ ਦੀ ਮਿਆਦ ਮੁੱਕ ਗਈ ਹੈ ਅਤੇ ਨਵਾਂ ਬਣਾਉਣਾ ਪਵੇਗਾ। ਕੋਈ ਨਵਾਂ ਪਛਾਣ-ਸ਼ਬਦ ਚੁਣੋ ਜੀ ਜਾਂ ਬਾਅਦ 'ਚ ਬਣਾਉਣ ਵਾਸਤੇ \"{{int:authprovider-resetpass-skip-label}}\" ਦੱਬੋ।",
        "resetpass-validity-soft": "ਤੁਹਾਡਾ ਪਛਾਣ-ਸ਼ਬਦ ਸਹੀ ਨਹੀਂ ਹੈ: $1\n\nਮਿਹਰਬਾਨੀ ਕਰਕੇ ਕੋਈ ਨਵਾਂ ਪਛਾਣ-ਸ਼ਬਦ ਚੁਣੋ ਜਾਂ ਬਾਅਦ 'ਚ ਬਣਾਉਣ ਵਾਸਤੇ \"{{int:authprovider-resetpass-skip-label}}\" ਦੱਬੋ।",
-       "passwordreset": "ਪਾਸਵਰਡ à¨®à©\81à©\9c-ਸà©\88ੱà¨\9f ਕਰੋ",
-       "passwordreset-text-one": "ਪਾਸਵਰਡ à¨¦à©\81ਬਾਰਾ à¨¬à¨£à¨¾à¨\89ਣ à¨²à¨\88 à¨\87ਹ à¨«à¨¼à¨¾à¨°à¨® à¨­ਰੋ।",
-       "passwordreset-text-many": "{{PLURAL:$1|à¨\88-ਮà©\87ਲ à¨\9c਼ਰà©\80à¨\8f à¨\86ਪਣਾ à¨\86ਰà¨\9c਼à©\80 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ ਹਾਸਲ ਕਰਨ ਲਈ ਕੋਈ ਇੱਕ ਥਾਂ ਭਰੋ।}}",
-       "passwordreset-disabled": "à¨\87ਸ à¨µà¨¿à¨\95à©\80 à¨¤à©\87 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨°à©\80ਸà©\88ੱà¨\9f ਬੰਦ ਕੀਤੇ ਗਏ ਹਨ।",
+       "passwordreset": "ਲੰà¨\98-ਸ਼ਬਦ à¨«à©\87ਰ-ਸà©\82ਤਰ ਕਰੋ",
+       "passwordreset-text-one": "à¨\88ਮà©\87ਲ à¨°à¨¾à¨¹à©\80 à¨\86ਰà¨\9c਼à©\80 à¨²à©°à¨\98-ਸ਼ਬਦ à¨ªà©\8dਰਾਪਤ à¨\95ਰਨ à¨²à¨\88 à¨\87ਸ à¨«à¨¾à¨°à¨® à¨¨à©\82à©° à¨ªà©\82ਰਾ à¨\95ਰੋ।",
+       "passwordreset-text-many": "{{PLURAL:$1|à¨\88-ਮà©\87ਲ à¨\9c਼ਰà©\80à¨\8f à¨\86ਪਣਾ à¨\86ਰà¨\9c਼à©\80 à¨²à©°à¨\98-ਸ਼ਬਦ ਹਾਸਲ ਕਰਨ ਲਈ ਕੋਈ ਇੱਕ ਥਾਂ ਭਰੋ।}}",
+       "passwordreset-disabled": "à¨\87ਸ à¨µà¨¿à¨\95à©\80 à¨\89ੱਤà©\87 à¨²à©°à¨\98-ਸ਼ਬਦ à¨«à©\87ਰ-ਸà©\82ਤਰ ਬੰਦ ਕੀਤੇ ਗਏ ਹਨ।",
        "passwordreset-emaildisabled": "ਇਹ ਵਿਕਿ ਉੱਤੇ ਈਮੇਲ ਫੀਚਰ ਬੰਦ ਕੀਤਾ ਹੋਇਆ ਹੈ।",
        "passwordreset-username": "ਵਰਤੋਂਕਾਰ ਨਾਂ:",
        "passwordreset-domain": "ਡੋਮੇਨ:",
        "passwordreset-emailtitle": "{{SITENAME}} ਤੇ ਖਾਤੇ ਦੀ ਜਾਣਕਾਰੀ",
        "passwordreset-emailtext-ip": "ਕਿਸੇ ਨੇ (ਸ਼ਾਇਦ ਤੁਸੀਂ, IP ਪਤਾ $1 ਤੋਂ) {{SITENAME}}\n($4) ਲਈ ਖਾਤਾ ਤਫ਼ਸੀਲ ਯਾਦ-ਦਹਾਨੀ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ। ਇਹ {{PLURAL:\n$3|ਖਾਤਾ ਇਸ ਈ-ਮੇਲ ਪਤੇ ਨਾਲ਼ ਜੁੜਿਆ ਹੈ|ਖਾਤੇ ਇਸ ਈ-ਮੇਲ ਪਤੇ ਨਾਲ਼ ਜੁੜੇ ਹਨ}}:\n$2\n\nਇਹ ਆਰਜ਼ੀ ਪਾਸਵਰਡ\n{{PLURAL:$5|ਇੱਕ ਦਿਨ|$5 ਦਿਨਾਂ}} ਵਿਚ ਖ਼ਤਮ ਹੋ {{PLURAL:$3|ਜਾਵੇਗਾ|ਜਾਣਗੇ}}।\nਤੁਹਾਨੂੰ ਹੁਣੇ ਲਾਗਇਨ ਕਰਕੇ ਨਵਾਂ ਪਾਸਵਰਡ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇ ਕਿਸੇ ਹੋਰ ਨੇ ਇਹ ਬੇਨਤੀ ਕੀਤੀ ਸੀ ਜਾਂ ਜੇ ਤੁਹਾਨੂੰ ਆਪਣਾ ਪਾਸਵਰਡ ਯਾਦ ਹੈ ਅਤੇ ਤੁਸੀਂ ਇਸਨੂੰ ਬਦਲਣਾ ਨਹੀਂ ਚਾਹੁੰਦੇ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਕੇ ਆਪਣਾ ਪੁਰਾਣਾ ਪਾਸਵਰਡ ਵਰਤਣਾ ਜਾਰੀ ਰੱਖ ਸਕਦੇ ਹੋ।",
        "passwordreset-emailtext-user": "{{SITENAME}} 'ਤੇ User $1 ਨੇ ਤੁਹਾਡੇ {{SITENAME}} ($4) ਉਤਲੇ ਪਛਾਣ-ਸ਼ਬਦ ਨੂੰ ਮੁੜ-ਬਣਾਉਣ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ। ਇਸ ਈਮੇਲ ਪਤੇ ਨਾਲ਼ ਹੇਠ ਲਿਖੇ {{PLURAL:$3|ਖਾਤੇ|ਖਾਤਿਆਂ}} ਦਾ ਵਾਸਤਾ ਹੈ:\n\n$2\n\n{{PLURAL:$3|ਇਸ ਆਰਜ਼ੀ ਪਛਾਣ-ਸ਼ਬਦ|ਇਹਨਾਂ ਆਰਜ਼ੀ ਪਛਾਣ-ਸ਼ਬਦਾਂ}} ਦੀ ਮਿਆਦ {{PLURAL:$5|ਇੱਕ ਦਿਨ|$5 ਦਿਨਾਂ}} 'ਚ ਮੁੱਕ ਜਾਵੇਗੀ।\nਤੁਹਾਨੂੰ ਹੁਣੇ ਦਾਖ਼ਲ ਹੋ ਕੇ ਕੋਈ ਨਵਾਂ ਪਛਾਣ-ਸ਼ਬਦ ਬਣਾ ਲੈਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇਕਰ ਕਿਸੇ ਹੋਰ ਨੇ ਇਹ ਬੇਨਤੀ ਕੀਤੀ ਹੈ ਜਾਂ ਤੁਹਾਨੂੰ ਆਪਣਾ ਪਹਿਲਾ ਪਛਾਣ-ਸ਼ਬਦ ਯਾਦ ਆ ਗਿਆ ਹੈ ਅਤੇ ਹੁਣ ਤੁਸੀਂ ਉਹਨੂੰ ਬਦਲ਼ਨਾ ਨਹੀਂ ਲੋਚਦੇ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰ ਕੇ ਆਪਣਾ ਪੁਰਾਣਾ ਪਛਾਣ-ਸ਼ਬਦ ਵਰਤਦੇ ਰਹਿ ਸਕਦੇ ਹੋ।",
-       "passwordreset-emailelement": "ਯà©\82à¨\9c਼ਰ-ਨਾà¨\82: \n$1\n\nà¨\86ਰà¨\9c਼à©\80 à¨ªà¨¾à¨¸à¨µà¨°à¨¡: \n$2",
-       "passwordreset-emailsentemail": "à¨\87ੱà¨\95 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨®à©\81à©\9c-ਸà©\88ੱà¨\9f à¨\88-ਮà©\87ਲ à¨­à©\87à¨\9cà©\80 à¨\9cਾ à¨\9aà©\81ੱà¨\95à©\80 à¨¹à©\88।",
+       "passwordreset-emailelement": "ਵਰਤà©\8bà¨\82à¨\95ਾਰ-ਨਾà¨\82: \n$1\n\nà¨\86ਰà¨\9c਼à©\80 à¨²à©°à¨\98-ਸ਼ਬਦ: \n$2",
+       "passwordreset-emailsentemail": "à¨\9cà©\87 à¨\87ਹ à¨\88ਮà©\87ਲ à¨ªà¨¤à¨¾ à¨¤à©\81ਹਾਡà©\87 à¨\96ਾਤà©\87 à¨¨à¨¾à¨² à¨\9cà©\81à©\9cਿà¨\86 à¨¹à©\88, à¨¤à¨¾à¨\82 à¨\87ੱà¨\95 à¨²à©°à¨\98-ਸ਼ਬਦ à¨«à©\87ਰ-ਸà©\82ਤਰ à¨\88ਮà©\87ਲ à¨­à©\87à¨\9cà©\80 à¨\9cਾà¨\8fà¨\97à©\80।",
        "passwordreset-invalidemail": "ਗ਼ਲਤ ਈਮੇਲ ਪਤਾ",
        "changeemail": "ਈ-ਮੇਲ ਸਿਰਨਾਵਾਂ ਬਦਲੋ ਜਾੰ ਹਟਾਓ",
        "changeemail-header": "ਖਾਤੇ ਵਾਲਾ ਈ-ਮੇਲ ਸਿਰਨਾਵਾਂ ਬਦਲੋ",
        "changeemail-oldemail": "ਮੌਜੂਦਾ ਈਮੇਲ ਸਿਰਨਾਵਾਂ:",
        "changeemail-newemail": "ਨਵਾਂ ਈ-ਮੇਲ ਸਿਰਨਾਵਾਂ:",
        "changeemail-none": "(ਕੋਈ ਨਹੀਂ)",
-       "changeemail-password": "ਤà©\81ਹਾਡਾ {{SITENAME}} à¨ªà¨¾à¨¸à¨µà¨°à¨¡:",
+       "changeemail-password": "ਤà©\81ਹਾਡਾ {{SITENAME}} à¨²à©°à¨\98-ਸ਼ਬਦ:",
        "changeemail-submit": "ਈ-ਮੇਲ ਬਦਲੋ",
        "changeemail-throttled": "ਤੁਸੀਂ ਦਾਖ਼ਲ ਹੋਣ ਦੀਆਂ ਬਹੁਤ ਸਾਰੀਆਂ ਕੋਸ਼ਿਸ਼ਾਂ ਕੀਤੀਆਂ ਹਨ।\nਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ $1 ਉਡੀਕ ਕਰੋ ਜੀ।",
        "changeemail-nochange": "ਕਿਰਪਾ ਕਰਕੇ ਕੋਈ ਵੱਖਰਾ ਈਮੇਲ ਪਤਾ ਭਰੋ।",
        "loginreqtitle": "ਲਾਗਇਨ ਚਾਹੀਦਾ ਹੈ",
        "loginreqlink": "ਦਾਖ਼ਲ",
        "loginreqpagetext": "ਹੋਰ ਸਫ਼ੇ ਵੇਖਣ ਲਈ ਤੁਹਾਨੂੰ $1 ਕਰਨਾ ਪਵੇਗਾ।",
-       "accmailtitle": "ਪਾਸਵਰਡ ਭੇਜਿਆ।",
+       "accmailtitle": "ਲੰà¨\98-ਸ਼ਬਦ ਭੇਜਿਆ।",
        "accmailtext": "[[User talk:$1|$1]] ਲਈ ਰਲ਼ਵੇਂ ਤੌਰ ’ਤੇ ਬਣਿਆ ਪਾਸਵਰਡ $2 ਨੂੰ ਭੇਜਿਆ ਜਾ ਚੁੱਕਾ ਹੈ।\nਇਸ ਨਵੇਂ ਖਾਤੇ ਲਈ ਲਾਗਇਨ ਕਰਨ ਤੋਂ ਬਾਅਦ ''[[Special:ChangePassword|ਪਾਸਵਰਡ ਬਦਲੋ]]'' ’ਤੇ ਜਾ ਕੇ ਪਾਸਵਰਡ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।",
        "newarticle": "(ਨਵਾਂ)",
        "newarticletext": "ਤੁਸੀਂ ਕਿਸੇ ਅਜਿਹੇ ਸਫ਼ੇ ਦੇ ਕੜੀ ’ਤੇ ਹੋ ਜੋ ਹਾਲੇ ਬਣਾਇਆ ਨਹੀਂ ਗਿਆ।\nਸਫ਼ਾ ਬਣਾਉਣ ਲਈ ਹੇਠ ਦਿੱਤੇ ਖਾਨੇ ਵਿਚ ਲਿਖਣਾ ਸ਼ੁਰੂ ਕਰੋ। (ਹੋਰ ਮਦਦ ਲਈ [$1 ਮਦਦ ਸਫ਼ਾ] ਵੇਖੋ।)\nਜੇ ਤੁਸੀਂ ਗ਼ਲਤੀ ਨਾਲ ਇੱਥੇ ਆਏ ਹੋ ਤਾਂ ਆਪਣੇ ਬ੍ਰਾਊਜ਼ਰ ਦੇ '''ਪਿੱਛੇ''' ਬਟਨ ’ਤੇ ਕਲਿੱਕ ਕਰੋ।",
        "cantcreateaccount-text": "[[User:$3|$3]] ਨੇ ਇਸ IP ਪਤੇ ('''$1''') ਤੋਂ ਖਾਤਾ ਬਣਾਉਣ ਤੇ ਪਾਬੰਦੀ ਲਾਈ ਹੈ।\n\n$3 ਨੇ ਕਾਰਨ ਇਹ ਦੱਸਿਆ ਹੈ, ''$2''",
        "viewpagelogs": "ਇਹ ਸਫ਼ੇ ਲਈ ਇੰਦਰਾਜ ਵੇਖੋ",
        "nohistory": "ਇਸ ਸਫ਼ੇ ਲਈ ਕੋਈ ਸੋਧ ਅਤੀਤ ਨਹੀਂ ਹੈ।",
-       "currentrev": "ਮà©\8cà¨\9cà©\82ਦਾ à¨°à©\80ਵਿà¨\9c਼ਨ",
-       "currentrev-asof": "$1 à¨®à©\81ਤਾਬà¨\95 à¨¸à¨­ à¨¤à©\8bà¨\82 à¨¨à¨µà¨¾à¨\82 à¨°à©\80ਵਿà¨\9cਨ",
-       "revisionasof": "$1 à¨¦à¨¾ à¨°à©\80ਵਿà¨\9cਨ",
-       "revision-info": "{{GENDER:$6|$2}}$7 à¨¦à¨¾ à¨¬à¨£à¨¾à¨\87à¨\86 $1 à¨¦à¨¾ à¨°à©\80ਵਿà¨\9cà©\8dਹਨ",
-       "previousrevision": "â\86\90ਪà©\81ਰਾਣਾ à¨°à©\80ਵਿà¨\9cਨ",
-       "nextrevision": "ਨਵਾà¨\82 à¨°à©\80ਵਿà¨\9cਨ →",
-       "currentrevisionlink": "ਸਭ à¨¤à©\8b à¨¨à¨µà¨¾à¨\82 à¨¦à©\81ਹਰਾà¨\87à¨\86",
+       "currentrev": "ਮà©\8cà¨\9cà©\82ਦਾ à¨¦à©\81ਹਰਾà¨\85",
+       "currentrev-asof": "$1 à¨®à©\81ਤਾਬà¨\95 à¨¸à¨­ à¨¤à©\8bà¨\82 à¨¨à¨µà¨¾à¨\82 à¨¦à©\81ਹਰਾà¨\85",
+       "revisionasof": "$1 à¨¦à¨¾ à¨¦à©\81ਹਰਾà¨\85",
+       "revision-info": "{{GENDER:$6|$2}}$7 à¨¦à©\81à¨\86ਰਾ à¨\95à©\80ਤਾ à¨\97ਿà¨\86 $1 à¨¦à¨¾ à¨¦à©\81ਹਰਾà¨\85",
+       "previousrevision": "â\86\90ਪà©\81ਰਾਣਾ à¨¦à©\81ਹਰਾà¨\85",
+       "nextrevision": "ਨਵਾà¨\82 à¨¦à©\81ਹਰਾà¨\85 →",
+       "currentrevisionlink": "ਸਭ à¨¤à©\8b à¨¨à¨µà¨¾à¨\82 à¨¦à©\81ਹਰਾà¨\85",
        "cur": "ਮੌਜੂਦਾ",
        "next": "ਅੱਗੇ",
        "last": "ਪਿਛਲਾ",
        "histlast": "ਸਭ ਤੋਂ ਨਵੇਂ",
        "historysize": "({{PLURAL:$1|1 ਬਾਈਟ|$1 ਬਾਈਟ}})",
        "historyempty": "(ਖ਼ਾਲੀ)",
-       "history-feed-title": "ਰà©\80ਵਿà¨\9c਼ਨ ਦਾ ਅਤੀਤ",
-       "history-feed-description": "ਵਿਕੀ ’ਤੇ ਇਸ ਸਫ਼ੇ ਦਾ ਰੀਵਿਜ਼ਨ ਅਤੀਤ",
+       "history-feed-title": "ਦà©\81ਹਰਾà¨\85 ਦਾ ਅਤੀਤ",
+       "history-feed-description": "ਵਿਕੀ ਉੱਤੇ ਇਸ ਸਫ਼ੇ ਦਾ ਦੁਹਰਾਅ ਅਤੀਤ",
        "history-feed-item-nocomment": "$1 ਤੋਂ $2 ’ਤੇ",
        "history-feed-empty": "ਦਰਖ਼ਾਸਤਸ਼ੁਦਾ ਸਫ਼ਾ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।\nਸ਼ਾਇਦ ਇਸਨੂੰ ਵਿਕੀ ਤੋਂ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ ਜਾਂ ਨਾਮ ਬਦਲ ਦਿੱਤਾ ਗਿਆ ਹੈ।\nਵਿਕੀ ਦੇ ਨਵੇਂ ਮੁਨਾਸਿਬ ਸਫ਼ਿਆਂ ਵਿਚ [[Special:Search|ਲੱਭਣ]] ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।",
        "rev-deleted-comment": "(ਸੋਧ ਸਾਰ ਹਟਾਇਆ)",
        "rev-deleted-text-permission": "ਸਫ਼ੇ ਦੀ ਇਹ ਰੀਵਿਜ਼ਨ '''ਮਿਟਾਈ''' ਜਾ ਚੁੱਕੀ ਹੈ।\nਤਫ਼ਸੀਲ [{{fullurl:{{#Special:Log}}/delete|\npage={{FULLPAGENAMEE}}}} ਮਿਟਾਉਣ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵੇਖੀ ਜਾ ਸਕਦੀ ਹੈ।",
        "rev-deleted-text-unhide": "ਸਫ਼ੇ ਦੀ ਇਹ ਰੀਵਿਜ਼ਨ '''ਮਿਟਾਈ''' ਜਾ ਚੁੱਕੀ ਹੈ।\nਤਫ਼ਸੀਲ [{{fullurl:{{#Special:Log}}/delete|\npage={{FULLPAGENAMEE}}}} ਮਿਟਾਉਣ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵੇਖੀ ਜਾ ਸਕਦੀ ਹੈ।\nਜੇ ਤੁਸੀਂ ਅੱਗੇ ਵਧਣਾ ਚਾਹੋ ਤਾਂ ਹਾਲੇ ਵੀ [$1 ਇਹ ਰੀਵਿਜ਼ਨ ਵੇਖ] ਸਕਦੇ ਹੋ।",
        "rev-deleted-no-diff": "ਤੁਸੀਂ ਇਹ ਫ਼ਰਕ ਨਹੀਂ ਵੇਖ ਸਕਦੇ ਕਿਉਂਕਿ ਇਹਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਰੀਵਿਜ਼ਨ '''ਮਿਟਾਈ''' ਜਾ ਚੁੱਕੀ ਹੈ।\nਤਫ਼ਸੀਲ [{{fullurl:{{#Special:Log}}/delete|\npage={{FULLPAGENAMEE}}}} ਮਿਟਾਉਣ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵੇਖੀ ਜਾ ਸਕਦੀ ਹੈ।",
-       "rev-suppressed-no-diff": "ਤà©\81ਸà©\80à¨\82 à¨\87ਹ à¨«à¨¼à¨°à¨\95 à¨¨à¨¹à©\80à¨\82 à¨µà©\87à¨\96 à¨¸à¨\95ਦà©\87 à¨\95ਿà¨\89à¨\82à¨\95ਿ à¨\87ਹਨਾà¨\82 à¨µà¨¿à©±à¨\9aà©\8bà¨\82 à¨\87ੱà¨\95 à¨°à©\80ਵਿà¨\9c਼ਨ '''ਮਿਟਾਈ''' ਜਾ ਚੁੱਕੀ ਹੈ।",
+       "rev-suppressed-no-diff": "ਤà©\81ਸà©\80à¨\82 à¨\87ਹ à¨«à¨¼à¨°à¨\95 à¨¨à¨¹à©\80à¨\82 à¨µà©\87à¨\96 à¨¸à¨\95ਦà©\87 à¨\95ਿà¨\89à¨\82à¨\95ਿ à¨\87ਹਨਾà¨\82 à¨µà¨¿à©±à¨\9aà©\8bà¨\82 à¨\87ੱà¨\95 à¨¦à©\81ਹਰਾà¨\85 '''ਮਿਟਾਈ''' ਜਾ ਚੁੱਕੀ ਹੈ।",
        "rev-deleted-unhide-diff": "ਇਸ ਫ਼ਰਕ ਵਿੱਚੋਂ ਇੱਕ ਰੀਵਿਜ਼ਨ '''ਮਿਟਾਈ''' ਜਾ ਚੁੱਕੀ ਹੈ।\nਤਫ਼ਸੀਲ [{{fullurl:{{#Special:Log}}/delete|\npage={{FULLPAGENAMEE}}}} ਮਿਟਾਉਣ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵੇਖੀ ਜਾ ਸਕਦੀ ਹੈ।\nਜੇ ਤੁਸੀਂ ਅੱਗੇ ਵਧਣਾ ਚਾਹੋ ਤਾਂ ਹਾਲੇ ਵੀ [$1 ਇਹ ਰੀਵਿਜ਼ਨ ਵੇਖ] ਸਕਦੇ ਹੋ।",
-       "rev-suppressed-diff-view": "à¨\87ਸ à¨«à¨¼à¨°à¨\95 à¨µà¨¿à©±à¨\9aà©\8bà¨\82 à¨\87ੱà¨\95 à¨°à©\80ਵਿà¨\9c਼ਨ '''à¨\9c਼ਬਤ''' à¨\95à©\80ਤà©\80 à¨\9cਾ à¨\9aà©\81ੱà¨\95à©\80 à¨¹à©\88।\nਤਫ਼ਸà©\80ਲ [{{fullurl:{{#Special:Log}}/delete|\npage={{FULLPAGENAMEE}}}} à¨\9c਼ਬਤà©\80 à¨¦à©\87 à¨\9aਿੱਠà©\87] à¨µà¨¿à¨\9a à¨µà©\87à¨\96à©\80 à¨\9cਾ à¨¸à¨\95ਦà©\80 à¨¹à©\88।",
+       "rev-suppressed-diff-view": "à¨\87ਸ à¨\85ੰਤਰ à¨¦à©\87 à¨¦à©\81ਹਰਾà¨\85 à¨µà¨¿à©±à¨\9aà©\8bà¨\82 à¨\87ੱà¨\95 à¨¨à©\82à©° '''ਦਬਾà¨\85''' à¨¦à¨¿à©±à¨¤à¨¾ à¨\97ਿà¨\86 à¨¹à©\88। à¨¤à©\81ਸà©\80à¨\82 à¨\87ਸ à¨\85ੰਤਰ à¨¨à©\82à©° à¨¦à©\87à¨\96 à¨¸à¨\95ਦà©\87 à¨¹à©\8b; [{{fullurl:{{#Special:Log}}/delete|\npage={{FULLPAGENAMEE}}}} à¨\9c਼ਬਤà©\80 à¨¦à©\87 à¨\9aਿੱਠà©\87] à¨µà¨¿à©±à¨\9a à¨µà©\87ਰਵà©\87 à¨²à©±à¨­à©\87 à¨\9cਾ à¨¸à¨\95ਦà©\87 à¨¹à¨¨।",
        "rev-delundel": "ਵਿਖਾਓ/ਲੁਕਾਓ",
        "rev-showdeleted": "ਵਿਖਾਓ",
-       "revisiondelete": "ਰà©\80ਵਿà¨\9c਼ਨ à¨¹à¨\9fਾà¨\93/ਹà¨\9fਾà¨\87à¨\86-ਵਾਪਸ",
+       "revisiondelete": "ਹà¨\9fਾà¨\93/à¨\85ਣ-ਹà¨\9fਾà¨\93 à¨¦à©\81ਹਰਾà¨\85",
        "revdelete-nooldid-title": "ਕੋਈ ਨਿਸ਼ਾਨੇ ਵਾਲੀ ਰੀਵਿਜ਼ਨ ਨਹੀਂ",
        "revdelete-no-file": "ਦਿੱਤੀ ਗਈ ਫਾਇਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।",
-       "revdelete-show-file-confirm": "ਤà©\81ਹਾਨà©\82à©° à¨¯à¨\95à©\80ਨ à¨¹à©\88 à¨¤à©\81ਸà©\80à¨\82 $2 à¨¨à©\82à©° $3 à¨¦à©\80 à¨«à¨¼à¨¾à¨\88ਲ \"<nowiki>$1</nowiki>\" à¨¦à©\80 à¨®à¨¿à¨\9fਾà¨\88 à¨\97à¨\88 à¨°à©\80ਵਿà¨\9c਼ਨ ਵੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?",
+       "revdelete-show-file-confirm": "ਤà©\81ਹਾਨà©\82à©° à¨¯à¨\95à©\80ਨ à¨¹à©\88 à¨¤à©\81ਸà©\80à¨\82 $2 à¨¨à©\82à©° $3 à¨¦à©\80 à¨«à¨¼à¨¾à¨\88ਲ \"<nowiki>$1</nowiki>\" à¨¦à©\80 à¨®à¨¿à¨\9fਾà¨\88 à¨\97à¨\88 à¨¦à©\81ਹਰਾà¨\85 ਵੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?",
        "revdelete-show-file-submit": "ਹਾਂ",
        "revdelete-legend": "ਵੇਖਣ ਪਾਬੰਦੀਆਂ ਸੈੱਟ ਕਰੋ:",
        "revdelete-hide-text": "ਦੁਹਰਾਈ ਲਿਖਤ",
        "revdelete-otherreason": "ਹੋਰ/ਵਾਧੂ ਕਾਰਨ:",
        "revdelete-reasonotherlist": "ਹੋਰ ਕਾਰਨ",
        "revdelete-edit-reasonlist": "ਮਿਟਾਏ ਜਾਣ ਦੇ ਕਾਰਨ ਸੋਧੋ",
-       "revdelete-offender": "ਰà©\80ਵਿà¨\9c਼ਨ ਲੇਖਕ:",
+       "revdelete-offender": "ਦà©\81ਹਰਾà¨\85 ਲੇਖਕ:",
        "suppressionlog": "ਲੁਕਾਅ ਇੰਦਰਾਜ",
        "mergehistory": "ਸਫ਼ਿਆਂ ਦੇ ਅਤੀਤ ਰਲ਼ਾਓ",
        "mergehistory-box": "ਦੋ ਸਫ਼ਿਆਂ ਦੇ ਸੁਧਾਰ ਮਿਲਾਓ:",
        "mergehistory-list": "ਰਲ਼ਾਉਣਯੋਗ ਸੋਧ ਅਤੀਤ",
        "mergehistory-go": "ਰਲ਼ਾਉਣਯੋਗ ਸੋਧਾਂ ਵਖਾਓ",
        "mergehistory-submit": "ਰੀਵਿਜ਼ਨਾਂ ਰਲ਼ਾਓ",
-       "mergehistory-empty": "à¨\95à©\8bà¨\88 à¨°à©\80ਵਿà¨\9c਼ਨ à¨°à¨²à¨¼à¨¾à¨\88 à¨¨à¨¹à©\80 à¨\9cਾ à¨¸à¨\95ਦà©\80।",
-       "mergehistory-done": "$1 {{PLURAL:|ਦà©\80|ਦà©\80à¨\86à¨\82}} $3 {{PLURAL:$3|ਰà©\80ਵਿà¨\9c਼ਨ|ਰà©\80ਵਿà¨\9c਼ਨਾà¨\82}} ਕਾਮਯਾਬੀ ਨਾਲ਼ [[:$2]] ਵਿਚ {{PLURAL:$3|ਰਲ਼ਾਈ|ਰਲ਼ਾਈਆਂ}}।",
+       "mergehistory-empty": "à¨\95ਿਸà©\87 à¨µà©\80 à¨¦à©\81ਹਰਾà¨\85 à¨¨à©\82à©° à¨®à¨¿à¨²à¨¾à¨\87à¨\86 à¨¨à¨¹à©\80à¨\82 à¨\9cਾ à¨¸à¨\95ਦਾ।",
+       "mergehistory-done": "$1 {{PLURAL:|ਦà©\80|ਦà©\80à¨\86à¨\82}} $3 {{PLURAL:$3|ਦà©\81ਹਰਾà¨\85|ਦà©\81ਹਰਾà¨\87à¨\86}} ਕਾਮਯਾਬੀ ਨਾਲ਼ [[:$2]] ਵਿਚ {{PLURAL:$3|ਰਲ਼ਾਈ|ਰਲ਼ਾਈਆਂ}}।",
        "mergehistory-fail-bad-timestamp": "ਸਮਾੰਮੋਹਰ ਗਲਤ ਹੈ।",
        "mergehistory-fail-invalid-source": "ਸਰੋਤ ਸਫ਼ਾ ਗਲਤ ਹੈ।",
        "mergehistory-no-source": "ਸਰੋਤ ਸਫ਼ਾ $1 ਮੌਜੂਦ ਨਹੀਂ ਹੈ।",
        "mergelog": "ਰਲ਼ਾਉਣ ਦਾ ਚਿੱਠਾ",
        "revertmerge": "ਅਨ-ਮਰਜ",
        "mergelogpagetext": "ਹੇਠਾਂ ਇੱਕ ਸਫ਼ੇ ਦੇ ਅਤੀਤ ਨੂੰ ਦੂਜੇ ਦੇ ਅਤੀਤ ਵਿਚ ਰਲ਼ਾਉਣ ਦੀ ਸਭ ਤੋਂ ਤਾਜ਼ਾ ਲਿਸਟ ਹੈ।",
-       "history-title": "\"$1\" à¨¦à©\87 à¨°à©\80ਵਿà¨\9cਨ ਦਾ ਅਤੀਤ",
+       "history-title": "\"$1\" à¨¦à©\87 à¨¦à©\81ਹਰਾà¨\85 ਦਾ ਅਤੀਤ",
        "difference-title": "\"$1\" ਦੇ ਰੀਵਿਜ਼ਨਾਂ ਵਿਚ ਫ਼ਰਕ",
        "difference-title-multipage": "ਸਫ਼ਿਆਂ \"$1\" ਅਤੇ \"$2\" ਵਿਚ ਫ਼ਰਕ",
        "difference-multipage": "(ਦੋ ਸਫ਼ਿਆਂ ਵਿਚਕਾਰ ਫ਼ਰਕ)",
        "action-deletedhistory": "ਇਸ ਸਫ਼ੇ ਦਾ ਮਿਟਾਇਆ ਅਤੀਤ ਵੇਖੋ",
        "action-browsearchive": "ਮਿਟਾਏ ਸਫ਼ੇ ਲੱਭੋ",
        "action-undelete": "ਇਹ ਸਫ਼ਾ ਅਣ-ਮਿਟਿਆ ਕਰੋ",
-       "action-suppressrevision": "à¨\87ਹ à¨²à©\81à¨\95ਵਾà¨\82 à¨°à©\80ਵਿà¨\9c਼ਨ à¨\9cਾà¨\82à¨\9aà©\8b à¨\85ਤà©\87 à¨®à©\81à©\9c-ਸà¨\9fà©\8bਰ ਕਰੋ",
+       "action-suppressrevision": "ਲà©\81à¨\95ਵà©\87à¨\82 à¨¦à©\81ਹਰਾà¨\85 à¨¦à©\80 à¨¸à¨®à©\80à¨\96ਿà¨\86 à¨\85ਤà©\87 à¨«à©\87ਰ-ਭੰਡਾਰ ਕਰੋ",
        "action-suppressionlog": "ਇਹ ਨਿੱਜੀ ਇੰਦਰਾਜ ਵੇਖੋ",
        "action-block": "ਇਸ ਮੈਂਬਰ ਦੇ ਸੋਧ ਕਰਨ ਤੇ ਪਾਬੰਦੀ ਲਾਓ",
        "action-protect": "ਇਸ ਸਫ਼ੇ ਦੀ ਸੁਰੱਖਿਆ ਬਦਲੋ",
        "ncategories": "$1 {{PLURAL:$1|ਕੈਟੇਗਰੀ|ਕੈਟੇਗਰੀਆਂ}}",
        "nlinks": "$1 {{PLURAL:$1|ਲਿੰਕ|ਲਿੰਕ}}",
        "nmembers": "$1 {{PLURAL:$1|ਮੈਂਬਰ|ਮੈਂਬਰਾਂ}}",
-       "nrevisions": "$1 {{PLURAL:$1|ਰà©\80ਵਿà¨\9c਼ਨ|ਰà©\80ਵਿà¨\9c਼ਨਾà¨\82}}",
+       "nrevisions": "$1 {{PLURAL:$1|ਦà©\81ਹਰਾà¨\85|ਦà©\81ਹਰਾà¨\87à¨\86}}",
        "nimagelinks": "$1 {{PLURAL:$1|ਸਫ਼ੇ|ਸਫ਼ਿਆਂ}} ’ਤੇ ਵਰਤਿਆ ਹੋਇਆ",
        "ntransclusions": "$1 {{PLURAL:$1|ਸਫ਼ੇ|ਸਫ਼ਿਆਂ}} ’ਤੇ ਵਰਤਿਆ ਹੋਇਆ",
        "specialpage-empty": "ਇਸ ਰਿਪੋਟ ਦਾ ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਹੈ।",
        "unwatch": "ਨਿਗਰਾਨੀ ਹਟਾਓ",
        "unwatchthispage": "ਨਜ਼ਰ ਰੱਖਣੀ ਬੰਦ ਕਰੋ",
        "notanarticle": "ਕੋਈ ਸਮੱਗਰੀ ਸਫ਼ਾ ਨਹੀਂ ਹੈ",
-       "notvisiblerev": "à¨\87ੱà¨\95 à¨µà©±à¨\96ਰà©\87 à¨®à©\88à¨\82ਬਰ à¨¦à©\80 à¨¬à¨£à¨¾à¨\88 à¨\86à¨\96਼ਰà©\80 à¨°à©\80ਵਿà¨\9c਼ਨ ਮਿਟਾਈ ਜਾ ਚੁੱਕੀ ਹੈ",
+       "notvisiblerev": "à¨\87ੱà¨\95 à¨µà©±à¨\96ਰà©\87 à¨®à©\88à¨\82ਬਰ à¨¦à©\80 à¨¬à¨£à¨¾à¨\88 à¨\86à¨\96਼ਰà©\80 à¨¦à©\81ਹਰਾà¨\85 ਮਿਟਾਈ ਜਾ ਚੁੱਕੀ ਹੈ",
        "watchlist-details": "ਗੱਲ-ਬਾਤ ਸਫ਼ੇ ਨਾ ਗਿਣਦੇ ਹੋਏ, ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਸੂਚੀ ਵਿਚ{{PLURAL:$1|$1 ਸਫ਼ਾ ਹੈ|$1 ਸਫ਼ੇ ਹਨ}}।",
        "wlheader-enotif": "ਈਮੇਲ ਸੂਚਨਾ ਚਾਲੂ ਹੈ।",
        "wlnote": "$3, $4 ਮੁਤਾਬਕ ਆਖ਼ਰੀ {{PLURAL:$2|ਘੰਟੇ|<strong>$2</strong> ਘੰਟਿਆਂ}} ਵਿਚ {{PLURAL:\n$1|ਤਬਦੀਲੀ ਹੋਈ|<strong>$1</strong> ਤਬਦੀਲੀਆਂ ਹੋਈਆਂ}}, ਹੇਠਾਂ ਵੇਖੋ।",
        "dellogpage": "ਹਟਾਉਣ ਦਾ ਚਿੱਠਾ",
        "dellogpagetext": "ਹੇਠਾਂ ਸਭ ਤੋਂ ਤਾਜ਼ਾ ਮਿਟਾਉਣਾਂ ਦੀ ਲਿਸਟ ਹੈ।",
        "deletionlog": "ਮਿਟਾਉਣ ਦਾ ਚਿੱਠਾ",
-       "reverted": "ਪà©\81ਰਾਣà©\80 à¨°à©\80ਵਿà¨\9cਨ ਵੱਲ ਉਲਟਾਇਆ ਗਿਆ",
+       "reverted": "ਪà©\81ਰਾਣà©\87 à¨¦à©\81ਹਰਾà¨\85 ਵੱਲ ਉਲਟਾਇਆ ਗਿਆ",
        "deletecomment": "ਕਾਰਨ:",
        "deleteotherreason": "ਹੋਰ/ਵਾਧੂ ਕਾਰਨ:",
        "deletereasonotherlist": "ਹੋਰ ਕਾਰਨ",
        "undeletepage": "ਮਿਟਾਏ ਹੋਏ ਸਫ਼ੇ ਵੇਖੋ ਅਤੇ ਮੁੜ ਬਹਾਲ ਕਰੋ",
        "viewdeletedpage": "ਮਿਟਾਏ ਹੋਏ ਸਫ਼ੇ ਵੇਖੋ",
        "undelete-fieldset-title": "ਰੀਵਿਜ਼ਨਾਂ ਮੁੜ ਬਹਾਲ ਕਰੋ",
-       "undelete-nodiff": "à¨\95à©\8bà¨\88 à¨ªà¨¿à¨\9bਲà©\80 à¨°à©\80ਵਿà¨\9c਼ਨ à¨¨à¨¹à©\80à¨\82 à¨²à©±à¨­à©\80",
+       "undelete-nodiff": "à¨\95à©\8bà¨\88 à¨ªà¨¿à¨\9bਲਾ à¨¦à©\81ਹਰਾà¨\85 à¨¨à¨¹à©\80à¨\82 à¨²à©±à¨­à¨¿à¨\86।",
        "undeletebtn": "ਮੁੜ-ਸਟੋਰ",
        "undeletelink": "ਵੇਖੋ/ਮੁੜ ਬਹਾਲ ਕਰੋ",
        "undeleteviewlink": "ਵੇਖੋ",
        "createaccountblock": "ਖਾਤਾ ਬਣਾਉਣਾ ’ਤੇ ਪਾਬੰਦੀ ਹੈ",
        "emailblock": "ਈਮੇਲ ਬਲਾਕ ਹੈ",
        "blocklist-nousertalk": "ਆਪਣਾ ਗੱਲ-ਬਾਤ ਸਫ਼ਾ ਨਹੀਂ ਸੋਧ ਸਕਦਾ",
+       "blocklist-editing-page": "ਸਫ਼ੇ",
        "ipblocklist-empty": "ਪਾਬੰਦੀ ਲਿਸਟ ਖ਼ਾਲੀ ਹੈ।",
        "ipblocklist-no-results": "ਦਿੱਤੇ ਗਏ IP ਪਤੇ ਜਾਂ ਮੈਂਬਰ-ਨਾਂ ’ਤੇ ਪਾਬੰਦੀ ਨਹੀਂ ਹੈ।",
        "blocklink": "ਪਾਬੰਦੀ ਲਾਓ",
        "move-leave-redirect": "ਪਿੱਛੇ ਇਕ ਰੀਡਿਰੈਕਟ ਛੱਡੋ",
        "export": "ਜੁਗਤਾਂ ਦੀ ਬਰਾਮਦ",
        "exportall": "ਸਾਰੇ ਸਫ਼ਿਆਂ ਦੀ ਬਰਾਮਦ",
-       "exportcuronly": "ਸਿਰਫ਼ à¨®à©\8cà¨\9cà©\82ਦਾ à¨°à©\80ਵਿà¨\9c਼ਨ ਸ਼ਾਮਲ ਕਰੋ, ਸਾਰਾ ਅਤੀਤ ਨਹੀਂ",
+       "exportcuronly": "ਸਿਰਫ਼ à¨®à©\8cà¨\9cà©\82ਦਾ à¨¦à©\81ਹਰਾà¨\85 ਸ਼ਾਮਲ ਕਰੋ, ਸਾਰਾ ਅਤੀਤ ਨਹੀਂ",
        "export-submit": "ਐਕਸਪੋਰਟ",
        "export-addcattext": "ਇਸ ਸ਼੍ਰੇਣੀ ਤੋਂ ਸਫ਼ੇ ਜੋੜੋ",
        "export-addcat": "ਜੋੜੋ",
        "import-upload-filename": "ਫ਼ਾਈਲ ਦਾ ਨਾਂ:",
        "import-comment": "ਟਿੱਪਣੀ:",
        "importstart": "ਪੇਜ ਇੰਪੋਰਟ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ...",
-       "import-revision-count": "$1 {{PLURAL:$1|ਰà©\80ਵਿà¨\9c਼ਨ|ਰà©\80ਵਿà¨\9c਼ਨਾà¨\82}}",
+       "import-revision-count": "$1 {{PLURAL:$1|ਦà©\81ਹਰਾà¨\85|ਦà©\81ਹਰਾà¨\85}}",
        "importnopages": "ਮੰਗਾਉਣ ਲਈ ਕੋਈ ਸਫ਼ੇ ਨਹੀਂ ਹਨ।",
        "importfailed": "ਇੰਪੋਰਟ ਫੇਲ੍ਹ: $1",
        "importunknownsource": "ਮੰਗਾਉਣ ਦੇ ਸਰੋਤ ਦੀ ਅਣਪਛਾਤੀ ਕਿਸਮ",
        "tooltip-ca-edit": "ਇਹ ਸਫ਼ਾ ਸੋਧੋ",
        "tooltip-ca-addsection": "ਨਵਾਂ ਭਾਗ ਸ਼ੁਰੂ ਕਰੋ",
        "tooltip-ca-viewsource": "ਇਹ ਸਫ਼ਾ ਸੁਰੱਖਿਅਤ ਹੈ।\nਤੁਸੀਂ ਇਸਦਾ ਸਰੋਤ ਵੇਖ ਸਕਦੇ ਹੋ।",
-       "tooltip-ca-history": "à¨\87ਸ à¨¸à¨«à¨¼à©\87 à¨¦à©\87 à¨ªà¨¿à¨\9bਲà©\87 à¨°à©\80ਵਿà¨\9cਨ",
+       "tooltip-ca-history": "à¨\87ਸ à¨¸à¨«à¨¼à©\87 à¨¦à©\87 à¨ªà¨¿à¨\9bਲà©\87 à¨¦à©\81ਹਰਾà¨\85",
        "tooltip-ca-protect": "ਇਹ ਸਫ਼ਾ ਸੁਰੱਖਿਅਤ ਕਰੋ",
        "tooltip-ca-unprotect": "ਇਸ ਸਫ਼ੇ ਦੀ ਸੁਰੱਖਿਆ ਬਦਲੋ",
        "tooltip-ca-delete": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਹਟਾਓ",
        "tooltip-t-upload": "ਫ਼ਾਈਲਾਂ ਅਪਲੋਡ ਕਰੋ",
        "tooltip-t-specialpages": "ਸਾਰੇ ਖ਼ਾਸ ਸਫ਼ਿਆਂ ਦੀ ਲਿਸਟ",
        "tooltip-t-print": "ਇਸ ਸਫ਼ੇ ਦਾ ਛਪਣਯੋਗ ਰੂਪ",
-       "tooltip-t-permalink": "ਸਫ਼à©\87 à¨¦à©\87 à¨\87ਸ à¨°à©\80ਵਿà¨\9cਨ ਲਈ ਪੱਕੀ ਕੜੀ",
+       "tooltip-t-permalink": "ਸਫ਼à©\87 à¨¦à©\87 à¨\87ਸ à¨¦à©\81ਹਰਾà¨\85 ਲਈ ਪੱਕੀ ਕੜੀ",
        "tooltip-ca-nstab-main": "ਸਮੱਗਰੀ ਸਫ਼ਾ ਵੇਖੋ",
        "tooltip-ca-nstab-user": "ਵਰਤੋਂਕਾਰ ਸਫ਼ਾ ਵੇਖੋ",
        "tooltip-ca-nstab-media": "ਮੀਡਿਆ ਪੇਜ ਵੇਖੋ",
        "authmanager-email-help": "ਈਮੇਲ ਪਤਾ",
        "authmanager-realname-label": "ਅਸਲੀ ਨਾਂ",
        "authmanager-realname-help": "ਇਸ ਉਪਭੋਗੀ ਦਾ ਅਸਲ ਨਾਮ",
-       "authmanager-provider-temporarypassword": "à¨\86ਰà¨\9c਼à©\80 à¨ªà¨¾à¨¸à¨µà¨°à¨¡",
+       "authmanager-provider-temporarypassword": "à¨\86ਰà¨\9c਼à©\80 à¨²à©°à¨\98-ਸ਼ਬਦ",
        "authprovider-resetpass-skip-label": "ਛੱਡ ਦਿਉ",
        "authform-wrongtoken": "ਗਲਤ ਟੋਕਨ",
        "specialpage-securitylevel-not-allowed-title": "ਇਜਾਜ਼ਤ ਨਹੀਂ",
index 5b08e77..3f6dd84 100644 (file)
        "ipb_expiry_old": "Czas wygaśnięcia blokady już minął.",
        "ipb_expiry_temp": "Ukryte blokowanie nazwy użytkownika należy wykonać trwale.",
        "ipb_hide_invalid": "Ukrycie konta tego użytkownika nie jest możliwe, wykonał on więcej niż {{PLURAL:$1|jedną edycję|$1 edycje|$1 edycji}}.",
+       "ipb_hide_partial": "Ukrywanie nazwy użytkownika jest możliwe tylko przy blokadach całkowitych.",
        "ipb_already_blocked": "„$1” jest już zablokowany",
        "ipb-needreblock": "$1 jest już zablokowany. Czy chcesz zmienić ustawienia blokady?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Inna blokada|Inne blokady}}",
        "logentry-block-block": "$1 {{GENDER:$2|zablokował|zablokowała|zablokował(a)}} {{GENDER:$4|$3}}, czas blokady: $5 $6",
        "logentry-block-unblock": "$1 {{GENDER:$2|zdjął|zdjęła}} blokadę z {{GENDER:$4|$3}}",
        "logentry-block-reblock": "$1 {{GENDER:$2|zmienił|zmieniła}} ustawienia blokady dla {{GENDER:$4|$3}}, czas blokady: $5 $6",
-       "logentry-partialblock-block-page": "{{PLURAL:$1|strona|strony}}: $2",
-       "logentry-partialblock-block-ns": "{{PLURAL:$1|przestrzeń nazw|przestrzenie nazw}}: $2",
+       "logentry-partialblock-block-page": "{{PLURAL:$1|strony|stron}}: $2",
+       "logentry-partialblock-block-ns": "przestrzeni nazw: $2",
        "logentry-partialblock-block": "$1 {{GENDER:$2|wyłączył|wyłączyła}} {{GENDER:$4|$3}} z edytowania $7, czas blokady: $5 $6",
        "logentry-partialblock-reblock": "$1 {{GENDER:$2|zmienił|zmieniła}} ustawienia wyłączenia {{GENDER:$4|$3}} z edytowania $7, czas blokady: $5 $6",
        "logentry-non-editing-block-block": "$1 {{GENDER:$2|zablokował|zablokowała}} {{GENDER:$4|$3}} wykonywanie określonych operacji nieedycyjnych, czas blokady: $5 $6",
index c7b28a9..36c6a1b 100644 (file)
        "ipb_expiry_old": "O tempo de expiração está no passado.",
        "ipb_expiry_temp": "Bloqueios com nome de utilizador oculto devem ser permanentes.",
        "ipb_hide_invalid": "Não foi possível suprimir esta conta; ela tem mais de {{PLURAL:$1|uma edição|$1 edições}}.",
+       "ipb_hide_partial": "Os bloqueios em que o nome de utilizador é ocultado não podem ser parciais, têm de ser para todo o ''site''.",
        "ipb_already_blocked": "\"$1\" já se encontra bloqueado",
        "ipb-needreblock": "$1 já se encontra bloqueado. Deseja alterar as configurações?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Outro bloqueio|Outros bloqueios}}",
index fa9bf44..796d436 100644 (file)
                        "BadDog",
                        "The Discoverer",
                        "Bencemac",
-                       "Zoranzoki21"
+                       "Zoranzoki21",
+                       "Woytecr"
                ]
        },
        "sidebar": "{{notranslate}}",
        "anoncontribs": "Same as {{msg-mw|mycontris}} but used for non-logged-in users.\n\nSee also:\n* {{msg-mw|Accesskey-pt-anoncontribs}}\n* {{msg-mw|Tooltip-pt-anoncontribs}}\n{{Identical|Contribution}}",
        "contribsub2": "Contributions for \"user\" (links). Parameters:\n* $1 is an IP address or a username, with a link which points to the user page (if registered user).\n* $2 is list of tool links. The list contains a link which has text {{msg-mw|Sp-contributions-talk}}.\n* $3 is a plain text username used for GENDER.\n{{Identical|For $1}}",
        "contributions-userdoesnotexist": "This message is used in [[Special:Contributions]]. It is used to tell the user that the name he searched for doesn't exist.\n\nParameters:\n* $1 - a username\n{{Identical|Userdoesnotexist}}",
+       "negative-namespace-not-supported": "This message is used in [[Special:Contributions]] to tell users that use namespaces with negative value. It not supported as associated namespace(s) doesn't exist.",
        "nocontribs": "Used in [[Special:Contributions]] and [[Special:DeletedContributions]].\n\nSee examples: [[Special:Contributions/x]] and [[Special:DeletedContributions/x]].\n\nParameters:\n* $1 - (Unused) the user name",
        "uctop": "This message is used in [[Special:Contributions]]. It is used to show that a particular edit was the last made to a page. Example: 09:57, 11 February 2008 (hist) (diff) Pagename‎ (edit summary) (current)\n{{Identical|Current}}",
        "month": "Used in [[Special:Contributions]] and history pages ([{{fullurl:Sandbox|action=history}} example]), as label for a dropdown box to select a specific month to view the edits made in that month, and the earlier months. See also {{msg-mw|year}}.",
        "logentry-block-block": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string\n\nCf. {{msg-mw|Blocklogentry}}",
        "logentry-block-unblock": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n\nCf. {{msg-mw|Unblocklogentry}}",
        "logentry-block-reblock": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string\n\nCf. {{msg-mw|Reblock-logentry}}",
-       "logentry-partialblock-block-page": "Page portion of {{msg-mw|logentry-partialblock-block}}\n* $1 - number of pages\n* - $2 list of pages",
-       "logentry-partialblock-block-ns": "Namespace portion of {{msg-mw|logentry-partialblock-block}}\n* $1 - number of namespaces\n* - $2 list of namespaces",
+       "logentry-partialblock-block-page": "Page portion of {{msg-mw|logentry-partialblock-block}}\n* $1 - number of pages\n* $2 - list of pages",
+       "logentry-partialblock-block-ns": "Namespace portion of {{msg-mw|logentry-partialblock-block}}\n* $1 - number of namespaces\n* $2 - list of namespaces",
        "logentry-partialblock-block": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string\n* $7 - Restrictions list {{msg-mw|logentry-partialblock-block-page}} and/or {{msg-mw|logentry-partialblock-block-ns}}\n\nCf. {{msg-mw|Blocklogentry}}",
        "logentry-partialblock-reblock": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string\n* $7 - Restrictions list {{msg-mw|logentry-partialblock-block-page}} and/or {{msg-mw|logentry-partialblock-block-ns}}\n\nCf. {{msg-mw|Reblock-logentry}}",
        "logentry-non-editing-block-block": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string\n\nCf. {{msg-mw|Blocklogentry}}",
index fb9452c..b48918d 100644 (file)
                        "Force majeure",
                        "Infovarius",
                        "Cronolio",
-                       "Nk88"
+                       "Nk88",
+                       "Edward Chernenko"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "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": "ЭÑ\82а ÐºÐ°Ñ\82егоÑ\80иÑ\8f Ñ\81одеÑ\80жиÑ\82 Ð¼ÐµÑ\82кÑ\83 <code><nowiki>__HIDDENCAT__</nowiki></code> Ñ\81одеÑ\80жимом Ñ\81Ñ\82Ñ\80аниÑ\86е, Ñ\87Ñ\82о Ð¿Ð¾ Ñ\83молÑ\87аниÑ\8e Ð¿Ñ\80едоÑ\82вÑ\80аÑ\89аеÑ\82 ÐµÑ\91 Ð¾Ñ\82обÑ\80ажение Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\85 Ð² Ñ\80азделе ÐºÐ°Ñ\82егоÑ\80ий.",
+       "hidden-category-category-desc": "Ð\92 Ð²Ð¸ÐºÐ¸-Ñ\82екÑ\81Ñ\82е Ñ\8dÑ\82ой ÐºÐ°Ñ\82егоÑ\80ии ÐµÑ\81Ñ\82Ñ\8c Ð¼ÐµÑ\82ка <code><nowiki>__HIDDENCAT__</nowiki></code>, Ð¸Ð·-за Ñ\87его Ð¾Ð½Ð° Ð½Ðµ Ð¿Ð¾ÐºÐ°Ð·Ñ\8bваеÑ\82Ñ\81Ñ\8f Ð² Ñ\80азделе Â«Ð\9aаÑ\82егоÑ\80ии:» Ñ\82еÑ\85 Ñ\81Ñ\82Ñ\80аниÑ\86, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ð² Ð½ÐµÑ\91 Ð²ÐºÐ»Ñ\8eÑ\87енÑ\8b.",
        "trackingcategories-nodesc": "Описание отсутствует.",
        "trackingcategories-disabled": "Категория отключена",
        "mailnologin": "Адрес для отправки отсутствует",
index 360f0ec..13ebce5 100644 (file)
@@ -17,6 +17,7 @@
        "tog-hideminor": "Cua is acontzos minores in sa pàgina de is ùrtimas mudàntzias",
        "tog-hidepatrolled": "Cua is mudas verificadas in is ùrtimos càmbios",
        "tog-newpageshidepatrolled": "Cua sas pàginas verificadas dae sa lista de sas pàginas noas",
+       "tog-hidecategorization": "Cua sa clasificatzione de sas pàginas",
        "tog-extendwatchlist": "Ammània sa watchlist pro ammustrare totu sos càmbios, non sos prus reghentes ebbia",
        "tog-usenewrc": "Pone in pare sos càmbios de cada pàgina in sos ùrtimos càmbios e in sa watchlist",
        "tog-numberheadings": "Auto-numeratzione de sos tìtulos",
@@ -26,6 +27,7 @@
        "tog-watchdefault": "Annanghe pàginas e documentos chi apo cambiadu in sa lista de pàginas annotadas mea",
        "tog-watchmoves": "Annanghe pàginas e documentos chi apo mòvidu in sa lista de pàginas annotadas mea",
        "tog-watchdeletion": "Annanghe pàginas e documentos chi apo burradu in sa lista de pàginas annotadas mea",
+       "tog-watchuploads": "Annanghe sos documentos noos chi càrrigo a sas pàginas annotadas",
        "tog-watchrollback": "Pone is pàginas innue apo fatu su rollback in is pàginas annotadas",
        "tog-minordefault": "Marca comente minores pro difetu totu sos càmbios",
        "tog-previewontop": "Ammustra s'anteprima in subra de sa casella de càmbiu e no in suta",
        "tog-enotifminoredits": "Imbia·mi una post.el. fintzas pro sos càmbios minores de sas pàginas e documentos",
        "tog-enotifrevealaddr": "Faghe ischire s'indiritzu de sa post.el. mea in sas notìficas de sa post.els",
        "tog-shownumberswatching": "Ammustra su nùmeru de is impitadores chi ant annotadu sa pàgina",
-       "tog-oldsig": "Firma atuale:",
+       "tog-oldsig": "Sa firma atuale tua:",
        "tog-fancysig": "Trata sa firma comente unu testu wiki (sena ligàmenes automàticos)",
-       "tog-uselivepreview": "Imprea sa funtzione \"anteprima bia\" (isperimentale)",
+       "tog-uselivepreview": "Ammustra sas anteprimas chene torrare a carrigare sa pàgina",
        "tog-forceeditsummary": "Averte·mi si su campu ogetu est bòidu",
        "tog-watchlisthideown": "Cua sas modìficas meas dae sa watclist",
        "tog-watchlisthidebots": "Cua sas mudas de sos bots dae sa watchlist",
        "tog-watchlisthideminor": "Cua sos càmbios minores dae sa watchlist",
        "tog-watchlisthideliu": "Cua is càmbios de is utentes identificados dae sa lista de pàginas annotadas",
+       "tog-watchlistreloadautomatically": "Torra a carrigare sa lista de sas pàginas annotadas cada borta chi unu filtru benit cambiadu (tenet bisòngiu de JavaScript)",
        "tog-watchlisthideanons": "Cua is càmbios de is impitadores anònimos dae sa lista de pàginas annotadas",
        "tog-watchlisthidepatrolled": "Cua mudas verificadas dae sa watchlist",
+       "tog-watchlisthidecategorization": "Cua sa clasificatzione de sas pàginas",
        "tog-ccmeonemails": "Imbia·mi sas còpias de is post.els chi imbio a is àteros utentes",
        "tog-diffonly": "No ammustras su cuntenutu de sa pàgina a pustis de sa bisura de is diferèntzias",
        "tog-showhiddencats": "Ammustra sas categorias cuadas",
        "october-date": "Santugaine $1",
        "november-date": "Santandria $1",
        "december-date": "Nadale $1",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Categoria|Categorias}}",
        "category_header": "Pàginas in sa categoria \"$1\"",
        "subcategories": "Sutacategorias",
        "returnto": "Torra a $1.",
        "tagline": "Dae {{SITENAME}}",
        "help": "Agiudu",
+       "help-mediawiki": "Agiudu a pitzu de MediaWiki",
        "search": "Chirca",
        "searchbutton": "Chirca",
        "go": "Bae",
        "mypreferencesprotected": "Non tenes su permissu de cambiare is preferèntzias tuas.",
        "ns-specialprotected": "Is pàginas ispetziales non podent èssere acontzadas.",
        "titleprotected": "Sa creatzione de una pàgina cun custu tìtulu est istada arreada dae [[User:$1|$1]].\nSa motivatzione est <em>$2</em>.",
+       "invalidtitle": "Tìtulu non bàlidu",
        "invalidtitle-knownnamespace": "Su tìtulu cun nùmene-logu \"$2\" e testu \"$3\" no est bàlidu",
        "invalidtitle-unknownnamespace": "Su tìtulu cun nùmene-logu disconnotu de nùmeru $1 e testu \"$2\" no est bàlidu",
        "exception-nologin": "Non ses intrau",
        "virus-scanfailed": "iscansione faddida (còdighe $1)",
        "virus-unknownscanner": "antivirus disconnotu:",
        "logouttext": "<strong>As acabadu sa sessione.</strong>\n\nTene contu ca is pàginas ki sunt giai abertas in àteras bentanas podent sighire a pàrrer comente cando fias identificadu, fintzas a cando non ddas renfriscas dae su browser tuo.",
+       "cannotlogoutnow-title": "Impossìbile essire como",
+       "cannotlogoutnow-text": "No est possìbile a essire cando ses impreende $1.",
        "welcomeuser": "Bene bènnidu, $1!",
        "welcomecreation-msg": "Su contu tuo est istadu creadu.\nSi boles podes cambiare is [[Special:Preferences|prefèntzias tuas]] pro {{SITENAME}}",
        "yourname": "Nùmene utente:",
        "yourdomainname": "Ispetzìfica su domìniu",
        "password-change-forbidden": "Non podes cambiare sa password in custa wiki.",
        "login": "Intra",
+       "login-security": "Verìfica s'identidade tua",
        "nav-login-createaccount": "Intra / crea contu",
        "logout": "Serra sessione",
        "userlogout": "Essida",
        "createacct-reason": "Motivu",
        "createacct-reason-ph": "Pro ite ses creende un àteru contu",
        "createacct-submit": "Crea su contu tuo",
-       "createacct-another-submit": "Crea un àteru contu",
+       "createacct-another-submit": "Crea unu contu",
+       "createacct-continue-submit": "Sighi cun sa creatzione de su contu",
+       "createacct-another-continue-submit": "Sighi cun sa creatzione de su contu",
        "createacct-benefit-heading": "{{SITENAME}} est òpera de gente che tue.",
        "createacct-benefit-body1": "{{PLURAL:$1|acontzu|acontzos}}",
        "createacct-benefit-body2": "{{PLURAL:$1|pàgina|pàginas}}",
        "createacct-benefit-body3": "{{PLURAL:$1|contribudore retzente|contribudores retzentes}}",
        "badretype": "Is passwords chi as insertadu non currispondent.",
+       "usernameinprogress": "Sa creatzione de unu contu pro custu impitadore est giai in caminu. Pro praghere iseta.",
        "userexists": "Su nùmene impitadore insertadu est giai impreadu.\nSèbera unu nùmene diferente.",
        "loginerror": "Faddina de identificatzione",
        "createacct-error": "Faddina in sa creatzione de su contu",
        "retypenew": "Torra a iscrìere sa password noa:",
        "resetpass_submit": "Càmbia sa password e identifica·ti",
        "changepassword-success": "Sa password tua est istada cambiada in manera currègida!",
+       "botpasswords-label-create": "Crea",
+       "botpasswords-label-update": "Agiorna",
+       "botpasswords-label-cancel": "Annulla",
+       "botpasswords-label-delete": "Iscantzella",
+       "botpasswords-label-resetpassword": "Torra a impostare sa crae de intrada",
        "resetpass_forbidden": "Non faghet a cambiare sa password",
+       "resetpass_forbidden-reason": "Non faghet a cambiare sas craes: $1",
        "resetpass-no-info": "Depes èsser identificadu pro abèrrer custa pàgina deretu.",
        "resetpass-submit-loggedin": "Càmbia password",
        "resetpass-submit-cancel": "Burra",
        "passwordreset-email": "Indiritzu email:",
        "passwordreset-emailtitle": "Particulares de s'impitadore in {{SITENAME}}",
        "passwordreset-emailelement": "Nùmene utente: \n$1\n\nPassword temporànea: \n$2",
+       "passwordreset-invalidemail": "Indiritzu de posta eletrònica non vàlidu",
        "changeemail": "Càmbia indiritzu email",
        "changeemail-header": "Càmbia s'indirìtzu email de su contu",
        "changeemail-oldemail": "Indiritzu email atuale:",
        "sig_tip": "Firma·ti cun data e ora",
        "hr_tip": "Lìnia orizontale (de impreare cun critèriu)",
        "summary": "Ogetu:",
-       "subject": "Tema/tìtulu:",
+       "subject": "Sugetu:",
        "minoredit": "Custu est unu càmbiu minore",
        "watchthis": "Annota custa pàgina",
        "savearticle": "Sarva sa pàgina",
+       "publishpage": "Pùblica sa pàgina",
+       "publishchanges": "Pùblica sas modìficas",
+       "savearticle-start": "Sarva sa pàgina...",
+       "savechanges-start": "Sarva sas modìficas...",
+       "publishpage-start": "Pùblica sa pàgina...",
+       "publishchanges-start": "Pùblica sas modìficas...",
        "preview": "Antiprima",
        "showpreview": "Ammustra s'antiprima",
        "showdiff": "Ammustra is càmbios",
+       "blankarticle": "<strong>Atentzione:</strong> Sa pàgina chi ses creende est bòida.\nSi as a incarcare torra \"$1\", sa pàgina at a èssere creada chene cuntenutu perunu.",
        "anoneditwarning": "<strong>Atentzione:</strong> Non ses identificadu.\nS'indiritzu IP tuo at a èssere annotadudu si faghes unos cantos càmbios. Si <strong>identìficas</strong> tibe o <strong>[$2 creas unu contu]</strong>, is càmbios tuos ant a èssere marcados cun su nùmene utente tuo, paris a àteros giuamentos.",
        "anonpreviewwarning": "''Non ses identificadu. Sarvende s'indiritzu IP tuo at a èssere registradu in s'istòria de sa pàgina.''",
-       "missingcommenttext": "Inserta unu cummentu inoghe suta.",
+       "missingsummary": "<strong>Ammenta·ti</strong> No as frunidu unu resumu de sas modìficas. Si as a incarcare torra \"$1\", sa modìfica tua at a èssere sarvada chene resumu.",
+       "missingcommenttext": "Inserta unu cummentu.",
        "summary-preview": "Antiprima ogetu:",
        "subject-preview": "Antiprima tema/tìtulu:",
        "blockedtitle": "S'impitadore est istadu bloccadu",
        "content-not-allowed-here": "Cuntenutu a manera \"$1\" no adduidu in sa pàgina [[:$2]]",
        "editwarning-warning": "S'essida dae custa pàgina diat pòdere cajonare sa pèrdida de totus sos càmbios chi as fatu.\nSi ses autentificadu, podes disabilitare custu avisu in sa setzione \"{{int:prefs-editing}}\" de sas preferèntzias tuas.",
        "editpage-notsupportedcontentformat-title": "Formadu de càbidu non suportadu",
+       "slot-name-main": "Printzipale",
        "content-model-wikitext": "wikitestu",
        "content-model-text": "testu normale",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "content-json-empty-object": "Ogetu bòidu",
        "post-expand-template-inclusion-category": "Pàginas in is cale sa dimensione templates inclùdidos propassat su lìmite cunsentidu",
        "post-expand-template-argument-category": "Pàginas cuntenentes templates cun argumentos fartados",
        "viewpagelogs": "Càstia is registros de custa pàgina",
        "pageinfo-lasttime": "Data de s'ùrtimu càmbiu",
        "pageinfo-edits": "Nùmeru totale de càmbios",
        "pageinfo-authors": "Nùmeru totale de autores dislindados",
+       "pageinfo-hidden-categories": "{{PLURAL:$1|Categoria cuada|Categorias cuadas}} ($1)",
        "pageinfo-toolboxlink": "Informatziones pro sa pàgina",
        "pageinfo-redirectsto-info": "info",
        "pageinfo-contentpage-yes": "Eja",
        "watchlistedit-normal-title": "Càmbia sa lista de annotadas",
        "watchlistedit-raw-titles": "Tìtulos:",
        "watchlistedit-clear-titles": "Tìtulos:",
+       "watchlisttools-clear": "Isbòida sa lista de sas pàginas annotadas",
        "watchlisttools-view": "Càstia mudàntzias de importu",
        "watchlisttools-edit": "Càstia e càmbia sa lista de pàginas annotadas",
        "watchlisttools-raw": "Acontza sa watchlist dae su testu",
        "specialpages-group-pages": "Listas de is pàginas",
        "tag-filter": "Filtra pro [[Special:Tags|etichetta]]:",
        "tag-filter-submit": "Filtru",
+       "tag-list-wrapper": "[[Special:Tags|{{PLURAL:$1|Eticheta|Etichetas}}]]: $2",
        "tags-active-yes": "Eja",
        "tags-active-no": "No",
        "tags-edit": "càmbia",
index 28fedc4..db5c414 100644 (file)
        "version-parserhooks": "Kuke parsera",
        "version-variables": "Promjenjive",
        "version-antispam": "Sprečavanje spama",
+       "version-api": "Prilozi",
        "version-other": "Ostalo",
        "version-mediahandlers": "Upravljači medije",
        "version-hooks": "Kuke",
index 74d4ab6..3fe6207 100644 (file)
        "categorypage": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵜⴰⴳⴳⴰⵢⵜ",
        "viewtalkpage": "ⵥⵔ ⴰⵎⵙⴰⵡⴰⵍ",
        "otherlanguages": "ⵙ ⵜⵓⵜⵍⴰⵢⵉⵏ ⵢⴰⴹⵏ",
-       "redirectedfrom": "(âµ\89ⴽⴽⴰ â´· $1)",
+       "redirectedfrom": "(âµ\9câµ\8eâµ\8eâ´°âµ\9câµ\9câµ\89 â´· âµ£âµ\96 $1)",
        "redirectpagesub": "ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵎⴰⵜⵜⵉ",
        "redirectto": "ⴰⵙⵎⴰⵜⵜⵉ ⵙ :",
        "lastmodifiedat": "ⴰⵙⵏⴼⵍ ⵉⴳⴳⵯⵔⴰⵏ ⵖ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉⵜⵜⵢⴰⵡⵙⴽⴰⵔ ⴰⵙⵙ ⵏ $1 ⵖ $2.",
        "last": "ⵣⵡⵔ",
        "page_first": "ⵜⴰⵎⵣⵡⴰⵔⵓⵜ",
        "page_last": "ⵜⴰⵎⴳⴳⴰⵔⵓⵜ",
-       "histlegend": "Diff selection: âµ\95âµ\9bâµ\8e the radio boxes âµ\8f âµ\9câµ\93âµ\8fâµ\96âµ\89âµ\8dâµ\89âµ\8f âµ\8fâµ\8fâ´° âµ\9câµ\94âµ\89âµ\9c â´°â´· âµ\9câµ\99âµ\8eⵣⴰⵣⴰâµ\8dâµ\9c, âµ\9câ´°â´·â´·âµ\9c âµ\96â´¼ enter âµ\8fâµ\96 âµ\9câ´°â´±âµ\93âµ\9fâµ\93âµ\8fâµ\9c âµ\89âµ\8dâµ\8dâ´°âµ\8f â´·â´·â´°âµ¡ â´°âµ\99.<br />\nâµ\9câµ\89ⵣⴳⵣâµ\89âµ\8dâµ\89âµ\8f: <strong>({{int:cur}})</strong> = â´°âµ\8eⵣⴰâµ\94â´°âµ¢ âµ\89âµ\8dâµ\8dâ´°âµ\8f â´· âµ\9câµ\93âµ\8fâµ\96âµ\89âµ\8dâµ\9c âµ\89ⴳⴳⵯâµ\94â´°âµ\8f, <strong>({{int:last}})</strong> = â´°âµ\8eⵣⴰâµ\94â´°âµ¢ âµ\89âµ\8dâµ\8dâ´°âµ\8f â´· âµ\9câµ\93âµ\8fâµ\96âµ\89âµ\8dâµ\9c âµ\89ⵣⵡⴰâµ\94âµ\8f âµ\9câ´°â´·, <strong>{{int:minoreditletter}}</strong> = â´°âµ\99âµ\8fâ´¼âµ\8d âµ\93âµ\8eâµ¥âµ\89âµ¢.",
+       "histlegend": "Diff selection: âµ\84âµ\8dâµ\8dâµ\8e âµ\9câµ\93âµ\8fâµ\96âµ\89âµ\8dâµ\89âµ\8f âµ\8fâµ\8fâ´° âµ\9câµ\94âµ\89âµ\9c â´°â´· âµ\9câµ\99âµ\8eⵣⴰⵣⴰâµ\8dâµ\9c, âµ\9câ´°â´·â´·âµ\9c â´¼ enter âµ\8fâµ\96 âµ\9câ´°â´±âµ\93âµ\9fâµ\93âµ\8fâµ\9c âµ\89âµ¥âµ\8dâµ\89âµ\8f âµ\99 âµ\8eⴰⵢⴰâµ\8fâµ\8f.<br />\nâ´°âµ\8fâ´°âµ\8eâ´½ âµ\8f âµ\9cⵣⴳⵣâµ\89âµ\8dâµ\89âµ\8f : <strong>({{int:cur}})</strong> = â´°âµ\8eⵣⴰâµ\94â´°âµ¢ âµ\89âµ\8dâµ\8dâ´°âµ\8f â´³âµ\94â´°âµ\99 â´· âµ\9câµ\93âµ\8fâµ\96âµ\89âµ\8dâµ\9c â´°â´½â´½âµ¯ âµ\89ⴳⴳⵯâµ\94â´°âµ\8f, <strong>({{int:last}})</strong> = â´°âµ\8eⵣⴰâµ\94â´°âµ¢ âµ\89âµ\8dâµ\8dâ´°âµ\8f â´³âµ\94â´°âµ\99 â´· âµ\9câµ\93âµ\8fâµ\96âµ\89âµ\8dâµ\9c âµ\9câµ\9c â´· âµ\89ⵣⵡⴰâµ\94âµ\8f, <strong>{{int:minoreditletter}}</strong> = â´°âµ\99âµ\8fâ´¼âµ\8d âµ\8eⵥⵥâµ\89âµ\8f.",
        "history-fieldset-title": "ⵙⵉⴳⴳⵍ ⵉⵣⵣⵔⴰⵢⵏ",
        "history-show-deleted": "ⵖⴰⵔ ⵜⵓⵏⵖⵉⵍⵜ ⵏⵏⴰ ⵉⵜⵜⵡⴰⴽⴽⵙⵏ",
        "histfirst": "ⴰⴽⴽⵯ ⵉⵇⴷⵎⵏ",
        "history-feed-title": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵜⵓⵏⵖⵉⵍⵉⵏ",
        "history-feed-description": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵜⵓⵏⵖⵉⵍⵉⵏ ⵏ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉⵍⵍⴰⵏ ⵖ ⵓⵡⵉⴽⵉ",
        "history-feed-item-nocomment": "$1 ⵖ $2",
-       "rev-delundel": "Mel/ĥbu",
+       "rev-delundel": "ⵙⵎⵍ/ⵙⵙⵏⵜⵍ",
        "rev-showdeleted": "ⵎⵍ",
        "revdelete-show-file-submit": "ⵢⴰⵀ",
        "revdelete-radio-set": "ⵉⵏⵜⵍ",
        "revdel-restore": "sbadl tannayt",
        "pagehist": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵜⴰⵙⵏⴰ",
        "deletedhist": "ⴰⵎⵣⵔⵓⵢ ⵉⵜⵜⵡⴰⴽⴽⵙⵏ",
-       "mergehistory": "Smun imzruyn n tisniwin.",
+       "mergehistory": "ⵙⵎⵓⵏ ⵉⵎⵣⵔⵓⵢⵏ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ",
        "mergehistory-header": "Tasna yad ar ttjja ad tsmunt ticggarin n umzruy ɣ yat tasna taɣbalut s yat tasna tamaynut.",
-       "mergehistory-box": "Smun ilqqmn ad n snat tisniwin :",
+       "mergehistory-box": "ⵙⵎⵓⵏ ⵉⵣⵣⵔⴰⵢⵏ ⵏ ⵙⵏⴰⵜ ⵜⴰⵙⵏⵉⵡⵉⵏ :",
        "mergehistory-from": "ⵜⴰⵙⵏⴰ ⵜⴰⵙⴰⵍⴰⵏⵜ:",
        "mergehistory-into": "ⵜⴰⵙⵏⴰ ⵏ ⵓⵡⵜⵜⴰⵙ:",
        "mergehistory-list": "Amzruy n imbddln lli munin.",
        "searchprofile-advanced-tooltip": "ⵙⵉⴳⴳⵍ ⵖ custom namespaces",
        "search-result-size": "$1 ({{PLURAL:$2|1 ⵜⴳⵓⵔⵉ|$2 ⵜⴳⵓⵔⵉⵡⵉⵏ}})",
        "search-result-category-size": "$1 {{PLURAL:$1|ⵓⴳⵎⴰⵎ|ⵉⴳⵎⴰⵎⵏ}} ($2 {{PLURAL:$2|ⵡⴰⴷⵓⵎⵙⵉⵍ|ⵉⴷⵓⵎⵙⵉⵍⵏ}}, $3 {{PLURAL:$3|ⵓⴼⴰⵢⵍⵓ|ⵉⴼⴰⵢⵍⵓⵜⵏ}})",
-       "search-redirect": "(âµ\89ⴽⴽⴰ â´· $1)",
+       "search-redirect": "(âµ\9câµ\8eâµ\8eâ´°âµ\9câµ\9câµ\89 â´· âµ£âµ\96 $1)",
        "search-section": "(ⵜⵉⴳⵣⵎⵉ $1)",
        "search-category": "(ⵜⴰⴳⴳⴰⵢⵜ $1)",
        "search-suggest": "ⵉⵙ ⵜⵔⵉⵜ ⴰⴷ ⵜⵉⵏⵉⵜ: $1",
        "grouppage-sysop": "{{ns:project}}:ⵉⵏⵎⵀⴰⵍⵏ",
        "right-read": "ⵖⵔ ⵜⴰⵙⵏⵉⵡⵉⵏ",
        "right-edit": "ⵙⵏⴼⵍ ⵜⴰⵙⵏⵉⵡⵉⵏ",
-       "right-move": "âµ\99âµ\8eâµ\93ⵜⵜⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ",
-       "right-move-categorypages": "âµ\99âµ\8eâµ\93ⵜⵜⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵜⴰⴳⴳⴰⵢⵜ",
+       "right-move": "âµ\99âµ\8eâ´°ⵜⵜⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ",
+       "right-move-categorypages": "âµ\99âµ\8eâ´°ⵜⵜⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵜⴰⴳⴳⴰⵢⵜ",
        "right-delete": "ⴽⴽⵙ ⵜⴰⵙⵏⵉⵡⵉⵏ",
        "newuserlogpage": "Aɣmis n willi mmurzmn imiḍan amsqdac",
        "rightslog": "Anɣmas n imbddlnn izrfan n umsqdac",
        "action-createpage": "ⵙⵏⵓⵍⴼⵓ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "action-createtalk": "ⵙⵏⵓⵍⴼⵓ ⵜⴰⵙⵏⴰ ⴰⴷ ⵏ ⵓⵎⵙⴰⵡⴰⵍ",
        "action-createaccount": "snulf amiḍan ad n usqdac",
-       "action-move": "âµ\99âµ\8eâµ\93ⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ",
-       "action-move-categorypages": "âµ\99âµ\8eâµ\93ⵜⵜⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵓⵙⵎⵉⵍ",
-       "action-movefile": "âµ\99âµ\8eâµ\93ⵜⵜⵉ ⴰⴼⴰⵢⵍⵓ ⴰⴷ",
+       "action-move": "âµ\99âµ\8eâ´°ⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ",
+       "action-move-categorypages": "âµ\99âµ\8eâ´°ⵜⵜⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵓⵙⵎⵉⵍ",
+       "action-movefile": "âµ\99âµ\8eâ´°ⵜⵜⵉ ⴰⴼⴰⵢⵍⵓ ⴰⴷ",
        "action-delete": "ⴽⴽⵙ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "nchanges": "$1 {{PLURAL:$1|ⵓⵙⵏⴼⵍ|ⵉⵙⵏⴼⵉⵍⵏ}}",
        "enhancedrc-history": "ⴰⵎⵣⵔⵓⵢ",
        "recentchanges-label-unpatrolled": "Ambddl ad ura jju ittmẓra",
        "recentchanges-label-plusminus": "ⵜⵏⴼⵍ ⵜⵉⴷⴷⵉ ⵏ ⵜⴰⵙⵏⴰ ⵙ ⵡⵓⵟⵟⵓⵏ ⴰⴷ ⵏ ⵉⴷ ⴱⴰⵢⵜ",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ⵥⵔ ⵓⵍⴰ [[Special:NewPages|ⵜⴰⵍⵉⵙⵜⵜ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ]])",
-       "rcfilters-legend-heading": "<strong>ⵜⵉⵣⴳⵣⵉⵍⵉⵏ:</strong>",
+       "rcfilters-legend-heading": "<strong>ⵜⵉⵣⴳⵣⵉⵍⵉⵏ :</strong>",
        "rcfilters-days-title": "ⵓⵙⵙⴰⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ",
        "rcfilters-hours-title": "ⵜⵉⵙⵔⴰⴳⵉⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ",
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|ⵡⴰⵙⵙ|ⵡⵓⵙⵙⴰⵏ}}",
        "lonelypagestext": "Tisnawinad ur ur tuyzdaynt z ulla lant ɣ tisniwin yaḍnin ɣ {{SITENAME}}.",
        "uncategorizedpages": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵓⵔ ⴰⵎⵓⵏⵉⵏ ⵖ ⵜⴰⴳⴳⴰⵢⵉⵏ",
        "uncategorizedcategories": "ⵜⴰⴳⴳⴰⵢⵉⵏ ⵓⵔ ⴰⵎⵓⵏⵉⵏ ⵖ ⵜⴰⴳⴳⴰⵢⵉⵏ",
-       "prefixindex": "â´½âµ\93âµ\8dâµ\8dâµ\93 âµ\9câ´°âµ\99âµ\8fâµ\89ⵡâµ\89âµ\8f âµ\8dâ´°âµ\8fâµ\89âµ\8f â´°âµ£âµ¡âµ\89âµ\94",
+       "prefixindex": "âµ\9câ´°âµ\99âµ\8fâµ\89ⵡâµ\89âµ\8f â´°â´·â´·â´°âµ\8fâµ\89âµ\8f âµ\99 :",
        "protectedpages-page": "ⵜⴰⵙⵏⴰ",
        "listusers": "ⵜⴰⵍⵉⵙⵜⵜ ⵏ ⵉⵙⵎⵔⴰⵙⵏ",
        "usercreated": "{{GENDER:$3|ⵉⵏⵓⵍⴼⴰ|ⵜⵏⵓⵍⴼⴰ}} ⵖ $1 ⵖ $2",
        "newpages": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ",
-       "move": "âµ\99âµ\8eâµ\93ⵜⵜⵉ",
-       "movethispage": "âµ\99âµ\8eâµ\93ⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ",
+       "move": "âµ\99âµ\8eâ´°ⵜⵜⵉ",
+       "movethispage": "âµ\99âµ\8eâ´°ⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "unusedcategoriestext": "Taggayin ad llant waxxa gis nt ur tlli kra n tasna wala kra n taggayin yaḍnin",
        "notargettitle": "ⵡⴰⵍⵓ ⴰⵡⵜⵜⴰⵙ",
-       "nopagetext": "Tasna li trit ur tlli",
+       "nopagetext": "ⵜⴰⵙⵏⴰ ⵉⴳⴰⵏ ⴰⵡⵜⵜⴰⵙ ⵏⵏⴰ ⵏⵏ ⵜⴳⵉⵜ ⵓⵔ ⵜⵍⵍⵉ.",
        "pager-newer-n": "{{PLURAL:$1|1 ⴰⴽⴽⵯ ⵉⵊⴷⵉⴷⵏ|$1 ⴰⴽⴽⵯ ⵉⵊⴷⵉⴷⵏ}}",
        "pager-older-n": "{{PLURAL:$1|aqbur 1|aqbur $1}}",
        "suppress": "ⴽⴽⵙ",
        "log": "Logs",
        "all-logs-page": "All public logs",
        "log-title-wildcard": "Cabba s iswln li ttizwirnin s uṭṛiṣ ad",
-       "allpages": "â´½âµ\93âµ\8dâµ\8dâµ\93 âµ\9câ´°âµ\99âµ\8fâµ\89ⵡâµ\89âµ\8f",
+       "allpages": "âµ\9câ´°âµ\99âµ\8fâµ\89ⵡâµ\89âµ\8f â´°â´½â´½âµ¯",
        "nextpage": "ⵜⴰⵙⵏⴰ ⵜⵓⴹⴼⵉⵔⵜ ($1)",
-       "prevpage": "Tasna li izrin $1",
-       "allpagesfrom": "Mel tisniwin li ittizwirn z",
-       "allpagesto": "Mel tasniwin li ttgurunin s",
+       "prevpage": "ⵜⴰⵙⵏⴰ ⴷ ⵉⵣⵡⴰⵔⵏ ($1)",
+       "allpagesfrom": "ⵙⵎⵍ ⴷ ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴷⴷⴰⵏⵉⵏ ⵣⵖ :",
+       "allpagesto": "ⵙⵎⵍ ⴷ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵜⴳⴳⵔⵓⵏⵉⵏ ⵖ :",
        "allarticles": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴽⴽⵯ",
        "allinnamespace": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴽⴽⵯ ($1 namespace)",
        "allpagessubmit": "ⴼⵜⵓ",
        "sp-deletedcontributions-contribs": "ⵜⵉⴷⵔⴰⵡⵉⵏ",
        "linksearch": "ⴰⵔⵣⵣⵓ ⵖ ⵉⵍⵉⵏⴽⵏ ⵉⴱⵕⵕⴰⵏⴻⵏ",
        "linksearch-ok": "ⵙⵉⴳⴳⵍ",
-       "linksearch-line": "$1 tmmuttid z $2",
+       "linksearch-line": "$1 ⵜⵣⴷⵉ ⴷ ⵣⵖ $2",
        "listgrouprights-group": "ⵜⴰⵔⴰⴱⴱⵓⵜ",
        "listgrouprights-members": "(ⵜⴰⵍⵉⵙⵜⵜ ⵏ ⵉⴳⵎⴰⵎⵏ)",
        "emailuser": "Azn tabrat umsqdac ad",
        "restriction-type": "ⵜⵓⵔⴰⴳⵜ:",
        "restriction-level": "Restriction level:",
        "restriction-edit": "ⵙⵏⴼⵍ",
-       "restriction-move": "âµ\99âµ\8eâµ\93ⵜⵜⵉ",
-       "undeletelink": "mel/rard",
+       "restriction-move": "âµ\99âµ\8eâ´°ⵜⵜⵉ",
+       "undeletelink": "ⵙⵎⵍ/ⵙⵙⴰⴹⵓ ⴷ",
        "undeleteviewlink": "Ẓṛ",
        "undelete-search-submit": "ⵙⵉⴳⴳⵍ",
        "undelete-show-file-submit": "ⵢⴰⵀ",
-       "namespace": "Taɣult",
-       "invert": "amglb n ustay",
+       "namespace": "ⵉⴳⵔ :",
+       "invert": "ⵙⴳⴰⵍⴱ ⵜⴰⵙⵉⵍⵉⴽⵙⵢⵓⵏⵜ",
        "blanknamespace": "(ⴰⴷⵙⵍⴰⵏ)",
        "contributions": "ⵜⵉⴷⵔⴰⵡⵉⵏ ⵏ {{GENDER:$1|ⵓⵙⵎⵔⴰⵙ|ⵜⵙⵎⵔⴰⵙⵜ}}",
        "contributions-title": "ⵜⵉⴷⵔⴰⵡⵉⵏ ⵏ {{GENDER:$1|ⵓⵙⵎⵔⴰⵙ|ⵜⵙⵎⵔⴰⵙⵜ}} $1",
        "month": "ⵣⵖ ⵡⴰⵢⵢⵓⵔ (ⴷ ⵣⵉⴽⴽ ⵏⵏⵙ):",
        "year": "ⵣⵖ ⵓⵙⴳⴳⵯⴰⵙ (ⴷ ⵣⵉⴽⴽ ⵏⵏⵙ):",
        "sp-contributions-newbies": "ⵎⵍ ⵖⴰⵔ ⵜⵉⴷⵔⴰⵡⵉⵏ ⵏ ⵉⵎⵉⴹⴰⵏⵏ ⵉⵎⴰⵢⵏⵓⵜⵏ",
-       "sp-contributions-newbies-sub": "Z imiḍan (comptes) imaynutn",
+       "sp-contributions-newbies-sub": "ⵜⵉⵏ ⵉⵎⵉⴹⴰⵏⵏ ⵉⵎⴰⵢⵏⵓⵜⵏ ⴽⴰ",
        "sp-contributions-newbies-title": "Tiwuriwin n umqdac z imḍan imaynutn",
        "sp-contributions-blocklog": "Tinɣmas n willi ttuyqqanin (blocage)",
        "sp-contributions-deleted": "Tiwuriwin lli ittuykkasnin",
        "whatlinkshere": "ⵎⴰⴷ ⵉⵜⵜⴰⵡⵉⵏ ⵙ ⵖⵉⴷ",
        "whatlinkshere-title": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵜⵜⴰⵡⵢⵏ ⵙ \"$1\"",
        "whatlinkshere-page": "ⵜⴰⵙⵏⴰ :",
-       "linkshere": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴷ ⴹⴼⴰⵔⵏⵉⵏ ⴰⵔ ⵜⵜⴰⵡⵉⵏⵜ ⵙ <strong>$2</strong>:",
+       "linkshere": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴷ ⴹⴼⴰⵔⵏⵉⵏ ⴰⵔ ⵜⵜⴰⵡⵉⵏⵜ ⵙ <strong>$2</strong> :",
        "nolinkshere": "ⵓⵍⴰ ⴽⵔⴰ ⵏ ⵜⴰⵙⵏⴰ ⵓⵔ ⴰⵔ ⵜⴻⵜⵜⴰⵡⵉ ⵙ <strong>$2</strong>.",
        "nolinkshere-ns": "Ur tlla kra n tasna izdin d  '''$2''' ɣ tɣult l-ittuystayn.",
-       "isredirect": "Tasna immutin",
+       "isredirect": "ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵎⴰⵜⵜⵉ",
        "istemplate": "Illa gis",
        "isimage": "ⴰⵍⵉⵏⴽ ⵏ ⵓⴼⴰⵢⵍⵓ",
        "whatlinkshere-prev": "{{PLURAL:$1|$1 ⵉⵣⵡⴰⵔⵏ|$1 ⵣⵡⴰⵔⵏⵉⵏ}}",
        "blockip": "ⴳⴷⵍ {{GENDER:$1|ⴰⵙⵎⵔⴰⵙ|ⵜⴰⵙⵎⵔⴰⵙⵜ}}",
        "ipboptions": "2 ⵏ ⵜⵙⵔⴰⴳⵉⵏ:2 hours,1 ⵏ ⵡⴰⵙⵙ:1 day,3 ⵏ ⵡⵓⵙⵙⴰⵏ:3 days,1 ⵏ ⵉⵎⴰⵍⴰⵙⵙ:1 week,2 ⵏ ⵉⴷ ⵉⵎⴰⵍⴰⵙⵙ:2 weeks,1 ⵏ ⵡⴰⵢⵢⵓ:1 month,3 ⵏ ⵉⵢⵢⵉⵔⵏ:3 months,6 ⵏ ⵉⵢⵢⵉⵔⵏ:6 months,1 ⵏ ⵓⵙⴳⴳⵯⴰⵙ:1 year,ⴱⴷⴷⴰ:infinite",
        "ipbhidename": "ḥbu assaɣ n umsqdac ɣ imbdln d umuɣn",
-       "ipbwatchuser": "Tfr tisniwin d imsgdaln n umqdac",
+       "ipbwatchuser": "ⴹⴼⵓⵔ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵓⵎⵙⵔⴰⵙ ⴷ ⵜⵉⵏ ⵓⵎⵙⴰⵡⴰⵍ ⵏ ⵓⵙⵎⵔⴰⵙ ⴰⴷ",
        "autoblocklist-submit": "ⵙⵉⴳⴳⵍ",
        "ipblocklist": "ⵉⵙⵎⵔⴰⵙⵏ ⵜⵜⵡⴰⴳⴷⵍⵏⵉⵏ",
        "ipblocklist-submit": "ⵙⵉⴳⴳⵍ",
        "blocklogentry": "tqn [[$1]] s tizi izrin n $2 $3",
        "unblocklogentry": "ⵉⴽⴽⵙ ⴰⴳⴷⴷⵓⵍ ⵉ $1",
        "block-log-flags-nocreate": "Ammurzm n umiḍan urak ittuyskar",
-       "move-page": "âµ\99âµ\8eâµ\93ⵜⵜⵉ $1",
-       "move-page-legend": "âµ\99âµ\8eâµ\93ⵜⵜⵉ ⵜⴰⵙⵏⴰ",
+       "move-page": "âµ\99âµ\8eâ´°ⵜⵜⵉ $1",
+       "move-page-legend": "âµ\99âµ\8eâ´°ⵜⵜⵉ ⵜⴰⵙⵏⴰ",
        "movepagetext": "Swwur s tifrkkitad bac ad sbadlt uzwl tasna yad , s usmmattay n umzru ns s uzwl amaynu . Assaɣ Aqbur rad ig ɣil yan usmmattay n tasna s uzwl (titre) amynu . Tâḍart ad s tgt immattayn n ɣil f was fwas utumatik s dar uswl amaynu.  Iɣ tstit bac ad tskrt . han ad ur ttut ad tẓrt kullu  [[Special:DoubleRedirects|double redirection]] ou [[Special:BrokenRedirects|redirection cassée]]. Illa fllak ad ur ttut masd izdayn rad tmattayn s sin igmmaḍn ur igan yan.\n\nSmmem masd tasna ur rad tmmatti iɣ tlla kra n yat yaḍn lli ilan asw zund nttat . Abla ɣ dars amzruy ɣ ur illa umay,  nɣd yan usmmattay ifssusn. \n\n''' Han !'''\nMaya Iẓḍar ad iglb zzu uzddar ar aflla tasna yad lli bdda n nttagga. Illa fllak ad urtskr mara yigriẓ midn d kiyyin lli iswurn ɣ tasna yad. issin mara tskr urta titskrt..",
        "movepagetalktext": "Tasna n umsgdal (imdiwiln) lli izdin d ɣta iɣ tlla, rad as ibadl w-assaɣ utumatik  '''abla iɣ :'''\n* tsmmuttim tasna s yan ugmmaḍ wassaɣ, niɣd\n* tasna n umsgdal( imdiwiln) tlla s wassaɣ ad amaynu, niɣd\n* iɣ tkrjm tasatmt ad n uzddar\n\nΓ Tiklayad illa flla tun ad tsbadlm assaɣ niɣt tsmun mayad s ufus ɣ yat, iɣ tram",
        "newtitle": "ⴰⵣⵡⵍ ⴰⵎⴰⵢⵏⵓ:",
        "move-watch": "Tfr tisniwin timaynutin d timẓlay",
-       "movepagebtn": "âµ\99âµ\8eâµ\93ⵜⵜⵉ ⵜⴰⵙⵏⴰ",
+       "movepagebtn": "âµ\99âµ\8eâ´°ⵜⵜⵉ ⵜⴰⵙⵏⴰ",
        "pagemovedsub": "ⵉⵎⵓⵔⵙ ⵓⵙⵎⵓⵜⵜⵉ",
        "movepage-moved": "<strong>ⵜⴻⵜⵜⵢⵓⵙⵎⴰⵜⵜⵉ \"$1\" ⵙ \"$2\"</strong>",
        "articleexists": "Tlla yad tasna illan assaɣ zund ɣwa niɣd assaɣ llid tiwid urt iga. Sti assaɣ yaḍn tarmt.",
        "tooltip-ca-addsection": "ⵙⵙⵏⵜⵉ ⴽⵔⴰ ⵏ ⵜⴳⵣⵎⵉ ⵜⴰⵎⴰⵢⵏⵓⵜ",
        "tooltip-ca-viewsource": "Tasnatad tuyḥba. mac dẓdart at tẓrt aɣbalu nes.",
        "tooltip-ca-history": "ⵜⵓⵏⵖⵉⵍⵉⵏ ⵣⵔⵉⵏⵉⵏ ⵏ ⵜⴰⵙⵏⴰ ⴰⴷ",
-       "tooltip-ca-protect": "Ḥbu tasna yad",
+       "tooltip-ca-protect": "ⴰⵔⵉ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "tooltip-ca-unprotect": "ⵙⵏⴼⵍ ⴰⴼⵔⴰⴳ ⵏ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "tooltip-ca-delete": "ⴽⴽⵙ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "tooltip-ca-undelete": "Rard imbddeln imzwura li ittyskarnin ɣ tasna yad",
-       "tooltip-ca-move": "âµ\99âµ\8eâµ\93ⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ",
+       "tooltip-ca-move": "âµ\99âµ\8eâ´°ⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "tooltip-ca-watch": "ⵔⵏⵓ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ",
        "tooltip-ca-unwatch": "ⵙⵉⵜⵜⵉ ⵏⵏ ⵜⴰⵙⵏⴰ ⴰⴷ ⵣⵖ ⵜⴰⵍⵉⵙⵜⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ",
        "tooltip-search": "ⵙⵉⴳⴳⵍ ⵖ {{SITENAME}}",
        "tooltip-t-permalink": "ⴰⵍⵉⵏⴽ ⵉⴳⴰⵏ ⵡⵉⵏ ⴱⴷⴷⴰ ⵉ ⵜⵓⵏⵖⵉⵍⵜ ⴰⴷ ⵏ ⵜⴰⵙⵏⴰ",
        "tooltip-ca-nstab-main": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵜⵓⵎⴰⵢⵜ",
        "tooltip-ca-nstab-user": "Ẓr tasna n useqdac",
-       "tooltip-ca-nstab-media": "Iẓri n tasna n midya",
+       "tooltip-ca-nstab-media": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵎⵉⴷⵢⴰ",
        "tooltip-ca-nstab-special": "ⵜⴰⴷ ⵜⴳⴰ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ, ⴷ ⵓⵔ ⵉⵎⴽⵉⵏ ⴰⴷ ⵜⵜ ⵜⵙⵏⴼⵍⵜ",
        "tooltip-ca-nstab-project": "Żr tasna n twwuri",
        "tooltip-ca-nstab-image": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵓⴼⴰⵢⵍⵓ",
        "tooltip-ca-nstab-mediawiki": "Żr tabrat nu-nagraw.",
        "tooltip-ca-nstab-template": "Żr tamudemt",
-       "tooltip-ca-nstab-help": "Źr tasna nu-saws",
+       "tooltip-ca-nstab-help": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵜⵡⵉⵙⵉ",
        "tooltip-ca-nstab-category": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵜⴰⴳⴳⴰⵢⵜ",
        "tooltip-minoredit": "ⵔⵛⵎ ⴰⵢⴰ ⵎⴰⵙ ⵉⴳⴰ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ",
        "tooltip-save": "Ḥbu imbddel nek",
        "tooltip-diff": "ⵎⵍ ⵎⴰⵏ ⵉⵙⵏⴼⵉⵍⵏ ⴰⴷ ⵜⵙⴽⵔⵜ ⵉ ⵓⴹⵔⵉⵙ",
        "tooltip-compareselectedversions": "Ẓr inaḥyatn gr sin lqimat li ttuystaynin ɣ tasna yad.",
        "tooltip-watch": "ⵔⵏⵓ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ",
-       "tooltip-recreate": "Als askr n tasna yad waxxa ttuwḥiyyad",
+       "tooltip-recreate": "ⵙⵏⵓⵍⴼⵓ ⴷⴰⵖ ⵜⴰⵙⵏⴰ ⴰⴷ ⵎⵇⵇⴰⵔ ⵢⴰⴷ ⵜⴻⵜⵜⵡⴰⴽⴽⵙ",
        "tooltip-upload": "Izwir siɣ tullt.",
        "tooltip-rollback": "\"Rard\" s yan klik ażrig (iżrign) s ɣiklli sttin kkan tiklit li igguran",
        "tooltip-undo": "\"Sglb\" ḥiyd ambdl ad t mmurẓmt tasatmt n umbdl ɣ umuḍ tiẓri tamzwarut.",
index 339cfd6..807ddd5 100644 (file)
        "disclaimerpage": "Project:عام لاتعلقی اظہار",
        "edithelp": "لکھݨ وچ مدد",
        "helppage-top-gethelp": "مدد",
-       "mainpage": "Ù\88Ý\99ا Ù\88رÙ\82Û\81",
-       "mainpage-description": "Ù\88Ý\99ا Ù\88رÙ\82Û\81",
+       "mainpage": "Ù¾Û\81Ù\84ا Ù¾Ø±Øª",
+       "mainpage-description": "Ù¾Û\81Ù\84ا Ù¾Ø±Øª",
        "policy-url": "Project:پالیسی",
        "portal": "بیٹھک",
        "portal-url": "Project:دیوان عام",
        "nstab-template": "سانچہ",
        "nstab-help": "مدد ورقہ",
        "nstab-category": "ونکی",
-       "mainpage-nstab": "Ù\88Ý\99ا Ù\88رÙ\82Û\81",
+       "mainpage-nstab": "Ù¾Û\81Ù\84ا Ù¾Ø±Øª",
        "nosuchaction": "کوئی اینجھا کم کائنی",
        "nosuchspecialpage": "اینجھا کوئی خاص ورقہ کائنی",
        "error": "نقص",
        "tooltip-search": "ڳولو {{SITENAME}}",
        "tooltip-search-go": "جے ایں عنوان دا ورقہ ہے تاں اتھ ونڄو",
        "tooltip-search-fulltext": "ایں عبارت کوں ورقیاں وچ ڳولو",
-       "tooltip-p-logo": "Ù\88Ý\99ا Ù\88رÙ\82Û\81 ݙیکھو",
-       "tooltip-n-mainpage": "Ù\88Ý\99ا Ù\88رÙ\82Û\81 ݙیکھو",
-       "tooltip-n-mainpage-description": "پہلے ورقے تے ونڄو",
+       "tooltip-p-logo": "Ù¾Û\81Ù\84ا Ù¾Ø±Øª ݙیکھو",
+       "tooltip-n-mainpage": "Ù¾Û\81Ù\84ا Ù¾Ø±Øª ݙیکھو",
+       "tooltip-n-mainpage-description": "پہلے ورقے تے ون٘ڄو",
        "tooltip-n-portal": "ایں مںصوبے بارے، تساں کیا کر سڳدو، ، چیزاں کتھوں ڳولوں",
        "tooltip-n-currentevents": "موجودہ حالات وچ پچھلیاں معلومات ݙیکھو",
        "tooltip-n-recentchanges": "وکی تے نویاں تبدیلیاں۔",
index 27c6d5c..cd2628c 100644 (file)
        "ipb_expiry_old": "Čas izteka je v preteklosti.",
        "ipb_expiry_temp": "Blokade skritih uporabniških imen morajo biti trajne.",
        "ipb_hide_invalid": "Ne morem skriti tega računa; ima več kot $1 {{PLURAL:$1|urejanje|urejanji|urejanja|urejanj}}.",
+       "ipb_hide_partial": "Blokade s skritim uporabniškim imenom morajo biti blokade po celotni strani.",
        "ipb_already_blocked": "\"$1\" je že blokiran",
        "ipb-needreblock": "$1 je že blokiran.\nAli želite spremeniti nastavitve blokade?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Druga blokada|Drugi blokadi|Druge blokade}}",
index 83851c8..5517c62 100644 (file)
@@ -45,8 +45,8 @@
        },
        "tog-underline": "Подвлачење веза:",
        "tog-hideminor": "Сакривај мање измене са списка скорашњих измена",
-       "tog-hidepatrolled": "Сакриј патролиране измене са списка скорашњих измена",
-       "tog-newpageshidepatrolled": "Сакриј патролиране странице са списка нових страница",
+       "tog-hidepatrolled": "Сакривај патролиране измене са списка скорашњих измена",
+       "tog-newpageshidepatrolled": "Сакривај патролиране странице са списка нових страница",
        "tog-hidecategorization": "Сакривај категоризацију страница",
        "tog-extendwatchlist": "Прошируј списак надгледања за приказ свих промена, не само недавних",
        "tog-usenewrc": "Групиши промене по страници у скорашњим изменама и списку надгледања",
@@ -78,7 +78,7 @@
        "tog-watchlistreloadautomatically": "Аутоматски поново учитај списак надгледања кад год се филтер промени (потребан JavaScript)",
        "tog-watchlistunwatchlinks": "Додај означиваче за прекид надгледања/нагледање ({{int:Watchlist-unwatch}}/{{int:Watchlist-unwatch-undo}}) на надгледане странице са променама (за функционалност пребацивања је потребан JavaScript)",
        "tog-watchlisthideanons": "Сакривај измене анонимних корисника са списка надгледања",
-       "tog-watchlisthidepatrolled": "Сакриј патролиране измене са списка надгледања",
+       "tog-watchlisthidepatrolled": "Сакривај патролиране измене са списка надгледања",
        "tog-watchlisthidecategorization": "Сакривај категоризацију страница",
        "tog-ccmeonemails": "Пошаљи ми копије е-порука које пошаљем другим корисницима",
        "tog-diffonly": "Не приказуј садржај странице испод разлика",
        "blocklist-nousertalk": "забрањено уређивање сопствене странице за разговор",
        "blocklist-editing": "уређивање",
        "blocklist-editing-sitewide": "уређивање (на целом сајту)",
+       "blocklist-editing-page": "странице",
        "blocklist-editing-ns": "именски простори",
        "ipblocklist-empty": "Списак блокирања је празан.",
        "ipblocklist-no-results": "Тражена IP адреса или корисничко име није блокирано.",
        "watchlistedit-clear-done": "Ваш списак надгледања је очишћен.",
        "watchlistedit-clear-jobqueue": "Ваш списак надгледања ће бити очишћен. Ово може потрајати неко време!",
        "watchlistedit-clear-removed": "{{PLURAL:$1|1 наслов је уклоњен|$1 наслова су уклоњена|$1 наслова је уклоњено}}:",
-       "watchlistedit-too-many": "Има превише страница за приказ овде.",
+       "watchlistedit-too-many": "Има превише страница за приказ.",
        "watchlisttools-clear": "очисти списак надгледања",
        "watchlisttools-view": "прикажи сродне промене",
        "watchlisttools-edit": "прикажи и уреди списак надгледања",
index 6fe42d0..4a5f826 100644 (file)
        "watchlistedit-clear-done": "Vaš spisak nadgledanja je očišćen.",
        "watchlistedit-clear-jobqueue": "Vaš spisak nadgledanja će biti očišćen. Ovo može potrajati neko vreme!",
        "watchlistedit-clear-removed": "{{PLURAL:$1|1 naslov je uklonjen|$1 naslova su uklonjena|$1 naslova je uklonjeno}}:",
-       "watchlistedit-too-many": "Ima previše stranica za prikaz ovde.",
+       "watchlistedit-too-many": "Ima previše stranica za prikaz.",
        "watchlisttools-clear": "očisti spisak nadgledanja",
        "watchlisttools-view": "prikaži srodne promene",
        "watchlisttools-edit": "prikaži i uredi spisak nadgledanja",
index d7e4fee..df898e5 100644 (file)
        "right-importupload": "Ngimpor kaca tina hiji koropak nu dimuat",
        "right-patrol": "Nandaan éditan pamaké séjén minangka geus dipatroli",
        "right-autopatrol": "Ngédit kalayan status éditan sacara otomatis ditandaan geus dipatroli",
-       "right-patrolmarks": "Tempo panandaan patroli nuanyar robah",
+       "right-patrolmarks": "Tempo panandaan patroli nu anyar robah",
        "right-unwatchedpages": "Tempo daptar kaca-kaca nu teu dipariksa",
        "right-mergehistory": "Ngagabungkeun jujutan kaca",
        "right-userrights": "Édit kabeh hak pamaké",
        "actioncomplete": "Tarékah geus hasil",
        "actionfailed": "Tarékah gagal",
        "deletedtext": "\"$1\" geus dihapus. Tempo $2 pikeun rékaman hapusan anyaran ieu.",
-       "dellogpage": "Log_hapusan",
+       "dellogpage": "Log hapusan",
        "dellogpagetext": "Di handap ieu daptar hapusan nu ahir-ahir, sakabéh wanci dumasar wanci server.",
        "deletionlog": "log hapusan",
        "reverted": "Malikkeun ka révisi nu ti heula",
        "log-name-contentmodel": "Log parobahan modél kontén",
        "logentry-contentmodel-change-revertlink": "balikkeun",
        "logentry-contentmodel-change-revert": "balikkeun",
-       "protectlogpage": "Log_koncian",
+       "protectlogpage": "Log koncian",
        "protectlogtext": "Di handap ieu mangrupa daptar koncian kaca. Tempo [[Special:ProtectedPages|kaca nu dikonci]] pikeun iber leuwih lengkep.",
        "protectedarticle": "ngonci $1",
        "modifiedarticleprotection": "hambalan koncian \"[[$1]]\" geus dirobah",
        "specialpages-group-maintenance": "Laporan pigawéeun",
        "specialpages-group-other": "Kaca husus lainna",
        "specialpages-group-login": "Asup log / jieun akun",
-       "specialpages-group-changes": "Nuanyar robah sarta log",
+       "specialpages-group-changes": "Nu anyar robah sarta log",
        "specialpages-group-media": "Laporan jeung unjalan berkas",
        "specialpages-group-users": "Pamaké sarta hak pamaké",
        "specialpages-group-highuse": "Pamakéan kaca nu badag",
index 4e94946..8444e44 100644 (file)
        "ipb_expiry_old": "Utgångstiden har redan passerat.",
        "ipb_expiry_temp": "För att dölja användarnamnet måste blockeringen vara permanent.",
        "ipb_hide_invalid": "Kan inte undanhålla detta konto; det har fler än {{PLURAL:$1|en redigering|$1 redigeringar}}.",
+       "ipb_hide_partial": "Dolda användarnamnsblockeringar måste gälla hela webbplatsen.",
        "ipb_already_blocked": "\"$1\" är redan blockerad",
        "ipb-needreblock": "$1 är redan blockerad. Vill du ändra inställningarna?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Annan blockering|Andra blockeringar}}",
index 0b8133b..0f09498 100644 (file)
        "resetpass-submit-cancel": "ವಜಾ ಮಲ್ಪುಲೆ",
        "resetpass-wrong-oldpass": "ಅಮಾನ್ಯ ತಾತ್ಕಾಲಿಕ ಇಜಿಂಡ ಚಾಲ್ತಿ ಸಂಕೇತಪದ.\nಈರ್ ಇರೆನ ಸಂಕೇತಪದೊನು ಅದಗನೆ ಬದಲ್ ಮಲ್ತೊಂದರ್ ಇಜಿಂಡ ಒಂಜಿ ಪೊಸ ತಾತ್ಕಾಲಿಕ ಸಂಕೇತಪದೊಕು ಕೋರಿಕೆ ಕೊರ್ತರ್.",
        "resetpass-recycled": "ಈರ್  ಇತ್ತೆ ಚಾಲ್ತಿ ಉಪ್ಪುನ ಸಂಕೇತಪದೊ ಅತ್ತಾಂದಿನ ಬೇತೆ ಸಂಕೇತಪದೊಕು ಬದಲು ಮಲ್ಪುಲೆ.",
+       "resetpass-temp-emailed": "ಈರ್ ಹಂಗಾಮಿ ಇಮೇಲ್ ಅಂಕೇತೊಡು ಉಳಗಮನ ಮಲ್ದರ್. ಉಳಗಮನ ಮುಗಿಪರೆ ಈರ್ ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ಮುಲ್ಪ ಗೋಡಿಯಾವೊಡು.",
        "resetpass-temp-password": "ತಾತ್ಕಾಲಿಕ ಪ್ರವೇಶಪದ:",
+       "resetpass-abort-generic": "ಒಂಜಿ ವಿಸ್ತರಣೆಡ್ ಸಂಕೇತಪದ ಬದಲಾವಣೆ ಪತನ ಆತ್ಂಡ್.",
+       "resetpass-expired": "ಇರೆನ ಸಂಕೇತಪದ ಮುಗಿದ್ಂಡ್.ಉಳಗಮನೊಗಾದ್ ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ಗೋಡಿಯಾವುಲೆ.",
+       "resetpass-expired-soft": "ಇರೆನ ಸಂಕೇತಪದ ಮುಗಿದಿಂಡ್ ಬೊಕ ಬದಲ್ ಮಲ್ಪೊಡಾಪುಂಡು. ದಯಮಲ್ತ್  ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ಇತ್ತೆನೆ ಆಯಿಲೆ ಇಜಿಂಡ  ಅವೆನ್  ತರೀದ್ ಬದಲಾವರೆ \"{{int:authprovider-resetpass-skip-label}}\"  ಒತ್ತುಲೆ .",
+       "resetpass-validity": "ಉಳಗಮನೊಗು ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ದೀಲೆ:$1",
+       "resetpass-validity-soft": "ಇರೆನ ಸಂಕೇತಪದ ಮಾನ್ಯ ಆತಿಜಿ:$1\nದಯಮಲ್ತ್ ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ಆಯಿಲೆ ಇಜಿಂಡ ಅವೆನ್ ತರೀದ್ ಬದಲಾವರೆ \n \"{{int:authprovider-resetpass-skip-label}}\" ಒತ್ತುಲೆ.",
        "passwordreset": "ಪ್ರವೇಸೊ ಪದೊನ್ ಪಿರ ಸ್ತಾಪನೆ ಮಲ್ಪುಲೆ",
+       "passwordreset-text-one": " ಒಂಜಿ ಹಂಗಾಮಿ ಸಂಕೇತಪದೊನ್, ಇಮೇಲ್ದ  ಮುಖಾಂತರ ಗೆತೊಣರೆ, ಈ ರೂಪತ್ರನ್ ದಿಂಜಾಲೆ.",
+       "passwordreset-text-many": "{{PLURAL:$1| ಒಂಜಿ ಹಂಗಾಮಿ ಸಂಕೇತಪದ ಇಮೇಲ್ ಮುಖಾಂತರ ಗೆತೊಣರೆ ಕಿಂಡಿಲೆಡ್ ಒಂಜೆನ್ ದಿಂಜಾಲೆ.}}",
+       "passwordreset-disabled": "ಈ ವಿಕಿಟ್ ಸಂಕೇತಪದ ಪಿರತಾಪನೆಲು ನಿಷ್ಕ್ರಿಯ ಆತ್ಂಡ್.",
+       "passwordreset-emaildisabled": "ಇಮೇಲ್ ಗುಣಧರ್ಮೊಲು ಈ ವಿಕಿಟ್ ನಿಷ್ಕ್ರಿಯ ಆತ್ಂಡ್.",
        "passwordreset-username": "ಸದಸ್ಯೆರ್ನ ಪುದರ್:",
        "passwordreset-domain": "ಕ್ಷೇತ್ರೊ:",
        "passwordreset-email": "ಇ-ಅಂಚೆ ವಿಳಾಸೊ",
+       "passwordreset-emailtitle": "{{SITENAME}} ಖಾತೆ ವಿವರೊಲು",
+       "passwordreset-emailtext-ip": "ಏರಾಒರಿ (ಬಹುಶಃ ಈರ್,$1 ಐಪಿ ವಿಳಾಸೊಡು) ಇರೆನ {{SITENAME}} ($4) ದ ಸಂಕೇತಪದ ಪಿರತಾಪನೆಗ್ ಕೇಂಡೆರ್. ಈ ದುಂಬುದ ಬಳಕೆದಾರೆ {{PLURAL:$3|ಖಾತೆ|ಖಾತೆಲು}}ಡು \nಈ  $2 ಇಮೇಲ್ ಉಂಡು:\n{{PLURAL:$3|ಈ ಹಂಗಾಮಿ ಸಂಕೇತಪದ|ಈ ಹಂಗಾಮಿ ಸಂಕೇತಪದೊಲು}} {{PLURAL:$5|ಒಂಜಿ ದಿನ|$5 ದಿನೊ}}ಟು ಮುಗಿದ್ ಪೋಪುಂಡು.\nಈರ್ ಇತ್ತೆ ಉಳಗಮನ ಮಲ್ತ್ ಬೊಕ ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ಆಯೊಡು. ಈ ಕೇಣಿಕೆನ್ ಏರಾಒರಿ ಮಲ್ತಿನಾಂಡ ಇಜಿಂಡ ಇರೆಗ್ ಇರೆನ ಮೂಲ ಸಂಕೇತಪದ ನೆನಪುಗು ಬತ್ತ್ಂಡಾ, ಈರ್ ಈ ಸಂದೇಶೊನು ಅವಗಣನೆ ಮಲ್ಪುಲೆ ಬೊಕ ಇರೆನ ಪರಾ ಸಂಕೇತಪದೊನು ಗಳಸೊಂದು ದುಂಬರಿಲೆ.",
+       "passwordreset-emailtext-user": " \n\n\n\nಬಳಕೆದಾರೆ $1  {{SITENAME}} ಡು  {{SITENAME}}($4)ದ  ಇರೆನ ಸಂಕೇತಪದ ಪಿರತಾಪನೆಗ್ ಕೇಂಡೆರ್. ಈ ದುಂಬುದ ಬಳಕೆದಾರೆ {{PLURAL:$3|ಖಾತೆ|ಖಾತೆಲು}}ಡು \nಈ  $2 ಇಮೇಲ್ ಉಂಡು:\n{{PLURAL:$3|ಈ ಹಂಗಾಮಿ ಸಂಕೇತಪದ|ಈ ಹಂಗಾಮಿ ಸಂಕೇತಪದೊಲು}}{{PLURAL:$5|ಒಂಜಿ ದಿನ|$5 ದಿನೊ}}ಟು ಮುಗಿದ್ ಪೋಪುಂಡು.\nಈರ್ ಇತ್ತೆ ಉಳಗಮನ ಮಲ್ತ್ ಬೊಕ ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ಆಯೊಡು. ಈ ಕೇಣಿಕೆನ್ ಏರಾಒರಿ ಮಲ್ತಿನಾಂಡ ಇಜಿಂಡ ಇರೆಗ್ ಇರೆನ ಮೂಲ ಸಂಕೇತಪದ ನೆನಪುಗು ಬತ್ತ್ಂಡಾ, ಬೊಕ ಅವೆನ್ ಈರ್ ಬದಲಾರೆ ಬಯಕುಜರ್ಡ, ಈರ್ ಈ ಸಂದೇಶೊನು ಅವಗಣನೆ ಮಲ್ಪುಲೆ ಬೊಕ ಇರೆನ ಪರಾ ಸಂಕೇತಪದೊನು ಗಳಸೊಂದು ದುಂಬರಿಲೆ.",
+       "passwordreset-emailelement": "ಬಳಕೆದಾರೆಪುದರ್:\n$1\n\nಹಂಗಾಮಿ ಸಂಕೇತಪದ:\n$2",
+       "passwordreset-emailsentemail": "ಈವೊಂಜಿ ಇಮೇಲ್ ಇರೆನ ಖಾತೆಗ್ ಸೇರಿನವು ಆದಿತ್ತ್ಂಡಾ,  ಸಂಕೇತಪದ ಪಿರತಾಪನೆಗ್  ಒಂಜಿ ಇಮೇಲ್ ಕಡಪುಡುಂಡು.",
+       "passwordreset-emailsentusername": "ಈ ಬಳಕೆಪುದರುಗು ಸೇರಿನ ಒಂಜಿ ಇಮೇಲ್ ವಿಳಾಸ ಇತ್ತಿನಾಂಡಾ,  ಸಂಕೇತಪದ ಪಿರತಾಪನೆಗ್  ಒಂಜಿ ಇಮೇಲ್ ಕಡಪುಡುಂಡು.",
+       "passwordreset-nocaller": "ಒರಿ ಲೆಪ್ಪುನಾಯನ್ ಕೊರೊಡು.",
+       "passwordreset-nosuchcaller": "ಲೆಪ್ಪುನಾಯೆ ಇಜ್ಜೆ: $1",
+       "passwordreset-ignored": "ಸಂಕೇತಪದ ಪಿರತಾಪನೆನ್ ಮುಟುದಿಜಿ. ಬಹುಶಃ ಒದಗಾವುನ ಸಂರಚನೆ ಆತಿಜಿ ?",
        "passwordreset-invalidemail": "ಇಮೇಲ್ ಸರಿ ಇಜ್ಜಿ",
+       "passwordreset-nodata": "ಒಂಜಿ ಬಳಕೆಪುದರ್ ಅತ್ತಾಂಡ ಒಂಜಿ ಇಮೇಲ್ ವಿಳಾಸ ಕೊರ್ತುಜಿ.",
        "changeemail": "ಈ-ಮೈಲ್ ವಿಲಾಸೊನು ಬದಲ್ ಮಲ್ಪುಲೆ ಅತ್ತಂಡ ದೆತ್ತ್ ಬುಡ್ಲೆ",
+       "changeemail-header": "ಇರೆನ ಇಮೇಲ್ ವಿಳಾಸ ಬದಲಾರೆ ಈ ರೂಪತ್ರನ್ ದಿಂಜಾಲೆ. ಇರೆನ ಖಾತೆರ್ದ್  ಒವ್ವೆ ಇಮೇಲ್ ವಿಳಾಸದ ಸಹಯೋಗ ದೆಪ್ಪರೆ ಇಚ್ಚಿಸಾವರ್ಡ,  ರೂಪತ್ರ ಒಪ್ಪಿಸಾನಗ  ಪೊಸ ಇಮೇಲ್ ವಿಳಾಸ ಖಾಲಿ ಬುಡುಲೆ.",
+       "changeemail-no-info": "ಈ ಪುಟೊಕು ನೇರ ಪ್ರವೇಶೊ ಪಡೆವರೆ, ಈರ್ ಉಳಗಮನ ಆದಿಪ್ಪೊಡು.",
        "changeemail-oldemail": "ಇತ್ತೆತಾ ಈಮೇಲ್ ವಿಳಾಸೊ:",
        "changeemail-newemail": "ಪೊಸ ಇ-ಅಂಚೆ ವಿಳಾಸೊ:",
+       "changeemail-newemail-help": "ಇರೆನ ಇಮೇಲ್ ವಿಳಾಸ ದೆಪ್ಪೊಡಾಂಡ, ಕಿಂಡಿ ಖಾಲಿ ಬುಡೋಡು. ಇಮೇಲ್ ವಿಳಾಸ ದೆತ್ತ್ಂಡಾ, ಈರ್ ಮದತಿನ ಸಂಕೇತಪದೊನು ಪಿರತಾಪನೆ ಮಲ್ಪರಾಪುಜಿ ಬೊಕ ಇರೆಗ್ ಈ ವಿಕಿರ್ದ್ ಇಮೇಲ್ ಬರ್ಪುಜಿ.",
        "changeemail-none": "ಒವ್ವುಲಾ ಇಜ್ಜಿ",
+       "changeemail-password": "ಇರೆನ{{SITENAME}}ಸಂಕೇತಪದ:",
        "changeemail-submit": "ಇ-ಅಂಚೆ ವಿಳಾಸ ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ",
+       "changeemail-throttled": "ಈರ್ ದಿಂಜ ಸರ್ತಿ ಉಳಗಮನ ಪ್ರಯತ್ನ ಮಲ್ದರ್. ಕುಡಾ ಯತ್ನ ಮಲ್ಪುನ ದುಂಬು ದಯಮಲ್ತ್ $1 ಕಾಪುಲೆ",
+       "changeemail-nochange": "ದಯಮಲ್ತ್ ಒಂಜಿ ಬೇತೆ ಪೊಸ ಇಮೇಲ್ ವಿಳಾಸ ಸೇರಾಲೆ.",
        "resettokens": "ಸಂಕೇತೊಲೆನ್ ಜತೆಸೇರಲೆ",
+       "resettokens-text": "ಇರೆನ ಖಾತೆದ ಕೆಲವು ಖಾಸಗಿ ದತ್ತಾಂಶೊಗು ಪ್ರವೇಶ ಕೊರ್ಪಿನ ಸಂಕೇತಬಿಲ್ಲೆಲೆನ್ ಈರ್ ಮುಲ್ಪ ಪಿರತಾಪನೆ ಮಲ್ಪೊಲಿ.\nಈರ್ ಅಕಸ್ಮಾತ್ತಾದ್ ಏರಾಒರಿಯಗ್ ಅವೆನ್ ಪಟ್ಟ್'ದಿತ್ತರ್ಡ ಇಜಿಂಡ ಇರೆನ ಖಾತೆಗ್ ಅಕ್ರಮ ಪ್ರವೇಶ ಆದಿತ್ತ್ಂಡ ಈರ್ ಅವೆನ್ ಪಿರತಾಪನೆ ಮಲ್ಪೊಡು.",
+       "resettokens-no-tokens": "ಅಲ್ಪ ಪಿರತಾಪನೆ ಮಲ್ಪರೆ ಒವ್ವೆ ಸಂಕೇತಬಿಲ್ಲೆಲು ಇಜ್ಜಿ.",
        "resettokens-tokens": "ಸಂಕೇತೊಲು:",
        "resettokens-token-label": "$1(ಇತ್ತೆದ ಮೌಲ್ಯೊ:$2)",
+       "resettokens-watchlist-token": "ಜಾಲ ಆಹಾರದ ಸಂಕೇತಬಿಲ್ಲೆ (ಆಟಂ/ಆರ್.ಎಸ್.ಎಸ್) \n of [[Special:ವೀಕ್ಷಣಪಟ್ಟಿ|ವೀಕ್ಷಣಪಟ್ಟಿದ ಪುಟ ಬದಲಾವಣೆಲು]]",
+       "resettokens-done": "ಸಂಕೇತಬಿಲ್ಲೆಲು ಪಿರತಾಪನೆ ಆತಾ.",
+       "resettokens-resetbutton": "ಜತ್ತಿನ ಸಂಕೇತಬಿಲ್ಲೆಲೆನ್ ಪಿರತಾಪನೆ ಮಲ್ಪುಲೆ",
        "bold_sample": "ದಪ್ಪೊ ಅಕ್ಷರೊ",
        "bold_tip": "ದಪ್ಪೊ ಅಕ್ಷರೊ",
        "italic_sample": "ಓರೆ ಅಕ್ಷರೊಲು",
        "preview": "ಮುನ್ನೋಟ",
        "showpreview": "ಮುನ್ನೋಟೊ ತೋಜಾವು",
        "showdiff": "ಬದಲಾವಣೆಲೆನ್ ತೋಜಾವ್",
+       "blankarticle": "<strong>ಎಚ್ಚರಿಕೆ:</strong> ಈರ್ ರಚಿಸಾವುನ ಪುಟ ಖಾಲಿ ಆದುಂಡು.\nಈರ್ ನನೊರ $1 ಒತ್ತಿಯರ್ಡ, ಒವ್ವೆ ವಿಷಯದಾಂತೆ ಪುಟ ರಚನೆ ಆಪುಂಡು",
        "anoneditwarning": "<strong>ಜಾಗ್‍ರ್ತೆ:</strong> ಈರ್ ಇತ್ತೆ ಲಾಗ್ ಇನ್ ಆತಿಜರ್. ಈರ್ ಸಂಪೊಲಿತರ್ಂಡ ಈರೆನ ಐ.ಪಿ. ಎಡ್ರೆಸ್ ಮಾಂತೆರೆಗ್ಲಾ ತೆರಿವುಂಡು. ಒಂಜೇಲೆ <strong>[$1 ಲಾಗಿನ್ ಆಯರ್ಂದಾಂಡ]</strong> ಅತ್ತಂಡ <strong>[$2 ಒಂಜಿ ಅಕೌಂಟ್ ಮಲ್ತರ್ಂಡ]</strong>, ಈರ್ ಸಂಪೊಲ್ತಿನೆತ್ತ ಶ್ರೇಯೊ (ಕ್ರೆಡಿಟ್) ಬೊಕ್ಕ ಬೇತೆ ಲಾಬೊಲು ಇರೆನ ಸದಸ್ಯೆರೆ ಪುದರ್‍ಗ್ ಸೇರುಂಡು.",
        "anonpreviewwarning": "ಈರ್ ಇತ್ತೆ ಲಾಗ್ ಇನ್ ಆತಿಜರ್. ಈರ್ನ ಐ.ಪಿ ಎಡ್ರೆಸ್ ಈ ಪುಟೊತ ಬದಲಾವಣೆ ಇತಿಹಾಸೊಡು ದಾಖಲಾಪು೦ಡು",
        "missingsummary": "'''ಗಮನಿಸಾಲೆ:''' ಈರ್ ಬದಲಾವಣೆದ ಸಾರಾ೦ಶನ್ ಕೊರ್ತಿಜರ್.\nಈರ್ ಪಿರ 'ಒರಿಪಾಲೆ' ಬಟನ್ ನ್ ಒತ್ತ್೦ಡ ಸಾರಾ೦ಶ ಇಜ್ಜ೦ದೆನೇ ಈರ್ನ ಬದಲಾವಣೆ ದಾಖಲಾಪು೦ಡು.",
+       "selfredirect": "<strong>ಎಚ್ಚರಿಕೆ:</strong> ಈರ್ ಈ ಪುಟೊನು ಅಯಿಕೇ ಪಿರರವಾನೆ ಮಲ್ತೊಂದುಲ್ಲರ್.\nಈರ್ ಪಿರರವಾನೆಗ್ ತಪ್ಪು ಗುರಿ ಕೊರ್ದಿಪ್ಪರ್ ಇಜಿಂಡ ಈರ್ ತಪ್ಪು ಪುಟೊನು ಸಂಪಾದಿಸೊಂದುಲ್ಲರ್.\nಈರ್ ನನೊರ $1 ಒತ್ತಿಯರ್ಡ, ಎಂಚಲಾ ಪಿರರವಾನೆ ರಚನೆ ಆಪುಂಡು.",
        "missingcommenttext": "ದಯ ಮಲ್ತ್ ದ ಈರ್ನ ಅಭಿಪ್ರಾಯನ್ ಕೊರ್ಲೆ",
        "missingcommentheader": "'''ಗಮನಿಸಾಲೆ:''' ಈರ್ ಈ ಅಭಿಪ್ರಾಯಗ್ \"ವಿಷಯ/ಮುಖ್ಯಾ೦ಶ\" ದಾಲ ಕೊರ್ತಿಜರ್. ಈರ್ ಪಿರ ’ಒರಿಪಾಲೆ’ ಬಟನ್ ನ್ ಒತ್ತ್೦ಡ ಈರ್ನ ಬದಲಾವಣೆ ವಿಷಯ/ಮುಖ್ಯಾ೦ಶ ಇಜ್ಜ೦ದನೇ ಒರಿಪ್ಪಾವು೦ಡು.",
        "summary-preview": "ಸಾರಾ೦ಶ ಮುನ್ನೋಟ:",
        "subject-preview": "ವಿಷಯ/ಮುಖ್ಯಾ೦ಶದ ಮುನ್ನೋಟ:",
+       "previewerrortext": "ಇರೆನ ಬದಲಾವಣೆಲನ ಮುನ್ನೋಟ ತೂವನಗ ಒಂಜಿ ದೋಷ ಉಂಡಾಂಡ್.",
        "blockedtitle": "ಈ ಸದಸ್ಯೆರೆನ್ ತಡೆ ಮಲ್ತ್ ದ್೦ಡ್.",
+       "blocked-email-user": "<strong>  ಇಮೇಲ್ ಕಡಪುಡಂದಿಲೆಕ್ಕ ಇರೆನ ಬಳಕೆಪುದರುನ್ ತಡೆತುದುಂಡು. ಆಂಡಲಾ,\nಈರ್ ಈ ವಿಕಿಟ್ ಬೇತೆ ಪುಟೊಕುಲೆನ್ ಸಂಪಾದಿಸಾವೊಲಿ.</strong>\nತಡೆತ ಪೂರ್ಣ ವಿವರೊನು ಈರ್ ಮೂಲು ತೂವೊಲಿ:   [[Special:MyContributions|account contributions]].\nತಡೆಮಲ್ತಿನಾರ್  $1.\nಕೊರಿನ ಕಾರಣ <em>$2</em>.\n*ತಡೆ ಆರಂಭ: $8\n* ತಡೆ ಮುಗಿಪುನಿ: $6\n* ತಡೆ ಆತಿನಾರ್: $7\n* ತಡೆ ಗುರುತುಸಂಖ್ಯೆ ID #$5",
+       "blockedtext-partial": "<strong>  ಈ ಪುಟ ಬದಲಾವಂದಿ ಲೆಕ್ಕ ಇರೆನ ಬಳಕೆಪುದರು ಇಜಿಂಡ ಐಪಿ ವಿಳಾಸನ್ ತಡೆತುದುಂಡು. ಆಂಡಲಾ, ಈರ್ ಈ ವಿಕಿಟ್ ಬೇತೆ ಪುಟೊಕುಲೆನ್ ಸಂಪಾದಿಸಾವೊಲಿ.</strong>\nತಡೆತ ಪೂರ್ಣ ವಿವರೊನು ಈರ್ ಮೂಲು ತೂವೊಲಿ:   [[Special:MyContributions|account contributions]].\n*ತಡೆಮಲ್ತಿನಾರ್  $1.\n*ಕೊರಿನ ಕಾರಣ <em>$2</em>.\n*ತಡೆ ಆರಂಭ: $8\n* ತಡೆ ಮುಗಿಪುನಿ: $6\n* ತಡೆ ಆತಿನಾರ್: $7\n* ತಡೆ ಗುರುತುಸಂಖ್ಯೆ ID #$5",
        "blockedtext": "<strong>ಇರೆನ ಸದಸ್ಯ ಪುದರ್ ಅತ್ತ್‌ಡ ಐ.ಪಿ. ವಿಲಾಸೊ ತಡೆ ಆತ್‌ಂಡ್.</strong>\n\nಈ ತಡೆನ್ ಮಲ್ತಿನಾರ್ $1.\nಇಂದೆಕ್ ಕೊರಿನ ಕಾರಣೊ <em>$2</em>.\n\n* ತಡೆ ಸುರುವಾಯಿನಿ: $8\n* ತಡೆ ಕೈದಾಪಿನಿ: $6\n* ತಡೆ ಆತಿನಾರ್: $7\n\nಈರ್ ಈ ತಡೆತ ಬಗ್ಗೆ ಚರ್ಚೆ ಮಲ್ಪೆರೆ $1 ನ್ ಅತ್ತ್‌ಡ ಕುಡೊರಿ [[{{MediaWiki:Grouppage-sysop}}|ನಿರ್ವಾಹಕೆರೆನ್]] ಸಂಪರ್ಕೊ ಆವೊಲಿ.\nಈರ್ [[Special:Preferences|ಖಾತೆ ಪ್ರಾಶಸ್ತ್ಯೊಲೆಡ್]] ಸರಿ ಆಯಿನ ಈ-ಮೈಲ್ ವಿಲಾಸೊನು ಕೊರ್ದಿತ್ತ್ಂಡ ಬೊಕ್ಕ \"ಈ ಸದಸ್ಯೆರೆಗ್ ಈ-ಮೈಲ್ ಕಡಪುಡ್ಲೆ\" ಪನ್ಪಿ ಸೌಲಭ್ಯೊಡ್ದ್ ತಡೆ ಆತಿಜರ್‌ಡ, ಈ ಸೌಲಭ್ಯೊನು ಗಲಸ್‌ದ್ ಈ-ಮೈಲ್ ಮೂಲಕ ಸಂಪರ್ಕ ಆವೊಲಿ.   \n\nಈರೆನ ಇತ್ತೆದ ಐ.ಪಿ. ವಿಲಾಸೊ $3, ಬೊಕ್ಕ ತಡೆತ ಐ.ಡಿ. #$5.\nಒವ್ವೇ ಪ್ರಶ್ನೆ ಇತ್ತ್ಂಡ ಮಿತ್ತ್ ಉಪ್ಪುನ ಮಾತಾ ಮಾಹಿತಿನ್ಲಾ ದಯದೀದ್ ಈರೆನ ಪ್ರಶ್ನೆದೊಟ್ಟುಗು ಸೇರಾಲೆ.",
+       "autoblockedtext": "  ಇಮೇಲ್ ಕಡಪುಡಂದಿಲೆಕ್ಕ ಇರೆನ ಐಪಿ ವಿಳಾಸೊನ್  ಸ್ವಯಂಕೃತವಾದ್ ತಡೆತುದುಂಡು. ಕಾರಣ ಅವೆನ್ ಬೇತೆ ಒರಿ ಬಳಕೆ ಮಲ್ದೆರ್, ಅರೆನ್ ತಡೆಮಲ್ತಿನಾರ್  $1.\nಕೊರಿನ ಕಾರಣ <em>$2</em>.\n* ತಡೆ ಆರಂಭ: $8\n* ತಡೆ ಮುಗಿಪುನಿ: $6\n* ತಡೆ ಆತಿನಾರ್: $7\nಈ ತಡೆತ ಚರ್ಚೆ ಮಲ್ಪರೆ ಈರ್ $1  ಇಜಿಂಡ ಬೇತೆ ಒರಿಯನ್ ಸಂಪರ್ಕಿಸಾವೊಲಿ \n [[{{MediaWiki:Grouppage-sysop}}|ಆಡಳಿತಗಾರೆರ್]] .ಇರೆಗ್\n[[Special:Preferences|ಬಳಕೆದಾರೆ ಆಯ್ಕೆಲು]]ಡು ನೋಂದಾಯಿನ ಬೊಕ ತಡೆ ಆವಂದಿನ  ಸುಮಾನ್ಯ ಇಮೇಲ್ ವಿಳಾಸ ಇಜ್ಜಿಡ  ಈರ್  \"{{int:emailuser}}\"ದ ಗುಣಧರ್ಮೊನು ಬಳಸರೆ ಆಪುಜಿ ಇಂದ್ ತೆರಿಲೆ.\nಇರೆನ ಚಾಲ್ತಿ ಐಪಿ ವಿಳಾಸ $3 ಬೊಕ ತಡೆ ಗುರುತುಸಂಖ್ಯೆ ID $5\nದಯಮಲ್ತ್ ಈ ಮಿತ್ತ್'ದ ಮಾತಾ ವಿವರೊಲೆನ್ ಈರ್ ಮಲ್ಪುನ ಒವ್ವೆ ಕೇಣಿಲೆಡ್ ಸೇರಾಲೆ.",
+       "systemblockedtext": "  ಇರೆನ ಬಳಕೆಪುದರ್ ಇಜಿಂಡ ಐಪಿ ವಿಳಾಸೊನ್  ಮೀಡಿಯಾವಿಕಿ  ಸ್ವಯಂಕೃತವಾದ್ ತಡೆತುದುಂಡು. \nಕೊರಿನ ಕಾರಣ <em>$2</em>.\n* ತಡೆ ಆರಂಭ: $8\n* ತಡೆ ಮುಗಿಪುನಿ: $6\n* ತಡೆ ಆತಿನಾರ್: $7\nಇರೆನ ಚಾಲ್ತಿ ಐಪಿ ವಿಳಾಸ $3 \nದಯಮಲ್ತ್ ಈ ಮಿತ್ತ್'ದ ಮಾತಾ ವಿವರೊಲೆನ್ ಈರ್ ಮಲ್ಪುನ ಒವ್ವೆ ಕೇಣಿಲೆಡ್ ಸೇರಾಲೆ.",
+       "actionblockedtext": "ಈರ್ ಈ ಕ್ರಿಯೆನ್ ಮಲ್ಪಂದಿಲೆಕ್ಕ ತಡೆತುದುಂಡು.",
        "blockednoreason": "ವಾ ಕಾರಣೊಲಾ ಕೊರ್ತ್‍ಜಿ",
+       "whitelistedittext": "ಪುಟೊ ಸಂಪಾದಿಸಾವರೆ ದಯಮಲ್ತ್  $1 .",
+       "confirmedittext": "ಪುಟೊಲೆನ್ ಸಂಪಾದಿಸಾವುನ ದುಂಬು ಈರ್ ಇರೆನ ಇಮೇಲ್ ವಿಳಾಸೊನು ದೃಡೀಕರಿಸೊಡು.\nದಯಮಲ್ತ್ ಇರೆನ  [[Special:Preferences|ಬಳಕೆದಾರೆ ಆಯ್ಕೆಲು]].ಡು ಇಮೇಲ್ ವಿಳಾಸ ತಾಪಿಸಾದ್ ಮಾನ್ಯಮಲ್ಪುಲೆ.",
        "nosuchsectiontitle": "ಈ ಪುದರ್‍ದ ವಾ ವಿಭಾಗಲಾ ಇಜ್ಜಿ",
+       "nosuchsectiontext": "ಈರ್ ಉಪ್ಪಂದಿನ ಒಂಜಿ ವಿಭಾಗೊನು ಸಂಪಾದಿಸಾರೆ ಯತ್ನ ಮಲ್ತರ್.\nಈರ್ ಪುಟೊನು ತೂವನಗ ಅವು ಸ್ಥಳಾಂತರ ಆದಿಪ್ಪು ಇಜಿಂಡ ಮಾಜಿದಿಪ್ಪು.",
        "loginreqtitle": "ಲಾಗಿನ್ ಆವೊಡು",
        "loginreqlink": "ಲಾಗಿನ್ ಆಲೆ",
+       "loginreqpagetext": "ಬೇತೆ ಪುಟೊಲೆನ್ ತೂವರೆ ದಯಮಲ್ತ್ $1",
        "accmailtitle": "ಪ್ರವೇಶಪದ ಕಡಪುಡ್‘ದುಂಡು",
+       "accmailtext": "[[User talk:$1|$1]] ಅರೆನ ವಿನಾಕ್ರಮ ರಚಿತ ಪ್ರವೇಶಪದ $2 ಗು ಕಡಪುಡುದುಂಡು .ಉಳಗಮನದ ನಂತರ ಅವೆನ್ <em>[[Special:ChangePassword|ಪ್ರವೇಶಪದ ಬದಲ್]]</em> ಪುಟೊಟು ಬದಲಾವೊಲಿ.",
        "newarticle": "(ಪೊಸತ್)",
        "newarticletext": "ನನಲ ಅಸ್ಥಿತ್ವಡ್ ಉಪ್ಪಂದಿನ ಪುಟೊಕು ಈರ್ ಬೈದರ್.\nಈ ಪುಟೊನು ಉಂಡುಮಲ್ಪೆರೆ ತಿರ್ತ್‍ದ ಚೌಕೊಡು ಬರೆಯೆರೆ ಸುರು ಮಲ್ಪುಲೆ.\n(ಜಾಸ್ತಿ ಮಾಹಿತಿಗ್ [$1 ಸಹಾಯ ಪುಟೊನು] ತೂಲೆ).\nಈ ಪುಟೊಕು ಈರ್ ತತ್ತ್‌ದ್ ಬತ್ತಿತ್ತ್ಂಡ, ಇರೆನ ಬ್ರೌಸರ್‍ದ '''back''' ಬಟನ್ ಒತ್ತ್‌ಲೆ.",
        "anontalkpagetext": "----\n<em>ಉಂದು ಖಾತೆ ಇಜ್ಜಾಂದಿನ ಅತ್ತ್‌ಡ ಇತ್ತ್‌ದ್ಲಾ ಗಲಸಂದಿನ ಒಂಜಿ ಪುದರ್‌ದಾಂತಿ ಗಲಸುನಾರೆಗಾದ್ ಉಪ್ಪುನ ಚರ್ಚೆ ಪುಟೊ.</em>\nಅಂಚಾದ್, ಎಂಕುಲು ಅರೆನ್ ಗುರ್ತ ಮಲ್ಪೆರೆ ಅರೆನ ಐ.ಪಿ. ವಿಲಾಸೊನು ಗಲಸೊಡಾಪುಂಡು.\nಇಂಚಿತ್ತಿ ಐ.ಪಿ. ವಿಲಾಸೊನು ಮಸ್ತ್ ಜನೊ ಗಲಸೊಂದುಪ್ಪೆರ್.\nಈರ್ ಒರಿ ಪುದರ್‌ದಾಂತಿ ಗಲಸುನಾರ್ ಆದಿತ್ತ್ಂಡ ಬೊಕ್ಕ ಇರೆಗ್ ಸಂಬಂದೊ ದಾಂತಿನ ಸಂದೇಶೊಲು ಬರೊಂದುಂಡು ಪಂದ್ ಎನ್ನುವರ್‌ಡ, ನನ ದುಂಬಗ್ ಬೇತೆ ಪುದರ್‌ದಾಂತಿ ಗಲಸುನಾಕ್ಲೆನೊಟ್ಟುಗು ಅಂಬರಪ್ಪು ಆವಂದಿಲೆಕ ಉಪ್ಪೆರೆ, ದಯದೀದ್ [[Special:CreateAccount|ಒಂಜಿ ಸದಸ್ಯೆರೆ ಖಾತೆನ್ ಉಂಡುಮಲ್ಪುಲೆ]] ಅತ್ತ್‌ಡ [[Special:UserLogin|ಲಾಗ್ ಇನ್ ಆಲೆ]]",
        "reblock-logentry": "[[$1]] ನ ತಡೆ ವ್ಯವಸ್ಥೆಲೆಡ್ ಕೈದಾಪಿನ ಪೊರ್ತುನು $2 ಗ್ ಬದಲ್ ಮಲ್ತೆರ್ $3",
        "unblocklogentry": "$1 ಖಾತೆನ್ ಅನ್-ಬ್ಲಾಕ್ ಮಲ್ತ್’ನ್ಡ್",
        "block-log-flags-nocreate": "ಖಾತೆ ಉಂಡುಮಲ್ಪುನೇನ್ ತಡೆಪತ್ತ್'ದ್ಂಡ್",
+       "ipb_hide_partial": "ದೆಂಗಾಯಿನ ಬಳಕೆನಾಮ ತಡೆಲು ತಾನ-ಅಗೆಲದ ತಡೆಲಾದುಪ್ಪೊಡು.",
        "proxyblocker": "ಪ್ರಾಕ್ಸಿ ತಡೆಪತ್ತುನಾರ್",
        "cannotmove": "ಈ ದುಂಬುದ ಕಾರಣೊಗಾದ್ ಪುಟೊನು ಕೊಣರೆ ಆಪುಜಿ\n{{PLURAL:$1|reason|reasons}}:",
        "movelogpage": "ಸ್ತಲಾಂತರೊದ ದಾಕಲೆ",
index 32b11e2..f9f2f0a 100644 (file)
        "mainpage": "หน้าหลัก",
        "mainpage-description": "หน้าหลัก",
        "policy-url": "Project:นโยบาย",
-       "portal": "ศูà¸\99ยà¹\8cรวมชุมชน",
-       "portal-url": "Project:ศูà¸\99ยà¹\8cรวมชุมชน",
+       "portal": "ศาลาชุมชน",
+       "portal-url": "Project:ศาลาชุมชน",
        "privacy": "นโยบายความเป็นส่วนตัว",
        "privacypage": "Project:นโยบายความเป็นส่วนตัว",
        "badaccess": "มีข้อผิดพลาดในการใช้สิทธิ",
        "searchdisabled": "การค้นหา {{SITENAME}} ถูกปิดใช้งาน \nคุณสามารถค้นหาโดยทางกูเกิลในระหว่างนั้น\nโปรดทราบว่าดัชนีเนื้อหา {{SITENAME} อาจล้าสมัย",
        "search-error": "มีข้อผิดพลาดขณะค้นหา: $1",
        "search-warning": "มีคำเตือนขณะค้นหา: $1",
-       "preferences": "à¸\84à¹\88าà¸\81ำหà¸\99à¸\94",
-       "mypreferences": "à¸\84à¹\88าà¸\81ำหà¸\99à¸\94",
+       "preferences": "à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88า",
+       "mypreferences": "à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88า",
        "prefs-edits": "จำนวนการแก้ไข:",
        "prefsnologintext2": "โปรดเข้าสู่ระบบเพื่อเปลี่ยนแปลงการตั้งค่าของคุณ",
        "prefs-skin": "หน้าตา",
        "userrights-conflict": "พบการเปลี่ยนแปลงสิทธิผู้ใช้ขัดกัน! โปรดทบทวนและยืนยันการเปลี่ยนแปลงของคุณ",
        "group": "กลุ่ม:",
        "group-user": "ผู้ใช้",
-       "group-autoconfirmed": "à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ัà¹\88วà¹\84à¸\9b",
+       "group-autoconfirmed": "à¸\9cูà¹\89à¹\83à¸\8aà¹\89ยืà¸\99ยัà¸\99อัà¸\95à¹\82à¸\99มัà¸\95ิ",
        "group-bot": "บอต",
        "group-sysop": "ผู้ดูแลระบบ",
        "group-interface-admin": "ผู้ดูแลระบบอินเตอร์เฟซ",
        "group-suppress": "ผู้ดูแลประวัติ",
        "group-all": "(ทั้งหมด)",
        "group-user-member": "{{GENDER:$1|ผู้ใช้}}",
-       "group-autoconfirmed-member": "{{GENDER:$1|à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ัà¹\88วà¹\84à¸\9b}}",
+       "group-autoconfirmed-member": "{{GENDER:$1|à¸\9cูà¹\89à¹\83à¸\8aà¹\89ยืà¸\99ยัà¸\99อัà¸\95à¹\82à¸\99มัà¸\95ิ}}",
        "group-bot-member": "{{GENDER:$1|บอต}}",
        "group-sysop-member": "{{GENDER:$1|ผู้ดูแลระบบ}}",
        "group-interface-admin-member": "{{GENDER:$1|ผู้ดูแลระบบอินเตอร์เฟซ}}",
        "group-bureaucrat-member": "{{GENDER:$1|ผู้ดูแลระบบสิทธิ์แต่งตั้ง}}",
        "group-suppress-member": "{{GENDER:$1|ผู้ดูแลประวัติ}}",
        "grouppage-user": "{{ns:project}}:ผู้ใช้",
-       "grouppage-autoconfirmed": "{{ns:project}}:à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ัà¹\88วà¹\84à¸\9b",
+       "grouppage-autoconfirmed": "{{ns:project}}:à¸\9cูà¹\89à¹\83à¸\8aà¹\89ยืà¸\99ยัà¸\99อัà¸\95à¹\82à¸\99มัà¸\95ิ",
        "grouppage-bot": "{{ns:project}}:บอต",
        "grouppage-sysop": "{{ns:project}}:ผู้ดูแลระบบ",
        "grouppage-interface-admin": "{{ns:project}}:ผู้ดูแลระบบอินเตอร์เฟซ",
        "booksources-invalid-isbn": "รหัส ISBN ที่ให้ไว้ไม่ถูกต้อง กรุณาตรวจสอบจากต้นฉบับอีกครั้ง",
        "specialloguserlabel": "ผู้ดำเนินการ:",
        "speciallogtitlelabel": "เป้าหมาย (ชื่อเรื่องหรือ {{ns:user}}:ชื่อผู้ใช้ สำหรับผู้ใช้):",
-       "log": "รายà¸\81ารà¸\9aัà¸\99à¸\97ึà¸\81",
+       "log": "à¸\9bูม",
        "logeventslist-submit": "แสดง",
        "logeventslist-more-filters": "แสดงปูมเพิ่ม:",
        "logeventslist-patrol-log": "ปูมการตรวจสอบ",
        "sp-contributions-newbies": "แสดงการเข้ามีส่วนร่วมของบัญชีใหม่เท่านั้น",
        "sp-contributions-newbies-sub": "สำหรับบัญชีใหม่",
        "sp-contributions-newbies-title": "การเข้ามีส่วนร่วมสำหรับบัญชีใหม่",
-       "sp-contributions-blocklog": "รายà¸\81ารà¸\9aัà¸\99à¸\97ึà¸\81การบล็อก",
+       "sp-contributions-blocklog": "à¸\9bูมการบล็อก",
        "sp-contributions-suppresslog": "ระงับการมีส่วนร่วมของผู้ใช้",
        "sp-contributions-deleted": "การมีส่วนร่วมของผู้ใช้ที่ถูกลบ",
        "sp-contributions-uploads": "อัปโหลด",
-       "sp-contributions-logs": "รายà¸\81ารà¸\9aัà¸\99à¸\97ึà¸\81",
+       "sp-contributions-logs": "à¸\9bูม",
        "sp-contributions-talk": "คุย",
        "sp-contributions-userrights": "การจัดการสิทธิผู้ใช้",
        "sp-contributions-blocked-notice": "ปัจจุบันผู้ใช้นี้ถูกบล็อก\nปูมการบล็อกล่าสุดแสดงด้านล่างนี้เพื่อการอ้างอิง:",
        "tooltip-pt-anonuserpage": "หน้าผู้ใช้ของเลขที่อยู่ไอพีที่คุณกำลังใช้แก้ไข",
        "tooltip-pt-mytalk": "หน้าคุย{{GENDER:|ของคุณ}}",
        "tooltip-pt-anontalk": "อภิปรายเกี่ยวกับการแก้ไขจากเลขที่อยู่ไอพีนี้",
-       "tooltip-pt-preferences": "à¸\84à¹\88าà¸\81ำหà¸\99à¸\94{{GENDER:|ของคุณ}}",
+       "tooltip-pt-preferences": "à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88า{{GENDER:|ของคุณ}}",
        "tooltip-pt-watchlist": "รายการหน้าที่คุณกำลังเฝ้าดูการเปลี่ยนแปลง",
        "tooltip-pt-mycontris": "รายการการเข้ามีส่วนร่วมของ{{GENDER:|คุณ}}",
        "tooltip-pt-anoncontribs": "รายการการแก้ไขจากเลขที่อยู่ไอพีนี้",
        "common.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ทุกสกิน */",
        "print.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ข้อมูลส่งออกเป็นสิ่งพิมพ์ */",
        "noscript.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ปิดการใช้งานจาวาสคริปต์ */",
-       "group-autoconfirmed.css": "/* à¸ªà¹\84à¸\95ลà¹\8cà¸\8aีà¸\95à¹\83à¸\99หà¸\99à¹\89าà¸\99ีà¹\89à¸\88ะสà¹\88à¸\87à¸\9cลà¹\81à¸\81à¹\88à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ัà¹\88วà¹\84à¸\9bเท่านั้น */",
+       "group-autoconfirmed.css": "/* à¸ªà¹\84à¸\95ลà¹\8cà¸\8aีà¸\95à¹\83à¸\99หà¸\99à¹\89าà¸\99ีà¹\89à¸\88ะสà¹\88à¸\87à¸\9cลà¹\81à¸\81à¹\88à¸\9cูà¹\89à¹\83à¸\8aà¹\89ยืà¸\99ยัà¸\99อัà¸\95à¹\82à¸\99มัà¸\95ิเท่านั้น */",
        "group-bot.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่บอตเท่านั้น */",
        "group-sysop.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ดูแลเท่านั้น */",
        "group-bureaucrat.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ดูแลระบบสิทธิ์แต่งตั้งเท่านั้น */",
        "common.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ทุกคนในทุกหน้า */",
-       "group-autoconfirmed.js": "/* à¸\88าวาสà¸\84ริà¸\9bà¸\95à¹\8cà¹\83à¸\94 à¹\86 à¹\83à¸\99หà¸\99à¹\89าà¸\99ีà¹\89à¸\88ะà¸\96ูà¸\81à¹\82หลà¸\94à¹\83หà¹\89à¹\81à¸\81à¹\88à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ัà¹\88วà¹\84à¸\9bเท่านั้น */",
+       "group-autoconfirmed.js": "/* à¸\88าวาสà¸\84ริà¸\9bà¸\95à¹\8cà¹\83à¸\94 à¹\86 à¹\83à¸\99หà¸\99à¹\89าà¸\99ีà¹\89à¸\88ะà¸\96ูà¸\81à¹\82หลà¸\94à¹\83หà¹\89à¹\81à¸\81à¹\88à¸\9cูà¹\89à¹\83à¸\8aà¹\89ยืà¸\99ยัà¸\99อัà¸\95à¹\82à¸\99มัà¸\95ิเท่านั้น */",
        "group-bot.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่บอตเท่านั้น */",
        "group-sysop.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ดูแลเท่านั้น */",
        "group-bureaucrat.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ดูแลระบบสิทธิ์แต่งตั้งเท่านั้น */",
        "spam_blanking": "รุ่นการปรับปรุงทุกรุ่นประกอบไปด้วยลิงก์ไปยังเว็บ $1 (ทำหน้าว่าง)",
        "spam_deleting": "ทุกรุ่นที่มีลิงก์ไปยัง $1 กำลังลบ",
        "simpleantispam-label": "การตรวจสอบสแปม\n<strong>อย่า</strong>กรอกช่องนี้!",
-       "pageinfo-title": "à¸\82à¹\89อมูลสำหรับ \"$1\"",
+       "pageinfo-title": "สารสà¸\99à¹\80à¸\97ศสำหรับ \"$1\"",
        "pageinfo-not-current": "ขออภัย ไม่สามารถให้ข้อมูลนี้สำหรับรุ่นปรับปรุงเก่าได้",
        "pageinfo-header-basic": "สารสนเทศเบื้องต้น",
        "pageinfo-header-edits": "ประวัติการแก้ไข",
index 7d94be7..8afabf7 100644 (file)
        "move-watch": "Bu sayfayı izle",
        "movepagebtn": "Sayfayı taşı",
        "pagemovedsub": "İsim değişikliği tamamlandı.",
+       "cannotmove": "Sayfa, aşağıdaki {{PLURAL:$1|nedenden|nedenlerden}} ötürü taşınamadı:",
        "movepage-moved": "'''\"$1\",  \"$2\" sayfasına taşındı'''",
        "movepage-moved-redirect": "Bir yönlendirme oluşturuldu.",
        "movepage-moved-noredirect": "Bir yönlendirme oluşturulması bastırıldı.",
index 373ddd5..34d6d38 100644 (file)
        "createacct-another-username-ph": "صارف نام درج کریں",
        "yourpassword": "پاس ورڈ:",
        "userlogin-yourpassword": "پاس ورڈ",
-       "userlogin-yourpassword-ph": "اپنا پاسورڈ دیں",
+       "userlogin-yourpassword-ph": "پاسورڈ درج کریں",
        "createacct-yourpassword-ph": "پاس ورڈ درج کریں",
        "yourpasswordagain": "کلمۂ شناخت دوبارہ لکھیں",
        "createacct-yourpasswordagain": "پاس ورڈ کی تصدیق کریں",
        "move-watch": "اصل اور ہدف صفحہ کو زیر نظر کریں",
        "movepagebtn": "مـنـتـقـل",
        "pagemovedsub": "منتقلی کامیاب",
+       "cannotmove": "حسبِ ذیل {{PLURAL:$1|وجہ|وجوہات}} کی بِنا پر صفحہ منتقل نہیں کیا جا سکتا۔",
        "movepage-moved": "<strong>\"$1\" کو \"$2\" کی جانب منتقل کر دیا گیا</strong>",
        "movepage-moved-redirect": "رجوع مکرر تخلیق کر دیا گیا۔",
        "movepage-moved-noredirect": "رجوع مکرر کو بننے سے روک دیا گیا ہے۔",
        "pageinfo-display-title": "عنوان",
        "pageinfo-default-sort": "کلید برائے ابتدائی ترتیب",
        "pageinfo-length": "صفحہ کا حجم (بائٹ میں)",
+       "pageinfo-namespace": "نام فضا",
        "pageinfo-article-id": "صفحہ کی شناخت",
        "pageinfo-language": "زبان",
        "pageinfo-language-change": "تبدیلی",
index b57cdd2..5a67ffb 100644 (file)
        "index-category": "Indekslanadigan sahifalar",
        "noindex-category": "Indekslanmaydigan sahifalar",
        "broken-file-category": "Ishlamaydigan fayl havolalari bor sahifalar",
+       "category-header-numerals": "$1–$2",
        "about": "Haqida",
        "article": "Sahifa",
        "newwindow": "(yangi oynada ochiladi)",
        "group-autoconfirmed": "Tasdiqlangan foydalanuvchilar",
        "group-bot": "Botlar",
        "group-sysop": "Administratorlar",
+       "group-interface-admin": "Interfeys administratorlar",
        "group-bureaucrat": "Rasmiyatchilar",
        "group-suppress": "Tekshiruvchilar",
        "group-all": "(hamma)",
        "statistics-header-pages": "Sahifalar statistikasi",
        "statistics-header-edits": "Tahrirlar statistikasi",
        "statistics-header-users": "Foydalanuvchilar statistikasi",
+       "statistics-header-hooks": "Boshqa statistikalar",
        "statistics-articles": "Maqolalar",
        "statistics-pages": "Sahifalar",
        "statistics-pages-desc": "Ushbu vikidagi barcha sahifalar, shu jumladan munozara sahifalari, qayta yoʻnaltiruvchi va boshqa sahifalar",
diff --git a/languages/i18n/xsy.json b/languages/i18n/xsy.json
new file mode 100644 (file)
index 0000000..304e56b
--- /dev/null
@@ -0,0 +1,673 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Lalotahes"
+               ]
+       },
+       "sunday": "kaSangayan",
+       "monday": "ray ’aehae’ Sinangayan",
+       "tuesday": "ray roSa’ Sinangyan",
+       "wednesday": "to:o’ Sinangayan",
+       "thursday": "Sopat Sinangayan",
+       "friday": "haseb Sinangayan",
+       "saturday": "SayboSi: ka Sinangayan",
+       "sun": "kaSangayan",
+       "tue": "roSa’ Sinangayan",
+       "wed": "to:o’ Sinangayan",
+       "thu": "Sopat Sinangayan",
+       "fri": "haseb Sinangayan",
+       "sat": "SayboSi: Sinangayan",
+       "january": "’aehae’ ’ilaS",
+       "february": "roSa’ ilaS",
+       "march": "to:o’ ’ilaS",
+       "april": "Sopt ’ilaS",
+       "may_long": "haseb ’ilaS",
+       "june": "SayboSi’ ’ilaS",
+       "july": "SayboSi: o ’aehae’ ’ilaS",
+       "august": "maykaSpat ’ilaS",
+       "september": "hae’hae’ ’ilaS",
+       "october": "langpez ’ilaS",
+       "november": "langpez o ’aehae’ ’ilaS",
+       "december": "langpez o roSa’ ’ilaS",
+       "january-gen": "’aehae’ ’ilaS",
+       "february-gen": "roSa’ ilaS",
+       "march-gen": "to:o’ ’ilaS",
+       "april-gen": "Sopt ’ilaS",
+       "may-gen": "haseb ’ilaS",
+       "june-gen": "SayboSi’ ’ilaS",
+       "july-gen": "SayboSi: o ’aehae’ ’ilaS",
+       "august-gen": "maykaSpat ’ilaS",
+       "september-gen": "hae’hae’ ’ilaS",
+       "october-gen": "langpez ’ilaS",
+       "november-gen": "langpez o ’aehae’ ’ilaS",
+       "december-gen": "langpez o roSa’ ’ilaS",
+       "jan": "’aehae’ ’ilaS",
+       "feb": "roSa’ ilaS",
+       "mar": "to:o’ ’ilaS",
+       "apr": "Sopat ’ilaS",
+       "may": "haseb ’ilaS",
+       "jun": "SayboSi: ’ilaS",
+       "jul": "SayboSi:o ’aehae’ ’ilaS",
+       "aug": "maykaSpat ’ilaS",
+       "sep": "hae’hae’ ’ilaS",
+       "oct": "langpez ’ilaS",
+       "nov": "langpez o ’aehae’ ’ilaS",
+       "dec": "langpez o roSa’ ’ilaS",
+       "january-date": "’aehae’ ’ilaS $1",
+       "february-date": "roSa’ ilaS $1",
+       "march-date": "to:o’ ’ilaS $1",
+       "april-date": "Sopt ’ilaS $1",
+       "may-date": "haseb ’ilaS $1",
+       "june-date": "SayboSi’ ’ilaS $1",
+       "july-date": "SayboSi: o ’aehae’ ’ilaS $1",
+       "august-date": "maykaSpat ’ilaS $1",
+       "september-date": "hae’hae’ ’ilaS $1",
+       "october-date": "langpez ’ilaS $1",
+       "november-date": "langpez o ’aehae’ ’ilaS $1",
+       "december-date": "langpez o roSa’ ’ilaS $1",
+       "pagecategories": "{{PLURAL:$1| ’a’apolen |$1 ka ’a’apolen }}",
+       "category_header": " ’a’apolen ray \"$1\" ’izo’ ka ye:myen",
+       "subcategories": "’ima ’ol’olae’an ka’a’apolan",
+       "category-media-header": " ka’a’apolen \"$1\" ’izo’ ka me:ti:",
+       "category-empty": "<em> hini pin ’a’apol haysani ’i’ini’ ray hani yemien o ka meiti .</em>",
+       "hidden-categories": "{{PLURAL:$1| Sina:il ka pin’a’apol }}",
+       "category-subcat-count": "{{PLURAL:$2|hini ka’a’apolan hani nanaw saeboeh ray wahoer 1 ka ’ima ’ol’olae’an ka’a’apolan .|hini ka’a’apolan hani saeboeh wahoer $1 ka ima ’ol’olae’an ka’a’apolan , saeboeh $2. }}",
+       "category-article-count": "{{PLURAL:$2|hini ka’a’apolan hani ray wahoer saeboeh ’aehae’ ka yemyen.|hini ka’a’apolan hani ray wahoer saeboeh ’ $1 aehae’ ka yemyen, saeboeh $2 .}}",
+       "category-file-count": "{{PLURAL:$2|hini ka’a’apolan hani saeboeh nanaw ’ano ’aehae’ naehan tang’an.|hini ka’a’apolan hani saeboeh waehoer $1 ka tang’an, saeboeh $2.}}",
+       "listingcontinuesabbrev": "lososo:oy",
+       "noindex-category": "’inokay ka:ati kaSa’amoehan kina:at ka yemien",
+       "broken-file-category": " tang’an  lomotor ’aewhay ilaka yemien",
+       "newwindow": "(’anoka ’ima SaSo’ hinohaes haewaeh )",
+       "cancel": "kayni’",
+       "moredotdotdot": "akoy...",
+       "mypage": "ye:myen",
+       "mytalk": " kapaehrahrangan",
+       "navigation": " tawlan",
+       "and": "&#32; ki &#32;",
+       "namespaces": " karo:o’an",
+       "variants": "pyenti:",
+       "navigation-heading": "tawlan kapawhi:ilan",
+       "returnto": " lobih ray $1.",
+       "tagline": "minay-{{SITENAME}}",
+       "help": " kapakSekla’an",
+       "search": "komi:im",
+       "searchbutton": " komi:im",
+       "go": " patawaw",
+       "searcharticle": "patawaw",
+       "history": "ray yemyen kin’i’iyaehan",
+       "history_short": "kakhayza’an kin’i’iyaeh",
+       "history_small": "kakhayza’an kin’i’iyaeh",
+       "printableversion": "kayzaeh mal’oehaez ka kina:at banben",
+       "permalink": "pinakrengreng kalotoran",
+       "view": " komita",
+       "view-foreign": "ray $1 komita’",
+       "edit": " bienji",
+       "create": "paskayzaeh",
+       "create-local": "baba:aw rinpa: hini ray ’asang kapakSekla’an",
+       "newpage": "’ima SaSo’ ye:myen",
+       "talkpagelinktext": " kapaehrahrangan",
+       "specialpage": " ’ima nonak yemyen",
+       "personaltools": " ’in nonak a nom matwaw",
+       "talk": "maehrahrang",
+       "views": " komita",
+       "toolbox": "nom matwaw",
+       "otherlanguages": "’aroma’ ka:i’",
+       "redirectedfrom": "( papanra:anen ila nahan ray $1)",
+       "redirectpagesub": " papanra:an nahan ka ye:myen",
+       "redirectto": " papanra:an nahan ray:",
+       "lastmodifiedat": "hini ye:myen ’ima maybi:il bienji 於 $1 $2.",
+       "jumpto": " rima’",
+       "jumptonavigation": " tawlan",
+       "jumptosearch": "komi:im",
+       "aboutsite": " ’inakhini’an {{SITENAME}}",
+       "aboutpage": "Project: ’inakhini’an",
+       "copyrightpage": "{{ns:project}}: banqyuen",
+       "currentevents": "hinapa: ray Sinbon",
+       "disclaimers": " pinakSekla’ kina:at",
+       "disclaimerpage": "Project: saeboeh SikoSa’ pinakSekla’ kina:at",
+       "edithelp": " bienji kapakSekla’an",
+       "mainpage": "So:ye’",
+       "mainpage-description": "So:ye’",
+       "portal": "kakS’aboe’an noka Se’cyun",
+       "portal-url": "Project: kakS’aboe’an noka Se’cyun",
+       "privacy": " kina:at ka kaspengan",
+       "privacypage": "Project: kina:at ka kaspengan",
+       "retrievedfrom": "’inmari’ ray \"$1\"",
+       "youhavenewmessages": "So’o hayza’ $1 ($2)",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|niSo’}}hayza’ ’inay{{PLURAL:$3|’aroma’ kamamatawaw |$3 ka kamamatawaw }} $1 ($2).",
+       "newmessagesdifflinkplural": "haysani’ {{PLURAL:$1| sinpih }}",
+       "editsection": " bienji",
+       "editold": " bienji",
+       "viewsourceold": " komita’ ka yuensema:",
+       "editlink": " bienji",
+       "viewsourcelink": " komita’ ka yuensema:",
+       "editsectionhint": "bienji zhang jie :$1",
+       "toc": "raro:o’ noka kina:at",
+       "showtoc": "pinakita’",
+       "hidetoc": " Sa:il",
+       "collapsible-expand": "pawSika:",
+       "site-atom-feed": "kawa:i’an ray $1 ka Atom",
+       "page-atom-feed": "$1 ray Atom kawa:i’an",
+       "red-link-title": " ’oka’ ka yemyen",
+       "nstab-main": "ye:myen",
+       "nstab-user": " nom matawaw ye:myen",
+       "nstab-special": " ’ima nonak yemyen",
+       "nstab-project": " zhwan’an ye:myen",
+       "nstab-image": " tang’an",
+       "nstab-template": " kakSaro:olan",
+       "nstab-category": " ’a’apolen",
+       "mainpage-nstab": "So:ye’",
+       "nospecialpagetext": "<strong> niSo’ pina’alo’ ’ima nonak yemien ’inokay paylal’oz .</strong> So: ’iyakina mari’ ’ima kayzaeh ka ’ima nonak yemyen kapakSekla’ kina:at kazaeh maray hini [[Special:SpecialPages|{{int:specialpages}}]].",
+       "missingarticle-diff": "( kin nonak: $1 , $2 )",
+       "badtitle": " ’inokay paylal’oz ka raro:o’",
+       "badtitletext": " tinoroe’ ray ye:myen raro:o’ ’inokay paylal’oz 、’inoka’ ka kano’, a ’oka’i paskayzaeh lomotor nom kaSkoraeh ka:i’ a kaSkoraeh ray Wiki ka raro:o’ .\n raro:o’ raro:o’ ’izo’ ra:amen hani saeboeh ’oka’ nanaw papatawaw ray raro:o’ ka kaka:at ka ka:i’.",
+       "viewsource": " komita’ ka yuensema:",
+       "viewsource-title": " komita  $1 的 yuensema:",
+       "viewsourcetext": "So’o kayzaeh komita o ’alro:ol rini ray yemien ka yuensema:",
+       "yourname": " kamamatawaw raro:o’:",
+       "userlogin-yourname-ph": " koma:at ’inSo’a nom matawaw raro:o’",
+       "yourpassword": " mima:",
+       "userlogin-yourpassword": "mima",
+       "userlogin-yourpassword-ph": " ka:at ka mima: niSo’",
+       "createacct-yourpassword-ph": "koma:at mima:",
+       "createacct-yourpasswordagain": "Sa:hael nahan ka mima:",
+       "createacct-yourpasswordagain-ph": "’onhael nahan koma:at mima:",
+       "userlogin-remembermypassword": "hoehoero: ma’an kakaS’aboe’an",
+       "login": "kaS’aboe’",
+       "logout": "kas’oehaez",
+       "userlogin-noaccount": "’oka’ ka zhanghaw ay?",
+       "userlogin-joinproject": "ropa: {{SITENAME}}",
+       "createaccount": " paskayzaeh zhanghaw",
+       "userlogin-resetpassword-link": "mangowip ka mima?",
+       "userlogin-helplink2": "patilhaehael kaS’aboe’",
+       "createacct-emailoptional": " tyenze: yo:jyen ( pawhi:il ka:at )",
+       "createacct-email-ph": " ka:at ka tyenze: yo:jyen niSo’",
+       "createacct-submit": "paskayzaeh niSo’ ka zhanghaw",
+       "createacct-another-submit": " paskayzaeh zhanghaw",
+       "createacct-benefit-heading": "{{SITENAME}} hini ’inak So’oan hingha’ kamamobay ka pinatawaw ma’iyaeh nasiya pinaskayzaeh.",
+       "createacct-benefit-body1": "{{PLURAL:$1| ’okik miniSa’la’ pinbienji }}",
+       "createacct-benefit-body3": " ray haysani’ ka{{PLURAL:$1| kama mobay }}",
+       "mailmypassword": " ’in’alay naehan paskayzaeh ka mima:",
+       "loginlanguagelabel": " ka:i’ :$1",
+       "pt-login": "kaS’aboe’",
+       "pt-login-button": "kaS’aboe’",
+       "pt-createaccount": " paskayzaeh zhanghaw",
+       "pt-userlogout": "kas’oehaez",
+       "botpasswords-label-create": "paskayzaeh",
+       "botpasswords-label-cancel": "kayni’",
+       "resetpass-submit-cancel": "kayni’",
+       "passwordreset": " ’in’alay naehan paskayzaeh ka mima:",
+       "passwordreset-username": " kamamatawaw raro:o’:",
+       "bold_sample": " pinakrarahoe’ ka kina:at",
+       "bold_tip": " pinakrarahoe’ ka kina:at",
+       "italic_sample": " kina:at pinay’iring",
+       "italic_tip": " kina:at pinay’iring",
+       "link_sample": " kalotoran raro:o’",
+       "link_tip": "izo’ kalotoran",
+       "extlink_sample": "http://www.example.com kalotoran raro:o’",
+       "extlink_tip": " ’oehaez kalotoran ( hoehoero: ’anoka http:// ’on’alay)",
+       "headline_sample": "minayhal ka raro:o’ kina:at",
+       "headline_tip": "minaypoSal ka raro:o’ kina:at",
+       "nowiki_sample": "paksilaeh ’inoki ke:Se’hwa’ ka kina:at",
+       "nowiki_tip": "’itayso: ka wiki pinke:Se’hwa’",
+       "image_tip": "tang’an rinpa:",
+       "media_tip": " tang’an kalotoran",
+       "sig_tip": "’inSo’a kina:at raro:o’ ki hahila: jikang",
+       "hr_tip": "hinoba:ang ’imatatihingha’ (’okik rengreng)",
+       "summary": "zhayaw:",
+       "minoredit": "hini ’aehae’ ka pinaybiil kaponrowa’en",
+       "watchthis": "kitkita’ ka hini ye:myen",
+       "savearticle": "kaSili’an ye:myen",
+       "savearticle-start": "kaSili’an ye:myen...",
+       "showpreview": " pinakita’ ka pinaSawaSak",
+       "showdiff": " pinakita’ ka sinapih",
+       "anoneditwarning": "<strong>pati’azem:</strong> So’o ’i’ini’ kaS’abo’, So: So’o matawaw ’ana kano’ pinbienji niSo’ katnaIPan kapakita’ saeboeh. So: So’o <strong>[$1 kaS’abo’ ]</strong> a <strong>[$2 paskayzaeh ka zhanghaw ]</strong>, niSo’ pinbienji ’am ’anoka ’inSo’a nom matawaw raro:o’ kaSakira:a’an, hayza ka ’aroma’ ’ima kayzaeh.",
+       "blockedtext": "<strong> niSo’ kapatawaw raro:o’ a IP Sina:ang soksoken ila.<strong>So’o soksoken noka $1,\nkomSa noka <em>$2</em>.* kasoksokan ’in’alay ray:$8 * sizaeh ka sinoksok ’in’alay ray :$6 * ’ima hingha’ kasoksoken :$7 So’o kayzaeh pakra:am ka $1 a ka ’aroma’ [[{{MediaWiki:Grouppage-sysop}}| kama malahang ]] paehrahrang noka kasoksokan howaw. So: So’o ray [[Special:Preferences| kin hinowa’an ]] ’izo’ hayza’ ila ka ’ima kayzaeh ka Sina:ang nom maraytyennaw kina:at ,\no ’i’ini’i: hayza’ ka nom soksok, ’isa: So’o kayzaeh maray \"Email pakra:am ka hini kamamatawaw \" ka nom pinakra:am ka ’ima hingha’an kama malahang. niSo’ ’isahini ka\nIP ray $3,hini nom somoksok ka ID ka #$5. So: So’o ray ’am somingozaw ka ka:at ka hani babaw ka pinakSekla’.",
+       "loginreqlink": "kaS’aboe’",
+       "newarticletext": "So’o mam lomotor ray ’aehae’ ’inoka’ ka yemien.\n’am paskayzaeh hiza yemien, paray hini waehoer ka pienji: fangkoway ’izo’ ka:at kapapnabih (’am Sekla’ kita’ [$1 kapatawawan kapakSekla’an yemien ]).\nSo: So’o ’okik ’iya’azem mowa:i’ ray hini yemien, ’isa: pawhi:il kakita’an ka<strong> nom lobih </strong> kakonhootan.",
+       "anontalkpagetext": "<em>hini yemien kapaehraerang nom pakita’ ka ’ima ’i’ini’ paSkira:a’ ka raro:o’ ma’iyaeh kapatwaw.\n</em> ’isa: yami ’am ’anoka IP Sina:ang ma Swkla’ ka raro:o’, ’oka’ ila ’ima hingha’ ka IP Sina:eng ra:amen haeba:an ka ’ima ma’onhael mata:waw rini. So: So’o ’inoka’ ka raro:o’ o So: komSa’ hini pinaehraehrang ’oka’ howaw ki So’on, ’isa: [[Special:CreateAccount|\npakhayza’ ka ’ima SaSo’ zhanghaw ]] a [[Special:UserLogin| kaS’abo’ ]]\n ’aewhay hahamez kil ’aroma’ ka ’ima ’oka’ ka raro:o’.",
+       "noarticletext": "hini ye:myen ’isahini ’ oka’ kapinanabih, So’okayzaeh ray ’aroma’ ye:myen ’izo’[[Special:Search/{{PAGENAME}}| komi:im hini ye:myen ka raro:o’ ]]、<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} komi:im ka ’ima hingha’an pinatawawan] a [{{fullurl:{{FULLPAGENAME}}|action=edit}} paskayzaeh ka hini ye:myen]</span>",
+       "userpage-userdoesnotexist-view": "kamamatawaw zhanghaw \"$1\" ’i’ini’ ka:at ka raro:o’",
+       "clearyourcache": "<strong>bazae’:</strong>kanSo’ ’inaSkan sizaeh So’o boloe’ani ray kakita’an ray katal’amoeh ’isa: Sahoero: ila ka ’ima SaSo’ pyenti: . * <strong>Firefox / Safari:</strong> konhoeoet <em>Shift</em> ’isa: pawhi:il <em> ka tal’izaehan </em>,a konhoeoet <em>Ctrl-F5</em> a <em>Ctrl-R</em> (Mac ’isa: ka <em>⌘-R</em>) * <strong>Google Chrome:</strong>konhoeoet ka<em>Ctrl-Shift-R</em> (Mac ’isa: ka <em>⌘-Shift-R</em>) * <strong>Internet Explorer:</strong> konhoeoet <em>Ctrl</em> ’isa: pawhi:il ka <em> tinal’izaehan </em>,a konhoeoet ka <em>Ctrl-F5</em> * <strong>Opera:</strong> Sa’ila ray <em> kapawhi:ilan → paskayzaeh </em> (ray Mac ’isa: ka <em>Opera → kin hinowa’an </em>) ’isa: Sa’ila nahan ray <em> Sina:il & kakkayzaehan → boloe’ ka kinita’ kina:at → tinal’amoehan ka hinoba:ang ki tang’an </em>.",
+       "previewnote": "</strong>So’o ’isahini ray kaSawaSwaSakan, niSo’ sinapih ’i’ini’i: Sili’i:! </strong>",
+       "editing": "mam bienji $1",
+       "creating": "mam paskayzaeh $1",
+       "editingsection": "mam pienji: $1 ( zhang jie: )",
+       "templatesused": "hini ye:myen matawaw ila hini wahoer ka {{PLURAL:$1| kakSaro:olan }}:",
+       "templatesusedpreview": "hini kaSawaSakan ’anoka hani wahoer ka {{PLURAL:$1| kakSaro:olan }}:",
+       "template-protected": "(kinalahaeng)",
+       "template-semiprotected": "(’inokay kalahaengi saeboeh)",
+       "hiddencategories": "hini ye:myen ’anoka {{PLURAL:$1|1 Sina:il ka’a’apolen |$1 Sina:il ka’a’apolen }}saeboeh ma’iyaeh:",
+       "permissionserrorstext-withaction": "komSa’ hini waehoer {{PLURAL:$1| nak’ino’ ’isa: }}, niSo’ ’oka’ ka qyuenSyen nom ray $2 matawaw :",
+       "recreate-moveddeleted-warn": "<strong> pati’azem :So’o mam boloe’ Sa’la’ pinaskayzaeh ka ymien .</strong> So’o ’az’azem nahan ’am pienji: ay ka hini ’aehae’ biyae’. rini hayza’ kaboloe’an ki kapa’inkoraehan ka kina:at kakita’an:",
+       "moveddeleted-notice": "hini ye:myen boloe’en ila.\nray waehoer binoway ray hini ye:myen ka binoloe’ ki tinilkoraeh ka pinatawaw kayzaeh nom Saro:ol.",
+       "undo-failure": "hini ray pienji: ka pinonrowa’ ’izo’ hayza’ \n’inokik paylal’oz, ’isa: hini pinpienji: ’aewhay ka paklobihin.",
+       "viewpagelogs": " kita’ hini ray ye:myen ka pinatawaw",
+       "currentrev": " ’ima SaSo’ pinonrowa’",
+       "currentrev-asof": "ray $1 ka ’ima SaSo’ pinonrowa’",
+       "revisionasof": "ray $1 ka pinonrowa’",
+       "revision-info": "ray $1 maray {{GENDER:$6|$2}} pinatawaw ka pinonrowa’ $7",
+       "previousrevision": "←Sa’la’ pinonrowa’",
+       "nextrevision": "wahoer ila pinonrowa’ →",
+       "currentrevisionlink": " ’ima SaSo’ pinonrowa’",
+       "cur": " ’isahini",
+       "last": "cyenpi:",
+       "histlegend": "tatihola’ pawhi:il ka kin nonak banben: pawhi:il ka pintatihola’ o pinonrowa’ banben kapawhi:ilan fangkoway o pawhi:il kamaSal k kakonhootan rima’ tatihola’ .<br /> kaka:at kapakSekla’an:<strong>({{int:cur}})</strong> = ki ’ima SaSo’ ka pinonrowa’ banben tatihola’ ,<strong>({{int:last}})</strong> = ki mininSa’la’ ka pinonrowa’ banben tatihola’ ,<strong>{{int:minoreditletter}}</strong> = pinapaybi:il ka pinonrowa’.",
+       "history-feed-description": "hini ray Wiki babaw ’isahini ka yemien pinonrowa’ ka kintatini’an",
+       "history-feed-item-nocomment": "ray $1 o $2 pinawhi:il",
+       "rev-delundel": " somapih kakita’an",
+       "rev-showdeleted": "pinakita’",
+       "revdel-restore": " somapih kakita’an",
+       "pagehist": "ray yemyen kin’i’iyaehan",
+       "history-title": "\"$1\" ’inkakhayza’an ka pinonrowa’",
+       "difference-title": "\"$1\" ponrowa’ ray ’izo’ ka kin nonakan",
+       "lineno": "ra:an $1:",
+       "compareselectedversions": "tatihola’ pawhi:il ka pinonrowa’",
+       "editundo": " paklobih",
+       "diff-multi-sameuser": "(’i’ini’ pinakita’ ’ima hingha’ ka kamamatawaw ray wazwaz pinatawaw $1 ka pinonrowa’ )",
+       "diff-multi-otherusers": "(’i’ini’ ka pinakita’ pak $2 位 kamamatawaw ray wazwaz pinatawaw $1’onhael ponrowa’)",
+       "searchresults": " komi:im ka pinatawawan",
+       "searchresults-title": "ray $1 kini:im ka pinatawawan",
+       "prevn": "ray kati’ae’la’an $1",
+       "nextn": "ray hikor {{PLURAL:$1|$1}}",
+       "prevn-title": "ray mininSa’la’ $1 ka pinatawawan",
+       "nextn-title": "ray hikor $1 ka pinatawawan",
+       "shown-title": "ray sa’sa’ih ye:myen pinakita’ $1 pinatawawan",
+       "viewprevnext": " komita’ ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-exists": "<strong>hini ka Wiki hayza’ ila ka raro:o’ ray \"[[:$1]]\" ka yemien .</strong> {{PLURAL:$2|0=| o kita’ ’oyeh ka ’aroma’ kini:im ka pinatawawan .}}",
+       "searchmenu-new": "<strong> ray hini Wiki paskayzaeh ka ye:myen \"[[:$1]]\"!</strong>{{PLURAL:$2|0=|a pakita’ ka ’inSo’a kina:at kapaehrahrang tomihoero: ka kini:im, | a pakita’ ka ’aroma’ kini:im pinatawawan.}}",
+       "searchprofile-articles": " kapapnabih ye:myen",
+       "searchprofile-images": "tome:thi:",
+       "searchprofile-everything": "saeboeh",
+       "searchprofile-advanced": "kaS’izo’ nahan",
+       "searchprofile-articles-tooltip": "ray $1 ’ izo’ komi:im",
+       "searchprofile-everything-tooltip": " komi:im saeboeh kapapnabih ( hani saeboeh kapaehrahrangan ye:myen)",
+       "searchprofile-advanced-tooltip": " komi:im nonak karo:o’an",
+       "search-result-size": "$1 ({{PLURAL:$2|1 ka kina:at |$2 ka kina:at}})",
+       "search-result-category-size": ",",
+       "search-redirect": "( papanra:an nahan ray $1)",
+       "search-section": "( zhang jie $1)",
+       "search-category": "( ’a’apolen $1)",
+       "search-file-match": "( maylal’oz ray tang’an kapapnabih )",
+       "search-suggest": "niSo’ SikoSa’ hini ay:$1",
+       "search-interwiki-more": "(akoy)",
+       "searchall": "saeboeh",
+       "search-showingresults": "{{PLURAL:$4| ray <strong>$1</strong> pinatawawan, saeboeh <strong>$3</strong> |ray <strong>$1 - $2</strong> pinatawawan, saeboeh <strong>$3</strong> }}",
+       "search-nonefound": " ’ okay paylal’oz kini:im kapaehrahrang ka pinatawawan.",
+       "powersearch-toggleall": "saeboeh",
+       "preferences": "kin hinowa’an",
+       "mypreferences": "kin hinowa’an",
+       "prefs-user-pages": " nom matawaw ye:myen",
+       "prefs-rc": "haysani’ sinapih",
+       "prefs-watchlist": " jyenSe’ qintan",
+       "prefs-editwatchlist-raw": "pienji: ’inin’alayan kakita’an qintan",
+       "searchresultshead": "komi:im",
+       "prefs-searchoptions": "komi:im",
+       "prefs-namespaces": " karo:o’an",
+       "prefs-files": " tang’an",
+       "prefs-diffs": " kin nonak",
+       "group-user": " kamamatawaw",
+       "group-all": "(saeboeh)",
+       "right-upload": " maray tiyanaw mobay ka kina:at tang’an",
+       "right-writeapi": "ka:at ka API",
+       "grant-createaccount": " paskayzaeh zhanghaw",
+       "newuserlogpage": " paskayzaeh noka kamamatawaw ka pinatawawan",
+       "rightslog": "noka kamamatawaw ka’letan kina:at",
+       "action-edit": " bienji ka hini ye:myen",
+       "action-createaccount": "paskayzaeh ka hini kamamatawaw zhanghaw",
+       "action-move": " tilkoraeh ka hini kina:at",
+       "enhancedrc-history": "kakhayza’an kin’i’iyaeh",
+       "recentchanges": "haysani’ sinapih",
+       "recentchanges-legend": " haysani’ somapih kapawhi:ilan",
+       "recentchanges-summary": "taniSowaw ray Wiki ’izo’ hini ye:myen haysani’ ka sinapih .",
+       "recentchanges-noresult": "tani tinoroe’ hahila: ’izo’ ’inoka’ ka minaylal’oz pinaehrahrang ka pyenti.",
+       "recentchanges-feed-description": "taniSowaw ray Wiki ’izo’ hini zhayaw ray haysani ka pinaSohowih.",
+       "recentchanges-label-newpage": "hiza bienji paskayzaeh ila ka ’ima SaSo’ ye:myen",
+       "recentchanges-label-minor": "hini ’aehae’ ka pinaybiil kaponrowa’en",
+       "recentchanges-label-bot": "hiza bienji ’anoka kikay ma’iyaeh matawaw",
+       "recentchanges-label-unpatrolled": "hiza pinbienji ’i’ini’ ki:imi",
+       "recentchanges-label-plusminus": "hiza ye:myen sinapih ka kinsopaloy ( Sinepe: kaSili’an ka kina:at )",
+       "recentchanges-legend-heading": "<strong>pinakita’ ka hinoba:ang:</strong>",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (pakita’ [[Special:NewPages| ’ima SaSo’ ye:myen]])",
+       "recentchanges-submit": "pinakita’",
+       "rcfilters-tag-remove": "tilkoraeh '$1'",
+       "rcfilters-activefilters-hide": " Sa:il",
+       "rcfilters-activefilters-show": "pinakita’",
+       "rcfilters-days-show-days": "$1 hahila:",
+       "rcfilters-savedqueries-cancel-label": "kayni’",
+       "rcfilters-filtergroup-lastRevision": " ’ima SaSo’ pinonrowa’",
+       "rcnotefrom": "hani wahoer{{PLURAL:$5| ’ima}} ’aring <strong>$3 $4</strong> pinara:an ka pyenti: (kapakita’ <strong>$1</strong> ).",
+       "rclistfrom": "pinakita’ ray $3 $2 ka ’ima SaSo’ sinapih",
+       "rcshowhideminor": "$1 pinaybiil bienji",
+       "rcshowhideminor-show": " pinakita’",
+       "rcshowhideminor-hide": " Sa:il",
+       "rcshowhidebots": "$1 kikay ma’iyaeh",
+       "rcshowhidebots-show": " pinakita’",
+       "rcshowhidebots-hide": " Sa:il",
+       "rcshowhideliu": "$1 pinaSkira:a’ kamamatawaw",
+       "rcshowhideliu-show": " pinakita’",
+       "rcshowhideliu-hide": " Sa:il",
+       "rcshowhideanons": "$1 Sina:il ka raro:o’ kamamatawaw",
+       "rcshowhideanons-show": " pinakita’",
+       "rcshowhideanons-hide": " Sa:il",
+       "rcshowhidepatr": "komi:im ka pinpiyenji:",
+       "rcshowhidepatr-show": " pinakita’",
+       "rcshowhidepatr-hide": " Sa:il",
+       "rcshowhidemine": "$1 ’inma’ana bienji",
+       "rcshowhidemine-show": " pinakita’",
+       "rcshowhidemine-hide": " Sa:il",
+       "rcshowhidecategorization-show": " pinakita’",
+       "rcshowhidecategorization-hide": " Sa:il",
+       "rclinks": "pinakita’ haysani’ ray $2 hahila: ’izo’ $1 monhael somapih",
+       "diff": " kin nonak",
+       "hist": "kakhayza’an kin’i’iyaehan",
+       "hide": " Sa:il",
+       "show": " pinakita’",
+       "rc-change-size-new": "sinapih ila ka $1 Sinepe: kaSili’an ka kina:at",
+       "rc-old-title": " ray ’inin’alay pinaskayzaeh ka raro:o’ {{PLURAL:$1| sinapih }}",
+       "recentchangeslinked": " ’ima hingha’an sinapih",
+       "recentchangeslinked-feed": " ’ima hingha’an sinapih",
+       "recentchangeslinked-toolbox": " ’ima hingha’an sinapih",
+       "recentchangeslinked-title": "ki \"$1\" ’ima hingha’an somapih",
+       "recentchangeslinked-page": "noka ye:myen ka raro:o’ :",
+       "recentchangeslinked-to": "sapih ila ka pinakita’ kalotoran ray tinoroe’ ka ye:myen sinapih",
+       "upload": " maray tiyanaw mobay ka kina:at tang’an",
+       "filedesc": "zhayaw",
+       "fileuploadsummary": "zhayaw:",
+       "filesource": " kawa:i’an:",
+       "upload-dialog-title": " maray tiyanaw mobay ka kina:at tang’an",
+       "upload-dialog-button-cancel": "kayni’",
+       "upload-form-label-infoform-description": " papapnabih",
+       "upload-form-label-infoform-categories": " ’a’apolen",
+       "upload-form-label-infoform-date": " hahila",
+       "license": " kinSiwa’ kina:at:",
+       "license-header": " kinSiwa’ kina:at",
+       "listfiles-userdoesnotexist": "kamamatawaw zhanghaw \"$1\" ’i’ini’ ka:at ka raro:o’",
+       "imgfile": " tang’an",
+       "listfiles_date": " hahila",
+       "listfiles_user": " kamamatawaw",
+       "listfiles_description": " papapnabih",
+       "file-anchor-link": " tang’an",
+       "filehist": " tang’an ’inkakhayza’an",
+       "filehist-help": " pawhi:il ka hahila: / jikang kayzaeh komita’ hiza jikang ka tang’an banben .",
+       "filehist-current": " ’isahini",
+       "filehist-datetime": " hahila: / jikang",
+       "filehist-thumb": " pinak’ol’olae’an",
+       "filehist-thumbtext": "ray $1 banben ka hinoba:ang pinak’ol’olae’an",
+       "filehist-user": " kamamatawaw",
+       "filehist-dimensions": "ce:cun",
+       "filehist-comment": "kina:at ka kakSekla’an",
+       "imagelinks": "nom ray tang’an",
+       "linkstoimage-redirect": "$1 ( tang’an papanra:an nahan ) $2",
+       "sharedupload-desc-here": "hin tang’an minay $1 o kayzaeh noka ’aroma’ zhwan’an patawawen .\nray wahoer pinakita’ ka hini tang’an ray [$2 tang’an pinapanabih ye:myen] ray ’izo’ ka papapnabih",
+       "filepage-nofile": "’inokik rini raro:o’ ka tang’an.",
+       "upload-disallowed-here": "So’o ’am ’oka’ nanaw manehmek ka hini tang’an .",
+       "randompage": " tanikikay ka ye:myen",
+       "randomincategory-submit": " patawaw",
+       "statistics-articles": " kapapnabih ye:myen",
+       "statistics-pages": "ye:myen",
+       "pageswithprop-submit": " patawaw",
+       "double-redirect-fixer": " papanra:an nahan ka kama painrowa’",
+       "brokenredirects-edit": " bienji",
+       "withoutinterwiki-submit": "pinakita’",
+       "nbytes": "$1 ka weyyuenzu:",
+       "ncategories": "$1 {{PLURAL:$1| ’a’apolen |$1 ka ’a’apolen }}",
+       "nmembers": "$1 ka kamamatawaw",
+       "prefixindex": "taniche:to: ki:im ka yemien",
+       "prefixindex-submit": "pinakita’",
+       "protectedpages-filters": " komi:im:",
+       "protectedpages-page": "ye:myen",
+       "usereditcount": "$1 {{PLURAL:$1| ’okik miniSa’la’ pinbienji }}",
+       "newpages": "’ima SaSo’ ye:myen",
+       "newpages-submit": "pinakita’",
+       "newpages-username": " kamamatawaw raro:o’:",
+       "move": " tilkoraeh",
+       "movethispage": " tilkoraeh ka hini kina:at",
+       "pager-newer-n": "{{PLURAL:$1| ’ima SaSo’ ora $1 }}",
+       "pager-older-n": " ’ima tatini’ $1",
+       "apisandbox-add-multi": "baba:aw rinpa:",
+       "booksources": " kina:at kawa:i’an ka kin Sekla’an",
+       "booksources-search-legend": "komi:im ka kina:at kawa:i’an ka kin Sekla’an",
+       "booksources-search": "komi:im",
+       "speciallogtitlelabel": "kalokngoran ( raro:o’ a ’inoka {{ns:user}}: kamamatawaw a koSa’en kamamatawaw ):",
+       "log": "pinatawaw",
+       "logeventslist-submit": "pinakita’",
+       "alllogstext": "patsaeboeh pakita’ saeboeh {{SITENAME}} ’izo’ saeboeh Sinraehoe’ ka kina:at . So’o kayzaeh pawhi:il ray ka’aSo:olan ka kina:at ka Sinraehoe’, Sowatoroe’ ka kamamatawaw raro:o’ (’ae’aeppol ’ima sopaloy ’ima ’ol’olae’an ka kina:at) ki kamapapatalay ka yemien (’ae’aeppol ’ima sopaloy ’ima ’ol’olae’an ka kina:at).",
+       "logempty": "’oka’ ka pinaylal’oz kapaehrahrang kina:at.",
+       "checkbox-all": "saeboeh",
+       "allpages": " saeboeh ye:myen",
+       "allarticles": " saeboeh ye:myen",
+       "allpagessubmit": " patawaw",
+       "categories": " ’a’apolen",
+       "categories-submit": "pinakita’",
+       "sp-deletedcontributions-contribs": " mobay ka pinatawaw",
+       "linksearch-ns": " karo:o’an :",
+       "linksearch-ok": "komi:im",
+       "listusers-submit": "pinakita’",
+       "emailuser": "Email kapakra:am ka hini kamamatawaw",
+       "emailusername": " kamamatawaw raro:o’:",
+       "watchlist": " jyenSe’ qintan",
+       "mywatchlist": " jyenSe’ qintan",
+       "watchlistfor2": "noka $1 ka jienshi qintan $2",
+       "watch": "komitkita’",
+       "watchthispage": "kitkita’ ka hini ye:myen",
+       "watchlist-details": "niSo’ kakita’an ray qintan babaw saeboeh hayza’ $1 yemien ( nom maehraehrang yemien saeboeh).",
+       "wlheader-showupdated": "niSo’ ray ’ima maybi:il monhael komita sizaeh ka pinonrowa’ yemian ’am ’anoka <strong>\npinakrarahoe’ kina:at </strong> Sipinakita’.",
+       "wlnote": "hani wahoer ’ima ’aring $3 $4 kaysa’an <strong>$2</strong> kakita’an hahila: pinaskayzayzaeh <strong>$1</strong> pinapaybi:il ka pyenti:",
+       "wlshowlast": "pinakita’  haysani’  $1 kakita’an ka hahila: $2 hahila:",
+       "watchlist-hide": " Sa:il",
+       "watchlist-submit": "pinakita’",
+       "enotif_reset": "pinSakira:a’ ray yemien kinita’ ila saeboeh",
+       "enotif_minoredit": "hini ’aehae’ ka pinaybiil kaponrowa’en",
+       "historyaction-submit": " pinakita’",
+       "dellogpage": " boloe’ ka pinatawaw",
+       "deletionlog": " boloe’ ka pinatawaw",
+       "rollbacklink": "paklobih",
+       "rollbacklinkcount": " paklobih $1 ka pinbienji",
+       "protectlogpage": "kinalahaeng ka pinatawaw",
+       "protectedarticle": "kinalahaeng ila \"[[$1]]\"",
+       "modifiedarticleprotection": "sinapih ila \"[[$1]]\" nom malahaeng ka kin’ibabaw.",
+       "protect-default": " somiwa’ saeboeh kamamatawaw",
+       "restriction-type": "Somiwa’ ka Siniwa’:",
+       "restriction-edit": " bienji",
+       "restriction-move": " tilkoraeh",
+       "restriction-create": "paskayzaeh",
+       "undeleteinvert": "hin’ohay pawhi:il",
+       "undelete-search-submit": "komi:im",
+       "namespace": " karo:o’an :",
+       "invert": "hin’ohay pawhi:il",
+       "tooltip-invert": "pawhi:il ka hini he:Syuen fangkway ’ano Sina:il pawhi:il ray karo:o’an ’izo’ ka ye:myen sapih (So: pawhi:il ka ’ima hingha’an karo:o’an, ’isa: ’am hoSa:il ka ’ima hingha’an karo:o’an )",
+       "namespace_association": "’ima hingha’an karo:o’an",
+       "tooltip-namespace_association": "pawhi:il ka hini he:Syuen fangkway ’anoka hani saeboeh ki pinawhi:il karo:o’an ka ’ima hinfha’ kapaehrahrang a ka Sapang karo:o’an",
+       "blanknamespace": "(’ima Sapang)",
+       "contributions": "{{GENDER:$1| kamamatawaw }} mobay ka pinatawaw",
+       "contributions-title": "noka $1 ka kamamatawaw binoway ka pinatawaw",
+       "mycontris": " mobay ka pinatawaw",
+       "anoncontribs": " mobay ka pinatawaw",
+       "contribsub2": "{{GENDER:$3|$1}} binoway ka pinatawaw ($2)",
+       "contributions-userdoesnotexist": "kamamatawaw zhanghaw \"$1\" ’i’ini’ ka:at ka raro:o’",
+       "nocontribs": "’okay tihoero: ka pinaylal’oz pinaehrahrang ka pyenti:.",
+       "uctop": " ’isahini",
+       "month": "kalokngoran ka ’ilaS:",
+       "year": "kalokngoran ka tinal’oemaeh:",
+       "sp-contributions-newbies": "pinakita’ nanaw ka ’ima SaSo’ zhanghaw ka pinatawaw",
+       "sp-contributions-blocklog": " soksok ka pinatawaw",
+       "sp-contributions-logs": "pinatawaw",
+       "sp-contributions-talk": " kapaehrahrangan",
+       "sp-contributions-username": "noka IP Sina:engan o noka kamamatawaw raro:o’:",
+       "sp-contributions-toponly": "pinakita’ nanaw ’ima SaSo’ pinonrowa’ ka pinpienji:",
+       "sp-contributions-newonly": "pinakita’ nanaw ka paskayzaeh ray yemien ka pinpienji.",
+       "sp-contributions-submit": "komi:im",
+       "whatlinkshere": " lotor ray hini ye:myen",
+       "whatlinkshere-title": " lomotor ray \"$1\" ka ye:myen",
+       "whatlinkshere-page": "ye:myen:",
+       "linkshere": "’anoka hini wahoer lomotor ray <strong>[[:$2]]</strong>:",
+       "isredirect": " papanra:an nahan ka ye:myen",
+       "istemplate": " Somibae:aeh ka pinayaka:i’  Somibae:aeh ka pinayaka:i’",
+       "isimage": " tang’an kalotoran",
+       "whatlinkshere-prev": "ray kati’aela’an $1",
+       "whatlinkshere-next": "{{PLURAL:$1|| ’aehae’ naehan ray hikor $1 }}",
+       "whatlinkshere-links": "← kalotoran",
+       "whatlinkshere-hideredirs": "$1 papanra:an nahan",
+       "whatlinkshere-hidetrans": "$1  Somibae:aeh ka pinayaka:i’",
+       "whatlinkshere-hidelinks": "$1 kalotoran",
+       "whatlinkshere-hideimages": "$1 tang’an lomotor",
+       "whatlinkshere-filters": " komi:im",
+       "whatlinkshere-submit": " patawaw",
+       "ipaddressorusername": "noka IP Sina:engan o noka kamamatawaw raro:o’:",
+       "ipboptions": "hinroSa’, ’aehae’ hahila:, to:o’ hahila:,’aehae’ Sinangayan, roSa’ Sinangayan, ’aehae’ ’ilaS, to:o’ ’ilsaS, SayboSi: ’ilaS, ‘aehae’ tinal’oemaeh, tabin’inowan",
+       "ipb-pages-label": "ye:myen",
+       "ipb-namespaces-label": " karo:o’an",
+       "autoblocklist-submit": "komi:im",
+       "ipblocklist-submit": "komi:im",
+       "createaccountblock": "paskayzaeh ka ’inlet zhanghaw",
+       "blocklist-editing-page": "ye:myen",
+       "blocklist-editing-ns": " karo:o’an",
+       "blocklink": "soksok",
+       "blocklogpage": " soksok ka pinatawaw",
+       "blocklogentry": " sinoksok ila ka pinahrahrangan hahila: tabin $2 $3",
+       "reblock-logentry": "somapih [[$1]] ka sinoksok pinahrahrangan hahila: tabin $2 $3",
+       "block-log-flags-nocreate": "paskayzaeh ka ’inlet zhanghaw",
+       "proxyblocker": " somapih ka’oSa’an Sefuchi’ kasoksokan",
+       "move-page": " tilkoraeh $1",
+       "movelogpage": " tilkoraeh ka pinatawaw",
+       "export": " pa’al’oehaez ray ye:myen",
+       "allmessages-filter-all": "saeboeh",
+       "thumbnail-more": "paksopaloy",
+       "import-comment": "kina:at ka kakSekla’an",
+       "tooltip-pt-userpage": "{{GENDER:| niSo’ nom matawaw }}ye:myen",
+       "tooltip-pt-mytalk": "{{GENDER:| niSo’}} kapaehrahrangan ye:myen",
+       "tooltip-pt-preferences": "{{GENDER:| niSo’}}kin hinowa’an",
+       "tooltip-pt-watchlist": "So’o mam komitkita’ sinapih ka ye:myen kina:at kapakSekla’",
+       "tooltip-pt-mycontris": "{{GENDER:| niSo’}} bino:ay ka pinatawaw kina:at kapakSekla’",
+       "tooltip-pt-login": "So’o ’inSa’la’ kaS’abo’ ,o So: kayni’ kaS’abo’ ma’ kayzaeh.",
+       "tooltip-pt-logout": "kas’oehaez",
+       "tooltip-pt-createaccount": "yami ’am romokol ’iSo’on pakayzaeh ’aehae’ ka zhanghaw o kaS’aboe’, ’ana komSa’ kayni’ kaS’aboe’ ma’ kayzaeh.",
+       "tooltip-ca-talk": "inakhini’an ye:myen ’izo’ kapaehraehrang",
+       "tooltip-ca-edit": " bienji ka hini ye:myen",
+       "tooltip-ca-addsection": "ka’on’alayan ’ima SaSo’ zhang jie",
+       "tooltip-ca-viewsource": "hini ye:myen kinalahaeng ila. So’o kayzaeh komita’ ka hini yuensema:",
+       "tooltip-ca-history": "hini ye:myen Sa’la’ pinonrowa’an",
+       "tooltip-ca-move": " tilkoraeh ka hini kina:at",
+       "tooltip-ca-watch": "hini ka ye:myen rompa: kanSo’ ray jyenSe’ qintan",
+       "tooltip-ca-unwatch": "hini ray yemien ’in’alay kakita’an qintan ’izo’ tilkoraeh.",
+       "tooltip-search": " komi:im {{SITENAME}}",
+       "tooltip-search-go": "So: ki hini raro:o’ ’ima hingha’ ka yemyen haysaza, ’oSa’ ziza ray yemyen",
+       "tooltip-search-fulltext": "komi:im ’ima matawaw ka hini kina:at ka yemyen",
+       "tooltip-p-logo": " rima’ ray So:ye:",
+       "tooltip-n-mainpage": " rima’ ray So:ye:",
+       "tooltip-n-mainpage-description": " rima’ ray So:ye:",
+       "tooltip-n-portal": "’inkhini’an ka zhwan’an, So’o kayzaeh powa’ ka kano’, hayno’ kayzaeh tomihoero: niSo’ ka kinSarara’ howaw",
+       "tooltip-n-currentevents": "ray Sinbon ’izo’ tomihoero: ’ima hingha’an ka kina:at",
+       "tooltip-n-recentchanges": "lyecu ray Wiki ’izo’ haysani’ sinapih kina:at kapakSekla’",
+       "tooltip-n-randompage": "tanikikay kaS’aboe’ ray ’aehae’ ye:myen",
+       "tooltip-n-help": "komi:im katilhaehaelan",
+       "tooltip-t-whatlinkshere": "lye’in saeboeh ka linotor rayhiniye:myen ka ye:myen",
+       "tooltip-t-recentchangeslinked": "hini ye:myen lotoren ray ’aroma’ ye:myen haysani sinapih",
+       "tooltip-feed-atom": "hini ye:myen ray Atom kawa:i’an",
+       "tooltip-t-contributions": "{{GENDER:$1|hini kamamatawaw }} mobay ka pinatawaw kapakSekla’ kina:at",
+       "tooltip-t-emailuser": "maraytyennaw Somater ka kina:at kaklienlo:an {{GENDER:$1|hini ’aehae’ kamamatawaw }}",
+       "tooltip-t-upload": " maray tiyanaw mobay ka kina:at tang’an",
+       "tooltip-t-specialpages": "saeboeh ’ima nonak yemyen ka kina:at kapakSekla’",
+       "tooltip-t-print": "hini ye:myen hayza’ kaklye’in ka kina:at banben",
+       "tooltip-t-permalink": "hini ye:myen pinonrowa’ ka pinakrengreng kalotoran",
+       "tooltip-ca-nstab-main": " komita ray ye:myen ka kina:at",
+       "tooltip-ca-nstab-user": " komita nom matawaw ka ye:myen",
+       "tooltip-ca-nstab-special": "hini ye:myen ka ’ima nonak yemyen , ’oka’ nanaw bienji",
+       "tooltip-ca-nstab-project": " komita ray zhwan’an ka ye:myen",
+       "tooltip-ca-nstab-image": "komita ray tang’an ka ye:myen",
+       "tooltip-ca-nstab-mediawiki": "komita ray Sitong  pinakSekla’ ka:i’",
+       "tooltip-ca-nstab-template": " komita kakSaro:olan",
+       "tooltip-ca-nstab-category": " komita ’a’apol ka ye:myen",
+       "tooltip-minoredit": "paSkira: ka hini komSa’ pinapaybi:il ka pinpienji:",
+       "tooltip-save": " Somili’ ka ’inSo’a sinapih",
+       "tooltip-preview": "pakray ’i’ini’ Somili’ SawaSak ka ’inSo’a sinapih !",
+       "tooltip-diff": " pinakita’ niSo’ ka kapapnabih sinapih ka pinatawaw",
+       "tooltip-compareselectedversions": "kita’ ka hini yemien roSa’ pinawhi:il ila pinonrowa’ ’izo’ ka kin nonakan.",
+       "tooltip-watch": "hini ka ye:myen rompa: kanSo’ ray jyenSe’ qintan",
+       "tooltip-rollback": "konhoe:oet \" paklobih \" lotor ’isa: kayzaeh paklobih ray kaysa’an ’aehae’ ’ima mobay ray hini ye:myen pinbienji",
+       "tooltip-undo": "\" paklobih \" kayzaeh paklobih ka hini bienji o ’anoka pinaSawaSak mo:Se’ haewaeh bienji pyawtan,So’o kayzaeh ray zhayaw ’izo’ rompa: ka tinak’ino’an.",
+       "tooltip-summary": "ka:at ka ’ima ’itaSan zhayaw",
+       "simpleantispam-label": "nom ’emlet ka saepae’. pak <strong>’izi’</strong> ka:at ka hini lanwey!",
+       "pageinfo-title": "noka \"$1\" ka kakra:aman",
+       "pageinfo-default-sort": "pinyunbi’ ka pinpaySi’ nom.... :",
+       "pageinfo-length": "noka yemien kin’inaro’( weiyenzu)",
+       "pageinfo-robot-policy": "’ anoka kikay ma’iyaeh paskayzaeh kaSa’amoehan kina:at",
+       "pageinfo-few-watchers": "wawalae’ ’aehae’ ka kamamiyalawa’",
+       "pageinfo-redirects-name": "tinoroe’ka hini yemien nom papanra:an ka yemien Sinepe:",
+       "pageinfo-subpages-name": "hini ka yemien ray wahoer yemien Sinepe:",
+       "pageinfo-subpages-value": "$1 ($2 個{{PLURAL:$2| papanra:an nahan }}; $3 個{{PLURAL:$3| ’okik ka papanra:anen nahan }})",
+       "pageinfo-recent-edits": " haysani’ monpilaz pienji: (Saehpi:ih $1 ’izo’)",
+       "pageinfo-magic-words": "pa:se: {{PLURAL:$1|  kina:at }} ($1)",
+       "pageinfo-hidden-categories": "Sa:il  ’a’apolen Sinraehoe’ ($1)",
+       "pageinfo-templates": "Somibae:aeh ka pinayaka:i’ kakSaro:olan ($1)",
+       "pageinfo-toolboxlink": "ray ye:myen kakra:aman",
+       "pageinfo-contentpage": "nom Somepe: ka pinanabih ray yemien",
+       "previousdiff": "’ima tatini’ sowiti’ pinpienji",
+       "nextdiff": "’ima SaSo’ bienji →",
+       "widthheightpage": "$1 × $2,$3 biyae’",
+       "file-info-size": "$1 × $2 kakita’an ka hinoba:ang , tang’an kinsopaloy:$3,MIME Sinrahoe’:$4",
+       "file-info-size-pages": "$1 × $2 kakita’an ka hinoba:ang ,noka tang’an kin sopaloy :$3,MIME Sinraehoe’ :$4,$5 {{PLURAL:$5| biyae’ }}",
+       "file-nohires": " ’ oka’ ila ka ’ima ’ibabaw kin tilka:an ka baboway .",
+       "svg-long-desc": "SVG tang’an, ray ’oehaez kinsopaloy:$1 × $2 kakita’an ka hinoba:ang, tang’an kin sopaloy:$3",
+       "show-big-image": "’a’aringan tang’an",
+       "show-big-image-preview": " pinaSawaSak kinSopaloy:$1.",
+       "show-big-image-other": " ’aroma’ {{PLURAL:$2||}} kin tilka:an :$1.$1",
+       "show-big-image-size": "$1 × $2 kakita’an ka hinoba:ang",
+       "newimages-newbies": "pinakita’ nanaw ka ’ima SaSo’ zhanghaw ka pinatawaw",
+       "ilsubmit": " komi:im",
+       "metadata": " pinqyuanSe’ ka kina:at",
+       "metadata-help": "hini tang’an ’izo’ hani saeboeh ka ’aroma’ kakra:aman, hini saeboeh kakra:aman ra:amen ’inaySu’wey kakSaSing a kikay nom Sawmya ray pinaskayzaeh a Su’weyhwa’ ’izo’ baba:aw rinpa:, So: tang’an ’inay’a’aringan pinonrowa’, pinakita’ kina:at ra:amen ’oka’ nanaw pakita’ ka pinonrowa’ tang’an",
+       "metadata-fields": "ray hini pinakSekla’ ka:i’ ’izo’ pinlye’in ka EXIF qyuanSe’ kina:at ’izo’ ’am hani saeboeh ray SaSing pinakita’ ye:myen,So: pinqyuanSe’ ka kina:at ’aewhay ila pinakita’ nanaw hani wahoer pinakSekla’ ka:i’ .\n’aroma’ pinqyuanSe’ ka kina:at ka ’iSe’ ’isa: Sina:il .\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",
+       "namespacesall": "saeboeh",
+       "monthsall": "saeboeh",
+       "confirm-watch-top": "hini ka ye:myen rompa: kanSo’ ray jyenSe’ qintan?",
+       "confirm-unwatch-top": "hini ray yemien ’in’alay kakita’an qintan ’izo’ tilkoraeh?",
+       "imgmultigo": " patawaw!",
+       "imgmultigoto": " rima’ ray minay $1 yemien",
+       "img-lang-go": " patawaw",
+       "table_pager_limit_submit": " patawaw",
+       "watchlistedit-raw-title": "pienji: ’inin’alayan kakita’an qintan",
+       "watchlisttools-view": " komita  ’ima hingha’an somapih",
+       "watchlisttools-edit": " komita o pienji: kakita’an qintan",
+       "watchlisttools-raw": "pienji: ’inin’alayan kakita’an qintan",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1| kapaehrahrangan ]])",
+       "version-specialpages": " ’ima nonak yemyen",
+       "version-ext-colheader-description": " papapnabih",
+       "version-ext-colheader-credits": "kamapaskayzaeh",
+       "version-libraries-description": " papapnabih",
+       "version-libraries-authors": "kamapaskayzaeh",
+       "redirect": "tani tang’an, kamamatawaw, yemin, pinonrowa’ o ka kina:at ID mowa:i’ papanra:an nahan",
+       "redirect-summary": "hini ’ima nonak yemien kayzaeh ’anoka pinapanra:an nahan painrowa’en ray tang’an ( tinoroe’ tang’an raro:o’)、 yemien ( tinoroe’ ka pinonrowa’ ID a ka yemien ID)、 kamamatawaw ka yemien ( tinoroe’ kamamatawaw ID)、a kina:at ka Sinrahoe’ ( tinoroe’ ka kina:at ID).’anoka-:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/page/64308]]、[[{{#Special:Redirect}}/revision/328429]]、[[{{#Special:Redirect}}/user/101]] a [[{{#Special:Redirect}}/logid/186]].",
+       "redirect-submit": " patawaw",
+       "redirect-revision": "pinonrpwa’ ka yemin ID",
+       "fileduplicatesearch-submit": " komi:im",
+       "specialpages": " ’ima nonak yemyen",
+       "tag-filter": "[[Special:Tags| kakSekla’an ]] komi:im :",
+       "tag-list-wrapper": "[[Special:Tags|$1 ka kaSakira’an ]]:$2",
+       "tag-mw-rollback": "paklobih",
+       "tag-mw-undo": " paklobih",
+       "tags-source-header": " kawa:i’an",
+       "tags-edit": " bienji",
+       "tags-create-submit": "paskayzaeh",
+       "permanentlink": "pinakrengreng kalotoran",
+       "htmlform-cloner-delete": "tilkoraeh",
+       "logentry-delete-delete": "$1 boloe’ ka ye:myen $3",
+       "logentry-delete-restore": "$1{{GENDER:$2| paklobih }} ray yemien $3($4)",
+       "logentry-delete-revision": "$1 {{GENDER:$2|sinapih ila}} ray yemien ’izo’ $3 中 {{PLURAL:$5|1 筆 pinonrowa’|$5 筆 pinonrowa’}}ka kakita’an :$4",
+       "logentry-move-move": "$1 {{GENDER:$2| tinilkoraeh }} ka ye:myen $3 ray $4",
+       "logentry-move-move-noredirect": "$1 {{GENDER:$2|tinilkoraeh ila}} yemien $3 o $4,’okay ’o:ol papanra:an nahan",
+       "logentry-move-move_redir": "$1 tinilkoraeh ka yemien $3 o $4 ma manehmek ka ’inkahayza’an papanra:an nahan",
+       "logentry-patrol-patrol-auto": "$1 pinkakoway nonak ila{{GENDER:$2| pinaSkira:a’ }}yemien $3 ka pinonrowa’ $4 ’isa: kini:im ila.",
+       "logentry-newusers-newusers": "ray{{GENDER:$2| paskayzaehen ila }} kamamatawaw zhanghaw $1",
+       "logentry-newusers-create": "ray{{GENDER:$2| paskayzaehen ila }} kamamatawaw zhanghaw $1",
+       "logentry-newusers-autocreate": "pinakkakoway ila {{GENDER:$2| paskayzaeh }} kamamatawaw zhanghaw $1",
+       "logentry-upload-upload": "$1 {{GENDER:$2| paraytiyanawen ila mobay ka kina:at }} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2| maray tiyanaw mobay ka kina:at ila}}’ima SaSo’ panpen ka $3",
+       "feedback-cancel": "kayni’",
+       "searchsuggest-search": " komi:im {{SITENAME}}",
+       "duration-days": "$1 hahila:",
+       "log-action-filter-all": "saeboeh",
+       "log-action-filter-block-block": "soksok",
+       "authmanager-userdoesnotexist": "kamamatawaw zhanghaw \"$1\" ’i’ini’ ka:at ka raro:o’"
+}
index 2e677db..f1ca0fa 100644 (file)
        "hr_tip": "橫線(請小心用)",
        "summary": "摘要:",
        "subject": "主題:",
-       "minoredit": "呢個係修改",
+       "minoredit": "呢個係修改",
        "watchthis": "睇實呢一頁",
        "savearticle": "儲存呢頁",
        "savechanges": "記好",
        "tooltip-ca-nstab-template": "睇吓個模",
        "tooltip-ca-nstab-help": "睇吓幫助頁",
        "tooltip-ca-nstab-category": "睇吓分類頁",
-       "tooltip-minoredit": "標做細嘅修訂",
+       "tooltip-minoredit": "標做細修改",
        "tooltip-save": "保存你嘅修改",
        "tooltip-publish": "發佈你嘅修改",
        "tooltip-preview": "預覽你嘅修改,保存之前請檢查一次先",
index c51f2b0..a7b6cdf 100644 (file)
                        "Hello903hello",
                        "A Chinese Wikipedian",
                        "Angrydog001",
-                       "GoForceX"
+                       "GoForceX",
+                       "Ff98sha",
+                       "VulpesVulpes825"
                ]
        },
        "tog-underline": "链接下划线:",
        "resetpass-abort-generic": "密码更改已经被扩展程序中止。",
        "resetpass-expired": "您的密码已经到期。请设置新登录密码。",
        "resetpass-expired-soft": "您的密码已经到期,需要更改。请现在更换新密码,或单击“{{int:authprovider-resetpass-skip-label}}”以稍后更改。",
+       "resetpass-validity": "您的密码无效:$1\n\n请设置新登录密码登录。",
        "resetpass-validity-soft": "您的密码无效:$1\n\n请选择一个新密码,或单击“{{int:authprovider-resetpass-skip-label}}”以稍后更改。",
        "passwordreset": "重置密码",
        "passwordreset-text-one": "请完成此表单来通过电子邮件接收临时密码。",
        "blockedtext": "<strong>您的用户名或IP地址已被封禁。</strong>\n\n执行封禁的管理员是$1。封禁原因是<em>$2</em>。\n\n* 开始时间:$8\n* 到期时间:$6\n* 目标用户:$7\n\n您可以联络$1或其他[[{{MediaWiki:Grouppage-sysop}}|管理员]]讨论该封禁。只有当您在[[Special:Preferences|系统设置]]确认了电子邮件地址且未被禁止使用“{{int:emailuser}}”功能时,才可以使用它。您当前的IP地址是$3,该封禁ID是#$5。请在您做出的任何查询中包含所有上述详情。",
        "autoblockedtext": "您的IP地址因曾被一位被$1封禁的用户使用而被自动封禁。封禁原因:\n\n:<em>$2</em>\n\n* 开始时间:$8\n* 到期时间:$6\n* 目标用户:$7\n\n您可以联系$1或其他[[{{MediaWiki:Grouppage-sysop}}|管理员]]申诉该封禁。\n\n请注意,只有当您已在[[Special:Preferences|系统设置]]确认了电子邮件地址且未被禁止使用“{{int:emailuser}}”功能时,才能发送电子邮件联系管理员。\n\n您当前的IP地址为$3,该封禁ID为#$5。请在您做出的任何查询中包含所有上述详情。",
        "systemblockedtext": "您的用户名或IP地址已被MediaWiki自动封禁。封禁原因:\n\n:<em>$2</em>\n\n* 开始时间:$8\n* 到期时间:$6\n* 目标用户:$7\n\n您当前的IP地址是$3。请在您做出的任何查询中包含所有上述详情。",
+       "actionblockedtext": "您已被禁止执行此操作",
        "blockednoreason": "未给出原因",
        "whitelistedittext": "请$1以编辑页面。",
        "confirmedittext": "您必须确认您的电子邮件地址才能编辑页面。请通过[[Special:Preferences|系统设置]]设置并确认您的电子邮件地址。",
        "edit-no-change": "因为没有文字更改,您的编辑已被忽略。",
        "edit-slots-cannot-add": "下列{{PLURAL:$1|栏位|栏位}}在此不受支持:$2。",
        "edit-slots-cannot-remove": "下列{{PLURAL:$1|栏位|栏位}}是必需的且无法被移除:$2。",
+       "edit-slots-missing": "缺少以下{{PLURAL:$1|栏位|栏位}}:$2。",
        "postedit-confirmation-created": "页面已创建。",
        "postedit-confirmation-restored": "页面已恢复。",
        "postedit-confirmation-saved": "您的编辑已保存。",
        "rcfilters-watchlist-edit-watchlist-button": "编辑您的监视页面列表",
        "rcfilters-watchlist-showupdated": "自更改发生以来,对您尚未访问的页面做出的更改以<strong>粗体</strong>显示,并带有实心圆形标记。",
        "rcfilters-preference-label": "使用非JavaScript接口",
-       "rcfilters-preference-help": "返回到2017年界面重新设计版,并重新添加这以后新增的工具。",
+       "rcfilters-preference-help": "加载不带过滤搜索或者高亮功能的近期更改",
        "rcfilters-watchlist-preference-label": "使用非JavaScript接口",
-       "rcfilters-watchlist-preference-help": "å\9b\9eé\80\802017å¹´ç\95\8cé\9d¢å\86\8d设计ï¼\8c以å\8f\8aæ\89\80æ\9c\89è\87ªæ­¤å¼\80å§\8bæ·»å\8a ç\9a\84å·¥å\85·ã\80\82",
+       "rcfilters-watchlist-preference-help": "å\8a è½½ä¸\8d带è¿\87滤æ\90\9cç´¢æ\88\96è\80\85é«\98亮å\8a\9fè\83½ç\9a\84ç\9b\91è§\86æ¸\85å\8d\95",
        "rcfilters-filter-showlinkedfrom-label": "显示链接自该页面的页面上的更改",
        "rcfilters-filter-showlinkedfrom-option-label": "<strong>链接自</strong>选定页面的页面",
        "rcfilters-filter-showlinkedto-label": "显示链接到该页面的页面上的更改",
        "move": "移动",
        "movethispage": "移动本页",
        "unusedimagestext": "下面为未被任何页面使用的文件。请注意,其他网站可能会通过URL直接链接某个文件,因此列表中的文件有可能仍在使用。",
+       "unusedimagestext-categorizedimgisused": "以下文件存在但尚未内嵌在任何页面。已分类的图片就算未内嵌在任何页面也视为已使用。\n请注意其他网站可能会直接用URL链接文件,这使得文件尽管被使用的情况下仍被列出。",
        "unusedcategoriestext": "以下分类页面实际存在,即使没有其它页面或分类利用它们。",
        "notargettitle": "无目标",
        "notargettext": "您还没有指定一个目标页面或用户以进行此项操作。",
        "ipb-disableusertalk": "编辑自己的讨论页",
        "ipb-change-block": "使用这些设置重新封禁用户",
        "ipb-confirm": "确认封禁",
+       "ipb-sitewide": "全站范围",
        "ipb-partial": "部分的",
        "ipb-pages-label": "页面",
        "ipb-namespaces-label": "名字空间",
        "ipb-blocklist": "查看现有封禁",
        "ipb-blocklist-contribs": "{{GENDER:$1|$1}}的贡献",
        "ipb-blocklist-duration-left": "剩余$1",
+       "block-actions": "封锁的操作",
        "block-expiry": "终止时间:",
        "block-options": "添加的选项:",
        "block-prevent-edit": "编辑",
        "emailblock": "电子邮件停用",
        "blocklist-nousertalk": "不能编辑自己的讨论页",
        "blocklist-editing": "编辑中",
+       "blocklist-editing-sitewide": "编辑 (全站)",
+       "blocklist-editing-page": "页面",
+       "blocklist-editing-ns": "名字空间",
        "ipblocklist-empty": "封禁列表为空。",
        "ipblocklist-no-results": "请求的IP地址或用户名没有被封禁。",
        "blocklink": "封禁",
        "ipb_expiry_old": "终止时间已过去。",
        "ipb_expiry_temp": "隐藏用户名的封禁必须是永久性的。",
        "ipb_hide_invalid": "无法隐藏此用户名;它拥有多于$1次编辑。",
+       "ipb_hide_partial": "隐藏用户名封禁必须为站内封禁",
        "ipb_already_blocked": "“$1”已被封禁。",
        "ipb-needreblock": "$1已被封禁。您是否想更改封禁设置?",
        "ipb-otherblocks-header": "其他{{PLURAL:$1|封禁}}",
        "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:$4|$3}}的封禁设置{{GENDER:$2|更改为}}持续时间$5 $6",
-       "logentry-partialblock-block": "$1{{GENDER:$2|封禁了}}{{GENDER:$4|$3}},持续时间$5 $6",
+       "logentry-partialblock-block-page": "{{PLURAL:$1|页面|页面}}$2",
+       "logentry-partialblock-block-ns": "{{PLURAL:$1|命名空间|命名空间}}$2",
+       "logentry-partialblock-block": "$1{{GENDER:$2|封禁了}}{{GENDER:$4|$3}}对$7的编辑,持续时间至$5 $6",
        "logentry-suppress-block": "$1{{GENDER:$2|封禁了}}{{GENDER:$4|$3}},持续时间$5 $6",
        "logentry-suppress-reblock": "$1将{{GENDER:$4|$3}}的封禁设置{{GENDER:$2|更改为}}持续时间$5 $6",
        "logentry-import-upload": "$1通过上传{{GENDER:$2|导入}}了$3",
index b2611c1..841019f 100644 (file)
        "nospecialpagetext": "<strong>您請求的特定頁面無效。</strong>\n\n欲取得有效的特定頁面清單可至 [[Special:SpecialPages|{{int:specialpages}}]]。",
        "error": "錯誤",
        "databaseerror": "資料庫錯誤",
-       "databaseerror-text": "出現資料庫查詢錯誤。\n這可能表示系統有問題存在。",
+       "databaseerror-text": "出現資料庫查詢錯誤。\n這表示系統可能有問題存在。",
        "databaseerror-textcl": "資料庫查詢錯誤。",
        "databaseerror-query": "查詢:$1",
        "databaseerror-function": "功能:$1",
        "title-invalid-too-long": "請求的頁面標題過長,標題使用 UTF-8 編碼不可超過 $1 {{PLURAL:$1|位元組|位元組}}。",
        "title-invalid-leading-colon": "請求的頁面標題包含無效的冒號於開始。",
        "perfcached": "以下為快取資料,可能不是最新的。 快取資料最多可儲存 {{PLURAL:$1|1 筆結果|$1 筆結果}}。",
-       "perfcachedts": "以下為快取資料,最後更新時間為 $1。 快取資料最多可儲存 {{PLURAL:$4|1 筆結果|$4 筆結果}}。",
+       "perfcachedts": "以下為快取資料,最後更新時間為 $1。快取資料最多可儲存 {{PLURAL:$4|1 筆結果|$4 筆結果}}。",
        "querypage-no-updates": "目前已停用此頁面的更新功能。\n在此頁面的資料不會被立即更新。",
        "viewsource": "檢視原始碼",
        "viewsource-title": "檢視 $1 的原始碼",
        "logeventslist-patrol-log": "巡查日誌",
        "logeventslist-tag-log": "標籤日誌",
        "all-logs-page": "所有公開日誌",
-       "alllogstext": "合併顯示所有 {{SITENAME}} 中所有類型的日誌。您可以點選下拉式選單選擇日誌的類型,指定使用者名稱(區分大小寫)或影響的頁面(區分大小寫)。",
+       "alllogstext": "合併顯示所有{{SITENAME}}中所有類型的日誌。您可以點選下拉式選單選擇日誌的類型,指定使用者名稱(區分大小寫)或影響的頁面(區分大小寫)。",
        "logempty": "無符合條件的日誌。",
        "log-title-wildcard": "搜尋以此欄位文字為字首的標題",
        "showhideselectedlogentries": "顯示/隱藏已選擇的日誌項目",
        "protectedarticle-comment": "{{GENDER:$2|受保護}} \"[[$1]]\"",
        "modifiedarticleprotection-comment": "{{GENDER:$2|已變更}} \"[[$1]]\" 的保護層級",
        "unprotectedarticle-comment": "{{GENDER:$2|已移除}} \"[[$1]]\" 的保護",
-       "protect-title": "變更 \"$1\" 的保護層級",
+       "protect-title": "變更「$1」的保護層級",
        "protect-title-notallowed": "檢視 \"$1\" 的保護層級",
        "prot_1movedto2": "已移動 [[$1]] 至 [[$2]]",
        "protect-badnamespace-title": "不可保護的命名空間",
        "days": "$1 天",
        "weeks": "{{PLURAL:$1|$1 週}}",
        "months": "{{PLURAL:$1|$1 個月}}",
-       "years": "{{PLURAL:$1|$1 年}}",
+       "years": "$1年",
        "ago": "$1 前",
        "just-now": "剛才",
        "hours-ago": "$1 小時前",
index 6e460fa..a880114 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Guianan Creole (kréyòl gwiyanè)
+/** Guianan Creole (Kriyòl Gwiyannen)
  *
  * To improve a translation please visit https://translatewiki.net
  *
index 1997fe7..4d34e5d 100644 (file)
--- a/load.php
+++ b/load.php
@@ -22,7 +22,6 @@
  * @author Trevor Parscal
  */
 
-use MediaWiki\Logger\LoggerFactory;
 use MediaWiki\MediaWikiServices;
 
 // This endpoint is supposed to be independent of request cookies and other
@@ -40,11 +39,7 @@ if ( !$wgRequest->checkUrlExtension() ) {
 // writes when getting database connections for ResourceLoader. (T192611)
 MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->disableChronologyProtection();
 
-// Set up ResourceLoader
-$resourceLoader = new ResourceLoader(
-       ConfigFactory::getDefaultInstance()->makeConfig( 'main' ),
-       LoggerFactory::getInstance( 'resourceloader' )
-);
+$resourceLoader = MediaWikiServices::getInstance()->getResourceLoader();
 $context = new ResourceLoaderContext( $resourceLoader, $wgRequest );
 
 // Respond to ResourceLoader request
index 897972c..4da0901 100644 (file)
@@ -24,6 +24,8 @@
  * @ingroup Maintenance
  */
 
+use MediaWiki\MediaWikiServices;
+
 require_once __DIR__ . '/Maintenance.php';
 
 /**
@@ -53,6 +55,7 @@ class AttachLatest extends Maintenance {
                        $conds,
                        __METHOD__ );
 
+               $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
                $n = 0;
                foreach ( $result as $row ) {
                        $pageId = intval( $row->page_id );
@@ -78,6 +81,7 @@ class AttachLatest extends Maintenance {
                        if ( $this->hasOption( 'fix' ) ) {
                                $page = WikiPage::factory( $title );
                                $page->updateRevisionOn( $dbw, $revision );
+                               $lbFactory->waitForReplication();
                        }
                        $n++;
                }
index 63838d2..cec640b 100644 (file)
@@ -46,7 +46,7 @@ class CleanupRemovedModules extends Maintenance {
                $this->output( "Cleaning up module_deps table...\n" );
 
                $dbw = $this->getDB( DB_MASTER );
-               $rl = new ResourceLoader( MediaWikiServices::getInstance()->getMainConfig() );
+               $rl = MediaWikiServices::getInstance()->getResourceLoader();
                $moduleNames = $rl->getModuleNames();
                $res = $dbw->select( 'module_deps',
                        [ 'md_module', 'md_skin' ],
index b01dde6..2f0bcdf 100644 (file)
@@ -144,7 +144,7 @@ class CompareParsers extends DumpIterator {
                        return;
                }
 
-               $text = strval( $content->getNativeData() );
+               $text = strval( $content->getText() );
 
                $output1 = $parser1->parse( $text, $title, $this->options );
                $output2 = $parser2->parse( $text, $title, $this->options );
index b964417..a79d9f3 100644 (file)
@@ -23,6 +23,7 @@
 
 use MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\IMaintainableDatabase;
 
 require_once __DIR__ . '/../Maintenance.php';
 
index ceba9b5..813f88e 100644 (file)
@@ -413,13 +413,13 @@ class MigrateActors extends LoggedUpdateMaintenance {
        protected function migrateLogSearch() {
                $complainedAboutUsers = [];
 
-               $primaryKey = [ 'ls_field', 'ls_value' ];
+               $primaryKey = [ 'ls_value', 'ls_log_id' ];
                $pkFilter = array_flip( $primaryKey );
                $this->output( "Beginning migration of log_search\n" );
                wfWaitForSlaves();
 
                $dbw = $this->getDB( DB_MASTER );
-               $countUpdated = 0;
+               $countInserted = 0;
                $countActors = 0;
                $countErrors = 0;
 
@@ -427,72 +427,44 @@ class MigrateActors extends LoggedUpdateMaintenance {
                while ( true ) {
                        // Fetch the rows needing update
                        $res = $dbw->select(
+                               [ 'log_search', 'actor' ],
+                               [ 'ls_value', 'ls_log_id', 'actor_id' ],
                                [
-                                       'ls' => $dbw->buildSelectSubquery(
-                                               'log_search',
-                                               'ls_value',
-                                               [
-                                                       'ls_field' => 'target_author_id',
-                                                       $next
-                                               ],
-                                               __METHOD__,
-                                               [
-                                                       'DISTINCT',
-                                                       'ORDER BY' => [ 'ls_value' ],
-                                                       'LIMIT' => $this->mBatchSize,
-                                               ]
-                                       ),
-                                       'actor'
+                                       'ls_field' => 'target_author_id',
+                                       $next
                                ],
+                               __METHOD__,
                                [
-                                       'ls_field' => $dbw->addQuotes( 'target_author_id' ),
-                                       'ls_value',
-                                       'actor_id'
+                                       'ORDER BY' => $primaryKey,
+                                       'LIMIT' => $this->mBatchSize,
                                ],
-                               [],
-                               __METHOD__,
-                               [],
                                [ 'actor' => [ 'LEFT JOIN', 'ls_value = ' . $dbw->buildStringCast( 'actor_user' ) ] ]
                        );
                        if ( !$res->numRows() ) {
                                break;
                        }
 
-                       // Update the rows
-                       $del = [];
+                       // Insert a 'target_author_actor' for each 'target_author_id'
+                       $ins = [];
                        foreach ( $res as $row ) {
                                $lastRow = $row;
                                if ( !$row->actor_id ) {
                                        list( , $display ) = $this->makeNextCond( $dbw, $primaryKey, $row );
-                                       $this->error( "No actor for row with $display\n" );
+                                       $this->error( "No actor for target_author_id row with $display\n" );
                                        $countErrors++;
                                        continue;
                                }
-                               $dbw->update(
-                                       'log_search',
-                                       [
-                                               'ls_field' => 'target_author_actor',
-                                               'ls_value' => $row->actor_id,
-                                       ],
-                                       [
-                                               'ls_field' => $row->ls_field,
-                                               'ls_value' => $row->ls_value,
-                                       ],
-                                       __METHOD__,
-                                       [ 'IGNORE' ]
-                               );
-                               $countUpdated += $dbw->affectedRows();
-                               $del[] = $row->ls_value;
-                       }
-                       if ( $del ) {
-                               $dbw->delete(
-                                       'log_search', [ 'ls_field' => 'target_author_id', 'ls_value' => $del ], __METHOD__
-                               );
-                               $countUpdated += $dbw->affectedRows();
+                               $ins[] = [
+                                       'ls_field' => 'target_author_actor',
+                                       'ls_value' => $row->actor_id,
+                                       'ls_log_id' => $row->ls_log_id,
+                               ];
                        }
+                       $dbw->insert( 'log_search', $ins, __METHOD__, [ 'IGNORE' ] );
+                       $countInserted += $dbw->affectedRows();
 
                        list( $next, $display ) = $this->makeNextCond( $dbw, $primaryKey, $lastRow );
-                       $this->output( "... $display\n" );
+                       $this->output( "... target_author_id, $display\n" );
                        wfWaitForSlaves();
                }
 
@@ -500,31 +472,17 @@ class MigrateActors extends LoggedUpdateMaintenance {
                while ( true ) {
                        // Fetch the rows needing update
                        $res = $dbw->select(
+                               [ 'log_search', 'actor' ],
+                               [ 'ls_value', 'ls_log_id', 'actor_id' ],
                                [
-                                       'ls' => $dbw->buildSelectSubquery(
-                                               'log_search',
-                                               'ls_value',
-                                               [
-                                                       'ls_field' => 'target_author_ip',
-                                                       $next
-                                               ],
-                                               __METHOD__,
-                                               [
-                                                       'DISTINCT',
-                                                       'ORDER BY' => [ 'ls_value' ],
-                                                       'LIMIT' => $this->mBatchSize,
-                                               ]
-                                       ),
-                                       'actor'
+                                       'ls_field' => 'target_author_ip',
+                                       $next
                                ],
+                               __METHOD__,
                                [
-                                       'ls_field' => $dbw->addQuotes( 'target_author_ip' ),
-                                       'ls_value',
-                                       'actor_id'
+                                       'ORDER BY' => $primaryKey,
+                                       'LIMIT' => $this->mBatchSize,
                                ],
-                               [],
-                               __METHOD__,
-                               [],
                                [ 'actor' => [ 'LEFT JOIN', 'ls_value = actor_name' ] ]
                        );
                        if ( !$res->numRows() ) {
@@ -538,45 +496,31 @@ class MigrateActors extends LoggedUpdateMaintenance {
                                $dbw, 'ls_value', $rows, $complainedAboutUsers, $countErrors
                        );
 
-                       // Update the rows
-                       $del = [];
+                       // Insert a 'target_author_actor' for each 'target_author_ip'
+                       $ins = [];
                        foreach ( $rows as $row ) {
                                if ( !$row->actor_id ) {
                                        list( , $display ) = $this->makeNextCond( $dbw, $primaryKey, $row );
-                                       $this->error( "Could not make actor for row with $display\n" );
+                                       $this->error( "Could not make actor for target_author_ip row with $display\n" );
                                        $countErrors++;
                                        continue;
                                }
-                               $dbw->update(
-                                       'log_search',
-                                       [
-                                               'ls_field' => 'target_author_actor',
-                                               'ls_value' => $row->actor_id,
-                                       ],
-                                       [
-                                               'ls_field' => $row->ls_field,
-                                               'ls_value' => $row->ls_value,
-                                       ],
-                                       __METHOD__,
-                                       [ 'IGNORE' ]
-                               );
-                               $countUpdated += $dbw->affectedRows();
-                               $del[] = $row->ls_value;
-                       }
-                       if ( $del ) {
-                               $dbw->delete(
-                                       'log_search', [ 'ls_field' => 'target_author_ip', 'ls_value' => $del ], __METHOD__
-                               );
-                               $countUpdated += $dbw->affectedRows();
+                               $ins[] = [
+                                       'ls_field' => 'target_author_actor',
+                                       'ls_value' => $row->actor_id,
+                                       'ls_log_id' => $row->ls_log_id,
+                               ];
                        }
+                       $dbw->insert( 'log_search', $ins, __METHOD__, [ 'IGNORE' ] );
+                       $countInserted += $dbw->affectedRows();
 
                        list( $next, $display ) = $this->makeNextCond( $dbw, $primaryKey, $lastRow );
-                       $this->output( "... $display\n" );
+                       $this->output( "... target_author_ip, $display\n" );
                        wfWaitForSlaves();
                }
 
                $this->output(
-                       "Completed migration, updated $countUpdated row(s) with $countActors new actor(s), "
+                       "Completed migration, inserted $countInserted row(s) with $countActors new actor(s), "
                        . "$countErrors error(s)\n"
                );
                return $countErrors;
index d540e8f..f8526d0 100644 (file)
@@ -86,7 +86,7 @@ class PreprocessDump extends DumpIterator {
                }
 
                try {
-                       $this->mPreprocessor->preprocessToObj( strval( $content->getNativeData() ), 0 );
+                       $this->mPreprocessor->preprocessToObj( strval( $content->getText() ), 0 );
                } catch ( Exception $e ) {
                        $this->error( "Caught exception " . $e->getMessage() . " in "
                                . $rev->getTitle()->getPrefixedText() );
index 952b825..24b5007 100644 (file)
@@ -51,7 +51,7 @@ class ViewCLI extends Maintenance {
                        $this->fatalError( "Non-text content models not supported" );
                }
 
-               $this->output( $content->getNativeData() );
+               $this->output( $content->getText() );
        }
 }
 
index d62f3e3..9293063 100644 (file)
@@ -1317,6 +1317,9 @@ return [
                'dependencies' => [
                        'mediawiki.api',
                        'mediawiki.storage',
+                       // The two user.* modules are not used by mediawiki.user itself,
+                       // but kept as explicit dependencies because they provide part
+                       // of the mw.user API that consumers of this module expect.
                        'user.options',
                        'user.tokens',
                ],
@@ -1813,7 +1816,6 @@ return [
                        'dm/ItemModel.js',
                        'dm/SavedQueriesModel.js',
                        'dm/SavedQueryItemModel.js',
-                       'config.json' => [ 'config' => [ 'StructuredChangeFiltersLiveUpdatePollingRate' ] ],
                ],
                'dependencies' => [
                        'mediawiki.String',
@@ -1867,7 +1869,6 @@ return [
                        'ui/RclTargetPageWidget.js',
                        'ui/RclToOrFromWidget.js',
                        'ui/WatchlistTopSectionWidget.js',
-                       'config.json' => [ 'callback' => 'ChangesListSpecialPage::getRcFiltersConfigVars' ],
                ],
                'styles' => [
                        'styles/mw.rcfilters.mixins.less',
@@ -2132,10 +2133,10 @@ return [
                'targets' => [ 'desktop', 'mobile' ],
        ],
        'mediawiki.special.changeslist.enhanced' => [
-               'styles' => 'resources/src/mediawiki.special.changeslist.enhanced.css',
+               'styles' => 'resources/src/mediawiki.special.changeslist.enhanced.less',
        ],
        'mediawiki.special.changeslist.legend' => [
-               'styles' => 'resources/src/mediawiki.special.changeslist.legend.css',
+               'styles' => 'resources/src/mediawiki.special.changeslist.legend.less',
                'targets' => [ 'desktop', 'mobile' ],
        ],
        'mediawiki.special.changeslist.legend.js' => [
@@ -2359,6 +2360,7 @@ return [
                'dependencies' => [
                        'mediawiki.api',
                        'mediawiki.jqueryMsg',
+                       'mediawiki.notify',
                        'mediawiki.Title',
                        'mediawiki.util',
                        'oojs-ui-core',
@@ -2386,7 +2388,12 @@ return [
                ],
        ],
        'mediawiki.legacy.protect' => [
-               'scripts' => 'resources/src/mediawiki.legacy/protect.js',
+               'localBasePath' => "$IP/resources/src/mediawiki.legacy",
+               'remoteBasePath' => "$wgResourceBasePath/resources/src/mediawiki.legacy",
+               'packageFiles' => [
+                       'protect.js',
+                       'config.json' => [ 'config' => [ 'CascadingRestrictionLevels' ] ],
+               ],
                'dependencies' => 'jquery.lengthLimit',
                'messages' => [ 'protect-unchain-permissions' ]
        ],
index 4882e9e..57fd3ab 100644 (file)
                headerToColumns.forEach( function ( columns, headerIndex ) {
 
                        columns.forEach( function ( columnIndex, i ) {
-                               var header = $headers[ headerIndex ],
+                               var j, sortColumn,
+                                       header = $headers[ headerIndex ],
                                        $header = $( header );
 
                                if ( !isValueInArray( columnIndex, sortList ) ) {
                                        } );
                                } else {
                                        // Column shall be sorted: Apply designated count and order.
-                                       sortList.forEach( function ( sortColumn ) {
+                                       for ( j = 0; j < sortList.length; j++ ) {
+                                               sortColumn = sortList[ j ];
                                                if ( sortColumn[ 0 ] === i ) {
                                                        $header.data( {
                                                                order: sortColumn[ 1 ],
                                                                count: sortColumn[ 1 ] + 1
                                                        } );
-                                                       return false;
+                                                       break;
                                                }
-                                       } );
+                                       }
                                }
                        } );
 
index 1ab91a9..ec96cb6 100644 (file)
@@ -47,7 +47,8 @@
        ul.mw-collapsible:not( @{exclude} ):before,
        // Where the tbody or thead is the first child of the collapsible table
        table.mw-collapsible:not( @{exclude} ) :first-child tr:first-child th:last-child:before,
-       table.mw-collapsible:not( @{exclude} ) > caption:first-child:after {
+       table.mw-collapsible:not( @{exclude} ) > caption:first-child:after,
+       div.mw-collapsible:not( @{exclude} ):before {
                content: '[@{msg-collapsible-collapse}]';
        }
 
index ff7a40f..6bb3bce 100644 (file)
         * @return {boolean} Namespace is a signature namespace
         */
        Title.wantSignaturesNamespace = function ( namespaceId ) {
-               return this.isTalkNamespace( namespaceId ) ||
+               return Title.isTalkNamespace( namespaceId ) ||
                        mw.config.get( 'wgExtraSignatureNamespaces' ).indexOf( namespaceId ) !== -1;
        };
 
index f0ca272..2f69a7a 100644 (file)
@@ -3,6 +3,8 @@
  */
 ( function () {
 
+       var saveOptionsRequests = {};
+
        $.extend( mw.Api.prototype, {
 
                /**
                 * If necessary, the options will be saved using several sequential API requests. Only one promise
                 * is always returned that will be resolved when all requests complete.
                 *
+                * If a request from a previous #saveOptions call is still pending, this will wait for it to be
+                * completed, otherwise MediaWiki gets sad. No requests are sent for anonymous users, as they
+                * would fail anyway. See T214963.
+                *
                 * @param {Object} options Options as a `{ name: value, … }` object
                 * @return {jQuery.Promise}
                 */
                saveOptions: function ( options ) {
                        var name, value, bundleable,
                                grouped = [],
+                               promise;
+
+                       // Logged-out users can't have user options; we can't depend on mw.user, that'd be circular
+                       if ( mw.config.get( 'wgUserName' ) === null ) {
+                               return $.Deferred().reject( 'notloggedin' ).promise();
+                       }
+
+                       // If another options request to this API is pending, wait for it first
+                       if (
+                               saveOptionsRequests[ this.defaults.ajax.url ] &&
+                               // Avoid long chains of promises, they may cause memory leaks
+                               saveOptionsRequests[ this.defaults.ajax.url ].state() === 'pending'
+                       ) {
+                               promise = saveOptionsRequests[ this.defaults.ajax.url ].then( function () {
+                                       // Don't expose the old promise's result, it would be confusing
+                                       return $.Deferred().resolve();
+                               }, function () {
+                                       return $.Deferred().resolve();
+                               } );
+                       } else {
                                promise = $.Deferred().resolve();
+                       }
 
                        for ( name in options ) {
                                value = options[ name ] === null ? null : String( options[ name ] );
                                }.bind( this ) );
                        }
 
+                       saveOptionsRequests[ this.defaults.ajax.url ] = promise;
+
                        return promise;
                }
 
index 73978d9..b3707a5 100644 (file)
@@ -1,5 +1,6 @@
 ( function () {
        var ProtectionForm,
+               config = require( './config.json' ),
                reasonCodePointLimit = mw.config.get( 'wgCommentCodePointLimit' ),
                reasonByteLimit = mw.config.get( 'wgCommentByteLimit' );
 
@@ -18,9 +19,7 @@
                                return false;
                        }
 
-                       if ( mw.config.get( 'wgCascadeableLevels' ) !== undefined ) {
-                               $( 'form#mw-Protect-Form' ).on( 'submit', this.toggleUnchainedInputs.bind( ProtectionForm, true ) );
-                       }
+                       $( 'form#mw-Protect-Form' ).on( 'submit', this.toggleUnchainedInputs.bind( ProtectionForm, true ) );
                        this.getExpirySelectors().each( function () {
                                $( this ).on( 'change', ProtectionForm.updateExpiryList.bind( ProtectionForm, this ) );
                        } );
                 * @return {boolean}
                 */
                isCascadeableLevel: function ( level ) {
-                       var cascadeableLevels = mw.config.get( 'wgCascadeableLevels' );
-
-                       if ( !Array.isArray( cascadeableLevels ) ) {
-                               return false;
-                       }
-
-                       return cascadeableLevels.indexOf( level ) !== -1;
+                       return config.CascadingRestrictionLevels.indexOf( level ) !== -1;
                },
 
                /**
index 56a95eb..30d4a90 100644 (file)
@@ -33,8 +33,6 @@
                this.collapsedPreferenceName = config.collapsedPreferenceName;
                this.normalizeTarget = !!config.normalizeTarget;
 
-               this.pollingRate = require( './config.json' ).StructuredChangeFiltersLiveUpdatePollingRate;
-
                this.requestCounter = {};
                this.baseFilterState = {};
                this.uriProcessor = null;
                this.initialized = true;
                this.switchView( 'default' );
 
+               this.pollingRate = mw.config.get( 'StructuredChangeFiltersLiveUpdatePollingRate' );
                if ( this.pollingRate ) {
                        this._scheduleLiveUpdate();
                }
index d89bb28..2e6abab 100644 (file)
        /**
         * Get the first item with a current conflict
         *
-        * @return {mw.rcfilters.dm.FilterItem} Conflicted item
+        * @return {mw.rcfilters.dm.FilterItem|undefined} Conflicted item or undefined when not found
         */
        FiltersViewModel.prototype.getFirstConflictedItem = function () {
-               var conflictedItem;
-
-               this.getItems().forEach( function ( filterItem ) {
+               var i, filterItem, items = this.getItems();
+               for ( i = 0; i < items.length; i++ ) {
+                       filterItem = items[ i ];
                        if ( filterItem.isSelected() && filterItem.isConflicted() ) {
-                               conflictedItem = filterItem;
-                               return false;
+                               return filterItem;
                        }
-               } );
-
-               return conflictedItem;
+               }
        };
 
        /**
index a69dc55..4e0d3da 100644 (file)
                        mw.config.get( 'wgStructuredChangeFilters' ),
                        // All namespaces without Media namespace
                        getNamespaces( [ 'Media' ] ),
-                       require( './config.json' ).RCFiltersChangeTags,
+                       mw.config.get( 'wgRCFiltersChangeTags' ),
                        conditionalViews
                );
 
index cb297f6..2674cc2 100644 (file)
@@ -90,7 +90,7 @@
                                this.numChangesAndDateWidget.$element
                        );
 
-               if ( this.controller.pollingRate ) {
+               if ( mw.config.get( 'StructuredChangeFiltersLiveUpdatePollingRate' ) ) {
                        $bottom.prepend( this.liveUpdateButton.$element );
                }
 
index 16c0533..a1c9776 100644 (file)
@@ -30,7 +30,7 @@
                editWatchlistButton = new OO.ui.ButtonWidget( {
                        label: mw.msg( 'rcfilters-watchlist-edit-watchlist-button' ),
                        icon: 'edit',
-                       href: require( '../config.json' ).StructuredChangeFiltersEditWatchlistUrl
+                       href: mw.config.get( 'wgStructuredChangeFiltersEditWatchlistUrl' )
                } );
                markSeenButton = new MarkSeenButtonWidget( controller, changesListModel );
 
diff --git a/resources/src/mediawiki.special.changeslist.enhanced.css b/resources/src/mediawiki.special.changeslist.enhanced.css
deleted file mode 100644 (file)
index 275004f..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*!
- * Styling for Special:Watchlist and Special:RecentChanges when preference 'usenewrc'
- * a.k.a. Enhanced Recent Changes is enabled.
- */
-
-table.mw-enhanced-rc {
-       border: 0;
-       border-spacing: 0;
-}
-
-table.mw-enhanced-rc th,
-table.mw-enhanced-rc td {
-       padding: 0;
-       vertical-align: top;
-}
-
-td.mw-enhanced-rc {
-       white-space: nowrap;
-       font-family: monospace, monospace;
-}
-
-.mw-enhanced-rc-time {
-       font-family: monospace, monospace;
-}
-
-table.mw-enhanced-rc td.mw-enhanced-rc-nested {
-       padding-left: 1em;
-}
-
-/* Show/hide arrows in enhanced changeslist */
-.mw-enhanced-rc .collapsible-expander {
-       float: none;
-}
-
-/* If JS is disabled, the arrows or the placeholder space shouldn't be shown */
-.client-nojs .mw-enhancedchanges-arrow-space {
-       display: none;
-}
-
-.mw-enhancedchanges-arrow {
-       padding-top: 2px;
-}
-
-.mw-enhancedchanges-arrow-space {
-       display: inline-block;
-       *display: inline; /* IE7 and below */
-       zoom: 1;
-       width: 15px;
-       height: 15px;
-}
-
-.mw-enhanced-watched .mw-enhanced-rc-time {
-       font-weight: bold;
-}
-
-span.changedby {
-       font-size: 95%;
-}
diff --git a/resources/src/mediawiki.special.changeslist.enhanced.less b/resources/src/mediawiki.special.changeslist.enhanced.less
new file mode 100644 (file)
index 0000000..d7923f4
--- /dev/null
@@ -0,0 +1,58 @@
+/*!
+ * Styling for Special:Watchlist and Special:RecentChanges when preference 'usenewrc'
+ * a.k.a. Enhanced Recent Changes is enabled.
+ */
+
+table.mw-enhanced-rc {
+       border: 0;
+       border-spacing: 0;
+
+       th,
+       td {
+               padding: 0;
+               vertical-align: top;
+       }
+
+       td.mw-enhanced-rc-nested {
+               padding-left: 1em;
+       }
+}
+
+td.mw-enhanced-rc {
+       white-space: nowrap;
+       font-family: monospace, monospace;
+}
+
+.mw-enhanced-rc-time {
+       font-family: monospace, monospace;
+}
+
+/* Show/hide arrows in enhanced changeslist */
+.mw-enhanced-rc .collapsible-expander {
+       float: none;
+}
+
+/* If JS is disabled, the arrows or the placeholder space shouldn't be shown */
+.client-nojs .mw-enhancedchanges-arrow-space {
+       display: none;
+}
+
+.mw-enhancedchanges-arrow {
+       padding-top: 2px;
+}
+
+.mw-enhancedchanges-arrow-space {
+       display: inline-block;
+       *display: inline; /* IE7 and below */
+       zoom: 1;
+       width: 15px;
+       height: 15px;
+}
+
+.mw-enhanced-watched .mw-enhanced-rc-time {
+       font-weight: bold;
+}
+
+span.changedby {
+       font-size: 95%;
+}
diff --git a/resources/src/mediawiki.special.changeslist.legend.css b/resources/src/mediawiki.special.changeslist.legend.css
deleted file mode 100644 (file)
index 14f6aee..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*!
- * Styling for changes list legend
- */
-
-.mw-changeslist-legend {
-       float: right;
-       margin-left: 1em;
-       margin-bottom: 0.5em;
-       clear: right;
-       font-size: 85%;
-       line-height: 1.2em;
-       padding: 0.5em;
-       border: 1px solid #ddd;
-}
-
-.mw-changeslist-legend dl {
-       /* Parent element defines sufficient padding */
-       margin-bottom: 0;
-}
-
-.mw-changeslist-legend dt {
-       float: left;
-       margin: 0 0.5em 0 0;
-}
-
-.mw-changeslist-legend dd {
-       margin-left: 1.5em;
-}
-
-.mw-changeslist-legend dt,
-.mw-changeslist-legend dd {
-       line-height: 1.3em;
-}
diff --git a/resources/src/mediawiki.special.changeslist.legend.less b/resources/src/mediawiki.special.changeslist.legend.less
new file mode 100644 (file)
index 0000000..eb57213
--- /dev/null
@@ -0,0 +1,33 @@
+/*!
+ * Styling for changes list legend
+ */
+
+.mw-changeslist-legend {
+       float: right;
+       margin-left: 1em;
+       margin-bottom: 0.5em;
+       clear: right;
+       font-size: 85%;
+       line-height: 1.2em;
+       padding: 0.5em;
+       border: 1px solid #ddd;
+
+       dl {
+               /* Parent element defines sufficient padding */
+               margin-bottom: 0;
+       }
+
+       dt {
+               float: left;
+               margin: 0 0.5em 0 0;
+       }
+
+       dd {
+               margin-left: 1.5em;
+       }
+
+       dt,
+       dd {
+               line-height: 1.3em;
+       }
+}
index 16b2591..ff41b5e 100644 (file)
@@ -1,11 +1,16 @@
 /* This style adds a toggle button with internationalized message for the TOC. */
 
-/* When the browser supports :checked then overwrite the style="display:none" and make the /*
+/* When the browser supports :checked then overwrite the style="display:none" and make the */
 /* checkbox invisible on another way to allow to focus the checkbox with keyboard. */
 :not( :checked ) > .toctogglecheckbox {
+       // Make the checkbox visible to allow it to focus with keyboard.
        display: inline !important; /* stylelint-disable-line declaration-no-important */
+       // Remove any size of the checkbox.
        position: absolute;
+       // Make the checkbox invisible.
        opacity: 0;
+       // Prevent that the checkbox is clickable and changes the cursor.
+       z-index: -1;
 }
 
 .toctogglespan {
index 253784e..7932f73 100644 (file)
@@ -63,6 +63,7 @@
 .mw-widget-calendarWidget-body-wrapper {
        .mw-widget-calendarWidget-body {
                display: inline-block;
+               display: inline-grid;
                // Fit 7 days, 3em each
                width: @calendarWidth;
                // Fit 6 weeks + heading line, 2em each
 
        .mw-widget-calendarWidget-body {
                display: block;
+               display: grid;
        }
 
        .mw-widget-calendarWidget-body:first-child {
 
        .mw-widget-calendarWidget-body {
                display: block;
+               display: grid;
        }
 
        .mw-widget-calendarWidget-body:first-child {
        }
 }
 
+// Support: Browsers that render CSS Grid. All others ignore unknown `grid-*` properties.
+// This avoids any calculation issues pushing items to next line.
+.mw-widget-calendarWidget-body-month {
+       grid-template-columns: auto auto auto auto auto auto auto;
+}
+
+.mw-widget-calendarWidget-body-year {
+       grid-template-columns: auto auto;
+}
+
+.mw-widget-calendarWidget-body-duodecade {
+       grid-template-columns: auto auto auto auto auto;
+}
+
 .mw-widget-calendarWidget-day,
 .mw-widget-calendarWidget-day-heading,
 .mw-widget-calendarWidget-month,
index b9bd1e0..f1f98a2 100644 (file)
                var widget = this;
 
                this.getRequestData().done( function ( data ) {
+                       if ( widget.query.isReadOnly() ) {
+                               // The request object is always abortable, so just
+                               // prevent the results from displaying
+                               return;
+                       }
                        // Parent method
                        mw.widgets.TitleSearchWidget.parent.prototype.onQueryChange.call( widget );
                        widget.results.addItems( widget.getOptionsFromData( data ) );
                return response.query || {};
        };
 
+       /**
+        * Check if the widget is read-only.
+        *
+        * @return {boolean}
+        */
+       mw.widgets.TitleSearchWidget.prototype.isReadOnly = function () {
+               return this.query.isReadOnly();
+       };
+
+       /**
+        * Set the read-only state of the widget.
+        *
+        * @param {boolean} readOnly Make input read-only
+        * @chainable
+        * @return {mw.widgets.TitleSearchWidget} The widget, for chaining
+        */
+       mw.widgets.TitleSearchWidget.prototype.setReadOnly = function ( readOnly ) {
+               this.query.setReadOnly( readOnly );
+               if ( readOnly ) {
+                       // Hide results
+                       this.results.clearItems();
+               }
+               return this;
+       };
+
 }() );
index b5ba6a6..65cf316 100644 (file)
                         * @param {Function} [callback] Callback to run after request resolution
                         */
                        function addScript( src, callback ) {
+                               // Use a <script> element rather than XHR. Using XHR changes the request
+                               // headers (potentially missing a cache hit), and reduces caching in general
+                               // since browsers cache XHR much less (if at all). And XHR means we retrieve
+                               // text, so we'd need to eval, which then messes up line numbers.
+                               // The drawback is that <script> does not offer progress events, feedback is
+                               // only given after downloading, parsing, and execution have completed.
                                var script = document.createElement( 'script' );
                                script.src = src;
                                script.onload = script.onerror = function () {
index 94d226c..fddee3d 100644 (file)
@@ -19,6 +19,8 @@
  * @ingroup Testing
  */
 
+use MediaWiki\Shell\Shell;
+
 /**
  * This is a TestRecorder responsible for printing information about progress,
  * success and failure to the console. It is specific to the parserTests.php
@@ -176,9 +178,6 @@ class ParserTestPrinter extends TestRecorder {
                $outfile = "$prefix-$outFileTail";
                $this->dumpToFile( $output, $outfile );
 
-               $shellInfile = wfEscapeShellArg( $infile );
-               $shellOutfile = wfEscapeShellArg( $outfile );
-
                global $wgDiff3;
                // we assume that people with diff3 also have usual diff
                if ( $this->useDwdiff ) {
@@ -187,7 +186,11 @@ class ParserTestPrinter extends TestRecorder {
                        $shellCommand = ( wfIsWindows() && !$wgDiff3 ) ? 'fc' : 'diff -au';
                }
 
-               $diff = wfShellExec( "$shellCommand $shellInfile $shellOutfile" );
+               $result = Shell::command()
+                       ->unsafeParams( $shellCommand )
+                       ->params( $infile, $outfile )
+                       ->execute();
+               $diff = $result->getStdout();
 
                unlink( $infile );
                unlink( $outfile );
index cfad069..8c02466 100644 (file)
@@ -1,5 +1,7 @@
 {
        "name": "FooBar",
+       "@note": "This is a note",
+       "@duck": "Docs say any @-item is ignored",
        "attributes": {
                "FooBar": {
                        "Attr": [ "test" ]
@@ -8,5 +10,12 @@
                        "Attr": [ "test2" ]
                }
        },
+       "config": {
+               "MyConfigValue": {
+                       "value": 42,
+                       "description": "Very important config value",
+                       "public": true
+               }
+       },
        "manifest_version": 2
 }
index a151080..f20481b 100644 (file)
@@ -616,6 +616,9 @@ class BlockTest extends MediaWikiLangTestCase {
         * @covers Block::appliesToTitle
         */
        public function testAppliesToTitleReturnsTrueOnSitewideBlock() {
+               $this->setMwGlobals( [
+                       'wgBlockDisablesLogin' => false,
+               ] );
                $user = $this->getTestUser()->getUser();
                $block = new Block( [
                        'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 40 * 60 * 60 ) ),
@@ -642,6 +645,9 @@ class BlockTest extends MediaWikiLangTestCase {
         * @covers Block::appliesToTitle
         */
        public function testAppliesToTitleOnPartialBlock() {
+               $this->setMwGlobals( [
+                       'wgBlockDisablesLogin' => false,
+               ] );
                $user = $this->getTestUser()->getUser();
                $block = new Block( [
                        'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 40 * 60 * 60 ) ),
@@ -673,6 +679,9 @@ class BlockTest extends MediaWikiLangTestCase {
         * @covers Block::appliesToPage
         */
        public function testAppliesToReturnsTrueOnSitewideBlock() {
+               $this->setMwGlobals( [
+                       'wgBlockDisablesLogin' => false,
+               ] );
                $user = $this->getTestUser()->getUser();
                $block = new Block( [
                        'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 40 * 60 * 60 ) ),
@@ -697,6 +706,9 @@ class BlockTest extends MediaWikiLangTestCase {
         * @covers Block::appliesToPage
         */
        public function testAppliesToPageOnPartialPageBlock() {
+               $this->setMwGlobals( [
+                       'wgBlockDisablesLogin' => false,
+               ] );
                $user = $this->getTestUser()->getUser();
                $block = new Block( [
                        'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 40 * 60 * 60 ) ),
@@ -725,6 +737,9 @@ class BlockTest extends MediaWikiLangTestCase {
         * @covers Block::appliesToNamespace
         */
        public function testAppliesToNamespaceOnPartialNamespaceBlock() {
+               $this->setMwGlobals( [
+                       'wgBlockDisablesLogin' => false,
+               ] );
                $user = $this->getTestUser()->getUser();
                $block = new Block( [
                        'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 40 * 60 * 60 ) ),
@@ -749,6 +764,9 @@ class BlockTest extends MediaWikiLangTestCase {
         * @covers Block::prevents
         */
        public function testBlockAllowsPurge() {
+               $this->setMwGlobals( [
+                       'wgBlockDisablesLogin' => false,
+               ] );
                $block = new Block();
                $this->assertFalse( $block->prevents( 'purge' ) );
        }
diff --git a/tests/phpunit/includes/CommentStoreCommentTest.php b/tests/phpunit/includes/CommentStoreCommentTest.php
new file mode 100644 (file)
index 0000000..2dfe03a
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers CommentStoreComment
+ *
+ * @license GPL-2.0-or-later
+ */
+class CommentStoreCommentTest extends TestCase {
+
+       public function testConstructorWithMessage() {
+               $message = new Message( 'test' );
+               $comment = new CommentStoreComment( null, 'test', $message );
+
+               $this->assertSame( $message, $comment->message );
+       }
+
+       public function testConstructorWithoutMessage() {
+               $text = '{{template|param}}';
+               $comment = new CommentStoreComment( null, $text );
+
+               $this->assertSame( $text, $comment->message->text() );
+       }
+
+}
index 78c5bf3..9c08b9f 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\IMaintainableDatabase;
 use Wikimedia\ScopedCallback;
 use Wikimedia\TestingAccessWrapper;
 
@@ -383,6 +384,8 @@ class CommentStoreTest extends MediaWikiLangTestCase {
                        "message keys $from" );
                $this->assertEquals( $expect['message']->text(), $actual->message->text(),
                        "message rendering $from" );
+               $this->assertEquals( $expect['text'], $actual->message->text(),
+                       "message rendering and text $from" );
                $this->assertEquals( $expect['data'], $actual->data, "data $from" );
        }
 
@@ -400,7 +403,7 @@ class CommentStoreTest extends MediaWikiLangTestCase {
 
                $expectOld = [
                        'text' => $expect['text'],
-                       'message' => new RawMessage( '$1', [ $expect['text'] ] ),
+                       'message' => new RawMessage( '$1', [ Message::plaintextParam( $expect['text'] ) ] ),
                        'data' => null,
                ];
 
@@ -490,7 +493,7 @@ class CommentStoreTest extends MediaWikiLangTestCase {
 
                $expectOld = [
                        'text' => $expect['text'],
-                       'message' => new RawMessage( '$1', [ $expect['text'] ] ),
+                       'message' => new RawMessage( '$1', [ Message::plaintextParam( $expect['text'] ) ] ),
                        'data' => null,
                ];
 
@@ -568,7 +571,7 @@ class CommentStoreTest extends MediaWikiLangTestCase {
                $db = wfGetDB( DB_REPLICA ); // for timestamps
 
                $msgComment = new Message( 'parentheses', [ 'message comment' ] );
-               $textCommentMsg = new RawMessage( '$1', [ 'text comment' ] );
+               $textCommentMsg = new RawMessage( '$1', [ Message::plaintextParam( '{{text}} comment' ) ] );
                $nestedMsgComment = new Message( [ 'parentheses', 'rawmessage' ], [ new Message( 'mainpage' ) ] );
                $comStoreComment = new CommentStoreComment(
                        null, 'comment store comment', null, [ 'foo' => 'bar' ]
@@ -576,15 +579,15 @@ class CommentStoreTest extends MediaWikiLangTestCase {
 
                return [
                        'Simple table, text comment' => [
-                               'commentstore1', 'cs1_comment', 'cs1_id', 'text comment', null, [
-                                       'text' => 'text comment',
+                               'commentstore1', 'cs1_comment', 'cs1_id', '{{text}} comment', null, [
+                                       'text' => '{{text}} comment',
                                        'message' => $textCommentMsg,
                                        'data' => null,
                                ]
                        ],
                        'Simple table, text comment with data' => [
-                               'commentstore1', 'cs1_comment', 'cs1_id', 'text comment', [ 'message' => 42 ], [
-                                       'text' => 'text comment',
+                               'commentstore1', 'cs1_comment', 'cs1_id', '{{text}} comment', [ 'message' => 42 ], [
+                                       'text' => '{{text}} comment',
                                        'message' => $textCommentMsg,
                                        'data' => [ 'message' => 42 ],
                                ]
@@ -619,15 +622,15 @@ class CommentStoreTest extends MediaWikiLangTestCase {
                        ],
 
                        'Revision, text comment' => [
-                               'commentstore2', 'cs2_comment', 'cs2_id', 'text comment', null, [
-                                       'text' => 'text comment',
+                               'commentstore2', 'cs2_comment', 'cs2_id', '{{text}} comment', null, [
+                                       'text' => '{{text}} comment',
                                        'message' => $textCommentMsg,
                                        'data' => null,
                                ]
                        ],
                        'Revision, text comment with data' => [
-                               'commentstore2', 'cs2_comment', 'cs2_id', 'text comment', [ 'message' => 42 ], [
-                                       'text' => 'text comment',
+                               'commentstore2', 'cs2_comment', 'cs2_id', '{{text}} comment', [ 'message' => 42 ], [
+                                       'text' => '{{text}} comment',
                                        'message' => $textCommentMsg,
                                        'data' => [ 'message' => 42 ],
                                ]
index 7d40d8c..7bb5c38 100644 (file)
@@ -2531,7 +2531,7 @@ class OutputPageTest extends MediaWikiTestCase {
                $nonce->setAccessible( true );
                $nonce->setValue( $out, 'secret' );
                $rl = $out->getResourceLoader();
-               $rl->setMessageBlobStore( new NullMessageBlobStore() );
+               $rl->setMessageBlobStore( $this->createMock( MessageBlobStore::class ) );
                $rl->register( [
                        'test.foo' => new ResourceLoaderTestModule( [
                                'script' => 'mw.test.foo( { a: true } );',
@@ -2647,7 +2647,7 @@ class OutputPageTest extends MediaWikiTestCase {
                        ->method( 'buildCssLinksArray' )
                        ->willReturn( [] );
                $rl = $op->getResourceLoader();
-               $rl->setMessageBlobStore( new NullMessageBlobStore() );
+               $rl->setMessageBlobStore( $this->createMock( MessageBlobStore::class ) );
 
                // Register custom modules
                $rl->register( [
@@ -3051,21 +3051,3 @@ class OutputPageTest extends MediaWikiTestCase {
                return new OutputPage( $context );
        }
 }
-
-/**
- * MessageBlobStore that doesn't do anything
- */
-class NullMessageBlobStore extends MessageBlobStore {
-       public function get( ResourceLoader $resourceLoader, $modules, $lang ) {
-               return [];
-       }
-
-       public function updateModule( $name, ResourceLoaderModule $module, $lang ) {
-       }
-
-       public function updateMessage( $key ) {
-       }
-
-       public function clear() {
-       }
-}
index ea26808..1b6ff2a 100644 (file)
@@ -39,7 +39,7 @@ class SlotRecordTest extends MediaWikiTestCase {
                $this->assertTrue( $record->hasContentId() );
                $this->assertTrue( $record->hasRevision() );
                $this->assertTrue( $record->isInherited() );
-               $this->assertSame( 'A', $record->getContent()->getNativeData() );
+               $this->assertSame( 'A', $record->getContent()->getText() );
                $this->assertSame( 5, $record->getSize() );
                $this->assertSame( 'someHash', $record->getSha1() );
                $this->assertSame( CONTENT_MODEL_WIKITEXT, $record->getModel() );
@@ -75,7 +75,7 @@ class SlotRecordTest extends MediaWikiTestCase {
                $this->assertTrue( $record->hasRevision() );
                $this->assertFalse( $record->hasContentId() );
                $this->assertFalse( $record->isInherited() );
-               $this->assertSame( 'A', $record->getContent()->getNativeData() );
+               $this->assertSame( 'A', $record->getContent()->getText() );
                $this->assertSame( 1, $record->getSize() );
                $this->assertNotNull( $record->getSha1() );
                $this->assertSame( CONTENT_MODEL_WIKITEXT, $record->getModel() );
@@ -94,7 +94,7 @@ class SlotRecordTest extends MediaWikiTestCase {
                $this->assertFalse( $record->hasRevision() );
                $this->assertFalse( $record->isInherited() );
                $this->assertFalse( $record->hasOrigin() );
-               $this->assertSame( 'A', $record->getContent()->getNativeData() );
+               $this->assertSame( 'A', $record->getContent()->getText() );
                $this->assertSame( 1, $record->getSize() );
                $this->assertNotNull( $record->getSha1() );
                $this->assertSame( CONTENT_MODEL_WIKITEXT, $record->getModel() );
@@ -237,7 +237,7 @@ class SlotRecordTest extends MediaWikiTestCase {
                $this->assertTrue( $saved->hasContentId() );
                $this->assertSame( 'theNewAddress', $saved->getAddress() );
                $this->assertSame( 20, $saved->getContentId() );
-               $this->assertSame( 'A', $saved->getContent()->getNativeData() );
+               $this->assertSame( 'A', $saved->getContent()->getText() );
                $this->assertSame( 10, $saved->getRevision() );
                $this->assertSame( 10, $saved->getOrigin() );
 
index 339dc30..a17d21d 100644 (file)
@@ -657,7 +657,7 @@ abstract class RevisionDbTestBase extends MediaWikiTestCase {
                        'new null revision should have the same SHA1 as the original revision' );
                $this->assertTrue( $orig->getRevisionRecord()->hasSameContent( $rev->getRevisionRecord() ),
                        'new null revision should have the same content as the original revision' );
-               $this->assertEquals( __METHOD__, $rev->getContent()->getNativeData() );
+               $this->assertEquals( __METHOD__, $rev->getContent()->getText() );
        }
 
        /**
@@ -1379,7 +1379,7 @@ abstract class RevisionDbTestBase extends MediaWikiTestCase {
                );
                $rev = $this->testPage->getRevision();
 
-               $this->assertSame( $expectedText, $rev->getContent()->getNativeData() );
+               $this->assertSame( $expectedText, $rev->getContent()->getText() );
                $this->assertSame( $expectedText, $rev->getSerializedData() );
                $this->assertSame( $this->testPage->getContentModel(), $rev->getContentModel() );
                $this->assertSame( $this->testPage->getContent()->getDefaultFormat(), $rev->getContentFormat() );
index 8049a47..4600551 100644 (file)
@@ -1343,6 +1343,54 @@ class ApiBaseTest extends ApiTestCase {
                ], $user ) );
        }
 
+       public function testAddBlockInfoToStatus() {
+               $mock = new MockApi();
+
+               // Sanity check empty array
+               $expect = Status::newGood();
+               $test = Status::newGood();
+               $mock->addBlockInfoToStatus( $test );
+               $this->assertEquals( $expect, $test );
+
+               // No blocked $user, so no special block handling
+               $expect = Status::newGood();
+               $expect->fatal( 'blockedtext' );
+               $expect->fatal( 'autoblockedtext' );
+               $expect->fatal( 'systemblockedtext' );
+               $expect->fatal( 'mainpage' );
+               $expect->fatal( 'parentheses', 'foobar' );
+               $test = clone $expect;
+               $mock->addBlockInfoToStatus( $test );
+               $this->assertEquals( $expect, $test );
+
+               // Has a blocked $user, so special block handling
+               $user = $this->getMutableTestUser()->getUser();
+               $block = new \Block( [
+                       'address' => $user->getName(),
+                       'user' => $user->getID(),
+                       'by' => $this->getTestSysop()->getUser()->getId(),
+                       'reason' => __METHOD__,
+                       'expiry' => time() + 100500,
+               ] );
+               $block->insert();
+               $blockinfo = [ 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $block ) ];
+
+               $expect = Status::newGood();
+               $expect->fatal( ApiMessage::create( 'apierror-blocked', 'blocked', $blockinfo ) );
+               $expect->fatal( ApiMessage::create( 'apierror-autoblocked', 'autoblocked', $blockinfo ) );
+               $expect->fatal( ApiMessage::create( 'apierror-systemblocked', 'blocked', $blockinfo ) );
+               $expect->fatal( 'mainpage' );
+               $expect->fatal( 'parentheses', 'foobar' );
+               $test = Status::newGood();
+               $test->fatal( 'blockedtext' );
+               $test->fatal( 'autoblockedtext' );
+               $test->fatal( 'systemblockedtext' );
+               $test->fatal( 'mainpage' );
+               $test->fatal( 'parentheses', 'foobar' );
+               $mock->addBlockInfoToStatus( $test, $user );
+               $this->assertEquals( $expect, $test );
+       }
+
        public function testDieStatus() {
                $mock = new MockApi();
 
index 2161093..1706ad1 100644 (file)
@@ -152,7 +152,7 @@ class ApiEditPageTest extends ApiTestCase {
                $content = $page->getContent();
                $this->assertNotNull( $content, 'Page should have been created' );
 
-               $text = $content->getNativeData();
+               $text = $content->getText();
 
                $this->assertSame( $expected, $text );
        }
@@ -176,7 +176,7 @@ class ApiEditPageTest extends ApiTestCase {
                $this->assertSame( 'Success', $re['edit']['result'] );
                $newtext = WikiPage::factory( Title::newFromText( $name ) )
                        ->getContent( Revision::RAW )
-                       ->getNativeData();
+                       ->getText();
                $this->assertSame( "==section 1==\nnew content 1\n\n==section 2==\ncontent2", $newtext );
 
                // Test that we raise a 'nosuchsection' error
@@ -216,7 +216,7 @@ class ApiEditPageTest extends ApiTestCase {
                // Check the page text is correct
                $text = WikiPage::factory( Title::newFromText( $name ) )
                        ->getContent( Revision::RAW )
-                       ->getNativeData();
+                       ->getText();
                $this->assertSame( "== header ==\n\ntest", $text );
 
                // Now on one that does
@@ -232,7 +232,7 @@ class ApiEditPageTest extends ApiTestCase {
                $this->assertSame( 'Success', $re2['edit']['result'] );
                $text = WikiPage::factory( Title::newFromText( $name ) )
                        ->getContent( Revision::RAW )
-                       ->getNativeData();
+                       ->getText();
                $this->assertSame( "== header ==\n\ntest\n\n== header ==\n\ntest", $text );
        }
 
@@ -733,7 +733,7 @@ class ApiEditPageTest extends ApiTestCase {
                        'undoafter' => $revId1,
                ] );
 
-               $text = ( new WikiPage( $titleObj ) )->getContent()->getNativeData();
+               $text = ( new WikiPage( $titleObj ) )->getContent()->getText();
 
                // This is wrong!  It should be 1.  But let's test for our incorrect
                // behavior for now, so if someone fixes it they'll fix the test as
@@ -761,7 +761,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )->getContent()
-                       ->getNativeData();
+                       ->getText();
                $this->assertSame( '3', $text );
        }
 
@@ -784,7 +784,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )->getContent()
-                       ->getNativeData();
+                       ->getText();
                $this->assertSame( '1', $text );
        }
 
@@ -855,7 +855,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                       ->getContent()->getNativeData();
+                       ->getContent()->getText();
                $this->assertSame( 'Alert: Some text', $text );
        }
 
@@ -872,7 +872,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                       ->getContent()->getNativeData();
+                       ->getContent()->getText();
                $this->assertSame( 'Some text is nice', $text );
        }
 
@@ -890,7 +890,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                       ->getContent()->getNativeData();
+                       ->getContent()->getText();
                $this->assertSame( 'Alert: Some text is nice', $text );
        }
 
@@ -957,7 +957,7 @@ class ApiEditPageTest extends ApiTestCase {
                } finally {
                        // Validate that content was not changed
                        $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                               ->getContent()->getNativeData();
+                               ->getContent()->getText();
 
                        $this->assertSame( 'Some text', $text );
                }
@@ -1059,7 +1059,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                       ->getContent()->getNativeData();
+                       ->getContent()->getText();
 
                $this->assertSame( "Initial content\n\n== New section ==", $text );
        }
@@ -1097,7 +1097,7 @@ class ApiEditPageTest extends ApiTestCase {
                $page = new WikiPage( Title::newFromText( $name ) );
 
                $this->assertSame( "Initial content\n\n== My section ==\n\nMore content",
-                       $page->getContent()->getNativeData() );
+                       $page->getContent()->getText() );
                $this->assertSame( '/* My section */ new section',
                        $page->getRevision()->getComment() );
        }
@@ -1118,7 +1118,7 @@ class ApiEditPageTest extends ApiTestCase {
                $page = new WikiPage( Title::newFromText( $name ) );
 
                $this->assertSame( "Initial content\n\n== Add new section ==\n\nMore content",
-                       $page->getContent()->getNativeData() );
+                       $page->getContent()->getText() );
                // EditPage actually assumes the summary is the section name here
                $this->assertSame( '/* Add new section */ new section',
                        $page->getRevision()->getComment() );
@@ -1141,7 +1141,7 @@ class ApiEditPageTest extends ApiTestCase {
                $page = new WikiPage( Title::newFromText( $name ) );
 
                $this->assertSame( "Initial content\n\n== My section ==\n\nMore content",
-                       $page->getContent()->getNativeData() );
+                       $page->getContent()->getText() );
                $this->assertSame( 'Add new section',
                        $page->getRevision()->getComment() );
        }
@@ -1160,7 +1160,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                       ->getContent()->getNativeData();
+                       ->getContent()->getText();
 
                $this->assertSame( "== Section 1 ==\n\nContent and more content\n\n" .
                        "== Section 2 ==\n\nFascinating!", $text );
@@ -1179,7 +1179,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                       ->getContent()->getNativeData();
+                       ->getContent()->getText();
 
                $this->assertSame( "Content and more content\n\n== Section 1 ==\n\n" .
                        "Fascinating!", $text );
@@ -1201,7 +1201,7 @@ class ApiEditPageTest extends ApiTestCase {
                        ] );
                } finally {
                        $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                               ->getContent()->getNativeData();
+                               ->getContent()->getText();
 
                        $this->assertSame( 'Content', $text );
                }
@@ -1223,7 +1223,7 @@ class ApiEditPageTest extends ApiTestCase {
                        ] );
                } finally {
                        $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                               ->getContent()->getNativeData();
+                               ->getContent()->getText();
 
                        $this->assertSame( 'Content', $text );
                }
@@ -1474,8 +1474,7 @@ class ApiEditPageTest extends ApiTestCase {
        public function testEditWhileBlocked() {
                $name = 'Help:' . ucfirst( __FUNCTION__ );
 
-               $this->setExpectedException( ApiUsageException::class,
-                       'You have been blocked from editing.' );
+               $this->assertNull( Block::newFromTarget( '127.0.0.1' ), 'Sanity check' );
 
                $block = new Block( [
                        'address' => self::$users['sysop']->getUser()->getName(),
@@ -1483,6 +1482,7 @@ class ApiEditPageTest extends ApiTestCase {
                        'reason' => 'Capriciousness',
                        'timestamp' => '19370101000000',
                        'expiry' => 'infinity',
+                       'enableAutoblock' => true,
                ] );
                $block->insert();
 
@@ -1492,6 +1492,10 @@ class ApiEditPageTest extends ApiTestCase {
                                'title' => $name,
                                'text' => 'Some text',
                        ] );
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertSame( 'You have been blocked from editing.', $ex->getMessage() );
+                       $this->assertNotNull( Block::newFromTarget( '127.0.0.1' ), 'Autoblock spread' );
                } finally {
                        $block->delete();
                        self::$users['sysop']->getUser()->clearInstanceCache();
index 1e66a7d..b9c49b1 100644 (file)
@@ -130,6 +130,39 @@ class ApiMoveTest extends ApiTestCase {
                }
        }
 
+       public function testMoveWhileBlocked() {
+               $this->assertNull( Block::newFromTarget( '127.0.0.1' ), 'Sanity check' );
+
+               $block = new Block( [
+                       'address' => self::$users['sysop']->getUser()->getName(),
+                       'by' => self::$users['sysop']->getUser()->getId(),
+                       'reason' => 'Capriciousness',
+                       'timestamp' => '19370101000000',
+                       'expiry' => 'infinity',
+                       'enableAutoblock' => true,
+               ] );
+               $block->insert();
+
+               $name = ucfirst( __FUNCTION__ );
+               $id = $this->createPage( $name );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'move',
+                               'from' => $name,
+                               'to' => "$name 2",
+                       ] );
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertSame( 'You have been blocked from editing.', $ex->getMessage() );
+                       $this->assertNotNull( Block::newFromTarget( '127.0.0.1' ), 'Autoblock spread' );
+               } finally {
+                       $block->delete();
+                       self::$users['sysop']->getUser()->clearInstanceCache();
+                       $this->assertSame( $id, Title::newFromText( $name )->getArticleID() );
+               }
+       }
+
        // @todo File moving
 
        public function testPingLimiter() {
index 03198a8..6e00842 100644 (file)
@@ -112,6 +112,12 @@ class ApiQueryBlocksTest extends ApiTestCase {
                        'ir_type' => PageRestriction::TYPE_ID,
                        'ir_value' => $pageId,
                ] );
+               // Page that has been deleted.
+               $this->db->insert( 'ipblocks_restrictions', [
+                       'ir_ipb_id' => $block->getId(),
+                       'ir_type' => PageRestriction::TYPE_ID,
+                       'ir_value' => 999999,
+               ] );
                $this->db->insert( 'ipblocks_restrictions', [
                        'ir_ipb_id' => $block->getId(),
                        'ir_type' => NamespaceRestriction::TYPE_ID,
index dc4ab6f..1ee4a03 100644 (file)
@@ -26,18 +26,32 @@ class TemporaryPasswordAuthenticationRequestTest extends AuthenticationRequestTe
                global $wgPasswordPolicy;
 
                $policy = $wgPasswordPolicy;
-               $policy['policies']['default'] += [
+               unset( $policy['policies'] );
+               $policy['policies']['default'] = [
                        'MinimalPasswordLength' => 1,
-                       'MinimalPasswordLengthToLogin' => 1,
+                       'MinimumPasswordLengthToLogin' => 1,
                ];
 
-               $this->setMwGlobals( 'wgPasswordPolicy', $policy );
+               $this->setMwGlobals( [
+                       'wgMinimalPasswordLength' => 10,
+                       'wgPasswordPolicy' => $policy,
+               ] );
 
                $ret1 = TemporaryPasswordAuthenticationRequest::newRandom();
                $ret2 = TemporaryPasswordAuthenticationRequest::newRandom();
-               $this->assertNotSame( '', $ret1->password );
-               $this->assertNotSame( '', $ret2->password );
+               $this->assertEquals( 10, strlen( $ret1->password ) );
+               $this->assertEquals( 10, strlen( $ret2->password ) );
                $this->assertNotSame( $ret1->password, $ret2->password );
+
+               $policy['policies']['default']['MinimalPasswordLength'] = 15;
+               $this->setMwGlobals( 'wgPasswordPolicy', $policy );
+               $ret = TemporaryPasswordAuthenticationRequest::newRandom();
+               $this->assertEquals( 15, strlen( $ret->password ) );
+
+               $policy['policies']['default']['MinimalPasswordLength'] = [ 'value' => 20 ];
+               $this->setMwGlobals( 'wgPasswordPolicy', $policy );
+               $ret = TemporaryPasswordAuthenticationRequest::newRandom();
+               $this->assertEquals( 20, strlen( $ret->password ) );
        }
 
        public function testNewInvalid() {
index 2d78018..5bbd3d0 100644 (file)
@@ -25,6 +25,9 @@ class BlockRestrictionTest extends \MediaWikiLangTestCase {
         * @covers ::rowToRestriction
         */
        public function testLoadMultipleRestrictions() {
+               $this->setMwGlobals( [
+                       'wgBlockDisablesLogin' => false,
+               ] );
                $block = $this->insertBlock();
 
                $pageFoo = $this->getExistingTestPage( 'Foo' );
index dc7678d..ff68e6f 100644 (file)
@@ -20,6 +20,11 @@ class PageRestrictionTest extends RestrictionTestCase {
 
                $page = $this->getExistingTestPage( 'Mars' );
                $this->assertFalse( $restriction->matches( $page->getTitle() ) );
+
+               // Deleted page.
+               $restriction = new $class( 2, 99999 );
+               $page = $this->getExistingTestPage( 'Saturn' );
+               $this->assertFalse( $restriction->matches( $page->getTitle() ) );
        }
 
        public function testGetType() {
index 420fe74..eff2c85 100644 (file)
@@ -26,6 +26,12 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
 
                $styleModules = $enhancedChangesList->getOutput()->getModuleStyles();
 
+               $this->assertContains(
+                       'mediawiki.icon',
+                       $styleModules,
+                       'has mediawiki.icon'
+               );
+
                $this->assertContains(
                        'mediawiki.special.changeslist',
                        $styleModules,
@@ -46,7 +52,6 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                $modules = $enhancedChangesList->getOutput()->getModules();
 
                $this->assertContains( 'jquery.makeCollapsible', $modules, 'has jquery.makeCollapsible' );
-               $this->assertContains( 'mediawiki.icon', $modules, 'has mediawiki.icon' );
        }
 
        public function testBeginRecentChangesList_html() {
index 58f9654..3d1bf59 100644 (file)
@@ -23,6 +23,9 @@
  * @copyright © 2013 Wikimedia Foundation Inc.
  */
 
+use Wikimedia\Rdbms\Database;
+use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\IMaintainableDatabase;
 use Wikimedia\Rdbms\LBFactory;
 use Wikimedia\Rdbms\LBFactorySimple;
 use Wikimedia\Rdbms\LBFactoryMulti;
@@ -456,7 +459,7 @@ class LBFactoryTest extends MediaWikiTestCase {
                );
                unset( $db );
 
-               /** @var Database $db */
+               /** @var IMaintainableDatabase $db */
                $db = $lb->getConnection( DB_MASTER, [], '' );
 
                $this->assertEquals(
@@ -531,7 +534,7 @@ class LBFactoryTest extends MediaWikiTestCase {
                        ]
                );
                $lb = $factory->getMainLB();
-               /** @var Database $db */
+               /** @var IMaintainableDatabase $db */
                $db = $lb->getConnection( DB_MASTER, [], '' );
 
                $this->assertEquals( '', $db->getDomainID(), "Null domain used" );
@@ -592,7 +595,7 @@ class LBFactoryTest extends MediaWikiTestCase {
                        ]
                );
                $lb = $factory->getMainLB();
-               /** @var Database $db */
+               /** @var IDatabase $db */
                $db = $lb->getConnection( DB_MASTER, [], '' );
 
                if ( $db->getType() === 'sqlite' ) {
index c760d02..47cdb15 100644 (file)
@@ -7,7 +7,7 @@ class CustomDifferenceEngine extends DifferenceEngine {
        }
 
        public function generateContentDiffBody( Content $old, Content $new ) {
-               return $old->getNativeData() . '|' . $new->getNativeData();
+               return $old->getText() . '|' . $new->getText();
        }
 
        public function showDiffStyle() {
index 892bdcf..2b81222 100644 (file)
@@ -33,7 +33,7 @@ class ImportTest extends MediaWikiLangTestCase {
                $title = Title::newFromText( $title );
                $this->assertTrue( $title->exists() );
 
-               $this->assertEquals( WikiPage::factory( $title )->getContent()->getNativeData(), $text );
+               $this->assertEquals( WikiPage::factory( $title )->getContent()->getText(), $text );
        }
 
        public function getUnknownTagsXML() {
index 369b2bf..d9b7e18 100644 (file)
@@ -30,9 +30,7 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
                parent::setUp();
 
                $this->cache = new WANObjectCache( [
-                       'cache' => new HashBagOStuff(),
-                       'pool' => 'testcache-hash',
-                       'relayer' => new EventRelayerNull( [] )
+                       'cache' => new HashBagOStuff()
                ] );
 
                $wanCache = TestingAccessWrapper::newFromObject( $this->cache );
@@ -440,8 +438,7 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
                };
 
                $cache = new NearExpiringWANObjectCache( [
-                       'cache'        => new HashBagOStuff(),
-                       'pool'         => 'empty',
+                       'cache'        => new HashBagOStuff()
                ] );
 
                $wasSet = 0;
@@ -468,7 +465,6 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
                };
                $cache = new NearExpiringWANObjectCache( [
                        'cache'        => new HashBagOStuff(),
-                       'pool'         => 'empty',
                        'asyncHandler' => $asyncHandler
                ] );
 
@@ -500,8 +496,7 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
                $this->assertEquals( $value, $v, "New value stored" );
 
                $cache = new PopularityRefreshingWANObjectCache( [
-                       'cache'   => new HashBagOStuff(),
-                       'pool'    => 'empty'
+                       'cache'   => new HashBagOStuff()
                ] );
 
                $mockWallClock = $priorTime;
@@ -694,7 +689,7 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
                        WANObjectCache::VALUE_KEY_PREFIX . 'k1' => 'val-id1',
                        WANObjectCache::VALUE_KEY_PREFIX . 'k2' => 'val-id2'
                ] );
-               $wanCache = new WANObjectCache( [ 'cache' => $localBag, 'pool' => 'testcache-hash' ] );
+               $wanCache = new WANObjectCache( [ 'cache' => $localBag ] );
 
                // Warm the process cache
                $keyedIds = new ArrayIterator( [ 'k1' => 'id1', 'k2' => 'id2' ] );
@@ -1504,9 +1499,7 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
                        ->willReturn( false );
 
                $wanCache = new WANObjectCache( [
-                       'cache' => $backend,
-                       'pool' => 'testcache-hash',
-                       'relayer' => new EventRelayerNull( [] )
+                       'cache' => $backend
                ] );
 
                $isStale = null;
@@ -1556,8 +1549,6 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
                $localBag->expects( $this->never() )->method( 'delete' );
                $wanCache = new WANObjectCache( [
                        'cache' => $localBag,
-                       'pool' => 'testcache-hash',
-                       'relayer' => new EventRelayerNull( [] ),
                        'mcrouterAware' => true,
                        'region' => 'pmtpa',
                        'cluster' => 'mw-wan'
@@ -1582,8 +1573,6 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
                        ->setMethods( [ 'set' ] )->getMock();
                $wanCache = new WANObjectCache( [
                        'cache' => $localBag,
-                       'pool' => 'testcache-hash',
-                       'relayer' => new EventRelayerNull( [] ),
                        'mcrouterAware' => true,
                        'region' => 'pmtpa',
                        'cluster' => 'mw-wan'
@@ -1600,8 +1589,6 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
                        ->setMethods( [ 'set' ] )->getMock();
                $wanCache = new WANObjectCache( [
                        'cache' => $localBag,
-                       'pool' => 'testcache-hash',
-                       'relayer' => new EventRelayerNull( [] ),
                        'mcrouterAware' => true,
                        'region' => 'pmtpa',
                        'cluster' => 'mw-wan'
@@ -1618,8 +1605,6 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
                        ->setMethods( [ 'delete' ] )->getMock();
                $wanCache = new WANObjectCache( [
                        'cache' => $localBag,
-                       'pool' => 'testcache-hash',
-                       'relayer' => new EventRelayerNull( [] ),
                        'mcrouterAware' => true,
                        'region' => 'pmtpa',
                        'cluster' => 'mw-wan'
@@ -1633,7 +1618,7 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
 
        public function testEpoch() {
                $bag = new HashBagOStuff();
-               $cache = new WANObjectCache( [ 'cache' => $bag, 'pool' => 'testcache-hash' ] );
+               $cache = new WANObjectCache( [ 'cache' => $bag ] );
                $key = $cache->makeGlobalKey( 'The whole of the Law' );
 
                $now = microtime( true );
@@ -1649,7 +1634,6 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
 
                $cache = new WANObjectCache( [
                        'cache' => $bag,
-                       'pool' => 'testcache-hash',
                        'epoch' => $now - 3600
                ] );
                $cache->setMockTime( $now );
@@ -1660,7 +1644,6 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
                $now += 30;
                $cache = new WANObjectCache( [
                        'cache' => $bag,
-                       'pool' => 'testcache-hash',
                        'epoch' => $now + 3600
                ] );
                $cache->setMockTime( $now );
@@ -1746,9 +1729,7 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
                        ->willReturn( 'special' );
 
                $wanCache = new WANObjectCache( [
-                       'cache' => $backend,
-                       'pool' => 'testcache-hash',
-                       'relayer' => new EventRelayerNull( [] )
+                       'cache' => $backend
                ] );
 
                $this->assertSame( 'special', $wanCache->makeKey( 'a', 'b' ) );
@@ -1764,9 +1745,7 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
                        ->willReturn( 'special' );
 
                $wanCache = new WANObjectCache( [
-                       'cache' => $backend,
-                       'pool' => 'testcache-hash',
-                       'relayer' => new EventRelayerNull( [] )
+                       'cache' => $backend
                ] );
 
                $this->assertSame( 'special', $wanCache->makeGlobalKey( 'a', 'b' ) );
@@ -1787,9 +1766,7 @@ class WANObjectCacheTest extends PHPUnit\Framework\TestCase {
         */
        public function testStatsKeyClass( $key, $class ) {
                $wanCache = TestingAccessWrapper::newFromObject( new WANObjectCache( [
-                       'cache' => new HashBagOStuff,
-                       'pool' => 'testcache-hash',
-                       'relayer' => new EventRelayerNull( [] )
+                       'cache' => new HashBagOStuff
                ] ) );
 
                $this->assertEquals( $class, $wanCache->determineKeyClass( $key ) );
index c0a3e90..630df54 100644 (file)
@@ -1,4 +1,7 @@
 <?php
+
+use MediaWiki\Shell\Shell;
+
 /**
  * Tests related to JPEG chroma subsampling via $wgJpegPixelFormat setting.
  *
@@ -46,21 +49,21 @@ class JpegPixelFormatTest extends MediaWikiMediaTestCase {
                $path = $thumb->getLocalCopyPath();
                $this->assertTrue( is_string( $path ), "path returned for JPEG thumbnail for $fmtStr" );
 
-               $cmd = [
-                       'identify',
+               $result = Shell::command( 'identify',
                        '-format',
                        '%[jpeg:sampling-factor]',
                        $path
-               ];
-               $retval = null;
-               $output = wfShellExec( $cmd, $retval );
-               $this->assertTrue( $retval === 0, "ImageMagick's identify command should return success" );
+               )->execute();
+               $this->assertEquals( 0,
+                       $result->getExitCode(),
+                       "ImageMagick's identify command should return success"
+               );
 
                $expected = $samplingFactor;
-               $actual = trim( $output );
+               $actual = trim( $result->getStdout() );
                $this->assertEquals(
                        $expected,
-                       trim( $output ),
+                       $actual,
                        "IM identify expects JPEG chroma subsampling \"$expected\" for $fmtStr"
                );
        }
index 466e209..524fbdc 100644 (file)
@@ -190,8 +190,7 @@ class ArticleViewTest extends MediaWikiTestCase {
                        ->willReturn( new ParserOutput( 'Structured Output' ) );
                $content->method( 'getModel' )
                        ->willReturn( 'NotText' );
-               $content->method( 'getNativeData' )
-                       ->willReturn( [ (object)[ 'x' => 'stuff' ] ] );
+               $content->expects( $this->never() )->method( 'getNativeData' );
                $content->method( 'copy' )
                        ->willReturn( $content );
 
@@ -447,7 +446,7 @@ class ArticleViewTest extends MediaWikiTestCase {
                        'ArticleContentViewCustom',
                        function ( Content $content, Title $title, OutputPage $output ) use ( $page ) {
                                $this->assertSame( $page->getTitle(), $title, '$title' );
-                               $this->assertSame( 'Test A', $content->getNativeData(), '$content' );
+                               $this->assertSame( 'Test A', $content->getText(), '$content' );
 
                                $output->addHTML( 'Hook Text' );
                                return false;
@@ -483,9 +482,8 @@ class ArticleViewTest extends MediaWikiTestCase {
                        'ArticleRevisionViewCustom',
                        function ( RevisionRecord $rev, Title $title, $oldid, OutputPage $output ) use ( $page ) {
                                $content = $rev->getContent( SlotRecord::MAIN );
-
                                $this->assertSame( $page->getTitle(), $title, '$title' );
-                               $this->assertSame( 'Test A', $content->getNativeData(), '$content' );
+                               $this->assertSame( 'Test A', $content->getText(), '$content' );
 
                                $output->addHTML( 'Hook Text' );
                                return false;
@@ -517,7 +515,7 @@ class ArticleViewTest extends MediaWikiTestCase {
                        'ArticleAfterFetchContentObject',
                        function ( Article &$articlePage, Content &$content ) use ( $page, $article ) {
                                $this->assertSame( $article, $articlePage, '$articlePage' );
-                               $this->assertSame( 'Test A', $content->getNativeData(), '$content' );
+                               $this->assertSame( 'Test A', $content->getText(), '$content' );
 
                                $content = new WikitextContent( 'Hook Text' );
                        }
index 933e47d..e4134b8 100644 (file)
@@ -737,7 +737,7 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase {
                $rev = $page->getRevision();
 
                $this->assertEquals( $page->getLatest(), $rev->getId() );
-               $this->assertEquals( "some text", $rev->getContent()->getNativeData() );
+               $this->assertEquals( "some text", $rev->getContent()->getText() );
        }
 
        /**
@@ -753,7 +753,7 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase {
                $this->createPage( $page, "some text", CONTENT_MODEL_WIKITEXT );
 
                $content = $page->getContent();
-               $this->assertEquals( "some text", $content->getNativeData() );
+               $this->assertEquals( "some text", $content->getText() );
        }
 
        /**
@@ -1111,7 +1111,7 @@ more stuff
                $content = ContentHandler::makeContent( $with, $page->getTitle(), $page->getContentModel() );
                $c = $page->replaceSectionContent( $section, $content, $sectionTitle );
 
-               $this->assertEquals( $expected, is_null( $c ) ? null : trim( $c->getNativeData() ) );
+               $this->assertEquals( $expected, is_null( $c ) ? null : trim( $c->getText() ) );
        }
 
        /**
@@ -1127,7 +1127,7 @@ more stuff
                $content = ContentHandler::makeContent( $with, $page->getTitle(), $page->getContentModel() );
                $c = $page->replaceSectionAtRev( $section, $content, $sectionTitle, $baseRevId );
 
-               $this->assertEquals( $expected, is_null( $c ) ? null : trim( $c->getNativeData() ) );
+               $this->assertEquals( $expected, is_null( $c ) ? null : trim( $c->getText() ) );
        }
 
        /**
@@ -1242,7 +1242,7 @@ more stuff
                $page = new WikiPage( $page->getTitle() );
                $this->assertEquals( $rev2->getSha1(), $page->getRevision()->getSha1(),
                        "rollback did not revert to the correct revision" );
-               $this->assertEquals( "one\n\ntwo", $page->getContent()->getNativeData() );
+               $this->assertEquals( "one\n\ntwo", $page->getContent()->getText() );
 
                $rc = MediaWikiServices::getInstance()->getRevisionStore()->getRecentChange(
                        $page->getRevision()->getRevisionRecord()
@@ -1332,7 +1332,7 @@ more stuff
                $page = new WikiPage( $page->getTitle() );
                $this->assertEquals( $rev1->getSha1(), $page->getRevision()->getSha1(),
                        "rollback did not revert to the correct revision" );
-               $this->assertEquals( "one", $page->getContent()->getNativeData() );
+               $this->assertEquals( "one", $page->getContent()->getText() );
        }
 
        /**
@@ -1817,8 +1817,8 @@ more stuff
                $fetchedPage = WikiPage::newFromID( $createdPage->getId() );
                $this->assertSame( $createdPage->getId(), $fetchedPage->getId() );
                $this->assertEquals(
-                       $createdPage->getContent()->getNativeData(),
-                       $fetchedPage->getContent()->getNativeData()
+                       $createdPage->getContent()->getText(),
+                       $fetchedPage->getContent()->getText()
                );
        }
 
index 58e6d7d..70bf39f 100644 (file)
@@ -9,6 +9,7 @@ use Wikimedia\TestingAccessWrapper;
 class MessageBlobStoreTest extends PHPUnit\Framework\TestCase {
 
        use MediaWikiCoversValidator;
+       use PHPUnit4And6Compat;
 
        protected function setUp() {
                parent::setUp();
@@ -37,7 +38,7 @@ class MessageBlobStoreTest extends PHPUnit\Framework\TestCase {
 
        protected function makeBlobStore( $methods = null, $rl = null ) {
                $blobStore = $this->getMockBuilder( MessageBlobStore::class )
-                       ->setConstructorArgs( [ $rl ] )
+                       ->setConstructorArgs( [ $rl ?? $this->createMock( ResourceLoader::class ) ] )
                        ->setMethods( $methods )
                        ->getMock();
 
index 0643e0e..0b3adc0 100644 (file)
@@ -121,6 +121,8 @@ class SpecialBlockTest extends SpecialPageTestBase {
                        new PageRestriction( 0, $pageSaturn->getId() ),
                        new PageRestriction( 0, $pageMars->getId() ),
                        new NamespaceRestriction( 0, NS_TALK ),
+                       // Deleted page.
+                       new PageRestriction( 0, 999999 ),
                ] );
 
                $block->insert();
@@ -399,6 +401,9 @@ class SpecialBlockTest extends SpecialPageTestBase {
                $expectedResult,
                $reason
        ) {
+               $this->setMwGlobals( [
+                       'wgBlockDisablesLogin' => false,
+               ] );
                $this->setGroupPermissions( 'sysop', 'unblockself', true );
                $this->setGroupPermissions( 'user', 'block', true );
                // Getting errors about creating users in db in provider.
index 7d37881..1810ef8 100644 (file)
@@ -140,7 +140,9 @@ class BlockListPagerTest extends MediaWikiTestCase {
 
                $restrictions = [
                        ( new PageRestriction( 0, $pageId ) )->setTitle( $title ),
-                       new NamespaceRestriction( 0, NS_MAIN )
+                       new NamespaceRestriction( 0, NS_MAIN ),
+                       // Deleted page.
+                       new PageRestriction( 0, 999999 ),
                ];
 
                $wrappedPager = TestingAccessWrapper::newFromObject( $pager );
index 6bc7c44..e3cac83 100644 (file)
@@ -104,7 +104,7 @@ class DummyContentForTesting extends AbstractContent {
        public function getParserOutput( Title $title, $revId = null,
                ParserOptions $options = null, $generateHtml = true
        ) {
-               return new ParserOutput( $this->getNativeData() );
+               return new ParserOutput( $this->data );
        }
 
        /**
@@ -118,6 +118,6 @@ class DummyContentForTesting extends AbstractContent {
         */
        protected function fillParserOutput( Title $title, $revId,
                        ParserOptions $options, $generateHtml, ParserOutput &$output ) {
-               $output = new ParserOutput( $this->getNativeData() );
+               $output = new ParserOutput( $this->data );
        }
 }
index e65f522..bdfa8d0 100644 (file)
@@ -102,7 +102,7 @@ class DummyNonTextContent extends AbstractContent {
        public function getParserOutput( Title $title, $revId = null,
                ParserOptions $options = null, $generateHtml = true
        ) {
-               return new ParserOutput( $this->getNativeData() );
+               return new ParserOutput( $this->serialize() );
        }
 
        /**
@@ -116,6 +116,6 @@ class DummyNonTextContent extends AbstractContent {
         */
        protected function fillParserOutput( Title $title, $revId,
                        ParserOptions $options, $generateHtml, ParserOutput &$output ) {
-               $output = new ParserOutput( $this->getNativeData() );
+               $output = new ParserOutput( $this->serialize() );
        }
 }
index 8a08181..776dee1 100644 (file)
@@ -1,8 +1,11 @@
 <?php
+
+use MediaWiki\MediaWikiServices;
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * Sanity checks for making sure registered resources are sane.
  *
- * @file
  * @author Antoine Musso
  * @author Niklas Laxström
  * @author Santhosh Thottingal
@@ -171,8 +174,8 @@ class ResourcesTest extends MediaWikiTestCase {
                $org_wgEnableJavaScriptTest = $wgEnableJavaScriptTest;
                $wgEnableJavaScriptTest = true;
 
-               // Initialize ResourceLoader
-               $rl = new ResourceLoader();
+               // Get main ResourceLoader
+               $rl = MediaWikiServices::getInstance()->getResourceLoader();
 
                $modules = [];
 
@@ -243,9 +246,6 @@ class ResourcesTest extends MediaWikiTestCase {
        /**
         * Get all resource files from modules that are an instance of
         * ResourceLoaderFileModule (or one of its subclasses).
-        *
-        * Since the raw data is stored in protected properties, we have to
-        * overrride this through ReflectionObject methods.
         */
        public static function provideResourceFiles() {
                $data = self::getAllModules();
@@ -273,14 +273,12 @@ class ResourcesTest extends MediaWikiTestCase {
                                continue;
                        }
 
-                       $reflectedModule = new ReflectionObject( $module );
+                       $moduleProxy = TestingAccessWrapper::newFromObject( $module );
 
                        $files = [];
 
                        foreach ( $filePathProps['lists'] as $propName ) {
-                               $property = $reflectedModule->getProperty( $propName );
-                               $property->setAccessible( true );
-                               $list = $property->getValue( $module );
+                               $list = $moduleProxy->$propName;
                                foreach ( $list as $key => $value ) {
                                        // 'scripts' are numeral arrays.
                                        // 'styles' can be numeral or associative.
@@ -295,9 +293,7 @@ class ResourcesTest extends MediaWikiTestCase {
                        }
 
                        foreach ( $filePathProps['nested-lists'] as $propName ) {
-                               $property = $reflectedModule->getProperty( $propName );
-                               $property->setAccessible( true );
-                               $lists = $property->getValue( $module );
+                               $lists = $moduleProxy->$propName;
                                foreach ( $lists as $list ) {
                                        foreach ( $list as $key => $value ) {
                                                // We need the same filter as for 'lists',
@@ -311,29 +307,23 @@ class ResourcesTest extends MediaWikiTestCase {
                                }
                        }
 
-                       // Get method for resolving the paths to full paths
-                       $method = $reflectedModule->getMethod( 'getLocalPath' );
-                       $method->setAccessible( true );
-
                        // Populate cases
                        foreach ( $files as $file ) {
                                $cases[] = [
-                                       $method->invoke( $module, $file ),
+                                       $moduleProxy->getLocalPath( $file ),
                                        $moduleName,
                                        ( $file instanceof ResourceLoaderFilePath ? $file->getPath() : $file ),
                                ];
                        }
 
                        // To populate missingLocalFileRefs. Not sure how sane this is inside this test...
-                       $module->readStyleFiles(
+                       $moduleProxy->readStyleFiles(
                                $module->getStyleFiles( $data['context'] ),
                                $module->getFlip( $data['context'] ),
                                $data['context']
                        );
 
-                       $property = $reflectedModule->getProperty( 'missingLocalFileRefs' );
-                       $property->setAccessible( true );
-                       $missingLocalFileRefs = $property->getValue( $module );
+                       $missingLocalFileRefs = $moduleProxy->missingLocalFileRefs;
 
                        foreach ( $missingLocalFileRefs as $file ) {
                                $cases[] = [
index 26a784a..b5bd882 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * @author Sam Smith <samsmith@wikimedia.org>
  */
@@ -7,7 +9,7 @@ class LessTestSuite extends PHPUnit_Framework_TestSuite {
        public function __construct() {
                parent::__construct();
 
-               $resourceLoader = new ResourceLoader();
+               $resourceLoader = MediaWikiServices::getInstance()->getResourceLoader();
 
                foreach ( $resourceLoader->getModuleNames() as $name ) {
                        $module = $resourceLoader->getModule( $name );
index 549deb0..5691a1b 100644 (file)
@@ -1,5 +1,8 @@
 ( function () {
        QUnit.module( 'mediawiki.api.options', QUnit.newMwEnvironment( {
+               config: {
+                       wgUserName: 'Foo'
+               },
                setup: function () {
                        this.server = this.sandbox.useFakeServer();
                        this.server.respondImmediately = true;
                        } )
                );
        } );
+
+       QUnit.test( 'saveOptions (anonymous)', function ( assert ) {
+               var promise, test = this;
+
+               mw.config.set( 'wgUserName', null );
+               promise = new mw.Api().saveOptions( { foo: 'bar' } );
+
+               assert.rejects( promise, /notloggedin/, 'Can not save options while not logged in' );
+
+               return promise
+                       .catch( function () {
+                               return $.Deferred().resolve();
+                       } )
+                       .then( function () {
+                               assert.strictEqual( test.server.requests.length, 0, 'No requests made' );
+                       } );
+       } );
 }() );
index 84e1d4e..fca1f7d 100644 (file)
        } );
 
        QUnit.test( 'wantSignaturesNamespace', function ( assert ) {
-               var namespaces = mw.config.values.wgExtraSignatureNamespaces;
-
-               mw.config.values.wgExtraSignatureNamespaces = [];
+               mw.config.set( 'wgExtraSignatureNamespaces', [] );
                assert.strictEqual( mw.Title.wantSignaturesNamespace( 0 ), false, 'Main namespace has no signatures' );
                assert.strictEqual( mw.Title.wantSignaturesNamespace( 1 ), true, 'Talk namespace has signatures' );
                assert.strictEqual( mw.Title.wantSignaturesNamespace( 2 ), false, 'NS2 has no signatures' );
                assert.strictEqual( mw.Title.wantSignaturesNamespace( 3 ), true, 'NS3 has signatures' );
 
-               mw.config.values.wgExtraSignatureNamespaces = [ 0 ];
+               mw.config.set( 'wgExtraSignatureNamespaces', [ 0 ] );
                assert.strictEqual( mw.Title.wantSignaturesNamespace( 0 ), true, 'Main namespace has signatures when explicitly defined' );
-
-               // Restore
-               mw.config.values.wgExtraSignatureNamespaces = namespaces;
        } );
 
        QUnit.test( 'Throw error on invalid title', function ( assert ) {