Merge "Make DefaultPreferencesFactory depend on PermissionManager."
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 12 Sep 2019 21:03:30 +0000 (21:03 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 12 Sep 2019 21:03:30 +0000 (21:03 +0000)
117 files changed:
includes/Revision/RevisionRecord.php
includes/Storage/DerivedPageDataUpdater.php
includes/StreamFile.php
includes/Title.php
includes/actions/InfoAction.php
includes/api/ApiResetPassword.php
includes/api/i18n/ar.json
includes/api/i18n/fr.json
includes/api/i18n/it.json
includes/api/i18n/ko.json
includes/api/i18n/mk.json
includes/api/i18n/pt-br.json
includes/deferred/CdnCacheUpdate.php
includes/deferred/HTMLCacheUpdate.php
includes/deferred/LinksUpdate.php
includes/filerepo/file/File.php
includes/logging/BlockLogFormatter.php
includes/logging/ContentModelLogFormatter.php
includes/logging/DeleteLogFormatter.php
includes/logging/LogEventsList.php
includes/logging/LogFormatter.php
includes/logging/LogPager.php
includes/logging/MergeLogFormatter.php
includes/logging/MoveLogFormatter.php
includes/logging/ProtectLogFormatter.php
includes/mail/EmailNotification.php
includes/media/JpegMetadataExtractor.php
includes/page/Article.php
includes/page/ImageHistoryList.php
includes/page/ImagePage.php
includes/page/WikiPage.php
includes/skins/SkinTemplate.php
includes/specialpage/LoginSignupSpecialPage.php
includes/specialpage/SpecialPage.php
includes/specials/SpecialApiSandbox.php
includes/specials/SpecialAutoblockList.php
includes/specials/SpecialBlock.php
includes/specials/SpecialBlockList.php
includes/specials/SpecialBrokenRedirects.php
includes/specials/SpecialChangeContentModel.php
includes/specials/SpecialChangeEmail.php
includes/specials/SpecialConfirmEmail.php
includes/specials/SpecialContributions.php
includes/specials/SpecialCreateAccount.php
includes/specials/SpecialDoubleRedirects.php
includes/specials/SpecialEditTags.php
includes/specials/SpecialEmailUser.php
includes/specials/SpecialExpandTemplates.php
includes/specials/SpecialExport.php
includes/specials/SpecialImport.php
includes/specials/SpecialLog.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialPasswordReset.php
includes/specials/SpecialPreferences.php
includes/specials/SpecialRecentChanges.php
includes/specials/SpecialRecentChangesLinked.php
includes/specials/SpecialRevisionDelete.php
includes/specials/SpecialTags.php
includes/specials/SpecialUnblock.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUserrights.php
includes/specials/SpecialWatchlist.php
includes/specials/SpecialWhatLinksHere.php
includes/specials/forms/PreferencesFormOOUI.php
includes/specials/forms/UploadForm.php
includes/specials/pagers/ActiveUsersPager.php
includes/specials/pagers/BlockListPager.php
includes/specials/pagers/ContribsPager.php
includes/specials/pagers/DeletedContribsPager.php
includes/specials/pagers/ProtectedPagesPager.php
includes/specials/pagers/UsersPager.php
includes/upload/UploadBase.php
includes/upload/UploadFromUrl.php
includes/user/LocalIdLookup.php
includes/user/PasswordReset.php
includes/user/UserNamePrefixSearch.php
languages/i18n/ar.json
languages/i18n/ban.json
languages/i18n/bg.json
languages/i18n/diq.json
languages/i18n/exif/nb.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/gom-deva.json
languages/i18n/gom-latn.json
languages/i18n/he.json
languages/i18n/io.json
languages/i18n/jv.json
languages/i18n/lv.json
languages/i18n/mk.json
languages/i18n/my.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/ne.json
languages/i18n/nqo.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/sh.json
languages/i18n/sl.json
languages/i18n/sv.json
languages/i18n/szl.json
languages/i18n/uk.json
languages/i18n/zgh.json
languages/i18n/zh-hant.json
resources/Resources.php
resources/src/mediawiki.ForeignApi.core.js
tests/phpunit/data/media/jpeg-xmp-nullchar.jpg [new file with mode: 0644]
tests/phpunit/includes/Revision/RenderedRevisionTest.php
tests/phpunit/includes/media/JpegMetadataExtractorTest.php
tests/phpunit/includes/specials/SpecialBlankPageTest.php
tests/phpunit/includes/user/LocalIdLookupTest.php
tests/phpunit/includes/user/PasswordResetTest.php
tests/phpunit/includes/user/UserGroupMembershipTest.php
tests/qunit/suites/resources/mediawiki.api/mediawiki.ForeignApi.test.js

index ff9ac57..759180a 100644 (file)
@@ -531,8 +531,6 @@ abstract class RevisionRecord {
                                $text = $title->getPrefixedText();
                                wfDebug( "Checking for $permissionlist on $text due to $field match on $bitfield\n" );
 
-                               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
-
                                foreach ( $permissions as $perm ) {
                                        if ( $permissionManager->userCan( $perm, $user, $title ) ) {
                                                return true;
index 4903cf0..b2c003a 100644 (file)
@@ -1531,7 +1531,9 @@ class DerivedPageDataUpdater implements IDBAccessObject, LoggerAwareInterface {
                if ( $this->options['changed']
                        && $title->getNamespace() == NS_USER_TALK
                        && $shortTitle != $legacyUser->getTitleKey()
-                       && !( $this->revision->isMinor() && $legacyUser->isAllowed( 'nominornewtalk' ) )
+                       && !( $this->revision->isMinor() && MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $legacyUser, 'nominornewtalk' ) )
                ) {
                        $recipient = User::newFromName( $shortTitle, false );
                        if ( !$recipient ) {
index 2ad42e5..04a4ca6 100644 (file)
@@ -105,7 +105,6 @@ class StreamFile {
                                case 'png':
                                        return 'image/png';
                                case 'jpg':
-                                       return 'image/jpeg';
                                case 'jpeg':
                                        return 'image/jpeg';
                        }
index 81c6876..bdff7a7 100644 (file)
@@ -4270,12 +4270,21 @@ class Title implements LinkTarget, IDBAccessObject {
         * on the number of links. Typically called on create and delete.
         */
        public function touchLinks() {
-               DeferredUpdates::addUpdate( new HTMLCacheUpdate( $this, 'pagelinks', 'page-touch' ) );
+               $jobs = [];
+               $jobs[] = HTMLCacheUpdateJob::newForBacklinks(
+                       $this,
+                       'pagelinks',
+                       [ 'causeAction' => 'page-touch' ]
+               );
                if ( $this->mNamespace == NS_CATEGORY ) {
-                       DeferredUpdates::addUpdate(
-                               new HTMLCacheUpdate( $this, 'categorylinks', 'category-touch' )
+                       $jobs[] = HTMLCacheUpdateJob::newForBacklinks(
+                               $this,
+                               'categorylinks',
+                               [ 'causeAction' => 'category-touch' ]
                        );
                }
+
+               JobQueueGroup::singleton()->lazyPush( $jobs );
        }
 
        /**
index 207721e..9a8949f 100644 (file)
@@ -280,11 +280,10 @@ class InfoAction extends FormlessAction {
                // Language in which the page content is (supposed to be) written
                $pageLang = $title->getPageLanguage()->getCode();
 
-               $permissionManager = $services->getPermissionManager();
-
                $pageLangHtml = $pageLang . ' - ' .
                        Language::fetchLanguageName( $pageLang, $lang->getCode() );
                // Link to Special:PageLanguage with pre-filled page title if user has permissions
+               $permissionManager = $services->getPermissionManager();
                if ( $config->get( 'PageLanguageUseDB' )
                        && $permissionManager->userCan( 'pagelang', $user, $title )
                ) {
@@ -344,8 +343,7 @@ class InfoAction extends FormlessAction {
                ];
 
                $unwatchedPageThreshold = $config->get( 'UnwatchedPageThreshold' );
-               if (
-                       $services->getPermissionManager()->userHasRight( $user, 'unwatchedpages' ) ||
+               if ( $permissionManager->userHasRight( $user, 'unwatchedpages' ) ||
                        ( $unwatchedPageThreshold !== false &&
                                $pageCounts['watchers'] >= $unwatchedPageThreshold )
                ) {
@@ -360,7 +358,7 @@ class InfoAction extends FormlessAction {
                        ) {
                                $minToDisclose = $config->get( 'UnwatchedPageSecret' );
                                if ( $pageCounts['visitingWatchers'] > $minToDisclose ||
-                                       $services->getPermissionManager()->userHasRight( $user, 'unwatchedpages' ) ) {
+                                       $permissionManager->userHasRight( $user, 'unwatchedpages' ) ) {
                                        $pageInfo['header-basic'][] = [
                                                $this->msg( 'pageinfo-visiting-watchers' ),
                                                $lang->formatNum( $pageCounts['visitingWatchers'] )
index 7783826..6b1c217 100644 (file)
@@ -21,6 +21,7 @@
  */
 
 use MediaWiki\Auth\AuthManager;
+use MediaWiki\MediaWikiServices;
 
 /**
  * Reset password, with AuthManager
@@ -63,7 +64,11 @@ class ApiResetPassword extends ApiBase {
 
                $this->requireOnlyOneParameter( $params, 'user', 'email' );
 
-               $passwordReset = new PasswordReset( $this->getConfig(), AuthManager::singleton() );
+               $passwordReset = new PasswordReset(
+                       $this->getConfig(),
+                       AuthManager::singleton(),
+                       MediaWikiServices::getInstance()->getPermissionManager()
+               );
 
                $status = $passwordReset->isAllowed( $this->getUser() );
                if ( !$status->isOK() ) {
index 09d9c46..58d2dee 100644 (file)
        "apierror-cantoverwrite-sharedfile": "الملف الهدف موجود في مستودع مشترك وليست لديك صلاحية لتجاوزه.",
        "apierror-cantsend": "لم تقم بتسجيل الدخول أو ليس لديك عنوان بريد إلكتروني مؤكد أو غير مسموح لك بإرسال بريد إلكتروني إلى مستخدمين آخرين; لذلك لا يمكنك إرسال بريد إلكتروني.",
        "apierror-cantundelete": "تعذر الاسترجاع: قد لا تكون المراجعات المطلوبة موجودة، أو ربما تم الاسترجاع بالفعل.",
-       "apierror-cantview-deleted-description": "ليست لديك صلايبة لعرض أوصاف الملفات المحذوفة.",
-       "apierror-cantview-deleted-metadata": "ليست لديك صلايبة لعرض البيانات الوصفية للملفات المحذوفة.",
+       "apierror-cantview-deleted-comment": "ليست لديك صلاحية لعرض التعليقات المحذوفة.",
+       "apierror-cantview-deleted-description": "ليست لديك صلاحية لعرض أوصاف الملفات المحذوفة.",
+       "apierror-cantview-deleted-metadata": "ليست لديك صلاحية لعرض البيانات الوصفية للملفات المحذوفة.",
+       "apierror-cantview-deleted-revision-content": "ليست لديك صلاحية لعرض محتوى المراجعات المحذوفة.",
        "apierror-changeauth-norequest": "فشل في إنشاء طلب التغيير.",
        "apierror-chunk-too-small": "الحد الأدنى لحجم القطعة هو $1 {{PLURAL:$1|بايت}} للقطع غير النهائية.",
        "apierror-cidrtoobroad": "لا يُقبَل مدى $1 CIDR أكبر من /$2.",
index 7c5d2b5..5ce00f5 100644 (file)
                        "Lucas Werkmeister (WMDE)"
                ]
        },
-       "apihelp-main-extended-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentation]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Liste de diffusion]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annonces de l’API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bogues et demandes]\n</div>\n<strong>État :</strong> L’API MediaWiki est une interface stable et mature qui est supportée et améliorée de façon active. Bien que nous essayions de l’éviter, nous pouvons avoir parfois besoin de faire des modifications impactantes ; inscrivez-vous à [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la liste de diffusion mediawiki-api-announce] pour être informé des mises à jour.\n\n<strong>Requêtes erronées :</strong> Si des requêtes erronées sont envoyées à l’API, un entête HTTP sera renvoyé avec la clé « MediaWiki-API-Error ». La valeur de cet entête et le code d’erreur renvoyé prendront la même valeur. Pour plus d’information, voyez [[mw:Special:MyLanguage/API:Errors_and_warnings|API:Errors and warnings]].\n\n<p class=\"mw-apisandbox-link\"><strong>Test :</strong> Pour faciliter le test des requêtes à l’API, voyez [[Special:ApiSandbox]].</p>",
+       "apihelp-main-extended-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentation]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Liste de diffusion]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annonces de l’API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bogues et demandes]\n</div>\n<strong>État :</strong> l’API de MediaWiki est une interface stable et mature qui est supportée et améliorée de façon active. Bien que nous essayions de l’éviter, nous pouvons avoir parfois besoin de faire des modifications impactantes ; inscrivez-vous à [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la liste de diffusion ''mediawiki-api-announce''] pour être informé des mises à jour.\n\n<strong>Requêtes erronées :</strong> si des requêtes erronées sont envoyées à l’API, un entête HTTP sera renvoyé avec la clé « MediaWiki-API-Error ». La valeur de cet entête et le code d’erreur renvoyé prendront la même valeur. Pour plus d’information, voyez [[mw:Special:MyLanguage/API:Errors_and_warnings|API:Errors and warnings]].\n\n<p class=\"mw-apisandbox-link\"><strong>Test :</strong> Pour faciliter le test des requêtes à l’API, voyez [[Special:ApiSandbox]].</p>",
        "apihelp-main-param-action": "Quelle action effectuer.",
        "apihelp-main-param-format": "Le format de sortie.",
-       "apihelp-main-param-maxlag": "La latence maximale peut être utilisée quand MediaWiki est installé sur un cluster de base de données répliqué. Pour éviter des actions provoquant un supplément de latence de réplication de site, ce paramètre peut faire attendre le client jusqu’à ce que la latence de réplication soit inférieure à une valeur spécifiée. En cas de latence excessive, le code d’erreur <samp>maxlag</samp> est renvoyé avec un message tel que <samp>Attente de $host : $lag secondes de délai</samp>.<br />Voyez [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manuel: paramètre Maxlag]] pour plus d’information.",
+       "apihelp-main-param-maxlag": "La latence maximale peut être utilisée quand MediaWiki est installé sur une grappe de réplication de base de données. Pour éviter des actions provoquant un supplément de latence de réplication de site, ce paramètre peut faire attendre le client jusqu’à ce que la latence de réplication soit inférieure à une valeur spécifiée. En cas de latence excessive, le code d’erreur <samp>maxlag</samp> est renvoyé avec un message tel que <samp>Attente de $host : $lag secondes de délai</samp>.<br />Voyez [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manuel : paramètre Maxlag]] pour plus d’informations.",
        "apihelp-main-param-smaxage": "Fixer l’entête HTTP de contrôle de cache <code>s-maxage</code> à ce nombre de secondes. Les erreurs ne sont jamais mises en cache.",
        "apihelp-main-param-maxage": "Fixer l’entête HTTP de contrôle de cache <code>max-age</code> à ce nombre de secondes. Les erreurs ne sont jamais mises en cache.",
-       "apihelp-main-param-assert": "Vérifier si l’utilisateur est connecté si la valeur est <kbd>user</kbd>, ou s’il a le droit d’un utilisateur robot si la valeur est <kbd>bot</kbd>.",
+       "apihelp-main-param-assert": "Vérifier que l’utilisateur est connecté lorsque la valeur est <kbd>user</kbd> ou qu’il a le droit d’un utilisateur robot lorsque la valeur est <kbd>bot</kbd>.",
        "apihelp-main-param-assertuser": "Vérifier que l’utilisateur actuel est l’utilisateur nommé.",
        "apihelp-main-param-requestid": "Toute valeur fournie ici sera incluse dans la réponse. Peut être utilisé pour distinguer des demandes.",
        "apihelp-main-param-servedby": "Inclure le nom d’hôte qui a renvoyé la requête dans les résultats.",
        "apierror-cantoverwrite-sharedfile": "Le fichier cible existe dans un dépôt partagé et vous n’avez pas le droit de l’écraser.",
        "apierror-cantsend": "Vous n’êtes pas connecté, vous n’avez pas d’adresse de courriel confirmée, ou vous n’êtes pas autorisé à envoyer des courriels aux autres utilisateurs, donc vous ne pouvez envoyer de courriel.",
        "apierror-cantundelete": "Impossible d’annuler : les révisions demandées peuvent ne plus exister, ou avoir déjà été annulées.",
+       "apierror-cantview-deleted-comment": "Vous n’avez pas la permission de visualiser les commentaires supprimés.",
        "apierror-cantview-deleted-description": "Vous n’avez pas le droit d’afficher les descriptions des fichiers supprimés.",
        "apierror-cantview-deleted-metadata": "Vous n’avez pas le droit d’afficher les métadonnées des fichiers supprimés.",
+       "apierror-cantview-deleted-revision-content": "Vous n’avez pas la permission de visualiser le contenu des révisions supprimées.",
        "apierror-changeauth-norequest": "Échec à la création de la requête de modification.",
        "apierror-chunk-too-small": "La taille minimale d’un segment est de $1 {{PLURAL:$1|octet|octets}} pour les segments hors le dernier.",
        "apierror-cidrtoobroad": "Les plages CIDR $1 plus large que /$2 ne sont pas acceptées.",
index e29c34a..9d5d349 100644 (file)
        "api-help-authmanagerhelper-continue": "Questa richiesta è una continuazione dopo una precedente risposta <samp>UI</samp> o <samp>REDIRECT</samp>. È necessario fornirlo, oppure fornire <var>$1returnurl</var>.",
        "api-help-authmanagerhelper-additional-params": "Questo modulo accetta parametri aggiuntivi a seconda delle richieste di autenticazione disponibili. Utilizza <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> con <kbd>amirequestsfor=$1</kbd> (o una precedente risposta da questo modulo, se applicabile) per determinare le richieste disponibili e i campi usati da queste.",
        "apierror-bad-badfilecontexttitle": "Titolo non valido nel parametro <var>$1badfilecontexttitle</var>.",
+       "apierror-cantview-deleted-description": "Non si dispone dei permessi necessari per vedere le descrizioni dei file cancellati.",
+       "apierror-cantview-deleted-metadata": "Non si dispone dei permessi necessari per vedere i metadati dei file cancellati.",
+       "apierror-cantview-deleted-revision-content": "Non si dispone dei permessi necessari per vedere il contenuto delle versioni cancellate.",
        "apierror-compare-notext": "Il parametro <var>$1</var> non può essere usato senza <var>$2</var>.",
        "apierror-invalidoldimage": "Il parametro <var>oldimage</var> ha un formato non valido.",
        "apierror-invaliduserid": "L'ID utente <var>$1</var> non è valido.",
index c029636..6124066 100644 (file)
        "apierror-cantimport-upload": "업로드된 페이지를 가져올 권한이 없습니다.",
        "apierror-cantimport": "페이지를 가져올 권한이 없습니다.",
        "apierror-cantsend": "로그인하지 않았거나 인증된 이메일 주소가 없거나 다른 사용자로 이메일을 보낼 권한이 없기 때문에 이메일을 보낼 수 없습니다.",
+       "apierror-cantview-deleted-description": "삭제된 파일의 설명을 볼 권한이 없습니다.",
+       "apierror-cantview-deleted-metadata": "삭제된 파일의 메타데이터를 볼 권한이 없습니다.",
        "apierror-compare-maintextrequired": "<var>$1slots</var>에 <kbd>main</kbd>이 포함되어 있다면 <var>$1text-main</var> 변수는 필수입니다. (메인 슬롯을 삭제할 수 없습니다)",
        "apierror-compare-notext": "<var>$1</var> 변수는 <var>$2</var> 없이 사용할 수 없습니다.",
        "apierror-emptynewsection": "비어있는 새 문단을 만들 수 없습니다.",
index 59553e9..cb4d121 100644 (file)
        "apierror-cantchangecontentmodel": "Немате дозвола за менување содржинскиот модел на страница.",
        "apierror-cantimport-upload": "Немате дозвола да увезувате подигнати страници.",
        "apierror-cantimport": "Немате дозвола за увезуваање страници.",
+       "apierror-cantview-deleted-description": "Немате дозвола за прегледување описи на избришаните податотеки.",
+       "apierror-cantview-deleted-metadata": "Немате дозвола за прегледување метаподатоци на избришаните податотеки.",
        "apierror-copyuploadbaddomain": "Подигањето преку URL не е дозволено од овој домен.",
        "apierror-copyuploadbadurl": "Подигањето не е дозволено од оваа URL-адреса.",
        "apierror-emptynewsection": "Создавањето на нови празни поднаслови не е дозволено.",
index 6e2c1f1..77f927d 100644 (file)
        "apierror-cantoverwrite-sharedfile": "O arquivo de destino existe em um repositório compartilhado e você não tem permissão para substituí-lo.",
        "apierror-cantsend": "Você não está logado, não possui um endereço de e-mail confirmado ou não tem permissão para enviar e-mails para outros usuários, por isso não pode enviar e-mails.",
        "apierror-cantundelete": "Não foi possível recuperar arquivos: as revisões solicitadas podem não existir ou talvez já tenham sido eliminadas.",
+       "apierror-cantview-deleted-comment": "Você não tem permissão para visualizar comentários excluídos.",
+       "apierror-cantview-deleted-description": "Você não tem permissão para visualizar descrições de arquivos excluídos.",
+       "apierror-cantview-deleted-metadata": "Você não tem permissão para visualizar os metadados dos arquivos excluídos.",
+       "apierror-cantview-deleted-revision-content": "Você não tem permissão para visualizar o conteúdo das revisões excluídas.",
        "apierror-changeauth-norequest": "Falha ao criar pedido de mudança.",
        "apierror-chunk-too-small": "O tamanho mínimo do bloco é $1 {{PLURAL:$1|byte|bytes}} para os pedaços não finais.",
        "apierror-cidrtoobroad": "Os intervalos CIDR $1 maiores que /$2 não são aceitos.",
index ddffaa3..7044748 100644 (file)
@@ -24,12 +24,12 @@ use Wikimedia\Assert\Assert;
 use MediaWiki\MediaWikiServices;
 
 /**
- * Handles purging appropriate CDN URLs given a title (or titles)
+ * Handles purging the appropriate CDN objects given a list of URLs or Title instances
  * @ingroup Cache
  */
 class CdnCacheUpdate implements DeferrableUpdate, MergeableUpdate {
        /** @var string[] Collection of URLs to purge */
-       protected $urls = [];
+       private $urls = [];
 
        /**
         * @param string[] $urlArr Collection of URLs to purge
@@ -99,10 +99,9 @@ class CdnCacheUpdate implements DeferrableUpdate, MergeableUpdate {
                wfDebugLog( 'squid', __METHOD__ . ': ' . implode( ' ', $urlArr ) );
 
                // Reliably broadcast the purge to all edge nodes
-               $relayer = MediaWikiServices::getInstance()->getEventRelayerGroup()
-                                       ->getRelayer( 'cdn-url-purges' );
                $ts = microtime( true );
-               $relayer->notifyMulti(
+               $relayerGroup = MediaWikiServices::getInstance()->getEventRelayerGroup();
+               $relayerGroup->getRelayer( 'cdn-url-purges' )->notifyMulti(
                        'cdn-url-purges',
                        array_map(
                                function ( $url ) use ( $ts ) {
index 29846bf..9e45241 100644 (file)
  */
 
 /**
- * Class to invalidate the HTML cache of all the pages linking to a given title.
+ * Class to invalidate the HTML/file cache of all the pages linking to a given title
  *
  * @ingroup Cache
  */
 class HTMLCacheUpdate extends DataUpdate {
        /** @var Title */
-       public $mTitle;
-
+       private $title;
        /** @var string */
-       public $mTable;
+       private $table;
 
        /**
         * @param Title $titleTo
@@ -42,16 +41,16 @@ class HTMLCacheUpdate extends DataUpdate {
        function __construct(
                Title $titleTo, $table, $causeAction = 'unknown', $causeAgent = 'unknown'
        ) {
-               $this->mTitle = $titleTo;
-               $this->mTable = $table;
+               $this->title = $titleTo;
+               $this->table = $table;
                $this->causeAction = $causeAction;
                $this->causeAgent = $causeAgent;
        }
 
        public function doUpdate() {
                $job = HTMLCacheUpdateJob::newForBacklinks(
-                       $this->mTitle,
-                       $this->mTable,
+                       $this->title,
+                       $this->table,
                        [ 'causeAction' => $this->getCauseAction(), 'causeAgent' => $this->getCauseAgent() ]
                );
 
index 8345ee6..c4e8341 100644 (file)
@@ -1066,6 +1066,7 @@ class LinksUpdate extends DataUpdate {
        private function invalidateProperties( $changed ) {
                global $wgPagePropLinkInvalidations;
 
+               $jobs = [];
                foreach ( $changed as $name => $value ) {
                        if ( isset( $wgPagePropLinkInvalidations[$name] ) ) {
                                $inv = $wgPagePropLinkInvalidations[$name];
@@ -1073,12 +1074,16 @@ class LinksUpdate extends DataUpdate {
                                        $inv = [ $inv ];
                                }
                                foreach ( $inv as $table ) {
-                                       DeferredUpdates::addUpdate(
-                                               new HTMLCacheUpdate( $this->mTitle, $table, 'page-props' )
+                                       $jobs[] = HTMLCacheUpdateJob::newForBacklinks(
+                                               $this->mTitle,
+                                               $table,
+                                               [ 'causeAction' => 'page-props' ]
                                        );
                                }
                        }
                }
+
+               JobQueueGroup::singleton()->lazyPush( $jobs );
        }
 
        /**
index 0d5776b..60d4e29 100644 (file)
@@ -1467,13 +1467,15 @@ abstract class File implements IDBAccessObject {
                // Delete thumbnails and refresh file metadata cache
                $this->purgeCache();
                $this->purgeDescription();
-
                // Purge cache of all pages using this file
                $title = $this->getTitle();
                if ( $title ) {
-                       DeferredUpdates::addUpdate(
-                               new HTMLCacheUpdate( $title, 'imagelinks', 'file-purge' )
+                       $job = HTMLCacheUpdateJob::newForBacklinks(
+                               $title,
+                               'imagelinks',
+                               [ 'causeAction' => 'file-purge' ]
                        );
+                       JobQueueGroup::singleton()->lazyPush( $job );
                }
        }
 
index d27643c..d49e3c5 100644 (file)
@@ -22,6 +22,8 @@
  * @since 1.25
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * This class formats block log entries.
  *
@@ -138,7 +140,9 @@ class BlockLogFormatter extends LogFormatter {
                $linkRenderer = $this->getLinkRenderer();
                if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden
                        || !( $subtype === 'block' || $subtype === 'reblock' )
-                       || !$this->context->getUser()->isAllowed( 'block' )
+                       || !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->context->getUser(), 'block' )
                ) {
                        return '';
                }
index e05357c..23c582c 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use MediaWiki\MediaWikiServices;
+
 class ContentModelLogFormatter extends LogFormatter {
        protected function getMessageParameters() {
                $lang = $this->context->getLanguage();
@@ -12,7 +14,9 @@ class ContentModelLogFormatter extends LogFormatter {
        public function getActionLinks() {
                if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden
                        || $this->entry->getSubtype() !== 'change'
-                       || !$this->context->getUser()->isAllowed( 'editcontentmodel' )
+                       || !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->context->getUser(), 'editcontentmodel' )
                ) {
                        return '';
                }
index 3bc19ff..0abb6f6 100644 (file)
@@ -23,6 +23,7 @@
  * @since 1.22
  */
 
+use MediaWiki\MediaWikiServices;
 use MediaWiki\Storage\RevisionRecord;
 
 /**
@@ -136,7 +137,8 @@ class DeleteLogFormatter extends LogFormatter {
        public function getActionLinks() {
                $user = $this->context->getUser();
                $linkRenderer = $this->getLinkRenderer();
-               if ( !$user->isAllowed( 'deletedhistory' )
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               if ( !$permissionManager->userHasRight( $user, 'deletedhistory' )
                        || $this->entry->isDeleted( LogPage::DELETED_ACTION )
                ) {
                        return '';
@@ -145,7 +147,7 @@ class DeleteLogFormatter extends LogFormatter {
                switch ( $this->entry->getSubtype() ) {
                        case 'delete': // Show undelete link
                        case 'delete_redir':
-                               if ( $user->isAllowed( 'undelete' ) ) {
+                               if ( $permissionManager->userHasRight( $user, 'undelete' ) ) {
                                        $message = 'undeletelink';
                                } else {
                                        $message = 'undeleteviewlink';
index 6791503..2e7f065 100644 (file)
@@ -233,7 +233,10 @@ class LogEventsList extends ContextSource {
                foreach ( LogPage::validTypes() as $type ) {
                        $page = new LogPage( $type );
                        $restriction = $page->getRestriction();
-                       if ( $this->getUser()->isAllowed( $restriction ) ) {
+                       if ( MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), $restriction )
+                       ) {
                                $typesByName[$type] = $page->getName()->text();
                        }
                }
@@ -450,11 +453,12 @@ class LogEventsList extends ContextSource {
                }
 
                $del = '';
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
                // Don't show useless checkbox to people who cannot hide log entries
-               if ( $user->isAllowed( 'deletedhistory' ) ) {
-                       $canHide = $user->isAllowed( 'deletelogentry' );
-                       $canViewSuppressedOnly = $user->isAllowed( 'viewsuppressed' ) &&
-                               !$user->isAllowed( 'suppressrevision' );
+               if ( $permissionManager->userHasRight( $user, 'deletedhistory' ) ) {
+                       $canHide = $permissionManager->userHasRight( $user, 'deletelogentry' );
+                       $canViewSuppressedOnly = $permissionManager->userHasRight( $user, 'viewsuppressed' ) &&
+                               !$permissionManager->userHasRight( $user, 'suppressrevision' );
                        $entryIsSuppressed = self::isDeleted( $row, LogPage::DELETED_RESTRICTED );
                        $canViewThisSuppressedEntry = $canViewSuppressedOnly && $entryIsSuppressed;
                        if ( $row->log_deleted || $canHide ) {
@@ -508,7 +512,9 @@ class LogEventsList extends ContextSource {
                                in_array( $row->log_action, $action ) : $row->log_action == $action;
                        if ( $match && $right ) {
                                global $wgUser;
-                               $match = $wgUser->isAllowed( $right );
+                               $match = MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $wgUser, $right );
                        }
                }
 
@@ -572,7 +578,10 @@ class LogEventsList extends ContextSource {
                        $user = $wgUser;
                }
                $logRestrictions = MediaWikiServices::getInstance()->getMainConfig()->get( 'LogRestrictions' );
-               if ( isset( $logRestrictions[$type] ) && !$user->isAllowed( $logRestrictions[$type] ) ) {
+               if ( isset( $logRestrictions[$type] ) && !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $user, $logRestrictions[$type] )
+               ) {
                        return false;
                }
                return true;
@@ -783,7 +792,10 @@ class LogEventsList extends ContextSource {
 
                // Don't show private logs to unprivileged users
                foreach ( $wgLogRestrictions as $logType => $right ) {
-                       if ( $audience == 'public' || !$user->isAllowed( $right ) ) {
+                       if ( $audience == 'public' || !MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $user, $right )
+                       ) {
                                $hiddenLogs[] = $logType;
                        }
                }
index 9e63ffe..b4a6825 100644 (file)
@@ -163,7 +163,9 @@ class LogFormatter {
                $logRestrictions = $this->context->getConfig()->get( 'LogRestrictions' );
                $type = $this->entry->getType();
                return !isset( $logRestrictions[$type] )
-                       || $this->context->getUser()->isAllowed( $logRestrictions[$type] );
+                       || MediaWikiServices::getInstance()
+                                  ->getPermissionManager()
+                                  ->userHasRight( $this->context->getUser(), $logRestrictions[$type] );
        }
 
        /**
index 3871047..47aed56 100644 (file)
@@ -146,7 +146,9 @@ class LogPager extends ReverseChronologicalPager {
                $needReindex = false;
                foreach ( $types as $type ) {
                        if ( isset( $wgLogRestrictions[$type] )
-                               && !$user->isAllowed( $wgLogRestrictions[$type] )
+                               && !MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $user, $wgLogRestrictions[$type] )
                        ) {
                                $needReindex = true;
                                $types = array_diff( $types, [ $type ] );
@@ -462,12 +464,10 @@ class LogPager extends ReverseChronologicalPager {
                }
                $this->actionRestrictionsEnforced = true;
                $user = $this->getUser();
-               if ( !$user->isAllowed( 'deletedhistory' ) ) {
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               if ( !$permissionManager->userHasRight( $user, 'deletedhistory' ) ) {
                        $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::DELETED_ACTION ) . ' = 0';
-               } elseif ( !MediaWikiServices::getInstance()
-                       ->getPermissionManager()
-                       ->userHasAnyRight( $user, 'suppressrevision', 'viewsuppressed' )
-               ) {
+               } elseif ( !$permissionManager->userHasAnyRight( $user, 'suppressrevision', 'viewsuppressed' ) ) {
                        $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::SUPPRESSED_ACTION ) .
                                ' != ' . LogPage::SUPPRESSED_USER;
                }
@@ -483,12 +483,10 @@ class LogPager extends ReverseChronologicalPager {
                }
                $this->performerRestrictionsEnforced = true;
                $user = $this->getUser();
-               if ( !$user->isAllowed( 'deletedhistory' ) ) {
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               if ( !$permissionManager->userHasRight( $user, 'deletedhistory' ) ) {
                        $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::DELETED_USER ) . ' = 0';
-               } elseif ( !MediaWikiServices::getInstance()
-                       ->getPermissionManager()
-                       ->userHasAnyRight( $user, 'suppressrevision', 'viewsuppressed' )
-               ) {
+               } elseif ( !$permissionManager->userHasAnyRight( $user, 'suppressrevision', 'viewsuppressed' ) ) {
                        $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::SUPPRESSED_USER ) .
                                ' != ' . LogPage::SUPPRESSED_ACTION;
                }
index 7a6fb9d..925c976 100644 (file)
@@ -22,6 +22,8 @@
  * @since 1.25
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * This class formats merge log entries.
  *
@@ -47,7 +49,9 @@ class MergeLogFormatter extends LogFormatter {
 
        public function getActionLinks() {
                if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden
-                       || !$this->context->getUser()->isAllowed( 'mergehistory' )
+                       || !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->context->getUser(), 'mergehistory' )
                ) {
                        return '';
                }
index 637a8e7..6797f98 100644 (file)
@@ -23,6 +23,8 @@
  * @since 1.22
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * This class formats move log entries.
  *
@@ -60,7 +62,9 @@ class MoveLogFormatter extends LogFormatter {
        public function getActionLinks() {
                if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden
                        || $this->entry->getSubtype() !== 'move'
-                       || !$this->context->getUser()->isAllowed( 'move' )
+                       || !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->context->getUser(), 'move' )
                ) {
                        return '';
                }
index ba02457..6e3b26b 100644 (file)
@@ -101,7 +101,10 @@ class ProtectLogFormatter extends LogFormatter {
                ];
 
                // Show change protection link
-               if ( $this->context->getUser()->isAllowed( 'protect' ) ) {
+               if ( !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->context->getUser(), 'protect' )
+               ) {
                        $links[] = $linkRenderer->makeKnownLink(
                                $title,
                                $this->msg( 'protect_change' )->text(),
index cba68ef..4d176fb 100644 (file)
@@ -129,7 +129,10 @@ class EmailNotification {
                if ( $watchers === [] && !count( $wgUsersNotifiedOnAllChanges ) ) {
                        $sendEmail = false;
                        // Only send notification for non minor edits, unless $wgEnotifMinorEdits
-                       if ( !$minorEdit || ( $wgEnotifMinorEdits && !$editor->isAllowed( 'nominornewtalk' ) ) ) {
+                       if ( !$minorEdit || ( $wgEnotifMinorEdits && !MediaWikiServices::getInstance()
+                                               ->getPermissionManager()
+                                               ->userHasRight( $editor, 'nominornewtalk' ) )
+                       ) {
                                $isUserTalkPage = ( $title->getNamespace() == NS_USER_TALK );
                                if ( $wgEnotifUserTalk
                                        && $isUserTalkPage
@@ -214,7 +217,10 @@ class EmailNotification {
 
                $userTalkId = false;
 
-               if ( !$minorEdit || ( $wgEnotifMinorEdits && !$editor->isAllowed( 'nominornewtalk' ) ) ) {
+               if ( !$minorEdit || ( $wgEnotifMinorEdits && !MediaWikiServices::getInstance()
+                                  ->getPermissionManager()
+                                  ->userHasRight( $editor, 'nominornewtalk' ) )
+               ) {
                        if ( $wgEnotifUserTalk
                                && $isUserTalkPage
                                && $this->canSendUserTalkEmail( $editor, $title, $minorEdit )
index 8a26f60..dffb1f9 100644 (file)
@@ -122,14 +122,17 @@ class JpegMetadataExtractor {
                                $temp = self::jpegExtractMarker( $fh );
                                // check what type of app segment this is.
                                if ( substr( $temp, 0, 29 ) === "http://ns.adobe.com/xap/1.0/\x00" && $showXMP ) {
-                                       $segments["XMP"] = substr( $temp, 29 );
+                                       // use trim to remove trailing \0 chars
+                                       $segments["XMP"] = trim( substr( $temp, 29 ) );
                                } elseif ( substr( $temp, 0, 35 ) === "http://ns.adobe.com/xmp/extension/\x00" && $showXMP ) {
-                                       $segments["XMP_ext"][] = substr( $temp, 35 );
+                                       // use trim to remove trailing \0 chars
+                                       $segments["XMP_ext"][] = trim( substr( $temp, 35 ) );
                                } elseif ( substr( $temp, 0, 29 ) === "XMP\x00://ns.adobe.com/xap/1.0/\x00" && $showXMP ) {
                                        // Some images (especially flickr images) seem to have this.
                                        // I really have no idea what the deal is with them, but
                                        // whatever...
-                                       $segments["XMP"] = substr( $temp, 29 );
+                                       // use trim to remove trailing \0 chars
+                                       $segments["XMP"] = trim( substr( $temp, 29 ) );
                                        wfDebug( __METHOD__ . ' Found XMP section with wrong app identifier '
                                                . "Using anyways.\n" );
                                } elseif ( substr( $temp, 0, 6 ) === "Exif\0\0" ) {
index 1c2e782..4bede96 100644 (file)
@@ -1310,7 +1310,10 @@ class Article implements Page {
                }
 
                $outputPage->preventClickjacking();
-               if ( $user->isAllowed( 'writeapi' ) ) {
+               if ( MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $user, 'writeapi' )
+               ) {
                        $outputPage->addModules( 'mediawiki.page.patrol.ajax' );
                }
 
@@ -1827,7 +1830,10 @@ class Article implements Page {
                        [ 'delete', $this->getTitle()->getPrefixedText() ] )
                ) {
                        # Flag to hide all contents of the archived revisions
-                       $suppress = $request->getCheck( 'wpSuppress' ) && $user->isAllowed( 'suppressrevision' );
+
+                       $suppress = $request->getCheck( 'wpSuppress' ) && MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $user, 'suppressrevision' );
 
                        $this->doDelete( $reason, $suppress );
 
@@ -1986,8 +1992,8 @@ class Article implements Page {
                                ]
                        );
                }
-
-               if ( $user->isAllowed( 'suppressrevision' ) ) {
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               if ( $permissionManager->userHasRight( $user, 'suppressrevision' ) ) {
                        $fields[] = new OOUI\FieldLayout(
                                new OOUI\CheckboxInputWidget( [
                                        'name' => 'wpSuppress',
@@ -2045,7 +2051,7 @@ class Article implements Page {
                        ] )
                );
 
-               if ( $user->isAllowed( 'editinterface' ) ) {
+               if ( $permissionManager->userHasRight( $user, 'editinterface' ) ) {
                        $link = Linker::linkKnown(
                                $ctx->msg( 'deletereason-dropdown' )->inContentLanguage()->getTitle(),
                                wfMessage( 'delete-edit-reasonlist' )->escaped(),
index 9edaccc..cf2497f 100644 (file)
@@ -130,11 +130,10 @@ class ImageHistoryList extends ContextSource {
                $row = $selected = '';
 
                // Deletion link
-               if ( $local && ( $pm->userHasAnyRight( $user, 'delete', 'deletedhistory' ) )
-               ) {
+               if ( $local && ( $pm->userHasAnyRight( $user, 'delete', 'deletedhistory' ) ) ) {
                        $row .= '<td>';
                        # Link to remove from history
-                       if ( $user->isAllowed( 'delete' ) ) {
+                       if ( $pm->userHasRight( $user, 'delete' ) ) {
                                $q = [ 'action' => 'delete' ];
                                if ( !$iscur ) {
                                        $q['oldimage'] = $img;
@@ -146,9 +145,10 @@ class ImageHistoryList extends ContextSource {
                                );
                        }
                        # Link to hide content. Don't show useless link to people who cannot hide revisions.
-                       $canHide = $user->isAllowed( 'deleterevision' );
-                       if ( $canHide || ( $user->isAllowed( 'deletedhistory' ) && $file->getVisibility() ) ) {
-                               if ( $user->isAllowed( 'delete' ) ) {
+                       $canHide = $pm->userHasRight( $user, 'deleterevision' );
+                       if ( $canHide || ( $pm->userHasRight( $user, 'deletedhistory' )
+                                       && $file->getVisibility() ) ) {
+                               if ( $pm->userHasRight( $user, 'delete' ) ) {
                                        $row .= '<br />';
                                }
                                // If file is top revision or locked from this user, don't link
index 653e443..bb15532 100644 (file)
@@ -603,7 +603,10 @@ EOT
                                );
                        }
 
-                       if ( $wgEnableUploads && $user->isAllowed( 'upload' ) ) {
+                       if ( $wgEnableUploads && MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $user, 'upload' )
+                       ) {
                                // Only show an upload link if the user can upload
                                $uploadTitle = SpecialPage::getTitleFor( 'Upload' );
                                $nofile = [
index bad75da..f0a656d 100644 (file)
@@ -1896,7 +1896,8 @@ class WikiPage implements Page, IDBAccessObject {
                // TODO: this check is here for backwards-compatibility with 1.31 behavior.
                // Checking the minoredit right should be done in the same place the 'bot' right is
                // checked for the EDIT_FORCE_BOT flag, which is currently in EditPage::attemptSave.
-               if ( ( $flags & EDIT_MINOR ) && !$user->isAllowed( 'minoredit' ) ) {
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               if ( ( $flags & EDIT_MINOR ) && !$permissionManager->userHasRight( $user, 'minoredit' ) ) {
                        $flags = ( $flags & ~EDIT_MINOR );
                }
 
@@ -1916,7 +1917,6 @@ class WikiPage implements Page, IDBAccessObject {
                // TODO: this logic should not be in the storage layer, it's here for compatibility
                // with 1.31 behavior. Applying the 'autopatrol' right should be done in the same
                // place the 'bot' right is handled, which is currently in EditPage::attemptSave.
-               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
 
                if ( $needsPatrol && $permissionManager->userCan(
                        'autopatrol', $user, $this->getTitle()
@@ -3249,14 +3249,12 @@ class WikiPage implements Page, IDBAccessObject {
                // Save
                $flags = EDIT_UPDATE | EDIT_INTERNAL;
 
-               if ( $guser->isAllowed( 'minoredit' ) ) {
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               if ( $permissionManager->userHasRight( $guser, 'minoredit' ) ) {
                        $flags |= EDIT_MINOR;
                }
 
-               if ( $bot && ( MediaWikiServices::getInstance()
-                               ->getPermissionManager()
-                               ->userHasAnyRight( $guser, 'markbotedits', 'bot' ) )
-               ) {
+               if ( $bot && ( $permissionManager->userHasAnyRight( $guser, 'markbotedits', 'bot' ) ) ) {
                        $flags |= EDIT_FORCE_BOT;
                }
 
@@ -3291,7 +3289,6 @@ class WikiPage implements Page, IDBAccessObject {
                // TODO: this logic should not be in the storage layer, it's here for compatibility
                // with 1.31 behavior. Applying the 'autopatrol' right should be done in the same
                // place the 'bot' right is handled, which is currently in EditPage::attemptSave.
-               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
 
                if ( $wgUseRCPatrol && $permissionManager->userCan(
                        'autopatrol', $guser, $this->getTitle()
@@ -3308,7 +3305,7 @@ class WikiPage implements Page, IDBAccessObject {
                // Set patrolling and bot flag on the edits, which gets rollbacked.
                // This is done even on edit failure to have patrolling in that case (T64157).
                $set = [];
-               if ( $bot && $guser->isAllowed( 'markbotedits' ) ) {
+               if ( $bot && $permissionManager->userHasRight( $guser, 'markbotedits' ) ) {
                        // Mark all reverted edits as bot
                        $set['rc_bot'] = 1;
                }
index 70df73b..327061c 100644 (file)
@@ -595,7 +595,7 @@ class SkinTemplate extends Skin {
                # $this->getTitle() will just give Special:Badtitle, which is
                # not especially useful as a returnto parameter. Use the title
                # from the request instead, if there was one.
-               if ( $this->getUser()->isAllowed( 'read' ) ) {
+               if ( $permissionManager->userHasRight( $this->getUser(), 'read' ) ) {
                        $page = $this->getTitle();
                } else {
                        $page = Title::newFromText( $request->getVal( 'title', '' ) );
@@ -636,7 +636,7 @@ class SkinTemplate extends Skin {
                                'active' => ( $href == $pageurl )
                        ];
 
-                       if ( $this->getUser()->isAllowed( 'viewmywatchlist' ) ) {
+                       if ( $permissionManager->userHasRight( $this->getUser(), 'viewmywatchlist' ) ) {
                                $href = self::makeSpecialUrl( 'Watchlist' );
                                $personal_urls['watchlist'] = [
                                        'text' => $this->msg( 'mywatchlist' )->text(),
@@ -689,9 +689,8 @@ class SkinTemplate extends Skin {
                                $useCombinedLoginLink = false;
                        }
 
-                       $loginlink = $this->getUser()->isAllowed( 'createaccount' ) && $useCombinedLoginLink
-                               ? 'nav-login-createaccount'
-                               : 'pt-login';
+                       $loginlink = $permissionManager->userHasRight( $this->getUser(), 'createaccount' )
+                                                && $useCombinedLoginLink ? 'nav-login-createaccount' : 'pt-login';
 
                        $login_url = [
                                'text' => $this->msg( $loginlink )->text(),
@@ -727,7 +726,7 @@ class SkinTemplate extends Skin {
 
                        if (
                                $authManager->canCreateAccounts()
-                               && $this->getUser()->isAllowed( 'createaccount' )
+                               && $permissionManager->userHasRight( $this->getUser(), 'createaccount' )
                                && !$useCombinedLoginLink
                        ) {
                                $personal_urls['createaccount'] = $createaccount_url;
@@ -1074,8 +1073,7 @@ class SkinTemplate extends Skin {
 
                                if ( $permissionManager->quickUserCan( 'protect', $user, $title ) &&
                                         $title->getRestrictionTypes() &&
-                                        $permissionManager->getNamespaceRestrictionLevels( $title->getNamespace(),
-                                                $user ) !== [ '' ]
+                                        $permissionManager->getNamespaceRestrictionLevels( $title->getNamespace(), $user ) !== [ '' ]
                                ) {
                                        $mode = $title->isProtected() ? 'unprotect' : 'protect';
                                        $content_navigation['actions'][$mode] = [
@@ -1345,7 +1343,10 @@ class SkinTemplate extends Skin {
                                'href' => self::makeSpecialUrlSubpage( 'Log', $rootUser )
                        ];
 
-                       if ( $this->getUser()->isAllowed( 'block' ) ) {
+                       if ( MediawikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $this->getUser(), 'block' )
+                       ) {
                                $nav_urls['blockip'] = [
                                        'text' => $this->msg( 'blockip', $rootUser )->text(),
                                        'href' => self::makeSpecialUrlSubpage( 'Block', $rootUser )
index e5a28d9..94be852 100644 (file)
@@ -975,7 +975,11 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
                        }
                }
                if ( !$this->isSignup() && $this->showExtraInformation() ) {
-                       $passwordReset = new PasswordReset( $this->getConfig(), AuthManager::singleton() );
+                       $passwordReset = new PasswordReset(
+                               $this->getConfig(),
+                               AuthManager::singleton(),
+                               MediaWikiServices::getInstance()->getPermissionManager()
+                       );
                        if ( $passwordReset->isAllowed( $this->getUser() )->isGood() ) {
                                $fieldDefinitions['passwordReset'] = [
                                        'type' => 'info',
@@ -1072,7 +1076,10 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
        private function showCreateAccountLink() {
                if ( $this->isSignup() ) {
                        return true;
-               } elseif ( $this->getUser()->isAllowed( 'createaccount' ) ) {
+               } elseif ( MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $this->getUser(), 'createaccount' )
+               ) {
                        return true;
                } else {
                        return false;
index 7d33035..ba8e318 100644 (file)
@@ -292,7 +292,9 @@ class SpecialPage implements MessageLocalizer {
         * @return bool Does the user have permission to view the page?
         */
        public function userCanExecute( User $user ) {
-               return $user->isAllowed( $this->mRestriction );
+               return MediaWikiServices::getInstance()
+                       ->getPermissionManager()
+                       ->userHasRight( $user, $this->mRestriction );
        }
 
        /**
index 9e49684..f4a33c8 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup SpecialPage
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * @ingroup SpecialPage
  * @since 1.27
@@ -35,7 +37,10 @@ class SpecialApiSandbox extends SpecialPage {
                $out = $this->getOutput();
                $this->addHelpLink( 'Help:ApiSandbox' );
 
-               $out->addJsConfigVars( 'apihighlimits', $this->getUser()->isAllowed( 'apihighlimits' ) );
+               $out->addJsConfigVars( 'apihighlimits', MediaWikiServices::getInstance()
+                       ->getPermissionManager()
+                       ->userHasRight( $this->getUser(), 'apihighlimits' )
+               );
                $out->addModuleStyles( [
                        'mediawiki.special',
                        'mediawiki.hlist',
index 34c3371..3f98e93 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup SpecialPage
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * A special page that lists autoblocks
  *
@@ -81,7 +83,10 @@ class SpecialAutoblockList extends SpecialPage {
                        'ipb_parent_block_id IS NOT NULL'
                ];
                # Is the user allowed to see hidden blocks?
-               if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
+               if ( !MediaWikiServices::getInstance()
+                       ->getPermissionManager()
+                       ->userHasRight( $this->getUser(), 'hideuser' )
+               ) {
                        $conds['ipb_deleted'] = 0;
                }
 
index 07214af..1b0db73 100644 (file)
@@ -25,6 +25,7 @@ use MediaWiki\Block\DatabaseBlock;
 use MediaWiki\Block\Restriction\PageRestriction;
 use MediaWiki\Block\Restriction\NamespaceRestriction;
 use MediaWiki\MediaWikiServices;
+use MediaWiki\User\UserIdentity;
 
 /**
  * A special page that allows users with 'block' right to block users from
@@ -269,7 +270,10 @@ class SpecialBlock extends FormSpecialPage {
                ];
 
                # Allow some users to hide name from block log, blocklist and listusers
-               if ( $user->isAllowed( 'hideuser' ) ) {
+               if ( MediaWikiServices::getInstance()
+                       ->getPermissionManager()
+                       ->userHasRight( $user, 'hideuser' )
+               ) {
                        $a['HideUser'] = [
                                'type' => 'check',
                                'label-message' => 'ipbhidename',
@@ -363,7 +367,10 @@ class SpecialBlock extends FormSpecialPage {
 
                        // If the username was hidden (ipb_deleted == 1), don't show the reason
                        // unless this user also has rights to hideuser: T37839
-                       if ( !$block->getHideName() || $this->getUser()->isAllowed( 'hideuser' ) ) {
+                       if ( !$block->getHideName() || MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $this->getUser(), 'hideuser' )
+                       ) {
                                $fields['Reason']['default'] = $block->getReason();
                        } else {
                                $fields['Reason']['default'] = '';
@@ -545,7 +552,8 @@ class SpecialBlock extends FormSpecialPage {
                $user = $this->getUser();
 
                # Link to edit the block dropdown reasons, if applicable
-               if ( $user->isAllowed( 'editinterface' ) ) {
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               if ( $permissionManager->userHasRight( $user, 'editinterface' ) ) {
                        $links[] = $linkRenderer->makeKnownLink(
                                $this->msg( 'ipbreason-dropdown' )->inContentLanguage()->getTitle(),
                                $this->msg( 'ipb-edit-dropdown' )->text(),
@@ -579,7 +587,7 @@ class SpecialBlock extends FormSpecialPage {
                        $text .= $out;
 
                        # Add suppression block entries if allowed
-                       if ( $user->isAllowed( 'suppressionlog' ) ) {
+                       if ( $permissionManager->userHasRight( $user, 'suppressionlog' ) ) {
                                LogEventsList::showLogExtract(
                                        $out,
                                        'suppress',
@@ -828,7 +836,10 @@ class SpecialBlock extends FormSpecialPage {
                }
 
                if ( $data['HideUser'] ) {
-                       if ( !$performer->isAllowed( 'hideuser' ) ) {
+                       if ( !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $performer, 'hideuser' )
+                       ) {
                                # this codepath is unreachable except by a malicious user spoofing forms,
                                # or by race conditions (user has hideuser and block rights, loads block form,
                                # and loses hideuser rights before submission); so need to fail completely
@@ -938,7 +949,10 @@ class SpecialBlock extends FormSpecialPage {
                                }
                                # If the name was hidden and the blocking user cannot hide
                                # names, then don't allow any block changes...
-                               if ( $currentBlock->getHideName() && !$performer->isAllowed( 'hideuser' ) ) {
+                               if ( $currentBlock->getHideName() && !MediaWikiServices::getInstance()
+                                               ->getPermissionManager()
+                                               ->userHasRight( $performer, 'hideuser' )
+                               ) {
                                        return [ 'cant-see-hidden-user' ];
                                }
 
@@ -1106,13 +1120,15 @@ class SpecialBlock extends FormSpecialPage {
 
        /**
         * Can we do an email block?
-        * @param User $user The sysop wanting to make a block
+        * @param UserIdentity $user The sysop wanting to make a block
         * @return bool
         */
-       public static function canBlockEmail( $user ) {
+       public static function canBlockEmail( UserIdentity $user ) {
                global $wgEnableUserEmail, $wgSysopEmailBans;
 
-               return ( $wgEnableUserEmail && $wgSysopEmailBans && $user->isAllowed( 'blockemail' ) );
+               return ( $wgEnableUserEmail && $wgSysopEmailBans && MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $user, 'blockemail' ) );
        }
 
        /**
@@ -1138,7 +1154,10 @@ class SpecialBlock extends FormSpecialPage {
                if ( $performer->getBlock() ) {
                        if ( $target instanceof User && $target->getId() == $performer->getId() ) {
                                # User is trying to unblock themselves
-                               if ( $performer->isAllowed( 'unblockself' ) ) {
+                               if ( MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $performer, 'unblockself' )
+                               ) {
                                        return true;
                                        # User blocked themselves and is now trying to reverse it
                                } elseif ( $performer->blockedBy() === $performer->getName() ) {
index 6385359..2dd682f 100644 (file)
@@ -22,6 +22,7 @@
  */
 
 use MediaWiki\Block\DatabaseBlock;
+use MediaWiki\MediaWikiServices;
 
 /**
  * A special page that lists existing blocks
@@ -139,7 +140,10 @@ class SpecialBlockList extends SpecialPage {
                $conds = [];
                $db = $this->getDB();
                # Is the user allowed to see hidden blocks?
-               if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
+               if ( !MediaWikiServices::getInstance()
+                       ->getPermissionManager()
+                       ->userHasRight( $this->getUser(), 'hideuser' )
+               ) {
                        $conds['ipb_deleted'] = 0;
                }
 
index 9431cef..392b4e9 100644 (file)
@@ -21,6 +21,7 @@
  * @ingroup SpecialPage
  */
 
+use MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\IResultWrapper;
 use Wikimedia\Rdbms\IDatabase;
 
@@ -114,6 +115,8 @@ class SpecialBrokenRedirects extends QueryPage {
                }
 
                $linkRenderer = $this->getLinkRenderer();
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+
                // $toObj may very easily be false if the $result list is cached
                if ( !is_object( $toObj ) ) {
                        return '<del>' . $linkRenderer->makeLink( $fromObj ) . '</del>';
@@ -129,7 +132,7 @@ class SpecialBrokenRedirects extends QueryPage {
                // if the page is editable, add an edit link
                if (
                        // check user permissions
-                       $this->getUser()->isAllowed( 'edit' ) &&
+                       $permissionManager->userHasRight( $this->getUser(), 'edit' ) &&
                        // check, if the content model is editable through action=edit
                        ContentHandler::getForTitle( $fromObj )->supportsDirectEditing()
                ) {
@@ -145,7 +148,7 @@ class SpecialBrokenRedirects extends QueryPage {
 
                $out = $from . $this->msg( 'word-separator' )->escaped();
 
-               if ( $this->getUser()->isAllowed( 'delete' ) ) {
+               if ( $permissionManager->userHasRight( $this->getUser(), 'delete' ) ) {
                        $links[] = $linkRenderer->makeKnownLink(
                                $fromObj,
                                $this->msg( 'brokenredirects-delete' )->text(),
index 01f7e56..46fa17e 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use MediaWiki\MediaWikiServices;
+
 class SpecialChangeContentModel extends FormSpecialPage {
 
        public function __construct() {
@@ -226,7 +228,10 @@ class SpecialChangeContentModel extends FormSpecialPage {
 
                $flags = $this->oldRevision ? EDIT_UPDATE : EDIT_NEW;
                $flags |= EDIT_INTERNAL;
-               if ( $user->isAllowed( 'bot' ) ) {
+               if ( MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $user, 'bot' )
+               ) {
                        $flags |= EDIT_FORCE_BOT;
                }
 
index c95aa1b..7331cd7 100644 (file)
@@ -23,6 +23,7 @@
 
 use MediaWiki\Auth\AuthManager;
 use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\MediaWikiServices;
 
 /**
  * Let users change their email address.
@@ -74,7 +75,10 @@ class SpecialChangeEmail extends FormSpecialPage {
 
                // This could also let someone check the current email address, so
                // require both permissions.
-               if ( !$this->getUser()->isAllowed( 'viewmyprivateinfo' ) ) {
+               if ( !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'viewmyprivateinfo' )
+               ) {
                        throw new PermissionsError( 'viewmyprivateinfo' );
                }
 
index f86a133..2c42cd3 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup SpecialPage
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * Special page allows users to request email confirmation message, and handles
  * processing of the confirmation code when the link in the email is followed
@@ -57,7 +59,10 @@ class SpecialConfirmEmail extends UnlistedSpecialPage {
 
                // This could also let someone check the current email address, so
                // require both permissions.
-               if ( !$this->getUser()->isAllowed( 'viewmyprivateinfo' ) ) {
+               if ( !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'viewmyprivateinfo' )
+               ) {
                        throw new PermissionsError( 'viewmyprivateinfo' );
                }
 
index 40c0edf..e8b85fa 100644 (file)
@@ -126,7 +126,10 @@ class SpecialContributions extends IncludableSpecialPage {
 
                // Allows reverts to have the bot flag in recent changes. It is just here to
                // be passed in the form at the top of the page
-               if ( $user->isAllowed( 'markbotedits' ) && $request->getBool( 'bot' ) ) {
+               if ( MediaWikiServices::getInstance()
+                                ->getPermissionManager()
+                                ->userHasRight( $user, 'markbotedits' ) && $request->getBool( 'bot' )
+               ) {
                        $this->opts['bot'] = '1';
                }
 
@@ -373,7 +376,9 @@ class SpecialContributions extends IncludableSpecialPage {
                        );
                }
 
-               if ( $sp->getUser()->isAllowed( 'block' ) ) { # Block / Change block / Unblock links
+               # Block / Change block / Unblock links
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               if ( $permissionManager->userHasRight( $sp->getUser(), 'block' ) ) {
                        if ( $target->getBlock() && $target->getBlock()->getType() != DatabaseBlock::TYPE_AUTO ) {
                                $tools['block'] = $linkRenderer->makeKnownLink( # Change block link
                                        SpecialPage::getTitleFor( 'Block', $username ),
@@ -400,7 +405,7 @@ class SpecialContributions extends IncludableSpecialPage {
                );
 
                # Suppression log link (T61120)
-               if ( $sp->getUser()->isAllowed( 'suppressionlog' ) ) {
+               if ( $permissionManager->userHasRight( $sp->getUser(), 'suppressionlog' ) ) {
                        $tools['log-suppression'] = $linkRenderer->makeKnownLink(
                                SpecialPage::getTitleFor( 'Log', 'suppress' ),
                                $sp->msg( 'sp-contributions-suppresslog', $username )->text(),
@@ -412,7 +417,7 @@ class SpecialContributions extends IncludableSpecialPage {
                # Don't show some links for IP ranges
                if ( !$isRange ) {
                        # Uploads: hide if IPs cannot upload (T220674)
-                       if ( !$isIP || $target->isAllowed( 'upload' ) ) {
+                       if ( !$isIP || $permissionManager->userHasRight( $target, 'upload' ) ) {
                                $tools['uploads'] = $linkRenderer->makeKnownLink(
                                        SpecialPage::getTitleFor( 'Listfiles', $username ),
                                        $sp->msg( 'sp-contributions-uploads' )->text()
@@ -428,7 +433,7 @@ class SpecialContributions extends IncludableSpecialPage {
 
                        # Add link to deleted user contributions for priviledged users
                        # Todo: T183457
-                       if ( $sp->getUser()->isAllowed( 'deletedhistory' ) ) {
+                       if ( $permissionManager->userHasRight( $sp->getUser(), 'deletedhistory' ) ) {
                                $tools['deletedcontribs'] = $linkRenderer->makeKnownLink(
                                        SpecialPage::getTitleFor( 'DeletedContributions', $username ),
                                        $sp->msg( 'sp-contributions-deleted', $username )->text()
@@ -628,7 +633,10 @@ class SpecialContributions extends IncludableSpecialPage {
 
                $filters = [];
 
-               if ( $this->getUser()->isAllowed( 'deletedhistory' ) ) {
+               if ( MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'deletedhistory' )
+               ) {
                        $filters[] = Html::rawElement(
                                'span',
                                [ 'class' => 'mw-input-with-label' ],
index cc2fc80..637025c 100644 (file)
@@ -57,7 +57,9 @@ class SpecialCreateAccount extends LoginSignupSpecialPage {
        }
 
        public function userCanExecute( User $user ) {
-               return $user->isAllowed( 'createaccount' );
+               return MediaWikiServices::getInstance()
+                       ->getPermissionManager()
+                       ->userHasRight( $user, 'createaccount' );
        }
 
        public function checkPermissions() {
index cccca50..540ac5a 100644 (file)
@@ -21,6 +21,7 @@
  * @ingroup SpecialPage
  */
 
+use MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\IResultWrapper;
 use Wikimedia\Rdbms\IDatabase;
 
@@ -155,7 +156,9 @@ class SpecialDoubleRedirects extends QueryPage {
                // if the page is editable, add an edit link
                if (
                        // check user permissions
-                       $this->getUser()->isAllowed( 'edit' ) &&
+                       MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'edit' ) &&
                        // check, if the content model is editable through action=edit
                        ContentHandler::getForTitle( $titleA )->supportsDirectEditing()
                ) {
index 1dd1969..48357aa 100644 (file)
@@ -129,7 +129,7 @@ class SpecialEditTags extends UnlistedSpecialPage {
                        $this->ids
                );
 
-               $this->isAllowed = $user->isAllowed( 'changetags' );
+               $this->isAllowed = $this->permissionManager->userHasRight( $user, 'changetags' );
 
                $this->reason = $request->getVal( 'wpReason' );
                // We need a target page!
index b42cdea..c8b92bd 100644 (file)
@@ -253,7 +253,10 @@ class SpecialEmailUser extends UnlistedSpecialPage {
                        return 'mailnologin';
                }
 
-               if ( !$user->isAllowed( 'sendemail' ) ) {
+               if ( !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $user, 'sendemail' )
+               ) {
                        return 'badaccess';
                }
 
index a466f29..72e881f 100644 (file)
@@ -273,7 +273,10 @@ class SpecialExpandTemplates extends SpecialPage {
                        // allowed and a valid edit token is not provided (T73111). However, MediaWiki
                        // does not currently provide logged-out users with CSRF protection; in that case,
                        // do not show the preview unless anonymous editing is allowed.
-                       if ( $user->isAnon() && !$user->isAllowed( 'edit' ) ) {
+                       if ( $user->isAnon() && !MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $user, 'edit' )
+                       ) {
                                $error = [ 'expand_templates_preview_fail_html_anon' ];
                        } elseif ( !$user->matchEditToken( $request->getVal( 'wpEditToken' ), '', $request ) ) {
                                $error = [ 'expand_templates_preview_fail_html' ];
index 5a63581..e680d24 100644 (file)
@@ -327,7 +327,9 @@ class SpecialExport extends SpecialPage {
         * @return bool
         */
        private function userCanOverrideExportDepth() {
-               return $this->getUser()->isAllowed( 'override-export-depth' );
+               return MediaWikiServices::getInstance()
+                       ->getPermissionManager()
+                       ->userHasRight( $this->getUser(), 'override-export-depth' );
        }
 
        /**
index f21c206..cfefa47 100644 (file)
@@ -135,18 +135,19 @@ class SpecialImport extends SpecialPage {
                }
 
                $user = $this->getUser();
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
                if ( !$user->matchEditToken( $request->getVal( 'editToken' ) ) ) {
                        $source = Status::newFatal( 'import-token-mismatch' );
                } elseif ( $this->sourceName === 'upload' ) {
                        $isUpload = true;
                        $this->usernamePrefix = $this->fullInterwikiPrefix = $request->getVal( 'usernamePrefix' );
-                       if ( $user->isAllowed( 'importupload' ) ) {
+                       if ( $permissionManager->userHasRight( $user, 'importupload' ) ) {
                                $source = ImportStreamSource::newFromUpload( "xmlimport" );
                        } else {
                                throw new PermissionsError( 'importupload' );
                        }
                } elseif ( $this->sourceName === 'interwiki' ) {
-                       if ( !$user->isAllowed( 'import' ) ) {
+                       if ( !$permissionManager->userHasRight( $user, 'import' ) ) {
                                throw new PermissionsError( 'import' );
                        }
                        $this->interwiki = $this->fullInterwikiPrefix = $request->getVal( 'interwiki' );
@@ -325,10 +326,11 @@ class SpecialImport extends SpecialPage {
        private function showForm() {
                $action = $this->getPageTitle()->getLocalURL( [ 'action' => 'submit' ] );
                $user = $this->getUser();
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
                $out = $this->getOutput();
                $this->addHelpLink( 'https://meta.wikimedia.org/wiki/Special:MyLanguage/Help:Import', true );
 
-               if ( $user->isAllowed( 'importupload' ) ) {
+               if ( $permissionManager->userHasRight( $user, 'importupload' ) ) {
                        $mappingSelection = $this->getMappingFormPart( 'upload' );
                        $out->addHTML(
                                Xml::fieldset( $this->msg( 'import-upload' )->text() ) .
@@ -401,7 +403,7 @@ class SpecialImport extends SpecialPage {
                        $out->addWikiMsg( 'importnosources' );
                }
 
-               if ( $user->isAllowed( 'import' ) && !empty( $this->importSources ) ) {
+               if ( $permissionManager->userHasRight( $user, 'import' ) && !empty( $this->importSources ) ) {
                        # Show input field for import depth only if $wgExportMaxLinkDepth > 0
                        $importDepth = '';
                        if ( $this->getConfig()->get( 'ExportMaxLinkDepth' ) > 0 ) {
index ac8baa1..7c85814 100644 (file)
@@ -94,7 +94,9 @@ class SpecialLog extends SpecialPage {
                if ( !LogPage::isLogType( $type ) ) {
                        $opts->setValue( 'type', '' );
                } elseif ( isset( $logRestrictions[$type] )
-                       && !$this->getUser()->isAllowed( $logRestrictions[$type] )
+                       && !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), $logRestrictions[$type] )
                ) {
                        throw new PermissionsError( $logRestrictions[$type] );
                }
index 6da362d..0767faf 100644 (file)
@@ -209,7 +209,9 @@ class MovePageForm extends UnlistedSpecialPage {
                }
 
                if ( count( $err ) == 1 && isset( $err[0][0] ) && $err[0][0] == 'file-exists-sharedrepo'
-                       && $user->isAllowed( 'reupload-shared' )
+                       && MediaWikiServices::getInstance()
+                                ->getPermissionManager()
+                                ->userHasRight( $user, 'reupload-shared' )
                ) {
                        $out->wrapWikiMsg(
                                "<div class='warningbox'>\n$1\n</div>\n",
@@ -374,7 +376,10 @@ class MovePageForm extends UnlistedSpecialPage {
                        );
                }
 
-               if ( $user->isAllowed( 'suppressredirect' ) ) {
+               if ( MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $user, 'suppressredirect' )
+               ) {
                        if ( $handlerSupportsRedirects ) {
                                $isChecked = $this->leaveRedirect;
                                $isDisabled = false;
@@ -520,6 +525,7 @@ class MovePageForm extends UnlistedSpecialPage {
 
        function doSubmit() {
                $user = $this->getUser();
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
 
                if ( $user->pingLimiter( 'move' ) ) {
                        throw new ThrottledError;
@@ -540,7 +546,7 @@ class MovePageForm extends UnlistedSpecialPage {
                # Show a warning if the target file exists on a shared repo
                $repoGroup = $services->getRepoGroup();
                if ( $nt->getNamespace() == NS_FILE
-                       && !( $this->moveOverShared && $user->isAllowed( 'reupload-shared' ) )
+                       && !( $this->moveOverShared && $permissionManager->userHasRight( $user, 'reupload-shared' ) )
                        && !$repoGroup->getLocalRepo()->findFile( $nt )
                        && $repoGroup->findFile( $nt )
                ) {
@@ -551,7 +557,7 @@ class MovePageForm extends UnlistedSpecialPage {
 
                # Delete to make way if requested
                if ( $this->deleteAndMove ) {
-                       $permErrors = $nt->getUserPermissionsErrors( 'delete', $user );
+                       $permErrors = $permissionManager->getPermissionErrors( 'delete', $user, $nt );
                        if ( count( $permErrors ) ) {
                                # Only show the first error
                                $this->showForm( $permErrors, true );
@@ -592,7 +598,7 @@ class MovePageForm extends UnlistedSpecialPage {
 
                if ( !$handler->supportsRedirects() ) {
                        $createRedirect = false;
-               } elseif ( $user->isAllowed( 'suppressredirect' ) ) {
+               } elseif ( $permissionManager->userHasRight( $user, 'suppressredirect' ) ) {
                        $createRedirect = $this->leaveRedirect;
                } else {
                        $createRedirect = true;
@@ -607,7 +613,6 @@ class MovePageForm extends UnlistedSpecialPage {
                        $this->moveTalk = false;
                }
                if ( $this->moveSubpages ) {
-                       $permissionManager = $services->getPermissionManager();
                        $this->moveSubpages = $permissionManager->userCan( 'move-subpages', $user, $ot );
                }
 
index 3524d79..2ef96ad 100644 (file)
@@ -22,6 +22,7 @@
  */
 
 use MediaWiki\Auth\AuthManager;
+use MediaWiki\MediaWikiServices;
 
 /**
  * Special page for requesting a password reset email.
@@ -52,7 +53,11 @@ class SpecialPasswordReset extends FormSpecialPage {
 
        private function getPasswordReset() {
                if ( $this->passwordReset === null ) {
-                       $this->passwordReset = new PasswordReset( $this->getConfig(), AuthManager::singleton() );
+                       $this->passwordReset = new PasswordReset(
+                               $this->getConfig(),
+                               AuthManager::singleton(),
+                               MediaWikiServices::getInstance()->getPermissionManager()
+                       );
                }
                return $this->passwordReset;
        }
index 0bc9147..d541ead 100644 (file)
@@ -115,7 +115,10 @@ class SpecialPreferences extends SpecialPage {
        }
 
        protected function showResetForm() {
-               if ( !$this->getUser()->isAllowed( 'editmyoptions' ) ) {
+               if ( !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'editmyoptions' )
+               ) {
                        throw new PermissionsError( 'editmyoptions' );
                }
 
@@ -134,7 +137,10 @@ class SpecialPreferences extends SpecialPage {
        }
 
        public function submitReset( $formData ) {
-               if ( !$this->getUser()->isAllowed( 'editmyoptions' ) ) {
+               if ( !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'editmyoptions' )
+               ) {
                        throw new PermissionsError( 'editmyoptions' );
                }
 
index 0bfe185..4683fe6 100644 (file)
@@ -185,7 +185,9 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                if (
                        !$this->including() &&
                        $this->getUser()->isLoggedIn() &&
-                       $this->getUser()->isAllowed( 'viewmywatchlist' )
+                       MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'viewmywatchlist' )
                ) {
                        $this->registerFiltersFromDefinitions( [ $this->watchlistFilterGroupDefinition ] );
                        $watchlistGroup = $this->getFilterGroup( 'watchlist' );
@@ -279,7 +281,10 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $join_conds = array_merge( $join_conds, $rcQuery['joins'] );
 
                // JOIN on watchlist for users
-               if ( $user->isLoggedIn() && $user->isAllowed( 'viewmywatchlist' ) ) {
+               if ( $user->isLoggedIn() && MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $user, 'viewmywatchlist' )
+               ) {
                        $tables[] = 'watchlist';
                        $fields[] = 'wl_user';
                        $fields[] = 'wl_notificationtimestamp';
index 26f3665..0921ada 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup SpecialPage
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * This is to display changes made to all articles linked in an article.
  *
@@ -91,7 +93,10 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges {
 
                // left join with watchlist table to highlight watched rows
                $uid = $this->getUser()->getId();
-               if ( $uid && $this->getUser()->isAllowed( 'viewmywatchlist' ) ) {
+               if ( $uid && MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'viewmywatchlist' )
+               ) {
                        $tables[] = 'watchlist';
                        $select[] = 'wl_user';
                        $join_conds['watchlist'] = [ 'LEFT JOIN', [
index 437263f..698e590 100644 (file)
@@ -21,6 +21,7 @@
  * @ingroup SpecialPage
  */
 
+use MediaWiki\MediaWikiServices;
 use MediaWiki\Storage\RevisionRecord;
 use MediaWiki\Permissions\PermissionManager;
 
@@ -192,9 +193,11 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                $this->typeLabels = self::$UILabels[$this->typeName];
                $list = $this->getList();
                $list->reset();
-               $this->mIsAllowed = $user->isAllowed( RevisionDeleter::getRestriction( $this->typeName ) );
-               $canViewSuppressedOnly = $this->getUser()->isAllowed( 'viewsuppressed' ) &&
-                       !$this->getUser()->isAllowed( 'suppressrevision' );
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               $this->mIsAllowed = $permissionManager->userHasRight( $user,
+                       RevisionDeleter::getRestriction( $this->typeName ) );
+               $canViewSuppressedOnly = $permissionManager->userHasRight( $user, 'viewsuppressed' ) &&
+                       !$permissionManager->userHasRight( $user, 'suppressrevision' );
                $pageIsSuppressed = $list->areAnySuppressed();
                $this->mIsAllowed = $this->mIsAllowed && !( $canViewSuppressedOnly && $pageIsSuppressed );
 
@@ -211,7 +214,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        [ 'revdelete-hide-comment', 'wpHideComment', RevisionRecord::DELETED_COMMENT ],
                        [ 'revdelete-hide-user', 'wpHideUser', RevisionRecord::DELETED_USER ]
                ];
-               if ( $user->isAllowed( 'suppressrevision' ) ) {
+               if ( $permissionManager->userHasRight( $user, 'suppressrevision' ) ) {
                        $this->checks[] = [ 'revdelete-hide-restricted',
                                'wpHideRestricted', RevisionRecord::DELETED_RESTRICTED ];
                }
@@ -223,7 +226,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        $this->showForm();
                }
 
-               if ( $user->isAllowed( 'deletedhistory' ) ) {
+               if ( $permissionManager->userHasRight( $user, 'deletedhistory' ) ) {
                        $qc = $this->getLogQueryCond();
                        # Show relevant lines from the deletion log
                        $deleteLogPage = new LogPage( 'delete' );
@@ -237,7 +240,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        );
                }
                # Show relevant lines from the suppression log
-               if ( $user->isAllowed( 'suppressionlog' ) ) {
+               if ( $permissionManager->userHasRight( $user, 'suppressionlog' ) ) {
                        $suppressLogPage = new LogPage( 'suppress' );
                        $output->addHTML( "<h2>" . $suppressLogPage->getName()->escaped() . "</h2>\n" );
                        LogEventsList::showLogExtract(
@@ -276,7 +279,10 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                                        [ 'action' => 'history' ]
                                );
                                # Link to deleted edits
-                               if ( $this->getUser()->isAllowed( 'undelete' ) ) {
+                               if ( MediaWikiServices::getInstance()
+                                               ->getPermissionManager()
+                                               ->userHasRight( $this->getUser(), 'undelete' )
+                               ) {
                                        $undelete = SpecialPage::getTitleFor( 'Undelete' );
                                        $links[] = $linkRenderer->makeKnownLink(
                                                $undelete,
@@ -480,7 +486,10 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                                Xml::closeElement( 'fieldset' ) . "\n" .
                                Xml::closeElement( 'form' ) . "\n";
                        // Show link to edit the dropdown reasons
-                       if ( $this->getUser()->isAllowed( 'editinterface' ) ) {
+                       if ( MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $this->getUser(), 'editinterface' )
+                       ) {
                                $link = $this->getLinkRenderer()->makeKnownLink(
                                        $this->msg( 'revdelete-reason-dropdown' )->inContentLanguage()->getTitle(),
                                        $this->msg( 'revdelete-edit-reasonlist' )->text(),
@@ -506,7 +515,10 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        'revdelete-text-others'
                );
 
-               if ( $this->getUser()->isAllowed( 'suppressrevision' ) ) {
+               if ( MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'suppressrevision' )
+               ) {
                        $this->getOutput()->addWikiMsg( 'revdelete-suppress-text' );
                }
 
@@ -611,7 +623,9 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                }
                # Can the user set this field?
                if ( $bitParams[RevisionRecord::DELETED_RESTRICTED] == 1
-                       && !$this->getUser()->isAllowed( 'suppressrevision' )
+                       && !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'suppressrevision' )
                ) {
                        throw new PermissionsError( 'suppressrevision' );
                }
index 9a95249..2c8d432 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup SpecialPage
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * A special page that lists tags for edits
  *
@@ -77,9 +79,10 @@ class SpecialTags extends SpecialPage {
                $out->wrapWikiMsg( "<div class='mw-tags-intro'>\n$1\n</div>", 'tags-intro' );
 
                $user = $this->getUser();
-               $userCanManage = $user->isAllowed( 'managechangetags' );
-               $userCanDelete = $user->isAllowed( 'deletechangetags' );
-               $userCanEditInterface = $user->isAllowed( 'editinterface' );
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               $userCanManage = $permissionManager->userHasRight( $user, 'managechangetags' );
+               $userCanDelete = $permissionManager->userHasRight( $user, 'deletechangetags' );
+               $userCanEditInterface = $permissionManager->userHasRight( $user, 'editinterface' );
 
                // Show form to create a tag
                if ( $userCanManage ) {
@@ -329,7 +332,9 @@ class SpecialTags extends SpecialPage {
 
        protected function showDeleteTagForm( $tag ) {
                $user = $this->getUser();
-               if ( !$user->isAllowed( 'deletechangetags' ) ) {
+               if ( !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $user, 'deletechangetags' ) ) {
                        throw new PermissionsError( 'deletechangetags' );
                }
 
@@ -388,7 +393,9 @@ class SpecialTags extends SpecialPage {
                $actionStr = $activate ? 'activate' : 'deactivate';
 
                $user = $this->getUser();
-               if ( !$user->isAllowed( 'managechangetags' ) ) {
+               if ( !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $user, 'managechangetags' ) ) {
                        throw new PermissionsError( 'managechangetags' );
                }
 
index 9b8022b..931b179 100644 (file)
@@ -22,6 +22,7 @@
  */
 
 use MediaWiki\Block\DatabaseBlock;
+use MediaWiki\MediaWikiServices;
 
 /**
  * A special page for unblocking users
@@ -208,7 +209,10 @@ class SpecialUnblock extends SpecialPage {
 
                # If the name was hidden and the blocking user cannot hide
                # names, then don't allow any block removals...
-               if ( !$performer->isAllowed( 'hideuser' ) && $block->getHideName() ) {
+               if ( !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $performer, 'hideuser' ) && $block->getHideName()
+               ) {
                        return [ 'unblock-hideuser' ];
                }
 
index fe629db..d3d3bd7 100644 (file)
@@ -102,7 +102,9 @@ class SpecialUndelete extends SpecialPage {
                $this->mDiff = $request->getCheck( 'diff' );
                $this->mDiffOnly = $request->getBool( 'diffonly', $this->getUser()->getOption( 'diffonly' ) );
                $this->mComment = $request->getText( 'wpComment' );
-               $this->mUnsuppress = $request->getVal( 'wpUnsuppress' ) && $user->isAllowed( 'suppressrevision' );
+               $this->mUnsuppress = $request->getVal( 'wpUnsuppress' ) && MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $user, 'suppressrevision' );
                $this->mToken = $request->getVal( 'token' );
 
                $block = $user->getBlock();
@@ -153,7 +155,7 @@ class SpecialUndelete extends SpecialPage {
                if ( $this->mTargetObj !== null ) {
                        return $permissionManager->userCan( $permission, $user, $this->mTargetObj );
                } else {
-                       return $user->isAllowed( $permission );
+                       return $permissionManager->userHasRight( $user, $permission );
                }
        }
 
@@ -179,7 +181,10 @@ class SpecialUndelete extends SpecialPage {
                        $out->addWikiMsg( 'undelete-header' );
 
                        # Not all users can just browse every deleted page from the list
-                       if ( $user->isAllowed( 'browsearchive' ) ) {
+                       if ( MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $user, 'browsearchive' )
+                       ) {
                                $this->showSearchForm();
                        }
 
@@ -774,7 +779,8 @@ class SpecialUndelete extends SpecialPage {
                LogEventsList::showLogExtract( $out, 'delete', $this->mTargetObj );
                # Show relevant lines from the suppression log:
                $suppressLogPage = new LogPage( 'suppress' );
-               if ( $this->getUser()->isAllowed( 'suppressionlog' ) ) {
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               if ( $permissionManager->userHasRight( $this->getUser(), 'suppressionlog' ) ) {
                        $out->addHTML( Xml::element( 'h2', null, $suppressLogPage->getName()->text() ) . "\n" );
                        LogEventsList::showLogExtract( $out, 'suppress', $this->mTargetObj );
                }
@@ -826,7 +832,7 @@ class SpecialUndelete extends SpecialPage {
                                ] )
                        );
 
-                       if ( $this->getUser()->isAllowed( 'suppressrevision' ) ) {
+                       if ( $permissionManager->userHasRight( $this->getUser(), 'suppressrevision' ) ) {
                                $fields[] = new OOUI\FieldLayout(
                                        new OOUI\CheckboxInputWidget( [
                                                'name' => 'wpUnsuppress',
@@ -866,7 +872,7 @@ class SpecialUndelete extends SpecialPage {
                if ( $haveRevisions ) {
                        # Show the page's stored (deleted) history
 
-                       if ( $this->getUser()->isAllowed( 'deleterevision' ) ) {
+                       if ( $permissionManager->userHasRight( $this->getUser(), 'deleterevision' ) ) {
                                $history .= Html::element(
                                        'button',
                                        [
index 81c9d56..e7c2e42 100644 (file)
@@ -311,16 +311,18 @@ class SpecialUpload extends SpecialPage {
        protected function showViewDeletedLinks() {
                $title = Title::makeTitleSafe( NS_FILE, $this->mDesiredDestName );
                $user = $this->getUser();
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
                // Show a subtitle link to deleted revisions (to sysops et al only)
                if ( $title instanceof Title ) {
                        $count = $title->isDeleted();
-                       if ( $count > 0 && $user->isAllowed( 'deletedhistory' ) ) {
+                       if ( $count > 0 && $permissionManager->userHasRight( $user, 'deletedhistory' ) ) {
                                $restorelink = $this->getLinkRenderer()->makeKnownLink(
                                        SpecialPage::getTitleFor( 'Undelete', $title->getPrefixedText() ),
                                        $this->msg( 'restorelink' )->numParams( $count )->text()
                                );
-                               $link = $this->msg( $user->isAllowed( 'delete' ) ? 'thisisdeleted' : 'viewdeleted' )
-                                       ->rawParams( $restorelink )->parseAsBlock();
+                               $link = $this->msg(
+                                       $permissionManager->userHasRight( $user, 'delete' ) ? 'thisisdeleted' : 'viewdeleted'
+                               )->rawParams( $restorelink )->parseAsBlock();
                                $this->getOutput()->addHTML(
                                        Html::rawElement(
                                                'div',
index 5747f67..585699d 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup SpecialPage
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * Special page to allow managing user group membership
  *
@@ -161,7 +163,10 @@ class UserrightsPage extends SpecialPage {
                         * (e.g. they don't have the userrights permission), then don't
                         * allow them to change any user rights.
                         */
-                       if ( !$user->isAllowed( 'userrights' ) ) {
+                       if ( !MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $user, 'userrights' )
+                       ) {
                                $block = $user->getBlock();
                                if ( $block && $block->isSitewide() ) {
                                        throw new UserBlockedError( $block );
@@ -515,7 +520,10 @@ class UserrightsPage extends SpecialPage {
                        if ( WikiMap::isCurrentWikiId( $dbDomain ) ) {
                                $dbDomain = '';
                        } else {
-                               if ( $writing && !$this->getUser()->isAllowed( 'userrights-interwiki' ) ) {
+                               if ( $writing && !MediaWikiServices::getInstance()
+                                               ->getPermissionManager()
+                                               ->userHasRight( $this->getUser(), 'userrights-interwiki' )
+                               ) {
                                        return Status::newFatal( 'userrights-no-interwiki' );
                                }
                                if ( !UserRightsProxy::validDatabase( $dbDomain ) ) {
index 3d56330..84b3331 100644 (file)
@@ -381,12 +381,10 @@ class SpecialWatchlist extends ChangesListSpecialPage {
 
                // Log entries with DELETED_ACTION must not show up unless the user has
                // the necessary rights.
-               if ( !$user->isAllowed( 'deletedhistory' ) ) {
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               if ( !$permissionManager->userHasRight( $user, 'deletedhistory' ) ) {
                        $bitmask = LogPage::DELETED_ACTION;
-               } elseif ( !MediaWikiServices::getInstance()
-                       ->getPermissionManager()
-                       ->userHasAnyRight( $user, 'suppressrevision', 'viewsuppressed' )
-               ) {
+               } elseif ( !$permissionManager->userHasAnyRight( $user, 'suppressrevision', 'viewsuppressed' ) ) {
                        $bitmask = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
                } else {
                        $bitmask = 0;
index 2840086..5fe3605 100644 (file)
@@ -21,6 +21,7 @@
  * @todo Use some variant of Pager or something; the pagination here is lousy.
  */
 
+use MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\IDatabase;
 
 /**
@@ -416,7 +417,9 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                // if the page is editable, add an edit link
                if (
                        // check user permissions
-                       $this->getUser()->isAllowed( 'edit' ) &&
+                       MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'edit' ) &&
                        // check, if the content model is editable through action=edit
                        ContentHandler::getForTitle( $target )->supportsDirectEditing()
                ) {
index ea23973..b1bfd0b 100644 (file)
@@ -73,16 +73,18 @@ class PreferencesFormOOUI extends OOUIHTMLForm {
         * @return string
         */
        function getButtons() {
-               if ( !MediaWikiServices::getInstance()
-                       ->getPermissionManager()
-                       ->userHasAnyRight( $this->getModifiedUser(), 'editmyprivateinfo', 'editmyoptions' )
-               ) {
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               if ( !$permissionManager->userHasAnyRight(
+                       $this->getModifiedUser(),
+                       'editmyprivateinfo',
+                       'editmyoptions'
+               ) ) {
                        return '';
                }
 
                $html = parent::getButtons();
 
-               if ( $this->getModifiedUser()->isAllowed( 'editmyoptions' ) ) {
+               if ( $permissionManager->userHasRight( $this->getModifiedUser(), 'editmyoptions' ) ) {
                        $t = $this->getTitle()->getSubpage( 'reset' );
 
                        $html .= new OOUI\ButtonWidget( [
index 1e5f816..0b4e058 100644 (file)
@@ -76,7 +76,10 @@ class UploadForm extends HTMLForm {
                parent::__construct( $descriptor, $context, 'upload' );
 
                # Add a link to edit MediaWiki:Licenses
-               if ( $this->getUser()->isAllowed( 'editinterface' ) ) {
+               if ( MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'editinterface' )
+               ) {
                        $this->getOutput()->addModuleStyles( 'mediawiki.special' );
                        $licensesLink = $linkRenderer->makeKnownLink(
                                $this->msg( 'licenses' )->inContentLanguage()->getTitle(),
index 0abe842..c9c3b07 100644 (file)
@@ -19,6 +19,8 @@
  * @ingroup Pager
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * This class is used to get a list of active users. The ones with specials
  * rights (sysop, bureaucrat, developer) will have them displayed
@@ -124,7 +126,10 @@ class ActiveUsersPager extends UsersPager {
                        ] ];
                        $conds['ug2.ug_user'] = null;
                }
-               if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
+               if ( !MediaWikiServices::getInstance()
+                                 ->getPermissionManager()
+                                 ->userHasRight( $this->getUser(), 'hideuser' )
+               ) {
                        $conds[] = 'NOT EXISTS (' . $dbr->selectSQLText(
                                        'ipblocks', '1', [ 'ipb_user=user_id', 'ipb_deleted' => 1 ]
                                ) . ')';
index 4441a33..718da6d 100644 (file)
@@ -137,7 +137,10 @@ class BlockListPager extends TablePager {
                                        $value,
                                        /* User preference timezone */true
                                ) );
-                               if ( $this->getUser()->isAllowed( 'block' ) ) {
+                               if ( MediaWikiServices::getInstance()
+                                               ->getPermissionManager()
+                                               ->userHasRight( $this->getUser(), 'block' )
+                               ) {
                                        $links = [];
                                        if ( $row->ipb_auto ) {
                                                $links[] = $linkRenderer->makeKnownLink(
@@ -358,7 +361,10 @@ class BlockListPager extends TablePager {
                $info['conds'][] = 'ipb_expiry > ' . $db->addQuotes( $db->timestamp() );
 
                # Is the user allowed to see hidden blocks?
-               if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
+               if ( !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'hideuser' )
+               ) {
                        $info['conds']['ipb_deleted'] = 0;
                }
 
index d76dfb8..3a56a87 100644 (file)
@@ -269,6 +269,7 @@ class ContribsPager extends RangeChronologicalPager {
                        'options' => [],
                        'join_conds' => $revQuery['joins'],
                ];
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
 
                // WARNING: Keep this in sync with getTargetTable()!
                $user = User::newFromName( $this->target, false );
@@ -313,14 +314,11 @@ class ContribsPager extends RangeChronologicalPager {
                $queryInfo['conds'] = array_merge( $queryInfo['conds'], $this->getNamespaceCond() );
 
                // Paranoia: avoid brute force searches (T19342)
-               if ( !$user->isAllowed( 'deletedhistory' ) ) {
+               if ( !$permissionManager->userHasRight( $user, 'deletedhistory' ) ) {
                        $queryInfo['conds'][] = $this->mDb->bitAnd(
                                'rev_deleted', RevisionRecord::DELETED_USER
                                ) . ' = 0';
-               } elseif ( !MediaWikiServices::getInstance()
-                       ->getPermissionManager()
-                       ->userHasAnyRight( $user, 'suppressrevision', 'viewsuppressed' )
-               ) {
+               } elseif ( !$permissionManager->userHasAnyRight( $user, 'suppressrevision', 'viewsuppressed' ) ) {
                        $queryInfo['conds'][] = $this->mDb->bitAnd(
                                'rev_deleted', RevisionRecord::SUPPRESSED_USER
                                ) . ' != ' . RevisionRecord::SUPPRESSED_USER;
index cd6294d..2893759 100644 (file)
@@ -90,13 +90,11 @@ class DeletedContribsPager extends IndexPager {
                ];
                $conds = array_merge( $userCond, $this->getNamespaceCond() );
                $user = $this->getUser();
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
                // Paranoia: avoid brute force searches (T19792)
-               if ( !$user->isAllowed( 'deletedhistory' ) ) {
+               if ( !$permissionManager->userHasRight( $user, 'deletedhistory' ) ) {
                        $conds[] = $this->mDb->bitAnd( 'ar_deleted', RevisionRecord::DELETED_USER ) . ' = 0';
-               } elseif ( !MediaWikiServices::getInstance()
-                       ->getPermissionManager()
-                       ->userHasAnyRight( $user, 'suppressrevision', 'viewsuppressed' )
-               ) {
+               } elseif ( !$permissionManager->userHasAnyRight( $user, 'suppressrevision', 'viewsuppressed' ) ) {
                        $conds[] = $this->mDb->bitAnd( 'ar_deleted', RevisionRecord::SUPPRESSED_USER ) .
                                ' != ' . RevisionRecord::SUPPRESSED_USER;
                }
@@ -325,8 +323,9 @@ class DeletedContribsPager extends IndexPager {
                );
 
                $user = $this->getUser();
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
 
-               if ( $user->isAllowed( 'deletedtext' ) ) {
+               if ( $permissionManager->userHasRight( $user, 'deletedtext' ) ) {
                        $last = $linkRenderer->makeKnownLink(
                                $undelete,
                                $this->messages['diff'],
@@ -344,7 +343,9 @@ class DeletedContribsPager extends IndexPager {
                $comment = Linker::revComment( $rev );
                $date = $this->getLanguage()->userTimeAndDate( $rev->getTimestamp(), $user );
 
-               if ( !$user->isAllowed( 'undelete' ) || !$rev->userCan( RevisionRecord::DELETED_TEXT, $user ) ) {
+               if ( !$permissionManager->userHasRight( $user, 'undelete' ) ||
+                        !$rev->userCan( RevisionRecord::DELETED_TEXT, $user )
+               ) {
                        $link = htmlspecialchars( $date ); // unusable link
                } else {
                        $link = $linkRenderer->makeKnownLink(
index 747dea2..bb5592c 100644 (file)
@@ -20,6 +20,7 @@
  */
 
 use MediaWiki\Linker\LinkRenderer;
+use MediaWiki\MediaWikiServices;
 
 class ProtectedPagesPager extends TablePager {
 
@@ -159,7 +160,10 @@ class ProtectedPagesPager extends TablePager {
                                $formatted = htmlspecialchars( $this->getLanguage()->formatExpiry(
                                        $value, /* User preference timezone */true ) );
                                $title = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
-                               if ( $this->getUser()->isAllowed( 'protect' ) && $title ) {
+                               if ( $title && MediaWikiServices::getInstance()
+                                                ->getPermissionManager()
+                                                ->userHasRight( $this->getUser(), 'protect' )
+                               ) {
                                        $changeProtection = $linkRenderer->makeKnownLink(
                                                $title,
                                                $this->msg( 'protect_change' )->text(),
index ba078e9..ee0ac00 100644 (file)
@@ -23,6 +23,8 @@
  * @ingroup Pager
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * This class is used to get a list of user. The ones with specials
  * rights (sysop, bureaucrat, developer) will have them displayed
@@ -123,7 +125,10 @@ class UsersPager extends AlphabeticPager {
                $conds = [];
 
                // Don't show hidden names
-               if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
+               if ( !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $this->getUser(), 'hideuser' )
+               ) {
                        $conds[] = 'ipb_deleted IS NULL OR ipb_deleted = 0';
                }
 
index 3368e29..d7dfffa 100644 (file)
  * @file
  * @ingroup Upload
  */
+
+use MediaWiki\MediaWikiServices;
 use MediaWiki\Shell\Shell;
+use MediaWiki\User\UserIdentity;
 
 /**
  * @defgroup Upload Upload related
@@ -145,12 +148,13 @@ abstract class UploadBase {
         * identifying the missing permission.
         * Can be overridden by subclasses.
         *
-        * @param User $user
+        * @param UserIdentity $user
         * @return bool|string
         */
-       public static function isAllowed( $user ) {
+       public static function isAllowed( UserIdentity $user ) {
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
                foreach ( [ 'upload', 'edit' ] as $permission ) {
-                       if ( !$user->isAllowed( $permission ) ) {
+                       if ( !$permissionManager->userHasRight( $user, $permission ) ) {
                                return $permission;
                        }
                }
@@ -1954,7 +1958,10 @@ abstract class UploadBase {
                 * wfFindFile finds a file, it exists in a shared repository.
                 */
                $file = wfFindFile( $this->getTitle(), [ 'latest' => true ] );
-               if ( $file && !$user->isAllowed( 'reupload-shared' ) ) {
+               if ( $file && !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $user, 'reupload-shared' )
+               ) {
                        return [ 'fileexists-shared-forbidden', $file->getName() ];
                }
 
@@ -1969,9 +1976,10 @@ abstract class UploadBase {
         * @return bool
         */
        public static function userCanReUpload( User $user, File $img ) {
-               if ( $user->isAllowed( 'reupload' ) ) {
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+               if ( $permissionManager->userHasRight( $user, 'reupload' ) ) {
                        return true; // non-conditional
-               } elseif ( !$user->isAllowed( 'reupload-own' ) ) {
+               } elseif ( !$permissionManager->userHasRight( $user, 'reupload-own' ) ) {
                        return false;
                }
 
index b92fcc5..b87810d 100644 (file)
@@ -1,7 +1,4 @@
 <?php
-
-use MediaWiki\MediaWikiServices;
-
 /**
  * Backend for uploading files from a HTTP resource.
  *
@@ -24,6 +21,9 @@ use MediaWiki\MediaWikiServices;
  * @ingroup Upload
  */
 
+use MediaWiki\MediaWikiServices;
+use MediaWiki\User\UserIdentity;
+
 /**
  * Implements uploading from a HTTP resource.
  *
@@ -43,12 +43,15 @@ class UploadFromUrl extends UploadBase {
         * user is not allowed, return the name of the user right as a string. If
         * the user is allowed, have the parent do further permissions checking.
         *
-        * @param User $user
+        * @param UserIdentity $user
         *
         * @return bool|string
         */
-       public static function isAllowed( $user ) {
-               if ( !$user->isAllowed( 'upload_by_url' ) ) {
+       public static function isAllowed( UserIdentity $user ) {
+               if ( !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $user, 'upload_by_url' )
+               ) {
                        return 'upload_by_url';
                }
 
@@ -167,7 +170,9 @@ class UploadFromUrl extends UploadBase {
                $url = $request->getVal( 'wpUploadFileURL' );
 
                return !empty( $url )
-                       && $wgUser->isAllowed( 'upload_by_url' );
+                       && MediaWikiServices::getInstance()
+                                  ->getPermissionManager()
+                                  ->userHasRight( $wgUser, 'upload_by_url' );
        }
 
        /**
index ca3db5b..4c9099e 100644 (file)
@@ -20,6 +20,8 @@
  * @file
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * A CentralIdLookup provider that just uses local IDs. Useful if the wiki
  * isn't part of a cluster or you're using shared user tables.
@@ -69,7 +71,10 @@ class LocalIdLookup extends CentralIdLookup {
                        'user_id' => array_map( 'intval', array_keys( $idToName ) ),
                ];
                $join = [];
-               if ( $audience && !$audience->isAllowed( 'hideuser' ) ) {
+               if ( $audience && !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $audience, 'hideuser' )
+               ) {
                        $tables[] = 'ipblocks';
                        $join['ipblocks'] = [ 'LEFT JOIN', 'ipb_user=user_id' ];
                        $fields[] = 'ipb_deleted';
@@ -100,7 +105,10 @@ class LocalIdLookup extends CentralIdLookup {
                        'user_name' => array_map( 'strval', array_keys( $nameToId ) ),
                ];
                $join = [];
-               if ( $audience && !$audience->isAllowed( 'hideuser' ) ) {
+               if ( $audience && !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $audience, 'hideuser' )
+               ) {
                        $tables[] = 'ipblocks';
                        $join['ipblocks'] = [ 'LEFT JOIN', 'ipb_user=user_id' ];
                        $where[] = 'ipb_deleted = 0 OR ipb_deleted IS NULL';
index fd8eb3f..38707de 100644 (file)
@@ -22,6 +22,7 @@
 
 use MediaWiki\Auth\AuthManager;
 use MediaWiki\Auth\TemporaryPasswordAuthenticationRequest;
+use MediaWiki\Permissions\PermissionManager;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerInterface;
 use MediaWiki\Logger\LoggerFactory;
@@ -40,6 +41,9 @@ class PasswordReset implements LoggerAwareInterface {
        /** @var AuthManager */
        protected $authManager;
 
+       /** @var PermissionManager */
+       private $permissionManager;
+
        /** @var LoggerInterface */
        protected $logger;
 
@@ -50,9 +54,14 @@ class PasswordReset implements LoggerAwareInterface {
         */
        private $permissionCache;
 
-       public function __construct( Config $config, AuthManager $authManager ) {
+       public function __construct(
+               Config $config,
+               AuthManager $authManager,
+               PermissionManager $permissionManager
+       ) {
                $this->config = $config;
                $this->authManager = $authManager;
+               $this->permissionManager = $permissionManager;
                $this->permissionCache = new MapCacheLRU( 1 );
                $this->logger = LoggerFactory::getInstance( 'authentication' );
        }
@@ -93,7 +102,7 @@ class PasswordReset implements LoggerAwareInterface {
                        } elseif ( !$this->config->get( 'EnableEmail' ) ) {
                                // Maybe email features have been disabled
                                $status = StatusValue::newFatal( 'passwordreset-emaildisabled' );
-                       } elseif ( !$user->isAllowed( 'editmyprivateinfo' ) ) {
+                       } elseif ( !$this->permissionManager->userHasRight( $user, 'editmyprivateinfo' ) ) {
                                // Maybe not all users have permission to change private data
                                $status = StatusValue::newFatal( 'badaccess' );
                        } elseif ( $this->isBlocked( $user ) ) {
index c185bab..b3489a2 100644 (file)
@@ -20,6 +20,8 @@
  * @file
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * Handles searching prefixes of user names
  *
@@ -46,7 +48,10 @@ class UserNamePrefixSearch {
                $joinConds = [];
 
                // Filter out hidden user names
-               if ( $audience === 'public' || !$audience->isAllowed( 'hideuser' ) ) {
+               if ( $audience === 'public' || !MediaWikiServices::getInstance()
+                               ->getPermissionManager()
+                               ->userHasRight( $audience, 'hideuser' )
+               ) {
                        $tables[] = 'ipblocks';
                        $cond['ipb_deleted'] = [ 0, null ];
                        $joinConds['ipblocks'] = [ 'LEFT JOIN', 'user_id=ipb_user' ];
index fc8e5f7..7d93d5b 100644 (file)
        "tog-useeditwarning": "حذّرني عندما أغادر تحرير صفحة فيها تغييرات لم أحفظها",
        "tog-prefershttps": "استخدم دائما اتصالا آمنا عند تسجيل الدخول",
        "tog-showrollbackconfirmation": "إظهار رسالة تأكيد عند النقر على رابط الاسترجاع",
+       "tog-requireemail": "تتطلب البريد الإلكتروني لإعادة تعيين كلمة المرور",
        "underline-always": "دائما",
        "underline-never": "أبدا",
        "underline-default": "وفق المظهر أو المتصفح",
        "prefs-help-email": "تحديد عنوان البريد الإلكتروني اختياري، ولكنه يلزم لإعادة تعيين كلمة المرور في حال نسيت كلمة المرور الخاصة بك.",
        "prefs-help-email-others": "يمكنك أيضا أن تسمح للآخرين الاتصال بك عن طريق وصلة في صفحة المستخدم أو نقاش المستخدم الخاصة بك. لا يكشف بريدك الإلكتروني عندما يراسلك أحد بهذه الطريقة، ولكن إذا قمت بالرد سيرى بريدك الإلكتروني.",
        "prefs-help-email-required": "عنوان البريد الإلكتروني مطلوب.",
+       "prefs-help-requireemail": "إذا تم تحديده، فسوف يرسل رسائل البريد الإلكتروني الخاصة بإعادة تعيين كلمة المرور فقط إذا كان الشخص الذي قام بإعادة الضبط قد قدم اسم المستخدم والبريد الإلكتروني لهذا الحساب.",
        "prefs-info": "المعلومات الأساسية",
        "prefs-i18n": "الترجمة",
        "prefs-signature": "التوقيع",
        "ipblocklist-legend": "إيجاد مستخدم ممنوع",
        "blocklist-userblocks": "أخفِ منع الحسابات",
        "blocklist-tempblocks": "أخفِ المنع المؤقت",
+       "blocklist-indefblocks": "إخفاء عمليات المنع غير المحددة",
        "blocklist-addressblocks": "أخفِ منع عنوان أيبي واحد",
        "blocklist-type": "النوع:",
        "blocklist-type-opt-all": "الكل",
index 37e5947..5bc3724 100644 (file)
@@ -17,8 +17,8 @@
                ]
        },
        "tog-underline": "Garis ring beten pranala:",
-       "tog-hideminor": "engkebang suntingan ring gentosan sane pinih anyar",
-       "tog-hidepatrolled": "engkebang suntingan mapatrol ring gentosan sane pinih anyar",
+       "tog-hideminor": "Engkebang uahan alit saking uahan sané mangkin",
+       "tog-hidepatrolled": "Engkebang uahan sané kapatroli saking uahan sané mangkin",
        "tog-newpageshidepatrolled": "engkebang lembar mapatrol saking saking kepahan lembar anyar",
        "tog-hidecategorization": "Engkebang kacané",
        "tog-extendwatchlist": "kembangang kepahan pangiwasan antuk nampilang samian panguwahan, nenten sane anyar kewanten",
@@ -73,7 +73,7 @@
        "mon": "Som",
        "tue": "Ang",
        "wed": "Bud",
-       "thu": "Wrs",
+       "thu": "Wra",
        "fri": "Suk",
        "sat": "San",
        "january": "Januari",
        "may": "Méi",
        "jun": "Jun",
        "jul": "Jul",
-       "aug": "Ags",
+       "aug": "Agu",
        "sep": "Sép",
        "oct": "Okt",
        "nov": "Nop",
        "dec": "Dés",
-       "january-date": "Januari $1",
-       "february-date": "Februari $1",
-       "march-date": "Maret $1",
-       "april-date": "April $1",
-       "may-date": "Mei $1",
-       "june-date": "Juni $1",
-       "july-date": "Juli $1",
-       "august-date": "Agustus $1",
-       "september-date": "September $1",
-       "october-date": "Oktober $1",
-       "november-date": "November $1",
-       "december-date": "Desember $1",
+       "january-date": "$1 Januari",
+       "february-date": "$1 Pébruari",
+       "march-date": "$1 Maret",
+       "april-date": "$1 April",
+       "may-date": "$1 Méi",
+       "june-date": "$1 Juni",
+       "july-date": "$1 Juli",
+       "august-date": "$1 Agustus",
+       "september-date": "$1 Séptémber",
+       "october-date": "$1 Oktober",
+       "november-date": "$1 Nopémber",
+       "december-date": "$1 Désémber",
        "period-am": "AM",
        "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Kategori}}",
        "category_header": "Kaca ring ketegori \"$1\"",
        "subcategories": "Subkategori",
        "category-media-header": "Média ring kategori \"$1\"",
-       "category-empty": "\"mangkin, nenten madaging lembar utawi pekakas ring golongan puniki\"",
-       "hidden-categories": "{{plural:$1|punduhan sane kaengkebang| punduhan sane kaengkebang}}",
-       "hidden-category-category": "Kategori mengkeb",
+       "category-empty": "<em>Kategori puniki mangkin nénten madaging kaca utawi média.</em>",
+       "hidden-categories": "{{plural:$1|Kategori sané kaengkebang}}",
+       "hidden-category-category": "Kategori sané kaengkebang",
        "category-subcat-count": "{{PLURAL:$2| golongan puniki madue {{PLURAL:$1|$1 subkategori}} puniki, saking genepan $2.}}",
        "category-article-count": "{{PLURAL:$2|golongan puniki madue{{PLURAL:$1|$1 lembar}}, saking total $2.}}",
        "category-file-count": "{{PLURAL:$2|golongan puniki madue{{PLURAL:$1|$1 lembar}}, saking total $2.}}",
        "nospecialpagetext": "<strong>Ida nagih kaca pinih luwih sane nenten patut.</strong>\n\nWacakan kaca pinih luwih dados kacingak ring [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Kaiwangan",
        "databaseerror": "Database kaluputan",
-       "databaseerror-query": "Kueri: $1",
+       "databaseerror-query": "Kuéri: $1",
        "databaseerror-function": "Pungsi: $1",
        "databaseerror-error": "Pelih: $1",
        "missing-article": "data utama nenten prasida nemu tulisan saking lembar sane sepatutne wenten, inggih punika  $1, $2\n\nindike puniki biasane keranayang olih pranala kaon nuju pabenahan sane dumun lembar sane sampun kaicalang\n\nyening nenten puniki sane ngranayang, ida dane minab sampun manggihin kaiwangang ring sajeroning piranti lunak.\nDurus sadokang indik puniki rin silih sinunggil anak \n\n[[Special:ListUsers/sysop|Pengurus]], antuk ngetik alamat URL sane katuju",
        "botpasswords-label-resetpassword": "Nyumu kruna sandi",
        "resetpass-submit-cancel": "Wangdé",
        "passwordreset": "Nyumu kruna sandi",
-       "bold_sample": "teks puniki mesurat tebel",
-       "bold_tip": "teks puniki mesurat tebel",
+       "bold_sample": "téks puniki masurat tebel",
+       "bold_tip": "téks puniki mesurat tebel",
        "italic_sample": "teks puniki masurat sendeh",
        "italic_tip": "teks puniki masurat sendeh",
        "link_sample": "murda pranala",
        "link_tip": "pranala tengah",
        "extlink_sample": "http://www.example.com murda pranala",
        "extlink_tip": "pranala sisi (sampunang lali kakawitin http://)",
-       "headline_sample": "teks murda",
+       "headline_sample": "téks murda",
        "headline_tip": "subgolongan undag 2",
        "nowiki_sample": "lebuang teks sane nenten jagi keformat ring driki",
        "nowiki_tip": "campahang format wiki",
        "image_tip": "cantumin pupulan",
        "media_tip": "Pranala depukan",
-       "sig_tip": "tanda tangan ida dane sareng tanda waktu",
+       "sig_tip": "tanda tangan ida dané sareng tanda waktu",
        "hr_tip": "garis horizontal",
        "summary": "Ringkesan:",
        "minoredit": "Puniki uahan alit",
        "loginreqlink": "manjing log",
        "newarticle": "(Anyar)",
        "newarticletext": "ida dane ngiring pranala nuju lembar sane durung wenten. yening jagi ngaryanang lembar punika, ketik daging lembar ring kotak sane wenten ring beten puniki. (cingak [$1 lembar wantuan] anggen wacana salanturnyane). yening ida dane nenten nyelapang neked ring lembar puniki, klik tombol \"back\" ring \"penjelajah web\" ida dane.",
+       "anontalkpagetext": "<em>Niki inggih punika kaca pabligbagan sang penganggé sané nénten nguningayang wasta utawi nénten nganggén wasta.</em> Nika mawinan penganggé punika patut nganggén genah IP sané mawentuk angka antuk manyihnayang.\nGenah IP punika prasida kaanggén sareng-sareng olih makudang-kudang panganggé sané lianan. \nYéning Ragané sang penganggé sané nénten mawasta tur marasa ngamolihang pidarta sané nénten patut, ngiring \n[[Special:CreateAccount|ngaryanin akun]] utawi [[Special:UserLogin|sang penganggé ngranjing log]] antuk ngelidin kabingungan saking sang penganggé sané lianan ring galah sané lianan.",
        "noarticletext": "mangkin nenten wenten teks ring lembar puniki. ida dane prasida [[Special:Search/{{PAGENAME}}|ngrereh murda nganggen lembar puniki]] ring lembar-lembar sane lianan, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ngrereh log sane mapaiketan], utawi [{{fullurl:{{FULLPAGENAME}}|action=edit}} nguwah lembar puniki]</span>.",
        "noarticletext-nopermission": "mangkin nenten wenten teks ring lembar puniki. ida dane prasida [[Special:Search/{{PAGENAME}}|ngarereh murda anggen lembar puniki]] ring lembar-lembar sane lianan, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ngarereh log sane mapaiketan], utawi [{{fullurl:{{FULLPAGENAME}}|action=edit}} ngubah lembar puniki]</span>.",
        "userpage-userdoesnotexist-view": "Akun sang anganggé \"$1\" nénten madaptar.",
        "editingsection": "Nguahin $1 (pahan)",
        "editingcomment": "Nguahin $1 (pahan anyar)",
        "templatesused": "{{PLURAL:$1|Citakan}} sané kaanggén ring kaca puniki:",
+       "templatesusedpreview": "{{PLURAL:$1|Citakan}} sané kaanggén ring kaca puniki:",
        "template-protected": "(kasaibin)",
        "template-semiprotected": "(semi-kasaibin)",
        "hiddencategories": "lembar niki inggih punika krama saking {{PLURAL:$1|1 golongan sane mengkeb|$1 golongan sane mengkeb}}",
        "post-expand-template-inclusion-category": "lembar sane maukuran templat sane nglangkungin wates",
        "post-expand-template-argument-warning": "\"peminget\" lembar puniki madaging kiranglangkungnyane siki argumen templat anggen ukuran ekspansi sane kaliwat ageng. argumen-argumen punika sampun kacampahang.",
        "post-expand-template-argument-category": "lembar sane medaging argumen templat sane kacampahang",
+       "undo-failure": "Uwahan puniki nénten prasida kabalikang krana wénten konflik panguwahan antara.",
        "viewpagelogs": "Cingak log saking kaca puniki",
        "currentrev-asof": "pabecikan sane anyar ring pinanggal$1",
        "revisionasof": "Uahan ri tatkala $1",
        "searchmenu-exists": "wenten lembar sane mamurda \"[[:$1]]\" ring wiki puniki. {{PLURAL:$2|0=| cingakin taler asil rerehan lianan sane kapolihang}}",
        "searchmenu-new": "<strong> ngawi lembar \"[[:$1]] ring wiki puniki </ strong>! {{{{PLURAL:$2|}}| 0 = | cingak teler lembar sane kapolihang ring pangreregan | cingak taler asil pangrerehan sane kapolihang}}",
        "searchprofile-articles": "Kaca daging",
-       "searchprofile-images": "multimedia",
+       "searchprofile-images": "Multimédia",
        "searchprofile-everything": "Samian",
        "searchprofile-advanced": "lanturane",
        "searchprofile-articles-tooltip": "Rereh ring $1",
        "searchprofile-images-tooltip": "Rereh depukan",
-       "searchprofile-everything-tooltip": "pangrereh ring samian isi (taler lembar wecana)",
+       "searchprofile-everything-tooltip": "Rereh ring samian daging (rumasuk kaca pabligbagan)",
        "searchprofile-advanced-tooltip": "Rereh ring genah wastan sané kapilih",
        "search-result-size": "$1 ({{PLURAL:$2|1 kruna|$2 kruna}})",
        "search-result-category-size": "{{PLURAL:$1|1 krama|$1 krama}}({{PLURAL:$2|1  subgolongan|$2 subgolongan}}, {{PLURAL:$3|1 pupulan|$3 pupulan}})",
        "searchrelated": "paiketan",
        "searchall": "samian",
        "search-showingresults": "{{PLURAL:$4|Asil <strong>$1</strong> of <strong>$3</strong>|Asil-asil <strong>$1 – $2</strong> saking <strong>$3</strong>}}",
-       "search-nonefound": "nenten wenten asil sane caklek ring arsa",
+       "search-nonefound": "nénten wénten asil sané caklek ring arsa",
        "powersearch-ns": "Rereh ring genah wastan:",
        "mypreferences": "Preferensi",
        "prefs-user-pages": "Kaca sang anganggé",
        "right-editprotected": "Uah kaca sané kasaibin \"{{int:protect-level-sysop}}\"",
        "grant-createeditmovepage": "Karyanin, uah, miwah gingsirang kaca",
        "grant-editprotected": "Uah kaca sané kasaibin",
+       "grant-rollback": "Waliang uahan ring kaca",
        "newuserlogpage": "Log makarya sang anganggé",
+       "rightslog": "Log panguwahan hak ngaksés",
        "action-read": "wacén kaca puniki",
        "action-edit": "uah kaca puniki",
        "action-createpage": "karyanin kaca puniki",
        "rcshowhidemine-show": "Sinahang",
        "rcshowhidemine-hide": "Engkebang",
        "rcshowhidecategorization-show": "Sinahang",
-       "rclinks": "Edengang untat $1 gentosan anyar $2 dina kaping untat",
+       "rclinks": "Sinahang $1 uahan sané untat ring $2 dina sané lintang",
        "diff": "bina",
        "hist": "bbd",
        "hide": "Engkebang",
        "newpageletter": "A",
        "boteditletter": "b",
        "rc-change-size-new": "$1 {{PLURAL:$1|bita}} sasampun kauah",
-       "rc-enhanced-expand": "edengang rerincian",
-       "rc-enhanced-hide": "engkebang rerincian",
+       "rc-enhanced-expand": "Sinahang rerincian",
+       "rc-enhanced-hide": "Engkebang rerincian",
        "rc-old-title": "witnyané kakaryanin pinaka \"$1\"",
        "recentchangeslinked": "Uahan mapaiketan",
        "recentchangeslinked-toolbox": "Uahan mapaiketan",
        "filehist": "Babad berkas",
        "filehist-help": "klik ring pinanggal/galah anggen nyingakin pupulan niki rikala punika",
        "filehist-deleteall": "usap samian",
-       "filehist-revert": "buwungang",
-       "filehist-current": "sané mangkin",
+       "filehist-revert": "wangdéang",
+       "filehist-current": "mangkin",
        "filehist-datetime": "Tanggal/Galah",
        "filehist-thumb": "Miniatur",
        "filehist-thumbtext": "miniatur anggen versi ring $1",
        "booksources-search-legend": "Rereh wit buku",
        "booksources-search": "Rereh",
        "specialloguserlabel": "Panggange",
+       "speciallogtitlelabel": "Tetujon (Murda utawi {{ns:user}}:sang panganggé antuk penganggé)",
        "log": "Log",
        "logeventslist-submit": "Sinahang",
        "all-logs-page": "Makasami log publik",
        "allinnamespace": "Makasami kaca (genah wastan $1)",
        "allpagessubmit": "Lanturang",
        "allpages-bad-ns": "{{SITENAME}} nénten madué genah wastan \"$1\".",
-       "allpages-hide-redirects": "Ngengkebang pagingsirian",
+       "allpages-hide-redirects": "Engkebang kaca gingsirian",
        "categories": "Golongan",
        "categories-submit": "Sinahang",
        "deletedcontributions": "Pituut sang anganggé sané kausapin",
        "actioncomplete": "pelaksanan sampun wusan",
        "actionfailed": "pelaksana luput",
        "dellogpage": "log pangapus",
+       "rollback-confirmation-yes": "Waliang",
        "rollback-confirmation-no": "Wangdé",
-       "rollbacklink": "mabalik",
-       "rollbacklinkcount": "balikang $1 {{PLURAL:$1|suratan}}",
+       "rollbacklink": "waliang",
+       "rollbacklinkcount": "waliang $1 {{PLURAL:$1|uahan}}",
        "changecontentmodel-title-label": "Murda kaca",
        "protectlogpage": "Log saiban",
        "protectedarticle": "nyaib \"[[$1]]\"",
+       "modifiedarticleprotection": "nguwah tingkatan panyambi antuk  \"[[$1]]\"",
        "protect-default": "Lugra makasami sang anganggé",
        "restriction-edit": "Uah",
        "restriction-move": "Gingsirang",
        "undelete": "Cingak kaca sané kausapin",
        "undeleterevisions": "$1 {{PLURAL:$1|uahan}} kausapin",
-       "undeletelink": "cingak/uliang",
+       "undeletelink": "cingak/waliang",
        "undeleteviewlink": "cingak",
        "undelete-search-title": "Rereh kaca sané kausapin",
        "namespace": "Genah wastan:",
        "mycontris": "Pituut",
        "anoncontribs": "Pituut",
        "contribsub2": "antuk {{GENDER:$3|$1}} ($2)",
+       "nocontribs": "Nénten wénten uwahan sané patut sareng cihna punika.",
        "uctop": "sane mangkin",
        "month": "Saking sasih (miwah sadurungnyané)",
        "year": "Saking warsa (miwah sadurungnyané):",
-       "sp-contributions-blocklog": "log pemblokiran",
+       "sp-contributions-blocklog": "log pangempet",
        "sp-contributions-deleted": "pituut {{GENDER:$1|sang anganggé}} sané kausapin",
        "sp-contributions-uploads": "unggahan",
        "sp-contributions-logs": "log",
        "isredirect": "Kaca gingsiran",
        "istemplate": "sareng kasurat",
        "isimage": "pranala pupulan-pupulan",
-       "whatlinkshere-prev": "{{PLURAL:$1|sadurungnyane|$1 sadurungnyane}}",
-       "whatlinkshere-next": "{{PLURAL:$1|selanturnyane}}",
+       "whatlinkshere-prev": "{{PLURAL:$1|sadurungnyané|$1 sadurungnyané}}",
+       "whatlinkshere-next": "{{PLURAL:$1|salanturnyané|$1 salanturnyané}}",
        "whatlinkshere-links": "← pranala",
-       "whatlinkshere-hideredirs": "$1 pangalihan",
+       "whatlinkshere-hideredirs": "$1 kaca gingsiran",
        "whatlinkshere-hidetrans": "$1 transklusi",
        "whatlinkshere-hidelinks": "$1 pranala",
        "whatlinkshere-hideimages": "$1 pranala berkas",
        "ipb-pages-label": "Kaca",
        "ipb-namespaces-label": "Genah wastan",
        "block-prevent-edit": "Nguahin",
-       "ipblocklist": "ngempetin sane nganggo",
+       "ipblocklist": "Sang anganggé sané kaempetin",
        "infiniteblock": "Nénten kawates",
        "blocklist-nousertalk": "tan prasida nguahin kaca pabligbagan praragan",
        "blocklist-editing-page": "kaca",
        "blocklist-editing-ns": "genah wastan",
-       "blocklink": "ngempetin",
+       "blocklink": "empet",
        "unblocklink": "ngicalang kaempetan",
-       "change-blocklink": "gentosin empetin",
+       "change-blocklink": "uah pangempet",
        "contribslink": "pituut",
-       "blocklogpage": "log pemblokiran",
+       "blocklogpage": "Log pangempet",
        "blocklogentry": "mlokir [[$1]] anggen pangwates galah $2$3",
+       "reblock-logentry": "nguwah blokiran aturan antuk [[$1]] sareng galah kadaluwarsa $2 $3",
        "block-log-flags-nocreate": "ngawe akun kaicalang",
+       "proxyblocker": "Sané ngablokir proxy",
        "movelogpage": "Log gingsiran",
-       "revertmove": "buwungang",
+       "revertmove": "wangdéang",
        "export": "ekspor lembar",
        "export-download": "Raksa pinaka berkas",
        "allmessages": "Séwalapatra sistem",
        "tooltip-diff": "Sinahang uahan sané karyanin jero ring sesuratannyané",
        "tooltip-compareselectedversions": "cingak binane makekalih kepahan lembar sane kasudi",
        "tooltip-watch": "imbuhin lembar niki ring daftar paninjoan ida dane",
-       "tooltip-rollback": "\"nguliang\" muwungan jagi ngabecikang ring lembar puniki nuju haturan sane untat ngangge apisan klik",
+       "tooltip-rollback": "\"Waliang\" wantah ngwangdéang uahan kontributor sané pinih untat ring kaca puniki antuk klik apisan",
        "tooltip-undo": "\"nguliang\" ngabuwungin jagi ngabecikang niki lan ngagah kotak mecikang ngangge mode pratayang. dasar ipun prasida kaimbuhin ring kotak pamicutet",
        "tooltip-summary": "Dagingin ringkesan",
        "simpleantispam-label": "Pamariksa anti-spam.\nPuniki <strong>wenten</strong> kaisi!",
        "pageinfo-header-basic": "Pidarta kaca",
        "pageinfo-header-edits": "Babad uahan",
        "pageinfo-header-restrictions": "Saiban kaca",
-       "pageinfo-header-properties": "Properti suratan",
-       "pageinfo-display-title": "Edengang judul",
+       "pageinfo-header-properties": "Properti kaca",
+       "pageinfo-display-title": "Murda tampilan",
+       "pageinfo-default-sort": "Kunci urut sané baku",
        "pageinfo-length": "Dawannyané kaca (ring bita)",
        "pageinfo-namespace": "Genah wastan",
        "pageinfo-article-id": "ID kaca",
        "pageinfo-language": "Basa ring daging kaca",
        "pageinfo-content-model": "Modél antuk daging kaca",
+       "pageinfo-robot-policy": "Kaindéksang antuk robot",
        "pageinfo-robot-index": "Kalugra",
        "pageinfo-robot-noindex": "Tan kalugra",
        "pageinfo-watchers": "Akéh nomér sané negdeg kaca",
        "pageinfo-few-watchers": "Kirang saking $1 {{PLURAL:$1|tamiu}}",
        "pageinfo-redirects-name": "Akéh nomer sané magingsir ka kaca puniki",
        "pageinfo-subpages-name": "Kapahan kaca saking kaca puniki",
+       "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|kaalihang}}; $3 {{PLURAL:$3|nénten-kaalihang}})",
        "pageinfo-firstuser": "Sang makarya kaca",
        "pageinfo-firsttime": "Galah ritatkala ngripta kaca",
        "pageinfo-lastuser": "Panguwah sané pinih anyar",
        "pageinfo-authors": "Akéh nomer makasami antuk panyurat sané lianan",
        "pageinfo-recent-edits": "Akéh nomer sané kauwah (ring $1 sané sampun lintang)",
        "pageinfo-recent-authors": "Akéh nomer antuk panyurat sané lianan",
+       "pageinfo-magic-words": "{{PLURAL:$1Kruna}} sakti ($1)",
+       "pageinfo-hidden-categories": "{{PLURAL:$1|Kategori}} sané kaengkebang ($1)",
+       "pageinfo-templates": "Katranslusi {{PLURAL:$1|template|templates}} ($1)",
        "pageinfo-toolboxlink": "Pidarta kaca",
        "pageinfo-contentpage": "Kapeték dados kaca daging",
        "pageinfo-contentpage-yes": "Inggih",
+       "patrol-log-page": "Log patroli",
        "previousdiff": "← Uahan sadurungnyané",
        "nextdiff": "Uahan sané pinih anyar →",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|kaca}}",
        "external_image_whitelist": "#banggiang baris niki sapunapi kawentenanne<pre>\n#anggen fragmen akspresi reguler (wantah kepahan ring kekelaih//) ring sor puniki\n#fragmen-fragmen puniki jagi kaadungang sareng URL saking gambar-gambar eksternal (sane kasambungang langsung)\n#fragmen sane adung jagi katampilang dados gambar, sisanne wantah dados pranala kewanten\n#baris sane kakawitin antuk # jagi kadadosang baris komentar\n#niki nenten ngabinayang aksara ageng lan alit\n#genahang samian fragmen ekspresi reguler ring sor baris puniki. banggiang baris niki sapunapi kawentennane</pre>",
        "tag-filter": "filter [[Special:Tags|tag]]:",
        "tag-list-wrapper": "[[Special:Tags|{{PLURAL:$1|Tag}}]]: $2",
+       "tag-mw-rollback": "Waliang",
+       "tag-mw-rollback-description": "Uahan sané ngwaliang uahan sadurungnyané nganggén pranala waliang",
        "tags-active-yes": "Inggih",
        "tags-active-no": "Nénten",
        "tags-edit": "uah",
        "logentry-delete-delete": "$1 {{GENDER:$2|ngusapin}} kaca $3",
        "logentry-delete-restore": "$1 {{GENDER:$2|ngwalikan}} kaca $3 ($4)",
        "logentry-delete-revision": "$1 {{GENDER:$2|mauah}} kaca utama {{PLURAL:$5|$5  pamecikan}} ring kaca $3: $4",
-       "revdelete-content-hid": "dagingnyané kaengkebang",
+       "revdelete-content-hid": "daging kaengkebang",
        "logentry-move-move": "$1 {{GENDER:$2|ngingsirang}} kaca $3 ring $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|maglisiran}} kaca $3 ka $4 tur nenten ngawe pengalihan",
        "logentry-move-move_redir": "$1 {{GENDER:$2|maglisiran}} kaca $3 ka $4 tur nenten ngawe pengalihan",
+       "logentry-patrol-patrol-auto": "$1 otomatis {{GENDER:$2|kacihnayang}} sampun kabecikang $4 saking kaca $3 kaawasin",
        "logentry-newusers-create": "Akun sang anganggé $1 {{GENDER:$2|kakaryanin}}",
        "logentry-newusers-autocreate": "Akun sang anganggé $1 {{GENDER:$2|kakaryanin}} otomatis",
        "logentry-protect-protect": "$1 {{GENDER:$2|nyaibin}} $3 $4",
index 485c9fe..1a0775b 100644 (file)
        "dberr-again": "Изчакайте няколко минути и опитайте да презаредите.",
        "dberr-info": "(Няма достъп до базата от данни: $1)",
        "dberr-info-hidden": "(Няма връзка със сървъра на базата данни)",
-       "htmlform-invalid-input": "Има проблеми с част от въведения от вас вход",
+       "htmlform-invalid-input": "Има проблеми с част от въведения от вас текст",
        "htmlform-select-badoption": "Посочената от вас стойност не е валидна алтернатива.",
        "htmlform-int-invalid": "Въведената от вас стойност не е цяло число.",
        "htmlform-float-invalid": "Посочената стойност не е число.",
        "htmlform-int-toolow": "Посочената от вас стойност е под минимално допустимата $1.",
        "htmlform-int-toohigh": "Посочената от вас стойност надхвърля максимално допустимата $1.",
-       "htmlform-required": "Тази стойност се изисква",
+       "htmlform-required": "Тази стойност е задължителна.",
        "htmlform-submit": "Изпращане",
        "htmlform-reset": "Отказване на промените",
        "htmlform-selectorother-other": "Друга",
index b64046b..bfed435 100644 (file)
        "checkbox-all": "Pêro",
        "checkbox-none": "Çıniyo",
        "checkbox-invert": "Dimlaşt ke",
-       "allpages": "Perri pêro",
+       "allpages": "Peli pêro",
        "nextpage": "Pela bahdoyêne ($1)",
        "prevpage": "Pela veri ($1)",
        "allpagesfrom": "Herfa kı pa liste bo:",
index d2c74f5..ae53416 100644 (file)
        "exif-scenetype-1": "Direktefotografert bilde",
        "exif-customrendered-0": "Normal prosess",
        "exif-customrendered-1": "Tilpasset prosess",
+       "exif-customrendered-2": "HDR (ingen original lagret)",
+       "exif-customrendered-3": "HDR (original lagret)",
+       "exif-customrendered-4": "Original (for HDR)",
+       "exif-customrendered-6": "Panorama",
+       "exif-customrendered-7": "Portrett-HDR",
+       "exif-customrendered-8": "Portrett",
        "exif-exposuremode-0": "Automatisk eksponering",
        "exif-exposuremode-1": "Manuell eksponering",
        "exif-exposuremode-2": "Automatisk alternativeksponering",
index 41b2293..3d0e385 100644 (file)
        "tog-useeditwarning": "M’avertir quand je quitte une page en cours de modification sans avoir sauvegardé",
        "tog-prefershttps": "Toujours utiliser une connexion sécurisée lorsque je suis connecté",
        "tog-showrollbackconfirmation": "Afficher une demande de confirmation en cliquant sur un lien d’annulation",
+       "tog-requireemail": "Nécessiter un courriel pour les réinitialisations de mot de passe",
        "underline-always": "Toujours",
        "underline-never": "Jamais",
        "underline-default": "Valeur par défaut du thème ou du navigateur",
        "prefs-help-email": "L'adresse de courriel est facultative, mais elle est nécessaire pour réinitialiser votre mot de passe, en cas d'oubli.",
        "prefs-help-email-others": "Vous pouvez aussi choisir de laisser les autres vous contacter par courriel via un lien sur votre page de discussion ou page utilisateur. \nVotre adresse courriel n'est pas révélée quand les autres utilisateurs vous contactent.",
        "prefs-help-email-required": "Une adresse de courriel est requise.",
+       "prefs-help-requireemail": "Si coché, enverra seulement les courriels de réinitialisation des mots de passe si la personne qui réinitialise a fourni à la fois un nom d’utilisateur et un courriel pour ce compte.",
        "prefs-info": "Informations de base",
        "prefs-i18n": "Internationalisation",
        "prefs-signature": "Signature",
        "ipblocklist-legend": "Chercher un utilisateur bloqué",
        "blocklist-userblocks": "Masquer les blocages de comptes",
        "blocklist-tempblocks": "Masquer les blocages temporaires",
+       "blocklist-indefblocks": "Masquer les blocs non définis",
        "blocklist-addressblocks": "Masquer les blocages d’adresses IP uniques",
        "blocklist-type": "Type :",
        "blocklist-type-opt-all": "Tous",
index d8dffa5..38139ab 100644 (file)
        "systemblockedtext": "O seu nome de usuario ou enderezo IP foi bloqueado automaticamente polo sistema MediaWiki.\nO motivo do bloqueo é:\n\n:<em>$2</em>\n\n* Comezo do bloqueo: $8\n* Expiración do bloqueo: $6\n* Destinatario do bloqueo: $7\n\nO seu enderezo IP actual é $3.\nPor favor, inclúa todos estes detalles en calquera consulta que realice.",
        "blockednoreason": "non se deu ningunha razón",
        "blockedtext-composite": "<strong>O seu nome de usuario ou enderezo IP foron bloqueados.</strong>\n\nO motivo dado é:\n\n:<em>$2</em>.\n\n* Comezo do bloqueo: $8\n* Remate do bloqueo máis longo: $6\n\n* $5\n\nO seu enderezo IP actual é $3.\nPor favor, inclúa todos os detalles de arriba en calquera contacto sobre este asunto.",
+       "blockedtext-composite-ids": "Identificadores de bloqueo relevantes: $1 (o seu enderezo IP pode atoparse tamén nalgunha lista negra)",
        "blockedtext-composite-no-ids": "O seu enderezo IP aparece en múltiples listas negras",
        "blockedtext-composite-reason": "Existen varios bloqueos contra a súa conta ou enderezo IP",
        "whitelistedittext": "Debe $1 para poder editar páxinas.",
        "nocreate-loggedin": "Non ten os permisos necesarios para crear páxinas novas.",
        "sectioneditnotsupported-title": "A edición de seccións non está soportada",
        "sectioneditnotsupported-text": "A edición de seccións non está soportada nesta páxina.",
+       "modeleditnotsupported-title": "Non se permite a edición",
        "permissionserrors": "Erro de permisos",
        "permissionserrorstext": "Non ten os permisos necesarios para facelo {{PLURAL:$1|pola seguinte razón|polas seguintes razóns}}:",
        "permissionserrorstext-withaction": "Non ten os permisos necesarios para $2, {{PLURAL:$1|pola seguinte razón|polas seguintes razóns}}:",
index 2a427a2..9a45be1 100644 (file)
        "tog-previewonfirst": "पयल्याच संपादनाचेर पुर्वनियाळ दाखय",
        "tog-enotifwatchlistpages": "म्हज्या सादुरवळेरेंतलें पान वा फायल बदल्ली जाल्यार म्हाका इमेल करात",
        "tog-shownumberswatching": "ध्यान दवरपी वांगड्यांची संख्या दाखय",
-       "tog-oldsig": "सद्याची निशाणी",
-       "tog-uselivepreview": "लायव à¤ªà¥\81रà¥\8dवनियाळाà¤\9aà¥\8b à¤µà¤¾à¤ªà¤°",
+       "tog-oldsig": "तà¥\81à¤\9cà¥\8dया à¤¸à¤§्याची निशाणी",
+       "tog-uselivepreview": "पान à¤ªà¤°à¤¤ à¤\89à¤\97डनासताना à¤\9dलà¤\95 à¤¦à¤¾à¤\96य",
        "tog-watchlisthideown": "सादुरवळेरीतलें म्हजे संपादन लिपय",
        "tog-watchlisthidebots": "ध्यानसुचीतले रोबोट संपादन लिपय",
        "tog-watchlisthideminor": "सादुरवळेरीतले ल्हान संपादन लिपय",
        "tog-showhiddencats": "लिपोवन दवरिल्ले विभाग दाखय",
        "underline-always": "सदा (केधन्नय) (केन्नय)",
        "underline-never": "केधन्नयना (केन्नना)",
-       "underline-default": "बà¥\8dराà¤\89à¤\9c़र à¤¡à¤¿à¤«à¤¼à¥\89लà¥\8dà¤\9f",
+       "underline-default": "सà¥\8dà¤\95à¥\80न à¤µà¤¾ à¤¬à¥\8dरावसरा à¤ªà¥\8dरमाणà¥\87à¤\82",
        "sunday": "आयतार",
        "monday": "सोमार",
        "tuesday": "मंगळार",
        "category_header": "\"$1\" ह्या वर्गातलीं पानां",
        "subcategories": "उपवर्ग",
        "category-media-header": "\"$1\" वर्गातलें प्रसार माध्यम",
+       "category-empty": "<em>ह्या वर्गान सध्या एकूय पान वा माध्यम ना.</em>",
        "hidden-categories": "{{PLURAL:$1|लिपिल्लें वर्ग|लिपिल्लें वर्ग }}",
        "hidden-category-category": "लिपयिल्ले विभाग",
        "category-subcat-count": "{{PLURAL:$2|ह्या वर्गान फकत सकयल दिल्ले उपविभाग आसात.|ह्या वर्गातल्या $2 वट्ट {{PLURAL:$1|सकयल दिल्ले उपवर्ग आसात.|$1सकयल दिल्ले उपवर्ग आसात.}}}}",
        "category-article-count": "{{PLURAL:$2|ह्या वर्गांत सकयल दिल्लीं पानां आसात.|ह्या वर्गांत सकलय दिल्लीं {{PLURAL:$1|पानां आसात|$1 पानां आसात}}, वट्ट पानां $2}}",
        "category-file-count": "{{PLURAL:$2|ह्या वर्गांत फकत सकयली फायल आसपावता.|ह्या वर्गांत सकयल दिल्लीं {{PLURAL:$1|फायल|$1 फायलीं}} आसता, वट्ट फायलीं $2}}",
        "listingcontinuesabbrev": "चालू.",
-       "noindex-category": "बिननिरà¥\8dदà¥\87शाà¤\82à¤\95à¥\80 पानां",
+       "noindex-category": "सà¥\81à¤\9aà¥\80पतà¥\8dरान à¤\9cà¥\8bडà¥\82à¤\82à¤\95-नासलà¥\87लà¥\80à¤\82 पानां",
        "broken-file-category": "तुटलेल्या फायलींचो दुवे आसलेलीं पानां",
        "about": "विशीं",
        "article": "मजकूराचीं पानां",
        "newwindow": "(नव्या ज़ोणेलांत उकतें जाता)",
        "cancel": "रद्द करात",
        "moredotdotdot": "आनीक",
-       "morenotlisted": "हà¥\80 à¤¸à¥\82à¤\9aà¥\80 à¤ªà¥\82रà¥\8dण à¤¨à¤¾",
+       "morenotlisted": "हà¥\80 à¤¸à¥\81à¤\9aà¥\80 à¤ªà¥\82रà¥\8dण à¤¨à¤¾à¤¸à¥\82à¤\82à¤\95 à¤¶à¤\95à¥\8dता.",
        "mypage": "पान",
        "mytalk": "चर्चा",
        "navigation": "दिशा-नियंत्रण",
        "privacypage": "Project:गुप्ततायेचें धोरण",
        "ok": "बरें",
        "retrievedfrom": "\"$1\" चे कडल्यान परतून मेळयलें",
+       "youhavenewmessages": "{{PLURAL:$3|तुमकां}} $1 ($2) आसात.",
+       "youhavenewmessagesfromusers": "तुका {{PLURAL:$3एक वापरपी|$3 वापरपी}} कडल्यान $1 {{PLURAL:$4|आसा|आसात}} ($2).‎",
+       "newmessageslinkplural": "{{PLURAL:$1|नवो संदेश|999=नवे संदेश}}‎",
+       "newmessagesdifflinkplural": "{{PLURAL:$1|निमाणो बदल|999=निमाणे बदल}}",
        "youhavenewmessagesmulti": "$1 चेर तुका नवो संदेश आसा",
        "editsection": "बदल",
        "editold": "बदल",
        "collapsible-expand": "विस्तार",
        "confirmable-yes": "हय",
        "confirmable-no": "ना",
-       "thisisdeleted": "पळय आनी परतून हाड 1?",
+       "thisisdeleted": "$1 पळय वा परत हाड?",
        "viewdeleted": "दाखयात $1?",
        "feedlinks": "पुरवय :",
        "feed-invalid": "चुकीचें सब्सक्रिप्शन फीड प्रकार",
        "databaseerror-textcl": "डॅटाबेज विरोध त्रुटी आयिल्ली आसा",
        "databaseerror-query": "अनुरोध: $1",
        "databaseerror-error": "चूक: $1",
-       "missing-article": "डेटाबेजाक \"$1\" $2 ह्या नांवाचें जे मजकूराचें पान मेळूंक जाय आसलें तें मेळ्ळेंना. हें चड करून जेन्ना काडून उडयिल्ल्या पानाक मुजत सोंपिळ्ळे डिफ वा इतिहासाचो दुवो दिवप जाता तेन्ना घडटा..जर अशें नासत तर तुमकां सॉफ्टवेरांत चूक सांपडूंक जाय हें अँडमिनिस्ट्रेटराक URLची नोंद करून कळयात.",
+       "missing-article": "डेटाबेजाक \"$1\" $2 ह्या नांवाचें जे मजकूराचें पान मेळूंक जाय आसलें तें मेळ्ळेंना. हें चड करून जेन्ना काडून उडयिल्ल्या पानाक मुजत सोंपिळ्ळे डिफ वा इतिहासाचो दुवो दिवप जाता तेन्ना घडटा..जर अशें नासत तर तुमकां सॉफ्टवेरांत चूक सांपडूंक जाय हें अँडमिनिस्ट्रेटराक URLची नोंद करून कळयात.\n\n\nम्हायतीकोश (Database) हांतूत मेळूंक जाय आसलें तें मजकूर \"$1\" $2 मेळूंक नां.\n\nहरर्शीं, अशें एक पोरणें एक फरक वा एका पानाच्या इतिहासाचो दुवो काडून उडयला, तेन्ना जाता.\n\nअशें न्हय जाल्यार, तुका सोफ्टवेरान चूक सांपडलेया जायत.\nउपकार करून एका [[Special:ListUsers/sysop|कार्भारीच्या]] नतरेक हाड, अतरजाळ्यांत जागो सोदपी (यु. आर. एल.) हाची नोंद घेवन.",
        "missingarticle-rev": "पुनर्नियाळ $1",
        "badtitle": "चुकीचो माथाळो",
        "badtitletext": "विनवणी केल्लें पानाचो माथाळो अवैध, रितो वा अयोग्य तरेन आंतरभाशी वा आंतर विकी माथाळ्या कडे जोडिल्लो आशिल्लो. तातूंत माथाळ्यांत वापरुं नजो अशी एक वा चड अक्षरां आसूं येतात.",
        "loginerror": "लॉन इन त्रुटी",
        "createacct-error": "खातें निर्माण त्रुटी",
        "createaccounterror": "खातें तयार करूंक जायना: $1",
-       "loginsuccesstitle": "लà¥\89न à¤\87न à¤¯à¤¶à¤¸à¥\8dवà¥\80 à¤\9cालां",
+       "loginsuccesstitle": "सतà¥\8dरारà¤\82भ à¤\9cालà¥\87ं",
        "nosuchusershort": "\"$1\" ह्या नांवान कोण वापरपी ना.\nउतरां तपासून पळय",
        "nouserspecified": "वापरप्याचें नांव तुवें सांगूंक जाय",
        "login-userblocked": "ह्या वापरप्याक बंद केला. लॉग इन करूंक जायना.",
-       "wrongpassword": "à¤\9aà¥\81à¤\95िà¤\9aà¥\87à¤\82 à¤\97à¥\81पà¥\80त à¤\89तर à¤\98ातलाà¤\82.\nà¤\89पà¤\95ार à¤\95रà¥\82न à¤ªà¤°à¤¤à¥\82न यत्न कर.",
+       "wrongpassword": "à¤\9aà¥\81à¤\95à¥\80à¤\9aà¥\87à¤\82 à¤µà¤¾à¤ªà¤°à¤ªà¥\8dयाà¤\9aà¥\87à¤\82 à¤¨à¤¾à¤\82व à¤µà¤¾ à¤\97à¥\81पà¥\80तà¤\89तर à¤\98ातलाà¤\82.\nà¤\89पà¤\95ार à¤\95रà¥\82न à¤ªà¤°à¤¤à¥\82न à¤ªà¥\8dरयत्न कर.",
        "wrongpasswordempty": "गुपीत उतर घालूंक ना.\nउपकार करून परतून यत्न कर.",
        "passwordtoolong": "गुपीत उतर हाच्या परस चड व्हड आसूंक फावना{{PLURAL:$1|1 वर्ण|$1 वर्णां}}.",
        "password-name-match": "तुजें गुपीत उतर वापरप्याच्या नांवा परस वेगळें आसूंक जाय.",
        "emaildisabled": "ही साइट मेल धाडपाक शकना.",
        "accountcreated": "खातें तयाओर केलें",
        "createaccount-title": "{{SITENAME}} हाका लागून खातें तयार केलां",
-       "login-abort-generic": "तà¥\81मà¤\9aà¥\87à¤\82 à¤²à¥\89à¤\97 à¤\87न à¤\85पà¥\87शà¥\80 à¤¥à¤¾à¤°à¤²à¤¾à¤\82 - à¤¨à¤¿à¤¶à¥\8dफलीत",
+       "login-abort-generic": "तà¥\81à¤\9cà¥\87à¤\82 à¤¸à¤¤à¥\8dरारà¤\82भ à¤\85पà¥\87शà¥\80 à¤¥à¤¾à¤°à¤²à¤¾à¤\82 â\80\93 à¤¨à¤¿à¤¶à¤«à¤³ीत",
        "login-migrated-generic": "तुमचें खातें स्थलांतरीत जालां आनी तुजें वापरप्याचें नांव ह्या विकीचेर उपस्थीत ना.",
        "loginlanguagelabel": "भास:$1",
        "pt-login": "सत्रारंभ",
        "newpassword": "नवें गुपीत उतर",
        "retypenew": "नवें गुपीत उतर परतून टाइप कर",
        "resetpass_submit": "गुपीत उतर तयार कर आनी लॉग इन कर",
-       "changepassword-success": "तुजें गुपीत उतर बदलप यशस्वी थारलां",
+       "changepassword-success": "तुजें गुपीतउतर बदल्लां!",
        "resetpass_forbidden": "गुपीत उतरां बदलूंक शकनात",
        "resetpass-submit-loggedin": "गुपीत उतर बदलात",
        "resetpass-submit-cancel": "रद्द करात",
        "passwordreset-domain": "डोमेन:",
        "passwordreset-email": "ईमेल नामो:",
        "passwordreset-emailelement": "वापरप्याचें नांव: \n$1\n\nतात्पुरतें गुपीत उतर: \n$2",
-       "passwordreset-emailsentemail": "à¤\97à¥\81पà¥\80त à¤\89तर à¤ªà¤°à¤¤à¥\82न à¤¤à¤¯à¤¾à¤° à¤\95रपाà¤\9aà¥\8b à¤\88मà¥\87ल à¤§à¤¾à¤¡à¤²à¤¾",
-       "changeemail": "à¤\88मà¥\87ल à¤¸à¤\82दà¥\87श à¤¬à¤¦à¤²à¥\8dला",
+       "passwordreset-emailsentemail": "हà¥\8b à¤\88मà¥\87ल à¤ªà¤¤à¥\8dतà¥\8b à¤¤à¥\81à¤\9cà¥\8dया à¤¹à¤¿à¤¶à¥\8bबाà¤\82त à¤\9cà¥\8bडलà¥\8bलà¥\8bà¤\82 à¤\86सा à¤\9cालà¥\8dयार, à¤\97à¥\81पà¥\80तà¤\89तर à¤ªà¤°à¤¤à¥\82न à¤¥à¤¾à¤°à¤¾à¤µà¤ªà¤¾à¤\9aà¥\8b à¤\88मà¥\87ल à¤§à¤¾à¤¡à¤²à¥\87लà¥\87à¤\82 à¤\9cातà¥\87लà¥\87à¤\82.",
+       "changeemail": "à¤\88मà¥\87ल à¤ªà¤¤à¥\8dतà¥\8b à¤¬à¤¦à¤² à¤µà¤¾ à¤\95ाड",
        "changeemail-oldemail": "सद्याचो ईमेल नामो:",
        "changeemail-newemail": "नवो ईमेल नामो:",
        "changeemail-none": "(कांय ना)",
        "showpreview": "पूर्वनियाळ दाखय",
        "showdiff": "बदल दाखयात",
        "anoneditwarning": "'''शिटकावणी:''' तुवें सत्रारंभ करूंक ना.\nतुजो IP पत्तो ह्या पानाच्या संपादन इतिहासांत नोंद जातलो.जर तुमी <strong>[$1 सत्रारंभ]</strong> करता वा <strong>[$2 खातें उगडटा]</strong> जाल्यार हेर सुविधांसयत तुमच्या संपादनाचें श्रेय तुमच्या सदस्य नांवाचेर दितलें.",
-       "missingcommenttext": "à¤\89पà¤\95ार à¤\95रà¥\82न à¤¤à¥\81मà¤\9aà¥\8dयà¥\8b à¤¶à¤¿à¤°à¥\8b à¤¸à¤\95यल à¤\98ाल.",
+       "missingcommenttext": "à¤\89पà¤\95ार à¤\95रà¥\82न à¤¤à¥\81à¤\9cà¥\8b à¤¶à¥\87रà¥\8b à¤¬à¤°à¤¯.",
        "blockedtitle": "वापरप्याक बंद केला",
+       "blockedtext": "<strong>तुजें वापरप्याचें नांव वा आय पा पत्तो आडावपांत आयला.</strong>\n\nआडावप $1 हाणें केलां.\nकारण दिलां तें <em>$2</em>.\n\n* आडावपाची सुरवात: $8\n* आडावप सोंपोवपाचो वेळ: $6\n* आडावपाक येवजिला: $7\n\nतुज्यान $1-आक वा दूसऱ्या [[{{MediaWiki:Grouppage-sysop}}|कारभार्याक]] आडावणे विशीं भासाभास करुंक संपर्क करुंक जाता. तुज्यान \"{{int:emailuser}}\" सभावगूण वापरुंक जायना खेरीज एक वैद ईमेल पत्तो तुज्या [[Special:Preferences|खातें पसंतिंत]] निशचीत केल्या शिवाय आनी तुका तें वापरपाक आडावंक ना जाल्यार. तुजो चालंत IP पत्तो आसा $3, आनी आडावणेच्यो आंक #$5 आसा. सगळ्यो वयल्यो बारिकसाणी तूं करताय त्या विचारांत समावेश कर.",
        "blockednoreason": "कांयच कारण दिवंक ना",
        "loginreqtitle": "लॉग इन जाय",
        "loginreqlink": "सत्रारंभ करात",
        "accmailtitle": "गुपीत उतर धाडलां",
        "newarticle": "(नवें)",
        "newarticletext": "जें पान अजून अस्तित्वांत ना अशा पानाचे दुवे फाटल्यान तुमी आसात. पान रचपाक सकयले चौकटींत टायप करपाक सुरु करात (चड म्हायती खातीर [$1 आदाराचें पान] पळेयात) जर ह्या पानार तुमी चुकून पावल्यात तर ब्रावजराचो बॅक (<strong>फटीं</strong>) हो बटन दामात",
+       "anontalkpagetext": "----\n<em>हें भासाभासेचें पान एक निनामी वापरप्याक जाणें अजून एक खातें उगडुंक ना, वो तो तें वापर्ना.</em>\nह्या खातीर आमकां आंकड्यांचो IP पत्तो वापरुंक पडता ताका वळखुंक.\nतसलो IP पत्तो साबार वापरप्यानी वापरूं येता.\nतूं जर एक निनामी वापरपी आसा आनी तुका दिसता की तुमका संबंद नासलेले शेरे तुजे विशीं केल्यात, उपकार करून [[Special:CreateAccount|एक खातें रच]] वा[[Special:UserLogin|सत्रारंभ कर]] फुडले गुस्पप निनामी वापरप्या ताळूंक.‎",
        "noarticletext": "सध्याक हें पान रिंते आसा.\nतुज्यान दूसऱ्या पानानी [[Special:Search/{{PAGENAME}}| ह्या पानाचे नांव सोदूंक जाता]], <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAME}}}} संबंधी सत्रानी सोदूंक जाता], वा [{{fullurl:{{FULLPAGENAME}}|action=edit}} हें पान रचूंक जाता]</span>.",
        "noarticletext-nopermission": "तुर्ताक ह्या पानाचेर कसलोच मजकूर ना. तुमी हेर पानांचेर [[Special:Search/{{PAGENAME}}|ह्या माथाळ्याचो सोद]] घेवं शकतात,\nवा <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} संबंदीत लॉग सोदूं शकतात]</span>, पूण तुमकां हें पानाची रचणूक करपाची परवानगी ना।",
        "userpage-userdoesnotexist-view": "\"$1\" ह्या वापरप्याच्या खात्याची नोंदणी करूंक ना.",
+       "clearyourcache": "<strong>चत्राय:</strong> सांबाळ्ळ्या उपरांत, तुका घडयेक तुज्या ब्रावसराचो कॅश कडसरावंक पडत बदल पळोंवचे खातीर.\n* <strong>Firefox / Safari:</strong> <em>Shift</em> > धर <em>Reload</em> क्लीक करताना, वा दाम <em>Ctrl-F5</em> वा <em>Ctrl-R</em> (<em>⌘-R</em> मॅक-आचेर)\n* <strong>Google Chrome:</strong> <em>Ctrl-Shift-R</em> दाम (<em>⌘-Shift-R</em> एका मॅक-आचेर)\n* <strong>Internet Explorer:</strong> <em>Ctrl</em> dhor <em>Refresh</em> क्लीक करताना, वा दाम <em>Ctrl-F5</em>\n* <strong>Opera:</strong> हांगा वच: <em>Menu → Settings</em> (<em>Opera → Preferences</em> मॅक-आचेर) आनी उपरांत <em>Privacy & security → Clear browsing data → Cached images and files</em>.‎",
        "previewnote": "'''ही फकत एक दाखवण हें मतींत दवरात.'''\nतुमचें बदल आडून राखून दवरूंक ना!",
+       "continue-editing": "संपादन करपाच्या जाग्यार वच",
        "editing": "संपादता $1",
        "creating": "$1 रोचता",
        "editingsection": "(विभाग) $1 संपादन",
        "yourtext": "तुमचो मजकूर",
        "templatesused": "ह्या पानाचेर {{PLURAL:$1|वापरिल्लें}} सांचे",
+       "templatesusedpreview": "{{PLURAL:$1सांचो|सांचे}} ह्या झलकेंत वापरल्यात:‎",
        "template-protected": "(राखिल्लें)",
        "template-semiprotected": "(अर्द-सुरक्षीत)",
        "hiddencategories": "हें पान {{PLURAL:$1|लिपिल्ले वर्गाचें}} आसा",
+       "permissionserrors": "परवांगेची चूक",
        "permissionserrorstext-withaction": "ह्या {{PLURAL:$1|कारण|कारणां}}: खातीर तुका $2 मान्यताय ना.",
        "recreate-moveddeleted-warn": "शिटकावणीः तुमी आदीं काडून उडयिल्लें पान परतून तयार करतात ह्या पानाचे फासून उडोवपी आनी दुसरे कडे व्हरपी लाग फकत सोपेपणा खातीर दिल्यात",
        "moveddeleted-notice": "हें पान काडून उडयला.\nह्या पानाचें काडून उडोवपाचें, राखपाचें, आनी हालोवपाचें सत्र  संदर्भा खातीर सकयल दिला.",
        "post-expand-template-inclusion-category": "जंय सांचे धरून आवांठ व्हड जाता अशीं पानां",
        "post-expand-template-argument-warning": "<strong>शिटकावणीः</strong> ह्या पानाचेर खुब व्हड आंवाठ आशिल्लो एक तरी सांच्याचो मुद्दो आसा. हे मुद्दे भायरायल्यात",
        "post-expand-template-argument-category": "भायरायिल्ल्या सांच्यांसंबंदीचे मुद्दे आशिल्लीं पानां",
+       "undo-failure": "बदल परतावूंक जावंक ना कित्याक गुस्पणेचे मदले बदल आसात.",
        "viewpagelogs": "ह्या पाना खातीर सोत्रां पळेयात",
        "currentrev-asof": "$1 मेरेनचो सगळ्यांत निमणो पुनर्नियाळ",
        "revisionasof": " $1 मेरेन पुनर्नियाळ",
        "page_last": "निमणें",
        "histlegend": "फरकाची निवडणी : पुनर्नियाळांची तुळा करपा खातीर रेडियो चौकटीं चेर कुरु करात आनी ''एंटर'' ना तर तळाकडे आशिल्लो बुतांव दामात।<br />\nविवरण : <strong>({{int:cur}})</strong> = हालींची पुनर्नियाळा बरोबर फरक, <strong>({{int:last}})</strong> = आदली पुनर्नियाळा बरोबर फरक, <strong>{{int:minoreditletter}}</strong> = दाक्टें बदल।",
        "history-fieldset-title": "उजळण्यो चाळ",
-       "history-show-deleted": "फà¤\95त à¤\95ाडà¥\82न à¤\89डयिलà¥\8dलें",
+       "history-show-deleted": "फà¤\95त à¤\89à¤\9cळणà¥\80 à¤\95ाडà¥\82न à¤\89दयलà¥\87लें",
        "histfirst": "पोरणो",
        "histlast": "नवो ताल्ल",
+       "history-feed-title": "पुनर्नियाळाचो इतिहास",
+       "history-feed-description": "विकीचेर ह्या पाना खातीर पुनर्नियाळाचो इतिहास",
        "history-feed-item-nocomment": "$1 हांगा $2",
        "rev-delundel": "दृश्य मानताय बदलात",
        "rev-showdeleted": "दाखयात",
        "revdel-restore": "दृश्य मानताय बदलात",
        "pagehist": "पानाचो इतिहास",
        "mergehistory-reason": "कारण:",
+       "mergelog": "विलीन करपाचें सत्र",
        "revertmerge": "वेगळावप",
        "history-title": "\"$1\" च्या पुनर्नियाळाचो इतिहास",
        "difference-title": "\"$1\" च्या आवृत्तींत अंतर",
        "lineno": "$1 वळ :",
        "compareselectedversions": "वेंचिल्ल्या पुनर्नियाळांची तुळा करात",
        "editundo": "केल्लें परतावचें",
+       "diff-empty": "(कांय फरक ना)‎",
        "diff-multi-sameuser": "(ह्या वांगड्या सयत {{PLURAL:$1|केल्लें मदलें एक अवतरण दाखोवंक ना|केल्लें मदलें $1 अवतरण दाखोवंक ना}})",
+       "diff-multi-otherusers": "({{PLURAL:$2|एक हेर वापरप्या|$2 हेर वापरप्यां}} वर्वीं {{PLURAL:$1|एक मदली उजळणी|$1 मदल्यो उजळण्यो}} दाखोवंक ना)‎",
        "searchresults": "सोदाचो निकाल",
        "searchresults-title": "\"$1\" हाच्या सोदाचे परिणामां",
        "prevn": "आदलें{{PLURAL:$1|$1}}",
        "searchprofile-everything-tooltip": "सगळो मजकूर सोदात(चर्चेचें पाना सयत)",
        "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-result-category-size": "{{PLURAL:$1|$1 वांगडी}} ({{PLURAL:$2|$2 उपवर्ग}}, {{PLURAL:$3|1 फायल|$3 फायली}})",
        "search-redirect": "($1 सावन पुनर्निर्देशीत)",
        "search-section": "(विभाग $1)",
+       "search-file-match": "(फायलीच्या मजकुराक जुळटा)‎",
        "search-suggest": "तुमकां $1 अशें म्हणपाचें आसलें?",
        "search-rewritten": "$1 हाचो निकाल दाखयता.नाजाल्यार $2 हें सोदात.",
        "search-interwiki-more": "(आनी)",
        "prefs-watchlist": "सादुरवळेरी",
        "youremail": "इमेल",
        "yourrealname": "खरें नांवः",
+       "group-bot": "रोबोटां",
+       "group-sysop": "कारभारी",
+       "grouppage-bot": "{{ns:project}}:रोबोटां",
+       "grouppage-sysop": "{{ns:project}}:कारभारी",
        "right-writeapi": "Write API चो उपेग",
        "newuserlogpage": "वापरपी रोचनेचे वळेरी",
+       "rightslog": "वापरप्याच्या हकांचो सत्र",
        "action-edit": "हें पान संपादीत कर",
-       "nchanges": "$1 {{PLURAL:$1|बदल|बदल}}",
+       "action-createaccount": "हें वापरप्याचें खातें रच",
+       "nchanges": "$1 {{PLURAL:$1|बदल}}",
        "enhancedrc-history": "इतिहास",
        "recentchanges": "हालींचे बदल",
        "recentchanges-legend": "हालींच जाल्ल्या बदलाचो विकल्प",
        "rcshowhideanons": "$1 निनांवी वापरपी",
        "rcshowhideanons-show": "दाखयात",
        "rcshowhideanons-hide": "लिपयात",
+       "rcshowhidepatr": "$1 पारो केलेले सुदारप",
        "rcshowhidepatr-show": "दाखयात",
        "rcshowhidepatr-hide": "लिपयात",
        "rcshowhidemine": "$1 म्हजें संपादन आंकडे",
        "rc-change-size-new": "$1 {{PLURAL:$1|बाय्ट|बाय्टी}} बदल केल्या उपरांत",
        "rc-enhanced-expand": "म्हायती दाखय",
        "rc-enhanced-hide": "म्हायती लिपय",
+       "rc-old-title": "आरंभांत रचलली \"$1\" ह्या नांवान‎",
        "recentchangeslinked": "संबंदित बदल",
        "recentchangeslinked-toolbox": "संबंदीत बदल",
        "recentchangeslinked-title": "\"$1\" च्या संबंदातले बदल",
        "recentchangeslinked-to": "ह्या पाना बदला दिल्ल्या पानांक जडून आशिल्ल्या पानांचे बदल दाखय",
        "upload": "फायल अपलोड करात",
        "uploadbtn": "फायल अपलोड करात",
+       "uploadlogpage": "अपलोडाचें सत्र",
        "filedesc": "सारांश",
        "fileuploadsummary": "आपरोस:",
        "license": "लायसन्सीग",
        "filehist-datetime": "दिस / वेळ",
        "filehist-thumb": "ल्हान-इमाज़",
        "filehist-thumbtext": " $1मेरेनचे आवृत्ती खातीर ल्हान-इमाज़",
+       "filehist-nothumb": "ल्हान-इमाज ना",
        "filehist-user": "वापरपी",
        "filehist-dimensions": "परिमाण",
        "filehist-comment": "शेरो",
        "imagelinks": "फायलिचो वापर",
        "linkstoimage": "{{PLURAL:$1|हें पान|$1 हीं पानां}} ही फायल {{PLURAL:$1|वापरता|वापरतात}}:",
+       "linkstoimage-more": "$1 परस अदीक {{PLURAL:$1|पान वापरता|पानां वापरतात}} ही फायल.\nसकयली वळेरी दाखयता {{PLURAL:$1|पयलें पान|पयलीं $1 पानां}} जें हीच फायल वापरता. एक [[Special:WhatLinksHere/$2|पूर्ण वळेरी]] उपलब्ध आसा.‎",
        "nolinkstoimage": "ह्या फायलीक वापरतात तसलीं पानां नांत.",
+       "linkstoimage-redirect": "$1 (फायल पुनर्देशन) $2",
        "sharedupload-desc-here": "ही फयल $1 हांगाची आनी ती हे प्रकल्पां खातीर वापरल्यार चलता. (तिच्या $2 ह्या फयलींतलें वर्णनाचे पान) तातूंतलें वर्णन सकयल दिलां.",
+       "filepage-nofile": "ह्या नांवाची फायल असतित्वांत ना.",
        "upload-disallowed-here": "तूं ह्या फायलीचेर अधिलेखीत करूंक शकना",
        "randompage": "खंयचेंय पान",
        "statistics": "संख्याशास्त्र",
        "statistics-pages": "पान:",
        "statistics-files": "फायल अपलोड करात",
+       "double-redirect-fixer": "पुनर्निर्देशन थारावपी",
        "brokenredirects-edit": "बदल",
        "brokenredirects-delete": "काडून उडयात",
        "nbytes": "$1 {{PLURAL:$1|बाय्ट}}",
        "nmembers": "$1 {{PLURAL:$1|वांगडी}}",
        "prefixindex": "उपसर्ग आशिल्लीं सगळीं पानां",
-       "usercreated": "$1 ह्या दिसा $2 ह्या वेळार तयार केलें",
+       "listusers": "वापरप्यांची वळेरी",
+       "usercreated": "$3 हाणें $1 दिसा $2 वोराचेर {{GENDER:$3|रचलेलें}}",
        "newpages": "नवीं पानां",
        "move": "हालय",
        "pager-newer-n": "{{PLURAL:$1|नवो 1|नवें $1}}",
        "booksources": "पुस्तकांचो स्त्रोत",
        "booksources-search-legend": "पुस्तकाचे स्त्रोत सोदात",
        "booksources-search": "सोद",
+       "specialloguserlabel": "करपी:",
+       "speciallogtitlelabel": "मोख (माथाळो वा {{ns:user}}:वापरप्याचें नांव):",
        "log": "सोत्रां",
+       "all-logs-page": "सगळीं भौसाचीं सत्रां",
+       "alllogstext": "{{SITENAME}} हाच्यो सगळ्या उपलब्ध सत्रांची एकठांय दाखोवणी.\nतुज्यान तुजो देखावो अर्नूं येता एक सत्राचो प्रकार विंचून, वापरप्याचें नांव (व्हदल्या आनी धाकट्या अक्षरा मदें फरक पडटा), वा पोरणें जालेलें पान (हांगाय व्ह़डले आनी धाक्टे अक्षरा मदें फरक पडटा).‎",
+       "logempty": "सत्रान जुळपी नग नांत.‎",
        "allpages": "सगळीं पाना",
        "nextpage": "फुडलें पान ($1)",
        "prevpage": "फाटलें पान ($1)",
        "allarticles": "सगळीं पानां",
        "allpagessubmit": "वचात",
+       "allpages-hide-redirects": "पुनर्देर्शनां लिपय",
        "categories": "वर्ग",
        "linksearch-ns": "नांवाची सुवात",
        "linksearch-ok": "सोद",
        "listgrouprights-members": "सदस्यांची वळेरी",
        "emailuser": "ह्या वापरप्याक इमेल करात.",
        "emailusername": "वापरप्याचे नांव",
+       "usermessage-editor": "यंत्रणाचो संदेशकार",
        "watchlist": "सादुरवळेरी",
        "mywatchlist": "सादुरवळेरी",
        "watchlistfor2": "$1 $2 खातीर",
        "addedwatchtext": "\"[[:$1]]\" आनी हाचे भासाभास पान तुमचें [[Special:Watchlist|सादुरवळेरेक]] जोडलां.",
        "watch": "नदर दवरात",
        "unwatch": "पळोवंक नासलें",
-       "watchlist-details": "लक्ष {{PLURAL:$1|$1वळेरींतलें|$1 वळेंरींतली}} {{PLURAL:$1|$1पान|$1 पानां}} उलोवपाची पानां सोडून",
+       "watchlist-details": "तुज्या सादूरवळेरिंत {{PLURAL:$1|$1 पान आसा|$1 पानां आसात}} (त्या भायर उलोवपाचीं पानां आसात).",
+       "wlheader-showupdated": "तुज्या फाटले भेटे सावन बदल्ल्यान तीं पानां <strong>दाट</strong> दाखयल्यांत.",
+       "wlnote": "सकयल {{PLURAL:$1|हो निमाणो बदल|हें निमाण्यो <strong>$1</strong> बदल}} निमाण्या {{PLURAL:$2|वोरान|<strong>$2</strong>वोरानीं}}, $3, $4 पर्यान.‎",
        "watchlist-options": "सादुरवळेरींतलो पर्याय",
+       "enotif_reset": "सगळीं पानां भेट दिलेलीं म्हूण खुणाय",
        "delete-legend": "काडून उडयात",
        "actioncomplete": "क्रिया पुराय जाल्या",
        "actionfailed": "क्रिया अपेस जाल्या",
        "changecontentmodel-reason-label": "कारण:",
        "protectlogpage": "सुरक्षितेचें सोत्र",
        "protectedarticle": "राखिल्ले\"[[$1]]\"",
+       "modifiedarticleprotection": "सुरक्षेची पातळी \"[[$1]]\"‎ हाचे खातीर बदल्ल्या",
+       "protect-default": "सगळ्या वापरप्यांक परवांगी दी",
        "restriction-edit": "बदल",
        "restriction-move": "दुसरेकडे व्हरात",
        "restriction-create": "निर्माण कर",
        "mycontris": "योगदान",
        "anoncontribs": "योगदान",
        "contribsub2": "{{GENDER:$3|$1}} हाच्यो ($2)",
+       "nocontribs": "ह्या निशकशांक खयंचेच बदल जूळ्ळेले मेळूंक नांत.",
        "uctop": "हालीचें",
        "month": "ह्या म्हयन्या सावन (आनी आदलें):",
        "year": "ह्या वर्सा सावन (आनी आदलें):",
        "whatlinkshere-hideredirs": "$1 पुनर्निर्देशन",
        "whatlinkshere-hidetrans": "$1 दुरास्थ-समावेस",
        "whatlinkshere-hidelinks": "$1 दुवे",
-       "whatlinkshere-hideimages": "$1 फायल दुवे",
+       "whatlinkshere-hideimages": "$1 फायलींचे दुवे",
        "whatlinkshere-filters": "गाळणे",
        "ipboptions": "2 वरां:2 hours,1 दीस:1 day,3 दीस:3 days,1 सुमान:1 week,2 सुमनां:2 weeks,1 म्हयनो:1 month,3 म्हयने:3 months,6 म्हयने:6 months,1 वर्स:1 year,शेवट ना:infinite",
        "ipblocklist": "आडायल्लें वापरपी",
+       "infiniteblock": "शेवट ना",
        "blocklink": "आडावणी",
        "change-blocklink": "विभाग सुदारप",
        "contribslink": "योगदान",
        "blocklogpage": "कार्यवळेरी आडायात",
-       "blocklogentry": "$2 $3 हो सोंपपी वेळ आशिल्लो $1 बंद दवरल्ला",
+       "blocklogentry": "[[$1]] आक आडायला, इतल्या वेळाक: $2, कारण: $3",
+       "reblock-logentry": "आडावपाचें बसोवप बदल्लां [[$1]] हाचे खातीर सोंपोवपाचो वेळ दिला $2 $3‎",
        "block-log-flags-nocreate": "खातें निर्माण जावूंक ना",
+       "proxyblocker": "प्रतिनिधी सिरविदोर आडावपी‎",
        "movepagebtn": "पान हालय",
        "movelogpage": "पान हालोवण्यांचो सोत्र",
        "revertmove": "मूळ पदार व्हरप",
        "allmessagesdefault": "पूर्वनिर्धारित संदेशाचो मजकूर",
        "thumbnail-more": "व्हड करात",
        "thumbnail_error": "$1ः लघुप्रतिमा करतांनाची चूक",
+       "importlogpage": "आयाताचें सत्र",
        "tooltip-pt-userpage": "{{GENDER:|तुमचें वापरप्याचें}} पान",
        "tooltip-pt-mytalk": "{{GENDER:|तुमचें}} भासाभासाचें पान",
        "tooltip-pt-preferences": "{{GENDER:|तुमची}} पसंती",
        "tooltip-ca-nstab-special": "हें एक खेरीत पान, आनी हें बदलूंक जायना",
        "tooltip-ca-nstab-project": "प्रकल्पाचें पान पळेयात",
        "tooltip-ca-nstab-image": "फायलीचें पान पळेयात",
+       "tooltip-ca-nstab-mediawiki": "यंत्रणाचो संदेश पळय",
        "tooltip-ca-nstab-template": "सांचो पळेयात",
        "tooltip-ca-nstab-category": "वर्गांचे पान पळेयात",
        "tooltip-minoredit": "हो ल्हानसो बदल म्हूण कुरू करात",
        "tooltip-undo": "\"आदलें स्थितीर हाडचें\" ह्या बदलाक परत व्हरुन संपादन स्थितीन झलक रितीन दाखयतात.\nहाचेवरवीं सारांशान आदल्या स्थितीर हाडपाचें कारण बरोवं शकता.",
        "tooltip-summary": "आपरोसाची नोंदणी करात",
        "simpleantispam-label": "स्पमविरूध तपासणी.\nहें भर <strong>नाका</strong>!",
+       "pageinfo-title": "\"$1\" ‎खातीर म्हायती",
+       "pageinfo-header-basic": "मूळ म्हायती",
+       "pageinfo-header-edits": "बदलाचो इतिहास",
+       "pageinfo-header-restrictions": "पानाची सुरक्षा",
+       "pageinfo-header-properties": "पानाचे गुणधर्म",
+       "pageinfo-display-title": "मांडलेलें माथाळें",
+       "pageinfo-default-sort": "डिफोल्ट आरीन मांडूंक चावी",
+       "pageinfo-length": "पानाची लांबाय (बायटांत)‎",
+       "pageinfo-article-id": "पानाचो आंक",
+       "pageinfo-language": "पानाच्या मजकुराची भास",
+       "pageinfo-content-model": "पानाच्या मजकुराचो नमुनो",
+       "pageinfo-robot-policy": "रोबोटां कडल्यान सुचेंत घालप",
+       "pageinfo-robot-index": "परवांगी आसा",
+       "pageinfo-robot-noindex": "परवांगी ना",
+       "pageinfo-watchers": "पानाचेर दिश्ट दवरतेल्यांचो आंकडो",
+       "pageinfo-few-watchers": "$1 परस थोडें {{PLURAL:$1|दिश्ट दवरपी}}‎",
+       "pageinfo-redirects-name": "ह्या पाना खातीर पुनर्निर्देशनांचो आंकडो",
+       "pageinfo-subpages-name": "ह्या पानाच्या ऊप-पानाचो आंकडो",
+       "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|पुनर्निर्देशन|पुनर्निर्देशनां}}; $3 {{PLURAL:$3|पुनर्निर्देशन नासलेलें}})‎",
+       "pageinfo-firstuser": "पान रचपी",
+       "pageinfo-firsttime": "पान रचपाची तारीख",
+       "pageinfo-lastuser": "हालींचो संपादक",
+       "pageinfo-lasttime": "हालींच्या बदलाची तारीख",
+       "pageinfo-edits": "एकूण बदलाचो आंकडो",
+       "pageinfo-authors": "वेगळे बरोवप्यांचो एकूण आंकडो",
+       "pageinfo-recent-edits": "हालींच्या बदलांचे आंकडे (गेले $1)‎",
+       "pageinfo-recent-authors": "हालींचे वेगळे बरोवपी",
+       "pageinfo-magic-words": "{{PLURAL:$1|जादवाचें उतर|जादवाचीं उतरां}} ($1)‎",
+       "pageinfo-hidden-categories": "लिपयलेले {{PLURAL:$1|वर्ग}} ($1)",
+       "pageinfo-templates": "{{PLURAL:$1|सांचो दुरास्थ-समावेस जाला|सांचे दुरास्थ-समावेस जाले}} ($1)‎",
        "pageinfo-toolboxlink": "पानाची म्हायती",
+       "pageinfo-contentpage": "एक मजकुराचें पान कशें धरपांत आयलां",
        "pageinfo-contentpage-yes": "हय",
+       "patrol-log-page": "पारो करप्याचे सत्र",
        "previousdiff": "← आदलें संपादन",
        "nextdiff": "नवें संपादन →",
+       "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|पान|पानां}}",
        "file-info-size": "$1 × $2 चित्रतत्व, फायलीचो आकार: $3, माइम प्रकार: $4",
+       "file-info-size-pages": "$1 × $2 चित्रत्वां, फायलिचो आकार: $3, MIME प्रकार: $4, $5 {{PLURAL:$5|पान|पानां}}‎",
        "file-nohires": "हाच्या परस वयले बारिक्साय उपल्बद ना",
        "svg-long-desc": "SVG फायल, नांवाक $1 × $2 चित्रतत्वां, फायलीचो आकार: $3",
        "show-big-image": "मुळावी फायल",
        "monthsall": "सगळे",
        "confirm-rollback-button": "बरें",
        "confirm-rollback-top": "ह्या पाना वयलें संपादन आशिल्ले तशें करात?",
+       "imgmultipagenext": "फुडलें पान →",
+       "imgmultigo": "वचात!",
+       "imgmultigoto": "$1 ‎पानार वचात",
+       "watchlisttools-clear": "सादूरवळेरी निवळ कर",
        "watchlisttools-view": "प्रस्तूत बदल पळयात.",
        "watchlisttools-edit": "सादुरवळेरी पळय आनी संपादीत करात",
+       "watchlisttools-raw": "सादूरवळेरिची मूळान बदल कर",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|उलयात]])",
+       "redirect": "फायल, वापरपी, पान, उजळणी वा सत्र आंक‎ वर्वीं पुनर्देशन कर",
+       "redirect-summary": "हें विशेश पान पुनर्देशीत करता एका फायलीक (फायलीचें नांव दिल्यार), एका पानाक (उजळणेचो आंक वा पानाचो आंक दिल्यार), एक वापरप्याच्या पानाक (एके वापरप्याचो आंक दिल्यार), वा एक सत्र नोंद (सत्राचो आंक दिल्यार). वापर: [[{{#Special:Redirect}}/file/देखीक.jpg]],  [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], vo [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "वचात",
+       "redirect-lookup": "सुचींत पळय:",
        "redirect-value": "मोल:",
+       "redirect-user": "वापरप्यांचो आंक",
+       "redirect-page": "पानाचो आंक",
+       "redirect-revision": "पानाची उजळणी",
+       "redirect-file": "फायलीचें नांव",
        "specialpages": "विशेश पानां",
        "tag-filter": "[[Special:Tags|कुर्वेचीट]] गाळणो:",
        "tag-list-wrapper": "[[Special:Tags|{{PLURAL:$1|कुरवेचीट|कुरवेचीटी}}]]: $2",
        "tags-active-yes": "हय",
        "tags-active-no": "ना",
+       "tags-hitcount": "$1 {{PLURAL:$1|बदल}}",
        "htmlform-title-not-exists": "$1 अस्तित्वांत ना.",
        "logentry-delete-delete": "$1 {{GENDER:$2|काडून उडयल्ले पान}} $3",
+       "logentry-delete-restore": "$1 हाणें {{GENDER:$2|परत हाडलां}} पान $3 ($4)‎",
+       "logentry-delete-revision": "$1 हाणें {{PLURAL:$5|उजळणेचें}} दिसणे  $3, ह्या पानार {{GENDER:$2|बदल्ला}}: $4‎",
+       "revdelete-content-hid": "मजकूर लिपयला",
        "logentry-move-move": "$1 हाणें $3 पानाक $4 {{GENDER:$2|हालयला}}",
+       "logentry-move-move-noredirect": "$1, हाणें पान $3 सावन $4 {{GENDER:$2|हालयलां}} पुनर्देर्शन दवरिनासतानां",
+       "logentry-move-move_redir": "$1 हाणें पान $3 सावन $4 {{GENDER:$2||हालयल्लो}} पुनर्दिशनावयर",
+       "logentry-patrol-patrol-auto": "$1-आन $3, ह्या पानाचें $4, ह्या उजळणेचो पारो केलां म्हण आपोआप {{GENDER:$2|खुणायलां}}",
        "logentry-newusers-create": "उपयोगकत्याचें $1 {{GENDER:$2|तयार केलें}}",
+       "logentry-newusers-autocreate": "वापरप्याचें खातें $1 आपोआप {{GENDER:$2|रचून}} आयलें",
        "logentry-upload-upload": "$1 {{GENDER:$2|अपलोड केला}} $3",
+       "logentry-upload-overwrite": "$1, हाणें $3‎, हाची एक नवी आवृत्ती {{GENDER:$2|अपलोड केलां}}",
        "searchsuggest-search": "{{SITENAME}} सोद",
+       "duration-days": "$1 {{PLURAL:$1|दीस}}",
        "special-characters-group-latin": "रोमी",
        "special-characters-group-latinextended": "रोमी (आनिंक-उइ)",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-khmer": "ख्मेर",
        "mw-widgets-dateinput-no-date": "तारीख निवडूंक ना",
        "mw-widgets-dateinput-placeholder-day": "वर्स-म्हयनो-दीस",
-       "mw-widgets-dateinput-placeholder-month": "वर्स-म्हयनो"
+       "mw-widgets-dateinput-placeholder-month": "वर्स-म्हयनो",
+       "randomrootpage": "खयंचेंय मूळ पान"
 }
index 9f1f706..6832f35 100644 (file)
        "anoneditwarning": "<strong>Chotrai:</strong> Tuven sotrorombh korunk nai. Tu bodol korit zalear tuzo IP pot'to soglleank polleunk zatelem. Tu <strong>[$1 sotrorombh korit]</strong> vo <strong>[$2 kont rochit]</strong> zalear, tuje bodol tuzo vaporpeachem nanvak zoddteleo ani anik-ui faide asat.",
        "missingcommenttext": "Upkar korun tuzo xero boroi.",
        "blockedtitle": "Vapurpeak addaila",
-       "blockedtext": "<strong>Tujem vaporpeachem nanv vo IP pot'to addavpant aila.</strong>\n\nAddavop $1 hannem kelam.\nKaronn dilam tem <em>$2</em>.\n\n* Addavpachi survat: $8\n* Addavop sompovpacho vell: $6\n* Addavpak ievjila: $7\n\nTujean $1-ak vo dusrea [[{{MediaWiki:Grouppage-sysop}}|karbhariak]] addavnne bodol bhasabhas korunk sompork korunk zata. Tujean \"{{int:emailuser}}\" sobhavgunn vaprunk zaina kheriz ek void email pot'to tujea [[Special:Preferences|khatem posontint]] nischit kelea xivai ani tuka tem vaporpak addavnk na zalear. Tuzo chalont IP pot'to asa $3, ani addavnnecheo ank #$5 asa. Soglleo voileo bariksanno tum kortai tea vicharant somavex kor.",
+       "blockedtext": "<strong>Tujem vaporpeachem nanv vo IP pot'to addavpant aila.</strong>\n\nAddavop $1 hannem kelam.\nKaronn dilam tem <em>$2</em>.\n\n* Addavpachi survat: $8\n* Addavop sompovpacho vell: $6\n* Addavpak ievjila: $7\n\nTujean $1-ak vo dusrea [[{{MediaWiki:Grouppage-sysop}}|karbhariak]] addavnne vixim bhasabhas korunk sompork korunk zata. Tujean \"{{int:emailuser}}\" sobhavgunn vaprunk zaina kheriz ek void email pot'to tujea [[Special:Preferences|khatem posontint]] nischit kelea xivai ani tuka tem vaporpak addavnk na zalear. Tuzo chalont IP pot'to asa $3, ani addavnnecheo ank #$5 asa. Soglleo voileo bariksanno tum kortai tea vicharant somavex kor.",
        "blockednoreason": "Kainch karonn diunk na",
        "loginreqtitle": "Sotrorombh gorjechem",
        "loginreqlink": "sotrorombh kor",
        "accmailtitle": "Gupitutor dhaddlea",
        "newarticle": "(Novem)",
        "newarticletext": "Tuven ek duveche patlav kelai, zachem pan azun rochunk na.\nPan rochunk, khallchea chovkottan boroi (anik mahitik [$1 adar pan] polloi).\nTu hangasor chukin pavlai zalear tujea internet browser-achi <strong>Fatim</strong> vo <strong>Back</strong> butao dab.",
-       "anontalkpagetext": "----\n<em>Hem bhasabhasechem pan ek ninami vaporpeak zannem ozun ek khatem ugddunk na, vo to tem vaporna.</em>\nHea khatir amkam ankddeancho IP pot'to vaprunk podta taka vollkhunk.\nToslo IP pot'to sabar vaporpeamni vaprum ieta.\nTum zor ek ninami vaporpi asa ani tuka dista ki sombondit xere tuje vixim keleat, upkar korun [[Special:CreateAccount|ek khatem roch]] vo [[Special:UserLogin|log in]] fuddle guspop ninami vaporpeanchem tallunk.‎",
+       "anontalkpagetext": "----\n<em>Hem bhasabhasechem pan ek ninami vaporpeak zannem ozun ek khatem ugddunk na, vo to tem vaporna.</em>\nHea khatir amkam ankddeancho IP pot'to vaprunk podta taka vollkhunk.\nToslo IP pot'to sabar vaporpeamni vaprum ieta.\nTum zor ek ninami vaporpi asa ani tuka dista ki tukam sombond naslele xere tuje vixim keleat, upkar korun [[Special:CreateAccount|ek khatem roch]] vo [[Special:UserLogin|sotrarombh kor]] fuddle guspop ninami vaporpeanchem tallunk.‎",
        "noarticletext": "Sodheak hem pan ritem asa.\nTujean dusrea panani [[Special:Search/{{PAGENAME}}|hea panache nanv sodunk zata]], <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sombondhi sotrani sodunk zata], vo [{{fullurl:{{FULLPAGENAME}}|action=edit}} hem pan rochunk zata]</span>.",
        "noarticletext-nopermission": "Sodheak hem pan ritem asa.\nTujean dusrea panani [[Special:Search/{{PAGENAME}}|hea panache nanv sodunk zata]], vo <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sombondhi sotrani sodunk zata], pun tuka hem pan rochunk porvangi na.",
        "userpage-userdoesnotexist-view": "\"$1\" hea vapurpeachea khateachi nondnni korunk na.",
-       "clearyourcache": "<strong>Note:</strong> Samball’llea uprant, tuka ghoddiek tujea browseracho cache koddsoravnk poddot bodol pollonvche khatir.\n* <strong>Firefox / Safari:</strong> <em>Shift</em> dhor <em>Reload</em> klik kortana, vo dam <em>Ctrl-F5</em> vo <em>Ctrl-R</em> (<em>⌘-R</em> Mac-acher)\n* <strong>Google Chrome:</strong> <em>Ctrl-Shift-R</em> dam (<em>⌘-Shift-R</em> eka Mac-acher)\n* <strong>Internet Explorer:</strong> <em>Ctrl</em> dhor <em>Refresh</em> klik kortana, vo dam <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Hanga voch: <em>Menu → Settings</em> (<em>Opera → Preferences</em> Mac-acher) ani uprant <em>Privacy & security → Clear browsing data → Cached images and files</em>.‎",
+       "clearyourcache": "<strong>Chotrai:</strong> Samball’llea uprant, tuka ghoddiek tujea browseracho cache koddsoravnk poddot bodol pollonvche khatir.\n* <strong>Firefox / Safari:</strong> <em>Shift</em> dhor <em>Reload</em> klik kortana, vo dam <em>Ctrl-F5</em> vo <em>Ctrl-R</em> (<em>⌘-R</em> Mac-acher)\n* <strong>Google Chrome:</strong> <em>Ctrl-Shift-R</em> dam (<em>⌘-Shift-R</em> eka Mac-acher)\n* <strong>Internet Explorer:</strong> <em>Ctrl</em> dhor <em>Refresh</em> klik kortana, vo dam <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Hanga voch: <em>Menu → Settings</em> (<em>Opera → Preferences</em> Mac-acher) ani uprant <em>Privacy & security → Clear browsing data → Cached images and files</em>.‎",
        "previewnote": "<strong>Hem fokot ek zholok mhonn ugddas dhor.</strong>\nTuje bodol azun sambhallun dovrunk nant!",
        "continue-editing": "Sompadon korpachea zagear voch",
        "editing": "Sompadon kortai: $1",
        "editundo": "kel'lem portavchem",
        "diff-empty": "(Kaim forok na)‎",
        "diff-multi-sameuser": "(Heach vaporpean {{PLURAL:$1|kel'lo modlo ek bodol dakhounk na|kel'le modle $1 bodol dakhounk nan}})",
-       "diff-multi-otherusers": "({{PLURAL:$1|Ek modli uzollnni|$1 modleo uzollnneo}} {{PLURAL:$2|ek her vaporpi|$2 her vaporpi}}, hache vorvim dakhovnk na)‎",
+       "diff-multi-otherusers": "({{PLURAL:$2|Ek her vaporpea|$2 her vaporpeam}} vorvim {{PLURAL:$1|ek modli uzollnni|$1 modleo uzollnneo}} dakhovnk na)",
        "searchresults": "Sodache porinaman",
        "searchresults-title": "\"$1\" -khatir sodache porinaman",
        "prevn": "adlem {{PLURAL:$1|$1}}",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|nove pananchi suchi]]-ui polloi)",
        "rcfilters-tag-remove": "'$1' kadd",
        "rcfilters-legend-heading": "<strong>Sonkxepachi volleri:</strong>",
+       "rcfilters-group-results-by-page": "Pana pormonnem pongddache porinnam",
        "rcfilters-activefilters": "Kriaxil challnneo",
        "rcfilters-activefilters-hide": "Lipoi",
        "rcfilters-activefilters-show": "Dakhoi",
        "rcfilters-savedqueries-unsetdefault": "Default aslolem kaddun uddoi",
        "rcfilters-savedqueries-remove": "Kadun udoi",
        "rcfilters-savedqueries-new-name-label": "Nanv",
+       "rcfilters-savedqueries-new-name-placeholder": "Challnnecho hetu vornnon kor",
        "rcfilters-savedqueries-apply-label": "Challnni roch",
+       "rcfilters-savedqueries-apply-and-setdefault-label": "Default challnni roch",
        "rcfilters-savedqueries-cancel-label": "Rod'd kor",
        "rcfilters-savedqueries-add-new-title": "Chalont challnnechi manddavoll samball",
        "rcfilters-savedqueries-already-saved": "Heo challnneo adinch samball’lloleo asat. Ek novi Samball’lloli Challnni rochunk, tujeo manddavolleo bodol.",
        "rcfilters-filterlist-feedbacklink": "Hea challnnechea avtam vixim tuka kitem dista tem amkam sang",
        "rcfilters-highlightmenu-title": "Ek rong vinch",
        "rcfilters-filterlist-noresults": "Kosleoch challnneo mellunk nant",
+       "rcfilters-state-message-fullcoverage": "Hea pongddantle soglleo challnneo vinchop mhonnche kainch vinchop na, hea khatir he challnnek kainch porinnam na. Pongddant  hacho somavex asa: $1",
        "rcfilters-filtergroup-authorship": "Iogdanachem borovp",
        "rcfilters-filter-editsbyself-label": "Tuven kel'leo bodol",
        "rcfilters-filter-editsbyself-description": "Tujeo svotacheo yogdanam.",
        "rcfilters-filter-editsbyother-label": "Dusreanim kel'le bodol",
        "rcfilters-filter-editsbyother-description": "Tuje khas bhairavn, soglle bodol",
        "rcfilters-filtergroup-user-experience-level": "Vaporpeachi nondnni ani onnbhov",
+       "rcfilters-filter-user-experience-level-registered-label": "Nondnni kelolem",
        "rcfilters-filter-user-experience-level-registered-description": "Sotrarombh zalole sompadok.",
+       "rcfilters-filter-user-experience-level-unregistered-label": "Nondnni korunk naslolem",
+       "rcfilters-filter-user-experience-level-unregistered-description": "Sompadok je sotrarombhit nant.",
        "rcfilters-filter-user-experience-level-learner-label": "Xikpi",
+       "rcfilters-filter-user-experience-level-learner-description": "Nondnni kelole sompadok zancho onnubhov \"Nove ievpi\" ani \"Onnbhovi vaporpi\" modem urta.",
        "rcfilters-filter-user-experience-level-experienced-label": "Onnbhovi vaporpi",
+       "rcfilters-filter-user-experience-level-experienced-description": "500 odik sompadon ani 30 disanchem kario aslolem nondnni kelolem sompadok.",
        "rcfilters-filtergroup-automated": "Apoap zalolem iogdan",
        "rcfilters-filter-bots-label": "Robot",
        "rcfilters-filter-bots-description": "Apoap avtamni kelolem sompadon",
        "rcfilters-filter-humans-description": "Monxani kelolem sompadon",
        "rcfilters-filter-reviewstatus-unpatrolled-description": "Paro kela mhonn hatan vo apoap khunnavnk naslolem sompadon.",
        "rcfilters-filter-reviewstatus-unpatrolled-label": "Paro korunk naslolem",
+       "rcfilters-filter-reviewstatus-manual-description": "Sompadon zaka paro kelam mhonn hatan khunnailam.",
+       "rcfilters-filter-reviewstatus-manual-label": "Hatan paro korpant ailolem",
+       "rcfilters-filter-reviewstatus-auto-label": "Apoap paro korpant ailolem",
        "rcfilters-filtergroup-significance": "Mhotv",
        "rcfilters-filter-minor-label": "Dhakte bodol",
        "rcfilters-filter-minor-description": "Borovpean dhaktem mhonn khunne chitt kelolem sompadon",
        "rcfilters-filter-major-description": "Dhaktem mhonn khunne chitt korunk naslolem sompadon",
        "rcfilters-filtergroup-watchlist": "Sadurvollerintlim panam",
        "rcfilters-filter-watchlist-watched-label": "Sadurvollerintlim",
+       "rcfilters-filter-watchlist-watched-description": "Tujea Sadurvollerichea panamche bodol.",
        "rcfilters-filter-watchlist-watchednew-label": "Sadurvolleriche nove bodol",
        "rcfilters-filter-watchlist-watchednew-description": "Bodol ghoddleat ten’na savn tuvem bhett divnk nant tea sadurvollerintlim panache bodol.",
-       "rcfilters-filter-watchlist-notwatched-label": "Sadurvollerintlim nhoi",
+       "rcfilters-filter-watchlist-notwatched-label": "Sadurvollerint na",
        "rcfilters-filter-watchlist-notwatched-description": "Sadurvollerichim panank bodol soddun her sogllem.",
        "rcfilters-filtergroup-watchlistactivity": "Sadurvollerichem kario",
        "rcfilters-filter-watchlistactivity-unseen-label": "Pollovnk naslole bodol",
        "rcfilters-view-tags": "Khunnechittichem sompadon",
        "rcfilters-view-tags-tooltip": "Sompadonacheo khunne chitti vaprun porinnam chall",
        "rcfilters-view-tags-help-icon-tooltip": "Khunnechittichem sompadona babtint odik xikun ghe",
+       "rcfilters-liveupdates-button-title-off": "Nove bodol ghoddtta ten’na dakhol kor",
        "rcfilters-watchlist-markseen-button": "Soglle bodol polleleat mhonn khunnai.",
+       "rcfilters-watchlist-edit-watchlist-button": "Nodor dovorlolea panachi volleri sompadon kor",
        "rcfilters-watchlist-showupdated": "Bodol zal'leak savn je panank tuvem bhett dinvk na, te bodol <strong>datt</strong> okxoramni, ani ghott khunnamni dileat.",
+       "rcfilters-filter-showlinkedfrom-option-label": "Vinchlolea panant <strong>savn zulltat tim panam</strong>",
        "rcfilters-filter-showlinkedto-label": "Panak zoddtat tea panache bodol dakhoi",
+       "rcfilters-filter-showlinkedto-option-label": "Vinchlolea panak <strong>zulltat tim pana</strong>",
        "rcfilters-target-page-placeholder": "Ek panache nanv ( vo vorg) ghal",
        "rcnotefrom": "Sokoil <strong>$3, $4<strong> savn {{PLURAL:$5|zalelem bodol dilam|zalelem bodol dileant}} (<strong>$1<strong> meren {{PLURAL:$5|dakhoilam|dakhoileant}}).",
        "rclistfrom": "$3 $2 savn suru zatelim nove bodol dakhoi",
        "filehist-comment": "Xero",
        "imagelinks": "Faylicho vapor",
        "linkstoimage": "{{PLURAL:$1|Hem pan|$1 Him panam}} hi fayl {{PLURAL:$1|vaporta|vaportat}}:",
-       "linkstoimage-more": "$1 poros odik {{PLURAL:$1|pan vaporta|panam vaporta}} hi fayl.\nSokoili volleri dakhoita {{PLURAL:$1|poilem pan|poilim $1 panam}} jem hich fayl vaporta. Ek [[Special:WhatLinksHere/$2|purnn volleri]] uplobdh asa.‎",
+       "linkstoimage-more": "$1 poros odik {{PLURAL:$1|pan vaporta|panam vaportat}} hi fayl.\nSokoili volleri dakhoita {{PLURAL:$1|poilem pan|poilim $1 panam}} jem hich fayl vaporta. Ek [[Special:WhatLinksHere/$2|purnn volleri]] uplobdh asa.‎",
        "nolinkstoimage": "Hea faylik vaportat toslim panam nant",
        "linkstoimage-redirect": "$1 (fayl punornirdexon) $2",
        "sharedupload-desc-here": "Hi fayl $1, hachi ani dusrea prokolpanim hachem upeog korunk zata.\nHachem [$2 faylichem vivron panan] asleli vivron khala dilea:",
        "change-blocklink": "Addavnnni bodol",
        "contribslink": "yogdan",
        "blocklogpage": "addavnnechem sotr",
-       "blocklogentry": "[[$1]] addailelem $2 asun vellacho ont: $3",
+       "blocklogentry": "[[$1]] ak addaila, itlea vellak: $2, karonn: $3",
        "reblock-logentry": "addavpachem bosovp bodol’lam [[$1]] hache khatir sompovpacho vell dila $2 $3‎",
        "block-log-flags-nocreate": "Khatem rochop opatr kelam",
        "proxyblocker": "Protinidhi-sirvidor addavpi‎",
index 6480a93..dd7e7e8 100644 (file)
@@ -87,6 +87,7 @@
        "tog-useeditwarning": "הצגת אזהרה בעת עזיבת דף עריכה עם שינויים שטרם נשמרו",
        "tog-prefershttps": "תמיד להשתמש בתקשורת מאובטחת לאחר הכניסה לחשבון",
        "tog-showrollbackconfirmation": "הצגת הודעת אישור לאחר לחיצה על קישור \"שחזור\"",
+       "tog-requireemail": "לדרוש דואר אלקטרוני לאתחול סיסמה",
        "underline-always": "תמיד",
        "underline-never": "לעולם לא",
        "underline-default": "ברירת המחדל של העיצוב או של הדפדפן",
        "undo-norev": "לא ניתן היה לבטל את העריכה כי היא אינה קיימת או כי היא נמחקה.",
        "undo-nochange": "נראה שהעריכה כבר בוטלה.",
        "undo-summary": "ביטול גרסה $1 של [[Special:Contributions/$2|$2]] ([[User talk:$2|שיחה]])",
+       "undo-summary-anon": "ביטול גרסה $1 מאת [[Special:Contributions/$2|$2]]",
        "undo-summary-username-hidden": "ביטול גרסה $1 של משתמש מוסתר",
        "cantcreateaccount-text": "אפשרות יצירת החשבונות מכתובת ה־IP הזאת (<strong>$1</strong>) נחסמה על־ידי [[User:$3|$3]].\n\nהסיבה שניתנה על־ידי $3 היא: <em>$2</em>",
        "cantcreateaccount-range-text": "אפשרות יצירת החשבונות מכתובות IP בתוך הטווח <strong>$1</strong>, כולל כתובת ה־IP שלך (<strong>$4</strong>), נחסמה על־ידי [[User:$3|$3]].\n\nהסיבה שניתנה על־ידי $3 היא: <em>$2</em>",
        "prefs-help-email": "כתובת דואר אלקטרוני היא אופציונלית, אבל היא חיונית לאיפוס הסיסמה במקרה ש{{GENDER:|תשכח|תשכחי}} אותה.",
        "prefs-help-email-others": "באפשרותך גם לאפשר למשתמשים ליצור איתך קשר באמצעות דוא\"ל דרך קישור בדף המשתמש או בדף השיחה שלך.\nכתובת הדוא\"ל שלך לא תיחשף כשמשתמשים יצרו איתך קשר.",
        "prefs-help-email-required": "כתובת דואר אלקטרוני נדרשת לכתיבה באתר.",
+       "prefs-help-requireemail": "אם זה מסומן, לשלוח מכתבי אתחול סיסמה אם האדם המאתחל סיפק גם שם משתמש וגם סיסמה לחשבון שלו.",
        "prefs-info": "מידע בסיסי",
        "prefs-i18n": "בינאום",
        "prefs-signature": "חתימה",
        "alreadyrolled": "לא ניתן לשחזר את העריכה של [[User:$2|$2]] ([[User talk:$2|שיחה]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) בדף [[:$1]];\nהדף כבר נערך או שוחזר.\n\nהעריכה האחרונה הייתה של [[User:$3|$3]] ([[User talk:$3|שיחה]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "תקציר העריכה היה: <em>$1</em>.",
        "revertpage": "שוחזר מעריכות של [[Special:Contributions/$2|$2]] ([[User talk:$2|שיחה]]) לעריכה האחרונה של [[User:$1|$1]]",
+       "revertpage-anon": "ביטל את העריכות של [[Special:Contributions/$2|$2]] לגרסה האחרונה מאת [[User:$1|$1]]",
        "revertpage-nouser": "שוחזר מעריכות של משתמש מוסתר לעריכה האחרונה של {{GENDER:$1|[[User:$1|$1]]}}",
        "rollback-success": "שוחזר מעריכות של {{GENDER:$3|$1}}\nלעריכה האחרונה של {{GENDER:$4|$2}}.",
        "sessionfailure-title": "בעיה בחיבור",
        "ipblocklist-legend": "מציאת משתמש חסום",
        "blocklist-userblocks": "הסתרת חסימות של משתמשים רשומים",
        "blocklist-tempblocks": "הסתרת חסימות זמניות",
+       "blocklist-indefblocks": "הסתרת חסימות לצמיתות",
        "blocklist-addressblocks": "הסתרת חסימות של כתובות IP בודדות",
        "blocklist-type": "סוג:",
        "blocklist-type-opt-all": "הכול",
index 28cbba6..d8070a0 100644 (file)
        "movepagetext": "Uzante ica formularo onu povas rinomizar pagino, movante olua omna versionaro ad la nova titulo.\nLa antea titulo konvertesos a ridirektilo a la nova titulo.\nLa ligili a la antea titulo dil pagino ne chanjesos.\nVoluntez certigar ke ne esas [[Special:DoubleRedirects|duopla]] o [[Special:BrokenRedirects|ruptota ridirektili]].\nVu responsas ke la ligili duros direktante a la pagino korespondanta.\n\nMemorez ke la pagino '''ne''' rinomizesos se ja existus pagino kun la nova titulo, eceptuante ke la pagino esas vakua o ridirektilo sen versionaro.\nIco signifikas ke vu povos rinomizar pagino a olua originala titulo se eroras skribante la nova titulo, ma ne povos riskribar existanta pagino.\n\n'''EGARDEZ!'''\nIca povas esar drastika chanjo e ne-esperinda por populara pagino;\nvoluntez certigar ke vu komprenas la konsequi qui eventos ante durar adavane.",
        "movepagetext-noredirectfixer": "Uzar la formulario infre rinomizos la pagino, e tota lua historio-listo a la nova nomo.\nL'anciena titulo ridirektesos a la nova titulo.\nVerifikez la [[Special:DoubleRedirects|duopla]] e/o la [[Special:BrokenRedirects|krevita ridirekti]].\n<strong>Esas vua responso verifikar se omna ligili esas korekta.</strong>\n\nVidez ke la pagino <strong>ne rinomizesos se existar pagino kun la sama titulo</strong>, ecepte se ol ridirektesas a la prezenta pagino e ne havas pasinta historio pri redaktado.\nTo signifikas ke vu povas retroe rinomizar pagino a lua antea nomo se ol rinomizesis erore, e ke vu ne povas supresar existanta pagino per ridirektado di altra pagino.\n\n<strong>Atencez:</strong>\nLa rinomizo povas esar drastika chanjo por pagini qui esas populara;\nhavez klara certezo pri la konsequi di la posibla rinomizo di la pagino, ante facar ol!",
        "movepagetalktext": "Se vu markizos ca buxo, la diskuto-pagino asociita anke modifikesos a la nova titulo, ecepte se diskuto-pagino nevakua ja existar ibe.\n\nCakaze, vu propra mustos movar la diskuto-pagino o mixar la du texti, se vu deziros.",
-       "movecategorypage-warning": "<strong>Atencez:</strong> Vu balde rinomizos pagino di \"KATEGORIO\". Nur la titulo di la kategorio chanjesos, ma <em>nula pagino kategoriizita segun l'anciena kategorio</em> modifikesos automatale por la nova kategorio.",
+       "movecategorypage-warning": "<strong>Atencez:</strong> Vu balde rinomizos pagino pri \"KATEGORIO\". Nur la titulo di la kategorio chanjesos, ma <em>nula pagino kategoriizita segun l'anciena kategorio</em> modifikesos automatale por la nova kategorio.",
        "movenologintext": "Vu mustas esar registragita uzero ed [[Special:UserLogin|enirir]] por rinomizar pagino.",
        "newtitle": "Nova titulo:",
        "move-watch": "Surveyar ca pagino",
index 243c68c..9a6d447 100644 (file)
        "feedback-cancel": "Wurung",
        "feedback-close": "Rampung",
        "feedback-external-bug-report-button": "Kirim ayahan tèhnis",
-       "feedback-dialog-title": "Awèh saran",
+       "feedback-dialog-title": "Kirimi pamrayoga",
        "feedback-error1": "Masalah: Kasil ora dingertèni saka API",
        "feedback-error2": "Masalah: Besutané wurung",
        "feedback-error3": "Masalah: Ora ana tanggepan saka API",
index b50b012..ed6500b 100644 (file)
        "history": "hronoloģija",
        "history_short": "Vēsture",
        "history_small": "vēsture",
-       "updatedmarker": "atjaunināts kopš mana pēdējā apmeklējuma",
+       "updatedmarker": "atjaunināts kopš tava pēdējā apmeklējuma",
        "printableversion": "Drukājama versija",
        "permalink": "Pastāvīgā saite",
        "print": "Drukāt",
        "anonpreviewwarning": "''Tu neesi ienācis. Saglabājot lapu, Tava IP adrese tiks ierakstīta šīs lapas hronoloģijā.''",
        "missingsummary": "'''Atgādinājums''': Tu neesi norādījis izmaiņu kopsavilkumu. Vēlreiz klikšķinot uz \"Saglabāt lapu\", Tavas izmaiņas tiks saglabātas bez kopsavilkuma.",
        "missingcommenttext": "Lūdzu, ievadi komentāru.",
-       "missingcommentheader": "'''Atgādinājums:''' Tu šim komentāram neesi norādījis virsrakstu/tematu.\nJa tu vēlreiz spiedīsi uz \"$1\", tavas izmaiņas tiks saglabātas bez virsraksta.",
+       "missingcommentheader": "<strong>Atgādinājums:</strong> Šim komentāram nav norādīts temats.\nVēlreiz spiežot uz \"$1\", tavs labojums tiks saglabāts bez tā.",
        "summary-preview": "Labojuma kopsavilkuma priekšskatījums:",
        "subject-preview": "Temata pirmskats:",
        "blockedtitle": "Dalībnieks ir bloķēts.",
        "nocreate-loggedin": "Tev nav atļaujas veidot jaunas lapas.",
        "sectioneditnotsupported-title": "Sadaļa rediģēšana nav atbalstīta",
        "sectioneditnotsupported-text": "Sadaļu rediģēsana šajā lapā nav atļauta.",
+       "modeleditnotsupported-title": "Labošana nav atbalstīta",
+       "modeleditnotsupported-text": "Satura modelim \"$1\" labošana nav atbalstīta.",
        "permissionserrors": "Atļauju kļūda",
        "permissionserrorstext": "Tev nav atļauts veikt šo darbību {{PLURAL:$1|šādu iemeslu|šāda iemesla|šādu iemeslu}} dēļ:",
        "permissionserrorstext-withaction": "Tev nav atļauts $2 {{PLURAL:$1|šādu iemeslu|šāda iemesla|šādu iemeslu}} dēļ:",
        "editpage-invalidcontentmodel-text": "Satura modelis \"$1\" nav atbalstīts.",
        "editpage-notsupportedcontentformat-title": "Satura formāts nav atbalstīts",
        "editpage-notsupportedcontentformat-text": "Satura formātu $1 neatbalsta satura modelis $2.",
+       "slot-name-main": "Galvenais",
        "content-model-wikitext": "vikiteksts",
        "content-model-text": "vienkāršs teksts",
        "content-model-javascript": "JavaScript kods",
        "prefixindex": "Meklēt pēc virsraksta pirmajiem burtiem",
        "prefixindex-namespace": "Visas lapas ar prefiksu ($1 vārdtelpa)",
        "prefixindex-submit": "Rādīt",
+       "prefixindex-strip": "Rezultātos paslēpt prefiksu",
        "shortpages": "Īsākās lapas",
        "longpages": "Garākās lapas",
        "deadendpages": "Lapas bez izejošām saitēm",
        "dellogpagetext": "Šajā lapā ir pēdējo dzēsto lapu saraksts.",
        "deletionlog": "dzēšanas reģistrs",
        "log-name-create": "Lapu izveides žurnāls",
+       "logentry-create-create": "$1 {{GENDER:$2|izveidoja}} lapu $3",
        "reverted": "Atjaunots uz iepriekšējo versiju",
        "deletecomment": "Iemesls:",
        "deleteotherreason": "Cits/papildu iemesls:",
        "sessionfailure": "Ir radusies problēma ar sesijas autentifikāciju;\nšī darbība ir atcelta, lai novērstu lietotājvārda iespējami ļaunprātīgu izmantošanu.\nLūdzu, spied \"''back''\" un atjaunini iepriekšējo lapu. Tad mēģini vēlreiz.",
        "changecontentmodel": "Mainīt lapas satura modeli",
        "changecontentmodel-legend": "Mainīt satura modeli",
-       "changecontentmodel-title-label": "Lapas nosaukums",
-       "changecontentmodel-model-label": "Jauns satura modelis",
+       "changecontentmodel-title-label": "Lapas nosaukums:",
+       "changecontentmodel-model-label": "Jaunais satura modelis:",
        "changecontentmodel-reason-label": "Iemesls:",
        "changecontentmodel-submit": "Mainīt",
        "changecontentmodel-success-title": "Satura modelis tika izmainīts",
        "fix-double-redirects": "Automātiski izmainīt visas pāradresācijas, kas ved uz sākotnējo nosaukumu",
        "move-leave-redirect": "Atstāt pāradresāciju",
        "protectedpagemovewarning": "'''Brīdinājums:''' Šī lapa ir aizsargāta, tikai lietotāji ar administratora privilēģijām var to pārvietot.\nPēdējais reģistra ieraksts ir apskatāms zemāk:",
-       "semiprotectedpagemovewarning": "'''Piezīme:''' Šī lapa ir aizsargāta, tikai reģistrētie lietotāji var to pārvietot.\nPēdējais reģistra ieraksts ir apskatāms zemāk:",
+       "semiprotectedpagemovewarning": "<strong>Piezīme:</strong> Šī lapa ir aizsargāta tā, lai tikai pašpārbaudītie lietotāji varētu to pārvietot.\nPēdējais reģistra ieraksts ir apskatāms zemāk:",
        "move-over-sharedrepo": "[[:$1]] jau pastāv koplietotā repozitorijā. Pārvietošana uz šo nosaukumu aizstās koplietoto failu.",
        "file-exists-sharedrepo": "Šis faila nosaukums jau tiek izmantots kopīgajā failu krātuvē.\nLūdzu, izvēlies citu nosaukumu.",
        "export": "Eksportēt lapas",
        "importcantopen": "Nevarēja atvērt importējamo failu",
        "importbadinterwiki": "Slikta starpviki saite",
        "importsuccess": "Importēšana pabeigta!",
-       "importnosources": "Tiešā hronoloģijas augšuplāde ir atslēgta. Nav definēts neviens ''Transwiki'' importa avots (''source'').",
+       "importnosources": "Nav definēta neviena vikivietne, no kuras importēt un tiešā hronoloģijas augšupielāde ir atslēgta.",
        "importnofile": "Neviens importējamais fails netika augšupielādēts.",
        "importuploaderrorsize": "Augšupielādēt importējamo failu neizdevās. \nŠis fails ir lielāks par atļauto augšupielādes lielumu.",
        "importuploaderrorpartial": "Importējamā faila augšupielāde neizdevās.\nFails tika tikai daļēji importēts.",
        "tooltip-feed-atom": "Šīs lapas Atom barotne",
        "tooltip-t-contributions": "{{GENDER:$1|Šī dalībnieka|Šīs dalībnieces}} ieguldījumu uzskaitījums",
        "tooltip-t-emailuser": "Sūtīt e-pastu {{GENDER:$1|šim dalībniekam|šai dalībniecei}}",
+       "tooltip-t-info": "Vairāk informācijas par šo lapu",
        "tooltip-t-upload": "Augšupielādēt failus",
        "tooltip-t-specialpages": "Visu īpašo lapu uzskaitījums",
        "tooltip-t-print": "Drukājama lapas versija",
        "diff-form-submit": "Parādīt atšķirības",
        "permanentlink": "Pastāvīgā saite",
        "permanentlink-revid": "Versijas ID",
+       "permanentlink-submit": "Doties uz versiju",
        "newsection": "Jauna sadaļa",
        "newsection-page": "Mērķa lapa",
+       "newsection-submit": "Doties uz lapu",
        "dberr-problems": "Atvainojiet!\nŠai vietnei ir radušās tehniskas problēmas.",
        "dberr-again": "Uzgaidiet dažas minūtes un pārlādējiet šo lapu.",
        "dberr-info": "(Nevar piekļūt datubāzei: $1)",
        "htmlform-chosen-placeholder": "Izvēlieties iespēju",
        "htmlform-cloner-create": "Pievienot vairāk",
        "htmlform-cloner-delete": "Noņemt",
+       "htmlform-cloner-required": "Vismaz viena vērtība ir obligāta.",
        "htmlform-date-placeholder": "GGGG-MM-DD",
        "htmlform-title-not-creatable": "\"$1\" nav izveidojams lapas nosaukums",
        "htmlform-title-not-exists": "$1 nepastāv.",
        "randomrootpage": "Nejauša saknes lapa",
        "log-action-filter-block": "Bloķēšanas veids:",
        "log-action-filter-protect": "Aizsardzības veids:",
+       "log-action-filter-rights": "Tiesību izmaiņas veids:",
        "log-action-filter-suppress": "Cenzēšanas veids:",
        "log-action-filter-upload": "Augšupielādes veids:",
        "log-action-filter-block-unblock": "Atbloķēšana",
index 410e3ab..37611e2 100644 (file)
@@ -71,6 +71,7 @@
        "tog-useeditwarning": "Предупреди ме кога сакам да напуштам страница за уредување без да ги имам зачувано промените",
        "tog-prefershttps": "Секогаш најавувај ме преку безбедна врска",
        "tog-showrollbackconfirmation": "Прикажи потврдница при стискање на врската за отповикување",
+       "tog-requireemail": "Барај е-пошта за ставање нова лозинка",
        "underline-always": "Секогаш",
        "underline-never": "Никогаш",
        "underline-default": "Според рувото или прелистувачот",
        "prefs-help-email": "Е-поштата е незадолжителна, но ќе ви треба за добивање на нова лозинка ако си ја заборавите постоечката.",
        "prefs-help-email-others": "Можете да изберете другите да ве контактираат преку вашата корисничка страница без да го откриете вашиот идентитет.",
        "prefs-help-email-required": "Е-поштенска адреса е задолжително да се наведе.",
+       "prefs-help-requireemail": "Ако е штиклирано, можноста за нова лозинка ќе ја имаат само корисниците што навеле корисничко име и е-пошта.",
        "prefs-info": "Основни информации",
        "prefs-i18n": "Јазик",
        "prefs-signature": "Потпис",
        "ipblocklist-legend": "Најди блокиран корисник",
        "blocklist-userblocks": "Скриј блокирања на корис. сметки",
        "blocklist-tempblocks": "Скриј привремени блокирања",
+       "blocklist-indefblocks": "Скриј бесконечни блокови",
        "blocklist-addressblocks": "Скри блокирања на поединечни IP-адреси",
        "blocklist-type": "Вид:",
        "blocklist-type-opt-all": "Сите",
index cd64fb3..cfbea54 100644 (file)
        "tags-tag": "အမည်တွဲ အမည်",
        "tags-description-header": "ဆိုလိုရင်းအဓိပ္ပာယ် အပြည့်အစုံ",
        "tags-source-header": "ရင်းမြစ်",
+       "tags-active-header": "သက်ဝင်?",
        "tags-actions-header": "ဆောင်ရွက်ချက်များ",
        "tags-active-yes": "မှန်",
        "tags-active-no": "မလုပ်ပါ",
index 7ccdd86..88c7bc7 100644 (file)
        "tog-useeditwarning": "Si ifra dersom jeg forlater en side uten å lagre den.",
        "tog-prefershttps": "Bruk alltid en trygg forbindelse når du er innlogget",
        "tog-showrollbackconfirmation": "Be om bekreftelse når man klikker på en tilbakestillingslenke",
+       "tog-requireemail": "Krev epost for tilbakestilling av passord",
        "underline-always": "Alltid",
        "underline-never": "Aldri",
        "underline-default": "Drakta eller nettleserens standardinnstillinger",
        "undo-norev": "Redigeringen kunne ikke fjernes fordi den ikke eksisterer eller ble slettet",
        "undo-nochange": "Det ser ut til at redigeringen allerede er tilbakestilt.",
        "undo-summary": "Fjerner revisjon $1 av [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusjon]])",
+       "undo-summary-anon": "Fjerner revisjon $1 av [[Special:Contributions/$2|$2]]",
        "undo-summary-username-hidden": "Fjern revisjon $1 av en skjult bruker",
        "cantcreateaccount-text": "Kontooppretting fra denne IP-adressen ('''$1''') har blitt blokkert av [[User:$3|$3]].\n\nGrunnen som ble oppgitt av $3 er ''$2''",
        "cantcreateaccount-range-text": "Opprettelsen av en brukerkonto fra IP-adresser i intervallet <strong>$1</strong>, som inneholder din IP-adresse (<strong>$4</strong>), er blitt blokkert av [[User:$3|$3]].\n\nÅrsaken angitt av $3 er <em>$2</em>",
        "prefs-help-email": "Å angi e-postadresse er valgfritt, men er nødvendig for å få tilsendt nytt passord om du skulle glemme det gamle.",
        "prefs-help-email-others": "Du kan også velge å la andre brukere kontakte deg via brukersiden din uten å røpe identiteten din.",
        "prefs-help-email-required": "E-postadresse er påkrevd.",
+       "prefs-help-requireemail": "Hvis denne er valgt vil vi kunne sende eposter om tilbakestilling av passord dersom den som ber om det oppgir både brukernavn og epostadresse for kontoen.",
        "prefs-info": "Grunnleggende informasjon",
        "prefs-i18n": "Internasjonalisering",
        "prefs-signature": "Signatur",
        "alreadyrolled": "Kan ikke fjerne den siste redigeringen på [[$1]] av [[User:$2|$2]] ([[User talk:$2|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); en annen har allerede redigert siden eller fjernet redigeringen.\n\nDen siste redigeringen ble foretatt av [[User:$3|$3]] ([[User talk:$3|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Redigeringskommentaren var: <em>$1</em>",
        "revertpage": "Tilbakestilte endringer av [[Special:Contributions/$2|$2]] ([[User talk:$2|brukerdiskusjon]]) til siste versjon av [[User:$1|$1]]",
+       "revertpage-anon": "Tilbakestilte endringer av [[Special:Contributions/$2|$2]] til siste versjon av [[User:$1|$1]]",
        "revertpage-nouser": "Tilbakestilt endringer av skjult bruker til siste versjon av\n{{GENDER:$1|[[User:$1|$1]]}}",
        "rollback-success": "Tilbakestilte endringer av {{GENDER:$3|$1}}; endret til siste versjon av {{GENDER:$4|$2}}.",
        "sessionfailure-title": "Sesjonsfeil",
index 4bf2965..6ac7d39 100644 (file)
                        "PiefPafPier"
                ]
        },
-       "tog-underline": "Verwiezingen onderstrepen",
-       "tog-hideminor": "Kleine wiezigingen verbargen in \"Leste wiezigingen\"",
-       "tog-hidepatrolled": "Wiezigingen die emarkeerd bin verbargen in \"Leste wiezigingen\"",
-       "tog-newpageshidepatrolled": "Ziejen die emarkeerd bin, verbargen in de lieste mit nieje artikels",
-       "tog-extendwatchlist": "Volglieste uutbreien, zodat alle wiezigingen zichtbaor bin, en niet allinnig de leste wieziging",
-       "tog-usenewrc": "Groepeer wiezigingen per zied in \"Leste wiezigingen\" en \"Mien volglieste\"",
-       "tog-numberheadings": "Koppen vanzelf nummeren",
-       "tog-editondblclick": "Mit dubbelklik bewarken",
-       "tog-editsectiononrightclick": "Bewarken van deelziejen meugelik maken mit n rechtermuusklik op n tussenkop",
-       "tog-watchcreations": "Spul wa'k anmake op mien volglieste zetten",
-       "tog-watchdefault": "Spul wa'k bewarke op mien volglieste zetten",
-       "tog-watchmoves": "Spul wa'k herneume op mien volglieste zetten",
-       "tog-watchdeletion": "Spul wa'k vortdo op mien volglieste zetten",
-       "tog-watchrollback": "Ziejen waorvan ik bewarkingen weerummedreid hebbe automaties volgen",
-       "tog-minordefault": "Markeer alle veraanderingen as 'kleine wieziging'",
-       "tog-previewontop": "De naokiekzied boven t bewarkingsveld zetten",
-       "tog-previewonfirst": "Naokieken bie eerste wieziging",
-       "tog-enotifwatchlistpages": "Stuur mien n berichjen over zied- of bestaandswiezigingen uut mien volglieste.",
-       "tog-enotifusertalkpages": "Stuur mien n berichjen as mien overlegzied ewiezigd is.",
-       "tog-enotifminoredits": "Stuur mien oek n berichjen bie kleine bewarkingen van ziejen en bestaanden",
-       "tog-enotifrevealaddr": "Mien netpostadres laoten zien in netposttiejigen",
-       "tog-shownumberswatching": "t Antal gebrukers bekieken die disse zied volgt",
-       "tog-oldsig": "Bestaonde haandtekening:",
-       "tog-fancysig": "Ondertekening zien as wikitekste (zonder automatiese verwiezing)",
-       "tog-uselivepreview": "Gebruuk \"rechtstreeks naokieken\"",
-       "tog-forceeditsummary": "Geef n melding bie n lege samenvatting",
-       "tog-watchlisthideown": "Verbarg mien eigen bewarkingen",
-       "tog-watchlisthidebots": "Verbarg botgebrukers",
-       "tog-watchlisthideminor": "Verbarg kleine wiezigingen in mien volglieste",
-       "tog-watchlisthideliu": "Bewarkingen van an-emelde gebrukers op mien volglieste verbargen",
-       "tog-watchlisthideanons": "Bewarkingen van anonieme gebrukers op mien volglieste verbargen",
-       "tog-watchlisthidepatrolled": "Wiezigingen die emarkeerd bin op volglieste verbargen",
-       "tog-ccmeonemails": "Stuur mien kopieën van berichten an aandere gebrukers",
-       "tog-diffonly": "Laot de inhoud van ziejen niet onder de an-egeven wiezigingen zien.",
-       "tog-showhiddencats": "Laot verbörgen kategorieën zien",
-       "tog-norollbackdiff": "Wiezigingen vortlaoten nao t weerummedreien",
-       "tog-useeditwarning": "Waorschuw mien a'k n bewörken zied aof wil sluten die nog niet op-esleugen is",
-       "tog-prefershttps": "Altied n beveiligde verbiending gebruken a'j an-emeld bin",
-       "underline-always": "Altied",
+       "tog-underline": "Verwysingen understreapen",
+       "tog-hideminor": "Kleine wysigingen verbargen in \"Lätste wysigingen\"",
+       "tog-hidepatrolled": "Wysigingen dee markeerd binnet verbargen in \"Lätste wysigingen\"",
+       "tog-newpageshidepatrolled": "Syden dee markeerd binnet, verbargen in de lyste mid nye artikels",
+       "tog-extendwatchlist": "Volglyste uutbreiden, sodat alle wysigingen sichtbår binnet, en neet allinnig de lätste wysigingen",
+       "tog-usenewrc": "Gruppeer wysigingen per syde in \"Lätste wysigingen\" en \"Myn volglyste\"",
+       "tog-numberheadings": "Upskrivten vanselv nummeren",
+       "tog-editondblclick": "Mid dubbelklik bewarken",
+       "tog-editsectiononrightclick": "Bewarken van deylsyden möägelik maken mid een rechtermuusklik up een tüskenupskrivt",
+       "tog-watchcreations": "Spül wat ik anmake up myn volglyste setten",
+       "tog-watchdefault": "Spül wat ik bewarke up myn volglyste setten",
+       "tog-watchmoves": "Spül wat ik hernöme up myn volglyste setten",
+       "tog-watchdeletion": "Spül wat ik vordsmyte up myn volglyste setten",
+       "tog-watchrollback": "Syden wårvan ik bewarkingen weaderümmedraid hebbe automatisk volgen",
+       "tog-minordefault": "Markeer alle veranderingen as 'kleine wysiging'",
+       "tog-previewontop": "De nåkyksyde boaven et bewarkingsveld setten",
+       "tog-previewonfirst": "Nåkyken by eyrste wysiging",
+       "tog-enotifwatchlistpages": "Stüür my een bericht oaver syd- of bestandswysigingen uut myn volglyste.",
+       "tog-enotifusertalkpages": "Stüür my een bericht as myn oaverlegsyde wysigd is.",
+       "tog-enotifminoredits": "Stüür my ouk een bericht by kleine bewarkingen van syden en bestanden",
+       "tog-enotifrevealaddr": "Myn e-postadres låten seen in e-postberichten",
+       "tog-shownumberswatching": "Et antal brukers bekyken dee disse syde volgt",
+       "tog-oldsig": "Bestånde handteykening:",
+       "tog-fancysig": "Underteykening seen as wikitekst (sunder automatiske verwysing)",
+       "tog-uselivepreview": "Nåkyksyde låten seen sunder eyrst te herladen",
+       "tog-forceeditsummary": "Geav een melding by een leadige samenvatting",
+       "tog-watchlisthideown": "Verbarg myn eigen bewarkingen",
+       "tog-watchlisthidebots": "Verbarg botbrukers",
+       "tog-watchlisthideminor": "Verbarg kleine wysigingen in myn volglyste",
+       "tog-watchlisthideliu": "Bewarkingen van anmeldede brukers up myn volglyste verbargen",
+       "tog-watchlisthideanons": "Bewarkingen van anonyme brukers up myn volglyste verbargen",
+       "tog-watchlisthidepatrolled": "Wysigingen dee markeerd binnet up volglyste verbargen",
+       "tog-ccmeonemails": "Stüür my kopien van berichten an andere brukers",
+       "tog-diffonly": "Under wysigingen neet de syde-inhold låten seen.",
+       "tog-showhiddencats": "Låt verbörgen kategoryen seen",
+       "tog-norollbackdiff": "Wysigingen vordlåten nå et weaderümmedraien",
+       "tog-useeditwarning": "Wårschüw my as ik een bewarkede syde afsluten wil dee noch neet upslöägen is",
+       "tog-prefershttps": "Altyd een beveiligde verbinding bruken as jy anmelded binnet",
+       "underline-always": "Altyd",
        "underline-never": "Nooit",
-       "underline-default": "Standard in joew vormgeving of webkieker",
-       "editfont-style": "Lettertype veur de tekste t bewarkingsveld:",
-       "editfont-monospace": "Lettertype waorvan t tekenbreedte vaste steet",
+       "underline-default": "Standard in juw formgeaving of webkyker",
+       "editfont-style": "Lettertype vöär de tekst in et bewarkingsveld:",
+       "editfont-monospace": "Lettertype wårvan de teykenbreydte vast steyt",
        "editfont-sansserif": "Sans-seriflettertype",
        "editfont-serif": "Seriflettertype",
        "sunday": "sündag",
@@ -96,7 +96,7 @@
        "december": "december",
        "january-gen": "januåri",
        "february-gen": "februåri",
-       "march-gen": "meert",
+       "march-gen": "määrt",
        "april-gen": "april",
        "may-gen": "mei",
        "june-gen": "juni",
        "september-gen": "september",
        "october-gen": "oktober",
        "november-gen": "november",
-       "december-gen": "desember",
+       "december-gen": "december",
        "jan": "jan",
        "feb": "feb",
        "mar": "mrt",
        "oct": "okt",
        "nov": "nov",
        "dec": "dec",
-       "january-date": "$1 jannewaori",
-       "february-date": "$1 febrewaori",
-       "march-date": "$1 meert",
+       "january-date": "$1 janri",
+       "february-date": "$1 febrri",
+       "march-date": "$1 määrt",
        "april-date": "$1 april",
        "may-date": "$1 mei",
        "june-date": "$1 juni",
        "september-date": "$1 september",
        "october-date": "$1 oktober",
        "november-date": "$1 november",
-       "december-date": "$1 desember",
+       "december-date": "$1 december",
        "pagecategories": "{{PLURAL:$1|Kategory|Kategoryen}}",
        "category_header": "Artikels in kategory $1",
-       "subcategories": "Subkategorieën",
-       "category-media-header": "Media in kategorie \"$1\"",
-       "category-empty": "''In disse kategoria staon op t moment nog gien artikels of media.''",
+       "subcategories": "Subkategoryen",
+       "category-media-header": "Media in kategory \"$1\"",
+       "category-empty": "<em>In disse kategory stån up et moment noch geen syden of media.</em>",
        "hidden-categories": "Verbörgen {{PLURAL:$1|kategory|kategoryen}}",
-       "hidden-category-category": "Verbörgen kategorieën",
+       "hidden-category-category": "Verbörgen kategoryen",
        "category-subcat-count": "{{PLURAL:$2|Disse kategory hevt de volgende subkategory.|Disse kategory hevt de volgende {{PLURAL:$1|subkategory|$1 subkategoryen}}, van in totaal $2.}}",
-       "category-subcat-count-limited": "Disse kategorie hef de volgende {{PLURAL:$1|subkategorie|$1 subkategorieën}}.",
+       "category-subcat-count-limited": "Disse kategory hevt de volgende {{PLURAL:$1|subkategory|$1 subkategoryen}}.",
        "category-article-count": "{{PLURAL:$2|In disse kategory steyt allinnig de volgende syde.|De volgende {{PLURAL:$1|syde steyt|$1 syden stån}} in disse kategory, van in totaal $2.}}",
-       "category-article-count-limited": "In disse kategorie {{PLURAL:$1|steet de volgende zied|staon de volgende $1 ziejen}}.",
-       "category-file-count": "In disse kategorie {{PLURAL:$2|steet t volgende bestaand|staon de volgende $1 bestaanden, van in totaal $2}}.",
-       "category-file-count-limited": "In disse kategorie {{PLURAL:$1|steet t volgende bestaand|staon de volgende $1 bestaanden}}.",
+       "category-article-count-limited": "In disse kategory {{PLURAL:$1|steyt de volgende syde|stån de volgende $1 syden}}.",
+       "category-file-count": "In disse kategory {{PLURAL:$2|steyt et volgende bestand|stån de volgende $1 bestanden, van in totaal $2}}.",
+       "category-file-count-limited": "In disse kategory {{PLURAL:$1|steyt et volgende bestand|stån de volgende $1 bestanden}}.",
        "listingcontinuesabbrev": "(vervolg)",
-       "index-category": "Te indexeren ziejen",
+       "index-category": "Te indekseren syden",
        "noindex-category": "Syden dee neet indexeerd binnen",
-       "broken-file-category": "Ziejen mit verkeerde bestaandsverwiezingen",
-       "about": "Informasie",
+       "broken-file-category": "Syden mid verkeyrde bestandsverwysingen",
+       "about": "Informaty",
        "article": "Artikel",
-       "newwindow": "(niej vienster)",
+       "newwindow": "(ny vinster)",
        "cancel": "Afbreaken",
-       "moredotdotdot": "Meer...",
-       "morenotlisted": "Disse lieste is niet kompleet...",
-       "mypage": "Gebrukerszied",
+       "moredotdotdot": "Meyr...",
+       "morenotlisted": "Disse lyste is möägelik neet kompleet.",
+       "mypage": "Brukerssyde",
        "mytalk": "Myn oaverleg",
        "anontalk": "Oaverleg",
        "navigation": "Navigaty",
        "and": "&#32;en",
-       "faq": "Vragen die vake esteld wörden",
-       "actions": "Haandeling",
+       "faq": "Vake stelde vrågen",
+       "actions": "Handelingen",
        "namespaces": "Naamruumdes",
        "variants": "Varianten",
        "navigation-heading": "Navigatymenü",
        "errorpagetitle": "Foutmelding",
-       "returnto": "Weerumme naor $1.",
+       "returnto": "Weaderümme nå $1.",
        "tagline": "Van {{SITENAME}}",
        "help": "Hülpe",
        "search": "Söken",
        "updatedmarker": "bie-ewörken sinds mien leste bezeuk",
        "printableversion": "Afdrükbåre versy",
        "permalink": "Vaste verwysing",
-       "print": "Aofdrokken",
+       "print": "Afdrükken",
        "view": "Leasen",
        "view-foreign": "Bekyken up $1",
        "edit": "Bewarken",
        "edit-local": "Lokale beschrieving bewarken",
        "create": "Anmaken",
-       "create-local": "Lokale beschrieving derbie doon",
-       "delete": "Vortdoon",
-       "undelete_short": "$1 {{PLURAL:$1|versie|versies}} weerummeplaotsen",
-       "viewdeleted_short": "{{PLURAL:$1|Eén versie die vortedaon is|$1 versies die vortedaon bin}} bekieken",
+       "create-local": "Lokale beskryving tovogen",
+       "delete": "Vortsmyten",
+       "undelete_short": "$1 {{PLURAL:$1|versy|versys}} weaderümmeplaatsen",
+       "viewdeleted_short": "{{PLURAL:$1|Eyn versy dee vordsmeaten is|$1 versys dee vortsmeaten binnet}} bekyken",
        "protect": "Beveiligen",
-       "protect_change": "wiezigen",
+       "protect_change": "wysigen",
        "unprotect": "Beveiliging wysigen",
-       "newpage": "Nieje zied",
+       "newpage": "Nye syde",
        "talkpagelinktext": "Oaverleg",
        "specialpage": "Speciale syde",
        "personaltools": "Persoonlike instellingen",
        "talk": "Oaverleg",
        "views": "Weadergåven",
-       "toolbox": "Hülpmiddels",
-       "tool-link-userrights": "{{GENDER:$1|Gebrukersgruppen}} wysigen",
-       "tool-link-emailuser": "Disse {{GENDER:$1|gebruker}} een bericht stüren",
-       "imagepage": "Bestaandszied bekieken",
-       "mediawikipage": "Tiejige bekieken",
-       "templatepage": "Mal bekieken",
-       "viewhelppage": "Hulpzied bekieken",
-       "categorypage": "Kategoriezied bekieken",
-       "viewtalkpage": "Bekiek overlegzied",
+       "toolbox": "Warktügen",
+       "tool-link-userrights": "{{GENDER:$1|Brukersgruppen}} wysigen",
+       "tool-link-emailuser": "Disse {{GENDER:$1|bruker}} een bericht stüren",
+       "imagepage": "Bestandssyde bekyken",
+       "mediawikipage": "Berichtsyde bekyken",
+       "templatepage": "Mal bekyken",
+       "viewhelppage": "Hülpsyde bekyken",
+       "categorypage": "Kategorysyde bekyken",
+       "viewtalkpage": "Bekyk oaverlegsyde",
        "otherlanguages": "Andere språken",
        "redirectedfrom": "(döärstüürd vanaf \"$1\")",
-       "redirectpagesub": "Deurverwieszied",
-       "redirectto": "Deurverwiezen naor:",
+       "redirectpagesub": "Döärverwyssyde",
+       "redirectto": "Döärverwysen nå:",
        "lastmodifiedat": "Disse syde is et lätst wysigd up $1 üm $2.",
-       "viewcount": "Disse zied is $1 {{PLURAL:$1|keer|keer}} bekeken.",
-       "protectedpage": "Beveiligden zied",
+       "viewcount": "Disse syde is $1 {{PLURAL:$1|keyr}} bekeaken.",
+       "protectedpage": "Beveiligde syde",
        "jumpto": "Gå nå:",
        "jumptonavigation": "navigaty",
        "jumptosearch": "söök",
-       "view-pool-error": "De servers bin op heden overbelast.\nTe veule gebrukers proberen disse zied te bekieken.\nWacht effen veurda'j opniej toegang proberen te kriegen tot disse zied.\n\n$1",
-       "generic-pool-error": "De servers bin op heden overbelast.\nTe veule gebrukers proberen disse zied te bekieken.\nWacht effen veurda'j opniej toegang proberen te kriegen tot disse zied.",
-       "pool-timeout": "De maximumwachttied veur databankvergrendeling is verleupen.",
-       "pool-queuefull": "De wachtrie van de poel is vol",
-       "pool-errorunknown": "Onbekende fout",
-       "pool-servererror": "De dienst \"pool counter\" is niet beschikbaor ($1).",
+       "view-pool-error": "De servers binnet momenteel oaverbelasted.\nTe vöäle lüde proberet disse syde te bekyken.\nWacht evven vöärdat jy upny togang proberet te krygen tot disse syde.\n\n$1",
+       "generic-pool-error": "De servers binnet momenteel oaverbelasted.\nTe vöäle lüde proberet disse syde te bekyken.\nWacht evven vöärdat jy upny togang proberet te krygen tot disse syde.",
+       "pool-timeout": "De maksimumwachttyd vöär databankvergrendeling is verlöypen.",
+       "pool-queuefull": "De wachtryge van de pool is vul",
+       "pool-errorunknown": "Unbekende faut",
+       "pool-servererror": "De deenst \"pool counter\" is neet beskikbår ($1).",
        "aboutsite": "Oaver {{SITENAME}}",
        "aboutpage": "Project:Info",
        "copyright": "De inhoud is beschikbaor onder de $1 as der niks aanders an-egeven is.",
        "currentevents-url": "Project:In et nys",
        "disclaimers": "Vöärbehold",
        "disclaimerpage": "Project:Vöärbehold",
-       "edithelp": "Hulpe mit bewarken",
-       "helppage-top-gethelp": "Hulpe",
+       "edithelp": "Hülpe mid bewarken",
+       "helppage-top-gethelp": "Hülpe",
        "mainpage": "Vöärblad",
        "mainpage-description": "Vöärblad",
        "policy-url": "Project:Beleid",
        "portal-url": "Project:Gemeynskapsportaal",
        "privacy": "Gegeavensbeleid",
        "privacypage": "Project:Gegeavensbeleid",
-       "badaccess": "Gien toestemming",
-       "badaccess-group0": "Je hebben gien toestemming um disse aksie uut te voeren.",
-       "badaccess-groups": "Disse aksie kan allinnig uutevoerd wörden deur gebrukers uut {{PLURAL:$2|de groep|één van de groepen}}: $1.",
-       "versionrequired": "Versie $1 van MediaWiki is neudig",
-       "versionrequiredtext": "Versie $1 van MediaWiki is neudig um disse zied te gebruken. Zie [[Special:Version|Versie]].",
-       "ok": "Best",
+       "badaccess": "Geen tostemming",
+       "badaccess-group0": "Jy hebbet geen tostemming üm disse akty uut te voren.",
+       "badaccess-groups": "Disse akty kan allinnig uutvoord wörden döär brukers uut {{PLURAL:$2|de grup|eyn van de gruppen}}: $1.",
+       "versionrequired": "Versy $1 van MediaWiki is nöydig",
+       "versionrequiredtext": "Versy $1 van MediaWiki is nöydig üm disse syde te bruken. See [[Special:Version|Versy]].",
+       "ok": "Okee",
        "retrievedfrom": "Van \"$1\"",
-       "youhavenewmessages": "Je hebben $1 ($2).",
-       "youhavenewmessagesfromusers": "Je hebben $1 van {{PLURAL:$3|n aandere gebruker|$3 gebrukers}} ($2).",
-       "youhavenewmessagesmanyusers": "Je hebben $1 van n bulte gebrukers ($2).",
-       "newmessageslinkplural": "{{PLURAL:$1|n niej bericht|999=nieje berichten}}",
-       "newmessagesdifflinkplural": "leste {{PLURAL:$1|wieziging|999=wiezigingen}}",
+       "youhavenewmessages": "{{PLURAL:$3|Jy hebbet}} $1 ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Jy hebbet}} $1 van {{PLURAL:$3|een andere bruker|$3 brukers}} ($2).",
+       "youhavenewmessagesmanyusers": "Jy hebbet $1 van een bült brukers ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|een ny bericht|999=nye berichten}}",
+       "newmessagesdifflinkplural": "läste {{PLURAL:$1|wysiging|999=wysigingen}}",
        "youhavenewmessagesmulti": "Jy hebbet nye berichten up $1",
        "editsection": "bewark",
        "editold": "bewark",
-       "viewsourceold": "brontekste bekyken",
+       "viewsourceold": "brontekst bekyken",
        "editlink": "bewark",
        "viewsourcelink": "brontekst bekyken",
        "editsectionhint": "Bewarkingsveld: $1",
        "toc": "Inhold",
-       "showtoc": "Bekieken",
-       "hidetoc": "Verbarg",
+       "showtoc": "bekyken",
+       "hidetoc": "verbargen",
        "collapsible-collapse": "Inklappen",
        "collapsible-expand": "Uutklappen",
-       "confirmable-confirm": "{{GENDER:$1|Bi'j}} daor wisse van?",
+       "confirmable-confirm": "{{GENDER:$1|Bin jy}} dår wisse van?",
        "confirmable-yes": "Ja",
-       "confirmable-no": "Nee",
-       "thisisdeleted": "Bekieken of herstellen van $1?",
-       "viewdeleted": "Bekiek $1?",
-       "restorelink": "{{PLURAL:$1|versie die vortedaon is|versies die vortedaon bin}}",
-       "feedlinks": "Voer:",
-       "feed-invalid": "Voertype wörden niet ondersteunt.",
-       "feed-unavailable": "Syndicakievoer is niet beschikbaor",
-       "site-rss-feed": "$1 RSS-voer",
-       "site-atom-feed": "$1 Atom-voer",
-       "page-rss-feed": "\"$1\" RSS-voer",
-       "page-atom-feed": "\"$1\" Atom-voer",
+       "confirmable-no": "Ney",
+       "thisisdeleted": "Bekyken of herstellen van $1?",
+       "viewdeleted": "Bekyk $1?",
+       "restorelink": "{{PLURAL:$1|versy dee vordsmeaten is|versys dee vordsmeaten binnet}}",
+       "feedlinks": "Voder:",
+       "feed-invalid": "Vodertype wördt neet understöänt.",
+       "feed-unavailable": "Syndikatyvoder is neet beskikbår",
+       "site-rss-feed": "$1 RSS-voder",
+       "site-atom-feed": "$1 Atom-voder",
+       "page-rss-feed": "\"$1\" RSS-voder",
+       "page-atom-feed": "\"$1\" Atom-voder",
        "red-link-title": "$1 (syde besteyt noch neet)",
-       "sort-descending": "Aoflopend sorteren",
-       "sort-ascending": "Oplopend sorteren",
-       "nstab-main": "Artikel",
-       "nstab-user": "Gebruker",
-       "nstab-media": "Media",
+       "sort-descending": "Afloupend sorteren",
+       "sort-ascending": "Uploupend sorteren",
+       "nstab-main": "Syde",
+       "nstab-user": "Brukerssyde",
+       "nstab-media": "Mediasyde",
        "nstab-special": "Speciale syde",
        "nstab-project": "Projektsyde",
        "nstab-image": "Bestand",
-       "nstab-mediawiki": "Bericht",
+       "nstab-mediawiki": "Systeembericht",
        "nstab-template": "Mal",
        "nstab-help": "Hülpe",
        "nstab-category": "Kategory",
        "mainpage-nstab": "Vöärblad",
-       "nosuchaction": "De op-egeven haandeling besteet niet",
+       "nosuchaction": "De upgeaven handeling besteyt neet",
        "nosuchactiontext": "De opdrachte in t webadres in ongeldig.\nJe hebben t webadres misschien verkeerd in-etikt of de verkeerde verwiezing evolgd.\nDit kan oek dujen op n fout in de programmatuur van {{SITENAME}}.",
        "nosuchspecialpage": "Der besteet gien spesiale zied mit disse naam",
        "nospecialpagetext": "<strong>Disse spesiale zied wörden niet herkend deur de programmatuur.</strong>\n\nn Lieste mit bestaonde spesiale ziejen ku'j vienen op [[Special:SpecialPages|{{int:specialpages}}]].",
        "anoneditwarning": "<strong>Waorschuwing:</strong> je bin niet an-emeld.\nJoew IP-adres zal op-esleugen wörden a'j wiezigingen op disse zied anbrengen. A'j je eigen <strong>[$1 anmelden]</strong> of <strong>[$2 inschrieven]</strong> dan koemen joew bewarkingen onder joew gebrukersnaam te staon, samen mit aandere veurdelen.",
        "anonpreviewwarning": "''Je bin niet an-emeld.''\n''Deur de bewarking op te slaon wörden joew IP-adres op-esleugen in de ziedgeschiedenisse.''",
        "missingsummary": "'''Herinnering:''' je hebben gien samenvatting op-egeven veur de bewarking. A'j noen weer op ''Opslaon'' klikken wörden de bewarking zonder samenvatting op-esleugen.",
-       "missingcommenttext": "Plaots joew opmarking hieronder.",
+       "missingcommenttext": "Skryv een upmarking.",
        "missingcommentheader": "<strong>Waorschuwing:</strong> je hebben der gien onderwarptitel bie ezet. A'j noen weer op \"$1\" klikken, dan wörden de bewarking op-esleugen zonder onderwarptitel.",
-       "summary-preview": "Samenvatting naokieken:",
-       "subject-preview": "Onderwarp naokieken:",
+       "summary-preview": "Samenvatting nåkyken:",
+       "subject-preview": "Underwarp nåkyken:",
        "blockedtitle": "Gebruker is eblokkeerd",
        "blockedtext": "<strong>Juw brukersname of IP-adres is blokkeerd.</strong>\n\nJy binnet blokkeerd döär $1.\nDe upgeaven readen is <em>$2</em>.\n\n* Blokkeerd vanaf: $8\n* Blokkeerd tot: $6\n* Bedoold üm te blokkeren: $7\n\nJy künnet kontakt upneamen mid $1 of een andere [[{{MediaWiki:Grouppage-sysop}}|beheyrder]] üm de blokkering te bepråten.\nJy künnet de funkty \"{{int:emailuser}}\" neet bruken, behalven as jy een geldig e-postadres in juw [[Special:Preferences|instellingen]] upgeaven hebbet en et gebruuk van disse funkty neet blokkeerd is.\nEt IP-adres wat jy nu bruket is $3, en et blokkeringsnummer is #$5.\nVermeld de gegeavens dee hyrboaven stån as jy argens up disse blokkering reageren.",
        "autoblockedtext": "Joew IP-adres is automaties eblokkeerd umdat t gebruukt wördt deur n aandere gebruker, die eblokkeerd wördt deur $1.\nDe reden hierveur was:\n\n:''$2''\n\n* Begint: $8\n* Löp of nao: $6\n* Wee eblokkeerd wördt: $7\n\nJe kunnen kontakt opnemen mit $1 of n van de aandere\n[[{{MediaWiki:Grouppage-sysop}}|beheerders]] um de blokkering te bepraoten.\n\nNB: je kunnen de opsie \"n bericht sturen\" niet gebruken, behalven a'j n geldig netpostadres op-egeven hebben in de [[Special:Preferences|gebrukersveurkeuren]] en je niet eblokkeerd bin.\n\nJoew IP-adres is $3 en joew blokkeernummer is $5.\nGeef disse nummers deur a'j kontakt mit ene opnemen over de blokkering.",
        "histfirst": "Eerste",
        "histlast": "Leste",
        "historysize": "({{PLURAL:$1|1 byte|$1 bytes}})",
-       "historyempty": "(leeg)",
+       "historyempty": "leadig",
        "history-feed-title": "Wiezigingsoverzichte",
        "history-feed-description": "Wiezigingsoverzichte veur disse zied op de wiki",
        "history-feed-item-nocomment": "$1 op $2",
        "search-section": "(onderwarp $1)",
        "search-file-match": "(kümt oavereyne mid de inhold van et bestand)",
        "search-suggest": "Bedoelden je: $1",
-       "search-interwiki-caption": "Zusterprojekten",
+       "search-interwiki-caption": "Resultaten van süsterprojekten",
        "search-interwiki-default": "Resultaoten van $1:",
        "search-interwiki-more": "(meer)",
        "search-relatedarticle": "Verwaant",
        "compare-invalid-title": "De titel die'j op-egeven hebben, is ongeldig.",
        "compare-title-not-exists": "De titel die'j op-egeven hebben, besteet niet.",
        "compare-revision-not-exists": "De versie die'j op-egeven hebben, besteet niet.",
-       "diff-form": "een '''formelier'''",
+       "diff-form": "Wysigingen",
        "dberr-problems": "t Spiet ons, mer disse webstee hef op t moment wat techniese problemen.",
        "dberr-again": "Wach n paor minuten en probeer t daornao opniej.",
        "dberr-info": "(Kan gien verbiending maken mit de databankeserver: $1)",
        "expandtemplates": "Mallen substitueren",
        "expand_templates_intro": "Disse spesiale zied leest de op-egeven tekste en substitueert rekursief alle mallen in de tekste. Oek ondersteunde parserfunksies zo as <code><nowiki>{{</nowiki>#language:…}}</code> en variabels zo as <nowiki>{{</nowiki>CURRENTDAY}}&mdash. Zwat alle teksten tussen dubbelde krulhaken wörden esubstitueerd.",
        "expand_templates_title": "Titel, veur {{FULLPAGENAME}}, enz.:",
-       "expand_templates_input": "Invoertekste:",
+       "expand_templates_input": "Wikitekst invoren:",
        "expand_templates_output": "Resultaot",
        "expand_templates_xml_output": "XML-uutvoer",
        "expand_templates_ok": "Oké",
        "special-characters-title-minus": "minteken",
        "mw-widgets-abandonedit": "Bi'j der wisse van da'j de naokiekmodus verlaoten willen zonder eerst op te slaon?",
        "mw-widgets-abandonedit-discard": "Wiezigingen vortsmieten",
-       "mw-widgets-abandonedit-keep": "Verdan gaon mit bewarken",
-       "mw-widgets-abandonedit-title": "Wee'j t zeker?",
+       "mw-widgets-abandonedit-keep": "Vöärdan gån mid bewarken",
+       "mw-widgets-abandonedit-title": "Bin jy dår wisse van?",
        "randomrootpage": "Willeköärige stamsyde"
 }
index a2e6203..987027c 100644 (file)
        "category-empty": "''यो श्रेणीमा हाल कुनै पृष्ठ या मिडियाहरु रहेका छैनन् ।''",
        "hidden-categories": "{{PLURAL:$1|लुकाइएको श्रेणी|लुकाइएका श्रेणीहरू}}",
        "hidden-category-category": "लुकाइएका श्रेणीहरू",
-       "category-subcat-count": "{{PLURAL:$2|यो श्रेणीमा निम्न उपश्रेणीहरू मात्र छन्।|यो श्रेणीको निम्न {{PLURAL:$1|उपश्रेणी|$1 उपश्रेणीहरू}},  $2 कुल मध्ये श्रेणीहरू छन् ।}}",
+       "category-subcat-count": "{{PLURAL:$2|यो श्रेणीमा निम्न उपश्रेणीहरू मात्र छन्।|यो श्रेणीको निम्न {{PLURAL:$1|उपश्रेणी|$1 उपश्रेणीहरू}}, $2 कुल मध्ये श्रेणीहरू छन्।}}",
        "category-subcat-count-limited": "यो श्रेणीमा निम्न {{PLURAL:$1|उपश्रेणी|$1 उपश्रेणीहरू}} छन् ।",
-       "category-article-count": "{{PLURAL:$2|यो श्रेणीमा एक मात्र पृष्ठरहेको छ।|कुल $2 मध्ये यो श्रेणीमा {{PLURAL:$1|पृष्ठ|$1 पृष्ठहरू}} रहेका छन् । }}",
+       "category-article-count": "{{PLURAL:$2|यो श्रेणीमा एक मात्र पृष्ठरहेको छ।|कुल $2 मध्ये यो श्रेणीमा {{PLURAL:$1|पृष्ठ|$1 पृष्ठहरू}} रहेका छन्}}",
        "category-article-count-limited": "निम्न {{PLURAL:$1|पृष्ठ|$1 पृष्ठहरू}} यस श्रेणीमा रहेको ।",
        "category-file-count": "{{PLURAL:$2|यो श्रेणीमा निम्न फाइल मात्र छ ।|निम्न श्रेणीमा {{PLURAL:$1|फाइल|$1 फाइलहरू}} , कुल  $2 मध्ये रहेको ।}}",
        "category-file-count-limited": "निम्न  {{PLURAL:$1|फाइल|$1 फाइलहरू}} यस श्रेणीमा रहेको ।",
        "newarticle": "(नयाँ)",
        "newarticletext": "तपाईंले अहिले सम्म नभएको पृष्ठको लिङ्क पहिल्याउनु भएको छ।\nयो पृष्ठ निर्माण गर्न तलको कोष्ठमा टाइप गर्नुहोस्  ।(थप जानकारीको लागि [$1 help page] हेर्नुहोस् )।\nयहाँ त्यत्तिकै आइपुग्नु भएको हो भने , ब्राउजरको  '''back''' बटन थिच्नुहोस् ।",
        "anontalkpagetext": "----''यो वार्तालाप पृष्ठ अज्ञात प्रयोगकर्ताको हो जसले अहिलेसम्म खाता बनाएकै छैन, अथवा जसले यस पृष्ठको उपयोग गर्दैन।\nयस कारण हामीले उसलाई उसको आइपी ठेगानाले चिन्न सक्छौं। \nयस्तो आइपी ठेगाना धेरै प्रयोगकर्ताहरूको साझा हुनसक्छ।\nयदि तपाईं अज्ञात प्रयोगकर्ता हुनुहुन्छ र तपाईंमाथि नचाहिँदो टिप्पणी भएको अनुभव गर्नुहुन्छ भने भविष्यमा अन्य अज्ञात प्रयोगकर्तासित अलमलिनबाट बच्न कृपया [[Special:CreateAccount|खाता खोल्नुहोस्]] अथवा [[Special:UserLogin|प्रवेश गर्नुहोस्]] ''",
-       "noarticletext": "यस लेखमा अहिले केहि पनि पाठ छैन ।\nतपाईंले अन्य पृष्ठमा [[Special:Search/{{PAGENAME}}|यस पृष्ठको शीर्षकको लागि खोज]] गर्न सक्नुहुन्छ ।\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} पृष्ठ सम्बन्धित ढड्डामा खोज],\nवा [{{fullurl:{{FULLPAGENAME}}|action=edit}}  यसै पृष्ठलाई सम्पादन गर्ने]</span>.",
+       "noarticletext": "यस लेखमा अहिले केहि पनि पाठ छैन।\nतपाईँले अन्य पृष्ठमा [[Special:Search/{{PAGENAME}}|यस पृष्ठको शीर्षकको लागि खोज]] गर्न सक्नुहुन्छ।\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} पृष्ठ सम्बन्धित ढड्डामा खोज्ने],\nवा [{{fullurl:{{FULLPAGENAME}}|action=edit}} यसै पृष्ठलाई सम्पादन गर्ने]</span>।",
        "noarticletext-nopermission": "यस लेखमा अहिले कुनै पनि पाठ छैन ।\nतपाईंले अन्य पृष्ठमा [[Special:Search/{{PAGENAME}}|यस पृष्ठको शीर्षकको लागि खोज]] गर्न सक्नुहुन्छ,\nअथवा <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|पृष्ठ={{FULLPAGENAMEE}}}} सम्बन्धित लगहरू खोज्न सक्नुहुनेछ ]</span> तर तपाईंलाई नयाँ पृष्ठ बनाउने अधिकार छैन।",
        "missing-revision": "\"{{FULLPAGENAME}}\" पृष्ठको अवतरण #$1 रहेको छैन।\n\nसामान्य रूपमा यसो एउटा हटाइएको पृष्ठको पुरानो लिङ्कमा क्लिक गर्दा हुन्छ।\nअधिक जानकारीको लागि तपाईं [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} हटाएको लग] हेर्न सक्नुहुन्छ।",
        "userpage-userdoesnotexist": "प्रयोगकर्ताको खाता  \"<nowiki>$1</nowiki>\" दर्ता गरिएको छैन ।\nतपाईंले पृष्ठ निर्माण/सम्पादन गर्न चाहनु भएको भए जाँच गर्नुहोस् ।",
        "rev-deleted-text-view": "यस पृष्ठको संशोधन '''मेटिएकोछ'''।\nतपाईंले हेर्न सक्नुहुन्छ; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} मेटिएको लगमा विवरण पाउन सकिन्छ]।",
        "rev-suppressed-text-view": "यस पृष्ठको पुनरावलोकन <strong>थिचिएको छ</strong>।\nप्रबन्धकको हैसियतले हेर्न सक्नुहुन्छ; [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को थिचिएको लगमा विवरण पाउन सकिन्छ]",
        "rev-deleted-no-diff": "तपाईंले यसको भिन्नता पाउन सक्नुहुन्न किनभने यस पृष्ठको पुनरावलोकन <strong>मेटाइएको छ</strong>'।\nयसको विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को मेटाइएको लगमा पाउन सक्नुहुन्छ]।",
-       "rev-suppressed-no-diff": "तपाà¤\88à¤\82 यसको भिन्नता हेर्न सक्नुहुन्न किनभने यसको एउटा संशोधन <strong>मेटाइएको</strong>छ।",
+       "rev-suppressed-no-diff": "तपाà¤\88à¤\81 यसको भिन्नता हेर्न सक्नुहुन्न किनभने यसको एउटा संशोधन <strong>मेटाइएको</strong>छ।",
        "rev-deleted-unhide-diff": "यस पृष्ठका पुनरावलोकनहरू मध्ये एउटा भिन्नता <strong>मेटाइएकोछ</strong>।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को मेटाइएको लगमा पाउन सकिन्छ]।\nयदि चाहनु भयो भने प्रवन्धकको हैसियतले [यो भिन्नता $1] हेर्न सक्नुहुन्छ।",
        "rev-suppressed-unhide-diff": "यस पृष्ठको पुनरावलोकनहरू मध्ये एउटा भिन्नता <strong>थिचिएको छ</strong>।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/suppress|पृष्ठ={{FULLPAGENAMEE}}}}को थिचिएको लगमा पाउन सकिन्छ]।\nयदि चाहनु भयो भने प्रबन्धकको हैसियतमा [यो भिन्नता $1] हेर्न सक्नुहुन्छ।",
        "rev-deleted-diff-view": "यस भिन्नताका संशोधनहरू मध्येको एउटा चाहिं <strong>मेटियो।<strong> \nतपाईंले यस भिन्नतालाई हेर्न सक्नुहुन्छ; सबै विवरण  [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} मेटाइएको लग]मा पाउन सकिनेछ।",
        "difference-title": "\"$1\" को बिचमा भिन्नता",
        "difference-title-multipage": "\"$1\" तथा \"$2\" को बिचमा भिन्नता",
        "difference-multipage": "(पृष्ठहरूमा भिन्नता)",
-       "lineno": "पà¤\82क्ति $1:",
+       "lineno": "पà¤\99à¥\8dक्ति $1:",
        "compareselectedversions": "छानिएका संस्करणहरू दाँज्नुहोस्",
        "showhideselectedversions": "छानिएका पुनरावलोकनहरू देखाउने/लुकाउने",
        "editundo": "रद्द गर्ने",
        "recentchanges-label-minor": "यो साधारण सम्पादन हो",
        "recentchanges-label-bot": "यो सम्पादन बोटद्वारा गरिएको थियो",
        "recentchanges-label-unpatrolled": "यो सम्पादन अहिले सम्म गस्ती गरिएको छैन",
-       "recentchanges-label-plusminus": "यति बाइटहरू संख्याले पृष्ठको आकार परिवर्तन भएको छ",
+       "recentchanges-label-plusminus": "यति बाइट सङ्ख्याले यस पृष्ठको आकार परिवर्तन भएको छ",
        "recentchanges-legend-heading": "<strong>आदर्श वाक्य:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नयाँ पृष्ठहरूको सूची]] यो पनि हेर्नुहोस्)",
        "recentchanges-legend-plusminus": "(''±१२३'')",
        "rcfilters-filter-categorization-label": "परिवर्तित श्रेणी",
        "rcfilters-filter-lastrevision-label": "हालको संस्करण",
        "rcnotefrom": "तल <strong>$2</strong> देखि (<strong>$1</strong> सम्म) {{PLURAL:$5|भएका परिवर्तनहरू देखाइएको छ|भएका परिवर्तनहरू देखाइन्छ}}।",
-       "rclistfrom": "$3 $2 देखिका नयाँ परिवर्तनहरू देखाउनु",
+       "rclistfrom": "$3 $2 देखिका नयाँ परिवर्तनहरू देखाउनुहोस्",
        "rcshowhideminor": "$1 सामान्य सम्पादन",
        "rcshowhideminor-show": "देखाउनुहोस्",
        "rcshowhideminor-hide": "लुकाउनुहोस्",
        "recentchangeslinked-feed": "सम्बन्धित परिवर्तनहरू",
        "recentchangeslinked-toolbox": "सम्बन्धित परिवर्तनहरू",
        "recentchangeslinked-title": "\"$1\" सँग सम्बन्धित परिवर्तन",
-       "recentchangeslinked-summary": "कुनै पृष्ठको वा  यससँग सम्बन्धित परिवर्तन हेर्नको लागि उक्त पृष्ठको नाम हाल्नुहोस। (कुनै श्रेणीको सामाग्रीहरुको लागि {{ns:category}}: श्रेणीको नाम हल्नुहोस ।  [[Special:Watchlist|तपाईंको अवलोकन सूची]]का पृष्ठहरू <strong>गाढा अक्षरमा</strong> छन् ।",
+       "recentchangeslinked-summary": "कुनै पृष्ठको वा यससँग सम्बन्धित परिवर्तन हेर्नको लागि उक्त पृष्ठको नाम हाल्नुहोस्। (कुनै श्रेणीको सामाग्रीहरूको लागि {{ns:category}}:श्रेणीको नाम) हाल्नुहोस्।  [[Special:Watchlist|तपाईँको अवलोकन सूची]]का पृष्ठहरू <strong>गाढा अक्षरमा</strong> छन्।",
        "recentchangeslinked-page": "पृष्ठ नाम:",
        "recentchangeslinked-to": "यसको सट्टा यो पृष्ठसँग जोडिएका पृष्ठहरूको परिवर्तन देखाउने",
        "upload": "फाइल उर्ध्वभरण",
        "filehist-filesize": "फाइल आकार",
        "filehist-comment": "टिप्पणी",
        "imagelinks": "फाइलको प्रयोगहरू",
-       "linkstoimage": "यस फाइलमा निम्न{{PLURAL:$1|पृष्ठ जोडिन्छ|$1 पृष्ठहरू जोडिन्छन्}}:",
+       "linkstoimage": "यस फाइलमा निम्न {{PLURAL:$1|पृष्ठ जोडिन्छ|$1 पृष्ठहरू जोडिन्छन्}}:",
        "linkstoimage-more": "$1 भन्दा अधिक {{PLURAL:$1|पृष्ठ लिङ्क|पृष्ठ लिङ्कहरू}} यस फाइलसँग जोडिएको छ। \nनिम्नलिखित सूची फाइलसँग {{PLURAL:$1|पहिलो पृष्ठ लिङ्क|पहिलो $1 पृष्ठ लिङ्कहरू}} जोडिने देखाउँछ।\n[[Special:WhatLinksHere/$2|पूर्ण सूची]] पनि उपलब्ध छ।",
-       "nolinkstoimage": "यà¥\8b à¤«à¤¾à¤\88लसà¤\82à¤\97 à¤²à¤¿à¤\82à¤\95भà¤\8fà¤\95à¥\8b à¤\95à¥\81नà¥\88 à¤ªà¥\83षà¥\8dठ à¤\9bà¥\88न.",
+       "nolinkstoimage": "यà¥\8b à¤«à¤¾à¤\87लसà¤\81à¤\97 à¤\95à¥\81नà¥\88 à¤ªà¤¨à¤¿ à¤ªà¥\83षà¥\8dठ à¤\9cà¥\8bडिà¤\8fà¤\95à¥\8b à¤\9bà¥\88न।",
        "morelinkstoimage": "यस फाइलको [[Special:WhatLinksHere/$1|थप लिंकहरू]] हेर्नुहोस् ।",
        "linkstoimage-redirect": "$1 (फाइल अनुप्रेषण) $2",
        "duplicatesoffile": "निम्नलिखित {{PLURAL:$1|फाइलको प्रतिलिपि हो|$1 फाइलहरूको प्रतिलिपि हो}} ([[Special:FileDuplicateSearch/$2|अधिक जानकारीहरू]]):",
        "undelete-show-file-submit": "हो",
        "namespace": "नामस्थान:",
        "invert": "रोजाइ उल्टाउने",
-       "tooltip-invert": "à¤\9bानिà¤\8fà¤\95ा à¤¨à¥\87मसà¥\8dपà¥\87सहरà¥\82मा à¤°à¤¹à¥\87à¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82मा à¤\97रिà¤\8fà¤\95ा à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\82 à¤²à¥\81à¤\95ाà¤\89न à¤¯à¤¸à¤®à¤¾ à¤\9aिनà¥\8b à¤²à¤\97ाà¤\89नà¥\81हà¥\8bसà¥\8d  (र à¤¸à¤®à¥\8dबनà¥\8dधित à¤¨à¥\87मसà¥\8dपà¥\87स à¤¯à¤¦à¤¿ à¤\9bानिà¤\8fà¤\95ा à¤­à¤\8f)",
+       "tooltip-invert": "à¤\9bानिà¤\8fà¤\95ा à¤¨à¤¾à¤®à¤ªà¤¦à¤¹à¤°à¥\82मा à¤°à¤¹à¥\87à¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82मा à¤\97रिà¤\8fà¤\95ा à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\82 à¤²à¥\81à¤\95ाà¤\89न à¤¯à¤¸à¤®à¤¾ à¤\9aिनà¥\8b à¤²à¤\97ाà¤\89नà¥\81हà¥\8bसà¥\8d  (र à¤\9bानिà¤\8fà¤\95ा à¤­à¤\8f à¤¸à¤®à¥\8dबनà¥\8dधित à¤¨à¤¾à¤®à¤ªà¤¦)",
        "tooltip-whatlinkshere-invert": "छानिएको नामस्थानको पृष्ठहरूसँग लिङ्कहरूलाई लुकाउनका लागि यस बाकसलाई चिन्हित गर्नुहोस",
-       "namespace_association": "समà¥\8dबनà¥\8dधित à¤¨à¥\87मसà¥\8dपà¥\87स",
-       "tooltip-namespace_association": "वारà¥\8dतालाप à¤¯à¤¾ à¤µà¤¿à¤·à¤¯ à¤¨à¥\87मसà¥\8dपà¥\87सहरà¥\81लाà¤\88 à¤¸à¤®à¥\8dवनà¥\8dधित à¤¨à¥\87मसà¥\8dपà¥\87सà¤\95à¥\8b à¤°à¥\81पमा à¤²à¤¿à¤¨à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¸à¤¨à¥\8dदà¥\81à¤\95मा à¤\9aिनà¥\8b à¤²à¤\97ाà¤\89नà¥\81हà¥\8bस।",
+       "namespace_association": "समà¥\8dबनà¥\8dधित à¤¨à¤¾à¤®à¤ªà¤¦",
+       "tooltip-namespace_association": "वारà¥\8dतालाप à¤¯à¤¾ à¤µà¤¿à¤·à¤¯ à¤¨à¤¾à¤®à¤ªà¤¦à¤¹à¤°à¥\82लाà¤\88 à¤¸à¤®à¥\8dबनà¥\8dधित à¤¨à¤¾à¤®à¤ªà¤¦à¤\95à¥\8b à¤°à¥\81पमा à¤²à¤¿à¤¨à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¸à¤¨à¥\8dदà¥\81à¤\95मा à¤\9aिनà¥\8b à¤²à¤\97ाà¤\89नà¥\81हà¥\8bसà¥\8d।",
        "blanknamespace": "(मुख्य)",
        "contributions": "{{GENDER:$1|प्रयोगकर्ता}}का योगदानहरू",
        "contributions-title": "$1को प्रयोगकर्ता योगदानहरू",
        "tooltip-pt-mycontris": "{{GENDER:|तपाईंका}} योगदानहरूको सूची",
        "tooltip-pt-login": "तपाईंलाई प्रवेस गर्न सुझाव दिइन्छ ; तर यो जरुरी भने छैन",
        "tooltip-pt-logout": "निर्गमन",
-       "tooltip-pt-createaccount": "तपाà¤\88à¤\82लाà¤\88 à¤\96ाता à¤¬à¤¨à¤¾à¤\89न à¤° à¤²à¤\97 à¤\87न à¤\97रà¥\8dन à¤¹à¤¾à¤®à¤¿ à¤ªà¥\8dरà¥\8bतà¥\8dसाहित à¤\97रà¥\8dà¤\9bà¥\8c; à¤¤à¤¥à¤¾à¤ªà¤¿, à¤¯à¥\8b à¤\85निवारà¥\8dय à¤­à¤¨à¥\87 à¤\9bà¥\88न ।",
+       "tooltip-pt-createaccount": "तपाà¤\88à¤\81लाà¤\88 à¤\96ाता à¤¬à¤¨à¤¾à¤\89न à¤° à¤ªà¥\8dरवà¥\87श à¤\97रà¥\8dन à¤¹à¤¾à¤®à¥\80 à¤ªà¥\8dरà¥\8bतà¥\8dसाहित à¤\97रà¥\8dà¤\9bà¥\8cà¤\82; à¤¤à¤¥à¤¾à¤ªà¤¿, à¤¯à¥\8b à¤\85निवारà¥\8dय à¤­à¤¨à¥\87 à¤\9bà¥\88न।",
        "tooltip-ca-talk": "सामग्री पृष्ठबारेमा छलफल",
        "tooltip-ca-edit": "यो पृष्ठ सम्पादन गर्ने",
        "tooltip-ca-addsection": "नयाँ खण्ड सुरु गर्नुहोस्",
        "tooltip-t-upload": "फाइल अपलोड गर्ने",
        "tooltip-t-specialpages": "सबै विशेष पृष्ठहरूको सूची",
        "tooltip-t-print": "यो पृष्ठको मुद्रण योग्य संस्करण",
-       "tooltip-t-permalink": "पà¥\83षà¥\8dठà¤\95à¥\8b à¤¯à¥\8b à¤ªà¥\81नरावलà¥\8bà¤\95नà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¸à¥\8dथाà¤\88 लिङ्क",
-       "tooltip-ca-nstab-main": "सामग्री पृष्ठ हेर्नुहोस",
+       "tooltip-t-permalink": "पà¥\83षà¥\8dठà¤\95à¥\8b à¤¯à¥\8b à¤ªà¥\81नरावलà¥\8bà¤\95नà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¸à¥\8dथायà¥\80 लिङ्क",
+       "tooltip-ca-nstab-main": "सामग्री पृष्ठ हेर्नुहोस",
        "tooltip-ca-nstab-user": "प्रयोगकर्ता पृष्ठ हेर्नुहोस्",
        "tooltip-ca-nstab-media": "मिडिया पृष्ठ हेर्नुहोस्",
        "tooltip-ca-nstab-special": "यो विशेष पृष्ठ हो, यो सम्पादन गर्न सकिदैन",
        "fileduplicatesearch-result-1": "फाइल\"$1\" को दुरुस्त नक्कलहरु छैनन् ।",
        "fileduplicatesearch-result-n": "फाइल\"$1\" को {{PLURAL:$2|1 दुरुस्त नक्कल|$2 दुरुस्त नक्कलहरु}} छन् ।",
        "fileduplicatesearch-noresults": "\"$1\" नामको फाइल पाइएन।",
-       "specialpages": "विशेष पृष्ठ",
+       "specialpages": "विशेष पृष्ठहरू",
        "specialpages-note-top": "आदर्श वाक्य",
        "specialpages-note-restricted": "* साधारण विशेष पृष्ठहरू।\n* <span class=\"mw-specialpagerestricted\">निषेधित विशेष पृष्ठहरू।</span>",
        "specialpages-group-maintenance": "मर्मत प्रतिवेदनहरू",
index e55b753..115e0a2 100644 (file)
        "grant-editpage": "ߞߐߜߍ߫ ߓߍߓߊ߮ ߡߊߦߟߍ߬ߡߊ߲߫",
        "grant-editprotected": "ߞߐߜߍ߫ ߟߊߞߊ߲ߘߊߣߍ߲ ߡߊߦߟߍ߬ߡߊ߲߫",
        "grant-highvolume": "ߢߊ߲ߞߊ߲-ߛߊ߲ߘߐߕߊ ߡߊߦߟߍߡߊ߲ ߦߴߌ ߘߐ߫",
+       "grant-oversight": "ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߢߡߊߘߏ߲߰ ߊ߬ ߣߌ߫ ߞߊ߬ ߟߢߊ߬ߟߌ ߟߎ߬ ߖߏ߬ߛߌ߬.",
        "grant-patrol": "ߞߐߜߍ ߟߎ߬ ߓߍ߬ߙߍ߲߬ߓߍ߬ߙߍ߲߬ߠߌ߲ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲",
        "grant-privateinfo": "ߘߎ߲߬ߘߎ߬ߡߊ߬ ߞߌߓߊߙߏߦߊ ߟߊߛߐ߬ߘߐ߲߬",
        "grant-protect": "ߞߐߜߍ ߟߎ߬ ߟߊߞߊ߲ߘߊ߫ ߊ߬ ߣߌ߫ ߞߵߊ߬ߟߎ߬ ߟߊߞߊ߲ߘߊߣߍ߲ ߓߐ߫",
        "action-writeapi": "ߛߓߍߟߌ API ߟߊߓߊ߯ߙߊ߫",
        "action-delete": "ߞߐߜߍ ߣߌ߲߬ ߖߏ߰ߛߌ߬",
        "action-deleterevision": "ߟߢߊ߬ߟߌ ߟߎ߬ ߖߏ߬ߛߌ߬",
+       "action-deletelogentry": "ߘߊ߲ߖߐ ߡߎ߰ߡߍ ߖߏ߬ߛߌ߬",
        "action-deletedhistory": "ߞߐߜߍ ߟߎ߬ ߖߏ߰ߛߌ߬ߟߌ ߘߐ߬ߝߐ ߦߋ߫",
        "action-deletedtext": "ߟߢߊ߬ߟߌ ߖߏ߰ߛߌ߬ߣߍ߲ ߠߎ߬ ߛߓߍߟߌ ߦߋ߫.",
        "action-browsearchive": "ߞߐߜߍ߬ ߖߏ߰ߛߌ߬ߣߍ߲ ߠߎ߬ ߢߌߣߌ߲߫",
        "action-undelete": "ߞߐߜߍ ߖߏ߰ߛߌ߬ߓߊߟߌ ߟߎ߬",
+       "action-suppressrevision": "ߟߢߊ߬ߟߌ߬ ߢߡߊߘߏ߲߰ߣߍ߲ ߠߎ߬ ߦߋ߫ ߊ߬ ߣߌ߫ ߞߵߊ߬ߟߎ߬ ߟߊߞߎߣߎ߲߫.",
        "action-suppressionlog": "ߘߎ߲߬ߘߎ߬ߡߊ߬ ߘߎ߲ߛߓߍ ߣߌ߲߬ ߦߋ߫",
        "action-block": "ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߣߌ߲߬ ߓߊ߬ߟߌ߬ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߡߊ߬",
        "action-protect": "ߞߐߜߍ ߣߌ߲߬ ߟߊ߬ߞߊ߲߬ߘߊ߬ߟߌ߬ ߞߛߊߞߊ ߡߊߝߊ߬ߟߋ߲߬",
+       "action-rollback": "ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߞߐߟߕߊ ߟߊ߫ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߟߊߞߐߛߊ߬ߦߌ߬ ߖߏߣߊߖߏߣߊ߫߹ ߡߍ߲ ߞߊ߬ ߞߐߜߍ߫ ߞߙߍߞߙߍߣߍ߲ ߡߊߦߟߍ߬ߡߊ߲߫.",
        "action-import": "ߞߐߜߍ ߟߎ߬ ߟߊߛߣߍ߫ ߞߊ߬ ߓߐ߫ ߥߞߌ ߕߐ߭ ߟߎ߬ ߘߐ߫",
        "action-importupload": "ߞߐߜߍ ߟߎ߬ ߟߊߛߣߍ߫ ߞߊ߬ ߓߐ߫ ߞߐߕߐ߯ ߟߊߦߟߍ߬ߣߍ߲ ߠߎ߬ ߘߐ߫",
        "action-patrol": "ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߘߏ ߟߎ߬ ߟߊ߫ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߠߎ߬ ߣߐ߬ߣߐ߬ ߓߍ߬ߙߍ߲߬ߓߍ߬ߙߍ߲߬ߣߍ߲ ߘߌ߫",
        "action-managechangetags": "ߘߎ߲ߛߓߍ ߟߎ߬ ߛߌ߲ߘߟߌ ߣߴߊ߬ߟߎ߬ ߓߐߒߠߊߟߌ",
        "action-applychangetags": "ߘߎ߲ߛߓߍ ߟߎ߬ ߟߊߓߊ߯ߙߊ߫ ߌ ߟߊ߫ ߡߝߊ߬ߟߋ߲߬ߠߌ߲ ߠߎ߬ ߞߊ߲߬",
        "action-deletechangetags": "ߘߎ߲ߛߓߍ ߟߎ߬ ߖߏ߬ߛߌ߬ ߞߊ߬ ߓߐ߫ ߓߟߏߡߟߊ ߝߊ߲ ߞߊ߲߬",
+       "action-purge": "ߞߐߜߍ ߣߌ߲߬ ߛߊߣߌ߲ߧߊ߫",
+       "action-apihighlimits": "API ߡߊߢߌߣߌ߲ߣߍ߲ ߛߊ߲ߘߐߕߊ ߟߊߓߊ߯ߙߊ߫",
+       "action-bigdelete": "ߞߐߜߍ߫ ߘߝߐ߬ ߓߟߋ߬ߓߟߋ߬ߡߊ ߟߎ߬ ߖߏ߰ߛߌ߬",
+       "action-blockemail": "ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߓߊ߬ߟߌ߬ ߢߎߡߍߙߋ߲ ߗߋߟߌ ߡߊ߬",
+       "action-editprotected": "ߞߐߜߍ ߟߎ߬ ߡߊߦߟߍ߬ߡߊ߲߫ ߡߍ߲ ߠߎ߬ ߟߊߞߊ߲ߘߊߣߍ߲߫ ߦߋ߫ \"{{int:protect-level-sysop}}\" ߓߟߏ߫.",
+       "action-editsemiprotected": "ߞߐߜߍ ߟߎ߬ ߡߊߦߟߍ߬ߡߊ߲߫ ߡߍ߲ ߠߎ߬ ߟߊߞߊ߲ߘߊߣߍ߲߫ ߦߋ߫  \"{{int:protect-level-autoconfirmed}}\"",
+       "action-editinterface": "ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߟߊ߫ ߢߐ߲߯ߕߍߞߣߍ ߡߊߦߟߍ߬ߡߊ߲߫",
        "action-editusercss": "ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߘߏ ߟߎ߬ CSS ߟߊ߬ߓߊ߰ߙߊ߬ߟߌ߬ ߞߐߕߐ߮ ߡߊߦߟߍ߬ߡߊ߲߫",
        "action-edituserjson": "ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߘߏ ߟߎ߬ ߟߊ߫ JSON ߞߐߕߐ߮ ߟߎ߬ ߡߊߦߟߍ߬ߡߊ߲߫",
        "action-edituserjs": "ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߘߏ ߟߎ߬ ߟߊ߫ JavaScript ߞߐߕߐ߮ ߟߎ߬ ߡߊߦߟߍ߬ߡߊ߲߫",
        "action-editmyusercss": "ߌ ߖߘߍ߬ߞߊ߬ߣߌ߲߬ CSS ߟߊ߬ߓߊ߰ߙߊ߬ߟߌ߬ ߞߐߕߐ߮ ߡߊߦߟߍ߬ߡߊ߲߫",
        "action-editmyuserjson": "ߌ ߖߘߍ߬ߞߊ߬ߣߌ߲߬ JSON ߞߐߕߐ߮ ߟߎ߬ ߡߊߦߟߍ߬ߡߊ߲߫",
        "action-editmyuserjs": "ߌ ߖߘߍ߬ߞߊ߬ߣߌ߲߬ JavaScript ߞߐߕߐ߮ ߟߎ߬ ߡߊߦߟߍ߬ߡߊ߲߫",
+       "action-editmyuserjsredirect": "ߌ ߖߘߍ߬ߞߊ߬ߣߌ߲߬ JavaScript ߞߐߕߐ߮ ߟߎ߬ ߡߊߦߟߍ߬ߡߊ߲߫ ߡߍ߲ ߠߎ߬ ߓߘߊ߫ ߟߊߞߎ߲߬ߛߌ߲߫.",
        "action-viewsuppressed": "ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߘߏ ߟߎ߬ ߟߊ߫ ߟߢߊ߬ߟߌ߬ ߢߡߊߘߏ߲߰ߣߍ߲ ߠߎ߬ ߦߋ߫",
+       "action-hideuser": "ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ߫ ߟߎ߫ ߓߊ߬ߟߌ߬߸ ߡߍ߲ ߠߎ߬ ߢߡߊߘߏ߲߰ߣߍ߲߬ ߦߋ߫ ߖߊ߬ߡߊ ߟߊ߫ ߦߋߟߌ ߡߊ߬.",
        "action-unblockself": "ߌ ߖߍ߬ߘߍ ߓߊ߬ߟߌ߬ߣߍ߲ ߓߐ߫",
+       "action-reupload-own": "ߌ ߖߘߍ߬ߞߊߣߌ߲ ߠߊ߫ ߞߐߕߐ߯ ߟߊߦߟߍ߬ߣߍ߲ ߠߎ߬ ߖߏ߰ߛߌ߬",
+       "action-nominornewtalk": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲߬ ߘߋ߬ߣߍ߲߬ ߞߏ ߕߍ߫ ߘߊߘߐߖߊߥߏ ߞߐߜߍ ߟߎ߬ ߘߐ߫߸ ߗߋߛߓߍ߫ ߞߎߘߊ߫ ߘߊߡߌ߬ߣߊ߬ ߞߊߟߌߦߊ߫ ߘߐ߫.",
+       "action-markbotedits": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲߬ ߟߊߞߐߛߊ߬ߦߌ߬ߣߍ߲ ߠߎ߬ ߣߐ߬ߣߐ߬ ߓߏߕ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲߬ߣߐ ߘߌ߫.",
+       "action-patrolmarks": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲߬ ߞߎߘߊ ߟߎ߬ ߦߌ߬ߘߊ߬ ߓߍ߬ߙߍ߲߬ߓߍ߬ߙߍ߲߬ߠߌ߲߫ ߣߐ߬ߣߐ߬ߣߍ߲ ߘߌ߫",
+       "action-override-export-depth": "ߞߐߜߍ ߟߎ߬ ߟߊߝߏ߬ߦߌ߬߸ ߤߊߟߌ߬ ߞߐߜߍ߫ ߜߋ߲߭ߞߘߎ߬ߣߍ߲ߢߐ߲߰ߠߊ ߡߍ߲ ߠߎ߬ ߦߋ߫ ߅ ߘߎ߲߰ߧߊ ߛߊ߲ߘߐ߫.",
+       "action-suppressredirect": "ߟߊ߬ߞߎ߲߬ߛߌ߲߬ߠߌ߲ ߞߊߣߊ߬ ߟߊߘߊ߲߫ ߓߐߛߎ߲ ߞߐߜߍ ߟߎ߬ ߟߊ߫ ߞߐߜߍ ߟߎ߬ ߓߐ߫ ߕߎߡߊ ߟߴߊ߬ߟߎ߫ ߣߐ߭ ߘߐ߫.",
        "nchanges": "$1 {{PLURAL:$1|ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲|ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߠߎ߬}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|ߞߊ߬ߦߌ߯ ߓߐߒߡߊߟߌ ߟߊߓߊ߲}}",
        "enhancedrc-history": "ߘߐ߬ߝߐ",
        "recentchanges-timeout": "ߢߌߣߌ߲ߣߌ߲ ߣߌ߲߬ ߕߎ߬ߡߊ ߓߘߊ߫ ߕߊ߬ߡߌ߲߬. ߌ ߞߊߞߊ߲߫ ߞߊ߬ ߢߊߢߌߣߌ߲߫ ߜߘߍ߫ ߟߊ߬ߓߍ߲߬ߢߐ߲߰ߡߊ ߞߍ߫.",
        "recentchanges-network": "ߞߊ߬ ߓߍ߲߬ ߛߋߒߞߏߟߦߊ ߝߎ߬ߕߎ߲߬ߕߌ ߡߊ߬߸ ߞߐߝߟߌ߫ ߛߌ߫ ߕߍ߫ ߣߊ߬ ߛߋ߫ ߟߊ߫ ߟߊߢߎ߲߫ ߠߊ߫. ߌ ߞߊߘߊ߲߫ ߞߊ߬ ߞߐߜߍ ߣߌ߲߬ ߠߊߛߎߡߦߊ߫ ߖߊ߰ߣߌ߲߫.",
        "recentchanges-notargetpage": "ߞߐߜߍ ߕߐ߮ ߟߊߘߏ߲߬ ߛߊ߲ߝߍ߬߸ ߦߟߍ߬ߡߊ߲ ߡߍ߲ ߦߋ߫ ߞߐߜߍ ߘߐ߫߸ ߞߵߏ߬ ߦߋ߫.",
+       "recentchanges-feed-description": "ߥߞߌ ߣߌ߲߬ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲߬ ߞߐ߯ߟߕߊ ߟߎ߬ ߣߐ߬ߣߐ߬ ߓߊߟߏ ߣߌ߲߬ ߘߐ߫.",
        "recentchanges-label-newpage": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߣߌ߲߬ ߓߘߊ߫ ߘߐߜߍ߫ ߞߎߘߊ ߟߊߘߊ߲߫",
        "recentchanges-label-minor": "ߢߟߊߞߎߘߦߊ߫ ߝߕߌߣߍ߲ ߠߋ߬",
        "recentchanges-label-bot": "ߡߐ߰ߡߐ߮ ߟߋ߫ ߣߐ߬ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ ߣߌ߲߬ ߞߍ߫ ߟߊ߫",
        "wantedpages": "ߞߐߜߍ߫ ߜߋ߬ߟߎ߲߬ߣߍ߲ ߠߎ߬",
        "wantedpages-badtitle": "ߞߎ߲߬ߕߐ߮ ߓߍ߲߬ߣߍ߲߬ ߕߍ߫ ߞߐߝߟߌ߫ ߦߌ߬ߘߊ߬ߣߍ߲: $1 ߘߐ߫",
        "wantedfiles": "ߞߐߜߍ߫ ߜߋ߬ߟߎ߲߬ߣߍ߲ ߠߎ߬",
+       "wantedfiletext-nocat-noforeign": "ߞߐߕߐ߮ ߢߌ߲߬ ߠߎ߬ ߓߘߊ߫ ߟߊߓߊ߯ߙߊ߫ ߞߏ߬ߣߵߊ߬ߟߎ߬ ߕߴߦߋ߲߬.",
        "wantedtemplates": "ߞߙߊߞߏ ߞߊ߬ߣߌ߲߬ߣߍ߲ ߠߎ߬",
        "mostlinked": "ߛߘߌ߬ߜߋ߲߬ ߦߙߌߞߊ߫ ߦߋ߫ ߞߐߜߍ ߡߍ߲ ߠߎ߬ ߘߐ߫",
        "mostlinkedcategories": "ߛߘߌ߬ߜߋ߲߬ ߦߙߌߞߊ߫ ߦߋ߫ ߦߌߟߡߊ ߡߍ߲ ߠߎ߬ ߘߐ߫",
        "protectedpages": "ߞߐߜߍ߫ ߟߊߞߊ߲ߘߊߣߍ߲ ߠߎ߬",
        "protectedpages-filters": "ߛߍ߲ߛߍ߲ߟߊ߲ ߠߎ߬:",
        "protectedpages-indef": "ߟߊ߬ߞߊ߲߬ߘߊ߬ߟߌ ߘߊ߲߬ߠߊߕߍ߰ߓߊߟߌ ߘߐߙߐ߲߫",
+       "protectedpages-summary": "ߞߐߜߍ ߛߙߍߘߍ ߢߌ߲߬ ߠߎ߬ ߦߋ߫ ߦߋ߫ ߞߐߜߍ߫ ߟߎ߫ ߟߋ߬ ߘߐ߫ ߡߍ߲ ߠߎ߬ ߟߊߞߊ߲ߘߊߣߍ߲߫ ߦߋ߫ ߕߊ߲߫. ߣߵߌ ߦߋ߫ ߞߎ߲߬ߕߐ߮ ߛߙߍߘߍ߫ ߟߎ߫ ߟߋ߬ ߞߐ߫ ߡߍ߲ ߠߎ߬ ߟߊߞߊ߲ߘߊߣߍ߲߫ ߦߋ߫ ߛߌ߲ߘߟߌ ߡߊ߬߸ ߣߌ߲߬ ߘߐߜߍ߫ [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
        "protectedpages-noredirect": "ߟߊ߬ߞߎ߲߬ߛߌ߲߬ߠߌ߲ ߢߡߊߘߏ߲߰",
        "protectedpages-timestamp": "ߕߎ߬ߡߊ ߓߊ߬ߘߌ߬ߟߊ߲",
        "protectedpages-page": "ߞߐߜߍ",
index 04fec53..2ec2e44 100644 (file)
                        "Vlad5250",
                        "CiaPan",
                        "BadDog",
-                       "Rail"
+                       "Rail",
+                       "Maro21"
                ]
        },
        "tog-underline": "Podkreślenie linków:",
        "tog-useeditwarning": "Ostrzegaj mnie, gdy opuszczam stronę edycji bez zapisania zmian",
        "tog-prefershttps": "Zawsze używaj bezpiecznego połączenia po zalogowaniu",
        "tog-showrollbackconfirmation": "Wyświetl komunikat potwierdzający kliknięcie linku wycofującego edycje",
+       "tog-requireemail": "Wymagaj adresu e-mail przy resetowaniu hasła",
        "underline-always": "Zawsze",
        "underline-never": "Nigdy",
        "underline-default": "według ustawień skórki lub przeglądarki",
        "searchall": "wszystkie",
        "showingresults": "Poniżej znajduje się lista {{PLURAL:$1|z '''1''' wynikiem|'''$1''' wyników}}, rozpoczynając od wyniku numer '''$2'''.",
        "showingresultsinrange": "Poniżej wyświetlono co najwyżej {{PLURAL:$1|<strong>1</strong> wynik|<strong>$1</strong> wyniki|<strong>$1</strong> wyników}} w zakresie od <strong>$2</strong> do <strong>$3</strong>.",
-       "search-showingresults": "{{PLURAL:$4|Wynik <strong>$1</strong> z <strong>$3</strong>|Wyniki <strong>$1 - $2</strong> z <strong>$3</strong>}}",
+       "search-showingresults": "{{PLURAL:$4|Wynik <strong>$1</strong> z <strong>$3</strong>|Wyniki <strong>$1  $2</strong> z <strong>$3</strong>}}",
        "search-nonefound": "Brak wyników spełniających kryteria podane w zapytaniu.",
        "search-nonefound-thiswiki": "Brak wyników spełniających kryteria podane w zapytaniu.",
        "powersearch-legend": "Wyszukiwanie zaawansowane",
        "prefs-help-email": "Podanie adresu e‐mail nie jest obowiązkowe, lecz jest konieczne do zresetowania zapomnianego hasła.",
        "prefs-help-email-others": "Możesz również umożliwić innym użytkownikom wysłanie do Ciebie e‐maila poprzez Twoją stronę użytkownika lub stronę dyskusji (bez ujawniania Twojego adresu).",
        "prefs-help-email-required": "Wymagany jest adres e‐mail.",
+       "prefs-help-requireemail": "Po zaznaczeniu wiadomości e-mail z linkiem do resetu hasła będą wysyłane dopiero gdy resetujący użytkownik wprowadzi zarówno nazwę użytkownika jak i adres e-mail przypisane do tego konta.",
        "prefs-info": "Podstawowe informacje",
        "prefs-i18n": "Ustawienia językowe",
        "prefs-signature": "Podpis",
        "ipblocklist-legend": "Znajdź zablokowanego użytkownika",
        "blocklist-userblocks": "Ukryj blokady konta",
        "blocklist-tempblocks": "Ukryj tymczasowe blokady",
+       "blocklist-indefblocks": "Ukryj blokady nałołożone na zawsze",
        "blocklist-addressblocks": "Ukryj blokady pojedynczych adresów IP",
        "blocklist-type": "Typ:",
        "blocklist-type-opt-all": "Wszystkie",
        "tooltip-p-logo": "Strona główna",
        "tooltip-n-mainpage": "Zobacz stronę główną",
        "tooltip-n-mainpage-description": "Przejdź na stronę główną",
-       "tooltip-n-portal": "O projekcie - co możesz zrobić, gdzie możesz znaleźć informacje",
+       "tooltip-n-portal": "O projekcie  co możesz zrobić, gdzie możesz znaleźć informacje",
        "tooltip-n-currentevents": "Informacje o aktualnych wydarzeniach",
        "tooltip-n-recentchanges": "Lista ostatnich zmian w {{GRAMMAR:MS.lp|{{SITENAME}}}}.",
        "tooltip-n-randompage": "Załaduj losową stronę",
index 1106f5f..622ab51 100644 (file)
        "tog-useeditwarning": "Avisar-me quando eu deixar uma janela de edição sem ter salvo as alterações",
        "tog-prefershttps": "Usar sempre uma conexão segura enquanto estiver conectado",
        "tog-showrollbackconfirmation": "Mostrar um aviso de confirmação ao clicar em um link de reversão",
+       "tog-requireemail": "Exigir e-mail para redefinições de senha",
        "underline-always": "Sempre",
        "underline-never": "Nunca",
        "underline-default": "Padrão do navegador/tema",
        "prefs-help-email": "O endereço de e-mail é opcional, mas será necessário para recriar sua senha caso esqueça a antiga.",
        "prefs-help-email-others": "Você também pode optar por permitir que outros entrem em contato com você através de sua página de usuário ou de discussão sem ter de revelar seus dados pessoais.",
        "prefs-help-email-required": "O endereço de e-mail é requerido.",
+       "prefs-help-requireemail": "Se marcado, só enviará emails de redefinição de senha se a pessoa que redefiniu tiver fornecido o nome de usuário e o e-mail para esta conta.",
        "prefs-info": "Informações básicas",
        "prefs-i18n": "Internacionalização",
        "prefs-signature": "Assinatura",
        "ipblocklist-legend": "Procurar por um usuário bloqueado",
        "blocklist-userblocks": "Esconder bloqueios de contas",
        "blocklist-tempblocks": "Esconder bloqueios temporários",
+       "blocklist-indefblocks": "Ocultar bloqueios indefinidos",
        "blocklist-addressblocks": "Esconder bloqueios de IP único",
        "blocklist-type": "Tipo:",
        "blocklist-type-opt-all": "Todos",
index a55c17d..e2ee243 100644 (file)
        "printableversion": "Versione ca se stambe",
        "permalink": "Collegamende ca remane pe sembre",
        "print": "Stambe",
-       "view": "Vide",
+       "view": "'Ndruche",
        "view-foreign": "'Ndruche sus a $1",
        "edit": "Cange",
        "edit-local": "Cange 'a descrizione locale",
        "create-local": "Aggiunge 'a descrizione locale",
        "delete": "Scangìlle",
        "undelete_short": "Annulle {{PLURAL:$1|'nu camgiamende|$1 cangiaminde}}",
-       "viewdeleted_short": "Vide {{PLURAL:$1|'nu cangiamende scangellate|$1 cangiaminde scangellate}}",
+       "viewdeleted_short": "'Ndruche {{PLURAL:$1|'nu cangiamende scangellate|$1 cangiaminde scangellate}}",
        "protect": "Prutette",
        "protect_change": "cange",
        "unprotect": "Cange 'a protezione",
        "tool-link-userrights": "Cange le gruppe {{GENDER:$1|utinde}}",
        "tool-link-userrights-readonly": "'Ndruche le gruppe {{GENDER:$1|utinde}}",
        "tool-link-emailuser": "Manne 'na mail a stu {{GENDER:$1|utende}}",
-       "imagepage": "Vide a pàgene de le file",
-       "mediawikipage": "Vide a pàgene de le messàgge",
-       "templatepage": "Vide a pàgene de le template",
-       "viewhelppage": "Vide a pàgene de l'ajute",
-       "categorypage": "Vide a pàgene de le categorije",
-       "viewtalkpage": "Vide le 'ngazzaminde",
+       "imagepage": "'Ndruche 'a pàgene de le file",
+       "mediawikipage": "'Ndruche 'a pàgene de le messàgge",
+       "templatepage": "'Ndruche 'a pàgene de le template",
+       "viewhelppage": "'Ndruche 'a pàgene de l'ajute",
+       "categorypage": "'Ndruche 'a pàgene de le categorije",
+       "viewtalkpage": "'Ndruche le 'ngazzaminde",
        "otherlanguages": "Jndr'à l'otre lènghe",
        "redirectedfrom": "(Riderette da $1)",
        "redirectpagesub": "Pàgene de redirezione",
index d6094cd..72a7dd2 100644 (file)
        "undo-norev": "Правка не может быть отменена, так как её не существует или она была удалена.",
        "undo-nochange": "Правка, похоже, уже была отменена.",
        "undo-summary": "Отмена правки $1, сделанной [[Special:Contributions/$2|$2]] ([[User talk:$2|обсуждение]])",
+       "undo-summary-anon": "Отмена версии $1 от [[Special:Contributions/$2|$2]]",
        "undo-summary-username-hidden": "Отмена правки $1, сделанной участником, чьё имя скрыто",
        "cantcreateaccount-text": "Создание учётных записей с этого IP-адреса (<strong>$1</strong>) было заблокировано {{GENDER:$3|участником|участницей|}} [[User:$3|$3]].\n\n$3 {{GENDER:$3|указал|указала}} следующую причину: <em>$2</em>.",
        "cantcreateaccount-range-text": "{{GENDER:$3|Участник|Участница}} [[User:$3|$3]] {{GENDER:$3|установил|установила}} запрет на создание учётных записей для диапазона IP-адресов <strong>$1</strong>, включающего ваш IP-адрес (<strong>$4</strong>). \n\nБыла указана следующая причина: <em>$2</em>.",
        "alreadyrolled": "Невозможно откатить последние изменения страницы «[[:$1]]», совершённые [[User:$2|$2]] ([[User talk:$2|обсуждение]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]),\nпоскольку кто-то другой уже успел откатить эти правки или отредактировать страницу.\n\nПоследние изменения {{GENDER:$3|внёс|внесла}} [[User:$3|$3]] ([[User talk:$3|обсуждение]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Было дано описание изменения: <em>$1</em>.",
        "revertpage": "Откат правок [[Special:Contributions/$2|$2]] ([[User talk:$2|обсуждение]]) к версии [[User:$1|$1]]",
+       "revertpage-anon": "Откат правок [[Special:Contributions/$2|$2]] к последней версии от [[User:$1|$1]]",
        "revertpage-nouser": "Откат правок (имя участника скрыто) к версии {{GENDER:$1|[[User:$1|$1]]}}",
        "rollback-success": "Откачены правки {{GENDER:$3|$1}}; возвращена последняя версия {{GENDER:$4|$2}}.",
        "sessionfailure-title": "Ошибка сеанса",
index a4c30f8..fc3c4f3 100644 (file)
@@ -67,6 +67,7 @@
        "tog-useeditwarning": "Upozori me kad napuštam stranicu za uređivanje bez snimanja izmjena",
        "tog-prefershttps": "Uvijek koristi sigurnu vezu dok sam prijavljen",
        "tog-showrollbackconfirmation": "Prikaži potvrdnicu kada kliknete vezu za opoziv",
+       "tog-requireemail": "Zahtijevaj e-poštu za stavljanje novu lozinku",
        "underline-always": "Uvijek",
        "underline-never": "Nikad",
        "underline-default": "prema skinu ili postavkama preglednika",
        "undo-norev": "Izmjena se ne može vratiti jer ne postoji ranija ili je obrisana.",
        "undo-nochange": "Ovo je uređivanje izgleda već bilo poništeno.",
        "undo-summary": "Poništena izmjena $1 [[Special:Contribs/$2|korisnika $2]] ([[User talk:$2|razgovor]])",
+       "undo-summary-anon": "Poništi izmjenu $1 {{GENDER:$2|korisnika|korisnice}} [[Special:Contributions/$2|$2]]",
        "undo-summary-username-hidden": "Poništi izmjenu $1 od skrivenog korisnika",
        "cantcreateaccount-text": "Pravljenje korisničkog računa sa ove IP adrese ('''$1''') je blokirano od strane [[User:$3|$3]].\n\nRazlog koji je naveo $3 je ''$2''",
        "cantcreateaccount-range-text": "Stvaranje računa od IP adresa iz pojasa<strong>$1</strong>, koji uključuje vašu IP adresu (<strong>$4</strong>), je blokirao/la [[User:$3|$3]].\n\nRazlog koji je dao/la $3 je <em>$2</em>",
        "prefs-help-email": "E-mail adresa je opcionalna, ali je potrebna jer omogućava da Vam se pošalje nova šifra u slučaju da je izgubite ili zaboravite.",
        "prefs-help-email-others": "Također možete da odaberete da vas drugi kontaktiraju putem vaše korisničke stranice ili stranice za razgovor bez otkrivanja vašeg identiteta.",
        "prefs-help-email-required": "Neophodno je navesti e-mail adresu.",
+       "prefs-help-requireemail": "Ako je štiklirano, mogućnost za novu lozinku će imaju samo korisnici koji naveli su korisničko ime i e-poštu.",
        "prefs-info": "Osnovne informacije",
        "prefs-i18n": "Internacionalizacija",
        "prefs-signature": "Potpis",
        "alreadyrolled": "Ne može se vratiti posljednja izmjena [[:$1]] od korisnika [[User:$2|$2]] ([[User talk:$2|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); neko drugi je već izmjenio ili vratio članak.\n\nPosljednja izmjena je bila od korisnika [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Sažetak izmjene je bio: <em>$1</em>.",
        "revertpage": "Vraćene izmjene [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na posljednju izmjenu korisnika [[User:$1|$1]]",
+       "revertpage-anon": "Vraćene izmjene [[Special:Contributions/$2|$2]] na posljednju izmjenu korisnika [[User:$1|$1]]",
        "revertpage-nouser": "Vraćene izmjene skrivenog korisnika na posljednju reviziju, koju je {{GENDER:$1|napravio|napravila}} [[User:$1|$1]]",
        "rollback-success": "Vraćene su izmjene korisnika {{GENDER:$3|$1}};\nvraćeno na posljednju verziju koju je snimio {{GENDER:$4|$2}}.",
        "sessionfailure-title": "Greška u sesiji",
        "ipblocklist-legend": "Traži blokiranog korisnika",
        "blocklist-userblocks": "Sakrij blokade računa",
        "blocklist-tempblocks": "Sakrij privremene blokade",
+       "blocklist-indefblocks": "Sakrij beskonačne blokade",
        "blocklist-addressblocks": "Sakrij pojedinačne IP blokade",
        "blocklist-type": "Vrsta:",
        "blocklist-type-opt-all": "Sve",
index 7cd6220..9a40d38 100644 (file)
@@ -64,6 +64,7 @@
        "tog-useeditwarning": "Opozori me, ko skušam zapreti urejevalno polje z neshranjenimi spremembami",
        "tog-prefershttps": "Med prijavo vedno uporabljaj varno povezavo",
        "tog-showrollbackconfirmation": "Pokaži potrditveno okno ob kliku na povezavo za vrnitev",
+       "tog-requireemail": "Zahtevaj e-poštni naslov za ponastavitev gesla",
        "underline-always": "Vedno",
        "underline-never": "Nikoli",
        "underline-default": "Koža ali privzeto v brskalniku",
        "undo-norev": "Urejanja ni mogoče razveljaviti, ker ne obstaja ali je bilo izbrisano.",
        "undo-nochange": "Zdi se, da je urejanje nekdo že razveljavil.",
        "undo-summary": "Redakcija $1 uporabnika [[Special:Contributions/$2|$2]] ([[User talk:$2|pogovor]]) razveljavljena",
+       "undo-summary-anon": "Razveljavitev redakcije $1 uporabnika [[Special:Contributions/$2|$2]]",
        "undo-summary-username-hidden": "Razveljavi redakcijo $1 skritega uporabnika",
        "cantcreateaccount-text": "Registracije z IP-naslova ('''$1''') je administrator(ka) [[User:$3|$3]] blokiral(a).\n\nRazlog, ki ga je $3 podal(a), je ''$2''.",
        "cantcreateaccount-range-text": "Ustvarjanje računov z IP-naslovov v območju <strong>$1</strong>, ki vključuje vaš IP-naslov (<strong>$4</strong>), je blokiral(-a) [[User:$3|$3]].\n\nRazlog, ki ga je podal(-a) $3, je <em>$2</em>.",
        "prefs-help-email": "E-poštni naslov ni obvezen, vendar omogoča, da vam v primeru pozabljenega gesla pošljemo novo.",
        "prefs-help-email-others": "Omogočite lahko tudi možnost, da vam lahko ostali uporabniki pošiljajo e-pošto prek vaše uporabniške ali pogovorne strani.\nKo vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo razkrili.",
        "prefs-help-email-required": "E-poštni naslov je obvezen.",
+       "prefs-help-requireemail": "Če je označeno, bo e-pošta za ponastavitev gesla poslana samo, če je oseba, ki je sprožila ponastavitev, vnesla tako uporabniško ime kot e-poštni naslov tega računa.",
        "prefs-info": "Osnovni podatki",
        "prefs-i18n": "Internacionalizacija",
        "prefs-signature": "Podpis",
        "alreadyrolled": "Zadnje spremembe [[:$1]] uporabnika [[User:$2|$2]] ([[User talk:$2|pogovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ne morem vrniti;\nstran je spremenil ali vrnil že nekdo drug.\n\nZadnji je stran urejal uporabnik [[User:$3|$3]] ([[User talk:$3|pogovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Povzetek urejanja je bil: <em>$1</em>.",
        "revertpage": "vrnitev sprememb uporabnika [[Special:Contributions/$2|$2]] ([[User talk:$2|pogovor]]) na zadnje urejanje uporabnika [[User:$1|$1]]",
+       "revertpage-anon": "Vrnjena urejanja uporabnika [[Special:Contributions/$2|$2]] na zadnjo redakcijo uporabnika [[User:$1|$1]]",
        "revertpage-nouser": "vrnitev sprememb skritega uporabnika na zadnjo redakcijo {{GENDER:$1|[[User:$1|$1]]}}",
        "rollback-success": "Razveljavljene spremembe {{GENDER:$3|uporabnika|uporabnice}} $1;\nvrnjeno na urejanje {{GENDER:$4|uporabnika|uporabnice}} $2.",
        "sessionfailure-title": "Neuspeh seje",
index dcc686b..7dd965f 100644 (file)
        "tog-useeditwarning": "Varna mig om jag lämnar en redigeringssida med osparade ändringar",
        "tog-prefershttps": "Använd alltid en säker anslutning medan jag är inloggad",
        "tog-showrollbackconfirmation": "Visa en bekräftelsedialog när man klickar på en tillbakarullningslänk",
+       "tog-requireemail": "Kräv e-postadress för att återställa lösenord",
        "underline-always": "Alltid",
        "underline-never": "Aldrig",
        "underline-default": "Webbläsarens eller utseendets standardinställning",
        "prefs-help-email": "Att ange e-postadress är valfritt, men gör det möjligt att få ditt lösenord mejlat till dig om du glömmer det.",
        "prefs-help-email-others": "Du kan också välja att låta andra kontakta dig via e-post genom en länk på din användar- eller diskussionssida. \nDin e-postadress avslöjas inte när andra användare kontaktar dig.",
        "prefs-help-email-required": "E-postadress måste anges.",
+       "prefs-help-requireemail": "Om detta markeras kommer lösenordsåterställningar endast skickas via e-post om återställaren har angivit både användarnamn och e-postadress för detta konto.",
        "prefs-info": "Grundläggande information",
        "prefs-i18n": "Internationalisering",
        "prefs-signature": "Signatur",
index 8446ebd..96eafc2 100644 (file)
        "viewsourcelink": "pokŏż zdrzōdło",
        "editsectionhint": "Edytuj sekcyjõ: $1",
        "toc": "Wykŏz treści",
-       "showtoc": "uobejrzij",
-       "hidetoc": "schrůń",
+       "showtoc": "pokŏż",
+       "hidetoc": "skryj",
        "collapsible-collapse": "Skryj",
        "collapsible-expand": "Pokŏż",
        "thisisdeleted": "Pokŏzać abo stworzić zaś $1?",
        "watchthis": "Ôbserwuj tã strōnã",
        "savearticle": "Spamiyntej",
        "publishpage": "Ôpublikuj strōnã",
+       "publishchanges": "Ôpublikuj zmiany",
        "publishpage-start": "Ôpublikuj strōnã...",
        "preview": "Podglōnd",
        "showpreview": "Pokŏż podglōnd",
        "edit-no-change": "Twoje sprowjyńe uostoło zignorowane pů takymu, aże ńic żeś we tekśće ńy zmjyńůł.",
        "postedit-confirmation-saved": "Spamjyntano twoje sprowjyńe.",
        "edit-already-exists": "Ńy idźe utworzić nowyj zajty.\nTako zajta już sam je.",
-       "defaultmessagetext": "Tekst důmyślny",
+       "defaultmessagetext": "Wychodny tekst wiadōmości",
        "content-model-wikitext": "wikitekst",
        "expensive-parserfunction-warning": "Dej pozůr: ta zajta mo za dużo uodwouań do funkcyji parsera, kere mocno uobćůnżajům systym.\n\nPowinno być myńi jak $2 {{PLURAL:$2|wywołańy|wywołańo|wywołań}}, a terozki {{PLURAL:$1|je $1 wywołańy|sům $1 wywołańo|je $1 wywołań}}.",
        "expensive-parserfunction-category": "Zajty kere majům za dużo uodwołań do funkcyji parsera, kere mocno uobćůnżajům systym.",
        "prefs-edits": "Liczba edycyji:",
        "prefs-skin": "Skůrka",
        "skin-preview": "podglůnd",
-       "datedefault": "Důmyślny",
+       "datedefault": "Wychodny",
        "prefs-labs": "Funkcyje \"labs\"",
        "prefs-user-pages": "Zajty ôd używŏczōw",
        "prefs-personal": "Dane używocza",
        "prefs-rc": "Ôstatnie zmiany",
-       "prefs-watchlist": "Pozůrlista",
+       "prefs-watchlist": "Ôbserwowane",
        "prefs-watchlist-days": "Liczba dńůw widocznych na liśće artikli, na kere dowosz pozůr:",
        "prefs-watchlist-days-max": "Max $1 {{PLURAL:$1|dźyń|dńi}}",
        "prefs-watchlist-edits": "Liczba půmjyńań pokozywanych we rozszyrzůnyj liśće artiklůw, na kere dowosz pozůr:",
        "recentchangesdays": "Liczba dńůw do pokazańo we půmjyńanych na uostatku:",
        "recentchangesdays-max": "(maksymalńy $1 {{PLURAL:$1|dźyń|dńi}})",
        "recentchangescount": "Liczba pozycyji na liśće půmjyńanych na uostatku, we historyje zajtůw a zajtach rejerůw:",
-       "prefs-help-recentchangescount": "Ze listům ńydawnych pomjyńan, gyszichta zajt a rejer.",
-       "savedprefs": "Twoje sztalowańo we preferyncyjach zostoły naszkryflane.",
+       "prefs-help-recentchangescount": "Maksymalnŏ wielość: 1000",
+       "savedprefs": "Twoje sztelōnki były spamiyntane.",
        "timezonelegend": "Czasowo sztrefa",
        "localtime": "Lokalny czas:",
        "timezoneuseserverdefault": "Użyj domyślnygo czasu serwera ($1)",
        "right-userrights-interwiki": "Edytuj uprawniynia używŏczōw na inkszych wiki",
        "right-siteadmin": "Zawjerańy i uodmykańy bazy danych",
        "newuserlogpage": "Ksiōnżka nowych używŏczōw",
-       "newuserlogpagetext": "To je rejer uostatńo utworzůnych kůnt użytkowńikůw",
+       "newuserlogpagetext": "To je regest tworzōnych używŏczōw.",
        "rightslog": "Regest uprawniyń używŏczōw",
-       "rightslogtext": "Rejer půmjyńań uprawńyń užytkowńikůw.",
+       "rightslogtext": "To je regest zmian uprawniyń używŏczōw.",
        "action-read": "přeglůndańo tyj zajty",
        "action-edit": "edycyje tyj strōny",
        "action-createpage": "tworzyńo zajtůw",
        "protectedpages-cascade": "Yno zajty zabezpjeczůne rekursywńy",
        "protectedpagesempty": "Żodno zajta ńy je terozki zawarto ze podanymi parametrami.",
        "protectedtitles": "Zastawiōne tytuły",
-       "protectedtitlesempty": "Do tych štalowań utwořyńy artikla uo dowolnym mjańy ńy je zawarte",
+       "protectedtitlesempty": "Żŏdne strōny niy sōm terŏz zawarte ze tymi parametrami.",
        "listusers": "Lista używŏczōw",
        "listusers-editsonly": "Pokoż yno użytkowńikůw kere majům sprowjyńa",
        "usereditcount": "$1 {{PLURAL:$1|sprowjyńe|sprowjyńa|sprowjyń}}",
        "specialloguserlabel": "Fto:",
        "speciallogtitlelabel": "Cyl (nazwa abo {{ns:user}}:miano ôd używŏcza):",
        "log": "Regest ôperacyji",
-       "all-logs-page": "Wszyjske Ã³peracyje",
+       "all-logs-page": "Wszyjske Ã´peracyje",
        "alllogstext": "Spōlne pokŏzanie wszyjskich dostympnych regestōw {{SITENAME}}.\nMożesz uakuratnić widok bez ôbranie zorty regestu, miana ôd używŏcza, abo tykanyj strōny (dŏwŏ pozōr na małe i sroge litery).",
        "logempty": "Niy ma we regeście zgodliwych elymyntōw.",
        "log-title-wildcard": "Szukej tytułōw, co sie zaczynajōm ôd tego tekstu",
        "emailsend": "Wyślij",
        "emailccme": "Wyślij mi kopja moiy wjadomości.",
        "emailccsubject": "Kopja Twojej wjadůmośći do $1: $2",
-       "emailsent": "Wjadůmość zostoua wysuano",
-       "emailsenttext": "Twoja wjadůmość zostoua wysuano.",
+       "emailsent": "E-mail wysłany",
+       "emailsenttext": "Twoja wiadōmość e-mail je wysłanŏ.",
        "emailuserfooter": "Wjadůmość e-brif zostoła wysłano s {{GRAMMAR:D.lp|{{SITENAME}}}} ku $2 bez $1 s użyćym „Wyślij e-brif ku tym użytkowńikowi”.",
        "usermessage-editor": "Nadŏwca systymowych kōmunikatōw",
        "watchlist": "Ôbserwowane",
        "unwatch": "Niy ôbserwuj",
        "unwatchthispage": "Přestoń dować pozůr",
        "notanarticle": "To ńy je artikel",
-       "notvisiblerev": "Wersyja zostoua wyćepano",
+       "notvisiblerev": "Ôstatniŏ wersyjŏ ôd inkszego używŏcza była skasowanŏ",
        "watchlist-details": "Na Twojij liście ôbserwowanych {{PLURAL:$1|je $1 strōna|sōm $1 strōny|je $1 strōn}} (plus strōny dyskusyje).",
        "wlheader-enotif": "Wysůuańy powjadůmjyń na adres e-brif je zouůnčůne",
        "wlheader-showupdated": "Zajty, co były zmiyniane ôd twojij ôstatnij nŏwiydzki na nich ôstały ukŏzane <strong>na rubo</strong>.",
        "confirmdeletetext": "Zarŏz wyciepniesz artikel i cołkõ ôd niygo historyjõ. Przitupluj, iże na isto chcesz to zrobić, miarkujesz kōnsekwyncyje, i co robisz to podle [[{{MediaWiki:Policy-url}}|prawideł]].",
        "actioncomplete": "Fertig",
        "actionfailed": "Ńy udało śe.",
-       "deletedtext": "Wyćepano \"$1\". Rejer uostatnio zrobiůnych wyćepań možeš uobejžyć tukej: $2.",
+       "deletedtext": "Strōna „$1” była skasowanŏ.\nWejzdrzij na $2 po regest ôstatnich skasowań.",
        "dellogpage": "Regest kasowań",
        "dellogpagetext": "To je lista uostatńo wykůnanych wyćepań.",
-       "deletionlog": "rejer wyćepań",
+       "deletionlog": "regest skasowań",
        "reverted": "Prziwrōcōnŏ poprzedniõ wersyjõ",
        "deletecomment": "Čymu:",
        "deleteotherreason": "Inkšy powůd:",
        "rollbacklink": "cŏfej",
        "rollbacklinkcount": "cŏfnij $1 {{PLURAL:$1|edycyjõ|edycyje|edycyji}}",
        "rollbackfailed": "Niy szło wycŏfać zmiany",
-       "cantrollback": "Ńy idże cofnůńć pomjyńyńo, sam je ino jedna wersyja tyi zajty.",
+       "cantrollback": "Niy idzie cŏfnōńć edycyje;\nôstatni edytōr to je jedyny autōr tyj strōny.",
        "alreadyrolled": "Ńy idźe lů zajty [[:$1|$1]] cofnůńć uostatńygo pomjyńeńa, kere wykonoł [[User:$2|$2]] ([[User talk:$2|godka]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]).\nKto inkszy zdůnżůł już to zrobić abo wprowadźił własne poprowki do treśći zajty.\n\nAutorym ostatńygo pomjyńyńo je terozki [[User:$3|$3]] ([[User talk:$3|godka]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Sprowjyńe uopisano: <em>$1</em>.",
        "revertpage": "Wycofano sprowjyńe użytkowńika [[Special:Contributions/$2|$2]] ([[User talk:$2|godka]]). Autor prziwrůcůnej wersyji to [[User:$1|$1]].",
        "modifiedarticleprotection": "zmiyniōł(yła) poziōm zawarciŏ „[[$1]]”",
        "unprotectedarticle": "uodymknyu [[$1]]",
        "movedarticleprotection": "przekludzůno sztalowańa zabezpjeczyńo s „[[$2]]” ku „[[$1]]”",
-       "protect-title": "Pomjyńeńe poźomu zawarćo „$1”",
+       "protect-title": "Zmiana poziōmu zawarciŏ „$1”",
        "prot_1movedto2": "[[$1]] přećepano do [[$2]]",
        "protect-legend": "Potwjyrdź zawarće",
        "protectcomment": "Čymu:",
-       "protectexpiry": "Wygaso:",
+       "protectexpiry": "Wygasŏ:",
        "protect_expiry_invalid": "Čas wygaśńjyńćo je zuy.",
        "protect_expiry_old": "Čas wygaśńjyńćo je w downiej ńiž terozki.",
-       "protect-text": "Sam tukej možyš uobejžeć i pomjyńyć poźům zawarcia zajty '''$1'''.",
+       "protect-text": "Sam możesz ôbejzdrzeć i zmiynić poziōmy zawarciŏ strōny <strong>$1</strong>.",
        "protect-locked-blocked": "Ńy možeš půmjyńać poźůmůw zawarćo kej žeś sům je zawarty uod sprowjyń. Terozki štalowańa dla zajty '''$1''' to:",
        "protect-locked-dblock": "Ńy idźe půmjyńić poźůmu zawarća s kuli tygo co baza danych tyž je zawarto. Uobecne štalowańa dla zajty '''$1''' to:",
        "protect-locked-access": "Ńy moš uprowńyń coby pomjyńyć poziům zawarcia zajty. Uobecne ustawjyńo dlo zajty '''$1''' to:",
        "protect-summary-cascade": "dźedźičyńy",
        "protect-expiring": "wygaso $1 (UTC)",
        "protect-expiry-indefinite": "na zowdy",
-       "protect-cascade": "Dźedźyčyńe zawarćo - zawřij wšyskie zajty kere sům na tyi zajće.",
+       "protect-cascade": "Zawrzij strōny, co sōm wrażōne do tyj strōny (erbowanie zawarciŏ)",
        "protect-cantedit": "Ńy možeš pomjyńyć poziůmu zawarća tyi zajty, po takiymu, co uona je dlo Ćebje zawarto uod pomjyńańa.",
        "protect-othertime": "Inkszy uokres:",
        "protect-othertime-op": "inkszy uokres",
        "protect-otherreason": "Inkszy/dodatkowy powůd:",
        "protect-otherreason-op": "inkszy/dodatkowy powůd",
        "protect-dropdown": "*Nojczynstsze powody zawarćo uod sprowjyń\n** Czynste wandalizmy\n** Czynste spamowańy\n** Wojna edycyjno\n** Wygupy",
-       "protect-edit-reasonlist": "Sprowjej powody zawarćo uod sprowjyń",
+       "protect-edit-reasonlist": "Edytuj powody zawarciŏ",
        "protect-expiry-options": "2 godźiny:2 hours,1 dźyń:1 day,3 dńi:3 days,1 tydźyń:1 week,2 tygodńy:2 weeks,1 mjeśůnc:1 month,3 mjeśůnce:3 months,6 mjeśency:6 months,1 rok:1 year,ńyskůńčůny:infińite",
        "restriction-type": "Pozwolyńy:",
-       "restriction-level": "Poźům:",
+       "restriction-level": "Poziōm:",
        "minimum-size": "Minimalnŏ srogość",
        "maximum-size": "Maksymalnŏ srogość:",
        "pagesize": "(bajtōw)",
        "undeleteinvert": "Zaznocz na uopy",
        "undeletecomment": "Powůd wćepańo nazod:",
        "cannotundelete": "Wćepańy nazod ńy powjodo śe.\nKto inkšy můgu wćepać nazod zajta pjyrwšy.",
-       "undeletedpage": "'''Wćepano nazod zajta $1.'''\n\nUobejřij [[Special:Log/delete|rejer wyćepań]], kejbyś chćou přeglůndnůnć uostatnie uoperacyje wyćepywańo i wćepywańo nazod zajtůw.",
-       "undelete-header": "Uobejřij [[Special:Log/delete|rejer wyćepań]] coby sprawdźić uostatńo wyćepane zajty.",
+       "undeletedpage": "<strong>Strōna „$1” była prziwrōcōnŏ</strong>\n\nWejzdrzij do [[Special:Log/delete|regestu skasowań]] po lista ôstatnich skasowań i prziwrōcyń.",
+       "undelete-header": "Wejzdrzij na [[Special:Log/delete|regest skasowań]] po ôstatnio skasowane strōny.",
        "undelete-search-box": "Šnupej za wyćepńjyntymi zajtami",
        "undelete-search-prefix": "Strōny, co sie zaczynajōm ôd:",
        "undelete-search-submit": "Šnupej",
        "block-log-flags-noemail": "e-mail zablokowany",
        "block-log-flags-nousertalk": "ńy może sprowjać włosnyj zajty godki",
        "block-log-flags-angry-autoblock": "rozszerzůne automatyczne zawjyrańe załůnczůne",
-       "range_block_disabled": "Možliwość zawjerańo zakresu adresůw IP zostoua wůuůnčůno.",
+       "range_block_disabled": "Blokowanie zŏkresu adres IP je zakŏzane.",
        "ipb_expiry_invalid": "Felerny čas wygaśńjyńćo zawarća.",
        "ipb_expiry_temp": "Schrůńůne mjano użytkowńika noleży zawrzić trwale.",
        "ipb_already_blocked": "\"$1\" je już zawarty uod sprowjyń",
        "lockbtn": "Zawřij baza danych",
        "unlockbtn": "Uodymkńij baza danych",
        "locknoconfirm": "Ńy zaznačůužeś potwjerdzyńo.",
-       "lockdbsuccesssub": "Baza danych zostoua půmyślńy zawarto",
-       "unlockdbsuccesssub": "Baza danych zostoua půmyślńy uodymkńynto",
-       "lockdbsuccesstext": "Baza danych zostoua zawarto.<br />\nPamjyntej coby [[Special:UnlockDB|jům uodymknůńć]] po zakůńčyńu dźouań admińistracyjnych.",
-       "unlockdbsuccesstext": "Baza danych zostoua uodymkńynto.",
+       "lockdbsuccesssub": "Zablokowanie bazy danych sie podarziło",
+       "unlockdbsuccesssub": "Blokada bazy danych symniyntŏ",
+       "lockdbsuccesstext": "Baza danych je zablokowanŏ.<br />\nPamiyntej, żeby [[Special:UnlockDB|jōm ôtworzić]] jak robota bydzie skōńczōnŏ.",
+       "unlockdbsuccesstext": "Baza danych je ôdblokowanŏ.",
        "lockfilenotwritable": "Ńy idźe naškreflać plika zawarća bazy danych.\nZawjerańy i uodmykańy bazy danych wymogo coby plik můgu być naškreflany bez web serwer.",
        "databasenotlocked": "Baza danych ńy je zawarto.",
        "move-page": "Przećep $1",
        "export-templates": "Douůnč šablůny",
        "allmessages": "Komunikaty",
        "allmessagesname": "Mjano",
-       "allmessagesdefault": "Tekst důmyślny",
+       "allmessagesdefault": "Wychodny tekst wiadōmości",
        "allmessagescurrent": "Tekst uobecny",
        "allmessagestext": "Uoto lista wšyjstkych kůmůńikatůw systymowych dostympnych w přestřyńi mjan MedjaWiki.\nUodwjydź [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation Tuůmačyńy MediaWiki] a tyž [https://translatewiki.net translatewiki.net] kejbyś chćou učestńičyć w tuůmačyńu uoprůgramowańo MediaWiki.",
        "allmessages-not-supported-database": "Ta zajta ńy može być užyta, bez tůž co zmjynna '''$wgUseDatabaseMessages''' je wůuůnčůno.",
        "import-token-mismatch": "Straćiły śe dane ze sesyje. Prosza spróbować zaś.",
        "import-invalid-interwiki": "Ńy idźe importować s podanyj wiki.",
        "importlogpage": "Regest importōw",
-       "importlogpagetext": "Rejer přeprowadzůnych importůw zajtůw s inkšych serwisůw wiki.",
+       "importlogpagetext": "Regest importōw strōn społym ze jejich historyjami ze inkszych wiki.",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|wersyja|wersyje|wersyji}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|wersyja|wersyje|wersyji}} ze $2",
        "tooltip-pt-userpage": "{{GENDER:|Moja}} strōna",
        "confirmemail_text": "Projekt {{SITENAME}} wymago weryfikacyji adresa e-brif před užyćym fůnkcyji kořistajůncych s počty.\nWćiś knefel půńižy coby wysúać na swůj adres list s linkym do zajty WWW.\nList bydźe zawjeroú link do zajty, w kerym zakodowany bydźe idyntyfikator.\nUodymkńij tyn link we přyglůndarce, čym potwjerdźiš, co ježeś užytkowńikym tygo adresa e-brif.",
        "confirmemail_pending": "Kod potwierdzyniŏ bōł prawie do Ciebie wysłany. Jak Twoje kōnto było niydŏwno zaregistrowane, to poczekej pŏrã minut na jego dotarcie, podwiela wyślesz prośbã ô nowy.",
        "confirmemail_send": "Wyślij kod potwjerdzyńo",
-       "confirmemail_sent": "Wjadůmość e-brif s kodym uwjeřitelńajůncym zostoua wysuano.",
+       "confirmemail_sent": "E-mail ze potwiyrdzyniym wysłany.",
        "confirmemail_oncreate": "Link s kodym potwjerdzyńo zostou wysuany na Twůj adres e-brif.\nKod tyn ńy je wymagany coby śe sam lůgować, ale bydźeš muśou go aktywować uodmykajůnc uotřimany link we přyglůndarce ńim zouůnčyš ńykere uopcyje e-brif na wiki.",
        "confirmemail_sendfailed": "{{SITENAME}} ńy poradźiła wysłać potwjerdzajůncyj wjadůmośći e-brif.\nSprowdź aże we adreśe ńy ma felernyj buchsztaby.\n\nSystym pocztowy zwrůćił kůmůńikat: $1",
        "confirmemail_invalid": "Felerny kod potwjerdzyńo.\nKod može być předawńůny",
        "watchlistedit-normal-legend": "Wyćep zajty s listy artikli na kere dowoš pozůr",
        "watchlistedit-normal-explain": "Půńiżyj mosz lista artikli na kere dowosz pozůr.\nCoby wyćepać z ńij jako zajta, zaznocz pole przi ńij i naćiś knefel „{{int:Watchlistedit-normal-submit}}”.\nMożesz tyż skorzistać ze [[Special:EditWatchlist/raw|tekstowygo sprowjorza listy artikli na kere dowosz pozůr]].",
        "watchlistedit-normal-submit": "Wyćep s listy",
-       "watchlistedit-normal-done": "Z Twoi listy artikli na kere dowoš pozůr {{PLURAL:$1|zostoua wyćepano 1 zajta|zostouy wyćepane $1 zajty|zostouo wyćepanych $1 zajtůw}}:",
+       "watchlistedit-normal-done": "{{PLURAL:$1|Była skasowanŏ jedna strōna|Były skasowane $1 strōny|Było skasowanych $1 strōn}} ze twojij listy ôbserwowanych:",
        "watchlistedit-raw-title": "Tekstowy edytor listy artikli na kere dowosz pozůr",
        "watchlistedit-raw-legend": "Tekstowy edytor listy artikli na kere dowoš pozůr",
        "watchlistedit-raw-explain": "Půńižy moš lista artikli na kere dowoš pozůr. W koždej lińii znojdowo śe titel jydnygo artikla. Lista možeš sprowjać dodajůnc nowe zajty i wyćepujůnc te kere na ńij sům. Jak skůńčyš, naćiś knefel „Uaktualńij lista zajtůw na kere dowům pozůr”.\nMožeš tyž [[Special:EditWatchlist|užyć standardowygo edytora]].",
        "watchlistedit-raw-titles": "Title:",
        "watchlistedit-raw-submit": "Uaktualńij lista",
-       "watchlistedit-raw-done": "Lista zajtůw na kere dowoš pozůr zostoua uaktualńůna",
+       "watchlistedit-raw-done": "Lista twojich ôbserwowanych była zaktualizowanŏ.",
        "watchlistedit-raw-added": "Dodano {{PLURAL:$1|1 pozycyja|$1 pozycyje|$1 pozycyji}} do listy artikli na kere dowoš pozůr:",
        "watchlistedit-raw-removed": "Wyćepano {{PLURAL:$1|1 pozycyja|$1 pozycyje|$1 pozycyji}} z listy zajtůw na kere dowoš pozůr:",
        "watchlisttools-clear": "Wysnŏż ôbserwowane",
index 519a355..cc2e664 100644 (file)
@@ -97,7 +97,7 @@
        "tog-watchdefault": "Додавати змінені мною сторінки та файли до мого списку спостереження",
        "tog-watchmoves": "Додавати перейменовані мною сторінки та файли до мого списку спостереження",
        "tog-watchdeletion": "Додавати вилучені мною сторінки та файли до мого списку спостереження",
-       "tog-watchuploads": "Додавати до мого списку спостереження нові файли, завантажені мною",
+       "tog-watchuploads": "Додавати файли, завантажені мною до списку спостереження",
        "tog-watchrollback": "Додавати відкочені мною сторінки до мого списку спостереження",
        "tog-minordefault": "Позначати всі зміни як незначні за замовчуванням",
        "tog-previewontop": "Показувати попередній перегляд перед вікном редагування, а не після",
        "tog-useeditwarning": "Попереджати мене, якщо я залишаю сторінку редагування з незбереженими змінами",
        "tog-prefershttps": "Завжди використовувати безпечне з'єднання при вході в систему",
        "tog-showrollbackconfirmation": "Показати підтверджувальне вікно при натисканні на посилання відкоту",
+       "tog-requireemail": "Вимагає вказання електронної пошти для скидання пароля",
        "underline-always": "Завжди",
        "underline-never": "Ніколи",
        "underline-default": "Використовувати налаштування браузера",
        "category-empty": "''Ця категорія зараз порожня.''",
        "hidden-categories": "{{PLURAL:$1|1=Прихована категорія|Приховані категорії}}",
        "hidden-category-category": "Приховані категорії",
-       "category-subcat-count": "{{PLURAL:$2|Показано $1 {{PLURAL:$1|підкатегорію з|підкатегорії з|підкатегорій із}} $2.|1=Ця категорія має тільки таку підкатегорію.}}",
+       "category-subcat-count": "{{PLURAL:$2|1=Ця категорія має тільки таку підкатегорію.|Показано $1 {{PLURAL:$1|підкатегорію з|підкатегорії з|підкатегорій із}} $2.}}",
        "category-subcat-count-limited": "У цій категорії {{PLURAL:$1|$1 підкатегорія|$1 підкатегорії|$1 підкатегорій}}.",
        "category-article-count": "Показано $1 {{PLURAL:$1|сторінку|сторінки|сторінок}} цієї категорії (із $2).",
        "category-article-count-limited": "У цій категорії {{PLURAL:$1|$1 сторінка|$1 сторінки|$1 сторінок}}.",
        "changeemail-nochange": "Будь ласка, введіть адресу електронної пошти, відмінну від попередньої.",
        "resettokens": "Скидання токенів",
        "resettokens-text": "Ви можете скинути токени, що забезпечують доступ до певних особистих даних, пов'язаних тут із вашим обліковим записом.\nВам слід це зробити, якщо ви випадково поділились токенами з кимось, або якщо ваш обліковий запис було зламано.",
-       "resettokens-no-tokens": "Немає жетонів до скидання.",
+       "resettokens-no-tokens": "Немає токенів до скидання.",
        "resettokens-tokens": "Токени:",
        "resettokens-token-label": "$1 (поточне значення: $2)",
        "resettokens-watchlist-token": "Маркер стрічки новин (Atom/RSS) щодо [[Special:Watchlist|зміни на сторінці з вашого списку спостереження]]",
        "undo-norev": "Редагування не може бути скасоване, бо його не існує або було вилучено.",
        "undo-nochange": "Схоже, редагування вже було скасовано.",
        "undo-summary": "Скасування редагування № $1 користувача [[Special:Contribs/$2|$2]] ([[User talk:$2|обговорення]])",
+       "undo-summary-anon": "Скасування версії $1 від [[Special:Contributions/$2|$2]]",
        "undo-summary-username-hidden": "Скасувати версію $1, виконану прихованим користувачем",
        "cantcreateaccount-text": "Створення облікових записів із цієї IP-адреси ('''$1''') було заблоковане [[User:$3|користувачем $3]].\n\n$3 зазначив таку причину: ''$2''",
        "cantcreateaccount-range-text": "Створення облікового запису із IP-адрес у діапазоні  <strong>$1</strong>, який включає вашу IP-адресу (<strong>$4</strong>), було заблоковано користувачем [[User:$3|$3]].\n\nКористувач $3 вказав як причину <em>$2</em>",
        "prefs-help-email": "Адреса електронної пошти не є обов'язковою, але необхідна для скидання пароля, якщо Ви його забудете.",
        "prefs-help-email-others": "Також вона дозволить іншим користувачам зв'язатися з Вами через посилання на Вашій сторінці користувача чи на сторінці обговорення. При цьому Ваша електронна адреса залишиться нерозкритою.",
        "prefs-help-email-required": "Потрібно зазначити адресу електронної пошти.",
+       "prefs-help-requireemail": "Якщо вибране, то надішле електронного листа із скинутим паролем за умови, що в обліковому записі було вказано ім'я користувача та електронна пошта.",
        "prefs-info": "Основні відомості",
        "prefs-i18n": "Інтернаціоналізація",
        "prefs-signature": "Підпис",
        "alreadyrolled": "Неможливо відкинути останні редагування [[:$1]], зроблені [[User:$2|$2]] ([[User talk:$2|обговорення]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), оскільки хтось інший уже змінив чи відкинув редагування цієї статті.\n\nОстанні редагування зроблено [[User:$3|$3]] ([[User talk:$3|обговорення]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Пояснення редагування було: «<em>$1</em>.».",
        "revertpage": "Відкинуто редагування [[Special:Contributions/$2|$2]] ([[User talk:$2|обговорення]]) до зробленого [[User:$1|$1]]",
+       "revertpage-anon": "Відкинуто правки [[Special:Contributions/$2|$2]] до останньої версії [[User:$1|$1]]",
        "revertpage-nouser": "Відкинуто редагування прихованого користувача до останньої версії, зробленої {{GENDER:$1|[[User:$1|$1]]}}",
        "rollback-success": "Відкинуті редагування {{GENDER:$3|користувача|користувачки}} $1; повернення до версії {{GENDER:$4|користувача|користувачки}} $2.",
        "sessionfailure-title": "Помилка сеансу",
        "ipblocklist-legend": "Пошук заблокованого користувача",
        "blocklist-userblocks": "Сховати блокування облікових записів",
        "blocklist-tempblocks": "Сховати тимчасові блокування",
+       "blocklist-indefblocks": "Сховати безстрокові блокування",
        "blocklist-addressblocks": "Приховати блокування окремих IP-адрес",
        "blocklist-type": "Тип:",
        "blocklist-type-opt-all": "Всі",
index d0d4c8a..edf53b2 100644 (file)
        "history": "ⴰⵎⵣⵔⴰⵢ ⵏ ⵜⴰⵙⵏⴰ",
        "history_short": "ⴰⵎⵣⵔⵓⵢ",
        "history_small": "ⴰⵎⵣⵔⵓⵢ",
-       "updatedmarker": "âµ\9cⵡⴰâµ\99âµ\99âµ\8fâ´¼âµ\8d âµ\9câµ\89â´³âµ\89âµ\94â´° âµ\8f âµ\93âµ\94ⵣⴰⴼ âµ\89âµ\8fâµ\93",
+       "updatedmarker": "âµ\9cⵡⴰâµ\99âµ\99âµ\8fâ´¼âµ\8d âµ\9câµ\89â´³âµ\89âµ\94â´° âµ\8f âµ\93âµ\94ⵣⴰⴼ âµ\8fâ´½:",
        "printableversion": "ⵜⵓⵏⵖⵉⵍⵜ ⵉⵜⵜⵡⴰⵙⵉⴳⴳⵣⵏ",
        "permalink": "ⴰⵙⵖⵏ ⴰⵎⵖⵍⴰⵍ",
        "print": "ⵙⵉⴳⴳⵣ",
        "accmailtitle": "ⵜⴰⴳⵓⵔⵉ ⵓⵣⵔⴰⵢ ⵜⴻⵜⵜⵡⴰⵣⵏ",
        "newarticle": "(ⴰⵎⴰⵢⵏⵓ)",
        "newarticletext": "ⵜⴹⴼⴰⵔⴷ ⵢⴰⵏ ⵓⵙⵖⵏ ⵖⵔ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵏⵏⴰ ⵓⵔ ⵜⴰ ⵉⵍⵍⵉⵏ. \nⴰⴼⴰⴷ ⴰⴷ ⵜⵙⵏⵓⵍⴼⵓⴷ ⵜⴰⵙⵏⴰ, ⵙⵙⵏⵜⵉ ⵜⵉⵔⵔⴰ ⴳ ⵓⴼⵏⵉⵇ ⴳ ⵉⵣⴷⴷⴰⵔ (ⵥⵔ [$1 ⵜⴰⵙⵏⴰ ⵏ ⵜⵡⵉⵙⵉ] ⵉ ⵡⵓⴳⴳⴰⵔ ⵏ ⵉⵏⵖⵎⵉⵙⵏ). \nⵎⴽ ⵜⵍⵍⵉⴷ ⴷⴰ ⵙ ⵓⵣⴳⴰⵍ, ⴰⴽⵍ ⵖⴼ <strong>ⴰⵖⵓⵍ</strong> ⴳ ⵓⵙⴰⵔⴰ ⵏⵏⴽ.",
-       "anontalkpagetext": "----\n<em>ⵜⵍⵍⵉⴷ ⴳ ⵜⴰⵙⵏ ⵏ ⵓⵎⵙⴰⵡⴰⵍ ⵏ ⵢⴰⵏ ⵓⵏⵙⵙⵎⵔⵙ ⵡⴰⵔⵉⵙⵎ ⵏⵏⴰ ⵜⴰ ⵓⵔ ⵉⵙⴽⵉⵔⵏ ⴰⵎⵉⴹⴰⵏ ⵏⵖ ⵏⵏⴰ ⵜ ⵓⵔ ⵉⵙⵙⵎⵔⵉⵙⵏ</em>.\nⴰⵢⴰ ⴰ ⵖⴼ ⵉⴼⵓⴽⴽ ⴰⴷ ⵏⵙⵙⵎⵔⵙ ⵜⴰⵏⵙⴰ ⵏⵏⵙ IP ⴼⴰⴷ ⴰⴷ ⵜ ⵏⵙⵎⴰⴳⵉ.\nⵢⴰⵜ ⵜⴰⵏⵙⴰ IP ⵥⴹⴰⵔⵏ ⴰⴷ ⵜⵜ ⵙⵙⵓⵔⵏ ⵎⵏⵏⴰⵡ ⵏ ⵉⵏⵙⵙⵎⵔⵙⵏ.\nⵎⴽ ⵜⴳⵉⴷ ⵢⴰⵏ ⵓⵏⵙⵙⵎⵔⵙ ⵡⴰⵔⵉⵙⵎ ⴷ ⴽ ⵜⵖⴹⴼⴷ ⵎⴰⵙ ⴽ ⵡⴰⵜⵙⵏ ⴽⵔⴰ ⵏ ⵉⵅⴼⴰⵡⴰⵍⵏ ⵓⵔ ⵙⵉⴽ ⵉⵥⵍⵉⵏ, ⵜⵓⴼⵉⴷ ⴰⴷ  [[Special:CreateAccount|ⵙⴽⵔ ⵢⴰⵏ ⵓⵎⵉⴹⴰⵏ]] ⵏⵖ ⴷ [[Special:UserLogin|ⴽⵛⵎ]] ⴱⴰⵔ ⴰⴷ ⵜⴰⵏⴼⴷ ⵉ ⴽⵔⴰⵢⴳⴰⵜ ⴰⵎⵔⴽⵙ ⴷ ⵉⵎⴷⵔⴰⵡⵏ ⵢⴰⴹⵏ.",
+       "anontalkpagetext": "----\n<em>ⵜⵍⵍⵉⴷ ⴳ ⵜⴰⵙⵏ ⵏ ⵓⵎⵙⴰⵡⴰⵍ ⵏ ⵢⴰⵏ ⵓⵏⵙⵙⵎⵔⵙ ⵡⴰⵔⵉⵙⵎ ⵏⵏⴰ ⵜⴰ ⵓⵔ ⵉⵙⴽⵉⵔⵏ ⴰⵎⵉⴹⴰⵏ ⵏⵖ ⵏⵏⴰ ⵜ ⵓⵔ ⵉⵙⵙⵎⵔⵉⵙⵏ</em>.\nⴰⵢⴰ ⴰ ⵖⴼ ⵉⴼⵓⴽⴽ ⴰⴷ ⵏⵙⵙⵎⵔⵙ ⵜⴰⵏⵙⴰ ⵏⵏⵙ IP ⴼⴰⴷ ⴰⴷ ⵜ ⵏⵙⵎⴰⴳⵉ.\nⵢⴰⵜ ⵜⴰⵏⵙⴰ IP ⵥⴹⴰⵔⵏ ⴰⴷ ⵜⵜ ⵙⵙⵓⵔⵏ ⵎⵏⵏⴰⵡ ⵏ ⵉⵏⵙⵙⵎⵔⵙⵏ.\nⵎⴽ ⵜⴳⵉⴷ ⵢⴰⵏ ⵓⵏⵙⵙⵎⵔⵙ ⵡⴰⵔⵉⵙⵎ ⴷ ⴽ ⵜⵖⴹⴼⴷ ⵎⴰⵙ ⴽ ⵡⴰⵜⵙⵏ ⴽⵔⴰ ⵏ ⵉⵅⴼⴰⵡⴰⵍⵏ ⵓⵔ ⵙⵉⴽ ⵉⵥⵍⵉⵏ, ⵜⵓⴼⵉⴷ ⴰⴷ  [[Special:CreateAccount|ⵙⴽⵔ ⵢⴰⵏ ⵓⵎⵉⴹⴰⵏ]] ⵏⵖ ⴷ [[Special:UserLogin|ⴽⵛⵎ]] ⴱⴰⵔ ⴰⴷ ⵜⴰⵏⴼⴷ ⵉ ⴽⵔⴰⵢⴳⴰⵜ ⴰⵎⵔⴽⵙ ⴷ ⵉⵎⴷⵔⴰⵡⵏ ⵢⴰⴹⵏ.",
        "noarticletext": "ⵓⵔ ⵉⵍⵍⵉ ⴽⵔⴰ ⵏ ⵓⴹⵔⵉⵙ ⴳ ⵜⴰⵙⵏⴰ ⴰⴷ ⵖⵉⵍⴰ. \nⵜⵣⵎⵔⴷ ⴰⴷ [[Special:Search/{{PAGENAME}}|ⵜⵔⵣⵓⴷ ⵖⴼ ⵓⵣⵡⵍ ⵏⵏⵙ]] ⴳ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵢⴰⴹⵏ, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ⵔⵣⵓ ⵖⴼ logs ⵖⵔⵙ ⵉⵇⵇⵏⴻⵏ],\nⵏⵖ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ⵙⵏⵓⵍⴼⵓ ⵜⴰⵙⵏⴰ]</span>.",
        "noarticletext-nopermission": "ⴷⵖⵉ ⵓⵔ ⵉⵍⵍⵉ ⴰⵡⴷ ⴽⵔⴰ ⵏ ⵓⴹⵔⵉⵚ ⴳ ⵜⴰⵙⵏⴰ ⴰ.\nⵜⵣⵎⵔⴷ ⴰⴷ [[Special:Search/{{PAGENAME}}|ⵜⵔⵣⵓⴷ ⵖⴼ ⵓⵣⵡⵍ ⵏⵏⵙ]] ⴳ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵢⴰⴹⵏⵉⵏ, ⵏⵖ <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ⵔⵣⵓ ⵖⴼ ⵉⵣⵎⵎⴻⵎⵏ ⵉⵣⴷⵉⵏ]</span>, ⵎⴰⵛⴰ ⵓⵔ ⴷⴰⵔⴽ ⵜⵓⵔⴰⴳⵜ ⴰⴷ ⵜⵙⵏⵓⵍⴼⵓⴷ ⵜⴰⵙⵏⴰ ⴰ.",
        "userpage-userdoesnotexist-view": "ⴰⵎⵉⴹⴰⵏ ⵏ ⵓⵎⵙⵙⵎⵔⵙ $1 ⵓⵔ ⵉⵜⵜⵓⵣⵎⵎⴻⵎ.",
        "last": "ⵓⵣⵡⵔ",
        "page_last": "ⴰⵎⴳⴳⴰⵔⵓ",
        "histlegend": "ⴰⵙⵜⴰⵢ ⵏ ⵓⵎⵣⴰⵔⴰⵢ : ⵔⵛⵎ ⵜⴰⵏⴽⵓⵍⵉⵏ ⵏ ⵜⵓⵏⵖⵉⵍⵉⵏ ⵏⵏⴰ ⵜⵔⵉⴷ ⴰⴷ ⵜⵙⵎⵣⴰⵣⴰⵍⴷ ⵜⴰⴷⵔⴷ ⵉ ⴰⴽⵎ ⵏⵖ ⵉ ⵜⵙⴰⵔⵓⵜ ⵏ ⵢⵉⵣⴷⴰⵔ.<br />\nⵜⴰⴱⴰⴷⵓⵜ : <strong>({{int:cur}})</strong> = ⴰⵎⵣⴰⵔⴰⵢ ⴰⴽⴷ ⵜⵓⵏⵖⵉⵍⵜ ⵜⴰⵎⴳⴳⴰⵔⵓⵜ, <strong>({{int:last}})</strong> = ⴰⵎⵣⴰⵔⴰⵢ ⴰⴽⴷ ⵜⵓⵏⵖⵉⵍⵜ ⵉⵣⵔⵉⵏ, <strong>{{int:minoreditletter}}</strong> = ⵉⵙⵏⵉⴼⵉⵍⵏ ⵉⵎⵥⵥⵉⵢⵏ.",
-       "history-fieldset-title": "âµ\94âµ£âµ\93 âµ\96â´¼ ⵉⵣⵣⵔⴰⵢⵏ",
+       "history-fieldset-title": "âµ\99âµ\9câµ\89 ⵉⵣⵣⵔⴰⵢⵏ",
        "histfirst": "ⴰⵇⴱⵓⵔ",
        "histlast": "ⴰⵎⴰⵢⵏⵓ",
        "history-feed-title": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⵣⵣⵔⴰⵢ",
        "rcfilters-savedqueries-already-saved": "ⵜⵉⵎⵣⵉⵣⴷⴳⵉⵜⵉⵏ ⴰⴷ ⵜⵜⵡⴰⵃⴹⴰⵏⵜ ⵢⴰⴷ. ⵙⵏⴼⵍ ⵜⵉⵙⵖⴰⵍ ⵏⴽ ⵃⵎⴰ ⴰⴷ ⵜⵙⵏⴼⵍⴷ ⵜⵉⵎⵣⵉⵣⴷⴳⵜ ⵜⴰⵎⴰⵢⵏⵓⵜ ⵉⵜⵜⵡⴰⵃⴹⴰⵏ.",
        "rcfilters-restore-default-filters": "ⵔⴰⵔ ⴷ ⵜⵉⵎⵣⵉⵣⴷⴳⵉⵜⵉⵏ ⵙ ⵓⵎⵕⴰⴹ",
        "rcfilters-clear-all-filters": "ⵚⵚⴼⴹ ⴰⴽⴽⵯ ⵜⵉⵎⵣⵉⵣⴷⴳⵉⵜⵉⵏ",
-       "rcfilters-show-new-changes": "ⵙⴽⵏ ⵉⵙⵏⴼⵍⵏ ⵉⵎⴰⵢⵏⵓⵜⵏ",
+       "rcfilters-show-new-changes": "ⵙⴽⵏ ⵉⵙⵏⴼⵍⵏ ⵉⵎⴰⵢⵏⵓⵜⵏ ⵣⴳ $1",
        "rcfilters-search-placeholder": "ⵣⵉⵣⴷⵉⴳ ⵉⵙⵏⴼⵍⵏ (ⵙⵎⵔⵙ ⵓⵎⵓⵖ ⵏⵖ ⵔⵣⵓ ⵖⴼ ⵉⵙⵎ ⵏ ⵜⵎⵣⵉⵣⴷⴳⵜ)",
        "rcfilters-invalid-filter": "ⵜⵉⵎⵣⵉⵣⴷⴳⵜ ⵓⵔ ⵉⵖⵥⴰⵏⵏ",
        "rcfilters-empty-filter": "ⵃⵜⵜⴰ ⴽⵔⴰ ⵏ ⵜⵉⵎⵣⵉⵣⴷⴳⵜ ⵉⵙⵡⵓⵔⵉⵏ. ⴰⴽⴽⵯ ⵉⵙⵏⵍⵏ ⵜⵜⵡⴰⵙⴽⵏⵏ.",
index c2cd05b..4ccd526 100644 (file)
        "logentry-import-upload": "$1 已由檔案上傳{{GENDER:$2|匯入}} $3",
        "logentry-import-upload-details": "$1 已使用檔案上傳{{GENDER:$2|匯入}} $3 ($4 {{PLURAL:$4|修訂|修訂}})",
        "logentry-import-interwiki": "$1 已由其他 wiki {{GENDER:$2|匯入}} $3",
-       "logentry-import-interwiki-details": "$1 已自 $5 {{GENDER:$2|匯入}} $3 ($4 {{PLURAL:$4|修訂|修訂}})",
+       "logentry-import-interwiki-details": "$1已自$5{{GENDER:$2|匯入}}$3($4{{PLURAL:$4|修訂|修訂}})",
        "logentry-merge-merge": "$1 將 $3 {{GENDER:$2|合併}}至 $4 (修訂版本至 $5)",
        "logentry-move-move": "$1 {{GENDER:$2|已移動}}頁面 $3 至 $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|已移動}}頁面 $3 至 $4,不留重新導向",
index 726a3fe..180ed65 100644 (file)
@@ -894,6 +894,7 @@ return [
                'dependencies' => [
                        'mediawiki.api',
                        'oojs',
+                       'mediawiki.Uri',
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
@@ -1254,8 +1255,8 @@ return [
                ]
        ],
        'mediawiki.util' => [
-               'localBasePath' => "$IP/resources/src/mediawiki.util/",
-               'remoteBasePath' => "$wgResourceBasePath/resources/src/mediawiki.util/",
+               'localBasePath' => "$IP/resources/src/mediawiki.util",
+               'remoteBasePath' => "$wgResourceBasePath/resources/src/mediawiki.util",
                'packageFiles' => [
                        'util.js',
                        'jquery.accessKeyLabel.js',
index 4b6313b..83ea0ce 100644 (file)
@@ -59,7 +59,6 @@
                                        }
                                },
                                parameters: {
-                                       // Add 'origin' query parameter to all requests.
                                        origin: this.getOrigin()
                                }
                        },
         * any).
         *
         * @protected
-        * @return {string}
+        * @return {string|undefined}
         */
        CoreForeignApi.prototype.getOrigin = function () {
-               var origin;
+               var origin, apiUri, apiOrigin;
                if ( this.anonymous ) {
                        return '*';
                }
+
                origin = location.protocol + '//' + location.hostname;
                if ( location.port ) {
                        origin += ':' + location.port;
                }
+
+               apiUri = new mw.Uri( this.apiUrl );
+               apiOrigin = apiUri.protocol + '://' + apiUri.getAuthority();
+               if ( origin === apiOrigin ) {
+                       // requests are not cross-origin, omit parameter
+                       return undefined;
+               }
+
                return origin;
        };
 
                if ( ajaxOptions.type === 'POST' ) {
                        url = ( ajaxOptions && ajaxOptions.url ) || this.defaults.ajax.url;
                        origin = ( parameters && parameters.origin ) || this.defaults.parameters.origin;
-                       url += ( url.indexOf( '?' ) !== -1 ? '&' : '?' ) +
-                               // Depending on server configuration, MediaWiki may forbid periods in URLs, due to an IE 6
-                               // XSS bug. So let's escape them here. See WebRequest::checkUrlExtension() and T30235.
-                               'origin=' + encodeURIComponent( origin ).replace( /\./g, '%2E' );
+                       if ( origin !== undefined ) {
+                               url += ( url.indexOf( '?' ) !== -1 ? '&' : '?' ) +
+                                       // Depending on server configuration, MediaWiki may forbid periods in URLs, due to an IE 6
+                                       // XSS bug. So let's escape them here. See WebRequest::checkUrlExtension() and T30235.
+                                       'origin=' + encodeURIComponent( origin ).replace( /\./g, '%2E' );
+                       }
                        newAjaxOptions = $.extend( {}, ajaxOptions, { url: url } );
                } else {
                        newAjaxOptions = ajaxOptions;
diff --git a/tests/phpunit/data/media/jpeg-xmp-nullchar.jpg b/tests/phpunit/data/media/jpeg-xmp-nullchar.jpg
new file mode 100644 (file)
index 0000000..76ae2b4
Binary files /dev/null and b/tests/phpunit/data/media/jpeg-xmp-nullchar.jpg differ
index 9665867..7115515 100644 (file)
@@ -4,6 +4,7 @@ namespace MediaWiki\Tests\Revision;
 
 use Content;
 use Language;
+use MediaWiki\MediaWikiServices;
 use MediaWiki\Revision\MutableRevisionRecord;
 use MediaWiki\Revision\MutableRevisionSlots;
 use MediaWiki\Revision\RenderedRevision;
@@ -122,7 +123,9 @@ class RenderedRevisionTest extends MediaWikiTestCase {
                $mock->expects( $this->any() )
                        ->method( 'userCan' )
                        ->willReturnCallback( function ( $perm, User $user ) use ( $mock ) {
-                               return $user->isAllowed( $perm );
+                               return MediaWikiServices::getInstance()
+                                       ->getPermissionManager()
+                                       ->userHasRight( $user, $perm );
                        } );
 
                return $mock;
index 6c56510..4a0a6d0 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /**
  * @todo Could use a test of extended XMP segments. Hard to find programs that
- * create example files, and creating my own in vim propbably wouldn't
+ * create example files, and creating my own in vim probably wouldn't
  * serve as a very good "test". (Adobe photoshop probably creates such files
  * but it costs money). The implementation of it currently in MediaWiki is based
  * solely on reading the standard, without any real world test files.
@@ -76,6 +76,12 @@ class JpegMetadataExtractorTest extends MediaWikiIntegrationTestCase {
                $this->assertEquals( $expected, bin2hex( $res['PSIR'][0] ) );
        }
 
+       public function testXMPExtractionNullChar() {
+               $res = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'jpeg-xmp-nullchar.jpg' );
+               $expected = file_get_contents( $this->filePath . 'jpeg-xmp-psir.xmp' );
+               $this->assertEquals( $expected, $res['XMP'] );
+       }
+
        public function testXMPExtractionAltAppId() {
                $res = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'jpeg-xmp-alt.jpg' );
                $expected = file_get_contents( $this->filePath . 'jpeg-xmp-psir.xmp' );
index 879acfe..5435afa 100644 (file)
@@ -8,6 +8,11 @@
  */
 class SpecialBlankPageTest extends SpecialPageTestBase {
 
+       protected function setUp() {
+               parent::setUp();
+               $this->setUserLang( 'qqx' );
+       }
+
        /**
         * Returns a new instance of the special page under test.
         *
@@ -19,7 +24,7 @@ class SpecialBlankPageTest extends SpecialPageTestBase {
 
        public function testHasWikiMsg() {
                list( $html, ) = $this->executeSpecialPage();
-               $this->assertContains( wfMessage( 'intentionallyblankpage' )->text(), $html );
+               $this->assertContains( '(intentionallyblankpage)', $html );
        }
 
 }
index e38d77b..0e46744 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 use MediaWiki\Block\DatabaseBlock;
+use MediaWiki\MediaWikiServices;
 
 /**
  * @covers LocalIdLookup
@@ -47,12 +48,12 @@ class LocalIdLookupTest extends MediaWikiTestCase {
 
        public function testLookupCentralIds() {
                $lookup = new LocalIdLookup();
-
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
                $user1 = $this->getLookupUser();
                $user2 = User::newFromName( 'UTLocalIdLookup2' );
 
-               $this->assertTrue( $user1->isAllowed( 'hideuser' ), 'sanity check' );
-               $this->assertFalse( $user2->isAllowed( 'hideuser' ), 'sanity check' );
+               $this->assertTrue( $permissionManager->userHasRight( $user1, 'hideuser' ), 'sanity check' );
+               $this->assertFalse( $permissionManager->userHasRight( $user2, 'hideuser' ), 'sanity check' );
 
                $this->assertSame( [], $lookup->lookupCentralIds( [] ) );
 
@@ -76,11 +77,12 @@ class LocalIdLookupTest extends MediaWikiTestCase {
 
        public function testLookupUserNames() {
                $lookup = new LocalIdLookup();
+               $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
                $user1 = $this->getLookupUser();
                $user2 = User::newFromName( 'UTLocalIdLookup2' );
 
-               $this->assertTrue( $user1->isAllowed( 'hideuser' ), 'sanity check' );
-               $this->assertFalse( $user2->isAllowed( 'hideuser' ), 'sanity check' );
+               $this->assertTrue( $permissionManager->userHasRight( $user1, 'hideuser' ), 'sanity check' );
+               $this->assertFalse( $permissionManager->userHasRight( $user2, 'hideuser' ), 'sanity check' );
 
                $this->assertSame( [], $lookup->lookupUserNames( [] ) );
 
index b0c0fec..4a7aa05 100644 (file)
@@ -4,6 +4,7 @@ use MediaWiki\Auth\AuthManager;
 use MediaWiki\Block\DatabaseBlock;
 use MediaWiki\Block\CompositeBlock;
 use MediaWiki\Block\SystemBlock;
+use MediaWiki\Permissions\PermissionManager;
 
 /**
  * @covers PasswordReset
@@ -30,16 +31,19 @@ class PasswordResetTest extends MediaWikiTestCase {
                $user->expects( $this->any() )->method( 'getName' )->willReturn( 'Foo' );
                $user->expects( $this->any() )->method( 'getBlock' )->willReturn( $block );
                $user->expects( $this->any() )->method( 'getGlobalBlock' )->willReturn( $globalBlock );
-               $user->expects( $this->any() )->method( 'isAllowed' )
-                       ->will( $this->returnCallback( function ( $perm ) use ( $canEditPrivate ) {
-                               if ( $perm === 'editmyprivateinfo' ) {
-                                       return $canEditPrivate;
-                               } else {
-                                       $this->fail( 'Unexpected permission check' );
-                               }
-                       } ) );
 
-               $passwordReset = new PasswordReset( $config, $authManager );
+               $permissionManager = $this->getMockBuilder( PermissionManager::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $permissionManager->method( 'userHasRight' )
+                       ->with( $user, 'editmyprivateinfo' )
+                       ->willReturn( $canEditPrivate );
+
+               $passwordReset = new PasswordReset(
+                       $config,
+                       $authManager,
+                       $permissionManager
+               );
 
                $this->assertSame( $isAllowed, $passwordReset->isAllowed( $user )->isGood() );
        }
@@ -204,9 +208,16 @@ class PasswordResetTest extends MediaWikiTestCase {
                $request->setIP( '1.2.3.4' );
                $performingUser = $this->getMockBuilder( User::class )->getMock();
                $performingUser->expects( $this->any() )->method( 'getRequest' )->willReturn( $request );
-               $performingUser->expects( $this->any() )->method( 'isAllowed' )->willReturn( true );
                $performingUser->expects( $this->any() )->method( 'getName' )->willReturn( 'Performer' );
 
+               $permissionManager = $this->getMockBuilder( PermissionManager::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $permissionManager->expects( $this->once() )
+                       ->method( 'userHasRight' )
+                       ->with( $performingUser, 'editmyprivateinfo' )
+                       ->willReturn( true );
+
                $targetUser1 = $this->getMockBuilder( User::class )->getMock();
                $targetUser2 = $this->getMockBuilder( User::class )->getMock();
                $targetUser1->expects( $this->any() )->method( 'getName' )->willReturn( 'User1' );
@@ -217,7 +228,8 @@ class PasswordResetTest extends MediaWikiTestCase {
                $targetUser2->expects( $this->any() )->method( 'getEmail' )->willReturn( 'foo@bar.baz' );
 
                $passwordReset = $this->getMockBuilder( PasswordReset::class )
-                       ->setMethods( [ 'getUsersByEmail' ] )->setConstructorArgs( [ $config, $authManager ] )
+                       ->setConstructorArgs( [ $config, $authManager, $permissionManager ] )
+                       ->setMethods( [ 'getUsersByEmail' ] )
                        ->getMock();
                $passwordReset->expects( $this->any() )->method( 'getUsersByEmail' )->with( 'foo@bar.baz' )
                        ->willReturn( [ $targetUser1, $targetUser2 ] );
index 4862747..6f57578 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * @group Database
  */
@@ -61,7 +63,9 @@ class UserGroupMembershipTest extends MediaWikiTestCase {
                $user->clearInstanceCache();
                $this->assertContains( 'unittesters', $user->getGroups() );
                $this->assertArrayHasKey( 'unittesters', $user->getGroupMemberships() );
-               $this->assertTrue( $user->isAllowed( 'runtest' ) );
+               $this->assertTrue( MediaWikiServices::getInstance()
+                       ->getPermissionManager()
+                       ->userHasRight( $user, 'runtest' ) );
 
                // try updating without allowUpdate. Should fail
                $ugm = new UserGroupMembership( $user->getId(), 'unittesters', $this->expiryTime );
@@ -72,7 +76,9 @@ class UserGroupMembershipTest extends MediaWikiTestCase {
                $user->clearInstanceCache();
                $this->assertContains( 'unittesters', $user->getGroups() );
                $this->assertArrayHasKey( 'unittesters', $user->getGroupMemberships() );
-               $this->assertTrue( $user->isAllowed( 'runtest' ) );
+               $this->assertTrue( MediaWikiServices::getInstance()
+                       ->getPermissionManager()
+                       ->userHasRight( $user, 'runtest' ) );
 
                // try removing the group
                $ugm->delete();
@@ -81,7 +87,9 @@ class UserGroupMembershipTest extends MediaWikiTestCase {
                        $this->logicalNot( $this->contains( 'unittesters' ) ) );
                $this->assertThat( $user->getGroupMemberships(),
                        $this->logicalNot( $this->arrayHasKey( 'unittesters' ) ) );
-               $this->assertFalse( $user->isAllowed( 'runtest' ) );
+               $this->assertFalse( MediaWikiServices::getInstance()
+                       ->getPermissionManager()
+                       ->userHasRight( $user, 'runtest' ) );
 
                // check that the user group is now in user_former_groups
                $this->assertContains( 'unittesters', $user->getFormerGroups() );
index 541c610..22a3a4b 100644 (file)
                return api.post( {} );
        } );
 
+       QUnit.test( 'origin is not included in same-origin GET requests', function ( assert ) {
+               var apiUrl = location.protocol + '//' + location.host + '/w/api.php',
+                       api = new mw.ForeignApi( apiUrl );
+
+               this.server.respond( function ( request ) {
+                       assert.strictEqual( request.url.match( /origin=.*?(?:&|$)/ ), null, 'origin is not included in GET requests' );
+                       request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
+               } );
+
+               return api.get( {} );
+       } );
+
+       QUnit.test( 'origin is not included in same-origin POST requests', function ( assert ) {
+               var apiUrl = location.protocol + '//' + location.host + '/w/api.php',
+                       api = new mw.ForeignApi( apiUrl );
+
+               this.server.respond( function ( request ) {
+                       assert.strictEqual( request.requestBody.match( /origin=.*?(?:&|$)/ ), null, 'origin is not included in POST request body' );
+                       assert.strictEqual( request.url.match( /origin=.*?(?:&|$)/ ), null, 'origin is not included in POST request URL, either' );
+                       request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
+               } );
+
+               return api.post( {} );
+       } );
+
 }() );