Merge "EnhancedChangesList: Load style module via addModuleStyles()"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 14 Feb 2019 13:24:55 +0000 (13:24 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 14 Feb 2019 13:24:55 +0000 (13:24 +0000)
54 files changed:
RELEASE-NOTES-1.33
composer.json
docs/extension.schema.v2.json
includes/CommentStoreComment.php
includes/Defines.php
includes/api/ApiQueryBlocks.php
includes/api/i18n/fr.json
includes/api/i18n/pl.json
includes/block/Restriction/PageRestriction.php
includes/changetags/ChangeTags.php
includes/installer/i18n/ia.json
includes/libs/objectcache/WANObjectCache.php
includes/libs/rdbms/loadbalancer/LoadBalancer.php
includes/resourceloader/ResourceLoaderModule.php
includes/shell/Command.php
includes/specialpage/ChangesListSpecialPage.php
includes/specials/SpecialBlock.php
includes/specials/SpecialWatchlist.php
includes/specials/pagers/BlockListPager.php
includes/specials/pagers/ProtectedTitlesPager.php
languages/i18n/bn.json
languages/i18n/bqi.json
languages/i18n/diq.json
languages/i18n/gl.json
languages/i18n/id.json
languages/i18n/io.json
languages/i18n/it.json
languages/i18n/lrc.json
languages/i18n/mk.json
languages/i18n/my.json
languages/i18n/myv.json
languages/i18n/nb.json
languages/i18n/nn.json
languages/i18n/ru.json
languages/i18n/sh.json
languages/i18n/th.json
resources/Resources.php
resources/src/mediawiki.rcfilters/Controller.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/startup/mediawiki.js
tests/phpunit/data/registration/good.json
tests/phpunit/includes/CommentStoreCommentTest.php [new file with mode: 0644]
tests/phpunit/includes/CommentStoreTest.php
tests/phpunit/includes/api/ApiQueryBlocksTest.php
tests/phpunit/includes/block/Restriction/PageRestrictionTest.php
tests/phpunit/includes/db/LBFactoryTest.php
tests/phpunit/includes/specials/SpecialBlockTest.php
tests/phpunit/includes/specials/pagers/BlockListPagerTest.php

index 891f0c7..759f180 100644 (file)
@@ -61,9 +61,9 @@ production.
 ==== 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.
@@ -72,6 +72,7 @@ production.
 * 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 ====
 
index 73feadd..87ba6a1 100644 (file)
                "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": {
index 15a1590..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",
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 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 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 42e5a8b..0516448 100644 (file)
        "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-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.",
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 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 6ebe800..a1cf468 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 ) {
index 781e4d2..44f2aac 100644 (file)
@@ -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!",
index 88f87f8..b0f311f 100644 (file)
@@ -1264,21 +1264,26 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
                        }
                }
 
-               // A deleted key with a negative TTL left must be tombstoned
+               // Only a tombstoned key yields no value yet has a (negative) "current time left"
                $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;
+               // Decide if only one thread should handle regeneration at a time
+               if ( $isTombstone ) {
+                       // 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. In either case, reduce regeneration load during this time by
+                       // using the INTERIM value key with a small TTL.
+                       $useMutex = true;
+               } else {
+                       $useMutex =
+                               // 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 renegeration taking too long.
+                               ( $busyValue !== null && $value === false );
                }
-               // 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;
                if ( $useMutex ) {
@@ -1325,17 +1330,17 @@ 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
+               // so use a special INTERIM key to pass the new value among threads.
+               if ( $isTombstone && $valueIsCacheable ) {
+                       $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 );
                }
 
-               // Save the value unless a mutex-winning thread is already expected to do that
-               if ( $valueIsCacheable && ( !$useMutex || $lockAcquired ) ) {
+               // Save the value unless a lock-winning thread is already expected to do that
+               if ( $valueIsCacheable && !$isTombstone && ( !$useMutex || $lockAcquired ) ) {
                        $setOpts['lockTSE'] = $lockTSE;
                        $setOpts['staleTTL'] = $staleTTL;
                        // Use best known "since" timestamp if not provided
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 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..ea1cf59 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,35 +823,26 @@ 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 );
@@ -863,10 +858,6 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                */
                                $tagHitCounts = array_merge( $explicitlyDefinedTags, $softwareActivatedTags );
 
-                               // HACK work around ChangeTags::truncateTagDescription() requiring a RequestContext
-                               $fakeContext = new RequestContext;
-                               $fakeContext->setLanguage( Language::factory( $context->getLanguage() ) );
-
                                // Build the list and data
                                $result = [];
                                foreach ( $tagHitCounts as $tagName => $hits ) {
@@ -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..a6fd55e 100644 (file)
@@ -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 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 8fc586b..69dce53 100644 (file)
@@ -262,11 +262,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 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 a06994f..fd356d7 100644 (file)
        "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 18890db..ed3f91f 100644 (file)
        "userlogin-resetpassword-link": "رازیناْ گوڤٱرتنتۊ ز ڤیرتۊن رٱهڌاْ؟",
        "userlogin-helplink2": "هومیاری کردن سی ڤامیٛن ٱڤوڌن",
        "userlogin-loggedin": "ایسا ایساْ چی {{GENDER:$1|$1}} ٱڤۊڌین ڤامیٛن. فورم داْڤۊنی ناْ ڤٱنین ڤا کار و چی یٱ کاریار دیٱ بیائین ڤا میٛن",
+       "userlogin-reauth": "ایسا ڤا ز نۉ بیائین ڤامیٛن سی یو کاْ دیار ڤابۊ ایسا {{GENDER:$1|$1}} هڌین.",
        "userlogin-createanother": "یٱ هساو کاریاری دیٱ راسد کونین",
        "createacct-emailrequired": "تیرنشوݩ ٱنجومانامٱ",
        "createacct-emailoptional": "تیرنشوݩ ٱنجومانامٱ",
        "createacct-error": "خٱتا راس کردن هساو کاریاری",
        "createaccounterror": "نیبۊ هساو کاریاری راسد کونین:$1",
        "nocookiesnew": "هساو کاریاری راست ڤابی، ڤٱلی ایسا هاْنی نٱڤوڌیناْ ڤامیٛن.{{SITENAME}} کۊکیا ناْ سی ڤامیٛن ٱڤوڌن ناْ کاریارٱل اْڤٱناْ ڤا کار.\nکۊکیا ایسا ناکونشتگٱر ڤابیڌناْ.\nلوتف کونین کونشتگٱرسون کونین، اوسو ڤا یٱ نوم کاریاری و رازیناْ گوڌٱشتن دیٱ بیائین ڤامیٛن.",
+       "nocookieslogin": "{{SITENAME}} کۊکیٱل سی ڤامیٛن ٱڤوڌن ڤٱنس ڤاکار.\nکۊکیٱل ایسا ناکونشتگٱر ڤابیڌناْ.\nلوتف کونین ڤنوناْ کونشتگٱر کونین و ز نۉ تلاش کونین.",
        "nocookiesfornew": "هساو کاریاری راسد نٱڤابی، سی یو ناْ کاْ ایما نٱتریم سرچشماْساْ پوشت راست کاری کونیم.\nخاتر جٱم بۊین کاْ کۊکیٱل کونشتکار ڤابیناْ، ای بٱلگاْ ناْ ز نۉ سوڤار کونین و یٱ کاْرٱت دیٱ تلاش کونین.",
+       "noname": "ایسا یٱ نوم کاریاری خۊ تیار نٱکردیناْ.",
        "loginsuccesstitle": "ایسا ٱڤوڌین ڤامیٛن",
        "loginsuccess": "'''ایسا ٱڤوڌین ڤامیٛن {{SITENAME}} چی \"$1\".'''",
        "nosuchuser": "چونو کاریاری ڤا نوم \"$1\" نیڌس.\nنوم کاریاری ب هٱرف کۊچیر و گٱپ هٱساساْ , یا [[Special:CreateAccount|یٱ هساو کاریاری دیاْ راسد کونین]].",
        "passwordtooshort": "رازیناْ گوڌاْشدن ایسا ڤا هٱدٱقل {{PLURAL:$1|1 کاراکتر|$1 کاراکترٱل}} داشداْ بۊ.",
        "passwordtoolong": "رازیناْ گوڌاْشدن ایسا نٱڤا  بیشتر ز {{PLURAL:$1|1 کاراکتر|$1 کاراکترٱل}} داشداْ بۊ.",
        "password-name-match": "رازیناْ گوڌٱشتنتوݩ ڤا نوم کاریاری فٱرخ داشداْ بۊ",
+       "password-login-forbidden": "ایسا نٱترین ای نوم کاریاری و رازیناْ گوڌٱشتن ناْ ڤٱنین ڤا کار.",
        "mailmypassword": "ز نۉ داڌن رازیناْ گوڌٱشتن",
        "passwordremindertitle": "رازیناْ گوڌٱشتن موڤٱقٱتی سی {{SITENAME}}",
        "passwordremindertext": "یٱ نفر (گاشا خوتوݩ، ز تیرنشوݩ آی پی $1) یٱ رازیناْ گوڌٱشتن تازاْ خاسداْ سی  {{SITENAME}} ($4). یٱ رازیناْ گوڌاْشتن موڤٱقٱتی سی کاریار\n\"$2\" راسد ڤابیڌاْ و میٛن\"$3\" لاهاڌاْ ڤابیڌاْ. ٱ ب دلتوݩ بۊ, ڤا رۉین میٛن ساموناْ و یٱ رازیناْ گوڌاْشتن تازاْ گولاْڤورچین کونین.\n\nٱر هو کٱسی کاْ چونو چی خاسداْ بۊ کاْس دیٱری بۊ, یا ٱر ایسا رازیناْ گوڌٱشتنتوݩ ب ڤیرتوݩ بۊ و سی یٱ گات تیلدار خاین هوناْ آلشد کونین، ایسا ڤا ای پاٛیغوم ناْ باْنین کنار و هٱمچونو هٱمو رازیناْ گوڌٱشتن دیندایی خوتوناْ ڤٱنین ڤا کار.",
        "noemailcreate": "ایسا ڤا یٱ تیرنشوݩ جادیار داشداْ بۊین",
        "passwordsent": "یٱ رازیناْ گوڌٱشتن باْسی ڤابی ب تیرنشوݩ ٱنجوماناماْیی کاْ سٱڤت کردیناْ \"$1\".\nخاهشت اْکونیم نیا گرهڌنس بیائین ڤامیٛن.",
        "eauthentsent": "یٱ ٱنجوماناماْ پوشت راست کردنی سی یٱ تیرنشوݩ ڤیجاْ بیٛسی ڤابیڌاْ.\nنیا یو کاْ یٱ ٱنجوماناماْ دیٱر سی هساوتوݩ بیٛسی ڤابۊ، ایسا ڤا نیا رٱدیارکونی ناْ ز ٱنجوماناماْ بگرین، سی یو کاْ هساو ایسا ز راستی پوشت راست ڤابۊ.",
+       "throttled-mailpassword": "یٱ رازیناْ گوڌٱشتن ز نۉ سیتو بیٛسی ڤابیڌاْ، میٛن {{PLURAL:$1|ساعت|$1 ساعتٱل}}.\nسی نیاگری ز ٱزیٱت ڤابیڌن، فٱقٱت یٱ رازیناْ گوڌٱشتن ز نۉ بیٛسی ڤابیڌاْ سی ٱنجوماناماْتوݩ میٛن {{PLURAL:$1|ساعت|$1 ساعتٱل}} .",
        "mailerror": "خٱتا میٛن باْسی کردن ٱنجوماناماْ:$1",
        "emailauthenticated": "تیرنشوݩ ٱنجوماناماْتوݩ میٛن $2 سی $3 پوشت راسد کاری ڤابی.",
+       "emailnotauthenticated": "تیرنشوݩ ٱنجوماناماْتوݩ هٱنی پوشت راسدکاری نٱڤٱبیڌاْ.\nهٱنی ٱنجوماناماْیی سی چیٱلی کاْ نیاتونن بیٛسی نٱڤابیڌاْ.",
        "emailconfirmlink": "تیرنشوݩ ٱنجوماناماْ خوتوناْ پوشت راسدکاری کونین.",
        "cannotchangeemail": "نٱترین تیرنشوݩ ٱنجوماناماْ هساو میٛن ای ڤیکی ناْ آلشدکاری کونین",
        "emaildisabled": "ای دیارگٱ نٱتٱراْ سیتوݩ ٱنجوماناماْ بفرشناْ",
        "accountcreated": "هساو راسد ڤابی",
-       "createaccount-title": "هساڤ سي {{SITENAME}} راسد ڤابي",
+       "accountcreatedtext": "هساو کاریاری سی  [[{{ns:کاریار}}:$1|$1]] ([[{{ns:چٱک چناْ کاریار}}:$1|چٱک چناْ]]) راسد ڤابیڌاْ.",
+       "createaccount-title": "هساو سی {{SITENAME}} راسد ڤابی",
+       "login-throttled": "ایسا تا ایساْ سی ڤامیٛن ٱڤوڌن غٱلٱڤاْ تلاش کردیناْ.\n$1 لوتف کو یاْتی دٱس ڤاڌار و ز نۉ تلاش کو.",
        "login-abort-generic": "ٱڤوڌن ڤامیٛنتو خراو ڤابی یا نتیجاْ ناشت.",
+       "login-migrated-generic": "هساو کاریاریتوݩ جا ب جا ڤابیڌاْ، و نوم کاریاری ایسا دٱ میٛن ڤیکی نیڌس.",
        "loginlanguagelabel": "زڤون:$1",
        "pt-login": "ڤامین ٱڤوڌن",
        "pt-login-button": "ڤامیٛن ٱڤوڌن",
        "pt-login-continue-button": "پوشت سریٱک بیائین ڤامیٛن",
        "pt-createaccount": "راسد کردن هساو کاریاری",
-       "pt-userlogout": "ز سامۊناْ درٱڤوڌن",
+       "pt-userlogout": "ز ساموناْ درٱڤوڌن",
        "php-mail-error-unknown": "خٱتا نادیار د آلشتگٱر PHP's mail()",
+       "user-mail-no-addy": "سی بیٛسی کردن ٱنجوماناماْ بی یو کاْ یٱ تیرنشوݩ ٱنجوماناماْیی بۊ تلاش ڤابی",
        "changepassword": "آلشد کردن رازیناْ گوڌٱشتن",
        "resetpass_announce": "سی تٱموم کردن ڤامیٛن ٱڤوڌن، ایسا ڤا یٱ رازیناْ گوڌٱشتن تازاْ ناْ بزنین.",
        "resetpass_header": "رازیناْ گوڌاْشتن هساو ناْ آلشد کونین",
        "botpasswords-no-central-id": "سی ڤاکار ڤٱندن رازیناْیٱل گوڌٱشتن بوت، ایسا ڤا بیائین ڤامیٛن سی یو کاْ هساو کاریاریتو یٱکاگر ڤابۊ.",
        "botpasswords-existing": "رازیناْ گوڌٱشتن سی بوتٱل",
        "botpasswords-createnew": "یٱ زاریناْ گوڌٱشتن تازاْ سی بوت راسد کونین.",
+       "botpasswords-editexisting": "رازیناْ گوڌٱشتن یٱ بوت ناْ کاْ هڌس آلشدکاری کو.",
        "botpasswords-label-needsreset": "(ڤا ز نۉ رازیناْ گوڌٱشتن باْنین)",
        "botpasswords-label-appid": "نوم بوت:",
        "botpasswords-label-create": "راس كردن",
        "resetpass-submit-loggedin": "آلشد کردن رازیناْ گوڌٱشتن",
        "resetpass-submit-cancel": "ٱنجومشیڤ کردن",
        "resetpass-temp-password": "رازیناْ گوڌٱشتن موڤٱقٱت:",
+       "resetpass-expired": "گات رازیناْ گوڌٱشتن ایسا خلاس ڤابیڌاْ. لوتف کونین یٱ رازیناْ گوڌٱشتن تازاْ سی ڤامیٛن ٱڤوڌن بیٛنین.",
        "passwordreset": "ز نۉ داڌن رازیناْ گوڌٱشتن",
        "passwordreset-username": "نوم کاریاری",
        "passwordreset-domain": "پۊشگر",
        "passwordreset-email": "تیرنشوݩ ٱنجومانامٱ",
        "passwordreset-emailtitle": "جوزيات هساو میٛن {{SITENAME}}",
+       "passwordreset-emailelement": "نوم کاریاری: \n$1\n\nرازیناْ گوڌٱشتن موڤٱقٱتی: \n$2",
        "passwordreset-invalidemail": "تیرنشوݩ ٱنجوماناماْ نادوروسد",
        "changeemail": "آلشد کردن یا ڤورداشتن تیرنشوݩ ٱنجوماناماْ",
        "changeemail-oldemail": "تیرنشوݩ ٱنجوماناماْ ایسنی:",
        "changeemail-none": "(هیش كوم)",
        "changeemail-password": "رازیناْ گوڌٱشتن {{SITENAME}} ایسا:",
        "changeemail-submit": "آلشد کردن ٱنجوماناماْ",
+       "changeemail-nochange": "لوتف کونین یٱ تیرنشوݩ ٱنجوماناماْ تازاْ بزنین.",
        "resettokens": "ز نۉ کردن نشوناْیٱل",
        "resettokens-text": "اؽسا تٱرین شناساننداٛیٱلؽ کاْ اجازاٛ دٱسرٱسی ڤاْ قٱرڌؽ داداٛیٱل سیخؤاٛی مؽنڌار ڤا هساوتۊن ناْ اْڌاْ دوکرتشناسی کونین.\nؤخڌؽ ڤا ای کارناْ ٱنجوم ڤڌین کاْ تٱساڌوفٱن هونوناْ ڤا کسؽ ڤاْ هومبٱشنی نهاڌین یا کسؽ ڤاْمؽ ڤیڌ ڤاْ هساو اؽسا",
        "resettokens-no-tokens": "هیچ شناسانٱنڌاٛئی سی دوکرتشناسی نؽڌا",
        "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": "ڤامیٛن ٱڤوڌن",
+       "loginreqpagetext": "$1 لوتف کونین بٱلگاْیٱل دیٱر ناْ ساٛیل کونین.",
        "accmailtitle": "رازیناْ گوڌٱشتن باْسی ڤابیڌاْ",
        "newarticle": "(تازاْ)",
        "newarticletext": "ایسا ز دین یٱ هومپاٛیڤٱندی هڌین کاْ نیڌس. سی رٱڤٱندیاری بٱلگاْ شورۊ کونین میٛن ای جٱڤاْ داٛڤۊنی بنڤیسین(سی دۊنسدن بیشدر سئیل [$1]کونین).\nیر ایسا سی اْشتڤاکارش ايچونین، دوگماْ رٱهڌن ڤاپوشد نٱ بپۊرنین.",
        "continue-editing": "رۉ مئن راستاگاْ آلشدکاری",
        "editing": "ب هال و بال آلشدکاری $1",
        "creating": "راسد کردن $1",
-       "editingsection": "ب هال و بال آلشدکاری $1 (بٱرجا)",
+       "editingsection": "ب هال و بال آلشدکاری $1 (بٱئرجا)",
+       "editingcomment": "ب هال و بال آلشدکاری $1 (بٱئرجا)",
+       "editconflict": "ری ب ری کاری میٛن ڤیرایشت:$1",
        "yourtext": "متن ايسا",
        "storedversion": "ڤانیٱری کۊ ڤابیڌاْ",
-       "yourdiff": "فرخ",
+       "yourdiff": "فٱرخ",
        "copyrightwarning": "ب ڤیرتوݩ بۊ کاْ تٱموم هومیاریٱل ایسا   {{SITENAME}} زیرناْخیز «$2» دٱرتیچ اْبوݩ).\n\n(سی دیڌن  جوزئیات بیشتر ز $1 رۉین\n\nٱر نیخاین نڤشداْیٱلوݩ گٱن آلشدکاری نٱڤبۊن و دل ب خایی باْسی ڤابۊن، ایچو باْسی سوݩ نٱکونین.<br />\nهٱنی ٱم ایسا دارین بیما قۉل اْڌین کاْ خوتوݩ یوناْ نڤشدیناْ یا هوناْ ز یٱ سرچشماْ آزاڌ ڤا مالکیت خٱلکمٱند یا چی هو ڤورداشتین ساْ. '''چیا ناْ بی موجٱڤز و بی سلا کوپی رایت باْسی نٱکونین!''''",
        "copyrightwarning2": "ب ڤیرتوݩ بۊ کاْ تٱموم هومیاریٱل ایسا {{SITENAME}} زیرناْخیز «$2» دٱرتیچ اْبوݩ).\n\n(سی دیڌن  جوزئیات بیشتر ز $1 رۉین\n\nٱر نیخاین نڤشداْیٱلوݩ گٱن آلشدکاری نٱڤبۊن و دل ب خایی باْسی ڤابۊن، ایچو باْسی سوݩ نٱکونین.<br />\nهٱنی ٱم ایسا دارین بیما قۉل اْڌین کاْ خوتوݩ یوناْ نڤشدیناْ یا هوناْ ز یٱ سرچشماْ آزاڌ ڤا مالکیت خٱلکمٱند یا چی هو ڤورداشتین ساْ. '''چیا ناْ بی موجٱڤز و بی سلا کوپی رایت باْسی نٱکونین!''''",
        "templatesused": "{{PLURAL:$1|چۊاْ|چۊاْیٱل}} ڤا کار ڤٱسداْ میٛن ای بٱلگاْ:",
        "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-text": "نفشداْ ساڌاْ",
        "content-model-javascript": "جاڤا اْسکریپت",
        "content-json-empty-object": "داسوݩ هالی",
        "content-json-empty-array": "آرایاْ هالی",
+       "template-loop-category": "بٱلگاْیٱلی کاْ خٱتا هٱلقاْ چۊاْ دارن",
        "undo-failure": "سی نڤیڌن سلۊکی ڤا آلشڌکاریٱل مؽنجخائی ای آلشڌکاریناْ نؽڤۊ بؽ هرنڳ کرڌ",
        "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": "دیاری کردن",
+       "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": "دلیل:",
+       "pagehist": "ڤیرگار بٱلگاْ",
+       "deletedhist": "ڤیرگار پاکسا ڤابیڌاْ",
+       "revdelete-reasonotherlist": "دلیل هاْنی",
+       "revdelete-edit-reasonlist": "دلیل پاکسا کردن آلشدکاریٱل",
        "mergehistory-from": "بٱلگاْ سرچشماْ:",
+       "mergehistory-into": "بٱگاْ مٱقسٱڌ:",
+       "mergehistory-submit": "سر یٱک کردن ڤانیاریٱل",
        "mergehistory-reason": "دلیل:",
        "mergelog": "سیائاْ ؤریٱک",
+       "revertmerge": "سٱڤا کردن",
        "history-title": "دوڤارتاْ دیڌن ڤیرگار $1",
        "difference-title": "فٱرخ میٛنجقا ڤاناٛیریا \"$1\"",
+       "difference-multipage": "(فٱخ میٛنجقا بٱلگاْیٱل)",
        "lineno": "خٱت $1:",
        "compareselectedversions": "کنار یٱک ناهاڌن ڤانیٱریٱل گولاْڤورچین ڤابیڌاْ",
        "editundo": "ٱنجومشیڤ کردن",
        "diff-multi-sameuser": "({{PLURAL:$1|یٱ دۊناٛ نوسقاٛ مؽنجخایی|$1 نوسقاٛیٱل مؽنجخایی}} ب دٱسد{{PLURAL:$2|کاریاری ديٱ|$2 کاريارا}} نشۊن دیاری نٱکرداْ)",
        "diff-multi-otherusers": "({{PLURAL:$1|یٱ نوسقاْ میٛنجقایی|$1 نوسقاْیٱل میٛنجایی}} ڤا دٱسد {{PLURAL:$2|کاریاری دیٱ|$2 کاریارٱل}} نشۊن داڌاْ نٱڤابیڌاْ)",
        "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": "(یکی کردن مینۊناْ جانیا)",
        "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": "هيش کوم",
+       "search-external": "پاٛی جۊری ب دٱر",
        "preferences": "چیا دیٱر",
        "mypreferences": "چیا دیٱر",
+       "prefs-edits": "شماراْ آلشدکاریٱل:",
        "prefs-skin": "پۊسداْ",
        "skin-preview": "پيش ساٛیل",
        "prefs-user-pages": "بٱلگاْ کاریار",
        "prefs-editwatchlist": "آلشدکاری ساٛیل بٱرگ",
        "prefs-misc": "شيڤسدن",
        "prefs-resetpass": "آلشد کردن رازیناْ گوڌٱشتن",
+       "prefs-rendering": "شٱک و شیڤات",
        "saveprefs": "کۊ کردن",
+       "prefs-editing": "ب هال و بال ڤیرایشت",
        "searchresultshead": "پاٛی جۊری",
        "stub-threshold-sample-link": "نمۊناْ",
        "stub-threshold-disabled": "ناکونشتگٱر کردن",
        "timezonelegend": "گات راستاگٱ:",
        "localtime": "گات ڤولاتی:",
+       "timezoneuseserverdefault": "ڤیکی پیش فٱرز($1) ڤٱنین ڤا کار",
        "servertime": "گات رسیناْجا:",
+       "guesstimezone": "ڤا جاگٱرد پور اْبۊ",
        "timezoneregion-africa": "اْفرقا",
        "timezoneregion-america": "اْمرکا",
        "timezoneregion-asia": "آسيا",
        "yourrealname": "نوم راستاْکی:",
        "yourlanguage": "زڤون",
        "yournick": "اْمزا تازاْ",
+       "gender-male": "هو(پیا) ڤیکی ناْ آلشد کرد.",
+       "gender-female": "هو(زیناْ) ڤیکی ناْ آلشد کرد.",
        "email": "ٱنجوماناماْ",
        "prefs-help-realname": "نوم راستٱکی دل ب خاییاْ.\nار ایسا هوناْ ڤارڌ کونین، میٛن گات ڤاگٱردونی سی کارٱلتون ڤا نوم خوتون اٛستفاڌاْ بۊ.",
+       "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-tokenwatchlist": "نشوݩ",
+       "prefs-diffs": "فٱرخ",
+       "userrights": "هوقۊق کاریار",
+       "userrights-lookup-user": "یٱ کاریار ناْ گولاْ ڤورچین کونین",
+       "userrights-user-editname": "نوم کاریاریتۊناْ بزنین",
+       "userrights-groupsmember": "ٱندوم:",
+       "userrights-groupsmember-auto": "ٱندوم نادیار:",
        "userrights-reason": "دلیل:",
+       "userrights-expiry": "خلاس ڤابیڌاْ:",
+       "userrights-expiry-othertime": "گات هیٛنی:",
+       "userrights-expiry-options": "1 رۊز:1 رۊز،1 هٱفتاْ:1 هٱفتاْ،1 ما:1 ،ما،3 مایٱل:3 مایٱل،6 مایٱل:6 مایٱل،1 year:1 سال",
+       "group": "جٱرغاْ:",
+       "group-user": "کاریارٱل",
+       "group-autoconfirmed": "کاریارٱل خودپوشت راسد ڤابیڌاْ.",
        "group-bot": "روڤاتٱل",
        "group-sysop": "سٱردیڤۊنکارۊن",
+       "group-bureaucrat": "بوروکراتٱل",
+       "group-all": "(هٱماْ)",
        "group-user-member": "{{GENDER:$1|کاریار}}",
        "group-autoconfirmed-member": "{{GENDER:$1|کاریار خودٱنجومکار}}",
        "group-bot-member": "{{GENDER:$1|بوت}}",
        "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-sendemail": "بیٛسی کردن ٱنجوماناماْ سی کاریارٱل دیٱر",
        "grant-group-email": "ٱنجوماناماْ باْسی ڤابیڌاْ.",
        "grant-createaccount": "راسد کردن هساو کاریاری",
+       "grant-uploadeditmovefile": "سوڤار کردن، جانشین کردن، و جا ب جا کردن جانیایٱل",
+       "grant-uploadfile": "سوڤار کردن جانیایٱل تازاْ.",
+       "grant-viewmywatchlist": "ڤیر ڤٱنین ڤا ساٛیل بٱرگ خوتوݩ",
        "newuserlogpage": "راسد ڤابیاْ ڤا کاریار",
        "rightslog": "پهرستنۊماْ حقوق کاریار",
+       "action-read": "ای بٱلگاْ بخون",
        "action-edit": "ای بلگٱ نٱ آلشدکاری کو",
+       "action-createpage": "ای بٱلگاْ ناْ راسد کو",
        "action-createaccount": "ڤاکل ای هساْو مؽنتوری",
        "action-move": "جابجا کردن ای بٱلگاْ",
+       "action-movefile": "جا ب جا کردن ای بٱلگاْ",
        "action-sendemail": "ٱنجوماناماْ باْسی ڤابیڌاْ.",
        "nchanges": "$1 {{PLURAL:$1|آلشدکاری|آلشدکاریٱل}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|ز آخری دیڌن}}",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (هٱچونوݩ ڤاْ[[Special:NewPages|نومگٱ بٱلٛگیٱل نۊ]] ساٛل ؤوٱنین)",
        "recentchanges-submit": "دیاری کردن",
        "rcfilters-tag-remove": "ڤورداشتن '$1'",
+       "rcfilters-activefilters-hide": "قام کردن",
        "rcfilters-activefilters-show": "دیاری کردن",
+       "rcfilters-savedqueries-rename": "ز نۉ نوم نهاڌن",
        "rcfilters-savedqueries-remove": "پاکسا کردن",
        "rcfilters-savedqueries-new-name-label": "نوم",
        "rcfilters-savedqueries-apply-label": "راسد کردن فیلتر",
        "rcfilters-savedqueries-cancel-label": "ٱنجومشیڤ کردن",
+       "rcfilters-filterlist-title": "فیلترٱل",
        "rcfilters-filter-bots-label": "بوت",
+       "rcfilters-filter-minor-label": "هیرداْ ڤیرایشت",
+       "rcfilters-filtergroup-changetype": "جۊر آلشدکاری",
+       "rcfilters-filter-pageedits-label": "آلشدکاریٱل بٱلگاْ",
+       "rcfilters-filter-newpages-label": "راسد کردن بٱلگاْ",
+       "rcfilters-filtergroup-lastRevision": "آخری ڤانیٱریٱل",
+       "rcfilters-filter-lastrevision-label": "آخری ڤانیٱری",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:نیڌ</strong> $1",
        "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-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|بایت|بایتٱل}} نیا آلشدکاری",
        "rc-old-title": "زاتٱ چی \"$1\" راس ڤابیڌاْ",
        "recentchangeslinked": "آلشدکاریٱل تاْ یٱک",
        "recentchangeslinked-feed": "تغییرات مرتبط",
        "recentchangeslinked-page": "نوم بٱلگاْ:",
        "recentchangeslinked-to": "آلشدکاریٱلی کاْ میٛن بٱلگاْیٱل هومپاٛیڤٱند بیناْ ب جا بٱلگاْ داڌاْ ڤابیڌاْ دیاریسۊن کو",
        "upload": "سوڤار کردن جانیا",
-       "uploadbtn": "آپÙ\84Ù\88د Ù\81اÛ\8cÙ\84",
+       "uploadbtn": "سÙ\88ڤار Ú©Ø±Ø¯Ù\86 Ø¬Ø§Ù\86Û\8cا",
        "uploadlogpage": "پهرستنۊماْ سوڤارکرد",
+       "filename": "نوم جانیا",
        "filedesc": "چكستٱ",
+       "filesource": "سرچشمٱ:",
+       "upload-source": "سرچشماْ جانیا",
+       "sourceurl": "سرچشماْ يۊ آر ال:",
+       "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-usage-title": "ڤا کار ڤٱندن",
+       "upload-form-label-usage-filename": "نوم جانيا",
+       "upload-form-label-own-work": "یو کار موناْ.",
+       "upload-form-label-infoform-categories": "دٱسداْیٱل",
+       "upload-form-label-infoform-date": "ڤیرگار",
        "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": "کاریار",
        "sharedupload-desc-here": "جانیایی کاْ میٛن $1 گاشا میٛن پوروجٱیٱل هٱنی ٱم ب کار گرهڌاْ ڤابیڌاْ بۊ.\nتۉزی سی [$2 file description page] میٛن دڤۊن دیاراْ",
        "filepage-nofile": "چونو جانیایی ڤا چونڤ اْسمی نیڌس.",
        "uploadnewversion-linktext": "آپلود کردن یه نسخه تازه زه ای فایل",
+       "shared-repo-from": "ز $1",
        "upload-disallowed-here": "ايسا ناْترین ای جانیا نٱ ز نۉ سوڤار کونین",
+       "filerevert-comment": "دلیل:",
+       "filedelete": "$1 ناْ پاکسا کو",
+       "filedelete-legend": "پاکسا کردن جانیا",
+       "filedelete-comment": "دلیل:",
+       "filedelete-submit": "پاکسا کردن",
+       "filedelete-reason-otherlist": "دلیل هیٛنی",
        "mimesearch": "MIME جستجو رو پایه",
+       "download": "گرهڌن",
        "listredirects": "لیست تغییر مسیرها",
        "unusedtemplates": "قالبها یا الگوهای استفاده نوابیده",
        "randompage": "بٱلگاْ شامسٱکی",
+       "randomincategory-category": "دٱسداْ:",
+       "randomincategory-submit": "رۉ",
        "randomredirect": "تغییر مسیر اتفاقی",
        "statistics": "آمار",
+       "statistics-pages": "بٱگاْیٱل",
+       "pageswithprop-submit": "رۉ",
        "doubleredirects": "تغییر مسیر دوبله",
        "double-redirect-fixer": "ساموݩکار آلشڌتورٱل",
        "brokenredirects": "تغییرمسیرهای اشکسته وخراو",
+       "brokenredirects-edit": "آلشدکاری کردن",
+       "brokenredirects-delete": "پاکسا کردن",
        "withoutinterwiki": "صفحات بدون لینک های زبانی میان ویکی",
+       "withoutinterwiki-legend": "دیندادیس",
+       "withoutinterwiki-submit": "دیاری کردن",
        "fewestrevisions": "صفحات با کمترین تعداداصلاحات وتجدیدنظرها",
        "nbytes": "$1 {{PLURAL:$1|بایت|بایت}}",
-       "nlinks": "$1 {{PLURAL:$1|لینک|لینکها}}",
-       "nmembers": "$1 {{PLURAL:$1|ٱندوم|ٱندوما}}",
+       "ncategories": "{{PLURAL:$1|دٱسداْ|دٱسداْیٱل}}",
+       "ninterwikis": "$1 {{PLURAL:$1|میٛن ڤیکی|میٛن ڤیکی یٱل}}",
+       "nlinks": "$1 {{PLURAL:$1|هومپاٛیڤٱند|هومپاٛیڤٱندٱل}}",
+       "nmembers": "$1 {{PLURAL:$1|ٱندوم|ٱندومٱل}}",
+       "nmemberschanged": "$1 → $2 {{PLURAL:$2|ٱندوم|ٱندومٱل}}",
+       "nrevisions": "$1 {{PLURAL:$1|ڤانیٱری|ڤانیٱریٱل}}",
        "lonelypages": "صفحات یتیم وابیده",
        "uncategorizedpages": "صفحات دسته بندی نوابیده",
        "uncategorizedcategories": "دسته های دسته بندی نوابیده",
index 85dfbdc..f3c6d68 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}}",
        "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",
        "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",
        "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",
index 23937e0..257b818 100644 (file)
        "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 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 04556d4..26301fc 100644 (file)
        "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",
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 3bf8c6a..cf7e65e 100644 (file)
@@ -69,7 +69,7 @@
        "thursday": "پٱن شمٱ",
        "friday": "جۏمٱ",
        "saturday": "شٱمٱ",
-       "sun": "یٱشمٱ",
+       "sun": "یاٛشٱمٱ",
        "mon": "دۏشٱمٱ",
        "tue": "ساْ شٱمٱ",
        "wed": "چارشمٱ",
@@ -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\"",
+       "category_header": "بٱلگٱیا مؽن دٱسٱ \"$1\"",
        "subcategories": "زيردأسە یا",
        "category-media-header": "ڤارسگٱر د دٱسٱ \"$1\"",
        "category-empty": "ای دٱسٱ د راستٱکی د ڤٱرگرتٱ هیچ بٱلگٱ یا ڤارسگٱری نی",
        "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": "بألگە یایی کئ هوم پئیڤأند جانیایا ئشگئسئ نە دارئن",
        "permalink": "هوم پاٛڤٱن هٱمیشاٛیی",
        "print": "چاپ گئرئتئن",
        "view": "دیین",
-       "view-foreign": "د $1 نه بوینیت",
+       "view-foreign": "د $1 ناْ بونؽت",
        "edit": "ڤیرایش",
        "edit-local": "توضی ڤولات نئشینی نە ڤیرایئشت بأکیت",
        "create": "راس كئردئن",
        "currentevents-url": "Project:روخ ڤنؽا ایسنی",
        "disclaimers": "تیٱپۊشکاریٛا",
        "disclaimerpage": "پرۉژٱ: تیٱپوشی کردن همٱگیر",
-       "edithelp": "هومياری سی ڤیرایشت",
+       "edithelp": "هومياری سی ڤیرایش",
        "helppage-top-gethelp": "هومياری",
        "mainpage": "سرآسونٱ",
        "mainpage-description": "سرآسونٱ",
        "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لوطف بأکیت د چأن دئیقە هأنی د نۊ تئلاش بأکیت.",
        "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>، ڤیرایشتیا شوما ڤ نوم کاریاری خوتۊ دیاری می کٱ و سی شوما بیترٱ.",
        "anonpreviewwarning": "<em>شوما نیوٙمایتە ڤامین. تیرنئشوٙن آی پی شوما د ڤیرگار ڤیرایئشت ئی بألگە ئمایە بوٙە.</em>",
        "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]]\" د ای  ويكي!'''",
        "searchprofile-articles": "بٱلگٱيا مؽنونٱ دار",
        "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": "(یکی کردن مینونه جانیا)",
        "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-nonefound": "Ù\87Û\8cÚ\86 Ù\86تÛ\8cجاÙ\9bÛ\8cؽ Ú¤Ø§ Ù¾Ø§Ù\9bجÛ\8aرÛ\8c ØªÙ\88 Û\8cٱکؽ Ù\86ؽ.",
        "powersearch-legend": "پی جوری پیشکرده",
        "powersearch-ns": "د نوم جايا نوم ديار پی جوری بک:",
        "powersearch-togglelabel": "ڤارئسی کئردئن:",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|د آخری دیئن}}",
        "enhancedrc-history": "ڤیرگار",
        "recentchanges": "آلشتؽا ایسنی",
-       "recentchanges-legend": "گوزینٱیا آلشتیا ایسناٛنی",
+       "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": "قام کردن",
        "recentchangeslinked": "آلشتیا تی یٱکی",
        "recentchangeslinked-feed": "آلشتیا تی یکی",
        "recentchangeslinked-toolbox": "آلشتؽا تاٛ یٱک",
-       "recentchangeslinked-title": "آلشتیا تاٛ یکی د $1",
+       "recentchangeslinked-title": "آلشتؽا تاٛ یٱکؽ د $1",
        "recentchangeslinked-summary": "اؽ نوم بٱلگٱ تازٱ د بٱلگٱیایی کاْ ڤا بٱلگٱیا ڤیژٱ هوم پاٛڤٱن بینٱ آلشت بیٱ(یا سی ٱندومؽا دٱسٱ بٱنی بیٱ)\nبٱلگٱیایی کاْ هان د [[Special:Watchlist|your watchlist]]ۉ گٱپ بینٱ",
        "recentchangeslinked-page": "نوم بلگٱ:",
        "recentchangeslinked-to": "آلشتیایی که د بلگه یا هوم پیوند بینه وه جا بلگه دئیه بیه نشو بیه",
        "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] هیئت.",
        "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-ca-nstab-help": "ديئن بلگه هومیاری",
        "tooltip-ca-nstab-category": "ديین بٱلگٱ دٱسٱ بٱنی",
        "tooltip-minoredit": "یه نه د عنوان حیرده ویرایشت ثوت کو",
-       "tooltip-save": "آلشتیاتۊنٱ اٛمایٱ بٱکیت",
-       "tooltip-preview": "پیش سیل آلشتیاتو،لطف بکیت وه نونه دما د اماییه کاریشو وه کار بیئریت!",
+       "tooltip-save": "آلشتؽا توناْ آمادٱ بٱکؽت",
+       "tooltip-preview": "پیش ساٛلٛ آلشتؽاتو، لوتف بٱکؽت ڤنوناْ دما د آمایٱ کاریشو ڤ کار باٛیرؽت!",
        "tooltip-diff": "آلشتیا نه که شما د ای متن راس کردیته نشو بیئه",
        "tooltip-compareselectedversions": "فرخیا مینجا د تا د دو بار دیاٛن ای بلگٱ نٱ بۉنیت",
        "tooltip-watch": "ای بلگه نه د سیل برگتو اضاف بکید",
        "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|کارور|کاروریا}}  {{سیل جا}}",
        "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*جی پی اْس هٱمٱ هالٱت",
index e2abf15..62785e1 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": "Поднеси изменет опис на податотеката",
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..b59a20e 100644 (file)
        "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": "Ð\94аÑ\82абазанÑ\8c Ñ\81Ñ\91лгомо Ð´Ñ\8b Ð¿Ð°Ð½Ð¶Ð¾Ð¼Ð¾",
+       "right-siteadmin": "СÑ\91лгомÑ\81 Ð´Ñ\8b Ð¿Ð°Ð½Ð¶Ð¾Ð¼Ñ\81 Ð´Ð°Ñ\82аÑ\8eÑ\80Ñ\82онÑ\82Ñ\8c",
        "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": "Чиень полавтнемат-лиякстомтомат",
        "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Инеськеть, поладомадо икеле васня вант, чарькодят - чарькодят козонь те тевесь вети.",
        "patrol-log-page": "Ванстнемадо конёв",
        "deletedrevision": "Нардань ташто лиякстомтома $1",
        "filedeleteerror-short": "\"$1\" керьмазонть нардамсто лиссь ильведевкс",
+       "filedelete-old-unregistered": "Кочказь файланть \"$1\" ревизиязо датаюртсо арась.",
        "previousdiff": "← Седе икелень верзиязо",
        "nextdiff": "Од верзиязо →",
        "thumbsize": "Кенжешканть покшолмазо:",
        "tag-filter-submit": "Сувтемень пачк нолдамс",
        "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 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 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 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 b44024b..ccb91ec 100644 (file)
        "mainpage": "หน้าหลัก",
        "mainpage-description": "หน้าหลัก",
        "policy-url": "Project:นโยบาย",
-       "portal": "ศูà¸\99ยà¹\8cรวมชุมชน",
-       "portal-url": "Project:ศูà¸\99ยà¹\8cรวมชุมชน",
+       "portal": "ศาลาชุมชน",
+       "portal-url": "Project:ศาลาชุมชน",
        "privacy": "นโยบายความเป็นส่วนตัว",
        "privacypage": "Project:นโยบายความเป็นส่วนตัว",
        "badaccess": "มีข้อผิดพลาดในการใช้สิทธิ",
        "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ปูมการบล็อกล่าสุดแสดงด้านล่างนี้เพื่อการอ้างอิง:",
index f226427..8f3e8c4 100644 (file)
@@ -1813,7 +1813,6 @@ return [
                        'dm/ItemModel.js',
                        'dm/SavedQueriesModel.js',
                        'dm/SavedQueryItemModel.js',
-                       'config.json' => [ 'config' => [ 'StructuredChangeFiltersLiveUpdatePollingRate' ] ],
                ],
                'dependencies' => [
                        'mediawiki.String',
@@ -1867,7 +1866,6 @@ return [
                        'ui/RclTargetPageWidget.js',
                        'ui/RclToOrFromWidget.js',
                        'ui/WatchlistTopSectionWidget.js',
-                       'config.json' => [ 'callback' => 'ChangesListSpecialPage::getRcFiltersConfigVars' ],
                ],
                'styles' => [
                        'styles/mw.rcfilters.mixins.less',
@@ -2132,10 +2130,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 +2357,7 @@ return [
                'dependencies' => [
                        'mediawiki.api',
                        'mediawiki.jqueryMsg',
+                       'mediawiki.notify',
                        'mediawiki.Title',
                        'mediawiki.util',
                        'oojs-ui-core',
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 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 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 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
 }
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..7361047 100644 (file)
@@ -383,6 +383,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 +402,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 +492,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 +570,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 +578,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 +621,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 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 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 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 0643e0e..a17f39d 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();
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 );