Merge "widgets: Remove redundant equality check in SelectWithInputWidget"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sun, 17 Feb 2019 00:35:34 +0000 (00:35 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sun, 17 Feb 2019 00:35:34 +0000 (00:35 +0000)
95 files changed:
RELEASE-NOTES-1.33
composer.json
docs/extension.schema.v2.json
includes/Block.php
includes/CommentStoreComment.php
includes/Defines.php
includes/FeedUtils.php
includes/GlobalFunctions.php
includes/LinkFilter.php
includes/PHPVersionCheck.php
includes/Revision.php
includes/actions/RawAction.php
includes/api/ApiFeedContributions.php
includes/api/ApiParse.php
includes/api/ApiQueryBlocks.php
includes/api/ApiQueryRevisionsBase.php
includes/api/i18n/fr.json
includes/api/i18n/it.json
includes/api/i18n/pl.json
includes/block/Restriction/PageRestriction.php
includes/changes/EnhancedChangesList.php
includes/changetags/ChangeTags.php
includes/content/ContentHandler.php
includes/diff/DifferenceEngine.php
includes/installer/DatabaseInstaller.php
includes/installer/i18n/ia.json
includes/installer/i18n/it.json
includes/libs/objectcache/WANObjectCache.php
includes/libs/rdbms/loadbalancer/LoadBalancer.php
includes/page/WikiPage.php
includes/resourceloader/ResourceLoaderModule.php
includes/shell/Command.php
includes/specials/SpecialBlock.php
includes/specials/SpecialBooksources.php
includes/specials/SpecialDeletedContributions.php
includes/specials/SpecialUndelete.php
includes/specials/pagers/BlockListPager.php
includes/specials/pagers/ProtectedTitlesPager.php
includes/templates/EnhancedChangesListGroup.mustache
languages/LanguageConverter.php
languages/i18n/bn.json
languages/i18n/bqi.json
languages/i18n/br.json
languages/i18n/diq.json
languages/i18n/gl.json
languages/i18n/id.json
languages/i18n/io.json
languages/i18n/it.json
languages/i18n/ja.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/pa.json
languages/i18n/pl.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sh.json
languages/i18n/sr-ec.json
languages/i18n/su.json
languages/i18n/tcy.json
languages/i18n/th.json
languages/i18n/tr.json
languages/i18n/ur.json
languages/i18n/zh-hans.json
maintenance/compareParsers.php
maintenance/preprocessDump.php
maintenance/view.php
resources/Resources.php
resources/src/jquery/jquery.makeCollapsible.styles.less
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/Revision/SlotRecordTest.php
tests/phpunit/includes/RevisionDbTestBase.php
tests/phpunit/includes/api/ApiEditPageTest.php
tests/phpunit/includes/api/ApiQueryBlocksTest.php
tests/phpunit/includes/block/Restriction/PageRestrictionTest.php
tests/phpunit/includes/changes/EnhancedChangesListTest.php
tests/phpunit/includes/db/LBFactoryTest.php
tests/phpunit/includes/diff/CustomDifferenceEngine.php
tests/phpunit/includes/import/ImportTest.php
tests/phpunit/includes/page/ArticleViewTest.php
tests/phpunit/includes/page/WikiPageDbTestBase.php
tests/phpunit/includes/specials/SpecialBlockTest.php
tests/phpunit/includes/specials/pagers/BlockListPagerTest.php
tests/phpunit/mocks/content/DummyContentForTesting.php
tests/phpunit/mocks/content/DummyNonTextContent.php

index 284d19f..ac06d63 100644 (file)
@@ -61,7 +61,7 @@ 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.1.
   * The deprecated IPSet\IPSet alias was removed, Wikimedia\IPSet must be
@@ -72,12 +72,15 @@ 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 ====
 
 === Bug fixes in 1.33 ===
 * (T164211) Special:UserRights could sometimes fail with a
   "conflict detected" error when there weren't any conflicts.
+* (T215566) Unable to determine if the database exists
+  during a fresh installation.
 
 === Action API changes in 1.33 ===
 * (T198913) Added 'ApiOptions' hook.
@@ -290,14 +293,16 @@ because of Phabricator reports.
 * The mw.language.specialCharacters property from the
   'mediawiki.language.specialCharacters' module has been deprecated.
   Use require( 'mediawiki.language.specialCharacters' ) instead.
+* ChangeTags::purgeTagUsageCache() has been deprecated, and is expected to be
+  removed in a future release.
 
 === Other changes in 1.33 ===
 * (T201747) Html::openElement() warns if given an element name with a space
   in it.
 
 == Compatibility ==
-MediaWiki 1.33 requires PHP 7.0.0 or later. Although HHVM 3.18.5 or later is
-supported, it is generally advised to use PHP 7.0.0 or later for long term
+MediaWiki 1.33 requires PHP 7.0.13 or later. Although HHVM 3.18.5 or later is
+supported, it is generally advised to use PHP 7.0.13 or later for long term
 support.
 
 MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
index fb6dabb..87ba6a1 100644 (file)
@@ -44,7 +44,7 @@
                "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 85fa341..573ce3d 100644 (file)
@@ -68,7 +68,10 @@ class Block {
        /** @var int Hack for foreign blocking (CentralAuth) */
        private $forcedTargetID;
 
-       /** @var int Block::TYPE_ constant. Can only be USER, IP or RANGE internally */
+       /**
+        * @var int Block::TYPE_ constant. After the block has been loaded
+        * from the database, this can only be USER, IP or RANGE.
+        */
        private $type;
 
        /** @var User */
@@ -188,7 +191,7 @@ class Block {
        }
 
        /**
-        * Load a blocked user from their block id.
+        * Load a block from the block id.
         *
         * @param int $id Block id to search for
         * @return Block|null
@@ -1547,7 +1550,9 @@ class Block {
        }
 
        /**
-        * Get the type of target for this particular block
+        * Get the type of target for this particular block. Autoblocks have whichever type
+        * corresponds to their target, so to detect if a block is an autoblock, we have to
+        * check the mAuto property instead.
         * @return int Block::TYPE_ constant, will never be TYPE_ID
         */
        public function getType() {
index af866cd..9f1681d 100644 (file)
@@ -50,7 +50,7 @@ class CommentStoreComment {
        public function __construct( $id, $text, Message $message = null, array $data = null ) {
                $this->id = $id;
                $this->text = $text;
-               $this->message = $message ?: new RawMessage( '$1', [ $text ] );
+               $this->message = $message ?: new RawMessage( '$1', [ Message::plaintextParam( $text ) ] );
                $this->data = $data;
        }
 
index 5ab27cc..720e8d0 100644 (file)
@@ -31,7 +31,7 @@ use Wikimedia\Rdbms\IDatabase;
 
 # Obsolete aliases
 /**
- * @deprecated since 1.28
+ * @deprecated since 1.28, use DB_REPLICA instead
  */
 define( 'DB_SLAVE', -1 );
 
index 4dde52d..899ac09 100644 (file)
@@ -173,7 +173,7 @@ class FeedUtils {
 
                        if ( $newContent instanceof TextContent ) {
                                // only textual content has a "source view".
-                               $text = $newContent->getNativeData();
+                               $text = $newContent->getText();
 
                                if ( $wgFeedDiffCutoff <= 0 || strlen( $text ) > $wgFeedDiffCutoff ) {
                                        $html = null;
index bd98932..51fe167 100644 (file)
@@ -225,7 +225,7 @@ function wfMergeErrorArrays( ...$args ) {
  *
  * @param array $array The array.
  * @param array $insert The array to insert.
- * @param mixed $after The key to insert after
+ * @param mixed $after The key to insert after. Callers need to make sure the key is set.
  * @return array
  */
 function wfArrayInsertAfter( array $array, array $insert, $after ) {
index ffb36e0..a4e94da 100644 (file)
@@ -54,7 +54,7 @@ class LinkFilter {
                        return 0;
                }
 
-               $text = $content->getNativeData();
+               $text = $content->getText();
 
                $regex = self::makeRegex( $filterEntry, $protocol );
                return preg_match( $regex, $text );
index 8406bfb..cbe63a3 100644 (file)
@@ -110,7 +110,7 @@ class PHPVersionCheck {
                        'version' => PHP_VERSION,
                        'vendor' => 'the PHP Group',
                        'upstreamSupported' => '5.6.0',
-                       'minSupported' => '7.0.0',
+                       'minSupported' => '7.0.13',
                        'upgradeURL' => 'https://secure.php.net/downloads.php',
                );
        }
index aaf1069..f2ca79a 100644 (file)
@@ -832,17 +832,15 @@ class Revision implements IDBAccessObject {
        }
 
        /**
-        * Fetch revision comment if it's available to the specified audience.
-        * If the specified audience does not have access to the comment, an
-        * empty string will be returned.
-        *
         * @param int $audience One of:
         *   Revision::FOR_PUBLIC       to be displayed to all users
         *   Revision::FOR_THIS_USER    to be displayed to the given user
         *   Revision::RAW              get the text regardless of permissions
         * @param User|null $user User object to check for, only if FOR_THIS_USER is passed
         *   to the $audience parameter
-        * @return string
+        *
+        * @return string|null Returns null if the specified audience does not have access to the
+        *  comment.
         */
        function getComment( $audience = self::FOR_PUBLIC, User $user = null ) {
                global $wgUser;
index 77a8b14..73594bc 100644 (file)
@@ -215,7 +215,7 @@ class RawAction extends FormlessAction {
                                        // section not found (or section not supported, e.g. for JS, JSON, and CSS)
                                        $text = false;
                                } else {
-                                       $text = $content->getNativeData();
+                                       $text = $content->getText();
                                }
                        }
                }
index 9edf929..2492db2 100644 (file)
@@ -181,7 +181,7 @@ class ApiFeedContributions extends ApiBase {
 
                if ( $content instanceof TextContent ) {
                        // only textual content has a "source view".
-                       $html = nl2br( htmlspecialchars( $content->getNativeData() ) );
+                       $html = nl2br( htmlspecialchars( $content->getText() ) );
                } else {
                        // XXX: we could get an HTML representation of the content via getParserOutput, but that may
                        //     contain JS magic and generally may not be suitable for inclusion in a feed.
index 148ac67..9f561b7 100644 (file)
@@ -487,7 +487,7 @@ class ApiParse extends ApiBase {
                        }
 
                        $wgParser->startExternalParse( $titleObj, $popts, Parser::OT_PREPROCESS );
-                       $xml = $wgParser->preprocessToDom( $this->content->getNativeData() )->__toString();
+                       $xml = $wgParser->preprocessToDom( $this->content->getText() )->__toString();
                        $result_array['parsetree'] = $xml;
                        $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'parsetree';
                }
index 95f8cda..8aff2aa 100644 (file)
@@ -305,7 +305,9 @@ class ApiQueryBlocks extends ApiQueryBase {
                        switch ( $restriction->getType() ) {
                                case 'page':
                                        $value = [ 'id' => $restriction->getValue() ];
-                                       self::addTitleInfo( $value, $restriction->getTitle() );
+                                       if ( $restriction->getTitle() ) {
+                                               self::addTitleInfo( $value, $restriction->getTitle() );
+                                       }
                                        break;
                                default:
                                        $value = $restriction->getValue();
index 3d0a0fb..0d2aeab 100644 (file)
@@ -471,7 +471,7 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
 
                if ( $this->fld_parsetree || ( $this->fld_content && $this->generateXML ) ) {
                        if ( $content->getModel() === CONTENT_MODEL_WIKITEXT ) {
-                               $t = $content->getNativeData(); # note: don't set $text
+                               $t = $content->getText(); # note: don't set $text
 
                                $wgParser->startExternalParse(
                                        $title,
@@ -503,7 +503,7 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
 
                        if ( $this->expandTemplates && !$this->parseContent ) {
                                if ( $content->getModel() === CONTENT_MODEL_WIKITEXT ) {
-                                       $text = $content->getNativeData();
+                                       $text = $content->getText();
 
                                        $text = $wgParser->preprocess(
                                                $text,
index 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 8ffe98f..721cd0b 100644 (file)
@@ -17,7 +17,8 @@
                        "Einreiher",
                        "Mpiva",
                        "Margherita.mignanelli",
-                       "Manfredi26"
+                       "Manfredi26",
+                       "Daimona Eaytoy"
                ]
        },
        "apihelp-main-extended-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentazione]] (in inglese)\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]] (in inglese)\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annunci sull'API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bug & richieste]\n</div>\n<strong>Stato:</strong> l'API MediaWiki è un'interfaccia matura e stabile che è attivamente supportata e migliorata. Anche se cerchiamo di evitarlo, potremmo dover fare delle modifiche che causano malfunzionamenti; iscriviti alla [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mailing list sugli annunci delle API MediaWiki] per essere informato sugli aggiornamenti.\n\n<strong>Istruzioni sbagliate:</strong> quando vengono impartite alle API delle istruzioni sbagliate, un'intestazione HTTP verrà inviata col messaggio \"MediaWiki-API-Error\" e, sia il valore dell'intestazione, sia il codice d'errore, verranno impostati con lo stesso valore. Per maggiori informazioni leggi [[mw:Special:MyLanguage/API:Errors_and_warnings|API:Errori ed avvertimenti]] (in inglese).\n\n<p class=\"mw-apisandbox-link\"><strong>Test:</strong> per testare facilmente le richieste API, vedi [[Special:ApiSandbox]].</p>",
        "apihelp-paraminfo-param-helpformat": "Formato delle stringhe di aiuto.",
        "apihelp-parse-param-summary": "Oggetto da analizzare.",
        "apihelp-parse-param-redirects": "Se <var>$1page</var> o <var>$1pageid</var> è impostato come reindirizzamento, lo risolve.",
-       "apihelp-parse-param-prop": "Quali pezzi di informazioni ottenere:",
+       "apihelp-parse-param-prop": "Quali informazioni ottenere:",
        "apihelp-parse-example-text": "Analizza wikitext.",
        "apihelp-parse-example-texttitle": "Analizza wikitext, specificando il titolo della pagina.",
        "apihelp-parse-example-summary": "Analizza un oggetto.",
        "apihelp-query+allfileusages-param-from": "Il titolo del file da cui iniziare l'elenco.",
        "apihelp-query+allfileusages-param-to": "Il titolo del file al quale interrompere l'elenco.",
        "apihelp-query+allfileusages-param-prefix": "Ricerca per tutti i titoli dei file che iniziano con questo valore.",
-       "apihelp-query+allfileusages-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+allfileusages-param-prop": "Quali informazioni includere:",
        "apihelp-query+allfileusages-paramvalue-prop-title": "Aggiunge il titolo del file.",
        "apihelp-query+allfileusages-param-limit": "Quanti elementi totali restituire.",
        "apihelp-query+allfileusages-param-dir": "La direzione in cui elencare.",
        "apihelp-query+alllinks-param-from": "Il titolo del collegamento da cui iniziare l'elenco.",
        "apihelp-query+alllinks-param-to": "Il titolo del collegamento al quale interrompere l'elenco.",
        "apihelp-query+alllinks-param-prefix": "Ricerca per tutti i titoli dei collegamenti che iniziano con questo valore.",
-       "apihelp-query+alllinks-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+alllinks-param-prop": "Quali informazioni includere:",
        "apihelp-query+alllinks-paramvalue-prop-ids": "Aggiunge l'ID pagina della pagina collegata (non può essere usato con <var>$1unique</var>).",
        "apihelp-query+alllinks-paramvalue-prop-title": "Aggiunge il titolo del collegamento.",
        "apihelp-query+alllinks-param-namespace": "Il namespace da elencare.",
        "apihelp-query+allpages-param-limit": "Quante pagine totali restituire.",
        "apihelp-query+allpages-param-dir": "La direzione in cui elencare.",
        "apihelp-query+allredirects-param-from": "Il titolo del reindirizzamento da cui iniziare l'elenco.",
-       "apihelp-query+allredirects-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+allredirects-param-prop": "Quali informazioni includere:",
        "apihelp-query+allredirects-paramvalue-prop-title": "Aggiunge il titolo del redirect.",
        "apihelp-query+allredirects-param-namespace": "Il namespace da elencare.",
        "apihelp-query+allredirects-param-limit": "Quanti elementi totali restituire.",
        "apihelp-query+mystashedfiles-param-limit": "Quanti file restituire.",
        "apihelp-query+alltransclusions-summary": "Elenca tutte le inclusioni (pagine incorporate utilizzando &#123;&#123;x&#125;&#125;), comprese le non esistenti.",
        "apihelp-query+alltransclusions-param-from": "Il titolo dell'inclusione da cui iniziare l'elenco.",
-       "apihelp-query+alltransclusions-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+alltransclusions-param-prop": "Quali informazioni includere:",
        "apihelp-query+alltransclusions-paramvalue-prop-title": "Aggiunge il titolo dell'inclusione.",
        "apihelp-query+alltransclusions-param-namespace": "Il namespace da elencare.",
        "apihelp-query+alltransclusions-param-limit": "Quanti elementi totali restituire.",
        "apihelp-query+allusers-param-dir": "Direzione dell'ordinamento.",
        "apihelp-query+allusers-param-group": "Includi solo gli utenti nei gruppi indicati.",
        "apihelp-query+allusers-param-excludegroup": "Escludi gli utenti nei gruppi indicati.",
-       "apihelp-query+allusers-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+allusers-param-prop": "Quali informazioni includere:",
        "apihelp-query+allusers-param-limit": "Quanti nomi utente totali restituire.",
        "apihelp-query+authmanagerinfo-summary": "Recupera informazioni circa l'attuale stato di autenticazione.",
        "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "Verifica se lo stato di autenticazione dell'utente attuale è sufficiente per la specifica operazione sensibile alla sicurezza.",
        "apihelp-query+categoryinfo-summary": "Restituisce informazioni su una categoria indicata.",
        "apihelp-query+categoryinfo-example-simple": "Ottieni informazioni su <kbd>Category:Foo</kbd> e <kbd>Category:Bar</kbd>.",
        "apihelp-query+categorymembers-summary": "Elenca tutte le pagine in una categoria indicata.",
-       "apihelp-query+categorymembers-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+categorymembers-param-prop": "Quali informazioni includere:",
        "apihelp-query+categorymembers-paramvalue-prop-ids": "Aggiunge l'ID pagina.",
        "apihelp-query+categorymembers-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
        "apihelp-query+categorymembers-paramvalue-prop-type": "Aggiunge il tipo di come la pagina è stata categorizzata (<samp>page</samp>, <samp>subcat</samp> o <samp>file</samp>).",
        "apihelp-query+embeddedin-param-dir": "La direzione in cui elencare.",
        "apihelp-query+embeddedin-param-limit": "Quante pagine totali restituire.",
        "apihelp-query+extlinks-param-limit": "Quanti collegamenti restituire.",
-       "apihelp-query+exturlusage-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+exturlusage-param-prop": "Quali informazioni includere:",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "Aggiunge l'ID della pagina.",
        "apihelp-query+exturlusage-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
        "apihelp-query+exturlusage-paramvalue-prop-url": "Aggiunge l'URL utilizzato nella pagina.",
        "apihelp-query+logevents-paramvalue-prop-title": "Aggiunge il titolo della pagine per l'evento nel registro.",
        "apihelp-query+logevents-param-start": "Il timestamp da cui iniziare l'elenco.",
        "apihelp-query+logevents-param-end": "Il timestamp al quale interrompere l'elenco.",
-       "apihelp-query+pageswithprop-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+pageswithprop-param-prop": "Quali informazioni includere:",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "Aggiunge l'ID pagina.",
        "apihelp-query+pageswithprop-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
        "apihelp-query+pageswithprop-paramvalue-prop-value": "Aggiunge il valore della proprietà di pagina.",
        "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Aggiungi la data di registrazione dell'utente.",
        "apihelp-query+userinfo-example-simple": "Ottieni informazioni sull'utente attuale.",
        "apihelp-query+users-summary": "Ottieni informazioni su un elenco di utenti.",
-       "apihelp-query+users-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+users-param-prop": "Quali informazioni includere:",
        "apihelp-query+users-paramvalue-prop-cancreate": "Indica se può essere creata un'utenza per nomi utente validi ma non registrati.",
        "apihelp-query+users-param-users": "Un elenco di utenti di cui ottenere informazioni.",
        "apihelp-query+watchlist-summary": "Ottieni le ultime modifiche alle pagine tra gli osservati speciali dell'utente attuale.",
index fe98013..2d4fc69 100644 (file)
@@ -15,7 +15,8 @@
                        "Sethakill",
                        "Woytecr",
                        "InternerowyGołąb",
-                       "CiaPan"
+                       "CiaPan",
+                       "Vlad5250"
                ]
        },
        "apihelp-main-extended-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentacja]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista dyskusyjna]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Ogłoszenia dotyczące API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Błędy i propozycje]\n</div>\n<strong>Stan:</strong> Wszystkie funkcje opisane na tej stronie powinny działać, ale API nadal jest aktywnie rozwijane i mogą się zmienić w dowolnym czasie. Subskrybuj [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ listę dyskusyjną mediawiki-api-announce], aby móc na bieżąco dowiadywać się o aktualizacjach.\n\n<strong>Błędne żądania:</strong> Gdy zostanie wysłane błędne żądanie do API, zostanie wysłany w odpowiedzi nagłówek HTTP z kluczem \"MediaWiki-API-Error\" i zarówno jego wartość jak i wartość kodu błędu wysłanego w odpowiedzi będą miały taką samą wartość. Aby uzyskać więcej informacji, zobacz [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Błędy i ostrzeżenia]].\n\n<strong>Testowanie:</strong> Aby łatwo testować żądania API, zobacz [[Special:ApiSandbox]].",
        "api-pageset-param-redirects-generator": "Automatycznie rozwiązuj przekierowania ze stron podanych w <var>$1titles</var>, <var>$1pageids</var>, oraz <var>$1revids</var>, a także ze stron zwróconych przez <var>$1generator</var>.",
        "api-pageset-param-converttitles": "Konwertuj tytuły do innych wariantów, jeżeli trzeba. Będzie działać tylko wtedy, gdy język zawartości wiki będzie wspierał konwersje wariantów. Języki, które wspierają konwersję wariantów to m.in. $1.",
        "api-help-title": "Pomoc MediaWiki API",
-       "api-help-lead": "To jest automatycznie wygenerowana strona dokumentacji MediaWiki API.\nDokumentacja i przykłady: https://www.mediawiki.org/wiki/API",
+       "api-help-lead": "To jest automatycznie wygenerowana strona dokumentacji MediaWiki API.\n\nDokumentacja i przykłady: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "Moduł główny",
        "api-help-undocumented-module": "Brak dokumentacji dla modułu $1.",
        "api-help-flag-deprecated": "Ten moduł jest przestarzały.",
index 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 28b30d8..51a26ba 100644 (file)
@@ -77,12 +77,12 @@ class EnhancedChangesList extends ChangesList {
                $this->lastdate = '';
                $this->rclistOpen = false;
                $this->getOutput()->addModuleStyles( [
+                       'mediawiki.icon',
                        'mediawiki.special.changeslist',
                        'mediawiki.special.changeslist.enhanced',
                ] );
                $this->getOutput()->addModules( [
                        'jquery.makeCollapsible',
-                       'mediawiki.icon',
                ] );
 
                return '<div class="mw-changeslist">';
index a1cf468..66a8165 100644 (file)
@@ -420,8 +420,6 @@ class ChangeTags {
                        }
                }
 
-               self::purgeTagUsageCache();
-
                Hooks::run( 'ChangeTagsAfterUpdateTags', [ $tagsToAdd, $tagsToRemove, $prevTags,
                        $rc_id, $rev_id, $log_id, $params, $rc, $user ] );
 
@@ -1456,18 +1454,15 @@ class ChangeTags {
                $cache->touchCheckKey( $cache->makeKey( 'valid-tags-hook' ) );
 
                MediaWikiServices::getInstance()->getChangeTagDefStore()->reloadMap();
-
-               self::purgeTagUsageCache();
        }
 
        /**
         * Invalidates the tag statistics cache only.
         * @since 1.25
+        * @deprecated since 1.33 the cache this purges no longer exists
         */
        public static function purgeTagUsageCache() {
-               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
-
-               $cache->touchCheckKey( $cache->makeKey( 'change-tag-statistics' ) );
+               wfDeprecated( __METHOD__, '1.33' );
        }
 
        /**
index ae47b86..49e3132 100644 (file)
@@ -59,7 +59,7 @@ abstract class ContentHandler {
         * If $content is null, this method returns the empty string.
         *
         * If $content is an instance of TextContent, this method returns the flat
-        * text as returned by $content->getNativeData().
+        * text as returned by $content->getText().
         *
         * If $content is not a TextContent object, the behavior of this method
         * depends on the global $wgContentHandlerTextFallback:
index 40521d5..43bc6e4 100644 (file)
@@ -1642,8 +1642,8 @@ class DifferenceEngine extends ContextSource {
                        $this->mOldPage = Title::newFromLinkTarget( $oldRevision->getPageAsLinkTarget() );
                        // This method is meant for edit diffs and such so there is no reason to provide a
                        // revision that's not readable to the user, but check it just in case.
-                       $this->mOldContent = $oldRevision ? $oldRevision->getContent( SlotRecord::MAIN,
-                               RevisionRecord::FOR_THIS_USER, $this->getUser() ) : null;
+                       $this->mOldContent = $oldRevision->getContent( SlotRecord::MAIN,
+                               RevisionRecord::FOR_THIS_USER, $this->getUser() );
                } else {
                        $this->mOldPage = null;
                        $this->mOldRev = $this->mOldid = false;
index a146ae4..bb30d3d 100644 (file)
@@ -23,6 +23,8 @@
 use Wikimedia\Rdbms\LBFactorySingle;
 use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\DBExpectedError;
+use Wikimedia\Rdbms\DBConnectionError;
 
 /**
  * Base class for DBMS-specific installation helper classes.
@@ -620,7 +622,12 @@ abstract class DatabaseInstaller {
                        return false;
                }
 
-               if ( !$this->db->selectDB( $this->getVar( 'wgDBname' ) ) ) {
+               try {
+                       $this->db->selectDB( $this->getVar( 'wgDBname' ) );
+               } catch ( DBConnectionError $e ) {
+                       // Don't catch DBConnectionError
+                       throw $e;
+               } catch ( DBExpectedError $e ) {
                        return false;
                }
 
index 781e4d2..01dc661 100644 (file)
@@ -66,9 +66,9 @@
        "config-wincache": "[https://www.iis.net/downloads/microsoft/wincache-extension WinCache] es installate",
        "config-no-cache-apcu": "<strong>Attention:</strong> Impossibile trovar [https://secure.php.net/apcu APCu] o [https://www.iis.net/downloads/microsoft/wincache-extension WinCache].\nLe cache de objectos non es activate.",
        "config-mod-security": "<strong>Attention</strong>: [https://modsecurity.org/ mod_security]/mod_security2 es active in tu servitor web. Multe configurationes commun de isto causa problemas pro MediaWiki o altere software que permitte al usatores de publicar contento arbitrari. Si possibile, isto deberea esser disactivate.\nAlteremente, consulta le [https://modsecurity.org/documentation/ documentation de mod_security] o contacta le servicio de adjuta de tu servitor si tu incontra estranie errores.",
-       "config-diff3-bad": "GNU diff3 non trovate.",
+       "config-diff3-bad": "Le utilitate de comparation de texto GNU diff3 non ha essite trovate. Es possibile ignorar isto pro le momento, ma tu poterea incontrar conflictos de modification plus frequentemente.",
        "config-git": "Systema de controlo de version Git trovate: <code>$1</code>",
-       "config-git-bad": "Systema de controlo de version Git non trovate.",
+       "config-git-bad": "Le systema de controlo de version Git non ha essite trovate. Tu pote ignorar isto pro le momento. Nota ben que le pagina Special:Version non monstrara le \"commit hashes\".",
        "config-imagemagick": "ImageMagick trovate: <code>$1</code>.\nLe miniaturas de imagines essera activate si tu activa le incargamento de files.",
        "config-gd": "Le bibliotheca graphic GD se trova integrate in le systema.\nLe miniaturas de imagines essera activate si tu activa le incargamento de files.",
        "config-no-scaling": "Non poteva trovar le bibliotheca GD ni ImageMagick.\nLe miniaturas de imagines essera disactivate.",
@@ -83,7 +83,7 @@
        "config-using-32bit": "<strong>Attention:</strong> tu systema pare operar con integres de 32 bits. Isto [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit non es recommendate].",
        "config-db-type": "Typo de base de datos:",
        "config-db-host": "Servitor de base de datos:",
-       "config-db-host-help": "Si tu servitor de base de datos es in un altere servitor, entra hic le nomine o adresse IP del servitor.\n\nSi tu usa un servitor web usate in commun, tu providitor deberea dar te le correcte nomine de servitor in su documentation.\n\nSi tu face le installation in un servitor Windows e usa MySQL, le nomine \"localhost\" possibilemente non functiona como nomine de servitor. In tal caso, essaya \"127.0.0.1\", i.e. le adresse IP local.\n\nSi tu usa PostgreSQL, lassa iste campo vacue pro connecter via un \"socket\" de Unix.",
+       "config-db-host-help": "Si tu servitor de base de datos es in un altere servitor, entra hic le nomine o adresse IP del servitor.\n\nSi tu usa un servitor web usate in commun, tu providitor deberea dar te le correcte nomine de servitor in su documentation.\n\nSi tu usa MySQL, le nomine \"localhost\" possibilemente non functiona como nomine de servitor. In tal caso, essaya \"127.0.0.1\", i.e. le adresse IP local.\n\nSi tu usa PostgreSQL, lassa iste campo vacue pro connecter via un \"socket\" de Unix.",
        "config-db-host-oracle": "TNS del base de datos:",
        "config-db-host-oracle-help": "Entra un [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm nomine Local Connect] valide; un file tnsnames.ora debe esser visibile a iste installation.<br />Si tu usa bibliothecas de cliente 10g o plus recente, tu pote anque usar le methodo de nomination [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].",
        "config-db-wiki-settings": "Identificar iste wiki",
        "config-invalid-db-server-oracle": "TNS de base de datos \"$1\" invalide.\nUsa o \"TNS Name\" o un catena \"Easy Connect\". ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Methodos de nomenclatura de Oracle])",
        "config-invalid-db-name": "Nomine de base de datos \"$1\" invalide.\nUsa solmente litteras ASCII (a-z, A-Z), numeros (0-9), characteres de sublineamento (_) e tractos de union (-).",
        "config-invalid-db-prefix": "Prefixo de base de datos \"$1\" invalide.\nUsa solmente litteras ASCII (a-z, A-Z), numeros (0-9), characteres de sublineamento (_) e tractos de union (-).",
-       "config-connection-error": "$1.\n\nVerifica le servitor, nomine de usator e contrasigno hic infra e reproba.",
+       "config-connection-error": "$1.\n\nVerifica le servitor, nomine de usator e contrasigno e reproba. Si tu usa \"localhost\" como nomine de servitor, essaya substituer \"127.0.0.1\" (o vice versa).",
        "config-invalid-schema": "Schema invalide pro MediaWiki \"$1\".\nUsa solmente litteras ASCII (a-z, A-Z), numeros (0-9) e characteres de sublineamento (_).",
        "config-db-sys-create-oracle": "Le installator supporta solmente le uso de un conto SYSDBA pro le creation de un nove conto.",
        "config-db-sys-user-exists-oracle": "Le conto de usator \"$1\" ja existe. SYSDBA pote solmente esser usate pro le creation de un nove conto!",
        "config-install-mainpage-failed": "Non poteva inserer le pagina principal: $1",
        "config-install-done": "<strong>Felicitationes!</strong>\nTu ha installate MediaWiki.\n\nLe installator ha generate un file <code>LocalSettings.php</code>.\nIste contine tote le configuration.\n\nEs necessari discargar lo e poner lo in le base del installation wiki (le mesme directorio que index.php).\nLe discargamento debe haber comenciate automaticamente.\n\nSi le discargamento non ha comenciate, o si illo esseva cancellate, recomencia le discargamento con un clic sur le ligamine sequente:\n\n$3\n\n<strong>Nota:</strong> Si tu non discarga iste file de configuration ora, illo non essera disponibile plus tarde.\n\nPost facer isto, tu pote <strong>[$2 entrar in tu wiki]</strong>.",
        "config-install-done-path": "<strong>Felicitationes!</strong>\nTu ha installate MediaWiki.\n\nLe installator ha generate un file <code>LocalSettings.php</code>.\nIste contine tote le configuration.\n\nEs necessari discargar lo e poner lo in <code>$4</code>.\nLe discargamento debe haber comenciate automaticamente.\n\nSi le discargamento non ha comenciate, o si illo esseva cancellate, recomencia le discargamento con un clic sur le ligamine sequente:\n\n$3\n\n<strong>Nota:</strong> Si tu non discarga iste file de configuration ora, illo non essera disponibile plus tarde.\n\nPost facer isto, tu pote <strong>[$2 entrar in tu wiki]</strong>.",
-       "config-install-success": "MediaWiki ha essite installate con successo. Tu pote ora\nvisitar <$1$2> pro vider tu wiki.\nSi tu ha questiones, consulta nostre lista de questiones frequentemente ponite:\n<https://www.mediawiki.org/wiki/Manual:FAQ> o usa un del\nforos de supporto indicate sur ille pagina.",
+       "config-install-success": "MediaWiki ha essite installate con successo. Tu pote ora\nvisitar <$1$2> pro vider tu wiki.\nSi tu ha questiones, consulta nostre lista de questiones frequentemente ponite:\n<https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ> o usa un del\nforos de supporto indicate sur ille pagina.",
        "config-download-localsettings": "Discargar <code>LocalSettings.php</code>",
        "config-help": "adjuta",
        "config-help-tooltip": "clicca pro displicar",
index 1d7e908..5be6e03 100644 (file)
@@ -21,7 +21,8 @@
                        "Einreiher",
                        "Tosky",
                        "Selven",
-                       "Sarah Bernabei"
+                       "Sarah Bernabei",
+                       "ArTrix"
                ]
        },
        "config-desc": "Programma di installazione per MediaWiki",
@@ -96,6 +97,7 @@
        "config-no-cli-uploads-check": "<strong>Attenzione:</strong> la directory predefinita per i caricamenti (<code>$1</code>) non è stata verificata per la vulnerabilità sull'esecuzione arbitraria di script durante l'installazione da linea di comando.",
        "config-brokenlibxml": "Il tuo sistema ha una combinazione di versioni di PHP e libxml2 che è difettosa e che può provocare un danneggiamento non visibile di dati in MediaWiki ed in altre applicazioni per il web.\nAggiorna a libxml2 2.7.3 o successivo ([https://bugs.php.net/bug.php?id=45996 il bug è studiato dal lato PHP]).\nInstallazione interrotta.",
        "config-suhosin-max-value-length": "Suhosin è installato e limita il parametro GET <code>length</code> a $1 byte.\nIl componente MediaWiki ResourceLoader funzionerà aggirando questo limite, ma riducendo le prestazioni.\nSe possibile, dovresti impostare <code>suhosin.get.max_value_length</code> a 1024 o superiore in <code>php.ini</code>, ed impostare <code>$wgResourceLoaderMaxQueryLength</code> allo stesso valore in <code>LocalSettings.php</code>.",
+       "config-using-32bit": "<strong>Attenzione</strong> sembra che il tuo sistema utilizzi interi a 32-bit, ciò [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit non è raccomandato].",
        "config-db-type": "Tipo di database:",
        "config-db-host": "Host del database:",
        "config-db-host-help": "Se il server del tuo database è su un server diverso, immetti qui il nome dell'host o il suo indirizzo IP.\n\nSe stai utilizzando un web hosting condiviso, il tuo hosting provider dovrebbe fornirti il nome host corretto nella sua documentazione.\n\nSe stai utilizzando MySQL, l'uso di \"localhost\" potrebbe non funzionare correttamente come nome del server. In caso di problemi, prova a impostare \"127.0.0.1\" come indirizzo IP locale.\n\nSe usi PostgreSQL, lascia questo campo vuoto per consentire di connettersi tramite un socket Unix.",
        "config-help-tooltip": "fai clic per espandere",
        "config-nofile": "Il file \"$1\" non può essere trovato. È stato eliminato?",
        "config-extension-link": "Sapevi che il tuo wiki supporta le  [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions estensioni]?\n\nPuoi navigare tra le [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category estensioni per categoria].",
+       "config-skins-screenshots": "$1 (screenshots: $2)",
        "config-extensions-requires": "$1 (richiesto $2)",
+       "config-screenshot": "screenshot",
        "config-extension-not-found": "Impossibile trovare il file di registrazione per l'estensione \"$1\"",
        "config-extension-dependency": "Si è verificato un errore di dipendenza durante l'installazione dell'estensione \"$1\": $2",
        "mainpagetext": "<strong>MediaWiki è stato installato.</strong>",
index 88f87f8..f9debaf 100644 (file)
@@ -74,13 +74,11 @@ use Psr\Log\NullLogger;
  *
  * ### Deploying WANObjectCache
  *
- * There are three supported ways to set up broadcasted operations:
+ * There are two supported ways to set up broadcasted operations:
  *
- *   - A) Configure the 'purge' EventRelayer to point to a valid PubSub endpoint
- *        that has subscribed listeners on the cache servers applying the cache updates.
- *   - B) Omit the 'purge' EventRelayer parameter and set up mcrouter as the underlying cache
- *        backend, using a memcached BagOStuff class for the 'cache' parameter. The 'region'
- *        and 'cluster' parameters must be provided and 'mcrouterAware' must be set to `true`.
+ *   - A) Set up mcrouter as the underlying cache backend, using a memcached BagOStuff class
+ *        for the 'cache' parameter. The 'region' and 'cluster' parameters must be provided
+ *        and 'mcrouterAware' must be set to `true`.
  *        Configure mcrouter as follows:
  *          - 1) Use Route Prefixing based on region (datacenter) and cache cluster.
  *               See https://github.com/facebook/mcrouter/wiki/Routing-Prefix and
@@ -90,11 +88,11 @@ use Psr\Log\NullLogger;
  *               configure 'set' and 'delete' operations to go to all servers in the cache
  *               cluster, instead of just one server determined by hashing.
  *               See https://github.com/facebook/mcrouter/wiki/List-of-Route-Handles.
- *   - C) Omit the 'purge' EventRelayer parameter and set up dynomite as cache middleware
- *        between the web servers and either memcached or redis. This will broadcast all
- *        key setting operations, not just purges, which can be useful for cache warming.
- *        Writes are eventually consistent via the Dynamo replication model.
- *        See https://github.com/Netflix/dynomite.
+ *   - B) Set up dynomite as a cache middleware between the web servers and either memcached
+ *        or redis and use it as the underlying cache backend, using a memcached BagOStuff
+ *        class for the 'cache' parameter. This will broadcast all key setting operations,
+ *        not just purges, which can be useful for cache warming. Writes are eventually
+ *        consistent via the Dynamo replication model. See https://github.com/Netflix/dynomite.
  *
  * Broadcasted operations like delete() and touchCheckKey() are done asynchronously
  * in all datacenters this way, though the local one should likely be near immediate.
@@ -120,10 +118,6 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        protected $cache;
        /** @var MapCacheLRU[] Map of group PHP instance caches */
        protected $processCaches = [];
-       /** @var string Purge channel name */
-       protected $purgeChannel;
-       /** @var EventRelayer Bus that handles purge broadcasts */
-       protected $purgeRelayer;
        /** @bar bool Whether to use mcrouter key prefixing for routing */
        protected $mcrouterAware;
        /** @var string Physical region for mcrouter use */
@@ -141,9 +135,6 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        /** @var float Unix timestamp of the oldest possible valid values */
        protected $epoch;
 
-       /** @var int ERR_* constant for the "last error" registry */
-       protected $lastRelayError = self::ERR_NONE;
-
        /** @var int Callback stack depth for getWithSetCallback() */
        private $callbackDepth = 0;
        /** @var mixed[] Temporary warm-up cache */
@@ -235,8 +226,6 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        /**
         * @param array $params
         *   - cache    : BagOStuff object for a persistent cache
-        *   - channels : Map of (action => channel string). Actions include "purge".
-        *   - relayers : Map of (action => EventRelayer object). Actions include "purge".
         *   - logger   : LoggerInterface object
         *   - stats    : LoggerInterface object
         *   - asyncHandler : A function that takes a callback and runs it later. If supplied,
@@ -260,8 +249,6 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         */
        public function __construct( array $params ) {
                $this->cache = $params['cache'];
-               $this->purgeChannel = $params['channels']['purge'] ?? self::DEFAULT_PURGE_CHANNEL;
-               $this->purgeRelayer = $params['relayers']['purge'] ?? new EventRelayerNull( [] );
                $this->region = $params['region'] ?? 'main';
                $this->cluster = $params['cluster'] ?? 'wan-main';
                $this->mcrouterAware = !empty( $params['mcrouterAware'] );
@@ -1238,9 +1225,9 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
 
                $preCallbackTime = $this->getCurrentTime();
                // Determine if a cached value regeneration is needed or desired
-               if ( $value !== false
-                       && $this->isAliveOrInGracePeriod( $curTTL, $graceTTL )
-                       && $this->isValid( $value, $versioned, $asOf, $minTime )
+               if (
+                       $this->isValid( $value, $versioned, $asOf, $minTime ) &&
+                       $this->isAliveOrInGracePeriod( $curTTL, $graceTTL )
                ) {
                        $preemptiveRefresh = (
                                $this->worthRefreshExpiring( $curTTL, $lowTTL ) ||
@@ -1264,44 +1251,49 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
                        }
                }
 
-               // A deleted key with a negative TTL left must be tombstoned
-               $isTombstone = ( $curTTL !== null && $value === false );
-               if ( $isTombstone && $lockTSE <= 0 ) {
-                       // Use the INTERIM value for tombstoned keys to reduce regeneration load
-                       $lockTSE = self::INTERIM_KEY_TTL;
-               }
-               // Assume a key is hot if requested soon after invalidation
-               $isHot = ( $curTTL !== null && $curTTL <= 0 && abs( $curTTL ) <= $lockTSE );
-               // Use the mutex if there is no value and a busy fallback is given
-               $checkBusy = ( $busyValue !== null && $value === false );
-               // Decide whether a single thread should handle regenerations.
-               // This avoids stampedes when $checkKeys are bumped and when preemptive
-               // renegerations take too long. It also reduces regenerations while $key
-               // is tombstoned. This balances cache freshness with avoiding DB load.
-               $useMutex = ( $isHot || ( $isTombstone && $lockTSE > 0 ) || $checkBusy );
+               // Only a tombstoned key yields no value yet has a (negative) "current time left"
+               $isKeyTombstoned = ( $curTTL !== null && $value === false );
+               // Decide if only one thread should handle regeneration at a time
+               $useMutex =
+                       // Note that since tombstones no-op set(), $lockTSE and $curTTL cannot be used to
+                       // deduce the key hotness because $curTTL will always keep increasing until the
+                       // tombstone expires or is overwritten by a new tombstone. Also, even if $lockTSE
+                       // is not set, constant regeneration of a key for the tombstone lifetime might be
+                       // very expensive. Assume tombstoned keys are possibly hot in order to reduce
+                       // the risk of high regeneration load after the delete() method is called.
+                       $isKeyTombstoned ||
+                       // Assume a key is hot if requested soon ($lockTSE seconds) after invalidation.
+                       // This avoids stampedes when timestamps from $checkKeys/$touchedCallback bump.
+                       ( $curTTL !== null && $curTTL <= 0 && abs( $curTTL ) <= $lockTSE ) ||
+                       // Assume a key is hot if there is no value and a busy fallback is given.
+                       // This avoids stampedes on eviction or preemptive regeneration taking too long.
+                       ( $busyValue !== null && $value === false );
 
                $lockAcquired = false;
                if ( $useMutex ) {
                        // Acquire a datacenter-local non-blocking lock
                        if ( $this->cache->add( self::MUTEX_KEY_PREFIX . $key, 1, self::LOCK_TTL ) ) {
-                               // Lock acquired; this thread should update the key
+                               // Lock acquired; this thread will recompute the value and update cache
                                $lockAcquired = true;
-                       } elseif ( $value !== false && $this->isValid( $value, $versioned, $asOf, $minTime ) ) {
+                       } elseif ( $this->isValid( $value, $versioned, $asOf, $minTime ) ) {
+                               // Lock not acquired and a stale value exists; use the stale value
                                $this->stats->increment( "wanobjectcache.$kClass.hit.stale" );
-                               // If it cannot be acquired; then the stale value can be used
+
                                return $value;
                        } else {
-                               // Use the INTERIM value for tombstoned keys to reduce regeneration load.
-                               // For hot keys, either another thread has the lock or the lock failed;
-                               // use the INTERIM value from the last thread that regenerated it.
-                               $value = $this->getInterimValue( $key, $versioned, $minTime, $asOf );
-                               if ( $value !== false ) {
-                                       $this->stats->increment( "wanobjectcache.$kClass.hit.volatile" );
-
-                                       return $value;
+                               // Lock not acquired and no stale value exists
+                               if ( $isKeyTombstoned ) {
+                                       // Use the INTERIM value from the last thread that regenerated it if possible
+                                       $value = $this->getInterimValue( $key, $versioned, $minTime, $asOf );
+                                       if ( $value !== false ) {
+                                               $this->stats->increment( "wanobjectcache.$kClass.hit.volatile" );
+
+                                               return $value;
+                                       }
                                }
-                               // Use the busy fallback value if nothing else
+
                                if ( $busyValue !== null ) {
+                                       // Use the busy fallback value if nothing else
                                        $miss = is_infinite( $minTime ) ? 'renew' : 'miss';
                                        $this->stats->increment( "wanobjectcache.$kClass.$miss.busy" );
 
@@ -1324,24 +1316,24 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
                }
                $valueIsCacheable = ( $value !== false && $ttl >= 0 );
 
-               // When delete() is called, writes are write-holed by the tombstone,
-               // so use a special INTERIM key to pass the new value around threads.
-               if ( ( $isTombstone && $lockTSE > 0 ) && $valueIsCacheable ) {
-                       $tempTTL = max( 1, (int)$lockTSE ); // set() expects seconds
-                       $newAsOf = $this->getCurrentTime();
-                       $wrapped = $this->wrap( $value, $tempTTL, $newAsOf );
-                       // Avoid using set() to avoid pointless mcrouter broadcasting
-                       $this->setInterimValue( $key, $wrapped, $tempTTL );
-               }
-
-               // Save the value unless a mutex-winning thread is already expected to do that
-               if ( $valueIsCacheable && ( !$useMutex || $lockAcquired ) ) {
-                       $setOpts['lockTSE'] = $lockTSE;
-                       $setOpts['staleTTL'] = $staleTTL;
-                       // Use best known "since" timestamp if not provided
-                       $setOpts += [ 'since' => $preCallbackTime ];
-                       // Update the cache; this will fail if the key is tombstoned
-                       $this->set( $key, $value, $ttl, $setOpts );
+               if ( $valueIsCacheable ) {
+                       if ( $isKeyTombstoned ) {
+                               // When delete() is called, writes are write-holed by the tombstone,
+                               // so use a special INTERIM key to pass the new value among threads.
+                               $tempTTL = max( self::INTERIM_KEY_TTL, (int)$lockTSE ); // set() expects seconds
+                               $newAsOf = $this->getCurrentTime();
+                               $wrapped = $this->wrap( $value, $tempTTL, $newAsOf );
+                               // Avoid using set() to avoid pointless mcrouter broadcasting
+                               $this->setInterimValue( $key, $wrapped, $tempTTL );
+                       } elseif ( !$useMutex || $lockAcquired ) {
+                               // Save the value unless a lock-winning thread is already expected to do that
+                               $setOpts['lockTSE'] = $lockTSE;
+                               $setOpts['staleTTL'] = $staleTTL;
+                               // Use best known "since" timestamp if not provided
+                               $setOpts += [ 'since' => $preCallbackTime ];
+                               // Update the cache; this will fail if the key is tombstoned
+                               $this->set( $key, $value, $ttl, $setOpts );
+                       }
                }
 
                if ( $lockAcquired ) {
@@ -1395,7 +1387,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
 
                $wrapped = $this->cache->get( self::INTERIM_KEY_PREFIX . $key );
                list( $value ) = $this->unwrap( $wrapped, $this->getCurrentTime() );
-               if ( $value !== false && $this->isValid( $value, $versioned, $asOf, $minTime ) ) {
+               if ( $this->isValid( $value, $versioned, $asOf, $minTime ) ) {
                        $asOf = $wrapped[self::FLD_TIME];
 
                        return $value;
@@ -1747,15 +1739,6 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         * @return int ERR_* class constant for the "last error" registry
         */
        final public function getLastError() {
-               if ( $this->lastRelayError ) {
-                       // If the cache and the relayer failed, focus on the latter.
-                       // An update not making it to the relayer means it won't show up
-                       // in other DCs (nor will consistent re-hashing see up-to-date values).
-                       // On the other hand, if just the cache update failed, then it should
-                       // eventually be applied by the relayer.
-                       return $this->lastRelayError;
-               }
-
                $code = $this->cache->getLastError();
                switch ( $code ) {
                        case BagOStuff::ERR_NONE:
@@ -1774,7 +1757,6 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         */
        final public function clearLastError() {
                $this->cache->clearLastError();
-               $this->lastRelayError = self::ERR_NONE;
        }
 
        /**
@@ -1923,26 +1905,13 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
                                $this->makePurgeValue( $this->getCurrentTime(), self::HOLDOFF_NONE ),
                                $ttl
                        );
-               } elseif ( $this->purgeRelayer instanceof EventRelayerNull ) {
+               } else {
                        // This handles the mcrouter and the single-DC case
                        $ok = $this->cache->set(
                                $key,
                                $this->makePurgeValue( $this->getCurrentTime(), self::HOLDOFF_NONE ),
                                $ttl
                        );
-               } else {
-                       $event = $this->cache->modifySimpleRelayEvent( [
-                               'cmd' => 'set',
-                               'key' => $key,
-                               'val' => 'PURGED:$UNIXTIME$:' . (int)$holdoff,
-                               'ttl' => max( $ttl, self::TTL_SECOND ),
-                               'sbt' => true, // substitute $UNIXTIME$ with actual microtime
-                       ] );
-
-                       $ok = $this->purgeRelayer->notify( $this->purgeChannel, $event );
-                       if ( !$ok ) {
-                               $this->lastRelayError = self::ERR_RELAY;
-                       }
                }
 
                return $ok;
@@ -1959,19 +1928,9 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
                        // See https://github.com/facebook/mcrouter/wiki/Multi-cluster-broadcast-setup
                        // Wildcards select all matching routes, e.g. the WAN cluster on all DCs
                        $ok = $this->cache->delete( "/*/{$this->cluster}/{$key}" );
-               } elseif ( $this->purgeRelayer instanceof EventRelayerNull ) {
+               } else {
                        // Some other proxy handles broadcasting or there is only one datacenter
                        $ok = $this->cache->delete( $key );
-               } else {
-                       $event = $this->cache->modifySimpleRelayEvent( [
-                               'cmd' => 'delete',
-                               'key' => $key,
-                       ] );
-
-                       $ok = $this->purgeRelayer->notify( $this->purgeChannel, $event );
-                       if ( !$ok ) {
-                               $this->lastRelayError = self::ERR_RELAY;
-                       }
                }
 
                return $ok;
@@ -2076,16 +2035,18 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        }
 
        /**
-        * Check whether $value is appropriately versioned and not older than $minTime (if set)
+        * Check if $value is not false, versioned (if needed), and not older than $minTime (if set)
         *
-        * @param array $value
+        * @param array|bool $value
         * @param bool $versioned
         * @param float $asOf The time $value was generated
         * @param float $minTime The last time the main value was generated (0.0 if unknown)
         * @return bool
         */
        protected function isValid( $value, $versioned, $asOf, $minTime ) {
-               if ( $versioned && !isset( $value[self::VFLD_VERSION] ) ) {
+               if ( $value === false ) {
+                       return false;
+               } elseif ( $versioned && !isset( $value[self::VFLD_VERSION] ) ) {
                        return false;
                } elseif ( $minTime > 0 && $asOf < $minTime ) {
                        return false;
index 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 072c3c6..df9259b 100644 (file)
@@ -895,7 +895,8 @@ class WikiPage implements Page, IDBAccessObject {
         *   Revision::RAW              get the text regardless of permissions
         * @param User|null $user User object to check for, only if FOR_THIS_USER is passed
         *   to the $audience parameter
-        * @return string Comment stored for the last article revision
+        * @return string|null Comment stored for the last article revision, or null if the specified
+        *  audience does not have access to the comment.
         */
        public function getComment( $audience = Revision::FOR_PUBLIC, User $user = null ) {
                $this->loadLastEdit();
index 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 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 02c33b5..2fe38ed 100644 (file)
@@ -171,7 +171,7 @@ class SpecialBookSources extends SpecialPage {
                        if ( $content instanceof TextContent ) {
                                // XXX: in the future, this could be stored as structured data, defining a list of book sources
 
-                               $text = $content->getNativeData();
+                               $text = $content->getText();
                                $out->addWikiTextAsInterface( str_replace( 'MAGICNUMBER', $isbn, $text ) );
 
                                return true;
index e4672f8..6022ff4 100644 (file)
@@ -146,15 +146,18 @@ class DeletedContributionsPage extends SpecialPage {
                if ( $talk ) {
                        $tools = SpecialContributions::getUserLinks( $this, $userObj );
 
-                       # Link to contributions
-                       $insert['contribs'] = $linkRenderer->makeKnownLink(
+                       $contributionsLink = $linkRenderer->makeKnownLink(
                                SpecialPage::getTitleFor( 'Contributions', $nt->getDBkey() ),
                                $this->msg( 'sp-deletedcontributions-contribs' )->text()
                        );
-
-                       // Swap out the deletedcontribs link for our contribs one
-                       $tools = wfArrayInsertAfter( $tools, $insert, 'deletedcontribs' );
-                       unset( $tools['deletedcontribs'] );
+                       if ( isset( $tools['deletedcontribs'] ) ) {
+                               // Swap out the deletedcontribs link for our contribs one
+                               $tools = wfArrayInsertAfter(
+                                       $tools, [ 'contribs' => $contributionsLink ], 'deletedcontribs' );
+                               unset( $tools['deletedcontribs'] );
+                       } else {
+                               $tools['contribs'] = $contributionsLink;
+                       }
 
                        $links = $this->getLanguage()->pipeList( $tools );
 
index 9654bb7..3e560ad 100644 (file)
@@ -493,7 +493,7 @@ class SpecialUndelete extends SpecialPage {
                                'readonly' => 'readonly',
                                'cols' => 80,
                                'rows' => 25
-                       ], $content->getNativeData() . "\n" );
+                       ], $content->getText() . "\n" );
 
                        $buttonFields[] = new OOUI\ButtonInputWidget( [
                                'type' => 'submit',
index 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 6037d37..6d9d6b0 100644 (file)
@@ -10,7 +10,7 @@
                                <div class="mw-rcfilters-ui-highlights-color-c5" data-color="c5"></div>
                        </div>
                </td>
-               <td><span class="mw-collapsible-toggle mw-collapsible-arrow mw-enhancedchanges-arrow mw-enhancedchanges-arrow-space"></span></td>
+               <td><span class="mw-collapsible-toggle mw-collapsible-arrow mw-enhancedchanges-arrow mw-enhancedchanges-arrow-space mw-collapsible-toggle-collapsed"></span></td>
                <td class="mw-changeslist-line-prefix">{{{ prefix }}}</td>
                <td class="mw-enhanced-rc" colspan="2">{{{ collectedRcFlags }}}&#160;{{ timestamp }}&#160;</td>
                <td class="mw-changeslist-line-inner">
index 006e3b7..8aa7c87 100644 (file)
@@ -1033,7 +1033,7 @@ class LanguageConverter {
                                $revision = Revision::newFromTitle( $title );
                                if ( $revision ) {
                                        if ( $revision->getContentModel() == CONTENT_MODEL_WIKITEXT ) {
-                                               $txt = $revision->getContent( Revision::RAW )->getNativeData();
+                                               $txt = $revision->getContent( Revision::RAW )->getText();
                                        }
 
                                        // @todo in the future, use a specialized content model, perhaps based on json!
index 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..2636d28 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-personal": "پوروفایل کاریار",
+       "prefs-rc": "آلشدکاریٱل ایسنی",
        "prefs-watchlist": "ساٛیل بٱرگ",
        "prefs-editwatchlist": "آلشدکاری ساٛیل بٱرگ",
+       "prefs-watchlist-edits-max": "شوماراْ بیشتروناْ:1000",
+       "prefs-watchlist-token": "نشوناْ ساٛیل بٱرگ:",
        "prefs-misc": "شيڤسدن",
        "prefs-resetpass": "آلشد کردن رازیناْ گوڌٱشتن",
+       "prefs-setemail": "تیرنشوݩ ٱنجوماناماْ تۊناْ بزنین.",
+       "prefs-rendering": "شٱک و شیڤات",
        "saveprefs": "کۊ کردن",
+       "prefs-editing": "ب هال و بال ڤیرایشت",
        "searchresultshead": "پاٛی جۊری",
        "stub-threshold-sample-link": "نمۊناْ",
        "stub-threshold-disabled": "ناکونشتگٱر کردن",
+       "prefs-help-recentchangescount": "شوماراْ بیشتروناْ:1000",
        "timezonelegend": "گات راستاگٱ:",
        "localtime": "گات ڤولاتی:",
+       "timezoneuseserverdefault": "ڤیکی پیش فٱرز($1) ڤٱنین ڤا کار",
        "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-editusergroup": "آلشدکاری {{GENDER:$1|کاریار}} جٱرغاْیٱل",
+       "userrights-viewusergroup": "دیڌن {{GENDER:$1|کاریار}} جٱرغاْیٱل",
+       "saveusergroups": "کۊ کردن {{GENDER:$1|کاریار}} جٱرغاْیٱل",
+       "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-editmywatchlist": "ساٛیل بٱرگ خوتوݩ ناْ آلشد کونین",
+       "grant-editprotected": "آلشدکاری بٱلگاْیٱل پٱر و پیم ڤابیڌاْ",
+       "grant-uploadeditmovefile": "سوڤار کردن، جانشین کردن، و جا ب جا کردن جانیایٱل",
+       "grant-uploadfile": "سوڤار کردن جانیایٱل تازاْ.",
+       "grant-viewmywatchlist": "ڤیر ڤٱنین ڤا ساٛیل بٱرگ خوتوݩ",
        "newuserlogpage": "راسد ڤابیاْ ڤا کاریار",
        "rightslog": "پهرستنۊماْ حقوق کاریار",
+       "action-read": "ای بٱلگاْ بخون",
        "action-edit": "ای بلگٱ نٱ آلشدکاری کو",
+       "action-createpage": "ای بٱلگاْ ناْ راسد کو",
        "action-createaccount": "ڤاکل ای هساْو مؽنتوری",
        "action-move": "جابجا کردن ای بٱلگاْ",
+       "action-movefile": "جا ب جا کردن ای بٱلگاْ",
+       "action-upload": "ای جانیا ناْ سوڤار کونین",
+       "action-delete": "ای بٱلگاْ ناْ پاکسا کو",
+       "action-deleterevision": "پاکسا کردن ڤانیاریٱل",
        "action-sendemail": "ٱنجوماناماْ باْسی ڤابیڌاْ.",
+       "action-editmywatchlist": "ساٛیل بٱرگ خوتوݩ ناْ آلشد کونین",
+       "action-viewmywatchlist": "ڤیر ڤٱنین ڤا ساٛیل بٱرگ خوتوݩ",
        "nchanges": "$1 {{PLURAL:$1|آلشدکاری|آلشدکاریٱل}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|ز آخری دیڌن}}",
        "enhancedrc-history": "ڤیرگار",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (هٱچونوݩ ڤاْ[[Special:NewPages|نومگٱ بٱلٛگیٱل نۊ]] ساٛل ؤوٱنین)",
        "recentchanges-submit": "دیاری کردن",
        "rcfilters-tag-remove": "ڤورداشتن '$1'",
+       "rcfilters-activefilters-hide": "قام کردن",
        "rcfilters-activefilters-show": "دیاری کردن",
+       "rcfilters-days-show-days": "$1 {{PLURAL:$1|رۊز|رۊزٱل}}",
+       "rcfilters-quickfilters": "فیلترٱل کۊ ڤابیڌاْ",
+       "rcfilters-quickfilters-placeholder-title": "هیژ فیلتری کۊ نٱڤابیڌاْ",
+       "rcfilters-savedqueries-defaultlabel": "فیلترٱل کۊ ڤابیڌاْ",
+       "rcfilters-savedqueries-rename": "ز نۉ نوم نهاڌن",
        "rcfilters-savedqueries-remove": "پاکسا کردن",
        "rcfilters-savedqueries-new-name-label": "نوم",
        "rcfilters-savedqueries-apply-label": "راسد کردن فیلتر",
        "rcfilters-savedqueries-cancel-label": "ٱنجومشیڤ کردن",
+       "rcfilters-invalid-filter": "فیلتر نادیار",
+       "rcfilters-filterlist-title": "فیلترٱل",
+       "rcfilters-filter-editsbyself-label": "ایسا آلشدس کردین",
+       "rcfilters-filter-user-experience-level-registered-label": "سٱڤت نام ڤابیڌاْ",
+       "rcfilters-filter-user-experience-level-unregistered-label": "سٱڤت نام نٱڤابیڌاْ",
        "rcfilters-filter-bots-label": "بوت",
+       "rcfilters-filter-humans-label": "آئم(بوت نٱ)",
+       "rcfilters-filter-minor-label": "هیرداْ ڤیرایشت",
+       "rcfilters-filter-watchlist-watched-label": "میٛن ساٛیل بٱرگ",
+       "rcfilters-filter-watchlist-watched-description": "آلشدکاریٱل میٛن بٱلگاْیٱلی کاْ میٛن ساٛیل بٱرگتونن",
+       "rcfilters-filter-watchlistactivity-seen-label": "آلشدکاریٱل دیاری کرداْ",
+       "rcfilters-filtergroup-changetype": "جۊر آلشدکاری",
+       "rcfilters-filter-pageedits-label": "آلشدکاریٱل بٱلگاْ",
+       "rcfilters-filter-newpages-label": "راسد کردن بٱلگاْ",
+       "rcfilters-filter-categorization-label": "آلشدکاری دٱسداْیٱل",
+       "rcfilters-filtergroup-lastRevision": "آخری ڤانیٱریٱل",
+       "rcfilters-filter-lastrevision-label": "آخری ڤانیٱری",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:نیڌ</strong> $1",
        "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|بایت|بایتٱل}} نیا آلشدکاری",
+       "newsectionsummary": "/* $1 */ بٱئرجا تازاْ",
        "rc-old-title": "زاتٱ چی \"$1\" راس ڤابیڌاْ",
        "recentchangeslinked": "آلشدکاریٱل تاْ یٱک",
        "recentchangeslinked-feed": "تغییرات مرتبط",
        "recentchangeslinked-summary": "نوم یٱ بٱلٛگاْ ناْ ڤامؽ کونین تا آلشڌکاری بٱلٛگیٱل کاْ ڤاْ هومؽنڌارکرڌیناْ یا زاْ هو مؽنڌاری گریڌین ناْ ڤڤینین(سی نیٱشڌن هوم ڤٱنوناْ یٱ بنکۊ چونوݩ چی ائی ناْ ڤزٱنین:نوم بونکۊ). \nآلشڌکاریٱل بلٛگیٱلؽ کاْ مؽن[[Special:Watchlist|نومگٱ دیناگریٱل اؽسا]] هؽڌن <strong>ؤٱرڌار</strong> نمای اْڤۊهاْ",
        "recentchangeslinked-page": "نوم بٱلگاْ:",
        "recentchangeslinked-to": "آلشدکاریٱلی کاْ میٛن بٱلگاْیٱل هومپاٛیڤٱند بیناْ ب جا بٱلگاْ داڌاْ ڤابیڌاْ دیاریسۊن کو",
+       "recentchanges-page-added-to-category": "[[:$1]] اْزاف ڤابی ب دٱسداْ",
+       "recentchanges-page-removed-from-category": "[[:$1]] ز دٱسداْ جوڌا ڤابی",
        "upload": "سوڤار کردن جانیا",
-       "uploadbtn": "آپلود فایل",
+       "uploadbtn": "سوڤار کردن جانیا",
+       "uploadnologin": "هیٛنی نٱڤۊڌیناْ ڤامیٛن",
+       "uploaderror": "خٱتا سوڤارکرد",
        "uploadlogpage": "پهرستنۊماْ سوڤارکرد",
+       "filename": "نوم جانیا",
        "filedesc": "چكستٱ",
+       "filereuploadsummary": "آلشدکاریٱل جانیا:",
+       "filesource": "سرچشمٱ:",
+       "empty-file": "جانیایی کاْ داڌینساْ هالیاْ.",
+       "file-too-large": "جانیایی کاْ داڌینساْ غٱلٱڤاْ گٱپاْ",
+       "filename-tooshort": "نوم جانیا غٱلٱڤاْ کۊچیراْ.",
+       "filetype-banned": "چونو جانیایی قٱڌقان ڤابیڌاْ.",
+       "illegal-filename": "سلا نی چونو نومی سی جانیا بیٛنین",
+       "unknown-error": "یٱ خٱتا نادیار اْتفاق ڤٱسداْ.",
+       "tmp-create-error": "نیبۊ یٱ جانیا موڤٱقٱتی راسد کونین.",
+       "uploadwarning": "هوشدا سوڤارکرد",
+       "savefile": "کۊ کردن جانیا",
+       "uploaddisabled": "سوڤارکرد ز کار ڤٱسداْ.",
+       "copyuploaddisabled": "سوڤار کرد ڤا یۊ آر اْل ز کار ڤٱسداْ.",
+       "uploaddisabledtext": "سوڤارکرد جانیا ز کار ڤٱسداْ.",
+       "upload-source": "سرچشماْ جانیا",
+       "sourcefilename": "سرچشماْ نوم جانیا:",
+       "sourceurl": "سرچشماْ يۊ آر ال:",
+       "watchthisupload": "ساٛیل ای جانیا کونین",
+       "upload-proto-error": "پورتوکول نادوروسد",
+       "upload-file-error": "خٱتا میٛنجقایی",
+       "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": "دسته های دسته بندی نوابیده",
        "mostimages": "تصاویری که بیشتر زه همه به هونو لینک داده وابیده",
        "mostrevisions": "صفحات با تعداد اصلاحات زیاد",
        "prefixindex": "نماواٛ نهاڤٱنڌ",
+       "prefixindex-submit": "دیاری کردن",
        "shortpages": "صفحات کوتاه",
        "longpages": "صفحات بلند",
        "deadendpages": "صفحات بن بست ولاینحل",
        "protectedpages": "صفحات حفاظت وحمایت وابیده",
+       "protectedpages-filters": "فيلترٱل",
+       "protectedpages-page": "بٱلگاْ",
+       "protectedpages-expiry": "خلاس ڤابیڌاْ:",
+       "protectedpages-performer": "کاریار پٱر و پیم ڤابیڌاْ.",
+       "protectedpages-params": "پینیارٱل پٱر و پیم کاری",
+       "protectedpages-reason": "دلیل",
+       "protectedpages-unknown-timestamp": "نادیار",
+       "protectedpages-unknown-performer": "کاریار نادیار",
        "listusers": "نومگاْ کاریار",
+       "usereditcount": "$1 {{PLURAL:$1|آلشدکاری|آلشدکاریٱل}}",
+       "usercreated": "{{GENDER:$3|راسد ڤابیڌاْ}} سی $1 تا $2",
        "newpages": "بٱلگاْیٱل نۏ",
-       "ancientpages": "کهنه ترین صفحات",
-       "move": "جابجا کردن",
-       "movethispage": "جابجایی ای صفحه",
+       "newpages-submit": "دیاری کردن",
+       "newpages-username": "نوم کاریاری:",
+       "ancientpages": "بٱلگاْیٱل دینداتری",
+       "move": "جاب جا کردن",
+       "movethispage": "جاب جا کردن ای بٱلگاْ",
        "pager-newer-n": "{{PLURAL:ڤانیاتر ز 1|ڤانیاتر ز $1}}",
        "pager-older-n": "{{PLURAL:$1|گٱپسالتر 1|گٱپسالتر $1}}",
+       "apihelp": "هومیاری اْی پی آی",
+       "apihelp-no-such-module": "ماجۊل \"$1\" دیاری نٱکرد.",
        "booksources": "سرچشماْیٱل کتاو",
        "booksources-search-legend": "پاٛ جۊری سی سٱرچٱشمٱیٱل کتاو",
        "booksources-search": "پاٛی جۊری",
index f4e74cb..eb808fd 100644 (file)
@@ -83,7 +83,7 @@
        "mon": "Lun",
        "tue": "Meu",
        "wed": "Mer",
-       "thu": "Meu",
+       "thu": "Yaou",
        "fri": "Gwe",
        "sat": "Sad",
        "january": "Genver",
        "december-date": "$1 a viz Kerzu",
        "period-am": "mintin",
        "period-pm": "goude-merenn",
-       "pagecategories": "{{PLURAL:$1|Rummad |Rummad }}",
+       "pagecategories": "{{PLURAL:$1|Rummad|Rummadoù}}",
        "category_header": "Niver a bennadoù er rummad \"$1\"",
        "subcategories": "Isrummadoù",
        "category-media-header": "Restroù liesvedia er rummad \"$1\"",
        "duplicate-args-category": "Pajennoù a ra gant arguzennoù eilet er galvoù patrom",
        "duplicate-args-category-desc": "Er bajenn-mañ ez eus galvoù patroù a ra gant arguzennoù eilet, evel <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> pe <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "<strong>Diwallit :</strong>: Re a c'halvoù koustus e-keñver an arc'hwelioù parser zo er bajenn-mañ.\n\nDleout a rafe bezañ nebeutoc'h eget $2 {{PLURAL:$2|galv}}, ha {{PLURAL:$1|$1 galv}} zo.",
-       "expensive-parserfunction-category": "Pagjennoù enno re a c'halvoù koustus e-keñver an arc'hwelioù parser.",
+       "expensive-parserfunction-category": "Pajennoù enno re a c'halvoù koustus e-keñver an arc'hwelioù parser",
        "post-expand-template-inclusion-warning": "Diwallit : re a batromoù zo war ar bajenn-mañ.\nLod anezho a vo lakaet a-gostez.",
        "post-expand-template-inclusion-category": "Pajennoù enno re a batromoù",
        "post-expand-template-argument-warning": "Diwallit : war ar bajenn-mañ ez eus eus da nebeutañ un arventenn eus ur patrom zo re vras.\nA-gostez eo bet lezet an arventenn-se.",
index 85dfbdc..374ab74 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",
        "virus-unknownscanner": "antiviruso ke nêzanyeno:",
        "logouttext": "'''Henda şıma hesab ra veciyay.'''\n\nDiqat kerê ke tayê perri şenê hewna zey şıma kewtê ra cı bıasê, heta şıma ver-virê şanekerê (browserê) xo besterê.",
        "cannotlogoutnow-title": "Enewke ronıştışo nêracneyêno",
+       "cannotlogoutnow-text": "$1 karkerdışa ronıştış qefılnayış mıkum niyo.",
        "welcomeuser": "Heyr amey, $1!",
        "welcomecreation-msg": "Hesabê şıma abiyo.\n[[Special:Preferences|{{SITENAME}} vurnayişê tercihanê xo]], xo vir ra mekere.",
        "yourname": "Namey karberi:",
        "cannotloginnow-title": "Enewke ronıştışo nêabeno",
        "cannotloginnow-text": "$1 karkerdışa ronıştış akerdış mıkum niyo.",
        "cannotcreateaccount-title": "Nêşenay hesab rakerê",
+       "cannotcreateaccount-text": "Direkt hesab vıraştış na wiki sero mıkum niyo.",
        "yourdomainname": "Yewdestê şıma:",
        "password-change-forbidden": "Şıma na wiki de nêşenê parola bıvurnê.",
        "externaldberror": "Ya database de xeta esta ya zi heqê şıma çino şıma no hesab bıvurni.",
        "botpasswords-label-cancel": "Bıtexelne",
        "botpasswords-label-delete": "Bestere",
        "botpasswords-label-resetpassword": "Parola raçarne",
+       "botpasswords-label-grants": "İmtiyazê ravêrdey:",
        "botpasswords-label-grants-column": "Dayen",
+       "botpasswords-bad-appid": "Namey Boti \"$1\" ravêrde niyo.",
        "botpasswords-created-title": "Parolay boti vırazi yê",
        "botpasswords-updated-title": "Parolay boti rocane yê",
        "botpasswords-deleted-title": "Parolay boti esteri yê",
        "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",
        "userrights-expiry-current": "$1 de qediyeno",
        "userrights-expiry-none": "Bêdem",
        "userrights-expiry": "Qediyayış:",
+       "userrights-expiry-existing": "wextê qediyayişi yê mewcudi: $3, $2",
        "userrights-expiry-othertime": "Wexto bin:",
+       "userrights-expiry-options": "1 roc:1 day,1 hefte:1 week,1 aşme:1 month,3 aşmi:3 months,6 aşmi:6 months,1 sere:1 year",
        "userrights-conflict": "Heqan de karberi de dıbare vıcyayo! Kerem ke vurnayışane xo çımser ra ravyarne  u tesdiq keri.",
        "group": "Grube:",
        "group-user": "Karberi",
        "grant-group-high-volume": "Performansa aktiviteya vengê berzi",
        "grant-group-customization": "Şexsi kerdış u tercihi",
        "grant-group-administration": "Performans hereketa idarey",
+       "grant-group-private-information": "Derheqê şıma datayanê xısusa resayış",
        "grant-group-other": "Enwayi babet aktivitey",
        "grant-blockusers": "Karberi men ke u meni wedarne",
        "grant-createaccount": "Hesab vıraze",
        "rcfilters-days-show-hours": "($1 {{PLURAL:$1|saete|saeti}})",
        "rcfilters-quickfilters": "Parzûnê qeydbiyayeyi",
        "rcfilters-quickfilters-placeholder-title": "Qet yew parzûn qeyd nêbiyo",
+       "rcfilters-quickfilters-placeholder-description": "Eyaranê parzûni qeyd kerdış u bahdo zi seba karnayışi rê, cêr de simgeyanecayanê parzûnanê aktiva bıtıknê",
        "rcfilters-savedqueries-defaultlabel": "Parzûnê qeydbiyayeyi",
        "rcfilters-savedqueries-rename": "Reyna name ke",
        "rcfilters-savedqueries-setdefault": "Wa hesabiyaye bımano",
+       "rcfilters-savedqueries-unsetdefault": "Hesıbyayan ra wedarê",
        "rcfilters-savedqueries-remove": "Bestere",
        "rcfilters-savedqueries-new-name-label": "Name",
+       "rcfilters-savedqueries-new-name-placeholder": "Ğayey parzûni bışınasnê",
        "rcfilters-savedqueries-apply-label": "Parzûn vıraze",
        "rcfilters-savedqueries-apply-and-setdefault-label": "Parzûno hesebiyaye vıraze",
        "rcfilters-savedqueries-cancel-label": "Bıtexelne",
+       "rcfilters-savedqueries-add-new-title": "Eyarê parzûnê newcudi qeyd kerê",
+       "rcfilters-restore-default-filters": "Parzûnê ke estê peyser biya",
        "rcfilters-clear-all-filters": "Parzûnan pêro pak kerê",
        "rcfilters-show-new-changes": "Vurnayışanê neweyan bımocne",
        "rcfilters-search-placeholder": "Vurnayışanê peyênan parzûn kerê (menuyi bıgurenê ya zi nameyê parzûni cıgeyrê)",
        "rcfilters-filter-editsbyself-label": "Vurnayışê şıma",
        "rcfilters-filter-editsbyself-description": "İştırakê şıma.",
        "rcfilters-filter-editsbyother-label": "Ê binan ra vurnayışi",
+       "rcfilters-filter-editsbyother-description": "Bêvurnayışanê şıma vurnayışi pêro",
+       "rcfilters-filtergroup-userExpLevel": "Qeydê karberi u tecrube",
        "rcfilters-filter-user-experience-level-registered-label": "Qeydıni",
        "rcfilters-filter-user-experience-level-registered-description": "İdarekarê cıkewteyi.",
        "rcfilters-filter-user-experience-level-unregistered-label": "Bêqeydıni",
+       "rcfilters-filter-user-experience-level-unregistered-description": "Karberê ke ronıştış nêakerdo.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Ameyayeyê neweyi",
        "rcfilters-filter-user-experience-level-newcomer-description": "Karberê qeydınê ke 10 ra kemi vurnayışi ya zi 4 rocan ra fealiyetê xo estê.",
        "rcfilters-filter-user-experience-level-learner-label": "Musayoği",
        "rcfilters-filter-user-experience-level-experienced-label": "Karberê mısayeyi",
+       "rcfilters-filtergroup-automated": "İştirakê otomatiki",
        "rcfilters-filter-bots-label": "Bot",
        "rcfilters-filter-humans-label": "İnsan (bot niyo)",
        "rcfilters-filter-humans-description": "Terefê insanan ra vuriyayışi.",
        "rcfilters-exclude-button-off": "Weçinayeyi ciya bıtepışê",
        "rcfilters-exclude-button-on": "Weçinayeyo ciya",
        "rcfilters-view-tags": "Vurnayışê etiketıni",
+       "rcfilters-view-namespaces-tooltip": "Neticeya gorey nameycayan parzûn kerê",
        "rcfilters-view-return-to-default-tooltip": "Peyser şo parzûnê menuyê bıngehi",
        "rcfilters-liveupdates-button": "Rocaneyê ganıni",
        "rcfilters-liveupdates-button-title-on": "Rocaneyanê cındeyan ragê",
        "booksources-search": "Cı geyre",
        "booksources-text": "listeya cêrıni, keyepelê kitap rotoxan o.",
        "booksources-invalid-isbn": "ISBN raşt nêasena bıewnê çımeyê orjinali, raşt kopya biya nê nêbiyaya?",
+       "magiclink-tracking-rfc": "Pelê ke gırey efsunê RFC karnenê",
+       "magiclink-tracking-pmid": "Pelê ke gırey efsunê PMID karnenê",
+       "magiclink-tracking-isbn": "Pelê ke gırey efsunê ISBN karnenê",
        "specialloguserlabel": "Kerdoğ:",
        "speciallogtitlelabel": "Meqsed (sername ya zi {{ns:user}}:karberi rê nameyê karberi):",
        "log": "Qeydi",
        "logeventslist-submit": "Bımocne",
+       "logeventslist-more-filters": "Rocekanê dekerdışa bımocne:",
        "logeventslist-patrol-log": "Rocekê dewriya",
        "logeventslist-tag-log": "Rocekê etiketan",
        "all-logs-page": "Heme qeydê pêroyi",
        "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 b39ee0d..83d1e70 100644 (file)
        "ipb-sitewide": "サイト全体",
        "ipb-partial": "部分的",
        "ipb-pages-label": "ページ",
+       "ipb-namespaces-label": "名前空間",
        "badipaddress": "無効なIPアドレス",
        "blockipsuccesssub": "ブロックしました",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]]をブロックしました。<br />\n[[Special:BlockList|ブロックの一覧]]を参照してください。",
        "blocklist-nousertalk": "自分のトークページも編集禁止",
        "blocklist-editing": "編集",
        "blocklist-editing-sitewide": "編集(サイト全体)",
+       "blocklist-editing-ns": "名前空間",
        "ipblocklist-empty": "ブロック一覧は空です。",
        "ipblocklist-no-results": "指定されたIPアドレスまたは利用者名はブロックされていません。",
        "blocklink": "ブロック",
index 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 37a78dd..23c8a51 100644 (file)
        "userlogin-yourname": "ਵਰਤੋਂਕਾਰ ਨਾਂ",
        "userlogin-yourname-ph": "ਆਪਣਾ ਵਰਤੋਂਕਾਰ-ਨਾਂ ਭਰੋ",
        "createacct-another-username-ph": "ਵਰਤੋਂਕਾਰ-ਨਾਂ ਭਰੋ",
-       "yourpassword": "ਪਾਸਵਰਡ:",
+       "yourpassword": "ਲੰà¨\98-ਸ਼ਬਦ:",
        "userlogin-yourpassword": "ਲੰਘ-ਸ਼ਬਦ",
-       "userlogin-yourpassword-ph": "à¨\86ਪਣਾ à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨¦à¨¿à¨\89",
-       "createacct-yourpassword-ph": "ਪਾਸਵਰਡ à¨¦à¨¿à¨\89",
-       "yourpasswordagain": "ਪਾਸਵਰਡ à¨®à©\81à©\9c ਲਿਖੋ:",
-       "createacct-yourpasswordagain": "ਪਾਸਵਰਡ ਪੁਸ਼ਟੀ",
-       "createacct-yourpasswordagain-ph": "ਪਾਸਵਰਡ à¨«à©\87ਰ à¨¦à¨¿à¨\89",
+       "userlogin-yourpassword-ph": "à¨\86ਪਣਾ à¨²à©°à¨\98-ਸ਼ਬਦ à¨¦à¨¾à¨\96ਲ à¨\95ਰà©\8b",
+       "createacct-yourpassword-ph": "à¨\87ੱà¨\95 à¨²à©°à¨\98-ਸ਼ਬਦ à¨¦à¨¾à¨\96ਲ à¨\95ਰà©\8b",
+       "yourpasswordagain": "ਲੰà¨\98-ਸ਼ਬਦ à¨«à©\87ਰ ਲਿਖੋ:",
+       "createacct-yourpasswordagain": "ਲੰà¨\98-ਸ਼ਬਦ ਪੁਸ਼ਟੀ",
+       "createacct-yourpasswordagain-ph": "ਲੰà¨\98-ਸ਼ਬਦ à¨«à©\87ਰ à¨¦à¨¾à¨\96ਲ à¨\95ਰà©\8b",
        "userlogin-remembermypassword": "ਮੈਨੂੰ ਲਾਗਇਨ ਰੱਖੋ",
        "userlogin-signwithsecure": "ਸੁਰੱਖਿਅਤ ਕੁਨੈਕਸ਼ਨ ਰੱਖੋ",
        "cannotcreateaccount-title": "ਖਾਤੇ ਨਹੀਂ ਬਣ ਸਕੇ",
        "yourdomainname": "ਤੁਹਾਡਾ ਡੋਮੇਨ:",
-       "password-change-forbidden": "à¨\87ਸ à¨µà¨¿à¨\95à©\80 à¨¤à©\87 à¨¤à©\81ਸà©\80à¨\82 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ ਨਹੀਂ ਬਦਲ ਸਕਦੇ।",
+       "password-change-forbidden": "à¨\87ਸ à¨µà¨¿à¨\95à©\80 à¨\89ੱਤà©\87 à¨¤à©\81ਸà©\80à¨\82 à¨²à©°à¨\98-ਸ਼ਬਦ ਨਹੀਂ ਬਦਲ ਸਕਦੇ।",
        "externaldberror": "ਜਾਂ ਤਾਂ ਪ੍ਰਮਾਣਕੀ ਡਾਟਾਬੇਸ ਦੋਸ਼ ਆਇਆ ਹੈ ਜਾਂ ਤੁਹਾਨੂੰ ਆਪਣੇ ਬਾਹਰੀ ਖਾਤੇ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।",
        "login": "ਦਾਖਲ",
        "login-security": "ਆਪਣੀ ਪਛਾਣ ਦੀ ਪੜਤਾਲ ਕਰਵਾਉ",
        "userlogin-noaccount": "ਖਾਤਾ ਨਹੀਂ ਹੈ?",
        "userlogin-joinproject": "{{SITENAME}} ਦਾ ਹਿੱਸਾ ਬਣੋ",
        "createaccount": "ਖਾਤਾ ਬਣਾਓ",
-       "userlogin-resetpassword-link": "à¨\86ਪਣਾ à¨ªà¨¾à¨¸à¨µà¨°à¨¡ ਭੁੱਲ ਗਏ ਹੋ?",
+       "userlogin-resetpassword-link": "à¨\86ਪਣਾ à¨²à©°à¨\98-ਸ਼ਬਦ ਭੁੱਲ ਗਏ ਹੋ?",
        "userlogin-helplink2": "ਦਾਖ਼ਲ ਹੋਣ ਵਿਚ ਮਦਦ",
        "userlogin-loggedin": "ਤੁਸੀਂ ਪਹਿਲੋਂ ਹੀ {{GENDER:$1|$1}} ਵਜੋਂ ਦਾਖ਼ਲ ਹੋ ਚੁੱਕੇ ਹੋਂ।\nਕਿਸੇ ਹੋਰ ਵਰਤੋਂਕਾਰ ਵਜੋਂ ਦਾਖ਼ਲ ਹੋਣ ਵਾਸਤੇ ਹੇਠ ਦਿੱਤਾ ਫਾਰਮ ਭਰੋ।",
        "userlogin-createanother": "ਹੋਰ ਖਾਤਾ ਬਣਾਓ",
        "createacct-emailoptional": "ਈਮੇਲ ਪਤਾ (ਚੋਣਵਾਂ)",
        "createacct-email-ph": "ਆਪਣਾ ਈਮੇਲ ਪਤਾ ਦਿਉ",
        "createacct-another-email-ph": "ਆਪਣਾ ਈਮੇਲ ਐਡਰੈਸ ਦਿਓ",
-       "createaccountmail": "à¨\86ਰà¨\9c਼à©\80 à¨°à¨²à¨¼à¨µà¨¾à¨\82 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨µà¨°à¨¤à©\8bà¨\82 à¨\85ਤà©\87 à¨\87ਸ à¨¨à©\82à©° à¨\96ਾਸ à¨\88ਮà©\87ਲ à¨ªà¨¤à©\87 à¨\89ੱਤà©\87 à¨­à©\87à¨\9c à¨¦à¨¿à¨\89",
+       "createaccountmail": "à¨\86ਰà¨\9c਼à©\80 à¨°à¨²à¨¼à¨µà¨¾à¨\82 à¨²à©°à¨\98-ਸ਼ਬਦ à¨µà¨°à¨¤à©\8bà¨\82 à¨\85ਤà©\87 à¨\87ਸ à¨¨à©\82à©° à¨\96਼ਾਸ à¨\88ਮà©\87ਲ à¨ªà¨¤à©\87 à¨\89ੱਤà©\87 à¨­à©\87à¨\9cà©\8b",
        "createacct-realname": "ਅਸਲੀ ਨਾਂ (ਚੋਣਵਾਂ)",
        "createacct-reason": "ਕਾਰਨ",
        "createacct-reason-ph": "ਤੁਸੀਂ ਹੋਰ ਖਾਤਾ ਕਿਉਂ ਬਣਾ ਰਹੇ ਹੋ",
        "createacct-benefit-body1": "{{PLURAL:$1|ਸੋਧ|ਸੋਧਾਂ}}",
        "createacct-benefit-body2": "{{PLURAL:$1|ਸਫ਼ਾ|ਸਫ਼ੇ}}",
        "createacct-benefit-body3": "ਹਾਲੀਆ {{PLURAL:$1|ਯੋਗਦਾਨੀ}}",
-       "badretype": "ਤà©\81ਹਾਡà©\87 à¨µà¨²à©\8bà¨\82 à¨¦à¨¿à©±à¨¤à©\87 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨®à¨¿à¨²à¨¦à©\87 à¨¨à¨¹à©\80à¨\82 à¨¹à¨¨।",
+       "badretype": "ਤà©\81ਹਾਡà©\87 à¨µà©±à¨²à©\8bà¨\82 à¨¦à¨¾à¨\96ਲ à¨\95à©\80ਤਾ à¨²à©°à¨\98-ਸ਼ਬਦ à¨®à©\87ਲ à¨¨à¨¹à©\80à¨\82 à¨\96ਾà¨\82ਦਾ।",
        "userexists": "ਵਰਤੋਂਕਾਰ-ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ। ਵੱਖਰਾ ਨਾਂ ਚੁਣੋ ਜੀ।",
        "loginerror": "ਲਾਗਇਨ ਗ਼ਲਤੀ",
        "createacct-error": "ਖਾਤਾ ਬਣਾਉਣ ਵਿਚ ਗਲਤੀ",
        "nosuchusershort": "\"$1\" ਨਾਂ ਨਾਲ ਕੋਈ ਵੀ ਵਰਤੋਂਕਾਰ ਨਹੀਂ ਹੈ। ਆਪਣੇ ਸਪੈਲਿੰਗ ਧਿਆਨ ਨਾਲ ਚੈੱਕ ਕਰੋ।",
        "nouserspecified": "ਤੁਹਾਨੂੰ ਇੱਕ ਯੂਜ਼ਰ-ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ।",
        "login-userblocked": "ਇਹ ਯੂਜ਼ਰ-ਨਾਂ ਪਾਬੰਦੀਸ਼ੁਦਾ ਹੈ। ਲਾਗਇਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।",
-       "wrongpassword": "à¨\97਼ਲਤ à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨¦à¨¿à©±à¨¤à¨¾ à¨¹à©\88। à¨®à©\81à©\9c-à¨\95à©\8bਸ਼ਿਸ਼ à¨\95ਰà©\8b à¨\9cà©\80।",
-       "wrongpasswordempty": "à¨\96਼ਾਲà©\80 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨¦à¨¿à©±à¨¤à¨¾ à¨¹à©\88। à¨®à©\81à©\9c-à¨\95à©\8bਸ਼ਿਸ਼ à¨\95ਰà©\8b à¨\9cà©\80।",
-       "passwordtooshort": "ਪਾਸਵਰਡ {{PLURAL:$1|1 ਅੱਖਰ|$1 ਅੱਖਰਾਂ}} ਦਾ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ।",
-       "passwordtoolong": "ਪਾਸਵਰਡ {{PLURAL:$1|1 ਅੱਖਰ|$1 ਅੱਖਰਾਂ}} ਤੋਂ ਵੱਡਾ ਨਹੀਂ ਹੋ ਸਕਦਾ।",
+       "wrongpassword": "à¨\97਼ਲਤ à¨²à©°à¨\98-ਸ਼ਬਦ à¨¦à¨¾à¨\96ਲ à¨\95à©\80ਤਾ à¨\97ਿà¨\86। à¨\95ਿਰਪਾ à¨\95ਰà¨\95à©\87 à¨«à©\87ਰ à¨\95à©\8bਸ਼ਿਸ਼ à¨\95ਰà©\8b।",
+       "wrongpasswordempty": "à¨\96਼ਾਲà©\80 à¨²à©°à¨\98-ਸ਼ਬਦ à¨¦à¨¾à¨\96ਲ à¨\95à©\80ਤਾ à¨\97ਿà¨\86। à¨\95ਿਰਪਾ à¨\95ਰà¨\95à©\87 à¨«à©\87ਰ à¨\95à©\8bਸ਼ਿਸ਼ à¨\95ਰà©\8b।",
+       "passwordtooshort": "ਲੰà¨\98-ਸ਼ਬਦ {{PLURAL:$1|1 ਅੱਖਰ|$1 ਅੱਖਰਾਂ}} ਦਾ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ।",
+       "passwordtoolong": "ਲੰà¨\98-ਸ਼ਬਦ {{PLURAL:$1|1 ਅੱਖਰ|$1 ਅੱਖਰਾਂ}} ਤੋਂ ਵੱਡਾ ਨਹੀਂ ਹੋ ਸਕਦਾ।",
        "password-name-match": "ਤੁਹਾਡਾ ਪਛਾਣ-ਸ਼ਬਦ ਤੁਹਾਡੇ ਵਰਤੋਂਕਾਰ ਨਾਂ ਤੋਂ ਵੱਖਰਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।",
-       "password-login-forbidden": "à¨\87ਹ à¨¯à©\82à¨\9c਼ਰ-ਨਾà¨\82 à¨\85ਤà©\87 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ ਵਰਤਣ ਦੀ ਮਨਾਹੀ ਹੈ।",
-       "mailmypassword": "ਨਵਾà¨\82 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ ਈ-ਮੇਲ ਕਰੋ",
-       "passwordremindertitle": "{{SITENAME}} à¨²à¨\88 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨¯à¨¾à¨¦ à¨°à©±à¨\96à©\8b",
+       "password-login-forbidden": "à¨\87ਹ à¨µà¨°à¨¤à©\8bà¨\82à¨\95ਾਰ-ਨਾà¨\82 à¨\85ਤà©\87 à¨²à©°à¨\98-ਸ਼ਬਦ ਵਰਤਣ ਦੀ ਮਨਾਹੀ ਹੈ।",
+       "mailmypassword": "ਨਵਾà¨\82 à¨²à©°à¨\98-ਸ਼ਬਦ ਈ-ਮੇਲ ਕਰੋ",
+       "passwordremindertitle": "{{SITENAME}} à¨²à¨\88 à¨¨à¨µà¨¾à¨\82 à¨\86ਰà¨\9c਼à©\80 à¨²à©°à¨\98-ਸ਼ਬਦ",
        "passwordremindertext": "ਕਿਸੇ ਨੇ (ਸ਼ਾਇਦ ਤੁਸੀਂ, IP ਪਤਾ $1 ਤੋਂ) {{SITENAME}} ਲਈ ਪਾਸਵਰਡ ਬਦਲਣ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ ($4)।\nਮੈਂਬਰ \"$2\" ਲਈ ਆਰਜ਼ੀ ਪਾਸਵਰਡ ਬਣਾ ਕੇ \"$3\" ਤੇ ਭੇਜ ਦਿੱਤਾ ਗਿਆ ਹੈ।\nਜੇ ਤੁਹਾਡਾ ਇਹੀ ਇਰਾਦਾ ਸੀ ਤਾਂ ਤੁਹਾਨੂੰ ਚਾਹੀਦਾ ਹੈ ਹੁਣੇ ਲਾਗਇਨ ਕਰਕੇ ਆਪਣਾ ਪਾਸਵਰਡ ਲਓ।\nਤੁਹਾਡਾ ਆਰਜ਼ੀ ਪਾਸਵਰਡ {{PLURAL:$5|ਇਕ ਦਿਨ|$5 ਦਿਨਾਂ}} ਵਿਚ ਖ਼ਤਮ ਹੋ ਜਾਵੇਗਾ।\n\nਜੇ ਕਿਸੇ ਹੋਰ ਨੇ ਇਹ ਬੇਨਤੀ ਕੀਤੀ ਸੀ ਜਾਂ ਜੇ ਤੁਹਾਨੂੰ ਆਪਣਾ ਪਾਸਵਰਡ ਯਾਦ ਹੈ ਅਤੇ ਤੁਸੀਂ ਇਸਨੂੰ ਬਦਲਣਾ ਨਹੀਂ ਚਾਹੁੰਦੇ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਕੇ ਆਪਣਾ ਪੁਰਾਣਾ ਪਾਸਵਰਡ ਵਰਤਣਾ ਜਾਰੀ ਰੱਖ ਸਕਦੇ ਹੋ।",
        "noemail": "ਯੂਜ਼ਰ \"$1\" ਲਈ ਰਿਕਾਰਡ ਵਿੱਚ ਕੋਈ ਈਮੇਲ ਐਡਰੈੱਸ ਨਹੀਂ ਹੈ।",
        "noemailcreate": "ਤੁਹਾਨੂੰ ਠੀਕ ਈਮੇਲ ਪਤਾ ਦੇਣਾ ਪਵੇਗਾ",
        "accountcreated": "ਖਾਤਾ ਬਣਾਇਆ",
        "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|ਗੱਲਬਾਤ]]) ਲਈ ਵਰਤੋਂਕਾਰ ਖਾਤਾ ਬਣਾਇਆ ਗਿਆ।",
        "createaccount-title": "{{SITENAME}} ਲਈ ਅਕਾਊਂਟ ਬਣਾਉਣਾ",
-       "createaccount-text": "à¨\95ਿਸà©\87 à¨¨à©\87 \"$2\" à¨®à©\88à¨\82ਬਰ-ਨਾਮ à¨\85ਤà©\87 \"$3\" à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨¨à¨¾à¨²à¨¼ {{SITENAME}} ($4) à¨¤à©\87, à¨¤à©\81ਹਾਡਾ à¨\88-ਮà©\87ਲ à¨ªà¨¤à¨¾ à¨µà¨°à¨¤à¨¦à©\87 à¨¹à©\8bà¨\8f, à¨\96ਾਤਾ à¨¬à¨£à¨¾à¨\87à¨\86 à¨¹à©\88।\nਤà©\81ਹਾਨà©\82à©° à¨¹à©\81ਣà©\87 à¨²à¨¾à¨\97à¨\87ਨ à¨\95ਰà¨\95à©\87 à¨\86ਪਣਾ à¨ªà¨¾à¨¸à¨µà¨°à¨¡ ਬਦਲਣਾ ਚਾਹੀਦਾ ਹੈ।\n\nਜੇ ਇਹ ਖਾਤਾ ਗ਼ਲਤੀ ਨਾਲ਼ ਬਣ ਗਿਆ ਹੈ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਸਕਦੇ ਹੋ।",
+       "createaccount-text": "à¨\95ਿਸà©\87 à¨¨à©\87 \"$2\" à¨¨à¨¾à¨\82 à¨\85ਤà©\87 \"$3\" à¨²à©°à¨\98-ਸ਼ਬਦ à¨¨à¨¾à¨²à¨¼ {{SITENAME}} ($4) à¨¤à©\87, à¨¤à©\81ਹਾਡਾ à¨\88-ਮà©\87ਲ à¨ªà¨¤à¨¾ à¨µà¨°à¨¤à¨¦à©\87 à¨¹à©\8bà¨\8f, à¨\96ਾਤਾ à¨¬à¨£à¨¾à¨\87à¨\86 à¨¹à©\88।\nਤà©\81ਹਾਨà©\82à©° à¨¹à©\81ਣà©\87 à¨²à¨¾à¨\97à¨\87ਨ à¨\95ਰà¨\95à©\87 à¨\86ਪਣਾ à¨²à©°à¨\98-ਸ਼ਬਦ ਬਦਲਣਾ ਚਾਹੀਦਾ ਹੈ।\n\nਜੇ ਇਹ ਖਾਤਾ ਗ਼ਲਤੀ ਨਾਲ਼ ਬਣ ਗਿਆ ਹੈ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਸਕਦੇ ਹੋ।",
        "login-throttled": "ਤੁਸੀਂ ਬਹੁਤ ਸਾਰੀਆਂ ਤਾਜ਼ਾ ਲਾਗਇਨ ਕੋਸ਼ਿਸ਼ਾਂ ਕੀਤੀਆਂ ਹਨ।\nਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ $1 ਉਡੀਕ ਕਰੋ ਜੀ।",
        "login-abort-generic": "ਤੁਹਾਡਾ ਦਾਖ਼ਲਾ ਅਸਫਲ ਸੀ - ਅਧੂਰਾ ਛੱਡਿਆ",
        "login-migrated-generic": "ਤੁਹਾਡੇ ਖਾਤੇ ਦੀ ਥਾਂ ਬਦਲ ਦਿੱਤੀ ਗਈ ਹੈ ਅਤੇ ਤੁਹਾਡਾ ਵਰਤੋਂਕਾਰ-ਨਾਂ ਹੁਣ ਇਸ ਵਿਕੀ 'ਤੇ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।",
        "user-mail-no-addy": "ਬਿਨਾਂ ਈ-ਮੇਲ ਪਤਾ ਦਿੱਤੇ ਈ-ਮੇਲ ਭੇਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ।",
        "user-mail-no-body": "ਖ਼ਾਲੀ ਜਾਂ ਬਹੁਤੀ ਛੋਟੀ ਸਮੱਗਰੀ ਨਾਲ਼ ਈਮੇਲ ਭੇਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਗਈ",
        "changepassword": "ਪਛਾਣ-ਸ਼ਬਦ ਬਦਲੋ",
-       "resetpass_announce": "ਲਾਗਇਨ ਪੂਰਾ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ ਨਵਾਂ ਪਾਸਵਰਡ ਬਣਾਉਣਾ ਪਵੇਗਾ।",
+       "resetpass_announce": "ਲਾਗਇਨ ਪੂਰਾ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਇੱਕ ਨਵਾਂ ਲੰਘ-ਸ਼ਬਦ ਸੂਤਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।",
        "resetpass_header": "ਖਾਤੇ ਦਾ ਪਛਾਣ-ਸ਼ਬਦ ਬਦਲੋ",
        "oldpassword": "ਪੁਰਾਣਾ ਪਛਾਣ-ਸ਼ਬਦ:",
-       "newpassword": "ਨਵਾà¨\82 à¨ªà¨¾à¨¸à¨µà¨°à¨¡:",
-       "retypenew": "ਨਵਾà¨\82 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨®à©\81à©\9c-ਲਿਖੋ:",
-       "resetpass_submit": "ਪਾਸਵਰਡ à¨¸à©\88ੱà¨\9f ਕਰੋ ਅਤੇ ਲਾਗਇਨ ਕਰੋ",
-       "changepassword-success": "ਤà©\81ਹਾਡਾ à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨ à©\80à¨\95 à¨¤à¨°à©\8dਹਾà¨\82 ਬਦਲਿਆ ਜਾ ਚੁੱਕਾ ਹੈ!",
+       "newpassword": "ਨਵਾà¨\82 à¨²à©°à¨\98-ਸ਼ਬਦ:",
+       "retypenew": "ਨਵਾà¨\82 à¨²à©°à¨\98-ਸ਼ਬਦ à¨«à©\87ਰ ਲਿਖੋ:",
+       "resetpass_submit": "ਲੰà¨\98-ਸ਼ਬਦ à¨¸à©\82ਤਰ ਕਰੋ ਅਤੇ ਲਾਗਇਨ ਕਰੋ",
+       "changepassword-success": "ਤà©\81ਹਾਡਾ à¨²à©°à¨\98-ਸ਼ਬਦ ਬਦਲਿਆ ਜਾ ਚੁੱਕਾ ਹੈ!",
        "changepassword-throttled": "ਤੁਸੀਂ ਦਾਖ਼ਲ ਹੋਣ ਦੀਆਂ ਬਹੁਤ ਸਾਰੀਆਂ ਤਾਜ਼ਾ ਕੋਸ਼ਿਸ਼ਾਂ ਕੀਤੀਆਂ ਹਨ।\nਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ $1 ਉਡੀਕ ਕਰੋ ਜੀ।",
-       "botpasswords": "ਬà©\8cà¨\9f à¨ªà¨¾à¨¸à¨µà¨°à¨¡",
+       "botpasswords": "ਬà©\8cà¨\9f à¨²à©°à¨\98-ਸ਼ਬਦ",
        "botpasswords-label-appid": "ਬੌਟਾ ਨਾੰ:",
        "botpasswords-label-create": "ਬਣਾਓ",
        "botpasswords-label-update": "ਨਵਿਆਉ",
        "botpasswords-label-cancel": "ਰੱਦ ਕਰੋ",
        "botpasswords-label-delete": "ਮਿਟਾਓ",
-       "botpasswords-label-resetpassword": "ਪਾਸਵਰਡ à¨®à©\81à©\9c-ਸà©\88ੱà¨\9f ਕਰੋ",
-       "resetpass_forbidden": "ਪਾਸਵਰਡ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ",
+       "botpasswords-label-resetpassword": "ਲੰà¨\98-ਸ਼ਬਦ à¨«à©\87ਰ-ਸà©\82ਤਰ ਕਰੋ",
+       "resetpass_forbidden": "ਲੰà¨\98-ਸ਼ਬਦ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ",
        "resetpass-no-info": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਸਿੱਧੇ ਹੀ ਵੇਖਣ ਲਈ ਤੁਹਾਨੂੰ ਲਾਗਇਨ ਕਰਨਾ ਪਵੇਗਾ।",
        "resetpass-submit-loggedin": "ਪਛਾਣ-ਸ਼ਬਦ ਬਦਲੋ",
        "resetpass-submit-cancel": "ਰੱਦ ਕਰੋ",
        "resetpass-wrong-oldpass": "ਗ਼ਲਤ ਆਰਜ਼ੀ ਜਾਂ ਚਾਲੂ ਪਾਸਵਰਡ।\nਸ਼ਾਇਦ ਤੁਸੀਂ ਕਾਮਯਾਬੀ ਨਾਲ਼ ਆਪਣਾ ਪਾਸਵਰਡ ਬਦਲ ਚੁੱਕੇ ਹੋ ਜਾਂ ਆਰਜ਼ੀ ਪਾਸਵਰਡ ਲਈ ਬੇਨਤੀ ਕੀਤੀ ਸੀ।",
        "resetpass-recycled": "ਆਪਣਾ ਨਵਾਂ ਪਛਾਣ-ਸ਼ਬਦ ਮੌਜੂਦਾ ਪਛਾਣ-ਸ਼ਬਦ ਤੋਂ ਵੱਖਰਾ ਬਣਾਉ ਜੀ।",
        "resetpass-temp-emailed": "ਤੁਸੀਂ ਈਮੇਲ ਕੀਤੇ ਇੱਕ ਆਰਜ਼ੀ ਕੋਡ ਨਾਲ਼ ਦਾਖ਼ਲ ਹੋਏ।\nਦਾਖ਼ਲਾ ਕਾਰਵਾਈ ਮੁਕਾਉਣ ਵਾਸਤੇ ਤੁਹਾਨੂੰ ਇੱਥੇ ਇੱਕ ਨਵਾਂ ਪਛਾਣ-ਸ਼ਬਦ ਬਣਾਉਣਾ ਪਵੇਗਾ:",
-       "resetpass-temp-password": "à¨\86ਰà¨\9c਼à©\80 à¨ªà¨¾à¨¸à¨µà¨°à¨¡:",
+       "resetpass-temp-password": "à¨\86ਰà¨\9c਼à©\80 à¨²à©°à¨\98-ਸ਼ਬਦ:",
        "resetpass-abort-generic": "ਇੱਕ ਐਕਸਟੈਂਸ਼ਨ ਵੱਲੋਂ ਪਾਸਵਰਡ ਦੀ ਤਬਦੀਲੀ ਰੱਦ ਕੀਤੀ ਗਈ",
        "resetpass-expired": "ਤੁਹਾਡੇ ਪਛਾਣ-ਸ਼ਬਦ ਦੀ ਮਿਆਦ ਮੁੱਕ ਗਈ ਹੈ। ਦਾਖ਼ਲ ਹੋਣ ਲਈ ਮਿਹਰਬਾਨੀ ਕਰਕੇ ਨਵਾਂ ਪਛਾਣ-ਸ਼ਬਦ ਬਣਾਉ।",
        "resetpass-expired-soft": "ਤੁਹਾਡੇ ਪਛਾਣ-ਸ਼ਬਦ ਦੀ ਮਿਆਦ ਮੁੱਕ ਗਈ ਹੈ ਅਤੇ ਨਵਾਂ ਬਣਾਉਣਾ ਪਵੇਗਾ। ਕੋਈ ਨਵਾਂ ਪਛਾਣ-ਸ਼ਬਦ ਚੁਣੋ ਜੀ ਜਾਂ ਬਾਅਦ 'ਚ ਬਣਾਉਣ ਵਾਸਤੇ \"{{int:authprovider-resetpass-skip-label}}\" ਦੱਬੋ।",
        "resetpass-validity-soft": "ਤੁਹਾਡਾ ਪਛਾਣ-ਸ਼ਬਦ ਸਹੀ ਨਹੀਂ ਹੈ: $1\n\nਮਿਹਰਬਾਨੀ ਕਰਕੇ ਕੋਈ ਨਵਾਂ ਪਛਾਣ-ਸ਼ਬਦ ਚੁਣੋ ਜਾਂ ਬਾਅਦ 'ਚ ਬਣਾਉਣ ਵਾਸਤੇ \"{{int:authprovider-resetpass-skip-label}}\" ਦੱਬੋ।",
-       "passwordreset": "ਪਾਸਵਰਡ à¨®à©\81à©\9c-ਸà©\88ੱà¨\9f ਕਰੋ",
-       "passwordreset-text-one": "ਪਾਸਵਰਡ à¨¦à©\81ਬਾਰਾ à¨¬à¨£à¨¾à¨\89ਣ à¨²à¨\88 à¨\87ਹ à¨«à¨¼à¨¾à¨°à¨® à¨­ਰੋ।",
-       "passwordreset-text-many": "{{PLURAL:$1|à¨\88-ਮà©\87ਲ à¨\9c਼ਰà©\80à¨\8f à¨\86ਪਣਾ à¨\86ਰà¨\9c਼à©\80 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ ਹਾਸਲ ਕਰਨ ਲਈ ਕੋਈ ਇੱਕ ਥਾਂ ਭਰੋ।}}",
-       "passwordreset-disabled": "à¨\87ਸ à¨µà¨¿à¨\95à©\80 à¨¤à©\87 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨°à©\80ਸà©\88ੱà¨\9f ਬੰਦ ਕੀਤੇ ਗਏ ਹਨ।",
+       "passwordreset": "ਲੰà¨\98-ਸ਼ਬਦ à¨«à©\87ਰ-ਸà©\82ਤਰ ਕਰੋ",
+       "passwordreset-text-one": "à¨\88ਮà©\87ਲ à¨°à¨¾à¨¹à©\80 à¨\86ਰà¨\9c਼à©\80 à¨²à©°à¨\98-ਸ਼ਬਦ à¨ªà©\8dਰਾਪਤ à¨\95ਰਨ à¨²à¨\88 à¨\87ਸ à¨«à¨¾à¨°à¨® à¨¨à©\82à©° à¨ªà©\82ਰਾ à¨\95ਰੋ।",
+       "passwordreset-text-many": "{{PLURAL:$1|à¨\88-ਮà©\87ਲ à¨\9c਼ਰà©\80à¨\8f à¨\86ਪਣਾ à¨\86ਰà¨\9c਼à©\80 à¨²à©°à¨\98-ਸ਼ਬਦ ਹਾਸਲ ਕਰਨ ਲਈ ਕੋਈ ਇੱਕ ਥਾਂ ਭਰੋ।}}",
+       "passwordreset-disabled": "à¨\87ਸ à¨µà¨¿à¨\95à©\80 à¨\89ੱਤà©\87 à¨²à©°à¨\98-ਸ਼ਬਦ à¨«à©\87ਰ-ਸà©\82ਤਰ ਬੰਦ ਕੀਤੇ ਗਏ ਹਨ।",
        "passwordreset-emaildisabled": "ਇਹ ਵਿਕਿ ਉੱਤੇ ਈਮੇਲ ਫੀਚਰ ਬੰਦ ਕੀਤਾ ਹੋਇਆ ਹੈ।",
        "passwordreset-username": "ਵਰਤੋਂਕਾਰ ਨਾਂ:",
        "passwordreset-domain": "ਡੋਮੇਨ:",
        "passwordreset-emailtitle": "{{SITENAME}} ਤੇ ਖਾਤੇ ਦੀ ਜਾਣਕਾਰੀ",
        "passwordreset-emailtext-ip": "ਕਿਸੇ ਨੇ (ਸ਼ਾਇਦ ਤੁਸੀਂ, IP ਪਤਾ $1 ਤੋਂ) {{SITENAME}}\n($4) ਲਈ ਖਾਤਾ ਤਫ਼ਸੀਲ ਯਾਦ-ਦਹਾਨੀ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ। ਇਹ {{PLURAL:\n$3|ਖਾਤਾ ਇਸ ਈ-ਮੇਲ ਪਤੇ ਨਾਲ਼ ਜੁੜਿਆ ਹੈ|ਖਾਤੇ ਇਸ ਈ-ਮੇਲ ਪਤੇ ਨਾਲ਼ ਜੁੜੇ ਹਨ}}:\n$2\n\nਇਹ ਆਰਜ਼ੀ ਪਾਸਵਰਡ\n{{PLURAL:$5|ਇੱਕ ਦਿਨ|$5 ਦਿਨਾਂ}} ਵਿਚ ਖ਼ਤਮ ਹੋ {{PLURAL:$3|ਜਾਵੇਗਾ|ਜਾਣਗੇ}}।\nਤੁਹਾਨੂੰ ਹੁਣੇ ਲਾਗਇਨ ਕਰਕੇ ਨਵਾਂ ਪਾਸਵਰਡ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇ ਕਿਸੇ ਹੋਰ ਨੇ ਇਹ ਬੇਨਤੀ ਕੀਤੀ ਸੀ ਜਾਂ ਜੇ ਤੁਹਾਨੂੰ ਆਪਣਾ ਪਾਸਵਰਡ ਯਾਦ ਹੈ ਅਤੇ ਤੁਸੀਂ ਇਸਨੂੰ ਬਦਲਣਾ ਨਹੀਂ ਚਾਹੁੰਦੇ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਕੇ ਆਪਣਾ ਪੁਰਾਣਾ ਪਾਸਵਰਡ ਵਰਤਣਾ ਜਾਰੀ ਰੱਖ ਸਕਦੇ ਹੋ।",
        "passwordreset-emailtext-user": "{{SITENAME}} 'ਤੇ User $1 ਨੇ ਤੁਹਾਡੇ {{SITENAME}} ($4) ਉਤਲੇ ਪਛਾਣ-ਸ਼ਬਦ ਨੂੰ ਮੁੜ-ਬਣਾਉਣ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ। ਇਸ ਈਮੇਲ ਪਤੇ ਨਾਲ਼ ਹੇਠ ਲਿਖੇ {{PLURAL:$3|ਖਾਤੇ|ਖਾਤਿਆਂ}} ਦਾ ਵਾਸਤਾ ਹੈ:\n\n$2\n\n{{PLURAL:$3|ਇਸ ਆਰਜ਼ੀ ਪਛਾਣ-ਸ਼ਬਦ|ਇਹਨਾਂ ਆਰਜ਼ੀ ਪਛਾਣ-ਸ਼ਬਦਾਂ}} ਦੀ ਮਿਆਦ {{PLURAL:$5|ਇੱਕ ਦਿਨ|$5 ਦਿਨਾਂ}} 'ਚ ਮੁੱਕ ਜਾਵੇਗੀ।\nਤੁਹਾਨੂੰ ਹੁਣੇ ਦਾਖ਼ਲ ਹੋ ਕੇ ਕੋਈ ਨਵਾਂ ਪਛਾਣ-ਸ਼ਬਦ ਬਣਾ ਲੈਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇਕਰ ਕਿਸੇ ਹੋਰ ਨੇ ਇਹ ਬੇਨਤੀ ਕੀਤੀ ਹੈ ਜਾਂ ਤੁਹਾਨੂੰ ਆਪਣਾ ਪਹਿਲਾ ਪਛਾਣ-ਸ਼ਬਦ ਯਾਦ ਆ ਗਿਆ ਹੈ ਅਤੇ ਹੁਣ ਤੁਸੀਂ ਉਹਨੂੰ ਬਦਲ਼ਨਾ ਨਹੀਂ ਲੋਚਦੇ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰ ਕੇ ਆਪਣਾ ਪੁਰਾਣਾ ਪਛਾਣ-ਸ਼ਬਦ ਵਰਤਦੇ ਰਹਿ ਸਕਦੇ ਹੋ।",
-       "passwordreset-emailelement": "ਯà©\82à¨\9c਼ਰ-ਨਾà¨\82: \n$1\n\nà¨\86ਰà¨\9c਼à©\80 à¨ªà¨¾à¨¸à¨µà¨°à¨¡: \n$2",
-       "passwordreset-emailsentemail": "à¨\87ੱà¨\95 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨®à©\81à©\9c-ਸà©\88ੱà¨\9f à¨\88-ਮà©\87ਲ à¨­à©\87à¨\9cà©\80 à¨\9cਾ à¨\9aà©\81ੱà¨\95à©\80 à¨¹à©\88।",
+       "passwordreset-emailelement": "ਵਰਤà©\8bà¨\82à¨\95ਾਰ-ਨਾà¨\82: \n$1\n\nà¨\86ਰà¨\9c਼à©\80 à¨²à©°à¨\98-ਸ਼ਬਦ: \n$2",
+       "passwordreset-emailsentemail": "à¨\9cà©\87 à¨\87ਹ à¨\88ਮà©\87ਲ à¨ªà¨¤à¨¾ à¨¤à©\81ਹਾਡà©\87 à¨\96ਾਤà©\87 à¨¨à¨¾à¨² à¨\9cà©\81à©\9cਿà¨\86 à¨¹à©\88, à¨¤à¨¾à¨\82 à¨\87ੱà¨\95 à¨²à©°à¨\98-ਸ਼ਬਦ à¨«à©\87ਰ-ਸà©\82ਤਰ à¨\88ਮà©\87ਲ à¨­à©\87à¨\9cà©\80 à¨\9cਾà¨\8fà¨\97à©\80।",
        "passwordreset-invalidemail": "ਗ਼ਲਤ ਈਮੇਲ ਪਤਾ",
        "changeemail": "ਈ-ਮੇਲ ਸਿਰਨਾਵਾਂ ਬਦਲੋ ਜਾੰ ਹਟਾਓ",
        "changeemail-header": "ਖਾਤੇ ਵਾਲਾ ਈ-ਮੇਲ ਸਿਰਨਾਵਾਂ ਬਦਲੋ",
        "changeemail-oldemail": "ਮੌਜੂਦਾ ਈਮੇਲ ਸਿਰਨਾਵਾਂ:",
        "changeemail-newemail": "ਨਵਾਂ ਈ-ਮੇਲ ਸਿਰਨਾਵਾਂ:",
        "changeemail-none": "(ਕੋਈ ਨਹੀਂ)",
-       "changeemail-password": "ਤà©\81ਹਾਡਾ {{SITENAME}} à¨ªà¨¾à¨¸à¨µà¨°à¨¡:",
+       "changeemail-password": "ਤà©\81ਹਾਡਾ {{SITENAME}} à¨²à©°à¨\98-ਸ਼ਬਦ:",
        "changeemail-submit": "ਈ-ਮੇਲ ਬਦਲੋ",
        "changeemail-throttled": "ਤੁਸੀਂ ਦਾਖ਼ਲ ਹੋਣ ਦੀਆਂ ਬਹੁਤ ਸਾਰੀਆਂ ਕੋਸ਼ਿਸ਼ਾਂ ਕੀਤੀਆਂ ਹਨ।\nਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ $1 ਉਡੀਕ ਕਰੋ ਜੀ।",
        "changeemail-nochange": "ਕਿਰਪਾ ਕਰਕੇ ਕੋਈ ਵੱਖਰਾ ਈਮੇਲ ਪਤਾ ਭਰੋ।",
        "loginreqtitle": "ਲਾਗਇਨ ਚਾਹੀਦਾ ਹੈ",
        "loginreqlink": "ਦਾਖ਼ਲ",
        "loginreqpagetext": "ਹੋਰ ਸਫ਼ੇ ਵੇਖਣ ਲਈ ਤੁਹਾਨੂੰ $1 ਕਰਨਾ ਪਵੇਗਾ।",
-       "accmailtitle": "ਪਾਸਵਰਡ ਭੇਜਿਆ।",
+       "accmailtitle": "ਲੰà¨\98-ਸ਼ਬਦ ਭੇਜਿਆ।",
        "accmailtext": "[[User talk:$1|$1]] ਲਈ ਰਲ਼ਵੇਂ ਤੌਰ ’ਤੇ ਬਣਿਆ ਪਾਸਵਰਡ $2 ਨੂੰ ਭੇਜਿਆ ਜਾ ਚੁੱਕਾ ਹੈ।\nਇਸ ਨਵੇਂ ਖਾਤੇ ਲਈ ਲਾਗਇਨ ਕਰਨ ਤੋਂ ਬਾਅਦ ''[[Special:ChangePassword|ਪਾਸਵਰਡ ਬਦਲੋ]]'' ’ਤੇ ਜਾ ਕੇ ਪਾਸਵਰਡ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।",
        "newarticle": "(ਨਵਾਂ)",
        "newarticletext": "ਤੁਸੀਂ ਕਿਸੇ ਅਜਿਹੇ ਸਫ਼ੇ ਦੇ ਕੜੀ ’ਤੇ ਹੋ ਜੋ ਹਾਲੇ ਬਣਾਇਆ ਨਹੀਂ ਗਿਆ।\nਸਫ਼ਾ ਬਣਾਉਣ ਲਈ ਹੇਠ ਦਿੱਤੇ ਖਾਨੇ ਵਿਚ ਲਿਖਣਾ ਸ਼ੁਰੂ ਕਰੋ। (ਹੋਰ ਮਦਦ ਲਈ [$1 ਮਦਦ ਸਫ਼ਾ] ਵੇਖੋ।)\nਜੇ ਤੁਸੀਂ ਗ਼ਲਤੀ ਨਾਲ ਇੱਥੇ ਆਏ ਹੋ ਤਾਂ ਆਪਣੇ ਬ੍ਰਾਊਜ਼ਰ ਦੇ '''ਪਿੱਛੇ''' ਬਟਨ ’ਤੇ ਕਲਿੱਕ ਕਰੋ।",
        "viewpagelogs": "ਇਹ ਸਫ਼ੇ ਲਈ ਇੰਦਰਾਜ ਵੇਖੋ",
        "nohistory": "ਇਸ ਸਫ਼ੇ ਲਈ ਕੋਈ ਸੋਧ ਅਤੀਤ ਨਹੀਂ ਹੈ।",
        "currentrev": "ਮੌਜੂਦਾ ਰੀਵਿਜ਼ਨ",
-       "currentrev-asof": "$1 à¨®à©\81ਤਾਬà¨\95 à¨¸à¨­ à¨¤à©\8bà¨\82 à¨¨à¨µà¨¾à¨\82 à¨°à©\80ਵਿà¨\9cਨ",
-       "revisionasof": "$1 à¨¦à¨¾ à¨°à©\80ਵਿà¨\9cਨ",
+       "currentrev-asof": "$1 à¨®à©\81ਤਾਬà¨\95 à¨¸à¨­ à¨¤à©\8bà¨\82 à¨¨à¨µà¨¾à¨\82 à¨¦à©\81ਹਰਾà¨\85",
+       "revisionasof": "$1 à¨¦à¨¾ à¨¦à©\81ਹਰਾà¨\85",
        "revision-info": "{{GENDER:$6|$2}}$7 ਦਾ ਬਣਾਇਆ $1 ਦਾ ਰੀਵਿਜ੍ਹਨ",
-       "previousrevision": "â\86\90ਪà©\81ਰਾਣਾ à¨°à©\80ਵਿà¨\9cਨ",
-       "nextrevision": "ਨਵਾà¨\82 à¨°à©\80ਵਿà¨\9cਨ →",
+       "previousrevision": "â\86\90ਪà©\81ਰਾਣਾ à¨¦à©\81ਹਰਾà¨\85",
+       "nextrevision": "ਨਵਾà¨\82 à¨¦à©\81ਹਰਾà¨\85 →",
        "currentrevisionlink": "ਸਭ ਤੋ ਨਵਾਂ ਦੁਹਰਾਇਆ",
        "cur": "ਮੌਜੂਦਾ",
        "next": "ਅੱਗੇ",
        "mergelog": "ਰਲ਼ਾਉਣ ਦਾ ਚਿੱਠਾ",
        "revertmerge": "ਅਨ-ਮਰਜ",
        "mergelogpagetext": "ਹੇਠਾਂ ਇੱਕ ਸਫ਼ੇ ਦੇ ਅਤੀਤ ਨੂੰ ਦੂਜੇ ਦੇ ਅਤੀਤ ਵਿਚ ਰਲ਼ਾਉਣ ਦੀ ਸਭ ਤੋਂ ਤਾਜ਼ਾ ਲਿਸਟ ਹੈ।",
-       "history-title": "\"$1\" à¨¦à©\87 à¨°à©\80ਵਿà¨\9cਨ ਦਾ ਅਤੀਤ",
+       "history-title": "\"$1\" à¨¦à©\87 à¨¦à©\81ਹਰਾà¨\85 ਦਾ ਅਤੀਤ",
        "difference-title": "\"$1\" ਦੇ ਰੀਵਿਜ਼ਨਾਂ ਵਿਚ ਫ਼ਰਕ",
        "difference-title-multipage": "ਸਫ਼ਿਆਂ \"$1\" ਅਤੇ \"$2\" ਵਿਚ ਫ਼ਰਕ",
        "difference-multipage": "(ਦੋ ਸਫ਼ਿਆਂ ਵਿਚਕਾਰ ਫ਼ਰਕ)",
        "dellogpage": "ਹਟਾਉਣ ਦਾ ਚਿੱਠਾ",
        "dellogpagetext": "ਹੇਠਾਂ ਸਭ ਤੋਂ ਤਾਜ਼ਾ ਮਿਟਾਉਣਾਂ ਦੀ ਲਿਸਟ ਹੈ।",
        "deletionlog": "ਮਿਟਾਉਣ ਦਾ ਚਿੱਠਾ",
-       "reverted": "ਪà©\81ਰਾਣà©\80 à¨°à©\80ਵਿà¨\9cਨ ਵੱਲ ਉਲਟਾਇਆ ਗਿਆ",
+       "reverted": "ਪà©\81ਰਾਣà©\87 à¨¦à©\81ਹਰਾà¨\85 ਵੱਲ ਉਲਟਾਇਆ ਗਿਆ",
        "deletecomment": "ਕਾਰਨ:",
        "deleteotherreason": "ਹੋਰ/ਵਾਧੂ ਕਾਰਨ:",
        "deletereasonotherlist": "ਹੋਰ ਕਾਰਨ",
        "createaccountblock": "ਖਾਤਾ ਬਣਾਉਣਾ ’ਤੇ ਪਾਬੰਦੀ ਹੈ",
        "emailblock": "ਈਮੇਲ ਬਲਾਕ ਹੈ",
        "blocklist-nousertalk": "ਆਪਣਾ ਗੱਲ-ਬਾਤ ਸਫ਼ਾ ਨਹੀਂ ਸੋਧ ਸਕਦਾ",
+       "blocklist-editing-page": "ਸਫ਼ੇ",
        "ipblocklist-empty": "ਪਾਬੰਦੀ ਲਿਸਟ ਖ਼ਾਲੀ ਹੈ।",
        "ipblocklist-no-results": "ਦਿੱਤੇ ਗਏ IP ਪਤੇ ਜਾਂ ਮੈਂਬਰ-ਨਾਂ ’ਤੇ ਪਾਬੰਦੀ ਨਹੀਂ ਹੈ।",
        "blocklink": "ਪਾਬੰਦੀ ਲਾਓ",
        "tooltip-ca-edit": "ਇਹ ਸਫ਼ਾ ਸੋਧੋ",
        "tooltip-ca-addsection": "ਨਵਾਂ ਭਾਗ ਸ਼ੁਰੂ ਕਰੋ",
        "tooltip-ca-viewsource": "ਇਹ ਸਫ਼ਾ ਸੁਰੱਖਿਅਤ ਹੈ।\nਤੁਸੀਂ ਇਸਦਾ ਸਰੋਤ ਵੇਖ ਸਕਦੇ ਹੋ।",
-       "tooltip-ca-history": "à¨\87ਸ à¨¸à¨«à¨¼à©\87 à¨¦à©\87 à¨ªà¨¿à¨\9bਲà©\87 à¨°à©\80ਵਿà¨\9cਨ",
+       "tooltip-ca-history": "à¨\87ਸ à¨¸à¨«à¨¼à©\87 à¨¦à©\87 à¨ªà¨¿à¨\9bਲà©\87 à¨¦à©\81ਹਰਾà¨\85",
        "tooltip-ca-protect": "ਇਹ ਸਫ਼ਾ ਸੁਰੱਖਿਅਤ ਕਰੋ",
        "tooltip-ca-unprotect": "ਇਸ ਸਫ਼ੇ ਦੀ ਸੁਰੱਖਿਆ ਬਦਲੋ",
        "tooltip-ca-delete": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਹਟਾਓ",
        "tooltip-t-upload": "ਫ਼ਾਈਲਾਂ ਅਪਲੋਡ ਕਰੋ",
        "tooltip-t-specialpages": "ਸਾਰੇ ਖ਼ਾਸ ਸਫ਼ਿਆਂ ਦੀ ਲਿਸਟ",
        "tooltip-t-print": "ਇਸ ਸਫ਼ੇ ਦਾ ਛਪਣਯੋਗ ਰੂਪ",
-       "tooltip-t-permalink": "ਸਫ਼à©\87 à¨¦à©\87 à¨\87ਸ à¨°à©\80ਵਿà¨\9cਨ ਲਈ ਪੱਕੀ ਕੜੀ",
+       "tooltip-t-permalink": "ਸਫ਼à©\87 à¨¦à©\87 à¨\87ਸ à¨¦à©\81ਹਰਾà¨\85 ਲਈ ਪੱਕੀ ਕੜੀ",
        "tooltip-ca-nstab-main": "ਸਮੱਗਰੀ ਸਫ਼ਾ ਵੇਖੋ",
        "tooltip-ca-nstab-user": "ਵਰਤੋਂਕਾਰ ਸਫ਼ਾ ਵੇਖੋ",
        "tooltip-ca-nstab-media": "ਮੀਡਿਆ ਪੇਜ ਵੇਖੋ",
        "authmanager-email-help": "ਈਮੇਲ ਪਤਾ",
        "authmanager-realname-label": "ਅਸਲੀ ਨਾਂ",
        "authmanager-realname-help": "ਇਸ ਉਪਭੋਗੀ ਦਾ ਅਸਲ ਨਾਮ",
-       "authmanager-provider-temporarypassword": "à¨\86ਰà¨\9c਼à©\80 à¨ªà¨¾à¨¸à¨µà¨°à¨¡",
+       "authmanager-provider-temporarypassword": "à¨\86ਰà¨\9c਼à©\80 à¨²à©°à¨\98-ਸ਼ਬਦ",
        "authprovider-resetpass-skip-label": "ਛੱਡ ਦਿਉ",
        "authform-wrongtoken": "ਗਲਤ ਟੋਕਨ",
        "specialpage-securitylevel-not-allowed-title": "ਇਜਾਜ਼ਤ ਨਹੀਂ",
index e88b6b3..3f6dd84 100644 (file)
        "logentry-block-block": "$1 {{GENDER:$2|zablokował|zablokowała|zablokował(a)}} {{GENDER:$4|$3}}, czas blokady: $5 $6",
        "logentry-block-unblock": "$1 {{GENDER:$2|zdjął|zdjęła}} blokadę z {{GENDER:$4|$3}}",
        "logentry-block-reblock": "$1 {{GENDER:$2|zmienił|zmieniła}} ustawienia blokady dla {{GENDER:$4|$3}}, czas blokady: $5 $6",
-       "logentry-partialblock-block-page": "{{PLURAL:$1|strona|strony}}: $2",
-       "logentry-partialblock-block-ns": "{{PLURAL:$1|przestrzeń nazw|przestrzenie nazw}}: $2",
+       "logentry-partialblock-block-page": "{{PLURAL:$1|strony|stron}}: $2",
+       "logentry-partialblock-block-ns": "przestrzeni nazw: $2",
        "logentry-partialblock-block": "$1 {{GENDER:$2|wyłączył|wyłączyła}} {{GENDER:$4|$3}} z edytowania $7, czas blokady: $5 $6",
        "logentry-partialblock-reblock": "$1 {{GENDER:$2|zmienił|zmieniła}} ustawienia wyłączenia {{GENDER:$4|$3}} z edytowania $7, czas blokady: $5 $6",
        "logentry-non-editing-block-block": "$1 {{GENDER:$2|zablokował|zablokowała}} {{GENDER:$4|$3}} wykonywanie określonych operacji nieedycyjnych, czas blokady: $5 $6",
index fa9bf44..0c43ccc 100644 (file)
                        "BadDog",
                        "The Discoverer",
                        "Bencemac",
-                       "Zoranzoki21"
+                       "Zoranzoki21",
+                       "Woytecr"
                ]
        },
        "sidebar": "{{notranslate}}",
        "logentry-block-block": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string\n\nCf. {{msg-mw|Blocklogentry}}",
        "logentry-block-unblock": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n\nCf. {{msg-mw|Unblocklogentry}}",
        "logentry-block-reblock": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string\n\nCf. {{msg-mw|Reblock-logentry}}",
-       "logentry-partialblock-block-page": "Page portion of {{msg-mw|logentry-partialblock-block}}\n* $1 - number of pages\n* - $2 list of pages",
-       "logentry-partialblock-block-ns": "Namespace portion of {{msg-mw|logentry-partialblock-block}}\n* $1 - number of namespaces\n* - $2 list of namespaces",
+       "logentry-partialblock-block-page": "Page portion of {{msg-mw|logentry-partialblock-block}}\n* $1 - number of pages\n* $2 - list of pages",
+       "logentry-partialblock-block-ns": "Namespace portion of {{msg-mw|logentry-partialblock-block}}\n* $1 - number of namespaces\n* $2 - list of namespaces",
        "logentry-partialblock-block": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string\n* $7 - Restrictions list {{msg-mw|logentry-partialblock-block-page}} and/or {{msg-mw|logentry-partialblock-block-ns}}\n\nCf. {{msg-mw|Blocklogentry}}",
        "logentry-partialblock-reblock": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string\n* $7 - Restrictions list {{msg-mw|logentry-partialblock-block-page}} and/or {{msg-mw|logentry-partialblock-block-ns}}\n\nCf. {{msg-mw|Reblock-logentry}}",
        "logentry-non-editing-block-block": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string\n\nCf. {{msg-mw|Blocklogentry}}",
index fb9452c..b48918d 100644 (file)
                        "Force majeure",
                        "Infovarius",
                        "Cronolio",
-                       "Nk88"
+                       "Nk88",
+                       "Edward Chernenko"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "post-expand-template-argument-category-desc": "Страница станет больше <code>$wgMaxArticleSize</code> после раскрытия аргумента шаблона (что-нибудь в тройных фигурных скобках, например, <code>{{{Foo}}})</code>).",
        "expensive-parserfunction-category-desc": "На странице используется слишком много ресурсоёмких функций (таких, как <code>#ifexist</code>). Подробнее — на странице [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
        "broken-file-category-desc": "Страница содержит некорректную файловую ссылку (ссылку на несуществующий файл).",
-       "hidden-category-category-desc": "ЭÑ\82а ÐºÐ°Ñ\82егоÑ\80иÑ\8f Ñ\81одеÑ\80жиÑ\82 Ð¼ÐµÑ\82кÑ\83 <code><nowiki>__HIDDENCAT__</nowiki></code> Ñ\81одеÑ\80жимом Ñ\81Ñ\82Ñ\80аниÑ\86е, Ñ\87Ñ\82о Ð¿Ð¾ Ñ\83молÑ\87аниÑ\8e Ð¿Ñ\80едоÑ\82вÑ\80аÑ\89аеÑ\82 ÐµÑ\91 Ð¾Ñ\82обÑ\80ажение Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\85 Ð² Ñ\80азделе ÐºÐ°Ñ\82егоÑ\80ий.",
+       "hidden-category-category-desc": "Ð\92 Ð²Ð¸ÐºÐ¸-Ñ\82екÑ\81Ñ\82е Ñ\8dÑ\82ой ÐºÐ°Ñ\82егоÑ\80ии ÐµÑ\81Ñ\82Ñ\8c Ð¼ÐµÑ\82ка <code><nowiki>__HIDDENCAT__</nowiki></code>, Ð¸Ð·-за Ñ\87его Ð¾Ð½Ð° Ð½Ðµ Ð¿Ð¾ÐºÐ°Ð·Ñ\8bваеÑ\82Ñ\81Ñ\8f Ð² Ñ\80азделе Â«Ð\9aаÑ\82егоÑ\80ии:» Ñ\82еÑ\85 Ñ\81Ñ\82Ñ\80аниÑ\86, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ð² Ð½ÐµÑ\91 Ð²ÐºÐ»Ñ\8eÑ\87енÑ\8b.",
        "trackingcategories-nodesc": "Описание отсутствует.",
        "trackingcategories-disabled": "Категория отключена",
        "mailnologin": "Адрес для отправки отсутствует",
index 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 7220850..5517c62 100644 (file)
@@ -45,8 +45,8 @@
        },
        "tog-underline": "Подвлачење веза:",
        "tog-hideminor": "Сакривај мање измене са списка скорашњих измена",
-       "tog-hidepatrolled": "Сакриј патролиране измене са списка скорашњих измена",
-       "tog-newpageshidepatrolled": "Сакриј патролиране странице са списка нових страница",
+       "tog-hidepatrolled": "Сакривај патролиране измене са списка скорашњих измена",
+       "tog-newpageshidepatrolled": "Сакривај патролиране странице са списка нових страница",
        "tog-hidecategorization": "Сакривај категоризацију страница",
        "tog-extendwatchlist": "Прошируј списак надгледања за приказ свих промена, не само недавних",
        "tog-usenewrc": "Групиши промене по страници у скорашњим изменама и списку надгледања",
@@ -78,7 +78,7 @@
        "tog-watchlistreloadautomatically": "Аутоматски поново учитај списак надгледања кад год се филтер промени (потребан JavaScript)",
        "tog-watchlistunwatchlinks": "Додај означиваче за прекид надгледања/нагледање ({{int:Watchlist-unwatch}}/{{int:Watchlist-unwatch-undo}}) на надгледане странице са променама (за функционалност пребацивања је потребан JavaScript)",
        "tog-watchlisthideanons": "Сакривај измене анонимних корисника са списка надгледања",
-       "tog-watchlisthidepatrolled": "Сакриј патролиране измене са списка надгледања",
+       "tog-watchlisthidepatrolled": "Сакривај патролиране измене са списка надгледања",
        "tog-watchlisthidecategorization": "Сакривај категоризацију страница",
        "tog-ccmeonemails": "Пошаљи ми копије е-порука које пошаљем другим корисницима",
        "tog-diffonly": "Не приказуј садржај странице испод разлика",
        "blocklist-nousertalk": "забрањено уређивање сопствене странице за разговор",
        "blocklist-editing": "уређивање",
        "blocklist-editing-sitewide": "уређивање (на целом сајту)",
+       "blocklist-editing-page": "странице",
        "blocklist-editing-ns": "именски простори",
        "ipblocklist-empty": "Списак блокирања је празан.",
        "ipblocklist-no-results": "Тражена IP адреса или корисничко име није блокирано.",
index d7e4fee..df898e5 100644 (file)
        "right-importupload": "Ngimpor kaca tina hiji koropak nu dimuat",
        "right-patrol": "Nandaan éditan pamaké séjén minangka geus dipatroli",
        "right-autopatrol": "Ngédit kalayan status éditan sacara otomatis ditandaan geus dipatroli",
-       "right-patrolmarks": "Tempo panandaan patroli nuanyar robah",
+       "right-patrolmarks": "Tempo panandaan patroli nu anyar robah",
        "right-unwatchedpages": "Tempo daptar kaca-kaca nu teu dipariksa",
        "right-mergehistory": "Ngagabungkeun jujutan kaca",
        "right-userrights": "Édit kabeh hak pamaké",
        "actioncomplete": "Tarékah geus hasil",
        "actionfailed": "Tarékah gagal",
        "deletedtext": "\"$1\" geus dihapus. Tempo $2 pikeun rékaman hapusan anyaran ieu.",
-       "dellogpage": "Log_hapusan",
+       "dellogpage": "Log hapusan",
        "dellogpagetext": "Di handap ieu daptar hapusan nu ahir-ahir, sakabéh wanci dumasar wanci server.",
        "deletionlog": "log hapusan",
        "reverted": "Malikkeun ka révisi nu ti heula",
        "log-name-contentmodel": "Log parobahan modél kontén",
        "logentry-contentmodel-change-revertlink": "balikkeun",
        "logentry-contentmodel-change-revert": "balikkeun",
-       "protectlogpage": "Log_koncian",
+       "protectlogpage": "Log koncian",
        "protectlogtext": "Di handap ieu mangrupa daptar koncian kaca. Tempo [[Special:ProtectedPages|kaca nu dikonci]] pikeun iber leuwih lengkep.",
        "protectedarticle": "ngonci $1",
        "modifiedarticleprotection": "hambalan koncian \"[[$1]]\" geus dirobah",
        "specialpages-group-maintenance": "Laporan pigawéeun",
        "specialpages-group-other": "Kaca husus lainna",
        "specialpages-group-login": "Asup log / jieun akun",
-       "specialpages-group-changes": "Nuanyar robah sarta log",
+       "specialpages-group-changes": "Nu anyar robah sarta log",
        "specialpages-group-media": "Laporan jeung unjalan berkas",
        "specialpages-group-users": "Pamaké sarta hak pamaké",
        "specialpages-group-highuse": "Pamakéan kaca nu badag",
index 56e20d3..0526385 100644 (file)
        "resetpass-submit-cancel": "ವಜಾ ಮಲ್ಪುಲೆ",
        "resetpass-wrong-oldpass": "ಅಮಾನ್ಯ ತಾತ್ಕಾಲಿಕ ಇಜಿಂಡ ಚಾಲ್ತಿ ಸಂಕೇತಪದ.\nಈರ್ ಇರೆನ ಸಂಕೇತಪದೊನು ಅದಗನೆ ಬದಲ್ ಮಲ್ತೊಂದರ್ ಇಜಿಂಡ ಒಂಜಿ ಪೊಸ ತಾತ್ಕಾಲಿಕ ಸಂಕೇತಪದೊಕು ಕೋರಿಕೆ ಕೊರ್ತರ್.",
        "resetpass-recycled": "ಈರ್  ಇತ್ತೆ ಚಾಲ್ತಿ ಉಪ್ಪುನ ಸಂಕೇತಪದೊ ಅತ್ತಾಂದಿನ ಬೇತೆ ಸಂಕೇತಪದೊಕು ಬದಲು ಮಲ್ಪುಲೆ.",
+       "resetpass-temp-emailed": "ಈರ್ ಹಂಗಾಮಿ ಇಮೇಲ್ ಅಂಕೇತೊಡು ಉಳಗಮನ ಮಲ್ದರ್. ಉಳಗಮನ ಮುಗಿಪರೆ ಈರ್ ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ಮುಲ್ಪ ಗೋಡಿಯಾವೊಡು.",
        "resetpass-temp-password": "ತಾತ್ಕಾಲಿಕ ಪ್ರವೇಶಪದ:",
+       "resetpass-abort-generic": "ಒಂಜಿ ವಿಸ್ತರಣೆಡ್ ಸಂಕೇತಪದ ಬದಲಾವಣೆ ಪತನ ಆತ್ಂಡ್.",
+       "resetpass-expired": "ಇರೆನ ಸಂಕೇತಪದ ಮುಗಿದ್ಂಡ್.ಉಳಗಮನೊಗಾದ್ ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ಗೋಡಿಯಾವುಲೆ.",
+       "resetpass-expired-soft": "ಇರೆನ ಸಂಕೇತಪದ ಮುಗಿದಿಂಡ್ ಬೊಕ ಬದಲ್ ಮಲ್ಪೊಡಾಪುಂಡು. ದಯಮಲ್ತ್  ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ಇತ್ತೆನೆ ಆಯಿಲೆ ಇಜಿಂಡ  ಅವೆನ್  ತರೀದ್ ಬದಲಾವರೆ \"{{int:authprovider-resetpass-skip-label}}\"  ಒತ್ತುಲೆ .",
+       "resetpass-validity": "ಉಳಗಮನೊಗು ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ದೀಲೆ.",
+       "resetpass-validity-soft": "ಇರೆನ ಸಂಕೇತಪದ ಮಾನ್ಯ ಆತಿಜಿ:$1\nದಯಮಲ್ತ್ ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ಆಯಿಲೆ ಇಜಿಂಡ ಅವೆನ್ ತರೀದ್ ಬದಲಾವರೆ \n \"{{int:authprovider-resetpass-skip-label}}\" ಒತ್ತುಲೆ.",
        "passwordreset": "ಪ್ರವೇಸೊ ಪದೊನ್ ಪಿರ ಸ್ತಾಪನೆ ಮಲ್ಪುಲೆ",
+       "passwordreset-text-one": " ಒಂಜಿ ಹಂಗಾಮಿ ಸಂಕೇತಪದೊನ್, ಇಮೇಲ್ದ  ಮುಖಾಂತರ ಗೆತೊಣರೆ, ಈ ರೂಪತ್ರನ್ ದಿಂಜಾಲೆ.",
+       "passwordreset-text-many": "{{PLURAL:$1| ಒಂಜಿ ಹಂಗಾಮಿ ಸಂಕೇತಪದ ಇಮೇಲ್ ಮುಖಾಂತರ ಗೆತೊಣರೆ ಕಿಂಡಿಲೆಡ್ ಒಂಜೆನ್ ದಿಂಜಾಲೆ.}}",
+       "passwordreset-disabled": "ಈ ವಿಕಿಟ್ ಸಂಕೇತಪದ ಪಿರತಾಪನೆಲು ನಿಷ್ಕ್ರಿಯ ಆತ್ಂಡ್.",
+       "passwordreset-emaildisabled": "ಇಮೇಲ್ ಗುಣಧರ್ಮೊಲು ಈ ವಿಕಿಟ್ ನಿಷ್ಕ್ರಿಯ ಆತ್ಂಡ್.",
        "passwordreset-username": "ಸದಸ್ಯೆರ್ನ ಪುದರ್:",
        "passwordreset-domain": "ಕ್ಷೇತ್ರೊ:",
        "passwordreset-email": "ಇ-ಅಂಚೆ ವಿಳಾಸೊ",
+       "passwordreset-emailtitle": "{{SITENAME}} ಖಾತೆ ವಿವರೊಲು",
+       "passwordreset-emailtext-ip": "ಏರಾಒರಿ (ಬಹುಶಃ ಈರ್,$1 ಐಪಿ ವಿಳಾಸೊಡು) ಇರೆನ {{SITENAME}} ($4) ದ ಸಂಕೇತಪದ ಪಿರತಾಪನೆಗ್ ಕೇಂಡೆರ್. ಈ ದುಂಬುದ ಬಳಕೆದಾರೆ {{PLURAL:$3|ಖಾತೆ|ಖಾತೆಲು}}ಡು \nಈ  $2 ಇಮೇಲ್ ಉಂಡು:\n{{PLURAL:$3|ಈ ಹಂಗಾಮಿ ಸಂಕೇತಪದ|ಈ ಹಂಗಾಮಿ ಸಂಕೇತಪದೊಲು}} {{PLURAL:$5|ಒಂಜಿ ದಿನ|$5 ದಿನೊ}}ಟು ಮುಗಿದ್ ಪೋಪುಂಡು.\nಈರ್ ಇತ್ತೆ ಉಳಗಮನ ಮಲ್ತ್ ಬೊಕ ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ಆಯೊಡು. ಈ ಕೇಣಿಕೆನ್ ಏರಾಒರಿ ಮಲ್ತಿನಾಂಡ ಇಜಿಂಡ ಇರೆಗ್ ಇರೆನ ಮೂಲ ಸಂಕೇತಪದ ನೆನಪುಗು ಬತ್ತ್ಂಡಾ, ಈರ್ ಈ ಸಂದೇಶೊನು ಅವಗಣನೆ ಮಲ್ಪುಲೆ ಬೊಕ ಇರೆನ ಪರಾ ಸಂಕೇತಪದೊನು ಗಳಸೊಂದು ದುಂಬರಿಲೆ.",
+       "passwordreset-emailtext-user": " \n\n\n\nಬಳಕೆದಾರೆ $1  {{SITENAME}} ಡು  {{SITENAME}}($4)ದ  ಇರೆನ ಸಂಕೇತಪದ ಪಿರತಾಪನೆಗ್ ಕೇಂಡೆರ್. ಈ ದುಂಬುದ ಬಳಕೆದಾರೆ {{PLURAL:$3|ಖಾತೆ|ಖಾತೆಲು}}ಡು \nಈ  $2 ಇಮೇಲ್ ಉಂಡು:\n{{PLURAL:$3|ಈ ಹಂಗಾಮಿ ಸಂಕೇತಪದ|ಈ ಹಂಗಾಮಿ ಸಂಕೇತಪದೊಲು}}{{PLURAL:$5|ಒಂಜಿ ದಿನ|$5 ದಿನೊ}}ಟು ಮುಗಿದ್ ಪೋಪುಂಡು.\nಈರ್ ಇತ್ತೆ ಉಳಗಮನ ಮಲ್ತ್ ಬೊಕ ಒಂಜಿ ಪೊಸ ಸಂಕೇತಪದ ಆಯೊಡು. ಈ ಕೇಣಿಕೆನ್ ಏರಾಒರಿ ಮಲ್ತಿನಾಂಡ ಇಜಿಂಡ ಇರೆಗ್ ಇರೆನ ಮೂಲ ಸಂಕೇತಪದ ನೆನಪುಗು ಬತ್ತ್ಂಡಾ, ಬೊಕ ಅವೆನ್ ಈರ್ ಬದಲಾರೆ ಬಯಕುಜರ್ಡ, ಈರ್ ಈ ಸಂದೇಶೊನು ಅವಗಣನೆ ಮಲ್ಪುಲೆ ಬೊಕ ಇರೆನ ಪರಾ ಸಂಕೇತಪದೊನು ಗಳಸೊಂದು ದುಂಬರಿಲೆ.",
+       "passwordreset-emailelement": "ಬಳಕೆದಾರೆಪುದರ್:\n$1\n\nಹಂಗಾಮಿ ಸಂಕೇತಪದ:\n$2",
+       "passwordreset-emailsentemail": "ಈವೊಂಜಿ ಇಮೇಲ್ ಇರೆನ ಖಾತೆಗ್ ಸೇರಿನವು ಆದಿತ್ತ್ಂಡಾ,  ಸಂಕೇತಪದ ಪಿರತಾಪನೆಗ್  ಒಂಜಿ ಇಮೇಲ್ ಕಡಪುಡುಂಡು.",
+       "passwordreset-emailsentusername": "ಈ ಬಳಕೆಪುದರುಗು ಸೇರಿನ ಒಂಜಿ ಇಮೇಲ್ ವಿಳಾಸ ಇತ್ತಿನಾಂಡಾ,  ಸಂಕೇತಪದ ಪಿರತಾಪನೆಗ್  ಒಂಜಿ ಇಮೇಲ್ ಕಡಪುಡುಂಡು.",
+       "passwordreset-nocaller": "ಒರಿ ಲೆಪ್ಪುನಾಯನ್ ಕೊರೊಡು.",
+       "passwordreset-nosuchcaller": "ಲೆಪ್ಪುನಾಯೆ ಇಜ್ಜೆ: $1",
+       "passwordreset-ignored": "ಸಂಕೇತಪದ ಪಿರತಾಪನೆನ್ ಮುಟುದಿಜಿ. ಬಹುಶಃ ಒದಗಾವುನ ಸಂರಚನೆ ಆತಿಜಿ ?",
        "passwordreset-invalidemail": "ಇಮೇಲ್ ಸರಿ ಇಜ್ಜಿ",
+       "passwordreset-nodata": "ಒಂಜಿ ಬಳಕೆಪುದರ್ ಅತ್ತಾಂಡ ಒಂಜಿ ಇಮೇಲ್ ವಿಳಾಸ ಕೊರ್ತುಜಿ.",
        "changeemail": "ಈ-ಮೈಲ್ ವಿಲಾಸೊನು ಬದಲ್ ಮಲ್ಪುಲೆ ಅತ್ತಂಡ ದೆತ್ತ್ ಬುಡ್ಲೆ",
+       "changeemail-header": "ಇರೆನ ಇಮೇಲ್ ವಿಳಾಸ ಬದಲಾರೆ ಈ ರೂಪತ್ರನ್ ದಿಂಜಾಲೆ. ಇರೆನ ಖಾತೆರ್ದ್  ಒವ್ವೆ ಇಮೇಲ್ ವಿಳಾಸದ ಸಹಯೋಗ ದೆಪ್ಪರೆ ಇಚ್ಚಿಸಾವರ್ಡ,  ರೂಪತ್ರ ಒಪ್ಪಿಸಾನಗ  ಪೊಸ ಇಮೇಲ್ ವಿಳಾಸ ಖಾಲಿ ಬುಡುಲೆ.",
+       "changeemail-no-info": "ಈ ಪುಟೊಕು ನೇರ ಪ್ರವೇಶೊ ಪಡೆವರೆ, ಈರ್ ಉಳಗಮನ ಆದಿಪ್ಪೊಡು.",
        "changeemail-oldemail": "ಇತ್ತೆತಾ ಈಮೇಲ್ ವಿಳಾಸೊ:",
        "changeemail-newemail": "ಪೊಸ ಇ-ಅಂಚೆ ವಿಳಾಸೊ:",
+       "changeemail-newemail-help": "ಇರೆನ ಇಮೇಲ್ ವಿಳಾಸ ದೆಪ್ಪೊಡಾಂಡ, ಕಿಂಡಿ ಖಾಲಿ ಬುಡೋಡು. ಇಮೇಲ್ ವಿಳಾಸ ದೆತ್ತ್ಂಡಾ, ಈರ್ ಮದತಿನ ಸಂಕೇತಪದೊನು ಪಿರತಾಪನೆ ಮಲ್ಪರಾಪುಜಿ ಬೊಕ ಇರೆಗ್ ಈ ವಿಕಿರ್ದ್ ಇಮೇಲ್ ಬರ್ಪುಜಿ.",
        "changeemail-none": "ಒವ್ವುಲಾ ಇಜ್ಜಿ",
+       "changeemail-password": "ಇರೆನ{{SITENAME}}ಸಂಕೇತಪದ:",
        "changeemail-submit": "ಇ-ಅಂಚೆ ವಿಳಾಸ ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ",
+       "changeemail-throttled": "ಈರ್ ದಿಂಜ ಸರ್ತಿ ಉಳಗಮನ ಪ್ರಯತ್ನ ಮಲ್ದರ್. ಕುಡಾ ಯತ್ನ ಮಲ್ಪುನ ದುಂಬು ದಯಮಲ್ತ್ $1 ಕಾಪುಲೆ",
+       "changeemail-nochange": "ದಯಮಲ್ತ್ ಒಂಜಿ ಬೇತೆ ಪೊಸ ಇಮೇಲ್ ವಿಳಾಸ ಸೇರಾಲೆ.",
        "resettokens": "ಸಂಕೇತೊಲೆನ್ ಜತೆಸೇರಲೆ",
        "resettokens-tokens": "ಸಂಕೇತೊಲು:",
        "resettokens-token-label": "$1(ಇತ್ತೆದ ಮೌಲ್ಯೊ:$2)",
index b44024b..f9f2f0a 100644 (file)
        "mainpage": "หน้าหลัก",
        "mainpage-description": "หน้าหลัก",
        "policy-url": "Project:นโยบาย",
-       "portal": "ศูà¸\99ยà¹\8cรวมชุมชน",
-       "portal-url": "Project:ศูà¸\99ยà¹\8cรวมชุมชน",
+       "portal": "ศาลาชุมชน",
+       "portal-url": "Project:ศาลาชุมชน",
        "privacy": "นโยบายความเป็นส่วนตัว",
        "privacypage": "Project:นโยบายความเป็นส่วนตัว",
        "badaccess": "มีข้อผิดพลาดในการใช้สิทธิ",
        "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ปูมการบล็อกล่าสุดแสดงด้านล่างนี้เพื่อการอ้างอิง:",
        "spam_blanking": "รุ่นการปรับปรุงทุกรุ่นประกอบไปด้วยลิงก์ไปยังเว็บ $1 (ทำหน้าว่าง)",
        "spam_deleting": "ทุกรุ่นที่มีลิงก์ไปยัง $1 กำลังลบ",
        "simpleantispam-label": "การตรวจสอบสแปม\n<strong>อย่า</strong>กรอกช่องนี้!",
-       "pageinfo-title": "à¸\82à¹\89อมูลสำหรับ \"$1\"",
+       "pageinfo-title": "สารสà¸\99à¹\80à¸\97ศสำหรับ \"$1\"",
        "pageinfo-not-current": "ขออภัย ไม่สามารถให้ข้อมูลนี้สำหรับรุ่นปรับปรุงเก่าได้",
        "pageinfo-header-basic": "สารสนเทศเบื้องต้น",
        "pageinfo-header-edits": "ประวัติการแก้ไข",
index 7d94be7..8afabf7 100644 (file)
        "move-watch": "Bu sayfayı izle",
        "movepagebtn": "Sayfayı taşı",
        "pagemovedsub": "İsim değişikliği tamamlandı.",
+       "cannotmove": "Sayfa, aşağıdaki {{PLURAL:$1|nedenden|nedenlerden}} ötürü taşınamadı:",
        "movepage-moved": "'''\"$1\",  \"$2\" sayfasına taşındı'''",
        "movepage-moved-redirect": "Bir yönlendirme oluşturuldu.",
        "movepage-moved-noredirect": "Bir yönlendirme oluşturulması bastırıldı.",
index 591f101..dc1a22a 100644 (file)
        "createacct-another-username-ph": "صارف نام درج کریں",
        "yourpassword": "پاس ورڈ:",
        "userlogin-yourpassword": "پاس ورڈ",
-       "userlogin-yourpassword-ph": "اپنا پاسورڈ دیں",
+       "userlogin-yourpassword-ph": "پاسورڈ درج کریں",
        "createacct-yourpassword-ph": "پاس ورڈ درج کریں",
        "yourpasswordagain": "کلمۂ شناخت دوبارہ لکھیں",
        "createacct-yourpasswordagain": "پاس ورڈ کی تصدیق کریں",
index 3dab2da..d01454b 100644 (file)
                        "Hello903hello",
                        "A Chinese Wikipedian",
                        "Angrydog001",
-                       "GoForceX"
+                       "GoForceX",
+                       "Ff98sha"
                ]
        },
        "tog-underline": "链接下划线:",
        "resetpass-abort-generic": "密码更改已经被扩展程序中止。",
        "resetpass-expired": "您的密码已经到期。请设置新登录密码。",
        "resetpass-expired-soft": "您的密码已经到期,需要更改。请现在更换新密码,或单击“{{int:authprovider-resetpass-skip-label}}”以稍后更改。",
+       "resetpass-validity": "您的密码无效:$1\n\n请设置新登录密码登录。",
        "resetpass-validity-soft": "您的密码无效:$1\n\n请选择一个新密码,或单击“{{int:authprovider-resetpass-skip-label}}”以稍后更改。",
        "passwordreset": "重置密码",
        "passwordreset-text-one": "请完成此表单来通过电子邮件接收临时密码。",
        "emailblock": "电子邮件停用",
        "blocklist-nousertalk": "不能编辑自己的讨论页",
        "blocklist-editing": "编辑中",
+       "blocklist-editing-page": "页面",
+       "blocklist-editing-ns": "名字空间",
        "ipblocklist-empty": "封禁列表为空。",
        "ipblocklist-no-results": "请求的IP地址或用户名没有被封禁。",
        "blocklink": "封禁",
index b01dde6..2f0bcdf 100644 (file)
@@ -144,7 +144,7 @@ class CompareParsers extends DumpIterator {
                        return;
                }
 
-               $text = strval( $content->getNativeData() );
+               $text = strval( $content->getText() );
 
                $output1 = $parser1->parse( $text, $title, $this->options );
                $output2 = $parser2->parse( $text, $title, $this->options );
index d540e8f..f8526d0 100644 (file)
@@ -86,7 +86,7 @@ class PreprocessDump extends DumpIterator {
                }
 
                try {
-                       $this->mPreprocessor->preprocessToObj( strval( $content->getNativeData() ), 0 );
+                       $this->mPreprocessor->preprocessToObj( strval( $content->getText() ), 0 );
                } catch ( Exception $e ) {
                        $this->error( "Caught exception " . $e->getMessage() . " in "
                                . $rev->getTitle()->getPrefixedText() );
index 952b825..24b5007 100644 (file)
@@ -51,7 +51,7 @@ class ViewCLI extends Maintenance {
                        $this->fatalError( "Non-text content models not supported" );
                }
 
-               $this->output( $content->getNativeData() );
+               $this->output( $content->getText() );
        }
 }
 
index f034519..8f3e8c4 100644 (file)
@@ -2130,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' => [
@@ -2357,6 +2357,7 @@ return [
                'dependencies' => [
                        'mediawiki.api',
                        'mediawiki.jqueryMsg',
+                       'mediawiki.notify',
                        'mediawiki.Title',
                        'mediawiki.util',
                        'oojs-ui-core',
index 1ab91a9..ec96cb6 100644 (file)
@@ -47,7 +47,8 @@
        ul.mw-collapsible:not( @{exclude} ):before,
        // Where the tbody or thead is the first child of the collapsible table
        table.mw-collapsible:not( @{exclude} ) :first-child tr:first-child th:last-child:before,
-       table.mw-collapsible:not( @{exclude} ) > caption:first-child:after {
+       table.mw-collapsible:not( @{exclude} ) > caption:first-child:after,
+       div.mw-collapsible:not( @{exclude} ):before {
                content: '[@{msg-collapsible-collapse}]';
        }
 
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 ea26808..1b6ff2a 100644 (file)
@@ -39,7 +39,7 @@ class SlotRecordTest extends MediaWikiTestCase {
                $this->assertTrue( $record->hasContentId() );
                $this->assertTrue( $record->hasRevision() );
                $this->assertTrue( $record->isInherited() );
-               $this->assertSame( 'A', $record->getContent()->getNativeData() );
+               $this->assertSame( 'A', $record->getContent()->getText() );
                $this->assertSame( 5, $record->getSize() );
                $this->assertSame( 'someHash', $record->getSha1() );
                $this->assertSame( CONTENT_MODEL_WIKITEXT, $record->getModel() );
@@ -75,7 +75,7 @@ class SlotRecordTest extends MediaWikiTestCase {
                $this->assertTrue( $record->hasRevision() );
                $this->assertFalse( $record->hasContentId() );
                $this->assertFalse( $record->isInherited() );
-               $this->assertSame( 'A', $record->getContent()->getNativeData() );
+               $this->assertSame( 'A', $record->getContent()->getText() );
                $this->assertSame( 1, $record->getSize() );
                $this->assertNotNull( $record->getSha1() );
                $this->assertSame( CONTENT_MODEL_WIKITEXT, $record->getModel() );
@@ -94,7 +94,7 @@ class SlotRecordTest extends MediaWikiTestCase {
                $this->assertFalse( $record->hasRevision() );
                $this->assertFalse( $record->isInherited() );
                $this->assertFalse( $record->hasOrigin() );
-               $this->assertSame( 'A', $record->getContent()->getNativeData() );
+               $this->assertSame( 'A', $record->getContent()->getText() );
                $this->assertSame( 1, $record->getSize() );
                $this->assertNotNull( $record->getSha1() );
                $this->assertSame( CONTENT_MODEL_WIKITEXT, $record->getModel() );
@@ -237,7 +237,7 @@ class SlotRecordTest extends MediaWikiTestCase {
                $this->assertTrue( $saved->hasContentId() );
                $this->assertSame( 'theNewAddress', $saved->getAddress() );
                $this->assertSame( 20, $saved->getContentId() );
-               $this->assertSame( 'A', $saved->getContent()->getNativeData() );
+               $this->assertSame( 'A', $saved->getContent()->getText() );
                $this->assertSame( 10, $saved->getRevision() );
                $this->assertSame( 10, $saved->getOrigin() );
 
index 339dc30..a17d21d 100644 (file)
@@ -657,7 +657,7 @@ abstract class RevisionDbTestBase extends MediaWikiTestCase {
                        'new null revision should have the same SHA1 as the original revision' );
                $this->assertTrue( $orig->getRevisionRecord()->hasSameContent( $rev->getRevisionRecord() ),
                        'new null revision should have the same content as the original revision' );
-               $this->assertEquals( __METHOD__, $rev->getContent()->getNativeData() );
+               $this->assertEquals( __METHOD__, $rev->getContent()->getText() );
        }
 
        /**
@@ -1379,7 +1379,7 @@ abstract class RevisionDbTestBase extends MediaWikiTestCase {
                );
                $rev = $this->testPage->getRevision();
 
-               $this->assertSame( $expectedText, $rev->getContent()->getNativeData() );
+               $this->assertSame( $expectedText, $rev->getContent()->getText() );
                $this->assertSame( $expectedText, $rev->getSerializedData() );
                $this->assertSame( $this->testPage->getContentModel(), $rev->getContentModel() );
                $this->assertSame( $this->testPage->getContent()->getDefaultFormat(), $rev->getContentFormat() );
index 2161093..de0af0b 100644 (file)
@@ -152,7 +152,7 @@ class ApiEditPageTest extends ApiTestCase {
                $content = $page->getContent();
                $this->assertNotNull( $content, 'Page should have been created' );
 
-               $text = $content->getNativeData();
+               $text = $content->getText();
 
                $this->assertSame( $expected, $text );
        }
@@ -176,7 +176,7 @@ class ApiEditPageTest extends ApiTestCase {
                $this->assertSame( 'Success', $re['edit']['result'] );
                $newtext = WikiPage::factory( Title::newFromText( $name ) )
                        ->getContent( Revision::RAW )
-                       ->getNativeData();
+                       ->getText();
                $this->assertSame( "==section 1==\nnew content 1\n\n==section 2==\ncontent2", $newtext );
 
                // Test that we raise a 'nosuchsection' error
@@ -216,7 +216,7 @@ class ApiEditPageTest extends ApiTestCase {
                // Check the page text is correct
                $text = WikiPage::factory( Title::newFromText( $name ) )
                        ->getContent( Revision::RAW )
-                       ->getNativeData();
+                       ->getText();
                $this->assertSame( "== header ==\n\ntest", $text );
 
                // Now on one that does
@@ -232,7 +232,7 @@ class ApiEditPageTest extends ApiTestCase {
                $this->assertSame( 'Success', $re2['edit']['result'] );
                $text = WikiPage::factory( Title::newFromText( $name ) )
                        ->getContent( Revision::RAW )
-                       ->getNativeData();
+                       ->getText();
                $this->assertSame( "== header ==\n\ntest\n\n== header ==\n\ntest", $text );
        }
 
@@ -733,7 +733,7 @@ class ApiEditPageTest extends ApiTestCase {
                        'undoafter' => $revId1,
                ] );
 
-               $text = ( new WikiPage( $titleObj ) )->getContent()->getNativeData();
+               $text = ( new WikiPage( $titleObj ) )->getContent()->getText();
 
                // This is wrong!  It should be 1.  But let's test for our incorrect
                // behavior for now, so if someone fixes it they'll fix the test as
@@ -761,7 +761,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )->getContent()
-                       ->getNativeData();
+                       ->getText();
                $this->assertSame( '3', $text );
        }
 
@@ -784,7 +784,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )->getContent()
-                       ->getNativeData();
+                       ->getText();
                $this->assertSame( '1', $text );
        }
 
@@ -855,7 +855,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                       ->getContent()->getNativeData();
+                       ->getContent()->getText();
                $this->assertSame( 'Alert: Some text', $text );
        }
 
@@ -872,7 +872,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                       ->getContent()->getNativeData();
+                       ->getContent()->getText();
                $this->assertSame( 'Some text is nice', $text );
        }
 
@@ -890,7 +890,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                       ->getContent()->getNativeData();
+                       ->getContent()->getText();
                $this->assertSame( 'Alert: Some text is nice', $text );
        }
 
@@ -957,7 +957,7 @@ class ApiEditPageTest extends ApiTestCase {
                } finally {
                        // Validate that content was not changed
                        $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                               ->getContent()->getNativeData();
+                               ->getContent()->getText();
 
                        $this->assertSame( 'Some text', $text );
                }
@@ -1059,7 +1059,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                       ->getContent()->getNativeData();
+                       ->getContent()->getText();
 
                $this->assertSame( "Initial content\n\n== New section ==", $text );
        }
@@ -1097,7 +1097,7 @@ class ApiEditPageTest extends ApiTestCase {
                $page = new WikiPage( Title::newFromText( $name ) );
 
                $this->assertSame( "Initial content\n\n== My section ==\n\nMore content",
-                       $page->getContent()->getNativeData() );
+                       $page->getContent()->getText() );
                $this->assertSame( '/* My section */ new section',
                        $page->getRevision()->getComment() );
        }
@@ -1118,7 +1118,7 @@ class ApiEditPageTest extends ApiTestCase {
                $page = new WikiPage( Title::newFromText( $name ) );
 
                $this->assertSame( "Initial content\n\n== Add new section ==\n\nMore content",
-                       $page->getContent()->getNativeData() );
+                       $page->getContent()->getText() );
                // EditPage actually assumes the summary is the section name here
                $this->assertSame( '/* Add new section */ new section',
                        $page->getRevision()->getComment() );
@@ -1141,7 +1141,7 @@ class ApiEditPageTest extends ApiTestCase {
                $page = new WikiPage( Title::newFromText( $name ) );
 
                $this->assertSame( "Initial content\n\n== My section ==\n\nMore content",
-                       $page->getContent()->getNativeData() );
+                       $page->getContent()->getText() );
                $this->assertSame( 'Add new section',
                        $page->getRevision()->getComment() );
        }
@@ -1160,7 +1160,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                       ->getContent()->getNativeData();
+                       ->getContent()->getText();
 
                $this->assertSame( "== Section 1 ==\n\nContent and more content\n\n" .
                        "== Section 2 ==\n\nFascinating!", $text );
@@ -1179,7 +1179,7 @@ class ApiEditPageTest extends ApiTestCase {
                ] );
 
                $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                       ->getContent()->getNativeData();
+                       ->getContent()->getText();
 
                $this->assertSame( "Content and more content\n\n== Section 1 ==\n\n" .
                        "Fascinating!", $text );
@@ -1201,7 +1201,7 @@ class ApiEditPageTest extends ApiTestCase {
                        ] );
                } finally {
                        $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                               ->getContent()->getNativeData();
+                               ->getContent()->getText();
 
                        $this->assertSame( 'Content', $text );
                }
@@ -1223,7 +1223,7 @@ class ApiEditPageTest extends ApiTestCase {
                        ] );
                } finally {
                        $text = ( new WikiPage( Title::newFromText( $name ) ) )
-                               ->getContent()->getNativeData();
+                               ->getContent()->getText();
 
                        $this->assertSame( 'Content', $text );
                }
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 420fe74..eff2c85 100644 (file)
@@ -26,6 +26,12 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
 
                $styleModules = $enhancedChangesList->getOutput()->getModuleStyles();
 
+               $this->assertContains(
+                       'mediawiki.icon',
+                       $styleModules,
+                       'has mediawiki.icon'
+               );
+
                $this->assertContains(
                        'mediawiki.special.changeslist',
                        $styleModules,
@@ -46,7 +52,6 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                $modules = $enhancedChangesList->getOutput()->getModules();
 
                $this->assertContains( 'jquery.makeCollapsible', $modules, 'has jquery.makeCollapsible' );
-               $this->assertContains( 'mediawiki.icon', $modules, 'has mediawiki.icon' );
        }
 
        public function testBeginRecentChangesList_html() {
index 58f9654..3d1bf59 100644 (file)
@@ -23,6 +23,9 @@
  * @copyright © 2013 Wikimedia Foundation Inc.
  */
 
+use Wikimedia\Rdbms\Database;
+use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\IMaintainableDatabase;
 use Wikimedia\Rdbms\LBFactory;
 use Wikimedia\Rdbms\LBFactorySimple;
 use Wikimedia\Rdbms\LBFactoryMulti;
@@ -456,7 +459,7 @@ class LBFactoryTest extends MediaWikiTestCase {
                );
                unset( $db );
 
-               /** @var Database $db */
+               /** @var IMaintainableDatabase $db */
                $db = $lb->getConnection( DB_MASTER, [], '' );
 
                $this->assertEquals(
@@ -531,7 +534,7 @@ class LBFactoryTest extends MediaWikiTestCase {
                        ]
                );
                $lb = $factory->getMainLB();
-               /** @var Database $db */
+               /** @var IMaintainableDatabase $db */
                $db = $lb->getConnection( DB_MASTER, [], '' );
 
                $this->assertEquals( '', $db->getDomainID(), "Null domain used" );
@@ -592,7 +595,7 @@ class LBFactoryTest extends MediaWikiTestCase {
                        ]
                );
                $lb = $factory->getMainLB();
-               /** @var Database $db */
+               /** @var IDatabase $db */
                $db = $lb->getConnection( DB_MASTER, [], '' );
 
                if ( $db->getType() === 'sqlite' ) {
index c760d02..47cdb15 100644 (file)
@@ -7,7 +7,7 @@ class CustomDifferenceEngine extends DifferenceEngine {
        }
 
        public function generateContentDiffBody( Content $old, Content $new ) {
-               return $old->getNativeData() . '|' . $new->getNativeData();
+               return $old->getText() . '|' . $new->getText();
        }
 
        public function showDiffStyle() {
index 892bdcf..2b81222 100644 (file)
@@ -33,7 +33,7 @@ class ImportTest extends MediaWikiLangTestCase {
                $title = Title::newFromText( $title );
                $this->assertTrue( $title->exists() );
 
-               $this->assertEquals( WikiPage::factory( $title )->getContent()->getNativeData(), $text );
+               $this->assertEquals( WikiPage::factory( $title )->getContent()->getText(), $text );
        }
 
        public function getUnknownTagsXML() {
index 466e209..524fbdc 100644 (file)
@@ -190,8 +190,7 @@ class ArticleViewTest extends MediaWikiTestCase {
                        ->willReturn( new ParserOutput( 'Structured Output' ) );
                $content->method( 'getModel' )
                        ->willReturn( 'NotText' );
-               $content->method( 'getNativeData' )
-                       ->willReturn( [ (object)[ 'x' => 'stuff' ] ] );
+               $content->expects( $this->never() )->method( 'getNativeData' );
                $content->method( 'copy' )
                        ->willReturn( $content );
 
@@ -447,7 +446,7 @@ class ArticleViewTest extends MediaWikiTestCase {
                        'ArticleContentViewCustom',
                        function ( Content $content, Title $title, OutputPage $output ) use ( $page ) {
                                $this->assertSame( $page->getTitle(), $title, '$title' );
-                               $this->assertSame( 'Test A', $content->getNativeData(), '$content' );
+                               $this->assertSame( 'Test A', $content->getText(), '$content' );
 
                                $output->addHTML( 'Hook Text' );
                                return false;
@@ -483,9 +482,8 @@ class ArticleViewTest extends MediaWikiTestCase {
                        'ArticleRevisionViewCustom',
                        function ( RevisionRecord $rev, Title $title, $oldid, OutputPage $output ) use ( $page ) {
                                $content = $rev->getContent( SlotRecord::MAIN );
-
                                $this->assertSame( $page->getTitle(), $title, '$title' );
-                               $this->assertSame( 'Test A', $content->getNativeData(), '$content' );
+                               $this->assertSame( 'Test A', $content->getText(), '$content' );
 
                                $output->addHTML( 'Hook Text' );
                                return false;
@@ -517,7 +515,7 @@ class ArticleViewTest extends MediaWikiTestCase {
                        'ArticleAfterFetchContentObject',
                        function ( Article &$articlePage, Content &$content ) use ( $page, $article ) {
                                $this->assertSame( $article, $articlePage, '$articlePage' );
-                               $this->assertSame( 'Test A', $content->getNativeData(), '$content' );
+                               $this->assertSame( 'Test A', $content->getText(), '$content' );
 
                                $content = new WikitextContent( 'Hook Text' );
                        }
index 933e47d..e4134b8 100644 (file)
@@ -737,7 +737,7 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase {
                $rev = $page->getRevision();
 
                $this->assertEquals( $page->getLatest(), $rev->getId() );
-               $this->assertEquals( "some text", $rev->getContent()->getNativeData() );
+               $this->assertEquals( "some text", $rev->getContent()->getText() );
        }
 
        /**
@@ -753,7 +753,7 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase {
                $this->createPage( $page, "some text", CONTENT_MODEL_WIKITEXT );
 
                $content = $page->getContent();
-               $this->assertEquals( "some text", $content->getNativeData() );
+               $this->assertEquals( "some text", $content->getText() );
        }
 
        /**
@@ -1111,7 +1111,7 @@ more stuff
                $content = ContentHandler::makeContent( $with, $page->getTitle(), $page->getContentModel() );
                $c = $page->replaceSectionContent( $section, $content, $sectionTitle );
 
-               $this->assertEquals( $expected, is_null( $c ) ? null : trim( $c->getNativeData() ) );
+               $this->assertEquals( $expected, is_null( $c ) ? null : trim( $c->getText() ) );
        }
 
        /**
@@ -1127,7 +1127,7 @@ more stuff
                $content = ContentHandler::makeContent( $with, $page->getTitle(), $page->getContentModel() );
                $c = $page->replaceSectionAtRev( $section, $content, $sectionTitle, $baseRevId );
 
-               $this->assertEquals( $expected, is_null( $c ) ? null : trim( $c->getNativeData() ) );
+               $this->assertEquals( $expected, is_null( $c ) ? null : trim( $c->getText() ) );
        }
 
        /**
@@ -1242,7 +1242,7 @@ more stuff
                $page = new WikiPage( $page->getTitle() );
                $this->assertEquals( $rev2->getSha1(), $page->getRevision()->getSha1(),
                        "rollback did not revert to the correct revision" );
-               $this->assertEquals( "one\n\ntwo", $page->getContent()->getNativeData() );
+               $this->assertEquals( "one\n\ntwo", $page->getContent()->getText() );
 
                $rc = MediaWikiServices::getInstance()->getRevisionStore()->getRecentChange(
                        $page->getRevision()->getRevisionRecord()
@@ -1332,7 +1332,7 @@ more stuff
                $page = new WikiPage( $page->getTitle() );
                $this->assertEquals( $rev1->getSha1(), $page->getRevision()->getSha1(),
                        "rollback did not revert to the correct revision" );
-               $this->assertEquals( "one", $page->getContent()->getNativeData() );
+               $this->assertEquals( "one", $page->getContent()->getText() );
        }
 
        /**
@@ -1817,8 +1817,8 @@ more stuff
                $fetchedPage = WikiPage::newFromID( $createdPage->getId() );
                $this->assertSame( $createdPage->getId(), $fetchedPage->getId() );
                $this->assertEquals(
-                       $createdPage->getContent()->getNativeData(),
-                       $fetchedPage->getContent()->getNativeData()
+                       $createdPage->getContent()->getText(),
+                       $fetchedPage->getContent()->getText()
                );
        }
 
index 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 );
index 6bc7c44..e3cac83 100644 (file)
@@ -104,7 +104,7 @@ class DummyContentForTesting extends AbstractContent {
        public function getParserOutput( Title $title, $revId = null,
                ParserOptions $options = null, $generateHtml = true
        ) {
-               return new ParserOutput( $this->getNativeData() );
+               return new ParserOutput( $this->data );
        }
 
        /**
@@ -118,6 +118,6 @@ class DummyContentForTesting extends AbstractContent {
         */
        protected function fillParserOutput( Title $title, $revId,
                        ParserOptions $options, $generateHtml, ParserOutput &$output ) {
-               $output = new ParserOutput( $this->getNativeData() );
+               $output = new ParserOutput( $this->data );
        }
 }
index e65f522..bdfa8d0 100644 (file)
@@ -102,7 +102,7 @@ class DummyNonTextContent extends AbstractContent {
        public function getParserOutput( Title $title, $revId = null,
                ParserOptions $options = null, $generateHtml = true
        ) {
-               return new ParserOutput( $this->getNativeData() );
+               return new ParserOutput( $this->serialize() );
        }
 
        /**
@@ -116,6 +116,6 @@ class DummyNonTextContent extends AbstractContent {
         */
        protected function fillParserOutput( Title $title, $revId,
                        ParserOptions $options, $generateHtml, ParserOutput &$output ) {
-               $output = new ParserOutput( $this->getNativeData() );
+               $output = new ParserOutput( $this->serialize() );
        }
 }