Merge "Ensure logo preload transforms urls if needed"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 12 Apr 2017 21:50:07 +0000 (21:50 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 12 Apr 2017 21:50:07 +0000 (21:50 +0000)
130 files changed:
RELEASE-NOTES-1.29
autoload.php
includes/Block.php
includes/DefaultSettings.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/MovePage.php
includes/Revision.php
includes/SiteStats.php
includes/Title.php
includes/actions/InfoAction.php
includes/api/ApiBase.php
includes/api/ApiOpenSearch.php
includes/api/ApiPageSet.php
includes/api/ApiQuery.php
includes/api/ApiQueryBase.php
includes/api/i18n/fr.json
includes/api/i18n/pt-br.json
includes/cache/BacklinkCache.php
includes/cache/LinkCache.php
includes/cache/MessageBlobStore.php
includes/cache/MessageCache.php
includes/changes/ChangesListBooleanFilter.php
includes/changetags/ChangeTags.php
includes/dao/DBAccessBase.php
includes/db/DatabaseOracle.php
includes/filerepo/ForeignDBRepo.php
includes/filerepo/LocalRepo.php
includes/filerepo/file/LocalFile.php
includes/installer/DatabaseInstaller.php
includes/installer/DatabaseUpdater.php
includes/installer/MssqlInstaller.php
includes/installer/MssqlUpdater.php
includes/installer/MysqlInstaller.php
includes/installer/PostgresInstaller.php
includes/installer/PostgresUpdater.php
includes/installer/SqliteInstaller.php
includes/installer/SqliteUpdater.php
includes/interwiki/ClassicInterwikiLookup.php
includes/libs/lockmanager/DBLockManager.php
includes/libs/rdbms/connectionmanager/ConnectionManager.php
includes/libs/rdbms/connectionmanager/SessionConsistentConnectionManager.php
includes/libs/rdbms/database/DBConnRef.php
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/database/DatabaseMssql.php
includes/libs/rdbms/database/DatabaseMysql.php
includes/libs/rdbms/database/DatabaseMysqlBase.php
includes/libs/rdbms/database/DatabaseMysqli.php
includes/libs/rdbms/database/DatabasePostgres.php
includes/libs/rdbms/database/DatabaseSqlite.php
includes/libs/rdbms/database/IDatabase.php
includes/libs/rdbms/database/IMaintainableDatabase.php
includes/libs/rdbms/database/MaintainableDBConnRef.php
includes/libs/rdbms/database/utils/SavepointPostgres.php
includes/libs/rdbms/exception/DBQueryError.php
includes/libs/rdbms/field/PostgresField.php
includes/libs/rdbms/loadbalancer/ILoadBalancer.php
includes/libs/rdbms/loadbalancer/LoadBalancer.php
includes/objectcache/SqlBagOStuff.php
includes/resourceloader/ResourceLoaderWikiModule.php
includes/specialpage/ChangesListSpecialPage.php
includes/user/BotPassword.php
includes/user/User.php
languages/i18n/ar.json
languages/i18n/ast.json
languages/i18n/be-tarask.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/fy.json
languages/i18n/gl.json
languages/i18n/gor.json
languages/i18n/gsw.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hr.json
languages/i18n/ht.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/ilo.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/lt.json
languages/i18n/lv.json
languages/i18n/mg.json
languages/i18n/mk.json
languages/i18n/ms.json
languages/i18n/nb.json
languages/i18n/nl.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/sco.json
languages/i18n/sl.json
languages/i18n/sq.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/su.json
languages/i18n/sv.json
languages/i18n/tr.json
languages/i18n/udm.json
languages/i18n/uk.json
languages/i18n/yue.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/rebuildtextindex.php
maintenance/sqlite.inc
resources/src/mediawiki.action/mediawiki.action.edit.js
resources/src/mediawiki.action/mediawiki.action.edit.styles.css
resources/src/mediawiki.skinning/interface.css
resources/src/mediawiki.widgets/mw.widgets.ComplexNamespaceInputWidget.js
resources/src/mediawiki.widgets/mw.widgets.ComplexTitleInputWidget.js
resources/src/mediawiki/mediawiki.js
tests/phpunit/includes/db/DatabaseMysqlBaseTest.php
tests/phpunit/includes/db/DatabaseSqliteTest.php

index 33d917c..c960267 100644 (file)
@@ -63,6 +63,13 @@ production.
 * Completely new user interface for the RecentChanges page, which
   structures filters into user-friendly groups.  This has corresponding
   changes to how filters are registered by core and extensions.
+* The edit form now uses pretty OOjs UI buttons, checkboxes and summary input.
+  Because this change can cause problems for extensions and on-wiki
+  scripts depending on the exact HTML, the old version is still available
+  and can be used by setting $wgOOUIEditPage = false; in LocalSettings.php.
+  This will be removed later and OOjs UI will become the only option.
+  To make testing easier, users can also force either mode by adding
+  &ooui=true or &ooui=false to the action=edit URL.
 
 === External library changes in 1.29 ===
 
index 0c26811..bfac50d 100644 (file)
@@ -1260,7 +1260,6 @@ $wgAutoloadLocalClasses = [
        'SVGReader' => __DIR__ . '/includes/media/SVGMetadataExtractor.php',
        'SamplingStatsdClient' => __DIR__ . '/includes/libs/stats/SamplingStatsdClient.php',
        'Sanitizer' => __DIR__ . '/includes/Sanitizer.php',
-       'SavepointPostgres' => __DIR__ . '/includes/libs/rdbms/database/utils/SavepointPostgres.php',
        'ScopedCallback' => __DIR__ . '/includes/compat/ScopedCallback.php',
        'ScopedLock' => __DIR__ . '/includes/libs/lockmanager/ScopedLock.php',
        'SearchApi' => __DIR__ . '/includes/api/SearchApi.php',
@@ -1597,7 +1596,14 @@ $wgAutoloadLocalClasses = [
        'Wikimedia\\Rdbms\\ConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/ConnectionManager.php',
        'Wikimedia\\Rdbms\\DBConnRef' => __DIR__ . '/includes/libs/rdbms/database/DBConnRef.php',
        'Wikimedia\\Rdbms\\DBMasterPos' => __DIR__ . '/includes/libs/rdbms/database/position/DBMasterPos.php',
+       'Wikimedia\\Rdbms\\Database' => __DIR__ . '/includes/libs/rdbms/database/Database.php',
        'Wikimedia\\Rdbms\\DatabaseDomain' => __DIR__ . '/includes/libs/rdbms/database/DatabaseDomain.php',
+       'Wikimedia\\Rdbms\\DatabaseMssql' => __DIR__ . '/includes/libs/rdbms/database/DatabaseMssql.php',
+       'Wikimedia\\Rdbms\\DatabaseMysql' => __DIR__ . '/includes/libs/rdbms/database/DatabaseMysql.php',
+       'Wikimedia\\Rdbms\\DatabaseMysqlBase' => __DIR__ . '/includes/libs/rdbms/database/DatabaseMysqlBase.php',
+       'Wikimedia\\Rdbms\\DatabaseMysqli' => __DIR__ . '/includes/libs/rdbms/database/DatabaseMysqli.php',
+       'Wikimedia\\Rdbms\\DatabasePostgres' => __DIR__ . '/includes/libs/rdbms/database/DatabasePostgres.php',
+       'Wikimedia\\Rdbms\\DatabaseSqlite' => __DIR__ . '/includes/libs/rdbms/database/DatabaseSqlite.php',
        'Wikimedia\\Rdbms\\FakeResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php',
        'Wikimedia\\Rdbms\\Field' => __DIR__ . '/includes/libs/rdbms/field/Field.php',
        'Wikimedia\\Rdbms\\IBlob' => __DIR__ . '/includes/libs/rdbms/encasing/IBlob.php',
@@ -1627,6 +1633,7 @@ $wgAutoloadLocalClasses = [
        'Wikimedia\\Rdbms\\PostgresField' => __DIR__ . '/includes/libs/rdbms/field/PostgresField.php',
        'Wikimedia\\Rdbms\\ResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php',
        'Wikimedia\\Rdbms\\SQLiteField' => __DIR__ . '/includes/libs/rdbms/field/SQLiteField.php',
+       'Wikimedia\\Rdbms\\SavepointPostgres' => __DIR__ . '/includes/libs/rdbms/database/utils/SavepointPostgres.php',
        'Wikimedia\\Rdbms\\SessionConsistentConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/SessionConsistentConnectionManager.php',
        'Wikimedia\\Rdbms\\TransactionProfiler' => __DIR__ . '/includes/libs/rdbms/TransactionProfiler.php',
        'WikitextContent' => __DIR__ . '/includes/content/WikitextContent.php',
index b6b3ae0..0b7f7b2 100644 (file)
@@ -20,6 +20,7 @@
  * @file
  */
 
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 use MediaWiki\MediaWikiServices;
 
index 53a147b..d3171a8 100644 (file)
@@ -3216,6 +3216,14 @@ $wgHTMLFormAllowTableFormat = true;
  */
 $wgUseMediaWikiUIEverywhere = false;
 
+/**
+ * Temporary variable that determines whether the EditPage class should use OOjs UI or not.
+ * This will be removed later and OOjs UI will become the only option.
+ *
+ * @since 1.29
+ */
+$wgOOUIEditPage = true;
+
 /**
  * Whether to label the store-to-database-and-show-to-others button in the editor
  * as "Save page"/"Save changes" if false (the default) or, if true, instead as
index 7bdc3bc..c19ed5e 100644 (file)
@@ -413,10 +413,17 @@ class EditPage {
         */
        private $isOldRev = false;
 
+       /**
+        * @var bool Whether OOUI should be enabled here
+        */
+       private $oouiEnabled = false;
+
        /**
         * @param Article $article
         */
        public function __construct( Article $article ) {
+               global $wgOOUIEditPage;
+
                $this->mArticle = $article;
                $this->page = $article->getPage(); // model object
                $this->mTitle = $article->getTitle();
@@ -426,6 +433,8 @@ class EditPage {
 
                $handler = ContentHandler::getForModelID( $this->contentModel );
                $this->contentFormat = $handler->getDefaultFormat();
+
+               $this->oouiEnabled = $wgOOUIEditPage;
        }
 
        /**
@@ -476,6 +485,14 @@ class EditPage {
                }
        }
 
+       /**
+        * Check if the edit page is using OOUI controls
+        * @return bool
+        */
+       public function isOouiEnabled() {
+               return $this->oouiEnabled;
+       }
+
        /**
         * Returns if the given content model is editable.
         *
@@ -843,6 +860,9 @@ class EditPage {
        public function importFormData( &$request ) {
                global $wgContLang, $wgUser;
 
+               # Allow users to change the mode for testing
+               $this->oouiEnabled = $request->getFuzzyBool( 'ooui', $this->oouiEnabled );
+
                # Section edit can come from either the form or a link
                $this->section = $request->getVal( 'wpSection', $request->getVal( 'section' ) );
 
@@ -2637,6 +2657,7 @@ class EditPage {
                $wgOut->addHTML( Html::openElement(
                        'form',
                        [
+                               'class' => $this->oouiEnabled ? 'mw-editform-ooui' : 'mw-editform-legacy',
                                'id' => self::EDITFORM_ID,
                                'name' => self::EDITFORM_ID,
                                'method' => 'post',
@@ -2736,6 +2757,11 @@ class EditPage {
                $wgOut->addHTML( Html::hidden( 'format', $this->contentFormat ) );
                $wgOut->addHTML( Html::hidden( 'model', $this->contentModel ) );
 
+               // following functions will need OOUI, enable it only once; here.
+               if ( $this->oouiEnabled ) {
+                       $wgOut->enableOOUI();
+               }
+
                if ( $this->section == 'new' ) {
                        $this->showSummaryInput( true, $this->summary );
                        $wgOut->addHTML( $this->getSummaryPreview( true, $this->summary ) );
@@ -3007,6 +3033,24 @@ class EditPage {
                $this->showHeaderCopyrightWarning();
        }
 
+       /**
+        * Helper function for summary input functions, which returns the neccessary
+        * attributes for the input.
+        *
+        * @param array|null $inputAttrs Array of attrs to use on the input
+        * @return array
+        */
+       private function getSummaryInputAttributes( array $inputAttrs = null ) {
+               // Note: the maxlength is overridden in JS to 255 and to make it use UTF-8 bytes, not characters.
+               return ( is_array( $inputAttrs ) ? $inputAttrs : [] ) + [
+                       'id' => 'wpSummary',
+                       'maxlength' => '200',
+                       'tabindex' => '1',
+                       'size' => 60,
+                       'spellcheck' => 'true',
+               ] + Linker::tooltipAndAccesskeyAttribs( 'summary' );
+       }
+
        /**
         * Standard summary input and label (wgSummary), abstracted so EditPage
         * subclasses may reorganize the form.
@@ -3024,14 +3068,7 @@ class EditPage {
        public function getSummaryInput( $summary = "", $labelText = null,
                $inputAttrs = null, $spanLabelAttrs = null
        ) {
-               // Note: the maxlength is overridden in JS to 255 and to make it use UTF-8 bytes, not characters.
-               $inputAttrs = ( is_array( $inputAttrs ) ? $inputAttrs : [] ) + [
-                       'id' => 'wpSummary',
-                       'maxlength' => '200',
-                       'tabindex' => '1',
-                       'size' => 60,
-                       'spellcheck' => 'true',
-               ] + Linker::tooltipAndAccesskeyAttribs( 'summary' );
+               $inputAttrs = $this->getSummaryInputAttributes( $inputAttrs );
 
                $spanLabelAttrs = ( is_array( $spanLabelAttrs ) ? $spanLabelAttrs : [] ) + [
                        'class' => $this->missingSummary ? 'mw-summarymissed' : 'mw-summary',
@@ -3053,6 +3090,34 @@ class EditPage {
                return [ $label, $input ];
        }
 
+       /**
+        * Same as self::getSummaryInput, but uses OOUI, instead of plain HTML.
+        * Builds a standard summary input with a label.
+        *
+        * @param string $summary The value of the summary input
+        * @param string $labelText The html to place inside the label
+        * @param array $inputAttrs Array of attrs to use on the input
+        *
+        * @return OOUI\FieldLayout OOUI FieldLayout with Label and Input
+        */
+       function getSummaryInputOOUI( $summary = "", $labelText = null, $inputAttrs = null ) {
+               $inputAttrs = OOUI\Element::configFromHtmlAttributes(
+                       $this->getSummaryInputAttributes( $inputAttrs )
+               );
+
+               return new OOUI\FieldLayout(
+                       new OOUI\TextInputWidget( [
+                               'value' => $summary,
+                       ] + $inputAttrs ),
+                       [
+                               'label' => new OOUI\HtmlSnippet( $labelText ),
+                               'align' => 'top',
+                               'id' => 'wpSummaryLabel',
+                               'classes' => [ $this->missingSummary ? 'mw-summarymissed' : 'mw-summary' ],
+                       ]
+               );
+       }
+
        /**
         * @param bool $isSubjectPreview True if this is the section subject/title
         *   up top, or false if this is the comment summary
@@ -3073,14 +3138,23 @@ class EditPage {
                                return;
                        }
                }
+
                $labelText = $this->context->msg( $isSubjectPreview ? 'subject' : 'summary' )->parse();
-               list( $label, $input ) = $this->getSummaryInput(
-                       $summary,
-                       $labelText,
-                       [ 'class' => $summaryClass ],
-                       []
-               );
-               $wgOut->addHTML( "{$label} {$input}" );
+               if ( $this->oouiEnabled ) {
+                       $wgOut->addHTML( $this->getSummaryInputOOUI(
+                               $summary,
+                               $labelText,
+                               [ 'class' => $summaryClass ]
+                       ) );
+               } else {
+                       list( $label, $input ) = $this->getSummaryInput(
+                               $summary,
+                               $labelText,
+                               [ 'class' => $summaryClass ]
+                       );
+                       $wgOut->addHTML( "{$label} {$input}" );
+               }
+
        }
 
        /**
@@ -3490,9 +3564,21 @@ HTML
                        $wgOut->addHTML( $this->getSummaryPreview( false, $this->summary ) );
                }
 
-               $checkboxes = $this->getCheckboxes( $tabindex,
-                       [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ] );
-               $wgOut->addHTML( "<div class='editCheckboxes'>" . implode( $checkboxes, "\n" ) . "</div>\n" );
+               if ( $this->oouiEnabled ) {
+                       $checkboxes = $this->getCheckboxesOOUI(
+                               $tabindex,
+                               [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ]
+                       );
+                       $checkboxesHTML = new OOUI\HorizontalLayout( [ 'items' => $checkboxes ] );
+               } else {
+                       $checkboxes = $this->getCheckboxes(
+                               $tabindex,
+                               [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ]
+                       );
+                       $checkboxesHTML = implode( $checkboxes, "\n" );
+               }
+
+               $wgOut->addHTML( "<div class='editCheckboxes'>" . $checkboxesHTML . "</div>\n" );
 
                // Show copyright warning.
                $wgOut->addWikiText( $this->getCopywarn() );
@@ -3580,13 +3666,22 @@ HTML
                } elseif ( $this->getContextTitle()->isRedirect() ) {
                        $cancelParams['redirect'] = 'no';
                }
-
-               return MediaWikiServices::getInstance()->getLinkRenderer()->makeKnownLink(
-                       $this->getContextTitle(),
-                       new HtmlArmor( $this->context->msg( 'cancel' )->parse() ),
-                       Html::buttonAttributes( [ 'id' => 'mw-editform-cancel' ], [ 'mw-ui-quiet' ] ),
-                       $cancelParams
-               );
+               if ( $this->oouiEnabled ) {
+                       return new OOUI\ButtonWidget( [
+                               'id' => 'mw-editform-cancel',
+                               'href' => $this->getContextTitle()->getLinkUrl( $cancelParams ),
+                               'label' => new OOUI\HtmlSnippet( $this->context->msg( 'cancel' )->parse() ),
+                               'framed' => false,
+                               'flags' => 'destructive',
+                       ] );
+               } else {
+                       return MediaWikiServices::getInstance()->getLinkRenderer()->makeKnownLink(
+                               $this->getContextTitle(),
+                               new HtmlArmor( $this->context->msg( 'cancel' )->parse() ),
+                               Html::buttonAttributes( [ 'id' => 'mw-editform-cancel' ], [ 'mw-ui-quiet' ] ),
+                               $cancelParams
+                       );
+               }
        }
 
        /**
@@ -4062,7 +4157,7 @@ HTML
        }
 
        /**
-        * Returns an array of html code of the following checkboxes:
+        * Returns an array of html code of the following checkboxes old style:
         * minor and watch
         *
         * @param int $tabindex Current tabindex
@@ -4119,6 +4214,68 @@ HTML
                return $checkboxes;
        }
 
+       /**
+        * Returns an array of html code of the following checkboxes:
+        * minor and watch
+        *
+        * @param int $tabindex Current tabindex
+        * @param array $checked Array of checkbox => bool, where bool indicates the checked
+        *                 status of the checkbox
+        *
+        * @return array
+        */
+       public function getCheckboxesOOUI( &$tabindex, $checked ) {
+               $checkboxes = [];
+               $checkboxesDef = $this->getCheckboxesDefinition( $checked );
+
+               $origTabindex = $tabindex;
+
+               foreach ( $checkboxesDef as $name => $options ) {
+                       $legacyName = isset( $options['legacy-name'] ) ? $options['legacy-name'] : $name;
+
+                       $title = null;
+                       $accesskey = null;
+                       if ( isset( $options['tooltip'] ) ) {
+                               $accesskey = $this->context->msg( "accesskey-{$options['tooltip']}" )->text();
+                               $title = Linker::titleAttrib( $options['tooltip'], 'withaccess' );
+                       }
+                       if ( isset( $options['title-message'] ) ) {
+                               $title = $this->context->msg( $options['title-message'] )->text();
+                       }
+                       if ( isset( $options['label-id'] ) ) {
+                               $labelAttribs['id'] = $options['label-id'];
+                       }
+
+                       $checkboxes[ $legacyName ] = new OOUI\FieldLayout(
+                               new OOUI\CheckboxInputWidget( [
+                                       'tabIndex' => ++$tabindex,
+                                       'accessKey' => $accesskey,
+                                       'id' => $options['id'],
+                                       'name' => $name,
+                                       'selected' => $options['default'],
+                               ] ),
+                               [
+                                       'align' => 'inline',
+                                       'label' => new OOUI\HtmlSnippet( $this->context->msg( $options['label-message'] )->parse() ),
+                                       'title' => $title,
+                                       'id' => isset( $options['label-id'] ) ? $options['label-id'] : null,
+                               ]
+                       );
+               }
+
+               // Backwards-compatibility hack to run the EditPageBeforeEditChecks hook. It's important,
+               // people have used it for the weirdest things completely unrelated to checkboxes...
+               // And if we're gonna run it, might as well allow its legacy checkboxes to be shown.
+               $legacyCheckboxes = $this->getCheckboxes( $origTabindex, $checked );
+               foreach ( $legacyCheckboxes as $name => $html ) {
+                       if ( $html && !isset( $checkboxes[$name] ) ) {
+                               $checkboxes[$name] = new OOUI\Widget( [ 'content' => new OOUI\HtmlSnippet( $html ) ] );
+                       }
+               }
+
+               return $checkboxes;
+       }
+
        /**
         * Returns an array of html code of the following buttons:
         * save, diff and preview
@@ -4144,31 +4301,56 @@ HTML
                        'name' => 'wpSave',
                        'tabindex' => ++$tabindex,
                ] + Linker::tooltipAndAccesskeyAttribs( 'save' );
-               $buttons['save'] = Html::submitButton(
-                       $this->context->msg( $buttonLabelKey )->text(),
-                       $attribs,
-                       [ 'mw-ui-progressive' ]
-               );
+
+               if ( $this->oouiEnabled ) {
+                       $saveConfig = OOUI\Element::configFromHtmlAttributes( $attribs );
+                       $buttons['save'] = new OOUI\ButtonInputWidget( [
+                               'flags' => [ 'constructive', 'primary' ],
+                               'label' => $this->context->msg( $buttonLabelKey )->text(),
+                               'type' => 'submit',
+                       ] + $saveConfig );
+               } else {
+                       $buttons['save'] = Html::submitButton(
+                               $this->context->msg( $buttonLabelKey )->text(),
+                               $attribs,
+                               [ 'mw-ui-progressive' ]
+                       );
+               }
 
                $attribs = [
                        'id' => 'wpPreview',
                        'name' => 'wpPreview',
                        'tabindex' => ++$tabindex,
                ] + Linker::tooltipAndAccesskeyAttribs( 'preview' );
-               $buttons['preview'] = Html::submitButton(
-                       $this->context->msg( 'showpreview' )->text(),
-                       $attribs
-               );
-
+               if ( $this->oouiEnabled ) {
+                       $previewConfig = OOUI\Element::configFromHtmlAttributes( $attribs );
+                       $buttons['preview'] = new OOUI\ButtonInputWidget( [
+                               'label' => $this->context->msg( 'showpreview' )->text(),
+                               'type' => 'submit'
+                       ] + $previewConfig );
+               } else {
+                       $buttons['preview'] = Html::submitButton(
+                               $this->context->msg( 'showpreview' )->text(),
+                               $attribs
+                       );
+               }
                $attribs = [
                        'id' => 'wpDiff',
                        'name' => 'wpDiff',
                        'tabindex' => ++$tabindex,
                ] + Linker::tooltipAndAccesskeyAttribs( 'diff' );
-               $buttons['diff'] = Html::submitButton(
-                       $this->context->msg( 'showdiff' )->text(),
-                       $attribs
-               );
+               if ( $this->oouiEnabled ) {
+                       $diffConfig = OOUI\Element::configFromHtmlAttributes( $attribs );
+                       $buttons['diff'] = new OOUI\ButtonInputWidget( [
+                               'label' => $this->context->msg( 'showdiff' )->text(),
+                               'type' => 'submit',
+                       ] + $diffConfig );
+               } else {
+                       $buttons['diff'] = Html::submitButton(
+                               $this->context->msg( 'showdiff' )->text(),
+                               $attribs
+                       );
+               }
 
                // Avoid PHP 7.1 warning of passing $this by reference
                $editPage = $this;
index 3747c23..243d066 100644 (file)
@@ -3072,7 +3072,7 @@ function wfSplitWikiID( $wiki ) {
  * @todo Replace calls to wfGetDB with calls to LoadBalancer::getConnection()
  *       on an injected instance of LoadBalancer.
  *
- * @return Database
+ * @return \Wikimedia\Rdbms\Database
  */
 function wfGetDB( $db, $groups = [], $wiki = false ) {
        return wfGetLB( $wiki )->getConnection( $db, $groups, $wiki );
index 9a83d35..ce6ecad 100644 (file)
@@ -455,7 +455,7 @@ class MovePage {
                        $overwriteMessage = wfMessage(
                                        'delete_and_move_reason',
                                        $this->oldTitle->getPrefixedText()
-                               )->text();
+                               )->inContentLanguage()->text();
                        $newpage = WikiPage::factory( $nt );
                        $errs = [];
                        $status = $newpage->doDeleteArticleReal(
index bae974f..b20f843 100644 (file)
@@ -20,6 +20,7 @@
  * @file
  */
 
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 use MediaWiki\Linker\LinkTarget;
 use MediaWiki\MediaWikiServices;
index bc6b842..1c7730c 100644 (file)
@@ -20,6 +20,7 @@
  * @file
  */
 
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 
 /**
index 95bb1d9..dd6aaef 100644 (file)
@@ -22,6 +22,7 @@
  * @file
  */
 
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 use MediaWiki\Linker\LinkTarget;
 use MediaWiki\Interwiki\InterwikiLookup;
index 167b709..df7afca 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\Database;
 
 /**
  * Displays information about a page.
index b698cef..bf8e632 100644 (file)
@@ -626,7 +626,7 @@ abstract class ApiBase extends ContextSource {
 
        /**
         * Gets a default replica DB connection object
-        * @return Database
+        * @return IDatabase
         */
        protected function getDB() {
                if ( !isset( $this->mSlaveDB ) ) {
index ff65d0e..dc1b4e7 100644 (file)
@@ -25,6 +25,7 @@
  */
 
 use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\Database;
 
 /**
  * @ingroup API
index a235532..5609ad8 100644 (file)
@@ -1426,7 +1426,7 @@ class ApiPageSet extends ApiBase {
 
        /**
         * Get the database connection (read-only)
-        * @return Database
+        * @return IDatabase
         */
        protected function getDB() {
                return $this->mDbSource->getDB();
index 5395bf0..e6f3fc4 100644 (file)
@@ -24,6 +24,8 @@
  * @file
  */
 
+use Wikimedia\Rdbms\IDatabase;
+
 /**
  * This is the main query class. It behaves similar to ApiMain: based on the
  * parameters given, it will create a list of titles to work on (an ApiPageSet
@@ -168,7 +170,7 @@ class ApiQuery extends ApiBase {
         * @param string $name Name to assign to the database connection
         * @param int $db One of the DB_* constants
         * @param array $groups Query groups
-        * @return Database
+        * @return IDatabase
         */
        public function getNamedDB( $name, $db, $groups ) {
                if ( !array_key_exists( $name, $this->mNamedDB ) ) {
index 87bb6a7..baefbda 100644 (file)
@@ -24,6 +24,7 @@
  * @file
  */
 
+use Wikimedia\Rdbms\IDatabase;
 use Wikimedia\Rdbms\ResultWrapper;
 
 /**
@@ -105,7 +106,7 @@ abstract class ApiQueryBase extends ApiBase {
 
        /**
         * Get the Query database connection (read-only)
-        * @return Database
+        * @return IDatabase
         */
        protected function getDB() {
                if ( is_null( $this->mDb ) ) {
@@ -121,7 +122,7 @@ abstract class ApiQueryBase extends ApiBase {
         * @param string $name Name to assign to the database connection
         * @param int $db One of the DB_* constants
         * @param array $groups Query groups
-        * @return Database
+        * @return IDatabase
         */
        public function selectNamedDB( $name, $db, $groups ) {
                $this->mDb = $this->getQuery()->getNamedDB( $name, $db, $groups );
index fb4c37f..4c028b2 100644 (file)
        "apihelp-query+tags-paramvalue-prop-active": "Si la balise est encore appliquée.",
        "apihelp-query+tags-example-simple": "Lister les balises disponibles",
        "apihelp-query+templates-description": "Renvoie toutes les pages incluses dans les pages fournies.",
-       "apihelp-query+templates-param-namespace": "Afficher les modèles uniquement dans ces espaces de nom.",
+       "apihelp-query+templates-param-namespace": "Afficher les modèles uniquement dans ces espaces de noms.",
        "apihelp-query+templates-param-limit": "Combien de modèles renvoyer.",
        "apihelp-query+templates-param-templates": "Lister uniquement ces modèles. Utile pour vérifier si une certaine page utilise un modèle donné.",
        "apihelp-query+templates-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+templates-example-namespaces": "Obtenir les pages des espaces de nom {{ns:user}} et {{ns:template}} qui sont inclues dans la page <kdb>Main Page<kdb>.",
        "apihelp-query+tokens-description": "Récupère les jetons pour les actions de modification de données.",
        "apihelp-query+tokens-param-type": "Types de jeton à demander.",
-       "apihelp-query+tokens-example-simple": "Récupérer un jeton csrf (par défaut)",
-       "apihelp-query+tokens-example-types": "Récupérer un jeton de suivi et un de patrouille",
+       "apihelp-query+tokens-example-simple": "Récupérer un jeton csrf (par défaut).",
+       "apihelp-query+tokens-example-types": "Récupérer un jeton de suivi et un de patrouille.",
        "apihelp-query+transcludedin-description": "Trouver toutes les pages qui incluent les pages données.",
        "apihelp-query+transcludedin-param-prop": "Quelles propriétés obtenir :",
        "apihelp-query+transcludedin-paramvalue-prop-pageid": "ID de page de chaque page.",
index 7d5f7ea..ba05141 100644 (file)
@@ -12,7 +12,8 @@
                        "LucyDiniz",
                        "Eduardo Addad de Oliveira",
                        "Warley Felipe C.",
-                       "TheEduGobi"
+                       "TheEduGobi",
+                       "Felipe L. Ewald"
                ]
        },
        "apihelp-main-param-action": "Qual ação executar.",
        "apihelp-upload-param-ignorewarnings": "Ignorar todos os avisos.",
        "apihelp-userrights-param-user": "Nome de usuário.",
        "apihelp-userrights-param-userid": "ID de usuário.",
-       "apihelp-userrights-param-add": "Adicionar o usuário para estes grupos.",
+       "apihelp-userrights-param-add": "Adicione o usuário a esses grupos ou, se ele já for membro, atualizar a expiração de sua associação nesse grupo.",
        "apihelp-userrights-param-remove": "Remover o usuário destes grupos.",
        "apihelp-userrights-param-reason": "Motivo para a mudança.",
        "apihelp-none-description": "Nenhuma saída.",
        "api-help-license-unknown": "Fonte: <span class=\"apihelp-unknown\">desconhecida</span>",
        "api-help-parameters": "{{PLURAL:$1|Parâmetro|Parâmetros}}:",
        "api-help-param-deprecated": "Obsoleto",
-       "api-help-param-required": "Este parâmetro é obrigatório."
+       "api-help-param-required": "Este parâmetro é obrigatório.",
+       "api-credits-header": "Créditos"
 }
index 7215606..e171bc7 100644 (file)
@@ -143,7 +143,7 @@ class BacklinkCache {
        /**
         * Get the replica DB connection to the database
         * When non existing, will initialize the connection.
-        * @return Database
+        * @return IDatabase
         */
        protected function getDB() {
                if ( !isset( $this->db ) ) {
index 57f66f1..2d08895 100644 (file)
@@ -20,6 +20,8 @@
  * @file
  * @ingroup Cache
  */
+
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 use MediaWiki\Linker\LinkTarget;
 use MediaWiki\MediaWikiServices;
index 14baeeb..b076a08 100644 (file)
@@ -26,6 +26,7 @@
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerInterface;
 use Psr\Log\NullLogger;
+use Wikimedia\Rdbms\Database;
 
 /**
  * This class generates message blobs for use by ResourceLoader modules.
index 8a42a9a..355aff4 100644 (file)
@@ -23,6 +23,7 @@
 use MediaWiki\MediaWikiServices;
 use Wikimedia\ScopedCallback;
 use MediaWiki\Logger\LoggerFactory;
+use Wikimedia\Rdbms\Database;
 
 /**
  * MediaWiki message cache structure version.
index 4117a11..851d173 100644 (file)
@@ -136,10 +136,15 @@ class ChangesListBooleanFilter extends ChangesListFilter {
        }
 
        /**
+        * Get the default value
+        *
+        * @param bool $structuredUI Are we currently showing the structured UI
         * @return bool|null Default value
         */
-       public function getDefault() {
-               return $this->defaultValue;
+       public function getDefault( $structuredUI = false ) {
+               return $this->isReplacedInStructuredUi && $structuredUI ?
+                       false :
+                       $this->defaultValue;
        }
 
        /**
index d2239eb..ca3c28b 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup Change tagging
  */
 
+use Wikimedia\Rdbms\Database;
+
 class ChangeTags {
        /**
         * Can't delete tags with more than this many uses. Similar in intent to
index da660bd..0f8d7f7 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\LoadBalancer;
 
 /**
index ef5a8fe..a0d7ad8 100644 (file)
@@ -20,6 +20,8 @@
  * @file
  * @ingroup Database
  */
+
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\Blob;
 use Wikimedia\Rdbms\ResultWrapper;
 
index 29c017c..bce3005 100644 (file)
@@ -21,6 +21,7 @@
  * @ingroup FileRepo
  */
 
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 
 /**
index 9c92bc0..d91ab24 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 use Wikimedia\Rdbms\ResultWrapper;
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 
 /**
index c109fba..292fc80 100644 (file)
@@ -21,7 +21,8 @@
  * @ingroup FileAbstraction
  */
 
-use \MediaWiki\Logger\LoggerFactory;
+use MediaWiki\Logger\LoggerFactory;
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 
 /**
index 22717fc..6113573 100644 (file)
@@ -21,6 +21,7 @@
  * @ingroup Deployment
  */
 use Wikimedia\Rdbms\LBFactorySingle;
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 
 /**
index 8913c77..a4cb695 100644 (file)
@@ -20,6 +20,7 @@
  * @file
  * @ingroup Deployment
  */
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 use MediaWiki\MediaWikiServices;
 
index d6efeb2..8307d8b 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup Deployment
  */
 
+use Wikimedia\Rdbms\Database;
+
 /**
  * Class for setting up the MediaWiki database using Microsoft SQL Server.
  *
index 988ec41..dfe595e 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup Deployment
  */
 
+use Wikimedia\Rdbms\DatabaseMssql;
+
 /**
  * Class for setting up the MediaWiki database using Microsoft SQL Server.
  *
index 7269773..c0731e7 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup Deployment
  */
 
+use Wikimedia\Rdbms\Database;
+
 /**
  * Class for setting up the MediaWiki database using MySQL.
  *
index 906768f..bd7cfb3 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup Deployment
  */
 
+use Wikimedia\Rdbms\Database;
+
 /**
  * Class for setting up the MediaWiki database using Postgres.
  *
index 1a7b208..39cb89c 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup Deployment
  */
 
+use Wikimedia\Rdbms\DatabasePostgres;
+
 /**
  * Class for handling updates to Postgres databases.
  *
index 0fe7068..e9d3ad4 100644 (file)
@@ -21,6 +21,9 @@
  * @ingroup Deployment
  */
 
+use Wikimedia\Rdbms\Database;
+use Wikimedia\Rdbms\DatabaseSqlite;
+
 /**
  * Class for setting up the MediaWiki database using SQLLite.
  *
index dcd66dd..9c90283 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup Deployment
  */
 
+use Wikimedia\Rdbms\DatabaseSqlite;
+
 /**
  * Class for handling updates to Sqlite databases.
  *
index f19e3db..5226aa0 100644 (file)
@@ -23,7 +23,7 @@ namespace MediaWiki\Interwiki;
  */
 use \Cdb\Exception as CdbException;
 use \Cdb\Reader as CdbReader;
-use Database;
+use Wikimedia\Rdbms\Database;
 use Hooks;
 use Interwiki;
 use Language;
index 8ef8196..ddb8521 100644 (file)
@@ -21,6 +21,7 @@
  * @ingroup LockManager
  */
 
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 
 /**
index 0d5fbf5..6481c92 100644 (file)
@@ -2,7 +2,6 @@
 
 namespace Wikimedia\Rdbms;
 
-use Database;
 use InvalidArgumentException;
 
 /**
@@ -605,4 +604,4 @@ class DBConnRef implements IDatabase {
        }
 }
 
-class_alias( 'Wikimedia\Rdbms\DBConnRef', 'DBConnRef' );
+class_alias( DBConnRef::class, 'DBConnRef' );
index 40bcc1b..6fafe71 100644 (file)
  * @file
  * @ingroup Database
  */
+namespace Wikimedia\Rdbms;
+
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerInterface;
 use Wikimedia\ScopedCallback;
-use Wikimedia\Rdbms\TransactionProfiler;
-use Wikimedia\Rdbms\LikeMatch;
-use Wikimedia\Rdbms\DatabaseDomain;
-use Wikimedia\Rdbms\ResultWrapper;
-use Wikimedia\Rdbms\DBMasterPos;
-use Wikimedia\Rdbms\Blob;
 use Wikimedia\Timestamp\ConvertibleTimestamp;
-use Wikimedia\Rdbms\IDatabase;
-use Wikimedia\Rdbms\IMaintainableDatabase;
+use MediaWiki;
+use BagOStuff;
+use HashBagOStuff;
+use InvalidArgumentException;
+use DBQueryError;
+use DBUnexpectedError;
+use DBConnectionError;
+use DBReadOnlyError;
+use Exception;
+use RuntimeException;
 
 /**
  * Relational database abstraction object
@@ -339,6 +343,13 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                        'oracle' => [],
                        'mssql' => [],
                ];
+               static $classAliases = [
+                       'DatabaseMssql' => DatabaseMssql::class,
+                       'DatabaseMysql' => DatabaseMysql::class,
+                       'DatabaseMysqli' => DatabaseMysqli::class,
+                       'DatabaseSqlite' => DatabaseSqlite::class,
+                       'DatabasePostgres' => DatabasePostgres::class
+               ];
 
                $driver = false;
                $dbType = strtolower( $dbType );
@@ -362,12 +373,17 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                } else {
                        $driver = $dbType;
                }
+
                if ( $driver === false || $driver === '' ) {
                        throw new InvalidArgumentException( __METHOD__ .
                                " no viable database extension found for type '$dbType'" );
                }
 
                $class = 'Database' . ucfirst( $driver );
+               if ( isset( $classAliases[$class] ) ) {
+                       $class = $classAliases[$class];
+               }
+
                if ( class_exists( $class ) && is_subclass_of( $class, IDatabase::class ) ) {
                        // Resolve some defaults for b/c
                        $p['host'] = isset( $p['host'] ) ? $p['host'] : false;
@@ -3479,4 +3495,5 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
        }
 }
 
-class_alias( Database::class, 'DatabaseBase' );
+class_alias( Database::class, 'DatabaseBase' ); // b/c for old name
+class_alias( Database::class, 'Database' ); // b/c global alias
index 75ddc9d..bbd2400 100644 (file)
  * @author Ryan Biesemeyer <v-ryanbi at microsoft dot com>
  * @author Ryan Schmidt <skizzerz at gmail dot com>
  */
-use Wikimedia\Rdbms\Blob;
-use Wikimedia\Rdbms\MssqlBlob;
-use Wikimedia\Rdbms\MssqlField;
-use Wikimedia\Rdbms\ResultWrapper;
-use Wikimedia\Rdbms\MssqlResultWrapper;
+
+namespace Wikimedia\Rdbms;
+
+use MediaWiki;
+use DBConnectionError;
+use DBUnexpectedError;
+use DBQueryError;
+use Exception;
+use stdClass;
 
 /**
  * @ingroup Database
@@ -1360,3 +1364,5 @@ class DatabaseMssql extends Database {
                return $old;
        }
 }
+
+class_alias( DatabaseMssql::class, 'DatabaseMssql' );
index 9ab7c64..c0c9223 100644 (file)
@@ -20,6 +20,9 @@
  * @file
  * @ingroup Database
  */
+namespace Wikimedia\Rdbms;
+
+use DBConnectionError;
 
 /**
  * Database abstraction object for PHP extension mysql.
@@ -202,3 +205,5 @@ class DatabaseMysql extends DatabaseMysqlBase {
                return mysql_real_escape_string( $s, $conn );
        }
 }
+
+class_alias( DatabaseMysql::class, 'DatabaseMysql' );
index e2b5226..b09516c 100644 (file)
  * @file
  * @ingroup Database
  */
-use Wikimedia\Rdbms\DBMasterPos;
-use Wikimedia\Rdbms\MySQLMasterPos;
-use Wikimedia\Rdbms\MySQLField;
-use Wikimedia\Rdbms\ResultWrapper;
+namespace Wikimedia\Rdbms;
+
+use DateTime;
+use DateTimeZone;
+use MediaWiki;
+use InvalidArgumentException;
+use DBError;
+use DBExpectedError;
+use DBUnexpectedError;
+use DBConnectionError;
+use Exception;
+use stdClass;
 
 /**
  * Database abstraction object for MySQL.
@@ -1360,3 +1368,5 @@ abstract class DatabaseMysqlBase extends Database {
                }
        }
 }
+
+class_alias( DatabaseMysqlBase::class, 'DatabaseMysqlBase' );
index 7a2200a..be25489 100644 (file)
  * @file
  * @ingroup Database
  */
+namespace Wikimedia\Rdbms;
 
-use Wikimedia\Rdbms\ResultWrapper;
+use mysqli;
+use DBConnectionError;
+use IP;
 
 /**
  * Database abstraction object for PHP extension mysqli.
@@ -263,7 +266,7 @@ class DatabaseMysqli extends DatabaseMysqlBase {
        }
 
        /**
-        * @param resource|ResultWrapper $res
+        * @param mysqli $res
         * @param int $n
         * @return mixed
         */
@@ -274,7 +277,7 @@ class DatabaseMysqli extends DatabaseMysqlBase {
        }
 
        /**
-        * @param resource|ResultWrapper $res
+        * @param mysqli $res
         * @param int $n
         * @return mixed
         */
@@ -285,7 +288,7 @@ class DatabaseMysqli extends DatabaseMysqlBase {
        }
 
        /**
-        * @param resource|ResultWrapper $res
+        * @param mysqli $res
         * @param int $row
         * @return mixed
         */
@@ -331,3 +334,5 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                }
        }
 }
+
+class_alias( DatabaseMysqli::class, 'DatabaseMysqli' );
index 5bcd4a8..5049f9b 100644 (file)
  * @file
  * @ingroup Database
  */
+namespace Wikimedia\Rdbms;
+
 use Wikimedia\Timestamp\ConvertibleTimestamp;
 use Wikimedia\WaitConditionLoop;
-use Wikimedia\Rdbms\Blob;
-use Wikimedia\Rdbms\PostgresBlob;
-use Wikimedia\Rdbms\PostgresField;
-use Wikimedia\Rdbms\ResultWrapper;
+use MediaWiki;
+use DBUnexpectedError;
+use DBConnectionError;
+use Exception;
 
 /**
  * @ingroup Database
@@ -859,10 +861,10 @@ __INDEXATTR__;
         *
         * @since 1.19
         * @param string $text Postgreql array returned in a text form like {a,b}
-        * @param string $output
+        * @param string[] $output
         * @param int|bool $limit
         * @param int $offset
-        * @return string
+        * @return string[]
         */
        private function pg_array_parse( $text, &$output, $limit = false, $offset = 1 ) {
                if ( false === $limit ) {
@@ -1383,6 +1385,8 @@ SQL;
         * @return string Integer
         */
        private function bigintFromLockName( $lockName ) {
-               return Wikimedia\base_convert( substr( sha1( $lockName ), 0, 15 ), 16, 10 );
+               return \Wikimedia\base_convert( substr( sha1( $lockName ), 0, 15 ), 16, 10 );
        }
 }
+
+class_alias( DatabasePostgres::class, 'DatabasePostgres' );
index 090ce8e..6d187b8 100644 (file)
  * @file
  * @ingroup Database
  */
-use Wikimedia\Rdbms\Blob;
-use Wikimedia\Rdbms\SQLiteField;
-use Wikimedia\Rdbms\ResultWrapper;
+namespace Wikimedia\Rdbms;
+
+use PDO;
+use PDOException;
+use LockManager;
+use FSLockManager;
+use DBConnectionError;
+use DBReadOnlyError;
+use InvalidArgumentException;
+use RuntimeException;
+use DBError;
+use stdClass;
 
 /**
  * @ingroup Database
@@ -116,8 +125,10 @@ class DatabaseSqlite extends Database {
                $p['dbFilePath'] = $filename;
                $p['schema'] = false;
                $p['tablePrefix'] = '';
+               /** @var DatabaseSqlite $db */
+               $db = Database::factory( 'sqlite', $p );
 
-               return Database::factory( 'sqlite', $p );
+               return $db;
        }
 
        /**
@@ -1048,3 +1059,6 @@ class DatabaseSqlite extends Database {
                return 'SQLite ' . (string)$this->mConn->getAttribute( PDO::ATTR_SERVER_VERSION );
        }
 }
+
+class_alias( DatabaseSqlite::class, 'DatabaseSqlite' );
+
index 0b146cd..feaf5cf 100644 (file)
@@ -1808,4 +1808,4 @@ interface IDatabase {
        public function setTableAliases( array $aliases );
 }
 
-class_alias( 'Wikimedia\Rdbms\IDatabase', 'IDatabase' );
+class_alias( IDatabase::class, 'IDatabase' );
index b984c42..5666170 100644 (file)
@@ -279,4 +279,4 @@ interface IMaintainableDatabase extends IDatabase {
        public function unlockTables( $method );
 }
 
-class_alias( 'Wikimedia\Rdbms\IMaintainableDatabase', 'IMaintainableDatabase' );
+class_alias( IMaintainableDatabase::class, 'IMaintainableDatabase' );
index 8238f3e..6c94eb9 100644 (file)
@@ -82,4 +82,4 @@ class MaintainableDBConnRef extends DBConnRef implements IMaintainableDatabase {
        }
 }
 
-class_alias( 'Wikimedia\Rdbms\MaintainableDBConnRef', 'MaintainableDBConnRef' );
+class_alias( MaintainableDBConnRef::class, 'MaintainableDBConnRef' );
index 8ae78e9..cf5060e 100644 (file)
@@ -18,6 +18,9 @@
  * @file
  * @ingroup Database
  */
+
+namespace Wikimedia\Rdbms;
+
 use Psr\Log\LoggerInterface;
 
 /**
index b4c3d52..89b9cea 100644 (file)
@@ -18,6 +18,7 @@
  * @file
  * @ingroup Database
  */
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 
 /**
index c5819a3..600f34a 100644 (file)
@@ -2,8 +2,6 @@
 
 namespace Wikimedia\Rdbms;
 
-use DatabasePostgres;
-
 class PostgresField implements Field {
        private $name, $tablename, $type, $nullable, $max_length, $deferred, $deferrable, $conname,
                $has_default, $default;
index 2ea0e4e..8b5a98d 100644 (file)
@@ -23,7 +23,6 @@
  */
 namespace Wikimedia\Rdbms;
 
-use Database;
 use DBError;
 use DBAccessError;
 use DBTransactionError;
index d178657..d268f83 100644 (file)
@@ -25,7 +25,6 @@ namespace Wikimedia\Rdbms;
 use Psr\Log\LoggerInterface;
 use Psr\Log\NullLogger;
 use Wikimedia\ScopedCallback;
-use Database;
 use BagOStuff;
 use EmptyBagOStuff;
 use WANObjectCache;
@@ -49,7 +48,7 @@ use Exception;
 class LoadBalancer implements ILoadBalancer {
        /** @var array[] Map of (server index => server config array) */
        private $mServers;
-       /** @var \Database[][][] Map of local/foreignUsed/foreignFree => server index => IDatabase array */
+       /** @var Database[][][] Map of local/foreignUsed/foreignFree => server index => IDatabase array */
        private $mConns;
        /** @var float[] Map of (server index => weight) */
        private $mLoads;
@@ -87,7 +86,7 @@ class LoadBalancer implements ILoadBalancer {
        /** @var LoggerInterface */
        protected $perfLogger;
 
-       /** @var \Database Database connection that caused a problem */
+       /** @var Database DB connection object that caused a problem */
        private $errorConnection;
        /** @var integer The generic (not query grouped) replica DB index (of $mServers) */
        private $mReadIndex;
index 8f94374..141a375 100644 (file)
@@ -21,6 +21,7 @@
  * @ingroup Cache
  */
 
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 use \MediaWiki\MediaWikiServices;
 use \Wikimedia\WaitConditionLoop;
index 3eac5df..fd31eac 100644 (file)
@@ -22,6 +22,7 @@
  * @author Roan Kattouw
  */
 
+use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
 
 /**
index 97d1dcb..8e79703 100644 (file)
@@ -707,6 +707,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
        public function getDefaultOptions() {
                $config = $this->getConfig();
                $opts = new FormOptions();
+               $structuredUI = $this->getUser()->getOption( 'rcenhancedfilters' );
 
                // Add all filters
                foreach ( $this->filterGroups as $filterGroup ) {
@@ -716,7 +717,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                $opts->add( $filterGroup->getName(), $filterGroup->getDefault() );
                        } else {
                                foreach ( $filterGroup->getFilters() as $filter ) {
-                                       $opts->add( $filter->getName(), $filter->getDefault() );
+                                       $opts->add( $filter->getName(), $filter->getDefault( $structuredUI ) );
                                }
                        }
                }
index 57610fc..9a955fb 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 use MediaWiki\Session\BotPasswordSessionProvider;
+use Wikimedia\Rdbms\IMaintainableDatabase;
 
 /**
  * Utility class for bot passwords
@@ -68,7 +69,7 @@ class BotPassword implements IDBAccessObject {
        /**
         * Get a database connection for the bot passwords database
         * @param int $db Index of the connection to get, e.g. DB_MASTER or DB_REPLICA.
-        * @return Database
+        * @return IMaintainableDatabase
         */
        public static function getDB( $db ) {
                global $wgBotPasswordsCluster, $wgBotPasswordsDatabase;
index e9f6dce..30e370e 100644 (file)
@@ -27,6 +27,7 @@ use MediaWiki\Auth\AuthManager;
 use MediaWiki\Auth\AuthenticationResponse;
 use MediaWiki\Auth\AuthenticationRequest;
 use Wikimedia\ScopedCallback;
+use Wikimedia\Rdbms\Database;
 
 /**
  * String Some punctuation to prevent editing from broken text-mangling proxies.
index 231ab22..c09d49b 100644 (file)
        "right-editsemiprotected": "تعديل الصفحات التي حمايتها \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "عدل طريقة محتوى صفحة",
        "right-editinterface": "تعديل واجهة المستخدم",
-       "right-editusercssjs": "تعديل ملفات CSS و JS للمستخدمين الآخرين",
        "right-editusercss": "تعديل ملفات CSS للمستخدمين الآخرين",
        "right-edituserjs": "تعديل ملفات جافاسكريبت للمستخدمين الآخرين",
        "right-editmyusercss": "تعديل ملفات CSS للمستخدم نفسه",
        "editcomment": "ملخص التعديل كان:<em>$1</em>.",
        "revertpage": "استرجع تعديلات [[Special:Contributions/$2|$2]] ([[User talk:$2|نقاش]]) حتى آخر مراجعة ل[[User:$1|$1]]",
        "revertpage-nouser": "استرجع تعديلات مستخدم مخفي حتى آخر مراجعة ل{{GENDER:$1|[[User:$1|$1]]}}",
-       "rollback-success": "استرجع ØªØ¹Ø¯Ù\8aÙ\84ات {{GENDER:$3|$1}}Ø\9b\nاسترجع حتى آخر نسخة بواسطة {{GENDER:$4|$2}}.",
+       "rollback-success": "تÙ\85 Ø§Ø³ØªØ±Ø¬Ø§Ø¹ ØªØ¹Ø¯Ù\8aÙ\84ات {{GENDER:$3|$1}}Ø\8c حتى آخر نسخة بواسطة {{GENDER:$4|$2}}.",
        "rollback-success-notify": "تم استرجاع التعديلات بواسطة $1;\nتم التغيير إلى آخر مراجعة بواسطة $2. [$3 عرض التغييرات]",
        "sessionfailure-title": "فشل في الجلسة",
        "sessionfailure": "يبدو أنه هناك مشكلة في جلسة الدخول الخاصة بك؛\nلذلك فقد ألغيت هذه العملية كإجراء احترازي ضد الاختراق.\nمن فضلك اضغط على مفتاح \"رجوع\" لتحميل الصفحة التي جئت منها، ثم حاول مرة أخرى.",
index 23d0b1d..8a067a1 100644 (file)
        "right-editsemiprotected": "Editar les páxines protexíes como \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Editar el modelu de conteníu d'una páxina",
        "right-editinterface": "Editar la interfaz d'usuariu",
-       "right-editusercssjs": "Editar los ficheros CSS y JavaScript d'otros usuarios",
        "right-editusercss": "Editar los ficheros CSS d'otros usuarios",
        "right-edituserjs": "Editar los ficheros JavaScript d'otros usuarios",
        "right-editmyusercss": "Editar los propios ficheros CSS d'usuariu",
index 3d6f8e3..5b9619a 100644 (file)
        "right-editsemiprotected": "рэдагаваньне старонак, абароненых у рэжыме «{{int:protect-level-autoconfirmed}}»",
        "right-editcontentmodel": "рэдагаваньне мадэлі зьместу старонкі",
        "right-editinterface": "рэдагаваньне інтэрфэйса карыстальніка",
-       "right-editusercssjs": "рэдагаваньне CSS і JS файлаў іншых удзельнікаў",
        "right-editusercss": "рэдагаваньне CSS файлаў іншых удзельнікаў",
        "right-edituserjs": "рэдагаваньне JS файлаў іншых удзельнікаў",
        "right-editmyusercss": "рэдагаваць уласныя карыстальніцкія CSS-файлы",
index 3216686..8ddda47 100644 (file)
        "right-editsemiprotected": "Редактиране на страници защитени като „{{int:protect-level-autoconfirmed}}“",
        "right-editcontentmodel": "Редактиране на модела на съдържанието на страница",
        "right-editinterface": "Редактиране на потребителския интерфейс",
-       "right-editusercssjs": "редактиране на CSS и JS файловете на други потребители",
        "right-editusercss": "Редактиране на CSS файловете на други потребители",
        "right-edituserjs": "Редактиране на JS файловете на други потребители",
        "right-editmyusercss": "Редактиране на собствените потребителски CSS файлове",
        "right-patrol": "Отбелязване на редакциите като проверени",
        "right-autopatrol": "Автоматично отбелязване на редакции като проверени",
        "right-patrolmarks": "Показване на отбелязаните като патрулирани последни промени",
-       "right-unwatchedpages": "преглеждане на списъка с ненаблюдаваните страници",
+       "right-unwatchedpages": "Ð\9fреглеждане на списъка с ненаблюдаваните страници",
        "right-mergehistory": "сливане на редакционни истории на страници",
        "right-userrights": "Редактиране на потребителските права",
        "right-userrights-interwiki": "редактиране на потребителски права на потребители в други уикита",
        "listgrouprights-removegroup-self-all": "Може да премахва всички групи от собствената сметка",
        "listgrouprights-namespaceprotection-header": "Ограничения на именните пространства",
        "listgrouprights-namespaceprotection-namespace": "Именно пространство",
+       "listgrouprights-namespaceprotection-restrictedto": "Права, които дават възможност на потребителите да редактират",
        "listgrants": "Разрешения",
        "listgrants-grant": "Разрешение",
        "listgrants-rights": "Права",
        "pageinfo-header-properties": "Характеристики на страницата",
        "pageinfo-display-title": "Показвано заглавие",
        "pageinfo-default-sort": "Ключ за сортиране по подразбиране",
-       "pageinfo-length": "Ð\94Ñ\8aлжина на страницата (в байтове)",
+       "pageinfo-length": "Ð\93олемина на страницата (в байтове)",
        "pageinfo-article-id": "Номер на страницата",
        "pageinfo-language": "Език на съдържанието на страницата",
        "pageinfo-language-change": "промяна",
index 5cb321e..7f3ac42 100644 (file)
        "right-editsemiprotected": "পাতা সম্পাদনা সুরক্ষিত রয়েছে,  \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "পাতার তথ্যের ধরণ সম্পাদনা করুন",
        "right-editinterface": "ব্যবহারকারী ইন্টারফেস সম্পাদনা",
-       "right-editusercssjs": "অন্য ব্যবহারকারীগণের CSS এবং JS ফাইল সম্পাদনা",
        "right-editusercss": "অন্য ব্যবহারকারীগণের CSS ফাইল সম্পাদনা",
        "right-edituserjs": "অন্য ব্যবহারকারীগণের JS ফাইল সম্পাদনা",
        "right-editmyusercss": "আপনার নিজস্ব ব্যবহারকারী সিএসএস ফাইল সম্পাদনা করুন",
        "unblocked-id": "$1 বাধাটি তুলে নেওয়া হয়েছে",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] কে অবরোধমুক্ত করা হয়েছে।",
        "blocklist": "বাধাপ্রাপ্ত ব্যবহারকারী",
+       "autoblocklist": "স্বয়ংক্রিয়বাধা",
+       "autoblocklist-submit": "অনুসন্ধান",
+       "autoblocklist-legend": "স্বয়ংক্রিয়বাধার তালিকা",
+       "autoblocklist-localblocks": "স্থানীয় {{PLURAL:$1|স্বয়ংবাধা|স্বয়ংবাধাসমূহ}}",
+       "autoblocklist-empty": "স্বয়ংক্রিয়বাধার তালিকাটি খালি।",
+       "autoblocklist-otherblocks": "অন্য {{PLURAL:$1|স্বয়ংবাধা|স্বয়ংবাধাসমূহ}}",
        "ipblocklist": "বাধাপ্রাপ্ত ব্যবহারকারী",
        "ipblocklist-legend": "বাধা দেওয়া কোন ব্যবহারকারীকে অনুসন্ধান করুন",
        "blocklist-userblocks": "অ্যাকাউন্ট বাধা লুকানো হোক",
index 47d504d..c8c2825 100644 (file)
        "right-editsemiprotected": "Uređivanje stranica pod zaštitom \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Uređivanje modela sadržaja stranice",
        "right-editinterface": "Uređivanje korisničkog interfejsa",
-       "right-editusercssjs": "Uređivanje CSS i JS datoteka drugih korisnika",
        "right-editusercss": "Uređivanje tuđih CSS datoteka",
        "right-edituserjs": "Uređivanje tuđih JavaScript datoteka",
        "right-editmyusercss": "Uređivanje vlastitih CSS datoteka",
index 79e2bf7..39494b8 100644 (file)
        "right-editsemiprotected": "Editace stránek zamčených na „{{int:protect-level-autoconfirmed}}“",
        "right-editcontentmodel": "Editace modelu obsahu stránky",
        "right-editinterface": "Editace zpráv uživatelského rozhraní",
-       "right-editusercssjs": "Editace CSS a JS souborů jiných uživatelů",
        "right-editusercss": "Editace CSS souborů jiných uživatelů",
        "right-edituserjs": "Editace JavaScriptových souborů jiných uživatelů",
        "right-editmyusercss": "Editace vlastních uživatelských CSS souborů",
index b74fbb1..07cd763 100644 (file)
        "right-editsemiprotected": "Seiten bearbeiten, die als „{{int:protect-level-autoconfirmed}}“ geschützt sind",
        "right-editcontentmodel": "Das Inhaltsmodell einer Seite bearbeiten",
        "right-editinterface": "Systemnachrichten und Benutzeroberflächen bearbeiten",
-       "right-editusercssjs": "Fremde CSS- und JavaScript-Dateien bearbeiten",
        "right-editusercss": "Fremde CSS-Dateien bearbeiten",
        "right-edituserjs": "Fremde JavaScript-Dateien bearbeiten",
        "right-editmyusercss": "Eigene Benutzer-CSS-Dateien bearbeiten",
index 735f273..552b1f2 100644 (file)
        "shown-title": "Her pele sero $1 {{PLURAL:$1|netici|netica}} bımocne",
        "viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) bıviné",
        "searchmenu-exists": "''Ena 'Wikipediya de ser \"[[:$1]]\" yew pel esto'''",
-       "searchmenu-new": "<strong>Na wiki de pela \"[[:$1]]\" vıraze!</strong> {{PLURAL:$2|0=|Sewbina pela ke şıma geyrayê cı aye bıvênê.|Yew zi neticanê cıgeyrayışê xo bıvênê.}}",
+       "searchmenu-new": "<strong>Ena wiki de perra \"[[:$1]]\" vıraze!</strong> {{PLURAL:$2|0=|Sewbina pela ke şıma geyrayê cı aye bıvênê.|Yew zi peyniyanê cıgeyrayışê xo bıvênê.}}",
        "searchprofile-articles": "Perrê zerreki",
        "searchprofile-images": "Multimedya",
        "searchprofile-everything": "Pêro çi",
        "right-editsemiprotected": "Xısusi pera timaryayış \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Modelê zerrekê pele bıvurne",
        "right-editinterface": "Interfaceê karberi sero bıgureye",
-       "right-editusercssjs": "CSS u dosyanê JSiê karberanê binan sero bıgureye",
        "right-editusercss": "Dosyanê CSSiê karberanê binan sero bıgureye",
        "right-edituserjs": "Dosyanê JSiê karberanê binan sero bıgureye",
        "right-editmyusercss": "CSS dosyaya karberinda ğo timar ke",
index 32cb092..4754332 100644 (file)
        "right-editsemiprotected": "Redakti paĝojn protektitajn kiel \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Redakti paĝan enhavmodelon",
        "right-editinterface": "Redakti la uzantointerfacon",
-       "right-editusercssjs": "Redaktu CSS- kaj JS-dosierojn de aliaj uzantoj",
        "right-editusercss": "Redaktu CSS-dosierojn de aliaj uzantoj",
        "right-edituserjs": "Redaktu JS-dosierojn de aliaj uzantoj",
        "right-editmyusercss": "Redakti viajn proprajn CSS-dosierojn",
index 3cecd14..47984f3 100644 (file)
        "right-editsemiprotected": "Editar páginas protegidas como «{{int:protect-level-autoconfirmed}}»",
        "right-editcontentmodel": "Editar el modelo de contenido de una página",
        "right-editinterface": "Editar la interfaz de usuario",
-       "right-editusercssjs": "Editar las páginas de CSS y JavaScript de otros usuarios",
        "right-editusercss": "Editar las páginas de CSS de otros usuarios",
        "right-edituserjs": "Editar las páginas de JavaScript de otros usuarios",
        "right-editmyusercss": "Editar tus archivos CSS",
index bce9bf8..e98e639 100644 (file)
        "right-editprotected": "Babestutako orrialdeak aldatu (babes jauzirik gabe)",
        "right-editsemiprotected": "Aldatu \"{{int:protect-level-autoconfirmed}}\" babesa duten orrialdeak",
        "right-editinterface": "Erabiltzailearen interfazea aldatu",
-       "right-editusercssjs": "Beste lankideen CSS eta JS fitxategiak aldatu",
        "right-editusercss": "Beste lankideen CSS fitxategiak aldatu",
        "right-edituserjs": "Beste lankideen JS fitxategiak aldatu",
        "right-editmyusercss": "Aldatu zure CSS fitxategi propioak",
index 3769c68..7a3e8ac 100644 (file)
        "right-editsemiprotected": "ویرایش صفحه حفاظت‌شده به عنوان \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "ویرایش مدل محتوای یک صفحه",
        "right-editinterface": "ویرایش واسط کاربری",
-       "right-editusercssjs": "ویرایش صفحه‌های CSS و JS دیگر کاربرها",
        "right-editusercss": "ویرایش صفحه‌های CSS دیگر کاربرها",
        "right-edituserjs": "ویرایش صفحه‌های JS دیگر کاربرها",
        "right-editmyusercss": "پرونده‌های سی‌اس‌اس کاربری خود را ویرایش کنید",
index 1f7cde0..ce27543 100644 (file)
        "right-editsemiprotected": "Muokata sivuja, jotka on suojattu tasolle \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Muokata sivun sisältömallia (content model)",
        "right-editinterface": "Muokata käyttöliittymätekstejä",
-       "right-editusercssjs": "Muokata toisten käyttäjien CSS- ja JavaScript-tiedostoja",
        "right-editusercss": "Muokata toisten käyttäjien CSS-tiedostoja",
        "right-edituserjs": "Muokata toisten käyttäjien JavaScript-tiedostoja",
        "right-editmyusercss": "Muokata omia CSS-tiedostoja",
index 1f49bcc..5ef3445 100644 (file)
        "right-editsemiprotected": "Modifier les pages protégées avec « {{int:protect-level-autoconfirmed}} »",
        "right-editcontentmodel": "Modifier le modèle de contenu d’une page",
        "right-editinterface": "Modifier l'interface utilisateur",
-       "right-editusercssjs": "Modifier les fichiers CSS et JavaScript d'autres utilisateurs",
        "right-editusercss": "Modifier les fichiers CSS d'autres utilisateurs",
        "right-edituserjs": "Modifier les fichiers JavaScript d'autres utilisateurs",
        "right-editmyusercss": "Modifier vos propres fichiers CSS utilisateur",
        "unblocked-id": "Le blocage $1 a été enlevé",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] a été débloqué.",
        "blocklist": "Utilisateurs bloqués",
+       "autoblocklist": "Blocages automatiques",
+       "autoblocklist-submit": "Rechercher",
+       "autoblocklist-legend": "Lister les blocages automatiques",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Blocage automatique local|Blocages automatiques locaux}}",
+       "autoblocklist-empty": "La liste des blocages automatiques est vide.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Autre blocage automatique|Autres blocages automatiques}}",
        "ipblocklist": "Utilisateurs bloqués",
        "ipblocklist-legend": "Chercher un utilisateur bloqué",
        "blocklist-userblocks": "Masquer les blocages de comptes",
index 85fee97..43adfac 100644 (file)
        "right-protect": "Befeiligingsnivo's feroarje en beskerme siden bewurkje",
        "right-editprotected": "Befeilige siden bewurkje (sûnder cascading-befeiliging)",
        "right-editinterface": "Brûkersinterface bewurkje",
-       "right-editusercssjs": "De CSS- en JS-triemmen fan oare brûkers bewurkje",
        "right-editusercss": "De CSS-JS-triemmen fan oare brûkers bewurkje",
        "right-edituserjs": "De JS-triemmen fan oare brûkers bewurkje",
        "right-rollback": "Gau de lêste bewurking(s) fan in brûker fan in side tebekdraaie",
index 7894932..9c0808e 100644 (file)
        "right-editsemiprotected": "Editar páxinas protexidas con \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Editar o modelo de contido dunha páxina",
        "right-editinterface": "Editar a interface de usuario",
-       "right-editusercssjs": "Editar os ficheiros CSS e JavaScript doutros usuarios",
        "right-editusercss": "Editar os ficheiros CSS doutros usuarios",
        "right-edituserjs": "Editar os ficheiros JavaScript doutros usuarios",
        "right-editmyusercss": "Editar os ficheiros CSS propios",
index 7983c95..a356550 100644 (file)
        "unprotectthispage": "ubawa dudaha halaman botiye",
        "newpage": "Halaman bohu",
        "talkpage": "Bisalayi halaman boti",
-       "talkpagelinktext": "lo'iya",
+       "talkpagelinktext": "bisala",
        "specialpage": "Halaman uda'a",
        "personaltools": "Pilaakasi lo hihilawo",
        "articlepage": "Bilohi tuango halaman",
        "nstab-template": "Templat",
        "nstab-help": "Halaman tulungi",
        "nstab-category": "Kategori",
-       "mainpage-nstab": "Halaman Bungaliyo",
+       "mainpage-nstab": "Halaman bungaliyo",
        "nosuchaction": "Diya'a huhutu boyito",
        "nosuchactiontext": "Huhutu u hepohile lo URL ja valid.\nYi'o lotalawa lopomaso lo URL, meyalo lodudu'a pranala u ja banari.\nUtiye olo kira-kira tuwotiyo woluwo bug to pilaakasi u hepomake {{SITENAME}}",
        "nosuchspecialpage": "Diya'a halaman istimewa boyito",
        "login": "Tumuwoto log",
        "login-security": "Po'opatata tita yi'o",
        "nav-login-createaccount": "Tumuwoto log / mohutu akun",
-       "userlogin": "Tumuwoto log / mohutu akun",
-       "userloginnocreate": "Tumuwoto log",
        "logout": "Lumuwalo log",
        "userlogout": "Lumuwalo log",
        "notloggedin": "Diipo tilumuwoto log",
        "userlogin-noaccount": "Diipo o akun",
        "userlogin-joinproject": "Motiwayito {{SITENAME}}",
-       "nologin": "Diipo o akun? $1",
-       "nologinlink": "Mohutu akun bohu",
        "createaccount": "Mohutu akun",
-       "gotaccount": "Ma yilohutu akun? $1",
-       "gotaccountlink": "Tumuwoto log",
-       "userlogin-resetlink": "Ilolipata detail habari tumuwotumu?",
        "userlogin-resetpassword-link": "Ilolipata tahe u'unti?",
        "userlogin-helplink2": "Wubodu tumuwoto log",
        "userlogin-loggedin": "Yi'o ma tilumuwoto odelo {{GENDER:$1|$1}}\nPopohunawa formulir formulir to tibawa botiye odelo pengguna uweewo.",
        "createacct-another-email-ph": "Tuwanga alamat tuladu email",
        "createaccountmail": "Popohunawa tahu u'unti ja kakali wawu lawola ode tuladu elektronik u pilohile",
        "createacct-realname": "Tanggula banari (tulawoto)",
-       "createaccountreason": "Alaasani",
        "createacct-reason": "Alaasani",
        "createacct-reason-ph": "Longola Y'io mohutu akun uweewo.",
        "createacct-reason-help": "Tahuli u pilopobilohu to delomo log mohutu akun",
index e6d3e06..aef5bd5 100644 (file)
        "right-editsemiprotected": "Mit «{{protect-level-autoconfirmed}}» gschützti Syten ändere",
        "right-editcontentmodel": "Inhaltsmodäll vo’re Syten ändere",
        "right-editinterface": "Benutzerinterface bearbeite",
-       "right-editusercssjs": "Bearbeite vu CSS- und JS-Dateie vu andere Benutzer",
        "right-editusercss": "Bearbeite vu CSS-Dateie vu andere Benutzer",
        "right-edituserjs": "Bearbeite vu JS-Dateie vu andere Benutzer",
        "right-editmyusercss": "Dyni eigete CSS-Dateien ändere",
index a69343a..3ab16bb 100644 (file)
        "right-editsemiprotected": "עריכת דפים המוגנים ברמת ההגנה \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "שינוי מודל התוכן של דפים",
        "right-editinterface": "עריכת ממשק המשתמש",
-       "right-editusercssjs": "עריכת קובצי CSS ו־JavaScript של משתמשים אחרים",
        "right-editusercss": "עריכת קובצי CSS של משתמשים אחרים",
        "right-edituserjs": "עריכת קובצי JavaScript של משתמשים אחרים",
        "right-editmyusercss": "עריכת קובצי CSS של המשתמש עצמו",
index b734764..9986b24 100644 (file)
        "right-editsemiprotected": "उन पृष्ठों को सम्पादित करें जिनका सुरक्षा स्तर है \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "एक पेज की सामग्री मॉडल को संपादित।",
        "right-editinterface": "सॉफ़्टवेयर इंटरफ़ेस सम्पादित करें",
-       "right-editusercssjs": "अन्य सदस्यों के सी॰एस॰एस और जावास्क्रिप्ट पृष्ठ सम्पादित करें",
        "right-editusercss": "अन्य सदस्यों के सी॰एस॰एस पृष्ठ सम्पादित करें",
        "right-edituserjs": "अन्य सदस्यों के जावास्क्रिप्ट पृष्ठ सम्पादित करें",
        "right-editmyusercss": "अपनी सदस्य स्तर की सी॰एस॰एस फ़ाइलें सम्पादित करें",
index 20d15d5..37b4418 100644 (file)
        "right-editsemiprotected": "Uređivanje stranica zaštićenih kao \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Odredi modela sadržaja stranice",
        "right-editinterface": "Uređivanje suradničkog sučelja",
-       "right-editusercssjs": "Uređivanje CSS i JS stranica drugih suradnika",
        "right-editusercss": "Uređivanje CSS stranica drugih suradnika",
        "right-edituserjs": "Uređivanje JS stranica drugih suradnika",
        "right-editmyusercss": "Uređivanje vlastitih CSS stranica",
index edb8a7c..976ebbf 100644 (file)
@@ -17,6 +17,7 @@
        "tog-hideminor": "Kache tout modifikasyon resan yo ki tou piti",
        "tog-hidepatrolled": "Kache modifikasyon yo ki fèk fèt pou moun ki ap veye yo",
        "tog-newpageshidepatrolled": "Kache paj ki siveye yo nan mitan lis nouvo paj yo",
+       "tog-hidecategorization": "Kache kategori ki nan paj la",
        "tog-extendwatchlist": "Etann lis swivi pou ou kapab wè tout chanjman yo, pa sèlman sa ki fèk fèt yo",
        "tog-usenewrc": "Sanble modifikasyon pou chak paj nan chanjman resan ak paj an vèy",
        "tog-numberheadings": "Nimewote otomatikman tit yo",
@@ -27,6 +28,7 @@
        "tog-watchdefault": "Ajoute paj mwen chanje yo nan lis swivi mwen",
        "tog-watchmoves": "Ajoute paj mwen deplase yo nan lis swivi mwen",
        "tog-watchdeletion": "Ajoute paj mwen efase yo nan lis swivi mwen",
+       "tog-watchuploads": "Ajoute paj nouvo nan favori m'",
        "tog-watchrollback": "Ajoute paj kote mwen ranvèse chanjman yo nan lis swivi mwen",
        "tog-minordefault": "Make tout modifikasyon kòm «&nbsp;tou piti&nbsp;» pa defo",
        "tog-previewontop": "Montre kout je anvan zòn modifikasyon",
@@ -36,7 +38,7 @@
        "tog-enotifminoredits": "Voye yon imèl ban mwen pou ti chanjman paj ak fichye",
        "tog-enotifrevealaddr": "Montre adrès imèl mwen nan kominikasyon notifikasyon yo",
        "tog-shownumberswatching": "Montre kantite itlizatè k’ap swiv",
-       "tog-oldsig": "Siyati ki la deja a:",
+       "tog-oldsig": "Siyati ki egziste deja ou",
        "tog-fancysig": "Konsidere siyati sa tankou yon wikitèks (san lyen ki ta otomatik)",
        "tog-uselivepreview": "Sèvi ak vizyònman dirèk",
        "tog-forceeditsummary": "Notifye m lè m ap antre yon somè modifikasyon vid",
@@ -67,8 +69,8 @@
        "thursday": "jedi",
        "friday": "vandredi",
        "saturday": "samdi",
-       "sun": "dim",
-       "mon": "len",
+       "sun": "dimanch",
+       "mon": "lendi",
        "tue": "mad",
        "wed": "mèk",
        "thu": "jed",
        "searcharticle": "Ale",
        "history": "Istorik paj la",
        "history_short": "Istorik",
+       "history_small": "Istwa",
        "updatedmarker": "Aktyalize depi dènyè visit mwen",
        "printableversion": "Vèsyon ou kapab enprime",
        "permalink": "Lyen pou tout tan",
        "nstab-template": "Modèl",
        "nstab-help": "Paj èd",
        "nstab-category": "Kategori",
+       "mainpage-nstab": "paj prensipal",
        "nosuchaction": "Pa gen bagay konsa",
        "nosuchactiontext": "Wiki a pa rekonèt aksyon ki espesifye pa URL la.\nOu gendwa mal ekri URL la oubyen ou te swiv yon movè lyen.\nSa kapab di tou gen yon erè nan lojisyèl ki itilize nan sit {{SITENAME}}.",
        "nosuchspecialpage": "Pa gen paj especial konsa",
        "yourname": "Non itilizatè ou an :",
        "userlogin-yourname": "Non itilizatè",
        "userlogin-yourname-ph": "Rantre non itilizatè w",
+       "createacct-another-username-ph": "Antre non itilizatè a",
        "yourpassword": "Mopas ou an :",
        "userlogin-yourpassword": "Modpas",
        "userlogin-yourpassword-ph": "Rantre modpas ou",
        "createacct-yourpasswordagain-ph": "Rantre modpas la ankò",
        "userlogin-remembermypassword": "Pa dekonekte m",
        "userlogin-signwithsecure": "Sèvi ak yon koneksyon sekirize",
+       "cannotloginnow-title": "Ou pa ka siyen nan kounye a",
        "yourdomainname": "Domèn ou an",
        "password-change-forbidden": "Ou pa ka chanje modpas sou wiki sa a.",
        "externaldberror": "Li sanble ke yon erè pwodui ak bazdone a pou idantifikasyon ki pa nan sistèm an, oubyen ou pa otorize pou mete a jou kont ou genyen nan lòt sistèm yo.",
        "login": "Konekte ou",
        "nav-login-createaccount": "Kreye yon kont oubyen konekte ou",
-       "userlogin": "Kreye yon kont oubyen konekte ou",
-       "userloginnocreate": "Konekte ou",
        "logout": "Dekonekte ou",
        "userlogout": "Dekoneksyon",
        "notloggedin": "Ou pa konekte",
        "userlogin-noaccount": "Ou pa gen yon kont?",
        "userlogin-joinproject": "Enskri nan {{SITENAME}}",
-       "nologin": "Ou pa genyen yon kont ? '''$1'''.",
-       "nologinlink": "Kreye yon kont",
        "createaccount": "Kreye yon kont",
-       "gotaccount": "Ou deja genyen yon kont ? '''$1'''.",
-       "gotaccountlink": "Idantifye ou",
        "userlogin-resetpassword-link": "Ou bliye modpas ou?",
        "userlogin-helplink2": "Èd pou konekte",
+       "createacct-emailrequired": "adrès imel ou",
        "createacct-emailoptional": "Adrès imèl (fakiltatif)",
        "createacct-email-ph": "Rantre adrès imèl ou",
-       "createaccountmail": "pa imèl",
-       "createaccountreason": "Rezon:",
+       "createacct-another-email-ph": "Antre nan adrès imel ou",
+       "createaccountmail": "Sèvi ak yon modpas pou yon ti tan ak o aza lè sa a, voye li nan adrès imel la espesifye",
        "createacct-reason": "Rezon",
        "createacct-reason-ph": "Poukisa w ap ouvri yon lòt kont?",
        "createacct-submit": "Ouvri kont ou",
        "htmlform-reset": "Revoke chanjman yo",
        "revdelete-restricted": "aplike restriksyon sa yo pou administratè yo",
        "logentry-newusers-create": "Kont itilizatè $1 a kreye",
-       "revdelete-summary": "somè pou modifikasyon",
        "searchsuggest-search": "Chèche"
 }
index 2fbb756..510892c 100644 (file)
        "right-editsemiprotected": "Modificar paginas protegite como \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Modificar le modello de contento de un pagina",
        "right-editinterface": "Modificar le interfacie de usator",
-       "right-editusercssjs": "Modificar le files CSS e JS de altere usatores",
        "right-editusercss": "Modificar le files CSS de altere usatores",
        "right-edituserjs": "Modificar le files JS de altere usatores",
        "right-editmyusercss": "Modificar le proprie files CSS de usator",
index 9de536f..9078e93 100644 (file)
        "right-editsemiprotected": "Sunting halaman yang dilindungi sebagai \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Edit model konten halaman",
        "right-editinterface": "Menyunting antarmuka pengguna",
-       "right-editusercssjs": "Menyunting arsip CSS dan JS pengguna lain",
        "right-editusercss": "Menyunting berkas CSS pengguna lain",
        "right-edituserjs": "Menyunting berkas JS pengguna lain",
        "right-editmyusercss": "Sunting berkas CSS pengguna Anda",
index 9104972..4ec9a1a 100644 (file)
        "changepassword-success": "Nasukatanen ti kontraseniasmo!",
        "changepassword-throttled": "Nakaaramidka kadagiti adu unay a nabiit a panangipadas ti panagserrek.\nPangngaasi nga aguray iti $1 sakbay a padasen manen.",
        "botpasswords": "Dagiti kontrasenias ti bot",
-       "botpasswords-summary": "<em>Dagiti kontrasenias ti bot</em> ket mangpalubos a maserrekan ti pakabilangan ti agar-aramat babaen ti API a saan nga agusar kadagiti nangruna a kredensial ti pakabilangan. Dagiti magun-od a karbengan ti agar-aramat no nakastrek iti kontrasenias ti bot ket mabalin a nagawidan.\n\nNo saanmo nga ammo no apay a kayatmo nga aramiden daytoy, mabalin a saanmo koma nga aramiden daytoy. Awan koma ti mangdamag kaniam iti agpataud iti maysa kadagitoy ken itedmo kaniada.",
+       "botpasswords-summary": "<em>Dagiti kontrasenias ti bot</em> ket mangipalubos a maserrekan ti pakabilangan ti agar-aramat babaen ti API a saan nga agusar kadagiti nangruna a kredensial ti pakabilangan. Dagiti magun-od a karbengan ti agar-aramat no nakastrek iti kontrasenias ti bot ket mabalin a nagawidan.\n\nNo saanmo nga ammo no apay a kayatmo nga aramiden daytoy, mabalin a saanmo koma nga aramiden daytoy. Awan koma ti mangdamag kaniam iti agpataud iti maysa kadagitoy ken itedmo kaniada.",
        "botpasswords-disabled": "Nabaldado dagiti kontrasenias ti bot.",
        "botpasswords-no-central-id": "Ti agusar kadagiti kontrasenias ti bot, nasken a nakastrekka iti sentralisado a pakabilangan.",
        "botpasswords-existing": "Dagiti adda a kontrasenias ti bot",
        "changeemail-throttled": "Adu unay ti panagpadasmo a sumrek.\nPangngaasi nga aguray ti $1 sakbay a padasen manen.",
        "changeemail-nochange": "Pangngaasi nga agikabil iti sabali a baro nga adres ti esurat.",
        "resettokens": "Isaad manen dagiti tandaan",
-       "resettokens-text": "Mabalinmo nga isaad manen dagiti tandaan a mangpalubos ti panagserrek ti naisangayan a pribado datos a mainaig ti pakabilangam ditoy.\n\nAramidem daytoy no aksidente nga inbingaymo dagitoy iti sabali wenno ti pakabilangam ket nakomprimiso.",
+       "resettokens-text": "Mabalinmo nga isaad manen dagiti tandaan a mangipalubos ti panagserrek iti naisangayan a pribado datos a mainaig iti pakabilangam ditoy.\n\nAramidem daytoy no aksidente nga inbingaymo dagitoy iti sabali wenno ti pakabilangam ket nakomprimiso.",
        "resettokens-no-tokens": "Awan dagiti maisaad manen a tandaan.",
        "resettokens-tokens": "Dagiti tandaan:",
        "resettokens-token-label": "$1 (agdama a pateg: $2)",
        "previewnote": "<strong>Laglagipem a daytoy ket panagipadas laeng.</strong>\nDagiti sinukatam ket saan pay a naidulin!",
        "continue-editing": "Mapan idiay pagurnosan a lugar",
        "previewconflict": "Daytoy a panagpadas ket mangipakita ti teksto iti lugar ti akinngato a pangurnosan ti teksto a kasla agparang no piliem nga idulin.",
-       "session_fail_preview": "Pasensia! Saanmi a maproseso ti panagurnosmo gapu ta naawanan ti sesion ti datos.\n\nMabalin a nakaruarka. <strong>Pangngaasi a pasingkedan a nakastrekka pay laeng ken padasen manen</strong>.\n \t\nNo saan pay a mabalin, padasen ti [[Special:UserLogout|rummuar]] ken sumrek manen, ken kitaen no ti pagbasabasam ket mangpalubos kadagiti galieta manipud iti daytoy a sitio.",
-       "session_fail_preview_html": "Pasensia! Saanmi a maproseso ti panagurnosmo gapu ta naawanan ti sesion ti datos.\n\n<em>Gapu ta ti {{SITENAME}} ket addaan iti naata a HTML a nakapabaelan, ti panagpadas ket nailemmeng a kas pagan-annadan kadagiti panagraut iti dakes a JavaScript.</em>\n\n<strong>No daytoy ket pudno a panagurnos, pangngaasi a padasem manen.</strong>\nNo saan pay a mabalin, padasen ti [[Special:UserLogout|rummuar]] ken sumrek manen, ken kitaen no ti pagbasabasam ket mangpalubos kadagiti galieta manipud iti daytoy a sitio.",
+       "session_fail_preview": "Pasensia! Saanmi a maproseso ti panagurnosmo gapu ta naawanan ti sesion ti datos.\n\nMabalin a nakaruarka. <strong>Pangngaasi a pasingkedan a nakastrekka pay laeng ken padasen manen</strong>.\n \t\nNo saan pay a mabalin, padasen ti [[Special:UserLogout|rummuar]] ken sumrek manen, ken kitaen no ti pagbasabasam ket mangipalubos kadagiti galieta manipud iti daytoy a sitio.",
+       "session_fail_preview_html": "Pasensia! Saanmi a maproseso ti panagurnosmo gapu ta naawanan ti sesion ti datos.\n\n<em>Gapu ta ti {{SITENAME}} ket addaan iti naata a HTML a nakapabaelan, ti panagpadas ket nailemmeng a kas pagan-annadan kadagiti panagraut iti dakes a JavaScript.</em>\n\n<strong>No daytoy ket pudno a panagurnos, pangngaasi a padasem manen.</strong>\nNo saan pay a mabalin, padasen ti [[Special:UserLogout|rummuar]] ken sumrek manen, ken kitaen no ti pagbasabasam ket mangipalubos kadagiti galieta manipud iti daytoy a sitio.",
        "token_suffix_mismatch": "<strong>Ti panagurnosmo ket saan a naawat ngamin ket ti klientem ket dinadaelna dagiti karakter ti tuldek iti tandaan ti panagurnos.</strong>\nTi panagurnos ket saan a naawat tapno mapawilan ti pannakadadael ti teksto ti panid.\nSagpaminsan a mapasamak daytoy no agus-usarka ti saan a nasayaat a naibatay ti web ti di ammo a pannakbagi a serbisio.",
        "edit_form_incomplete": "<strong>Adda dagiti paset ti pagurnosan a porma a saan a nakadanon dita server; mamindua a kitaen dagiti panagurnosmo ket sibubukel ken padasen manen.</strong>",
        "editing": "Ur-urnosen ti $1",
        "right-editsemiprotected": "Agurnos kadagiti panid a nasalakniban a kas \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Urnosen ti modelo ti linaon iti panid",
        "right-editinterface": "Agurnos iti interface ti agar-aramat",
-       "right-editusercssjs": "Agurnos kadagiti papales ti CSS ken JavaScript dagiti sabali nga agar-aramat",
        "right-editusercss": "Agurnos kadagiti papeles ti CSS dagiti sabali nga agar-aramat",
        "right-edituserjs": "Agurnos kadagiti papales ti JavaScript dagiti sabali nga agar-aramat",
        "right-editmyusercss": "Agurnos kadagiti bukodmo a papeles ti CSS ti agar-aramat",
        "rcfilters-invalid-filter": "Imbalido a sagat",
        "rcfilters-empty-filter": "Awan dagiti aktibo a sagat. Naipakita amin dagiti kontribusion.",
        "rcfilters-filterlist-title": "Dagiti sagat",
+       "rcfilters-filterlist-whatsthis": "Ania daytoy?",
        "rcfilters-highlightmenu-title": "Agpili iti maris",
        "rcfilters-filterlist-noresults": "Awan dagiti nabirukan a sagat",
        "rcfilters-filter-registered-label": "Nakarehistro",
        "rcfilters-filter-registered-description": "Dagiti nakastrek nga editor.",
        "rcfilters-filter-unregistered-label": "Saan a nakarehistro",
        "rcfilters-filter-unregistered-description": "Dagiti editor a saan a nakastrek.",
+       "rcfilters-filter-editsbyself-label": "Dagiti bukodmo nga inurnos",
+       "rcfilters-filter-editsbyself-description": "Dagiti inurnosmo.",
+       "rcfilters-filter-editsbyother-label": "Dagiti inurnos ti sabali",
+       "rcfilters-filter-editsbyother-description": "Dagiti inurnos a pinartuat babaen dagiti sabali nga agar-aramat (saan a sika).",
        "rcfilters-filter-user-experience-level-newcomer-label": "Dagiti agdadamo",
        "rcfilters-filter-user-experience-level-newcomer-description": "Basbassit ngem 10 nga inur-urnos ken 4 nga aldaw iti aktibidad.",
        "rcfilters-filter-user-experience-level-learner-label": "Dagiti agad-adal",
        "rcfilters-filter-patrolled-description": "Dagiti inurnos a namarkaan a kas napatruliaan.",
        "rcfilters-filter-unpatrolled-label": "Di napatruliaan",
        "rcfilters-filter-unpatrolled-description": "Dagiti inurnos a saan a namarkaan a kas napatruliaan.",
+       "rcfilters-filter-minor-label": "Dagiti bassit a panagurnos",
+       "rcfilters-filter-minor-description": "Dagiti panagurnos a minarkaan ti mannurat a kas bassit.",
+       "rcfilters-filter-major-label": "Dagiti saan a bassit a panagurnos",
+       "rcfilters-filter-major-description": "Dagiti panagurnos a saan a namarkaan a kas bassit.",
        "rcfilters-filtergroup-changetype": "Kita ti panagbaliw",
+       "rcfilters-filter-pageedits-label": "Dagiti panagurnos ti panid",
+       "rcfilters-filter-pageedits-description": "Dagiti panagurnos iti linaon ti wiki, tungtungan, dagiti deskripsion ti kategoria....",
+       "rcfilters-filter-newpages-label": "Dagiti panagpartuat ti panid",
+       "rcfilters-filter-newpages-description": "Dagiti panagurnos a nakaaramid kadagiti baro a panid.",
+       "rcfilters-filter-categorization-label": "Dagiti panagbaliw ti kategoria",
+       "rcfilters-filter-categorization-description": "Dagiti rekord ti pampanid a mainaynayon wenno maik-ikkat manipud kadagiti kategoria.",
+       "rcfilters-filter-logactions-label": "Dagiti aksion a nailista",
+       "rcfilters-filter-logactions-description": "Dagiti aksion nga administratibo, dagiti panagpartuat iti pakabilangan, dagiti panagikkat iti panid, dagiti panangikarga....",
        "rcnotefrom": "Dita baba ket {{PLURAL:$5|ti sinukatan|dagiti sinukatan}} manipud idi <strong>$3, $4</strong> (aginggana iti <strong>$1</strong> a naipakita).",
        "rclistfrom": "Ipakita dagiti kabarbaro a sinukatan a mangrugi manipud idi $2, $3",
        "rcshowhideminor": "$1 dagiti bassit a panagurnos",
        "mostinterwikis": "Dagiti panid a kaaduan kadagiti interwiki",
        "mostrevisions": "Dagiti panid a kaaduan kadagiti rebision",
        "prefixindex": "Amin a pampanid nga addaan iti pasakbay",
-       "prefixindex-namespace": "Amin a pampanid nga addaan iti pasaruno (nagan ti espasio ti $1)",
+       "prefixindex-namespace": "Amin a pampanid nga agraman iti pasakbay (nagan ti espasio ti $1)",
        "prefixindex-submit": "Ipakita",
        "prefixindex-strip": "Ikkaten ti pasakbay iti listaan",
        "shortpages": "Dagiti ababa a panid",
        "listgrouprights-removegroup-self-all": "Ikkatem amin dagiti grupo manipud iti bukod a pakabilangan",
        "listgrouprights-namespaceprotection-header": "Dagiti panangigawid ti nagan ti espasio",
        "listgrouprights-namespaceprotection-namespace": "Nagan ti espasio",
-       "listgrouprights-namespaceprotection-restrictedto": "Karbengan wenno karkarbengan a mangpalubos nga agurnos ti agar-aramat",
+       "listgrouprights-namespaceprotection-restrictedto": "Karbengan wenno karkarbengan a mangipalubos nga agurnos ti agar-aramat",
        "listgrants": "Dagiti sagut",
        "listgrants-summary": "Ti sumagand ket listaan dagiti sagut nga agraman kadagiti mainaig a panagserrek kadagiti karbengan ti agar-aramat. Dagiti agar-aramat ket mabalinda ti mangipalubos kadagiti aplikasion a mausarda iti bukodda a pakabilangan, ngem addaan iti limitado a pammalubos a naibatay kadagiti sagut nga inted ti agar-aramat iti aplikasion. Nupay kasta ti maysa nga aplikasion nga agtigtignay para iti agar-aramat ket saan a pudno a makausar kadagiti karbengan nga awanan iti agar-aramat.\nMabalin nga adda iti [[{{MediaWiki:Listgrouprights-helppage}}|maipatinayon a pakaammo]] a maipanggep kadagiti indibidual a karbengan.",
        "listgrants-grant": "Sagut",
        "whatlinkshere-filters": "Dagiti sagat",
        "whatlinkshere-submit": "Inkan",
        "autoblockid": "Auto a panagserra #$1",
-       "block": "Seraan ti agar-aramat",
+       "block": "Serraan ti agar-aramat",
        "unblock": "Ikkaten ti serra ti agar-aramat",
        "blockip": "Serraan ti {{GENDER:$1|agar-aramat}}",
        "blockip-legend": "Serraan ti agar-aramat",
        "unblocked-id": "Naikkaten ti serra ti $1.",
        "unblocked-ip": "Naikkaten ti serra ni [[Special:Contributions/$1|$1]] .",
        "blocklist": "Dagiti naserraan nga agar-aramat",
+       "autoblocklist-submit": "Agbiruk",
        "ipblocklist": "Dagiti naserraan nga agar-aramat",
        "ipblocklist-legend": "Agbiruk ti naserraan nga agar-aramat",
        "blocklist-userblocks": "Ilemmeng dagiti serra ti pakabilangan",
        "allmessages-filter-unmodified": "Saan a nabaliwan",
        "allmessages-filter-all": "Amin",
        "allmessages-filter-modified": "Nabaliwan",
-       "allmessages-prefix": "Sagaten babaen ti pasaruno:",
+       "allmessages-prefix": "Sagaten babaen ti pasakbay:",
        "allmessages-language": "Pagsasao:",
        "allmessages-filter-submit": "Inkan",
        "allmessages-filter-translate": "Ipatarus",
        "import-error-bad-location": "Ti rebision ti $2 nga agus-usar ti modelo a linaon ti $3 ket saan a maipenpen iti \"$1\" iti daytoy a wiki, gapu ta dayta a modelo ket saan a nasuportaran iti dayta a panid.",
        "import-options-wrong": "Saan a husto {{PLURAL:$2|a pagpilian|a pagpilpilian}}: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "Ti naited a ramut ti panid ket imbalido a titulo.",
-       "import-rootpage-nosubpage": "Ti nagan ti espasio ti \"$1\" iti ramut ti panid ket saan a mangpalubos kadagiti subpanid.",
+       "import-rootpage-nosubpage": "Ti nagan ti espasio ti \"$1\" iti ramut ti panid ket saan a mangipalubos kadagiti subpanid.",
        "importlogpage": "Listaan ti panagala",
        "importlogpagetext": "Dagiti administratibo a panagala kadagiti panid nga addaan iti pakasaritaan ti panagurnos manipud kadagiti sabali a wiki.",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|a rebision|kadagiti rebision}} ti naala",
        "tooltip-recreate": "Partuaten manen ti panid urayno dati a naikkat.",
        "tooltip-upload": "Irugi ti panagikarga",
        "tooltip-rollback": "\"Baliktaden\"  isubli ti inurnos (dagiti inurnos) iti daytoy a panid iti naudi a kontributor iti maysa a pindut",
-       "tooltip-undo": "\"Ibabawi\" ipasubli daytoy nga urnos ken lukatanna ti porma ti pagurnosan iti panagpadas a moda. Mangpalubos daytoy ti agikabil ti rason iti pakabuklan.",
+       "tooltip-undo": "\"Ibabawi\" isubli daytoy nga urnos ken lukatanna ti porma ti pagurnosan iti moda ti panagpadas. Mangipalubos daytoy ti agikabil ti rason iti pakabuklan.",
        "tooltip-preferences-save": "Idulin dagiti kakaykayatam",
        "tooltip-summary": "Agikabil ti bassit a pakabuklan",
        "anonymous": "Di ammo {{PLURAL:$1|nga agar-aramat|kadagiti agar-aramat}} iti {{SITENAME}}",
index 128586b..03ad579 100644 (file)
        "right-editsemiprotected": "Modifica pagine protette con \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Modifica il modello di contenuto di una pagina",
        "right-editinterface": "Modifica l'interfaccia utente",
-       "right-editusercssjs": "Modifica i file CSS e JS di altri utenti",
        "right-editusercss": "Modifica i file CSS di altri utenti",
        "right-edituserjs": "Modifica i file JS di altri utenti",
        "right-editmyusercss": "Modifica il file CSS del proprio utente",
        "unblocked-id": "Il blocco $1 è stato rimosso",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] è stato sbloccato.",
        "blocklist": "Utenti bloccati",
+       "autoblocklist": "Autoblocchi",
+       "autoblocklist-submit": "Ricerca",
+       "autoblocklist-legend": "Elenca autoblocchi",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Autoblocco locale|Autoblocchi locali}}",
+       "autoblocklist-empty": "L'elenco dei autoblocchi è vuoto.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Altro autoblocco|Altri autoblocchi}}",
        "ipblocklist": "Utenti bloccati",
        "ipblocklist-legend": "Cerca un utente bloccato",
        "blocklist-userblocks": "Nascondi i blocchi degli utenti registrati",
index 1e8ee00..876e2dc 100644 (file)
        "right-editsemiprotected": "「{{int:protect-level-autoconfirmed}}」の保護を設定されたページを編集",
        "right-editcontentmodel": "ページのコンテンツモデルを編集",
        "right-editinterface": "ユーザーインターフェースを編集",
-       "right-editusercssjs": "他の利用者のCSSファイル/JavaScriptファイルを編集",
        "right-editusercss": "他の利用者のCSSファイルを編集",
        "right-edituserjs": "他の利用者のJavaScriptファイルを編集",
        "right-editmyusercss": "自身のCSSファイルを編集",
index be38848..beaa517 100644 (file)
        "right-editprotected": "Owah kaca-kaca sing direksa (tanpa pangreksan runtun)",
        "right-editsemiprotected": "Owah kaca-kaca sing direksa dadi \"{{int:protect-level-autoconfirmed}}\"",
        "right-editinterface": "Besut antarmuka panganggo",
-       "right-editusercssjs": "Besut barkas-barkas CSS lan JavaScript panganggo liya",
        "right-editusercss": "Besut barkas-barkas CSS panganggo liya",
        "right-edituserjs": "Besut barkas-barkas JavaScript panganggo liya",
        "right-editmyusercss": "Owahi berkas CSS panganggo sampeyan",
index 97b3e87..904c5b3 100644 (file)
        "right-editsemiprotected": "გვერდების რედაქტირება რომლებიც დაცულია როგორც „{{int:protect-level-autoconfirmed}}“",
        "right-editcontentmodel": "გვერდის კონტენტური მოდელის რედაქტირება",
        "right-editinterface": "მომხმარებლის ინტერფეისის შეცვლა",
-       "right-editusercssjs": "სხვა მომხმარებლების CSS- и JS- ფაილების შესწორება",
        "right-editusercss": "სხვა მომხმარებლების CSS- ფაილების შესწორება",
        "right-edituserjs": "სხვა მომხმარებლების JS- ფაილების შესწორება",
        "right-editmyusercss": "თქვენი საკუთარი CSS-ფაილების რედაქტირება",
index 8d1450a..14652cd 100644 (file)
        "right-editsemiprotected": "\"{{int:protect-level-autoconfirmed}}\"로 보호된 문서 편집",
        "right-editcontentmodel": "문서의 콘텐츠 모델을 편집",
        "right-editinterface": "사용자 인터페이스를 편집",
-       "right-editusercssjs": "다른 사용자의 CSS와 자바스크립트 문서를 편집",
        "right-editusercss": "다른 사용자의 CSS 문서를 편집",
        "right-edituserjs": "다른 사용자의 자바스크립트 문서를 편집",
        "right-editmyusercss": "자신의 사용자 CSS 파일 편집하기",
        "unblocked-id": "$1 차단이 해제되었습니다.",
        "unblocked-ip": "[[Special:Contributions/$1|$1]]님이 차단 해제되었습니다.",
        "blocklist": "차단된 사용자 목록",
+       "autoblocklist": "자동차단",
+       "autoblocklist-submit": "검색",
+       "autoblocklist-legend": "자동차단 목록",
+       "autoblocklist-localblocks": "로컬 자동 차단 {{PLURAL:$1|기록|기록들}}",
+       "autoblocklist-empty": "자동차단 목록이 비어 있습니다.",
+       "autoblocklist-otherblocks": "다른 자동 차단 {{PLURAL:$1|기록|기록들}}",
        "ipblocklist": "차단된 사용자",
        "ipblocklist-legend": "차단된 사용자 찾기",
        "blocklist-userblocks": "계정에 대한 차단 숨기기",
        "logentry-delete-delete_redir": "$1님이 덮어쓰기를 통해 $3 문서를 {{GENDER:$2|삭제했습니다}}",
        "logentry-delete-restore": "$1님이 $3 문서를 {{GENDER:$2|되살렸습니다}} ($4)",
        "logentry-delete-restore-nocount": "$1님이 $3 문서를 {{GENDER:$2|되살렸습니다}}",
-       "restore-count-revisions": "{{PLURAL:$1|1개의 판|$1개의 판}}",
-       "restore-count-files": "{{PLURAL:$1|1개의 파일|$1개의 파일}}",
+       "restore-count-revisions": "{{PLURAL:$1|판 1개|판 $1개}}",
+       "restore-count-files": "{{PLURAL:$1|파일 1개|파일 $1개}}",
        "logentry-delete-event": "$1님이 $3의 {{PLURAL:$1|기록 $5개}}에 대해 보이기 설정을 {{GENDER:$2|바꾸었습니다}}: $4",
        "logentry-delete-revision": "$1님이 $3 문서의 {{PLURAL:$5|$5개 편집}}의 설정을 {{GENDER:$2|바꾸었습니다}}: $4",
        "logentry-delete-event-legacy": "$1님이 $3 문서 기록의 보이기 설정을 {{GENDER:$2|바꾸었습니다}}",
        "pageid": "페이지 ID $1",
        "gotointerwiki": "{{SITENAME}}을(를) 떠납니다",
        "gotointerwiki-invalid": "지정된 제목이 올바르지 않습니다.",
-       "gotointerwiki-external": "ë³\84ê°\9cì\9d\98 ì\9b¹ì\82¬ì\9d´í\8a¸ì\9d¸ [[$2]]ì\9d\98 ë°©ë¬¸ì\9d\84 ì\9c\84í\95´ {{SITENAME}}ì\9d\84(를) ë\96 ë\82\98려고 í\95©ë\8b\88ë\8b¤.\n\n[$1 $1(ì\9c¼)ë¡\9c ê³\84ì\86\8d ì§\84í\96\89í\95\98려면 ì\97¬ê¸°ë¥¼ í\81´ë¦­í\95\98ì\8b­ì\8b\9cì\98¤].",
+       "gotointerwiki-external": "ë\8b¤ë¥¸ ì\9b¹ì\82¬ì\9d´í\8a¸ [[$2]]를 ë°©ë¬¸í\95\98기 ì\9c\84í\95´ {{SITENAME}}ì\9d\84(를) ë\96 ë\82\98려고 í\95©ë\8b\88ë\8b¤.\n\n[$1 $1(ì\9c¼)ë¡\9c ê³\84ì\86\8d ì§\84í\96\89í\95\98려면 ì\97¬ê¸°ë¥¼ ë\88\8cë\9f¬ì£¼ì\84¸ì\9a\94].",
        "undelete-cantedit": "이 문서를 편집할 권한이 없으므로 이 문서를 복구할 수 없습니다.",
        "undelete-cantcreate": "이 이름으로 된 문서가 없고 이 문서를 만들 권한이 없으므로 이 문서를 복구할 수 없습니다."
 }
index 266b25b..8f318fc 100644 (file)
        "right-editsemiprotected": "Säiten déi als  \"{{int:protect-level-autoconfirmed}}\" gespaart sinn änneren",
        "right-editcontentmodel": "De Modell vum Inhalt vun enger Säit änneren",
        "right-editinterface": "De Benotzerinterface änneren",
-       "right-editusercssjs": "Anere Benotzer hir CSS a JS Fichieren änneren",
        "right-editusercss": "Anere Benotzer hir CSS Fichieren änneren",
        "right-edituserjs": "Anere Benotzer hir JavaScript Fichieren änneren",
        "right-editmyusercss": "Är eegen CSS-Fichieren änneren",
        "unblocked-id": "D'Spär $1 gouf opgehuewen",
        "unblocked-ip": "D'Spär vum [[Special:Contributions/$1|$1]] gouf opgehuewen.",
        "blocklist": "Gespaart Benotzer",
+       "autoblocklist": "Automatesch Spären",
+       "autoblocklist-submit": "Sichen",
+       "autoblocklist-legend": "Automatesche Spären opzielen",
+       "autoblocklist-empty": "D'Lëscht vun den automatesche Spären ass eidel.",
        "ipblocklist": "Gespaart Benotzer",
        "ipblocklist-legend": "No engem gespaarte Benotzer sichen",
        "blocklist-userblocks": "Benotzerspäre verstoppen",
index 08bff71..c114b8c 100644 (file)
        "right-editsemiprotected": "Taisyti puslapius, apsaugotus kaip \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Redaguoti puslapio turinio modelį",
        "right-editinterface": "Keisti naudotojo aplinką",
-       "right-editusercssjs": "Redaguoti kitų naudotojų CSS ir JS failus",
        "right-editusercss": "Redaguoti kitų naudotojų CSS failus",
        "right-edituserjs": "Redaguoti kitų naudotojų JS failus",
        "right-editmyusercss": "Redaguoti savo vartotojo CSS failus",
index c0035b9..e521331 100644 (file)
        "login": "Pieslēgties",
        "login-security": "Apstiprini savu identitāti",
        "nav-login-createaccount": "Izveidot jaunu lietotāju vai doties iekšā",
-       "userlogin": "Izveidot jaunu lietotāju vai doties iekšā",
-       "userloginnocreate": "Pieslēgties",
        "logout": "Iziet",
        "userlogout": "Iziet",
        "notloggedin": "Neesi iegājis",
        "userlogin-noaccount": "Nav dalībnieka konta?",
        "userlogin-joinproject": "Pievienojieties {{SITENAME}}",
-       "nologin": "Nav lietotājvārda? $1.",
-       "nologinlink": "Reģistrējies",
        "createaccount": "Izveidot jaunu lietotāju",
-       "gotaccount": "Tev jau ir lietotājvārds? '''$1'''!",
-       "gotaccountlink": "Pieslēgties",
-       "userlogin-resetlink": "Esat aizmirsis savu pieslēgšanās informāciju?",
        "userlogin-resetpassword-link": "Aizmirsi savu paroli?",
        "userlogin-helplink2": "Palīdzība ar pieslēgšanos",
        "userlogin-loggedin": "Tu esi pieslēdzies ar lietotājvārdu {{GENDER:$1|$1}}.\nLai pieslēgtos ar citu lietotājvārdu, aizpildi šo formu.",
        "createacct-another-email-ph": "Ievadiet e-pasta adresi",
        "createaccountmail": "Izmantot nejauši ģenerētu pagaidu paroli un nosūtīt to uz norādīto e-pasta adresi",
        "createacct-realname": "Īstais vārds (nav obligāts)",
-       "createaccountreason": "Iemesls:",
        "createacct-reason": "Iemesls",
        "createacct-reason-ph": "Kāpēc jūs veidojat citu kontu",
        "createacct-submit": "Izveidot savu kontu",
        "right-editprotected": "Labot aizsargātās lapas (bez kaskādes aizsardzības)",
        "right-editcontentmodel": "Labot lapas satura modeli",
        "right-editinterface": "Izmainīt dalībnieka interfeisu",
-       "right-editusercssjs": "Izmainīt citu dalībnieku CSS un JS failus",
        "right-editusercss": "Izmainīt citu dalībnieku CSS failus",
        "right-edituserjs": "Izmainīt citu dalībnieku JS failus",
        "right-editmyusercss": "Rediģējiet savus dalībnieka CSS failus",
        "undeleteviewlink": "skatīt",
        "undeleteinvert": "Izvēlēties pretēji",
        "undeletecomment": "Iemesls:",
-       "undeletedrevisions": "$1 {{PLURAL:$1|versijas|versija|versijas}} {{PLURAL:$1|atjaunotas|atjaunota|atjaunotas}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|$1 versijas|1 versija|$1 versijas}} un {{PLURAL:$2|$2 faili|1 fails|$2 faili}} atjaunoti",
-       "undeletedfiles": "{{PLURAL:$1|$1 faili atjaunoti|$1 fails atjaunots|$1 faili atjaunoti}}",
        "cannotundelete": "Atjaunošana neizdevās:\n$1",
        "undeletedpage": "'''$1 tika atjaunots'''\n\n[[Special:Log/delete|Dzēšanas reģistrā]] ir informācija par pēdējām dzēšanām un atjaunošanām.",
        "undelete-header": "Nesen dzēstajām lapām skatīt [[Special:Log/delete|dzēšanas reģistru]].",
        "unblocked-range": "$1 tika atbloķēts",
        "unblocked-id": "Bloks $1 tika noņemts",
        "blocklist": "Bloķētie lietotāji",
+       "autoblocklist-submit": "Meklēt",
        "ipblocklist": "Bloķētie lietotāji",
        "ipblocklist-legend": "Meklēt bloķētu lietotāju",
        "blocklist-userblocks": "Paslēpt kontu bloķējumus",
        "logentry-delete-delete": "$1 {{GENDER:$2|izdzēsa}} lapu $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|izdzēsa}} pāradresāciju $3 pārrakstot",
        "logentry-delete-restore": "$1 {{GENDER:$2|atjaunoja}} lapu $3",
+       "restore-count-files": "{{PLURAL: $1|$1 faili|$1 fails|$1 faili}}",
        "revdelete-content-hid": "saturs slēpts",
        "revdelete-summary-hid": "labojuma kopsavilkums slēpts",
        "revdelete-uname-hid": "lietotājvārds slēpts",
        "logentry-upload-upload": "$1 {{GENDER:$2|augšupielādēja}} $3",
        "logentry-upload-overwrite": "$1 augšupielādēja jaunu $3 versiju",
        "rightsnone": "(nav)",
-       "revdelete-summary": "izmaiņu kopsavilkums",
        "feedback-adding": "Atsauksmes tiek pievienotas lapai...",
        "feedback-back": "Atpakaļ",
        "feedback-bugnew": "Es pārbaudīju. Ziņot par jaunu kļūdu",
index 31b5304..d42e0e1 100644 (file)
        "right-editsemiprotected": "Hanova ny pejy narovna ho \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Hanova ny modelim-botoatin'ny pejy",
        "right-editinterface": "Manova ny interface ny mpikambana",
-       "right-editusercssjs": "Manova ny rakitra CSS sy JS ny mpikambana hafa",
        "right-editusercss": "Manova ny rakitra CSS ny mpikambana hafa",
        "right-edituserjs": "Manova ny rakitra JS an'ny mpikambana hafa",
        "right-editmyusercss": "Manova ny rakitra CSS-nao",
index c6bb80a..904c12f 100644 (file)
        "right-editsemiprotected": "Уредување на страници заштитени како „{{int:protect-level-autoconfirmed}}“",
        "right-editcontentmodel": "Уредување на содржинскиот модел на страница",
        "right-editinterface": "Уредување на кориснички посредник",
-       "right-editusercssjs": "Уредување на CSS и JS податотеки на други корисници",
        "right-editusercss": "Уредување на CSS податотеки на други корисници",
        "right-edituserjs": "Уредување на JS податотеки на други корисници",
        "right-editmyusercss": "Уредување на сопствени кориснички каскадни стилски податотеки (CSS)",
        "unblocked-id": "Блокирањето $1 беше отстрането",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] е одблокирана.",
        "blocklist": "Блокирани корисници",
+       "autoblocklist": "Автоблокови",
+       "autoblocklist-submit": "Пребарај",
+       "autoblocklist-legend": "Испис на автоблокови",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Месен автоблок|Месни автоблокови}}",
+       "autoblocklist-empty": "Списокот на автоблокови е празен.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Друг автоблок|Други автоблокови}}",
        "ipblocklist": "Блокирани корисници",
        "ipblocklist-legend": "Најди блокиран корисник",
        "blocklist-userblocks": "Скриј блокирања на корис. сметки",
index f386599..e76fd30 100644 (file)
        "right-editsemiprotected": "Menyunting halaman-halaman yang dilindungi sebagai \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Menyunting model kandungan laman",
        "right-editinterface": "Menyunting antara muka pengguna",
-       "right-editusercssjs": "Menyunting fail CSS dan JavaScript pengguna lain",
        "right-editusercss": "Menyunting fail CSS pengguna lain",
        "right-edituserjs": "Menyunting fail JavaScript pengguna lain",
        "right-editmyusercss": "Menyunting fail CSS pengguna sendiri",
index 46ecd0e..e9f4a71 100644 (file)
        "right-editsemiprotected": "Redigere beskyttede sider som er «{{int:protect-level-autoconfirmed}}»",
        "right-editcontentmodel": "Redigere innholdsmodellen til en side",
        "right-editinterface": "Redigere brukergrensesnittet",
-       "right-editusercssjs": "Redigere andre brukeres CSS- og JS-filer",
        "right-editusercss": "Redigere andre brukeres CSS-filer",
        "right-edituserjs": "Redigere andre brukeres JS-filer",
        "right-editmyusercss": "Redigere sine egne CSS-filer",
index 7f7b847..0a9d671 100644 (file)
        "right-editsemiprotected": "Pagina's bewerken die beveiligd zijn als \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Het paginainhoudmodel bewerken",
        "right-editinterface": "De gebruikersinterface bewerken",
-       "right-editusercssjs": "De CSS- en JavaScriptbestanden van andere gebruikers bewerken",
        "right-editusercss": "De CSS-bestanden van andere gebruikers bewerken",
        "right-edituserjs": "De JavaScriptbestanden van andere gebruikers bewerken",
        "right-editmyusercss": "Uw eigen CSS-pagina's bewerken",
        "unblocked-id": "Blokkade $1 is opgeheven",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] is gedeblokkeerd.",
        "blocklist": "Geblokkeerde gebruikers",
+       "autoblocklist": "Automatische blokkades",
+       "autoblocklist-submit": "Zoeken",
+       "autoblocklist-legend": "Automatische blokkades tonen",
+       "autoblocklist-localblocks": "Lokale {{PLURAL:$1|automatische blokkades}}",
+       "autoblocklist-empty": "De lijst met automatische blokkades is leeg.",
+       "autoblocklist-otherblocks": "Andere {{PLURAL:$1|automatische blokkades}}",
        "ipblocklist": "Geblokkeerde gebruikers",
        "ipblocklist-legend": "Een geblokkeerde gebruiker zoeken",
        "blocklist-userblocks": "Geblokkeerde accounts verbergen",
index 1659f65..4eeea81 100644 (file)
        "right-editsemiprotected": "Edycja stron zabezpieczonych na poziomie „{{int:protect-level-autoconfirmed}}”",
        "right-editcontentmodel": "Edycja modelu zawartości strony",
        "right-editinterface": "Edycja interfejsu użytkownika",
-       "right-editusercssjs": "Edycja plików CSS i JS innych użytkowników",
        "right-editusercss": "Edycja plików CSS innych użytkowników",
        "right-edituserjs": "Edycja plików JS innych użytkowników",
        "right-editmyusercss": "Edycja swoich plików CSS",
index 5f0d19d..7de2dc6 100644 (file)
        "right-editsemiprotected": "Editar páginas protegidas como \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Editar o modelo de uma pagina",
        "right-editinterface": "Editar a interface de usuário",
-       "right-editusercssjs": "Editar os arquivos CSS e JS de outros usuários",
        "right-editusercss": "Editar os arquivos CSS de outros usuários",
        "right-edituserjs": "Editar os arquivos JS de outros usuários",
        "right-editmyusercss": "Edite seu próprio arquivo CSS de usuário",
        "rcfilters-filter-bots-description": "Edições feitas por ferramentas automatizadas.",
        "rcfilters-filter-humans-label": "Humano (não bot)",
        "rcfilters-filter-humans-description": "Edições feitas por editores humanos.",
+       "rcfilters-filter-patrolled-label": "Patrulhado",
        "rcfilters-filter-unpatrolled-label": "Não patrulhadas",
        "rcfilters-filter-unpatrolled-description": "Edições não marcadas como patrulhadas.",
        "rcfilters-filtergroup-significance": "Significado",
        "unblocked-id": "O bloqueio de $1 foi removido com sucesso",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] foi desbloqueado.",
        "blocklist": "Usuários bloqueados",
+       "autoblocklist": "Bloqueios automáticos",
+       "autoblocklist-submit": "Pesquisar",
+       "autoblocklist-legend": "Listar bloqueios automáticos",
+       "autoblocklist-empty": "A lista de bloqueios automáticos está vazia.",
        "ipblocklist": "Usuários bloqueados",
        "ipblocklist-legend": "Procurar por um usuário bloqueado",
        "blocklist-userblocks": "Esconder bloqueios de contas",
        "restrictionsfield-label": "Intervalos IP permitidos:",
        "restrictionsfield-help": "Um endereço IP ou intervalo CIDR por linha. Para ativar tudo, use\n<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "revisão $1",
-       "pageid": "ID da página $1"
+       "pageid": "ID da página $1",
+       "gotointerwiki-invalid": "O título especificado é invalido."
 }
index 8905262..3fbbde5 100644 (file)
        "right-editsemiprotected": "Editar páginas protegidas com \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Editar o modelo de conteúdo de uma página",
        "right-editinterface": "Editar a interface de utilizador",
-       "right-editusercssjs": "Editar os ficheiros CSS e JS de outros utilizadores",
        "right-editusercss": "Editar os ficheiros CSS de outros utilizadores",
        "right-edituserjs": "Editar os ficheiros JS de outros utilizadores",
        "right-editmyusercss": "Editar os seus próprios ficheiros CSS de utilizador",
        "undeleteviewlink": "ver",
        "undeleteinvert": "Inverter seleção",
        "undeletecomment": "Motivo:",
-       "undeletedrevisions": "$1 {{PLURAL:$1|edição restaurada|edições restauradas}}",
-       "undeletedrevisions-files": "$1 {{PLURAL:$1|edição restaurada|edições restauradas}} e $2 {{PLURAL:$2|ficheiro restaurado|ficheiros restaurados}}",
-       "undeletedfiles": "{{PLURAL:$1|ficheiro restaurado|$1 ficheiros restaurados}}",
        "cannotundelete": "Algumas ou todas as restaurações falharam:\n$1",
        "undeletedpage": "'''$1 foi restaurada'''\n\nConsulte o [[Special:Log/delete|registo de eliminações]] para um registo das eliminações e restaurações mais recentes.",
        "undelete-header": "Consulte o [[Special:Log/delete|registo de eliminações]] para ver as páginas eliminadas recentemente.",
        "unblocked-id": "O bloqueio de $1 foi removido com sucesso",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] foi desbloqueado.",
        "blocklist": "Utilizadores bloqueados",
+       "autoblocklist": "Bloqueios automáticos",
+       "autoblocklist-submit": "Pesquisar",
+       "autoblocklist-legend": "Lista de bloqueios automáticos",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Bloqueio automático local|Bloqueios automáticos locais}}",
+       "autoblocklist-empty": "A lista de bloqueio automático está vazia.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Outro bloqueio automático|Outros bloqueios automáticos}}",
        "ipblocklist": "Utilizadores bloqueados",
        "ipblocklist-legend": "Procurar um utilizador bloqueado",
        "blocklist-userblocks": "Ocultar bloqueios de contas",
        "htmlform-user-not-valid": "<strong>$1</strong> não é um nome de utilizador válido.",
        "logentry-delete-delete": "$1 apagou a página $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|eliminou}} o redirecionamento $3, sobrescrevendo-o",
-       "logentry-delete-restore": "$1 restaurou a página $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|restaurou}} a página $3 ($4)",
        "logentry-delete-event": "$1 alterou a visibilidade de {{PLURAL:$5|uma entrada|$5 entradas}} em $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|alterou}} a visibilidade de {{PLURAL:$5|uma revisão|$5 revisões}} em $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|alterou}} a visibilidade de entradas de registo em $3",
index b5fed9f..5f1c62e 100644 (file)
        "right-editsemiprotected": "Cange le pàggene prutette cumme a \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Cange 'u modelle de condenute de 'na pàgene",
        "right-editinterface": "Cange l'inderfacce utende",
-       "right-editusercssjs": "Cange 'u CSS e 'u JS de l'otre utinde",
        "right-editusercss": "Cange 'u CSS de l'otre utinde",
        "right-edituserjs": "Cange 'u JS de l'otre utinde",
        "right-editmyusercss": "Cange le file tune de CSS",
index aaf4370..d341f9f 100644 (file)
        "right-editsemiprotected": "правка страниц, защищённых как «{{int:protect-level-autoconfirmed}}»",
        "right-editcontentmodel": "редактирование контентной модели страницы",
        "right-editinterface": "изменение пользовательского интерфейса",
-       "right-editusercssjs": "правка CSS- и JS-файлов других участников",
        "right-editusercss": "правка CSS-файлов других участников",
        "right-edituserjs": "правка JavaScript-файлов других участников",
        "right-editmyusercss": "редактирование своих пользовательских CSS-файлов",
        "revid": "версия $1",
        "pageid": "ID страницы $1",
        "rawhtml-notallowed": "&lt;html&gt; теги могут быть использованы только в пределах обычных страниц.",
-       "gotointerwiki": "Покидаем {{grammar:genitive|{{SITENAME}}}}...",
+       "gotointerwiki": "Покидаем {{grammar:accusative|{{SITENAME}}}}...",
        "gotointerwiki-invalid": "Указан некорректный заголовок.",
-       "gotointerwiki-external": "Вы покидаете {{grammar:genitive|{{SITENAME}}}} для посещения сайта [[$2]].\n\n[$1 Нажмите здесь, чтобы перейти на $1].",
+       "gotointerwiki-external": "Вы покидаете {{grammar:accusative|{{SITENAME}}}} для посещения сайта [[$2]].\n\n[$1 Нажмите здесь, чтобы перейти на $1].",
        "undelete-cantedit": "Вы не можете восстановить эту страницу, поскольку у вас недостаточно прав для ее редактирования.",
        "undelete-cantcreate": "Вы не можете восстановить эту страницу, поскольку она не существует, а у вас недостаточно прав для ее создания."
 }
index 33f7fd3..ec34495 100644 (file)
        "right-editsemiprotected": "Eedit pages protected aes \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Eedit the content model o ae page",
        "right-editinterface": "Eedit the uiser interface",
-       "right-editusercssjs": "Eedit ither uisers' CSS n JavaScript files",
        "right-editusercss": "Eedit ither uisers' CSS files",
        "right-edituserjs": "Eedit ither uisers' JavaScript files",
        "right-editmyusercss": "Eidit yer ain uiser CSS files",
index 61c06bd..c77f077 100644 (file)
        "right-editsemiprotected": "Urejanje strani, zaščitenih kot »{{int:protect-level-autoconfirmed}}«",
        "right-editcontentmodel": "Urejanje vsebinskega modela strani",
        "right-editinterface": "Urejanje uporabniškega vmesnika",
-       "right-editusercssjs": "Urejanje CSS- in JS-datotek drugih uporabnikov",
        "right-editusercss": "Uredi CSS datotek drugih uporabnikov",
        "right-edituserjs": "Uredi JS datotek drugih uporabnikov",
        "right-editmyusercss": "Uredite svoje uporabniške datoteke CSS",
        "unblocked-id": "Blokada $1 je odstranjena",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] smo odblokirali.",
        "blocklist": "Blokirani uporabniki",
+       "autoblocklist": "Samodejne blokade",
+       "autoblocklist-submit": "Išči",
+       "autoblocklist-legend": "Seznam samodejnih blokad",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Lokalna samodejna blokada|Lokalni samodejni blokadi|Lokalne samodejne blokade}}",
+       "autoblocklist-empty": "Seznam samodejnih blokad je prazen.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Druga samodejna blokada|Drugi samodejni blokadi|Druge samodejne blokade}}",
        "ipblocklist": "Blokirani uporabniki",
        "ipblocklist-legend": "Poišči blokiranega uporabnika",
        "blocklist-userblocks": "skrij blokade računov",
index 08a1a82..76ade66 100644 (file)
        "right-editsemiprotected": "Redakto faqet e mbrojtura, si \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Redakto modelin e përmbajtjes së një faqeje",
        "right-editinterface": "Ndrysho parapamjen e përdoruesit",
-       "right-editusercssjs": "Redakto skedat CSS dhe JS të përdoruesve tjerë",
        "right-editusercss": "Redakto skedat CSS të përdoruesve tjerë",
        "right-edituserjs": "Redakto skedat JS të përdoruesve tjerë",
        "right-editmyusercss": "Redakto CSS - skedat e tua të përdoruesit",
index 9ea137f..bf00f7d 100644 (file)
        "right-editsemiprotected": "уређивање страница под заштитом „{{int:protect-level-autoconfirmed}}“",
        "right-editcontentmodel": "мењање модела садржаја странице",
        "right-editinterface": "уређивање корисничког окружења",
-       "right-editusercssjs": "уређивање туђих CSS и јаваскрипт датотека",
        "right-editusercss": "уређивање туђих CSS датотека",
        "right-edituserjs": "уређивање туђих JavaScript датотека",
        "right-editmyusercss": "уређивање сопствених CSS датотека",
index 141dea8..b3a2adf 100644 (file)
        "right-editprotected": "uređivanje stranice pod zaštitom „{{int:protect-level-sysop}}“",
        "right-editsemiprotected": "uređivanje stranica pod zaštitom „{{int:protect-level-autoconfirmed}}“",
        "right-editinterface": "uređivanje korisničkog okruženja",
-       "right-editusercssjs": "uređivanje tuđih CSS i javaskript datoteka",
        "right-editusercss": "uređivanje tuđih CSS datoteka",
        "right-edituserjs": "uređivanje tuđih JavaScript datoteka",
        "right-editmyusercss": "uređivanje sopstvenih CSS datoteka",
index 92c0899..86f240b 100644 (file)
@@ -38,7 +38,7 @@
        "tog-enotifminoredits": "Béjaan ogé (ngaliwatan surélék) lamun aya parobahan leutik dina kaca jeung berkasna",
        "tog-enotifrevealaddr": "Témbongkeun alamat surélék kuring dina surat émbaran",
        "tog-shownumberswatching": "Témbongkeun jumlah nu ngawaskeun",
-       "tog-oldsig": "Paraf nu geus aya:",
+       "tog-oldsig": "Tawisan anjeun nu nyampak:",
        "tog-fancysig": "Témbongkeun tanda tangan salaku wikitext (tanpa tutumbu otomatis)",
        "tog-uselivepreview": "Paké pratayang langsung",
        "tog-forceeditsummary": "Mun kotak ringkesan éditan masih kosong, béjaan!",
        "category-article-count": "{{PLURAL:$2|Ieu kategori ngan ngawengku nu di handap.|{{PLURAL:$1|kaca|$1 kaca}} ti $2 di handap asup kana ieu kategori.}}",
        "category-article-count-limited": "{{PLURAL:$1|Kaca|$1 kaca}} di handap kaasup kana kategori.",
        "category-file-count": "{{PLURAL:$2|Ieu kategori ngan boga berkas di handap.|{{PLURAL:$1|berkas|$1 berkas}} di handap aya dina ieu kategori, ti jumlah $2.}}",
-       "category-file-count-limited": "{{PLURAL:$1|berkas|$1 berkas}} di handap aya dina kategori ieu.",
+       "category-file-count-limited": "{{PLURAL:$1|berkas|$1 berkas}} di handap aya dina ieu kategori.",
        "listingcontinuesabbrev": "(samb.)",
        "index-category": "Kaca nu diindéks",
        "noindex-category": "Kaca nu teu diindéks",
        "createacct-reason-ph": "Naha bet nyieun akun séjén",
        "createacct-submit": "Jieun akun anjeun",
        "createacct-another-submit": "Jieun akun",
+       "createacct-continue-submit": "Tuluykeun panyieunan akun",
+       "createacct-another-continue-submit": "Tuluykeun panyieunan akun",
        "createacct-benefit-heading": "{{SITENAME}} téh dijieun ku jalma-jalma siga anjeun.",
        "createacct-benefit-body1": "{{PLURAL:$1|édit|édit}}",
        "createacct-benefit-body2": "{{PLURAL:$1|kaca|kaca}}",
        "right-protect": "Ngarobah hambalan protéksi jeung édit kaca anu dikonci",
        "right-editprotected": "Edit kaca anu dikonci salaku \"{{int:protect-level-sysop}}\"",
        "right-editinterface": "Édit antarbenget pamaké",
-       "right-editusercssjs": "Édit berkas CSS jeung JS pamaké séjén",
        "right-editusercss": "Édit berkas CSS pamaké séjén",
        "right-edituserjs": "Ngédit berkas JS pamaké séjén",
        "right-viewmywatchlist": "Tempo awaskeuneun anjeun",
        "fileexists-extension": "Geus aya berkas anu ngaranna sarupa: [[$2|thumb]]\n* Ngaran berkas nu dimuat: <strong>[[:$1]]</strong>\n* Ngaran berkas nu geus aya: <strong>[[:$2]]</strong>\nPilih ngaran séjén.",
        "fileexists-forbidden": "Berkas  nu ngaranna kitu geus aya sarta teu bisa ditimpah.\nMun anjeun keukeuh rék ngunggahkeun berkas anjeun, mangga balik deui sarta paké ngaran anyar.\n[[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Gening berkas téh geus aya nu ngaranna sarua dina répositori berkas reujeung.\nMun anjeun keukeuh hayang ngunjal ieu berkas, sok ganti heula ngaranna ku ngaran nu béda. [[File:$1|thumb|center|$1]]",
-       "file-exists-duplicate": "Gambar ieu duplikat ti {{PLURAL:$1|gambar|gambar}}:",
+       "file-exists-duplicate": "Ieu berkas téh duplikat jeung nu di handap {{PLURAL:$1|berkas}}:",
        "file-deleted-duplicate": "Berkas anu sarua jeung [[:$1]] geus kungsi dihapus.\nPariksa heula jujutan hapusanana saméméh neruskeun ngamuat deui éta berkas.",
        "uploadwarning": "Pépéling ngamuat",
        "uploadwarning-text": "Ropéa pedaran berkas di handap terus cobaan deui.",
        "nbytes": "$1 {{PLURAL:$1|bait|bait}}",
        "ncategories": "$1 {{PLURAL:$1|kategori|kategori}}",
        "ninterwikis": "$1 {{PLURAL:$1|interwiki|interwiki}}",
-       "nlinks": "$1 {{PLURAL:$1|tutumbu|tutumbu}}",
+       "nlinks": "$1 {{PLURAL:$1|tutumbu}}",
        "nmembers": "$1 {{PLURAL:$1|kontributor|kontributor}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|anggota|anggota}}",
        "nrevisions": "$1 {{PLURAL:$1|révisi|révisi}}",
        "mostlinkedcategories": "Paling loba ditumbukeun ka kategori",
        "mostlinkedtemplates": "Citakan nu panglobana ditumbu",
        "mostcategories": "Artikel nu paling loba ngandung kategori",
-       "mostimages": "Berkas anu panglobana ditutumbukeun",
+       "mostimages": "Berkas anu panglobana ditumbukeun",
        "mostrevisions": "Artikel nu pangmindengna dirévisi",
        "prefixindex": "Kabeh kaca maké awalan",
        "shortpages": "Kaca-kaca parondok",
index 87d00c2..df3d133 100644 (file)
        "right-editsemiprotected": "Redigera skyddade sidor som \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Ändra innehållsmodellen för en sida",
        "right-editinterface": "Redigera användargränssnittet",
-       "right-editusercssjs": "Redigera andra användares CSS- och JS-filer",
        "right-editusercss": "Redigera andra användares CSS-filer",
        "right-edituserjs": "Redigera andra användares JavaScript-filer",
        "right-editmyusercss": "Redigera din egen användares CSS-filer",
index 39e8627..f8f3d2f 100644 (file)
        "right-editsemiprotected": "\"{{int:protect-level-autoconfirmed}}\" olarak korunan sayfalarda değişiklik yap",
        "right-editcontentmodel": "Sayfanın içerik modelini düzenle",
        "right-editinterface": "Kullanıcı arayüzünü değiştirmek",
-       "right-editusercssjs": "Diğer kullanıcıların CSS ve JS dosyalarında değişiklik yap",
        "right-editusercss": "Diğer kullanıcıların CSS dosyalarında değişiklik yap",
        "right-edituserjs": "Diğer kullanıcıların JS dosyalarında değişiklik yap",
        "right-editmyusercss": "Kendi kullanıcı CSS dosyaları düzenle",
index a5dbfef..4a7a018 100644 (file)
        "category_header": "«$1» категориысь бамъёс",
        "subcategories": "Подкатегориос",
        "category-media-header": "«$1» категориысь файлъёс",
-       "category-empty": "''Та категориын али бамъёс но, файлъёс но ӧвӧл.''",
+       "category-empty": "<em>Та категориын али бамъёс но, файлъёс но ӧвӧл.</em>",
        "hidden-categories": "{{PLURAL:$1|1=Ватэм категория|Ватэм категориос}}",
        "hidden-category-category": "Ватэм категориос",
        "category-subcat-count": "{{PLURAL:$2|1=Со категориын одӥг подкатегория гинэ.|Возьматэмын $1 {{PLURAL:$1|подкатегория|подкатегориос}} $2 пӧлысь.}}",
        "viewyourtext": "Тӥ быгатӥськоды та бамез <strong>тӥляд тупатонъёстылэсь</strong> кодзэс учкыны но кӧчырыны.",
        "protectedinterface": "Та бам возе интерфейс текстэз та викилэн программной обеспечениезлы. Вандализмез палэнтон понна со утемын воштонъёслэсь.\nВань викиослы берыктэмъёсты ватсалляны яке вошъяны вылысь, тауна, MediaWiki локализацияя сайтэ выжелэ — [https://translatewiki.net/ translatewiki.net].",
        "editinginterface": "<strong>Сак луэ:</strong> Тӥ тупатӥськоды бамез, кудӥз возе программной обеспеченилэсь интерфейс текстсэ.\nТа бамез тупатон воштоз интерфейсэз возьматонэз мукет викиавторъёслы та викиын.",
-       "namespaceprotected": "Тон дорын редактировать карыны бам ӧвӧл юаське <кужмо>$1</strong> инты нимъёс.",
+       "namespaceprotected": "Тон дорын редактировать карыны бам ӧвӧл юаське <strong>$1</strong> инты нимъёс.",
        "exception-nologin": "Ӧд пыре системае",
        "logouttext": "<strong>Тӥ ужан сеансэз йылпумъяды.</strong>\n\nКуд-огез бамъёс возьматӥськыны на быгато озьы, тӥ авторизовать каремын на кадь. Талы пумит нюръяськон понна бушатэ браузерлэсь кэшсэ.",
        "welcomeuser": "Гажаса ӧтиськом, $1!",
        "yourdomainname": "Тӥляд доменды:",
        "login": "Пырыны",
        "nav-login-createaccount": "Нимдэс вераны / Регистрациез ортчытыны",
-       "userlogin": "Регистрациез ортчытыны яке Википедие пырыны",
-       "userloginnocreate": "Пырыны",
        "logout": "Кошкыны",
        "userlogout": "Потыны",
        "notloggedin": "Ӧд пыре системае",
        "userlogin-noaccount": "Ас учётной записьты ӧвӧл?",
        "userlogin-joinproject": "Проектэ пыриськоно",
-       "nologin": "Учётной запись ӧвӧл? $1.",
-       "nologinlink": "Учётной записез кылдытыны",
        "createaccount": "Выль викиавторлэн регистрациез",
-       "gotaccountlink": "Пырелэ",
        "userlogin-resetpassword-link": "Тӥлесьтыд парольдэс куштыны?",
        "userlogin-helplink2": "Пыронъя юрттэт",
        "createacct-emailrequired": "Электрон почталэн адресэз",
        "currentrevisionlink": "Алиез версия",
        "cur": "али",
        "last": "азьв.",
-       "history-fieldset-title": "Историез учкыны",
-       "history-show-deleted": "Ӵушылэмъёссэ гинэ",
+       "history-fieldset-title": "Историез воштӥськон понна",
+       "history-show-deleted": "Ӵотаны ӵушылэмъёссэ гинэ",
        "rev-delundel": "возьматыны/ватыны",
        "rev-showdeleted": "возьматоно",
        "revdelete-show-file-submit": "Бен",
        "prefs-editing": "Тупатон",
        "yourlanguage": "Интерфейслэн кылыз:",
        "prefs-preview": "Бамез эскерон",
-       "userrights": "Пыриськисьлэн правоосыныз кивалтон",
+       "userrights": "Пыриськисьлэн правоосыныз",
        "editusergroup": "Викиавторлэсь группаоссэ возьматыны",
        "group-autoconfirmed": "Авто-юнматэм викиавторъёс",
        "group-bot": "Ботъёс",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|1=Метка|Меткаос}}]]: $2)",
        "tags-title": "Меткаос",
        "logentry-delete-delete": "$1 {{GENDER:$2|быдтӥз}} $3 бамез",
-       "logentry-delete-restore": "$1 {{GENDER:$2|берен сётӥз}} $3 бамез",
+       "logentry-delete-restore": "$1 {{GENDER:$2|берен сётӥз}} $3 бамез ($4)",
        "logentry-block-block": "$1 {{GENDER:$2|заблокировать кариз}} {{GENDER:$4|$3}} дырлы: $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|разблокировать кариз}} {{GENDER:$4|$3}}",
        "logentry-block-reblock": "$1 {{GENDER:$2|воштӥз}} блокировкалэсь йылпумъянзэ {{GENDER:$4|$3}} понна дырлы: $5 $6",
        "logentry-suppress-block": "$1 {{GENDER:$2|заблокировать кариз}} {{GENDER:$4|$3}} дырлы: $5 $6",
        "logentry-suppress-reblock": "$1 {{GENDER:$2|воштӥз}} блокировкалэсь йылпумъянзэ {{GENDER:$4|$3}} понна дырлы: $5 $6",
index b4e4c93..b104ab0 100644 (file)
        "right-editsemiprotected": "редагування сторінок з рівнем захисту «{{int:protect-level-autoconfirmed}}»",
        "right-editcontentmodel": "Редагувати модель вмісту сторінки",
        "right-editinterface": "редагування інтерфейсу користувача",
-       "right-editusercssjs": "редагування CSS- і JS-файлів інших користувачів",
        "right-editusercss": "редагування CSS-файлів інших користувачів",
        "right-edituserjs": "редагування JS-файлів інших користувачів",
        "right-editmyusercss": "редагування власних CSS-файлів користувача",
        "rcfilters-hideminor-conflicts-typeofchange": "Певні типи змін не можна позначити як «незначні», тож цей фільтр конфліктує з такими фільтрами за типом змін: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Цей фільтр за типом змін конфліктує з фільтром «Незначні редагування». Певні типи змін не можна позначати як «незначні».",
        "rcnotefrom": "Нижче знаходяться {{PLURAL:$5|редагування}} з <strong>$3, $4</strong> (відображено до <strong>$1</strong>).",
+       "rclistfromreset": "Скинути вибір дати",
        "rclistfrom": "Показати редагування починаючи з $3 $2.",
        "rcshowhideminor": "$1 незначні редагування",
        "rcshowhideminor-show": "Показати",
        "php-uploaddisabledtext": "Завантаження файлів вимкнене у налаштуваннях PHP. Будь ласка, перевірте значення file_uploads.",
        "uploadscripted": "Файл містить HTML-код або скрипт, який може неправильно обробитися браузером.",
        "upload-scripted-pi-callback": "Неможливо завантажити файл, що містить інструкції опрацювання таблиці стилів XML.",
+       "upload-scripted-dtd": "Неможливо завантажувати SVG-файли, які містять нестандартну декларацію DTD.",
        "uploaded-script-svg": " \t\t\nЗнайдений небезпечний елемент з підтримкою сценаріїв «$1» в завантаженому файлі SVG.",
        "uploaded-hostile-svg": " \t\nЗнайдений небезпечний CSS-код в елементі стилю завантаженого файлу SVG.",
        "uploaded-event-handler-on-svg": " \t\nУстановка атрибутів обробника подій <code>$1=\"$2\"</code> не дозволено для SVG-файлів.",
        "unblocked-id": "Блокування $1 було зняте.",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] розблоковано.",
        "blocklist": "Заблоковані користувачі",
+       "autoblocklist": "Автоблокування",
+       "autoblocklist-submit": "Пошук",
+       "autoblocklist-legend": "Вивести список автоблокувань",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Локальне|Локальні}} автоблокування",
+       "autoblocklist-empty": "Список автоблокувань порожній.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Інше|Інші}} автоблокування",
        "ipblocklist": "Список заблокованих адрес та користувачів",
        "ipblocklist-legend": "Пошук заблокованого користувача",
        "blocklist-userblocks": "Сховати блокування облікових записів",
        "htmlform-user-not-valid": "<strong>$1</strong> не є дійсним іменем користувача.",
        "logentry-delete-delete": "$1 {{GENDER:$2|вилучив|вилучила}} сторінку $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|вилучив|вилучила}} перенаправлення $3 шляхом перезапису",
-       "logentry-delete-restore": "$1 {{GENDER:$2|відновив|відновила}} сторінку $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|відновив|відновила}} сторінку $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|відновив|відновила}} сторінку $3",
+       "restore-count-revisions": "{{PLURAL:$1|$1 версія|$1 версії|$1 версій}}",
+       "restore-count-files": "{{PLURAL:$1|$1 файл|$1 файли|$1 файлів}}",
        "logentry-delete-event": "$1 {{GENDER:$2|змінив|змінила}} видимість {{PLURAL:$5 запису журналу|$5 записів журналу}} на $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|змінив|змінила}} видимість {{PLURAL:$5|$5 версії|$5 версій}} на сторінці $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|змінив|змінила}} видимість записів журналу подій $3",
index 031e9d5..52545a1 100644 (file)
        "right-editsemiprotected": "改保護等級係「{{int:protect-level-autoconfirmed}}」嘅版面",
        "right-editcontentmodel": "改版面嘅內容模型",
        "right-editinterface": "編輯用戶界面",
-       "right-editusercssjs": "編輯其他用戶嘅CSS同埋JavaScript檔",
        "right-editusercss": "編輯其他用戶嘅CSS檔",
        "right-edituserjs": "編輯其他用戶嘅JavaScript檔",
        "right-editmyusercss": "編輯戶口嘅CSS文件",
index 05f1a62..7305da5 100644 (file)
        "right-editsemiprotected": "编辑保护级别为“{{int:protect-level-autoconfirmed}}”的页面",
        "right-editcontentmodel": "编辑页面的内容模型",
        "right-editinterface": "编辑用户界面",
-       "right-editusercssjs": "编辑其他用户的CSS和JavaScript文件",
        "right-editusercss": "编辑其他用户的CSS文件",
        "right-edituserjs": "编辑其他用户的JavaScript文件",
        "right-editmyusercss": "编辑您的用户CSS文件",
        "unblocked-id": "封禁$1已被解除",
        "unblocked-ip": "[[Special:Contributions/$1|$1]]已解封。",
        "blocklist": "被封禁用户",
+       "autoblocklist": "自动封禁",
+       "autoblocklist-submit": "搜索",
+       "autoblocklist-legend": "列举自动封禁",
+       "autoblocklist-localblocks": "本地{{PLURAL:$1|自动封禁}}",
+       "autoblocklist-empty": "自动封禁列表为空。",
+       "autoblocklist-otherblocks": "其他{{PLURAL:$1|自动封禁}}",
        "ipblocklist": "被封禁用户",
        "ipblocklist-legend": "查找被封禁用户",
        "blocklist-userblocks": "隐藏账户封禁",
index fc3ad95..75227c4 100644 (file)
        "right-editsemiprotected": "編輯保護層級為 \"{{int:protect-level-autoconfirmed}}\" 的頁面",
        "right-editcontentmodel": "編輯頁面的內容模型",
        "right-editinterface": "編輯使用者介面",
-       "right-editusercssjs": "編輯其他使用者的 CSS 與 JavaScript 檔",
        "right-editusercss": "編輯其他使用者的 CSS 檔",
        "right-edituserjs": "編輯其他使用者的 JavaScript 檔",
        "right-editmyusercss": "編輯自己的使用者 CSS 檔",
index e4bb60e..faa4d96 100644 (file)
@@ -28,6 +28,7 @@
 require_once __DIR__ . '/Maintenance.php';
 
 use Wikimedia\Rdbms\IMaintainableDatabase;
+use Wikimedia\Rdbms\DatabaseSqlite;
 
 /**
  * Maintenance script that rebuilds search index table from scratch.
index 33ca0ff..cbb0c79 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup Maintenance
  */
 
+use Wikimedia\Rdbms\DatabaseSqlite;
+
 /**
  * This class contains code common to different SQLite-related maintenance scripts
  *
index c9834f0..f6a9c54 100644 (file)
@@ -20,7 +20,9 @@
                var editBox, scrollTop, $editForm;
 
                // Make sure edit summary does not exceed byte limit
-               $( '#wpSummary' ).byteLimit( 255 );
+               // TODO: Replace with this when $wgOOUIEditPage is removed:
+               // OO.ui.infuse( 'wpSummary' ).$input.byteLimit( 255 );
+               $( 'input#wpSummary, #wpSummary > input' ).byteLimit( 255 );
 
                // Restore the edit box scroll state following a preview operation,
                // and set up a form submission handler to remember this state.
index d228236..8287264 100644 (file)
        min-height: 5em;
 }
 
+/*
+ * Add a bit of margin space between the preview and the toolbar.
+ * This replaces the ugly <p><br /></p> we used to insert into the page source
+ */
+#wikiPreview.ontop {
+       margin-bottom: 1em;
+}
+
 /* Adjustments to edit form elements */
-.editCheckboxes {
+#editpage-copywarn {
+       font-size: 0.9em;
+}
+
+#wpSummary {
+       display: block;
+       width: 80%;
        margin-bottom: 1em;
 }
 
-.editCheckboxes input:first-child {
-       margin-left: 0;
+/* Adjustments to edit form elements (only when $wgOOUIEditPage is false) */
+.mw-editform-legacy .editCheckboxes {
+       margin-bottom: 1em;
 }
 
-.cancelLink {
-       margin-left: 0.5em;
+.mw-editform-legacy .editCheckboxes input:first-child {
+       margin-left: 0;
 }
 
-#editpage-copywarn {
-       font-size: 0.9em;
+.mw-editform-legacy .cancelLink {
+       margin-left: 0.5em;
 }
 
-input#wpSummary {
-       display: block;
+.mw-editform-legacy input#wpSummary {
        background-color: #fff;
        color: #000;
-       width: 80%;
        margin-top: 0;
-       margin-bottom: 1em;
        padding: 0.625em 0.546875em 0.546875em;
        border: 1px solid #a2a9b1;
        border-radius: 2px;
@@ -47,21 +59,43 @@ input#wpSummary {
        transition: border-color 200ms cubic-bezier( 0.39, 0.575, 0.565, 1 ), box-shadow 200ms cubic-bezier( 0.39, 0.575, 0.565, 1 );
 }
 
-input#wpSummary:focus,
-input#wpSummary:active {
+.mw-editform-legacy input#wpSummary:focus,
+.mw-editform-legacy input#wpSummary:active {
        outline: 0;
        border-color: #36c;
        box-shadow: inset 0 0 0 1px #36c;
 }
 
-.editButtons input:first-child {
+.mw-editform-legacy .editButtons input:first-child {
        margin-left: 0.1em;
 }
 
-/*
- * Add a bit of margin space between the preview and the toolbar.
- * This replaces the ugly <p><br /></p> we used to insert into the page source
- */
-#wikiPreview.ontop {
-       margin-bottom: 1em;
+/* Adjustments to edit form elements (only when $wgOOUIEditPage is true) */
+.mw-editform-ooui #editpage-copywarn {
+       line-height: 1.26;
+}
+
+.mw-editform-ooui #wpSummary {
+       max-width: none;
+}
+
+.mw-editform-ooui #wpSummaryLabel {
+       margin: 0;
+}
+
+.mw-editform-ooui .editCheckboxes .oo-ui-fieldLayout {
+       margin-right: 1em;
+}
+
+.mw-editform-ooui .editHelp {
+       margin-left: 0.5em;
+       vertical-align: middle;
+}
+
+.mw-editform-ooui .editHelp a {
+       font-weight: bold;
+}
+
+.mw-editform-ooui .editOptions {
+       border-radius: 0 0 2px 2px;
 }
index 2be3bb2..c6d5082 100644 (file)
@@ -21,7 +21,7 @@ textarea {
 }
 
 .editOptions {
-       background-color: #f8f9fa;
+       background-color: #eaecf0;
        border: 1px solid #c8ccd1;
        border-top: 0;
        padding: 1em 1em 1.5em 1em;
index b0c9f91..9edd0bd 100644 (file)
         */
        mw.widgets.ComplexNamespaceInputWidget.prototype.setDisabled = function ( disabled ) {
                mw.widgets.ComplexNamespaceInputWidget.parent.prototype.setDisabled.call( this, disabled );
-               this.namespace.setDisabled( disabled );
-
+               if ( this.namespace ) {
+                       this.namespace.setDisabled( disabled );
+               }
                if ( this.invert ) {
                        this.invert.setDisabled( disabled );
                }
                if ( this.associated ) {
                        this.associated.setDisabled( disabled );
                }
+               return this;
        };
 
 }( jQuery, mediaWiki ) );
index 030fbb0..a01fbde 100644 (file)
         */
        mw.widgets.ComplexTitleInputWidget.prototype.setDisabled = function ( disabled ) {
                mw.widgets.ComplexTitleInputWidget.parent.prototype.setDisabled.call( this, disabled );
-               this.namespace.setDisabled( disabled );
-               this.title.setDisabled( disabled );
+               if ( this.namespace ) {
+                       this.namespace.setDisabled( disabled );
+               }
+
+               if ( this.title ) {
+                       this.title.setDisabled( disabled );
+               }
+               return this;
        };
 
 }( jQuery, mediaWiki ) );
index 86a9a0a..08807fb 100644 (file)
         * @member mw.hook
         */
        $( function () {
-               var loading = $.grep( mw.loader.getModuleNames(), function ( module ) {
+               var loading, modules;
+
+               modules = $.grep( mw.loader.getModuleNames(), function ( module ) {
                        return mw.loader.getState( module ) === 'loading';
                } );
                // We only need a callback, not any actual module. First try a single using()
                // for all loading modules. If one fails, fall back to tracking each module
                // separately via $.when(), this is expensive.
-               loading = mw.loader.using( loading ).then( null, function () {
-                       var all = loading.map( function ( module ) {
+               loading = mw.loader.using( modules ).then( null, function () {
+                       var all = modules.map( function ( module ) {
                                return mw.loader.using( module ).then( null, function () {
                                        return $.Deferred().resolve();
                                } );
index b95462a..97e9b26 100644 (file)
@@ -28,6 +28,7 @@
 use Wikimedia\Rdbms\TransactionProfiler;
 use Wikimedia\Rdbms\DatabaseDomain;
 use Wikimedia\Rdbms\MySQLMasterPos;
+use Wikimedia\Rdbms\DatabaseMysqlBase;
 
 /**
  * Fake class around abstract class so we can call concrete methods.
index 10bf028..b90b1ad 100644 (file)
@@ -1,6 +1,8 @@
 <?php
 
 use Wikimedia\Rdbms\Blob;
+use Wikimedia\Rdbms\Database;
+use Wikimedia\Rdbms\DatabaseSqlite;
 
 class DatabaseSqliteMock extends DatabaseSqlite {
        private $lastQuery;