Merge "userExpLevel test: use $tables from function under tests"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 2 May 2017 19:58:22 +0000 (19:58 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 2 May 2017 19:58:22 +0000 (19:58 +0000)
202 files changed:
RELEASE-NOTES-1.29
RELEASE-NOTES-1.30 [new file with mode: 0644]
autoload.php
composer.json
docs/hooks.txt
includes/DefaultSettings.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/MediaWiki.php
includes/PHPVersionCheck.php
includes/SiteStats.php
includes/Title.php
includes/api/ApiPageSet.php
includes/api/ApiQueryPagePropNames.php
includes/api/i18n/en-gb.json
includes/api/i18n/es.json
includes/api/i18n/fr.json
includes/api/i18n/gl.json
includes/api/i18n/ja.json
includes/api/i18n/ko.json
includes/api/i18n/ksh.json
includes/api/i18n/mk.json
includes/api/i18n/nl.json
includes/api/i18n/pl.json
includes/api/i18n/pt-br.json
includes/api/i18n/pt.json
includes/config/EtcdConfig.php
includes/debug/logger/ConsoleLogger.php [new file with mode: 0644]
includes/debug/logger/ConsoleSpi.php [new file with mode: 0644]
includes/deferred/LinksUpdate.php
includes/exception/MWExceptionRenderer.php
includes/installer/Installer.php
includes/installer/i18n/br.json
includes/installer/i18n/bs.json
includes/installer/i18n/ca.json
includes/installer/i18n/es.json
includes/installer/i18n/lv.json
includes/installer/i18n/pt-br.json
includes/installer/i18n/th.json
includes/installer/i18n/tr.json
includes/installer/i18n/zh-hant.json
includes/interwiki/ClassicInterwikiLookup.php
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/database/DatabaseMssql.php
includes/libs/rdbms/database/DatabaseMysqlBase.php
includes/libs/rdbms/database/DatabaseSqlite.php
includes/libs/redis/RedisConnectionPool.php
includes/page/ImagePage.php
includes/parser/MWTidy.php
includes/parser/ParserOutput.php
includes/resourceloader/ResourceLoaderClientHtml.php
includes/specialpage/ChangesListSpecialPage.php
includes/specials/SpecialJavaScriptTest.php
includes/specials/SpecialMediaStatistics.php
includes/specials/SpecialSearch.php
includes/user/User.php
includes/widget/SelectWithInputWidget.php [new file with mode: 0644]
languages/data/Names.php
languages/data/grammarTransformations/uk.json
languages/i18n/ar.json
languages/i18n/arq.json
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/atj.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/br.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/ckb.json
languages/i18n/cs.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/din.json [new file with mode: 0644]
languages/i18n/diq.json
languages/i18n/dty.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/es-formal.json [new file with mode: 0644]
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/gor.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hif-latn.json
languages/i18n/hr.json
languages/i18n/hu.json
languages/i18n/hy.json
languages/i18n/ia.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/kn.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/lij.json
languages/i18n/lo.json
languages/i18n/lv.json
languages/i18n/lzh.json
languages/i18n/mai.json
languages/i18n/mk.json
languages/i18n/nb.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/ru.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/su.json
languages/i18n/sv.json
languages/i18n/th.json
languages/i18n/tr.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesDe.php
languages/messages/MessagesDin.php [new file with mode: 0644]
languages/messages/MessagesUk.php
maintenance/benchmarks/README
maintenance/benchmarks/australia-untidy.html.gz [new file with mode: 0644]
maintenance/benchmarks/benchmarkTidy.php [new file with mode: 0644]
maintenance/cleanupInvalidDbKeys.php [new file with mode: 0644]
maintenance/eval.php
maintenance/shell.php
maintenance/tables.sql
resources/Resources.php
resources/lib/oojs-ui/i18n/sr-ec.json
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-core-apex.css
resources/lib/oojs-ui/oojs-ui-core-mediawiki.css
resources/lib/oojs-ui/oojs-ui-core.js
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui-toolbars-apex.css
resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css
resources/lib/oojs-ui/oojs-ui-toolbars.js
resources/lib/oojs-ui/oojs-ui-widgets-apex.css
resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css
resources/lib/oojs-ui/oojs-ui-widgets.js
resources/lib/oojs-ui/oojs-ui-windows-apex.css
resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css
resources/lib/oojs-ui/oojs-ui-windows.js
resources/src/jquery/jquery.getAttrs.js
resources/src/jquery/jquery.tablesorter.js
resources/src/mediawiki.action/mediawiki.action.view.postEdit.css [deleted file]
resources/src/mediawiki.action/mediawiki.action.view.postEdit.js
resources/src/mediawiki.action/mediawiki.action.view.postEdit.less [new file with mode: 0644]
resources/src/mediawiki.action/templates/postEdit.html [deleted file]
resources/src/mediawiki.language/specialcharacters.json
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js [new file with mode: 0644]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.less [deleted file]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuOptionWidget.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagItemWidget.less [deleted file]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FloatingMenuSelectWidget.less [new file with mode: 0644]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ItemMenuOptionWidget.less [new file with mode: 0644]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.TagItemWidget.less [new file with mode: 0644]
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.js [deleted file]
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuOptionWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagItemWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FloatingMenuSelectWidget.js [new file with mode: 0644]
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ItemMenuOptionWidget.js [new file with mode: 0644]
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.TagItemWidget.js [new file with mode: 0644]
resources/src/mediawiki.router/index.js
resources/src/mediawiki.skinning/content.parsoid.less
resources/src/mediawiki.special/mediawiki.special.block.css [deleted file]
resources/src/mediawiki.special/mediawiki.special.css
resources/src/mediawiki.special/mediawiki.special.search.commonsInterwikiWidget.js
resources/src/mediawiki.toolbar/toolbar.js
resources/src/mediawiki.widgets.datetime/ProlepticGregorianDateTimeFormatter.js
resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js
resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js
resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.base.css [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.js [new file with mode: 0644]
resources/src/mediawiki/mediawiki.experiments.js
resources/src/mediawiki/mediawiki.user.js
resources/src/mediawiki/mediawiki.util.js
resources/src/startup.js
tests/phpunit/includes/config/EtcdConfigTest.php [new file with mode: 0644]
tests/phpunit/includes/db/DatabaseSQLTest.php
tests/phpunit/includes/interwiki/ClassicInterwikiLookupTest.php
tests/phpunit/includes/interwiki/InterwikiTest.php
tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php
tests/phpunit/includes/user/UserTest.php
tests/qunit/suites/resources/jquery/jquery.byteLimit.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js

index a225086..9a86f94 100644 (file)
@@ -195,6 +195,7 @@ changes to languages because of Phabricator reports.
   ca ↔ oc; hsb ↔ dsb; io → eo; mdf → ru; pnt → el; roa-tara → it; rup → ro;
   sh → bs, sr-el, hr.
 * (T137376) New language support: Atikamekw (atj).
+* (T163600) New language support: Dinka (din).
 * (T155957) Talk Namespaces for Javanese language (jv) have been updated.
 
 ==== No fallback for Ukrainian ====
@@ -329,6 +330,13 @@ changes to languages because of Phabricator reports.
   tooltipAccessKeyRegexp, updateTooltipAccessKeys.
 * The ID of the <li> element containing the login link has changed from
   'pt-login' to 'pt-login-private' in private wikis.
+* The old, neglected "bulletin board style toolbar" in the edit form is now
+  deprecated (T30856). This old code dates from 2006, and was replaced in the
+  MediaWiki release tarball and in Wikimedia production by the WikiEditor
+  extension in 2010. It is only shown to users if no other editor was
+  installed, and leads to confusion.
+* (T92459) Loading ResourceLoader modules containing JavaScript through
+  addModuleStyles() is deprecated and will log a warning server-side.
 
 == Compatibility ==
 
diff --git a/RELEASE-NOTES-1.30 b/RELEASE-NOTES-1.30
new file mode 100644 (file)
index 0000000..fffa109
--- /dev/null
@@ -0,0 +1,96 @@
+== MediaWiki 1.30 ==
+
+THIS IS NOT A RELEASE YET
+
+MediaWiki 1.30 is an alpha-quality branch and is not recommended for use in
+production.
+
+=== Configuration changes in 1.30 ===
+* …
+
+=== New features in 1.30 ===
+* …
+
+=== External library changes in 1.30 ===
+
+==== Upgraded external libraries ====
+* …
+
+==== New external libraries ====
+* …
+
+==== Removed and replaced external libraries ====
+* …
+
+=== Bug fixes in 1.30 ===
+* …
+
+=== Action API changes in 1.30 ===
+* …
+
+=== Action API internal changes in 1.30 ===
+* …
+
+=== Languages updated in 1.30 ===
+MediaWiki supports over 350 languages. Many localisations are updated
+regularly. Below only new and removed languages are listed, as well as
+changes to languages because of Phabricator reports.
+
+* …
+
+=== Other changes in 1.30 ===
+* The use of an associative array for $wgProxyList, where the IP address is in
+  the key instead of the value, is deprecated (e.g. [ '127.0.0.1' => 'value' ]).
+  Please convert these arrays to indexed/sequential ones (e.g. [ '127.0.0.1' ]).
+* mw.user.bucket (deprecated in 1.23) was removed.
+
+== Compatibility ==
+MediaWiki 1.30 requires PHP 5.5.9 or later. There is experimental support for
+HHVM 3.6.5 or later.
+
+MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
+but support for them is somewhat less mature. There is experimental support for
+Oracle and Microsoft SQL Server.
+
+The supported versions are:
+
+* MySQL 5.0.3 or later
+* PostgreSQL 8.3 or later
+* SQLite 3.3.7 or later
+* Oracle 9.0.1 or later
+* Microsoft SQL Server 2005 (9.00.1399)
+
+== Upgrading ==
+1.30 has several database changes since 1.29, and will not work without schema
+updates. Note that due to changes to some very large tables like the revision
+table, the schema update may take quite long (minutes on a medium sized site,
+many hours on a large site).
+
+Don't forget to always back up your database before upgrading!
+
+See the file UPGRADE for more detailed upgrade instructions, including
+important information when upgrading from versions prior to 1.11.
+
+For notes on 1.29.x and older releases, see HISTORY.
+
+== Online documentation ==
+Documentation for both end-users and site administrators is available on
+MediaWiki.org, and is covered under the GNU Free Documentation License (except
+for pages that explicitly state that their contents are in the public domain):
+
+       https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
+
+== Mailing list ==
+A mailing list is available for MediaWiki user support and discussion:
+
+       https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
+
+A low-traffic announcements-only list is also available:
+
+       https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
+
+It's highly recommended that you sign up for one of these lists if you're
+going to run a public MediaWiki, so you can be notified of security fixes.
+
+== IRC help ==
+There's usually someone online in #mediawiki on irc.freenode.net.
index ba5b774..1141c39 100644 (file)
@@ -192,6 +192,7 @@ $wgAutoloadLocalClasses = [
        'BenchmarkHooks' => __DIR__ . '/maintenance/benchmarks/benchmarkHooks.php',
        'BenchmarkParse' => __DIR__ . '/maintenance/benchmarks/benchmarkParse.php',
        'BenchmarkPurge' => __DIR__ . '/maintenance/benchmarks/benchmarkPurge.php',
+       'BenchmarkTidy' => __DIR__ . '/maintenance/benchmarks/benchmarkTidy.php',
        'Benchmarker' => __DIR__ . '/maintenance/benchmarks/Benchmarker.php',
        'BitmapHandler' => __DIR__ . '/includes/media/Bitmap.php',
        'BitmapHandler_ClientOnly' => __DIR__ . '/includes/media/Bitmap_ClientOnly.php',
@@ -258,6 +259,7 @@ $wgAutoloadLocalClasses = [
        'CleanupAncientTables' => __DIR__ . '/maintenance/cleanupAncientTables.php',
        'CleanupBlocks' => __DIR__ . '/maintenance/cleanupBlocks.php',
        'CleanupEmptyCategories' => __DIR__ . '/maintenance/cleanupEmptyCategories.php',
+       'CleanupInvalidDbKeys' => __DIR__ . '/maintenance/cleanupInvalidDbKeys.php',
        'CleanupPreferences' => __DIR__ . '/maintenance/cleanupPreferences.php',
        'CleanupRemovedModules' => __DIR__ . '/maintenance/cleanupRemovedModules.php',
        'CleanupSpam' => __DIR__ . '/maintenance/cleanupSpam.php',
@@ -874,6 +876,8 @@ $wgAutoloadLocalClasses = [
        'MediaWiki\\Linker\\LinkRenderer' => __DIR__ . '/includes/linker/LinkRenderer.php',
        'MediaWiki\\Linker\\LinkRendererFactory' => __DIR__ . '/includes/linker/LinkRendererFactory.php',
        'MediaWiki\\Linker\\LinkTarget' => __DIR__ . '/includes/linker/LinkTarget.php',
+       'MediaWiki\\Logger\\ConsoleLogger' => __DIR__ . '/includes/debug/logger/ConsoleLogger.php',
+       'MediaWiki\\Logger\\ConsoleSpi' => __DIR__ . '/includes/debug/logger/ConsoleSpi.php',
        'MediaWiki\\Logger\\LegacyLogger' => __DIR__ . '/includes/debug/logger/LegacyLogger.php',
        'MediaWiki\\Logger\\LegacySpi' => __DIR__ . '/includes/debug/logger/LegacySpi.php',
        'MediaWiki\\Logger\\LoggerFactory' => __DIR__ . '/includes/debug/logger/LoggerFactory.php',
@@ -949,6 +953,7 @@ $wgAutoloadLocalClasses = [
        'MediaWiki\\Widget\\Search\\SearchResultWidget' => __DIR__ . '/includes/widget/search/SearchResultWidget.php',
        'MediaWiki\\Widget\\Search\\SimpleSearchResultSetWidget' => __DIR__ . '/includes/widget/search/SimpleSearchResultSetWidget.php',
        'MediaWiki\\Widget\\Search\\SimpleSearchResultWidget' => __DIR__ . '/includes/widget/search/SimpleSearchResultWidget.php',
+       'MediaWiki\\Widget\\SelectWithInputWidget' => __DIR__ . '/includes/widget/SelectWithInputWidget.php',
        'MediaWiki\\Widget\\TitleInputWidget' => __DIR__ . '/includes/widget/TitleInputWidget.php',
        'MediaWiki\\Widget\\UserInputWidget' => __DIR__ . '/includes/widget/UserInputWidget.php',
        'MediaWiki\\Widget\\UsersMultiselectWidget' => __DIR__ . '/includes/widget/UsersMultiselectWidget.php',
index be8ce15..ed42b60 100644 (file)
@@ -25,7 +25,7 @@
                "ext-xml": "*",
                "liuggio/statsd-php-client": "1.0.18",
                "mediawiki/at-ease": "1.1.0",
-               "oojs/oojs-ui": "0.21.1",
+               "oojs/oojs-ui": "0.21.2",
                "oyejorge/less.php": "1.7.0.14",
                "php": ">=5.5.9",
                "psr/log": "1.0.2",
index 060af89..7c09a55 100644 (file)
@@ -1417,7 +1417,8 @@ Allows modifying the edit checks below the textarea in the edit form.
 
 'EditPageBeforeEditToolbar': Allows modifying the edit toolbar above the
 textarea in the edit form.
-&$toolbar: The toolbar HTMl
+&$toolbar: The toolbar HTML
+Hook subscribers can return false to avoid the default toolbar code being loaded.
 
 'EditPageCopyrightWarning': Allow for site and per-namespace customization of
 contribution/copyright notice.
index e38524f..ac2261c 100644 (file)
@@ -75,7 +75,7 @@ $wgConfigRegistry = [
  * MediaWiki version number
  * @since 1.2
  */
-$wgVersion = '1.29.0-alpha';
+$wgVersion = '1.30.0-alpha';
 
 /**
  * Name of the site. It must be changed in LocalSettings.php
@@ -5938,7 +5938,7 @@ $wgSecretKey = false;
  *
  * This can have the following formats:
  * - An array of addresses, either in the values
- *   or the keys (for backward compatibility)
+ *   or the keys (for backward compatibility, deprecated since 1.30)
  * - A string, in that case this is the path to a file
  *   containing the list of IP addresses, one per line
  */
index ca3b4d1..e98dd52 100644 (file)
@@ -4097,11 +4097,14 @@ HTML
                }
 
                $script .= '});';
-               $wgOut->addScript( ResourceLoader::makeInlineScript( $script ) );
 
                $toolbar = '<div id="toolbar"></div>';
 
-               Hooks::run( 'EditPageBeforeEditToolbar', [ &$toolbar ] );
+               if ( Hooks::run( 'EditPageBeforeEditToolbar', [ &$toolbar ] ) ) {
+                       // Only add the old toolbar cruft to the page payload if the toolbar has not
+                       // been over-written by a hook caller
+                       $wgOut->addScript( ResourceLoader::makeInlineScript( $script ) );
+               };
 
                return $toolbar;
        }
@@ -4280,6 +4283,27 @@ HTML
                return $checkboxes;
        }
 
+       /**
+        * Get the message key of the label for the button to save the page
+        *
+        * @return string
+        */
+       private function getSaveButtonLabel() {
+               $labelAsPublish =
+                       $this->mArticle->getContext()->getConfig()->get( 'EditSubmitButtonLabelPublish' );
+
+               // Can't use $this->isNew as that's also true if we're adding a new section to an extant page
+               $newPage = !$this->mTitle->exists();
+
+               if ( $labelAsPublish ) {
+                       $buttonLabelKey =  $newPage ? 'publishpage' : 'publishchanges';
+               } else {
+                       $buttonLabelKey = $newPage ? 'savearticle' : 'savechanges';
+               }
+
+               return $buttonLabelKey;
+       }
+
        /**
         * Returns an array of html code of the following buttons:
         * save, diff and preview
@@ -4291,15 +4315,8 @@ HTML
        public function getEditButtons( &$tabindex ) {
                $buttons = [];
 
-               $labelAsPublish =
-                       $this->mArticle->getContext()->getConfig()->get( 'EditSubmitButtonLabelPublish' );
+               $buttonLabelKey = $this->getSaveButtonLabel();
 
-               // Can't use $this->isNew as that's also true if we're adding a new section to an extant page
-               if ( $labelAsPublish ) {
-                       $buttonLabelKey = !$this->mTitle->exists() ? 'publishpage' : 'publishchanges';
-               } else {
-                       $buttonLabelKey = !$this->mTitle->exists() ? 'savearticle' : 'savechanges';
-               }
                $attribs = [
                        'id' => 'wpSave',
                        'name' => 'wpSave',
index 8b857ea..4325328 100644 (file)
@@ -27,6 +27,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
 use Liuggio\StatsdClient\Sender\SocketSender;
 use MediaWiki\Logger\LoggerFactory;
 use MediaWiki\Session\SessionManager;
+use MediaWiki\MediaWikiServices;
 use Wikimedia\ScopedCallback;
 use Wikimedia\Rdbms\DBReplicationWaitError;
 
@@ -1198,7 +1199,9 @@ function wfLogProfilingData() {
                        $statsdSender = new SocketSender( $statsdHost, $statsdPort );
                        $statsdClient = new SamplingStatsdClient( $statsdSender, true, false );
                        $statsdClient->setSamplingRates( $config->get( 'StatsdSamplingRates' ) );
-                       $statsdClient->send( $context->getStats()->getBuffer() );
+                       $statsdClient->send(
+                               MediaWikiServices::getInstance()->getStatsdDataFactory()->getBuffer()
+                       );
                } catch ( Exception $ex ) {
                        MWExceptionHandler::logException( $ex );
                }
@@ -1263,7 +1266,7 @@ function wfLogProfilingData() {
  * @return void
  */
 function wfIncrStats( $key, $count = 1 ) {
-       $stats = RequestContext::getMain()->getStats();
+       $stats = MediaWikiServices::getInstance()->getStatsdDataFactory();
        $stats->updateCount( $key, $count );
 }
 
index 0fd6b92..b18414d 100644 (file)
@@ -282,7 +282,7 @@ class MediaWiki {
                        }
 
                        // Special pages ($title may have changed since if statement above)
-                       if ( NS_SPECIAL == $title->getNamespace() ) {
+                       if ( $title->isSpecialPage() ) {
                                // Actions that need to be made when we have a special pages
                                SpecialPageFactory::executePath( $title, $this->context );
                        } else {
index c56931e..c8e29c1 100644 (file)
@@ -26,7 +26,7 @@
  */
 class PHPVersionCheck {
        /* @var string The number of the MediaWiki version used */
-       var $mwVersion = '1.29';
+       var $mwVersion = '1.30';
        /* @var string The minimum php version for MediaWiki to run */
        var $minimumVersionPHP = '5.5.9';
        var $functionsExtensionsMapping = array(
index 1c7730c..ac5e49e 100644 (file)
@@ -22,6 +22,7 @@
 
 use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
+use MediaWiki\MediaWikiServices;
 
 /**
  * Static accessor class for site_stats and related things
@@ -78,9 +79,12 @@ class SiteStats {
                $row = self::doLoad( wfGetDB( DB_REPLICA ) );
 
                if ( !self::isSane( $row ) ) {
-                       // Might have just been initialized during this request? Underflow?
-                       wfDebug( __METHOD__ . ": site_stats damaged or missing on replica DB\n" );
-                       $row = self::doLoad( wfGetDB( DB_MASTER ) );
+                       $lb = MediaWikiServices::getInstance()->getDBLoadBalancer();
+                       if ( $lb->hasOrMadeRecentMasterChanges() ) {
+                               // Might have just been initialized during this request? Underflow?
+                               wfDebug( __METHOD__ . ": site_stats damaged or missing on replica DB\n" );
+                               $row = self::doLoad( wfGetDB( DB_MASTER ) );
+                       }
                }
 
                if ( !$wgMiserMode && !self::isSane( $row ) ) {
@@ -98,6 +102,7 @@ class SiteStats {
                if ( !self::isSane( $row ) ) {
                        wfDebug( __METHOD__ . ": site_stats persistently nonsensical o_O\n" );
                }
+
                return $row;
        }
 
index dd6aaef..e460cda 100644 (file)
@@ -2123,7 +2123,7 @@ class Title implements LinkTarget {
        private function checkSpecialsAndNSPermissions( $action, $user, $errors, $rigor, $short ) {
                # Only 'createaccount' can be performed on special pages,
                # which don't actually exist in the DB.
-               if ( NS_SPECIAL == $this->mNamespace && $action !== 'createaccount' ) {
+               if ( $this->isSpecialPage() && $action !== 'createaccount' ) {
                        $errors[] = [ 'ns-specialprotected' ];
                }
 
@@ -3426,7 +3426,7 @@ class Title implements LinkTarget {
                $this->mTextform = strtr( $this->mDbkeyform, '_', ' ' );
 
                # We already know that some pages won't be in the database!
-               if ( $this->isExternal() || $this->mNamespace == NS_SPECIAL ) {
+               if ( $this->isExternal() || $this->isSpecialPage() ) {
                        $this->mArticleID = 0;
                }
 
index 5609ad8..599b3de 100644 (file)
@@ -1356,7 +1356,7 @@ class ApiPageSet extends ApiBase {
                        }
                }
                foreach ( $this->mGeneratorData as $ns => $dbkeys ) {
-                       if ( $ns === -1 ) {
+                       if ( $ns === NS_SPECIAL ) {
                                $pages = [];
                                foreach ( $this->mSpecialTitles as $id => $title ) {
                                        $pages[$title->getDBkey()] = $id;
index 4966bcd..ff97668 100644 (file)
@@ -57,7 +57,11 @@ class ApiQueryPagePropNames extends ApiQueryBase {
                }
 
                $limit = $params['limit'];
-               $this->addOption( 'LIMIT', $limit + 1 );
+
+               // mysql has issues with limit in loose index T115825
+               if ( $this->getDB()->getType() !== 'mysql' ) {
+                       $this->addOption( 'LIMIT', $limit + 1 );
+               }
 
                $result = $this->getResult();
                $count = 0;
index f4373ab..93ee3e1 100644 (file)
        "apihelp-userrights-example-userid": "Add the user with ID <kbd>123</kbd> to group <kbd>bot</kbd>, and remove from groups <kbd>sysop</kbd> and <kbd>bureaucrat</kbd>.",
        "apihelp-watch-param-title": "The page to (un)watch. Use <var>$1titles</var> instead.",
        "apihelp-watch-example-unwatch": "Unwatch the page <kbd>Main Page</kbd>.",
-       "apihelp-dbg-description": "Output data in PHP's <code>var_export()</code> format.",
-       "apihelp-dbgfm-description": "Output data in PHP's <code>var_export()</code> format (pretty-print in HTML).",
        "apihelp-php-description": "Output data in serialised PHP format.",
        "apihelp-phpfm-description": "Output data in serialised PHP format (pretty-print in HTML).",
-       "apihelp-txt-description": "Output data in PHP's <code>print_r()</code> format.",
-       "apihelp-txtfm-description": "Output data in PHP's <code>print_r()</code> format (pretty-print in HTML).",
        "api-pageset-param-redirects-generator": "Automatically resolve redirects in <var>$1titles</var>, <var>$1pageids</var>, and <var>$1revids</var>, and in pages returned by <var>$1generator</var>.",
        "api-pageset-param-redirects-nogenerator": "Automatically resolve redirects in <var>$1titles</var>, <var>$1pageids</var>, and <var>$1revids</var>.",
        "api-help-param-multi-separate": "Separate values with <kbd>|</kbd>.",
-       "api-help-param-disabled-in-miser-mode": "Disabled due to [[mw:Manual:$wgMiserMode|miser mode]].",
-       "api-help-param-limited-in-miser-mode": "<strong>Note:</strong> Due to [[mw:Manual:$wgMiserMode|miser mode]], using this may result in fewer than <var>$1limit</var> results returned before continuing; in extreme cases, zero results may be returned."
+       "api-help-param-disabled-in-miser-mode": "Disabled due to [[mw:Special:MyLanguage/Manual:$wgMiserMode|miser mode]].",
+       "api-help-param-limited-in-miser-mode": "<strong>Note:</strong> Due to [[mw:Special:MyLanguage/Manual:$wgMiserMode|miser mode]], using this may result in fewer than <var>$1limit</var> results returned before continuing; in extreme cases, zero results may be returned."
 }
index a2fbb48..0629ee4 100644 (file)
                        "Hamilton Abreu",
                        "Pompilos",
                        "Igv",
-                       "Fortega"
+                       "Fortega",
+                       "Luzcaru"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentación]]\n* [[mw:API:FAQ|Preguntas frecuentes]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de correo]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anuncios de la API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Errores y peticiones]\n</div>\n<strong>Estado:</strong> Todas las características que se muestran en esta página deberían funcionar, pero la API aún se encuentra en desarrollo activo y puede cambiar en cualquier momento. Suscríbete a [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la lista de correo de mediawiki-api-announce] para estar al día de las actualizaciones.\n\n<strong>Solicitudes erróneas:</strong> Cuando se envían solicitudes erróneas a la API, se envía una cabecera HTTP con la clave \"MediaWiki-API-Error\". El valor de la cabecera y el código de error devuelto tomarán el mismo valor. Para más información, véase [[mw:API:Errors_and_warnings|API: Errores y advertencias]].\n\n<strong>Pruebas:</strong> para facilitar las pruebas de solicitudes a la API, consulta [[Special:ApiSandbox]].",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentation]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API Announcements]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bugs & requests]\n</div>\n<strong>Status:</strong> Todas las funciones mostradas en esta página deberían estar funcionando, pero la API aún está en desarrollo activo, y puede cambiar en cualquier momento. Suscribase a [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce mailing list] para aviso de actualizaciones.\n\n<strong>Erroneous requests:</strong> Cuando se envían solicitudes erróneas a la API, se enviará un encabezado HTTP con la clave \"MediaWiki-API-Error\" y, luego, el valor del encabezado y el código de error devuelto se establecerán en el mismo valor. Para más información ver [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Errors and warnings]].\n\n<strong>Testing:</strong> Para facilitar la comprobación de las solicitudes de API, consulte [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Qué acción se realizará.",
        "apihelp-main-param-format": "El formato de la salida.",
-       "apihelp-main-param-maxlag": "El retraso (lag) máximo puede ser utilizado cuando MediaWiki está instalado en un conjunto de bases de datos replicadas. Para evitar cualquier acción que pudiera causar un retraso aún mayor en la replicación del sitio, este parámetro puede causar que el cliente espere hasta que el retraso de replicación sea menor que el valor especificado. En caso de exceso de retraso, se devuelve un código de error <samp>maxlag</samp> con un mensaje similar a <samp>Esperando a $host: $lag segundos de retraso</samp>.<br />Véase [[mw:Manual:Maxlag_parameter|Manual:Parámetro maxlag]] para más información.",
-       "apihelp-main-param-smaxage": "Establece el encabezado HTTP <code>s-maxage</code> de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en caché.",
-       "apihelp-main-param-maxage": "Establece el encabezado HTTP <code>max-age</code> de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en caché.",
+       "apihelp-main-param-maxlag": "El retraso máximo puede utilizarse cuando MediaWiki se instala en un clúster replicado de base de datos. Para guardar las acciones que causan más retardo de replicación de sitio, este parámetro puede hacer que el cliente espere hasta que el retardo de replicación sea menor que el valor especificado. En caso de retraso excesivo, se devuelve el código de error <samp>maxlag</samp> con un mensaje como <samp>Esperando a $host: $lag segundos de retraso</samp>.<br />Consulta [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manual: parámetro Maxlag]] para más información.",
+       "apihelp-main-param-smaxage": "Establece la cabecera HTTP <code>s-maxage</code> de control de antememoria a esta cantidad de segundos. Los errores nunca se almacenan en la antememoria.",
+       "apihelp-main-param-maxage": "Establece la cabecera HTTP <code>max-age</code> de control de antememoria a esta cantidad de segundos. Los errores nunca se almacenan en la antememoria.",
        "apihelp-main-param-assert": "Comprobar que el usuario haya iniciado sesión si el valor es <kbd>user</kbd> o si tiene el permiso de bot si es <kbd>bot</kbd>.",
        "apihelp-main-param-assertuser": "Verificar el usuario actual es el usuario nombrado.",
        "apihelp-main-param-requestid": "Cualquier valor dado aquí se incluirá en la respuesta. Se puede utilizar para distinguir solicitudes.",
@@ -57,7 +58,7 @@
        "apihelp-block-param-autoblock": "Bloquear automáticamente la última dirección IP y todas las direcciones IP que traten de iniciar sesión posteriormente.",
        "apihelp-block-param-noemail": "Evitar que el usuario envíe correos a través de la wiki (es necesario el derecho <code>blockemail</code>).",
        "apihelp-block-param-hidename": "Ocultar el nombre de usuario del registro de bloqueo (es necesario el derecho <coɗe>hideuser</code>).",
-       "apihelp-block-param-allowusertalk": "Permitir que el usuario edite su propia página de discusión (depende de <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
+       "apihelp-block-param-allowusertalk": "Permitir que el usuario edite su propia página de discusión (depende de <var>[[mw:Special:MyLanguage/Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "Si la cuenta ya está bloqueada, sobrescribir el bloqueo existente.",
        "apihelp-block-param-watchuser": "Vigilar las páginas de usuario y de discusión del usuario o de la dirección IP.",
        "apihelp-block-param-tags": "Cambiar las etiquetas que aplicar a la entrada en el registro de bloqueos.",
        "apihelp-delete-param-reason": "Motivo de la eliminación. Si no se especifica, se generará uno automáticamente.",
        "apihelp-delete-param-tags": "Cambio de etiquetas para aplicar a la entrada en la eliminación del registro.",
        "apihelp-delete-param-watch": "Añadir esta página a la lista de seguimiento del usuario actual.",
-       "apihelp-delete-param-watchlist": "Incondicionalmente agregar o remover la página de la lista de seguimiento del usuario actual, usar las preferencias o no cambiar el seguimiento.",
+       "apihelp-delete-param-watchlist": "Añadir o quitar incondicionalmente la página de la lista de seguimiento del usuario actual, usar preferencias o no cambiar el estado de seguimiento.",
        "apihelp-delete-param-unwatch": "Quitar la página de la lista de seguimiento del usuario actual.",
        "apihelp-delete-param-oldimage": "El nombre de la imagen antigua es proporcionado conforme a lo dispuesto por [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]].",
        "apihelp-delete-example-simple": "Borrar <kbd>Main Page</kbd>.",
        "apihelp-edit-example-undo": "Deshacer intervalo de revisiones 13579-13585 con resumen automático",
        "apihelp-emailuser-description": "Enviar un mensaje de correo electrónico a un usuario.",
        "apihelp-emailuser-param-target": "Cuenta de usuario destinatario.",
-       "apihelp-emailuser-param-subject": "Encabezamiento de asunto.",
+       "apihelp-emailuser-param-subject": "Cabecera de asunto.",
        "apihelp-emailuser-param-text": "Cuerpo del mensaje.",
        "apihelp-emailuser-param-ccme": "Enviarme una copia de este mensaje.",
        "apihelp-emailuser-example-email": "Enviar un correo al usuario <kbd>WikiSysop</kbd> con el texto <kbd>Content</kbd>.",
        "apihelp-opensearch-param-search": "Buscar cadena.",
        "apihelp-opensearch-param-limit": "Número máximo de resultados que devolver.",
        "apihelp-opensearch-param-namespace": "Espacio de nombres que buscar.",
-       "apihelp-opensearch-param-suggest": "No hacer nada si <var>[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> es falso.",
+       "apihelp-opensearch-param-suggest": "No hacer nada si <var>[[mw:Special:MyLanguage/Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> es falso.",
        "apihelp-opensearch-param-redirects": "Cómo manejar las redirecciones:\n;return: Volver a la propia redirección.\n;resolve: Volver a la página de destino. Puede devolver menos de $1limit resultados.\nPor motivos históricos, se utiliza \"return\" para $1format=json y \"resolve\" para otros formatos.",
        "apihelp-opensearch-param-format": "El formato de salida.",
        "apihelp-opensearch-param-warningsaserror": "Si las advertencias están planteadas con <kbd>format=json</kbd>, devolver un error de API en lugar de hacer caso omiso de ellas.",
        "apihelp-parse-paramvalue-prop-limitreportdata": "Da el informe del límite de forma estructurada. No da datos si <var>$1disablelimitreport</var> está establecido.",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "Da la versión HTML del informe del límite. No da datos si <var>$1disablelimitreport</var> está establecido.",
        "apihelp-parse-paramvalue-prop-parsetree": "El árbol de análisis sintáctico XML del contenido de la revisión (requiere modelo de contenido <code>$1</code>)",
+       "apihelp-parse-paramvalue-prop-parsewarnings": "Da las advertencias que se produjeron al analizar el contenido.",
        "apihelp-parse-param-pst": "Guardar previamente los cambios antes de transformar la entrada antes de analizarla. Sólo es válido cuando se utiliza con el texto.",
        "apihelp-parse-param-onlypst": "Guardar previamente los cambios antes de transformar (PST) en la entrada. Devuelve el mismo wikitexto, después de que un PST se ha aplicado. Sólo es válido cuando se utiliza con <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Incluye enlaces de idiomas proporcionados por las extensiones (para utilizar con <kbd>$1prop=langlinks</kbd>).",
        "apihelp-purge-param-forcerecursivelinkupdate": "Actualizar la tabla de enlaces y todas las tablas de enlaces de cualquier página que use esta página como una plantilla.",
        "apihelp-purge-example-simple": "Purgar la <kbd>Main Page</kbd> y la página <kbd>API</kbd>.",
        "apihelp-purge-example-generator": "Purgar las 10 primeras páginas del espacio de nombres principal.",
+       "apihelp-query-description": "Obtener datos de y sobre MediaWiki.\n\nTodas las modificaciones de datos tendrán que utilizar primero la consulta para adquirir un token para evitar el abuso desde sitios maliciosos.",
        "apihelp-query-param-prop": "Qué propiedades obtener para las páginas consultadas.",
        "apihelp-query-param-list": "Qué listas obtener.",
        "apihelp-query-param-meta": "Qué metadatos obtener.",
        "apihelp-query-param-exportnowrap": "Devuelve el XML de exportación sin envolverlo en un resultado XML (mismo formato que [[Special:Export]]). Solo se puede usar junto con $1export.",
        "apihelp-query-param-iwurl": "Si la URL completa si el título es un interwiki.",
        "apihelp-query-param-rawcontinue": "Devuelve los datos <samp>query-continue</samp> en bruto para continuar.",
+       "apihelp-query-example-revisions": "Busque [[Special:ApiHelp/query+siteinfo|información del sitio]] y [[Special:ApiHelp/query+revisions|revisiones]] de <kbd>Main Page</kbd>.",
        "apihelp-query-example-allpages": "Obtener revisiones de páginas que comiencen por <kbd>API/</kbd>.",
        "apihelp-query+allcategories-description": "Enumerar todas las categorías.",
        "apihelp-query+allcategories-param-from": "La categoría para comenzar la enumeración",
        "apihelp-query+alldeletedrevisions-param-user": "Listar solo las revisiones de este usuario.",
        "apihelp-query+alldeletedrevisions-param-excludeuser": "No listar las revisiones de este usuario.",
        "apihelp-query+alldeletedrevisions-param-namespace": "Listar solo las páginas en este espacio de nombres.",
-       "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "<strong>Nota:</strong> Debido al [[mw:Manual:$wgMiserMode|modo avaro]], usar juntos <var>$1user</var> y <var>$1namespace</var> puede dar lugar a que se devuelvan menos de <var>$1limit</var> antes de continuar. En casos extremos, podrían devolverse cero resultados.",
+       "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "<strong>Nota:</strong> debido al [[mw:Special:MyLanguage/Manual:$wgMiserMode|modo avaro]], usar juntos <var>$1user</var> y <var>$1namespace</var> puede dar lugar a que se devuelvan menos de <var>$1limit</var> resultados antes de continuar. En casos extremos, podrían devolverse cero resultados.",
        "apihelp-query+alldeletedrevisions-param-generatetitles": "Cuando se utiliza como generador, generar títulos en lugar de identificadores de revisión.",
        "apihelp-query+alldeletedrevisions-example-user": "Listar las últimas 50 contribuciones borradas del usuario <kbd>Example</kbd>.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "Listar las primeras 50 revisiones borradas en el espacio de nombres principal.",
-       "apihelp-query+allfileusages-description": "Listar todos los usos del archivo, incluyendo los que no existen.",
+       "apihelp-query+allfileusages-description": "Enumerar todos los usos del archivo, incluidos los que no existen.",
        "apihelp-query+allfileusages-param-from": "El título del archivo para comenzar la enumeración.",
        "apihelp-query+allfileusages-param-to": "El título del archivo para detener la enumeración.",
        "apihelp-query+allfileusages-param-prefix": "Buscar todos los títulos de los archivos que comiencen con este valor.",
        "apihelp-query+allfileusages-param-unique": "Mostrar solo títulos únicos de archivo. No se puede usar junto con $1prop=ids. Cuando se use como generador, devuelve páginas de destino en vez de páginas de origen.",
        "apihelp-query+allfileusages-param-prop": "Qué piezas de información incluir:",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "Agrega los ID de página de las páginas en uso (no se puede usar con $1unique).",
        "apihelp-query+allfileusages-paramvalue-prop-title": "Agrega el título del archivo.",
        "apihelp-query+allfileusages-param-limit": "Cuántos elementos en total se devolverán.",
        "apihelp-query+allfileusages-param-dir": "La dirección en la que se listará.",
        "apihelp-query+alllinks-param-prefix": "Buscar todos los títulos vinculados que comiencen con este valor.",
        "apihelp-query+alllinks-param-unique": "Mostrar solo títulos únicos enlazados. No se puede usar junto con $1prop=ids. Cuando se use como generador, devuelve páginas de destino en vez de páginas de origen.",
        "apihelp-query+alllinks-param-prop": "Qué piezas de información incluir:",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "Agrega el ID de página de la página de enlace (no se puede usar con <var>$1unique</var>).",
        "apihelp-query+alllinks-paramvalue-prop-title": "Añade el título del enlace.",
        "apihelp-query+alllinks-param-namespace": "El espacio de nombres que enumerar.",
        "apihelp-query+alllinks-param-limit": "Cuántos elementos en total se devolverán.",
        "apihelp-query+allpages-param-limit": "Cuántas páginas en total se devolverán.",
        "apihelp-query+allpages-param-dir": "La dirección en la que se listará.",
        "apihelp-query+allpages-param-filterlanglinks": "Filtrar en función de si una página tiene langlinks. Tenga en cuenta que esto no puede considerar langlinks agregados por extensiones.",
+       "apihelp-query+allpages-param-prexpiry": "¿Cuál término de protección para filtrar la página en:\n; Indefinida: Obtener sólo páginas con protección de vencimiento indefinida.\n; Definida: Obtener sólo las páginas con un definitivo (específico) vencimiento.\n; Todos: Obtener páginas con cualquier caducidad.",
        "apihelp-query+allpages-example-B": "Mostrar una lista de páginas que empiecen con la letra <kbd>B</kbd>.",
        "apihelp-query+allpages-example-generator": "Mostrar información acerca de 4 páginas que empiecen por la letra <kbd>T</kbd>.",
        "apihelp-query+allpages-example-generator-revisions": "Mostrar el contenido de las 2 primeras páginas que no redirijan y empiecen por <kbd>Re</kbd>.",
        "apihelp-query+mystashedfiles-paramvalue-prop-size": "Buscar el tamaño del archivo y las dimensiones de la imagen.",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "Obtener el tipo MIME y tipo multimedia del archivo.",
        "apihelp-query+mystashedfiles-param-limit": "Cuántos archivos obtener.",
+       "apihelp-query+mystashedfiles-example-simple": "Obtenga la clave de archivo, el tamaño del archivo y el tamaño de los archivos en pixeles en el caché de carga del usuario actual.",
        "apihelp-query+alltransclusions-description": "Mostrar todas las transclusiones (páginas integradas mediante &#123;&#123;x&#125;&#125;), incluidas las inexistentes.",
        "apihelp-query+alltransclusions-param-from": "El título de la transclusión por la que empezar la enumeración.",
        "apihelp-query+alltransclusions-param-to": "El título de la transclusión por la que terminar la enumeración.",
        "apihelp-query+alltransclusions-param-prefix": "Buscar todos los títulos transcluidos que comiencen con este valor.",
        "apihelp-query+alltransclusions-param-unique": "Mostrar solo títulos únicos transcluidos. No se puede usar junto con $1prop=ids. Cuando se use como generador, devuelve páginas de destino en vez de páginas de origen.",
        "apihelp-query+alltransclusions-param-prop": "Qué piezas de información incluir:",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "Agrega el ID de página de la página de redirección (no se puede usar con $1unique).",
        "apihelp-query+alltransclusions-paramvalue-prop-title": "Añade el título de la transclusión.",
        "apihelp-query+alltransclusions-param-namespace": "El espacio de nombres que enumerar.",
        "apihelp-query+alltransclusions-param-limit": "Número de elementos que se desea obtener.",
        "apihelp-query+allusers-param-attachedwiki": "Con <kbd>$1prop=centralids</kbd>, indicar también si el usuario está conectado con el wiki identificado por el ID.",
        "apihelp-query+allusers-example-Y": "Listar usuarios que empiecen por <kbd>Y</kbd>.",
        "apihelp-query+authmanagerinfo-description": "Recuperar información sobre el estado de autenticación actual.",
+       "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "Compruebe si el estado de autenticación actual del usuario es suficiente para la operación  sensible-seguridad especificada.",
        "apihelp-query+authmanagerinfo-param-requestsfor": "Obtener información sobre las peticiones de autentificación requeridas para la acción de autentificación especificada.",
        "apihelp-query+authmanagerinfo-example-login": "Captura de las solicitudes que puede ser utilizadas al comienzo de inicio de sesión.",
        "apihelp-query+authmanagerinfo-example-login-merged": "Obtener las peticiones que podrían utilizarse al empezar un inicio de sesión, con los campos de formulario integrados.",
        "apihelp-query+contributors-param-excluderights": "Excluir usuarios con los derechos especificados. No incluye derechos concedidos a grupos implícitos o autopromocionados, como *, usuario o autoconfirmado.",
        "apihelp-query+contributors-param-limit": "Cuántos contribuyentes se devolverán.",
        "apihelp-query+contributors-example-simple": "Mostrar los contribuyentes de la página <kbd>Main Page</kbd>.",
+       "apihelp-query+deletedrevisions-description": "Obtener información de revisión eliminada.\n\nPuede ser utilizada de varias maneras:\n# Obtenga las revisiones eliminadas de un conjunto de páginas, estableciendo títulos o ID de paginas. Ordenadas por título y marca horaria.\n# Obtener datos sobre un conjunto de revisiones eliminadas estableciendo sus ID con identificación de revisión. Ordenado por ID de revisión.",
        "apihelp-query+deletedrevisions-param-start": "Marca de tiempo por la que empezar la enumeración. Se ignora cuando se esté procesando una lista de ID de revisión.",
        "apihelp-query+deletedrevisions-param-end": "Marca de tiempo por la que terminar la enumeración. Se ignora cuando se esté procesando una lista de ID de revisión.",
        "apihelp-query+deletedrevisions-param-tag": "Listar solo las revisiones con esta etiqueta.",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "Añade el nombre de archivo de la versión archivada para las versiones que no son las últimas.",
        "apihelp-query+filearchive-example-simple": "Mostrar una lista de todos los archivos eliminados.",
        "apihelp-query+filerepoinfo-description": "Devuelve metainformación sobre los repositorios de imágenes configurados en el wiki.",
+       "apihelp-query+filerepoinfo-param-prop": "Propiedades del repositorio a obtener (puede haber más disponibles en algunos wikis):\n;apiurl:URL del repositorio API - útil para obtener información de imagen del servidor.\n;name:La clave del repositorio - usado in e.g. <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> y [[Special:ApiHelp/query+imageinfo|imageinfo]] devuelve valores.\n;displayname:El nombre legible del repositorio  wiki.\n;rooturl:Raíz URL para rutas de  imágenes.\n;local:Si ese repositorio es local o no.",
        "apihelp-query+filerepoinfo-example-simple": "Obtener información acerca de los repositorios de archivos.",
        "apihelp-query+fileusage-description": "Encontrar todas las páginas que utilizan los archivos dados.",
        "apihelp-query+fileusage-param-prop": "Qué propiedades se obtendrán:",
        "apihelp-query+imageinfo-paramvalue-prop-parsedcomment": "Analizar el comentario de la versión.",
        "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Agrega el título canónico del archivo.",
        "apihelp-query+imageinfo-paramvalue-prop-url": "Devuelve la URL para el archivo y la página de descripción.",
+       "apihelp-query+imageinfo-paramvalue-prop-size": "Agrega el tamaño del archivo en bytes y la altura, el ancho y el número de páginas (si aplica).",
        "apihelp-query+imageinfo-paramvalue-prop-dimensions": "Alias para el tamaño.",
        "apihelp-query+imageinfo-paramvalue-prop-sha1": "Añade el hash SHA-1 para la imagen.",
        "apihelp-query+imageinfo-paramvalue-prop-mime": "Añade el tipo MIME del archivo.",
        "apihelp-query+imageinfo-paramvalue-prop-extmetadata": "Enumera metadatos con formato combinados de múltiples fuentes. Los resultados están en formato HTML.",
        "apihelp-query+imageinfo-paramvalue-prop-archivename": "Añade el nombre del archivo de la versión archivada para las versiones anteriores a la última.",
        "apihelp-query+imageinfo-paramvalue-prop-bitdepth": "Añade la profundidad de bits de la versión.",
+       "apihelp-query+imageinfo-paramvalue-prop-uploadwarning": "Usado por la página de Carga Especial para obtener información sobre un archivo existente. No está diseñado para ser utilizado fuera del núcleo MediaWiki.",
+       "apihelp-query+imageinfo-paramvalue-prop-badfile": "Añade si el archivo está en la [[MediaWiki:Bad image list]]",
        "apihelp-query+imageinfo-param-limit": "Cuántos revisiones de archivos se devolverán por perfil.",
        "apihelp-query+imageinfo-param-start": "Marca de tiempo por la que empezar la enumeración.",
        "apihelp-query+imageinfo-param-end": "Marca de tiempo por la que terminar la enumeración.",
+       "apihelp-query+imageinfo-param-urlwidth": "Si se establece $2prop=url, se devolverá una URL a una imagen escalada a este ancho.\nPor razones de rendimiento, si se utiliza esta opción, no se devolverán más de $1 imágenes escaladas.",
        "apihelp-query+imageinfo-param-urlheight": "Similar a $1urlwidth.",
        "apihelp-query+imageinfo-param-metadataversion": "Versión de los metadatos que se utilizará. Si se especifica <kbd>latest</kbd>, utilizará la última versión. El valor predeterminado es <kbd>1</kbd>, por motivo de retrocompatibilidad.",
+       "apihelp-query+imageinfo-param-extmetadatalanguage": "¿Qué idioma buscar  en extmetadata. Esto afecta a qué traducción buscar, si hay varias disponibles, así como la forma en que cosas como números y varios valores son formateados.",
+       "apihelp-query+imageinfo-param-extmetadatamultilang": "Si las traducciones para la propiedad extmetadata están disponibles, busque todas ellas.",
        "apihelp-query+imageinfo-param-extmetadatafilter": "Si se especifica y no vacío, sólo estas claves serán devueltos por $1prop=extmetadata.",
        "apihelp-query+imageinfo-param-urlparam": "Un controlador específico de la cadena de parámetro. Por ejemplo, los archivos Pdf pueden utilizar <kbd>page15-100px</kbd>. <var>$1urlwidth</var> debe ser utilizado y debe ser consistente con <var>$1urlparam</var>.",
+       "apihelp-query+imageinfo-param-badfilecontexttitle": "Si <kbd>$2prop=badfile</kbd> está establecido, este es el título de la página utilizado al evaluar la [[MediaWiki:Bad image list]]",
        "apihelp-query+imageinfo-param-localonly": "Buscar solo archivos en el repositorio local.",
        "apihelp-query+imageinfo-example-simple": "Obtener información sobre la versión actual de [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageinfo-example-dated": "Obtener información sobre las versiones de [[:File:Test.jpg]] a partir de 2008.",
        "apihelp-query+info-param-prop": "Qué propiedades adicionales se obtendrán:",
        "apihelp-query+info-paramvalue-prop-protection": "Listar el nivel de protección de cada página.",
        "apihelp-query+info-paramvalue-prop-talkid": "El identificador de la página de discusión correspondiente a cada página que no es de discusión.",
+       "apihelp-query+info-paramvalue-prop-watched": "Muestra el estado de seguimiento de cada página.",
+       "apihelp-query+info-paramvalue-prop-watchers": "El número de observadores, si se permite.",
+       "apihelp-query+info-paramvalue-prop-visitingwatchers": "El número de observadores de cada página que ha visitado ediciones recientes a esa página, si se permite.",
+       "apihelp-query+info-paramvalue-prop-notificationtimestamp": "La hora de notificación de la lista de seguimiento de cada página.",
        "apihelp-query+info-paramvalue-prop-subjectid": "La ID de página de la página principal de cada página de discusión.",
        "apihelp-query+info-paramvalue-prop-url": "Muestra una URL completa, una URL de edición y la URL canónica de cada página.",
        "apihelp-query+info-paramvalue-prop-readable": "Si el usuario puede leer esta página.",
        "apihelp-query+iwbacklinks-example-simple": "Obtener las páginas enlazadas a [[wikibooks:Test]]",
        "apihelp-query+iwbacklinks-example-generator": "Obtener información sobre las páginas que enlacen a [[wikibooks:Test]].",
        "apihelp-query+iwlinks-description": "Devuelve todos los enlaces interwiki de las páginas dadas.",
+       "apihelp-query+iwlinks-param-url": "Si desea obtener la URL completa (no se puede usar con $1prop).",
        "apihelp-query+iwlinks-param-prop": "Qué propiedades adicionales obtener para cada enlace interlingüe:",
        "apihelp-query+iwlinks-paramvalue-prop-url": "Añade el URL completo.",
        "apihelp-query+iwlinks-param-limit": "Cuántos enlaces interwiki se desea devolver.",
        "apihelp-query+iwlinks-param-prefix": "Devolver únicamente enlaces interwiki con este prefijo.",
+       "apihelp-query+iwlinks-param-title": "El enlace Interwiki para buscar. Debe utilizarse con <var>$1prefix </var>.",
        "apihelp-query+iwlinks-param-dir": "La dirección en que ordenar la lista.",
        "apihelp-query+iwlinks-example-simple": "Obtener los enlaces interwiki de la página <kbd>Main Page</kbd>.",
+       "apihelp-query+langbacklinks-description": "Encuentra todas las páginas que conectan con el enlace de idioma dado.\n\nPuede utilizarse para encontrar todos los enlaces con un código de idioma, o todos los enlaces a un título (con un idioma dado). El uso de ninguno de los parámetros es efectivamente \"todos los enlaces de idioma\".\n\nTenga en cuenta que esto no puede considerar los enlaces de idiomas agregados por extensiones.",
        "apihelp-query+langbacklinks-param-lang": "Idioma del enlace de idioma.",
+       "apihelp-query+langbacklinks-param-title": "Enlace de idioma para buscar. Debe utilizarse con $1lang.",
        "apihelp-query+langbacklinks-param-limit": "Cuántas páginas en total se devolverán.",
        "apihelp-query+langbacklinks-param-prop": "Qué propiedades se obtendrán:",
        "apihelp-query+langbacklinks-paramvalue-prop-lllang": "Agrega el código de idioma del enlace de idioma.",
        "apihelp-query+links-param-titles": "Devolver solo los enlaces a estos títulos. Útil para comprobar si una determinada página enlaza a un determinado título.",
        "apihelp-query+links-param-dir": "La dirección en que ordenar la lista.",
        "apihelp-query+links-example-simple": "Obtener los enlaces de la página <kbd>Main Page</kbd>",
+       "apihelp-query+links-example-generator": "Obtenga información sobre las páginas de enlace en la página <kbd>Página principal</kbd>.",
        "apihelp-query+links-example-namespaces": "Obtener enlaces de la página <kbd>Main Page</kbd> de los espacios de nombres {{ns:user}} and {{ns:template}}.",
        "apihelp-query+linkshere-description": "Buscar todas las páginas que enlazan a las páginas dadas.",
        "apihelp-query+linkshere-param-prop": "Qué propiedades se obtendrán:",
        "apihelp-query+pageswithprop-param-dir": "Dirección en la que se desea ordenar.",
        "apihelp-query+pageswithprop-example-simple": "Listar las 10 primeras páginas que utilicen <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+pageswithprop-example-generator": "Obtener información adicional acerca de las 10 primeras páginas que utilicen <code>_&#95;NOTOC_&#95;</code>.",
+       "apihelp-query+prefixsearch-description": "Realice una búsqueda de prefijo de títulos de página.\n\nA pesar de la similitud en los nombres, este módulo no pretende ser equivalente a [[Special:PrefixIndex]]; para eso, vea <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> con el parámetro <kbd> apprefix</kbd>. El propósito de este módulo es similar a <kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd>: para tomar la entrada del usuario y proporcionar los mejores títulos coincidentes. Dependiendo del motor de búsqueda backend, esto puede incluir la corrección de errores, redirigir la evasión, u otras heurísticas.",
        "apihelp-query+prefixsearch-param-search": "Buscar cadena.",
        "apihelp-query+prefixsearch-param-namespace": "Espacio de nombres que buscar.",
        "apihelp-query+prefixsearch-param-limit": "Número máximo de resultados que devolver.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "Agrega el nivel de protección.",
        "apihelp-query+protectedtitles-example-simple": "Listar títulos protegidos.",
        "apihelp-query+protectedtitles-example-generator": "Encuentra enlaces a títulos protegidos en el espacio de nombres principal.",
-       "apihelp-query+querypage-param-page": "El nombre de la página especial. Recuerda, es sensible a mayúsculas y minúsculas.",
+       "apihelp-query+querypage-description": "Obtenga una lista proporcionada por una página especial basada en QueryPage.",
+       "apihelp-query+querypage-param-page": "El nombre de la página especial. Recuerda, distingue mayúsculas y minúsculas.",
        "apihelp-query+querypage-param-limit": "Número de resultados que se devolverán.",
        "apihelp-query+querypage-example-ancientpages": "Devolver resultados de [[Special:Ancientpages]].",
        "apihelp-query+random-description": "Obtener un conjunto de páginas aleatorias.\n\nLas páginas aparecen enumeradas en una secuencia fija, solo que el punto de partida es aleatorio. Esto quiere decir que, si, por ejemplo, <samp>Portada</samp> es la primera página aleatoria de la lista, <samp>Lista de monos ficticios</samp> <em>siempre</em> será la segunda, <samp>Lista de personas en sellos de Vanuatu</samp> la tercera, etc.",
        "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Etiqueta ediciones verificables como verificadas o no verificadas.",
        "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Añade información de registro (identificador de registro, tipo de registro, etc.) a las entradas de registro.",
        "apihelp-query+recentchanges-paramvalue-prop-tags": "Muestra las etiquetas de la entrada.",
+       "apihelp-query+recentchanges-paramvalue-prop-sha1": "Añade la suma de comprobación de contenido para las entradas asociadas a una revisión.",
        "apihelp-query+recentchanges-param-token": "Usa <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> en su lugar.",
        "apihelp-query+recentchanges-param-show": "Muestra solo los elementos que cumplan estos criterios. Por ejemplo, para ver solo ediciones menores realizadas por usuarios conectados, introduce $1show=minor|!anon.",
        "apihelp-query+recentchanges-param-limit": "Cuántos cambios en total se devolverán.",
        "apihelp-query+redirects-paramvalue-prop-fragment": "Fragmento de cada redirección, si los hubiere.",
        "apihelp-query+redirects-param-namespace": "Incluir solo páginas de estos espacios de nombres.",
        "apihelp-query+redirects-param-limit": "Cuántas redirecciones se devolverán.",
+       "apihelp-query+redirects-param-show": "Mostrar únicamente los elementos que cumplan con estos criterios:\n;fragment: mostrar solo redirecciones con fragmento.\n;!fragment: mostrar solo redirecciones sin fragmento.",
        "apihelp-query+redirects-example-simple": "Mostrar una lista de las redirecciones a la [[Main Page|Portada]]",
        "apihelp-query+redirects-example-generator": "Obtener información sobre todas las redirecciones a la [[Main Page|Portada]].",
+       "apihelp-query+revisions-description": "Obtener información de la revisión.\n\nPuede ser utilizado de varias maneras:\n# Obtener datos sobre un conjunto de páginas (última revisión), estableciendo títulos o ID de paginas.\n# Obtener revisiones para una página determinada, usando títulos o ID de páginas con inicio, fin o límite.\n# Obtener datos sobre un conjunto de revisiones estableciendo sus ID con revids.",
        "apihelp-query+revisions-paraminfo-singlepageonly": "Solo se puede usar con una sola página (modo n.º 2).",
        "apihelp-query+revisions-param-startid": "Identificador de revisión a partir del cual empezar la enumeración.",
        "apihelp-query+revisions-param-endid": "Identificador de revisión en el que detener la enumeración.",
        "apihelp-query+siteinfo-paramvalue-prop-restrictions": "Devuelve información sobre tipos de restricciones (protección) disponible.",
        "apihelp-query+siteinfo-paramvalue-prop-languages": "Devuelve una lista de los idiomas que admite MediaWiki (opcionalmente localizada mediante el uso de <var>$1inlanguagecode</var>).",
        "apihelp-query+siteinfo-paramvalue-prop-skins": "Devuelve una lista de todos las apariencias habilitadas (opcionalmente localizada mediante el uso de <var>$1inlanguagecode</var>, de lo contrario en el idioma del contenido).",
+       "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "Devuelve una lista de las etiquetas extensoras del analizador.",
        "apihelp-query+siteinfo-paramvalue-prop-variables": "Devuelve una lista de identificadores variables.",
        "apihelp-query+siteinfo-paramvalue-prop-protocols": "Devuelve una lista de los protocolos que se permiten en los enlaces externos.",
        "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "Devuelve los valores predeterminados de las preferencias del usuario.",
        "apihelp-query+usercontribs-paramvalue-prop-flags": "Añade las marcas de la edición.",
        "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Etiqueta ediciones verificadas.",
        "apihelp-query+usercontribs-paramvalue-prop-tags": "Lista las etiquetas para la edición.",
-       "apihelp-query+usercontribs-param-show": "Mostrar solo los elementos que coinciden con estos criterios. Por ejemplo, solo ediciones no menores: <kbd>$2show=!minor</kbd>.\n\nSi se establece <kbd>$2show=patrolled</kbd> o <kbd>$2show=!patrolled</kbd>, las revisiones más antiguas que <var>[[mw:Manual:$wgRCMaxAge|$wgRCMaxAge]]</var> ($1 {{PLURAL:$1|segundo|segundos}}) no se mostrarán.",
+       "apihelp-query+usercontribs-param-show": "Mostrar solo los elementos que coinciden con estos criterios. Por ejemplo, solo ediciones no menores: <kbd>$2show=!minor</kbd>.\n\nSi se establece <kbd>$2show=patrolled</kbd> o <kbd>$2show=!patrolled</kbd>, no se mostrarán las revisiones con una antigüedad mayor que <var>[[mw:Special:MyLanguage/Manual:$wgRCMaxAge|$wgRCMaxAge]]</var> ($1 {{PLURAL:$1|segundo|segundos}}).",
        "apihelp-query+usercontribs-param-tag": "Enumerar solo las revisiones con esta etiqueta.",
        "apihelp-query+usercontribs-param-toponly": "Enumerar solo las modificaciones que sean las últimas revisiones.",
        "apihelp-query+usercontribs-example-user": "Mostrar contribuciones del usuario <kbd>Example</kbd>.",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Etiqueta si el usuario está bloqueado, por quién y por qué motivo.",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Añade una etiqueta <samp>messages</samp> si el usuario actual tiene mensajes pendientes.",
        "apihelp-query+userinfo-paramvalue-prop-groups": "Lista todos los grupos al que pertenece el usuario actual.",
+       "apihelp-query+userinfo-paramvalue-prop-groupmemberships": "Enumera los grupos a los que se ha asignado explícitamente al usuario actual, incluida la fecha de expiración de la pertenencia a cada grupo.",
        "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Enumera todos los grupos a los que pertenece automáticamente el usuario actual.",
        "apihelp-query+userinfo-paramvalue-prop-rights": "Lista todos los permisos que tiene el usuario actual.",
        "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Enumera los grupos a los que el usuario actual se puede unir o retirar.",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "Fijar la marca de tiempo de notificación de <kbd>Main page</kbd> para que todas las ediciones posteriores al 1 de enero de 2012 estén consideradas como no vistas.",
        "apihelp-setnotificationtimestamp-example-allpages": "Restablecer el estado de notificación de las páginas del espacio de nombres <kbd>{{ns:user}}</kbd>.",
        "apihelp-setpagelanguage-description": "Cambiar el idioma de una página.",
-       "apihelp-setpagelanguage-description-disabled": "En este wiki no se permite modificar el idioma de las páginas.\n\nActiva <var>[[mw:Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> para utilizar esta acción.",
+       "apihelp-setpagelanguage-description-disabled": "En este wiki no se permite modificar el idioma de las páginas.\n\nActiva <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> para utilizar esta acción.",
        "apihelp-setpagelanguage-param-title": "Título de la página cuyo idioma deseas cambiar. No se puede usar junto con <var>$1pageid</var>.",
        "apihelp-setpagelanguage-param-pageid": "Identificador de la página cuyo idioma deseas cambiar. No se puede usar junto con <var>$1title</var>.",
        "apihelp-setpagelanguage-param-lang": "Código del idioma al que se desea cambiar la página. Usa <kbd>default</kbd> para restablecer la página al idioma predeterminado para el contenido del wiki.",
        "apihelp-xml-param-includexmlnamespace": "Si se especifica, añade un espacio de nombres XML.",
        "apihelp-xmlfm-description": "Producir los datos de salida en formato XML (con resaltado sintáctico en HTML).",
        "api-format-title": "Resultado de la API de MediaWiki",
-       "api-format-prettyprint-header": "Esta es la representación en HTML del formato $1. HTML es adecuado para realizar tareas de depuración, pero no para utilizarlo en aplicaciones.\n\nUtiliza el parámetro <var>format</var> para modificar el formato de salida. Para ver la representación no HTML del formato $1, emplea <kbd>format=$2</kbd>.\n\nPara obtener más información, consulta la [[mw:API|documentación completa]] o la [[Special:ApiHelp/main|ayuda de API]].",
-       "api-format-prettyprint-header-only-html": "Esta es una representación en HTML destinada a la depuración, y no es adecuada para el uso de la aplicación.\n\nVéase la [[mw:API|documentación completa]] o la [[Special:ApiHelp/main|página de ayuda de la API]] para más información.",
+       "api-format-prettyprint-header": "Esta es la representación en HTML del formato $1. HTML es adecuado para realizar tareas de depuración, pero no para utilizarlo en aplicaciones.\n\nUtiliza el parámetro <var>format</var> para modificar el formato de salida. Para ver la representación no HTML del formato $1, emplea <kbd>format=$2</kbd>.\n\nPara obtener más información, consulta la [[mw:Special:MyLanguage/API|documentación completa]] o la [[Special:ApiHelp/main|ayuda de API]].",
+       "api-format-prettyprint-header-only-html": "Esta es una representación en HTML destinada a la depuración, y no es adecuada para el uso de la aplicación.\n\nVéase la [[mw:Special:MyLanguage/API|documentación completa]] o la [[Special:ApiHelp/main|página de ayuda de la API]] para más información.",
        "api-format-prettyprint-status": "Esta respuesta se devolvería con el estado HTTP $1 $2.",
        "api-pageset-param-titles": "Una lista de títulos en los que trabajar.",
        "api-pageset-param-pageids": "Una lista de identificadores de páginas en las que trabajar.",
        "api-help-param-multi-all": "Para especificar todos los valores, utiliza <kbd>$1</kbd>.",
        "api-help-param-default": "Predeterminado: $1",
        "api-help-param-default-empty": "Predeterminado: <span class=\"apihelp-empty\">(vacío)</span>",
-       "api-help-param-disabled-in-miser-mode": "Deshabilitado debido al [[mw:Manual:$wgMiserMode|modo avaro]].",
-       "api-help-param-limited-in-miser-mode": "<strong>Nota:</strong> Debido al [[mw:Manual:$wgMiserMode|modo avaro]], usar esto puede dar lugar a que se devuelvan menos de <var>$1limit</var> antes de continuar. En casos extremos, podrían devolverse cero resultados.",
+       "api-help-param-disabled-in-miser-mode": "Deshabilitado debido al [[mw:Special:MyLanguage/Manual:$wgMiserMode|modo avaro]].",
+       "api-help-param-limited-in-miser-mode": "strong>Nota:</strong> Debido al [[mw:Special:MyLanguage/Manual:$wgMiserMode|modo avaro]], usar esto puede dar lugar a que se devuelvan menos de <var>$1limit</var> antes de continuar. En casos extremos, podrían devolverse cero resultados.",
        "api-help-param-direction": "En qué sentido hacer la enumeración:\n;newer: De más antiguos a más recientes. Nota: $1start debe ser anterior a $1end.\n;older: De más recientes a más antiguos (orden predefinido). Nota: $1start debe ser posterior a $1end.",
        "api-help-param-continue": "Cuando haya más resultados disponibles, utiliza esto para continuar.",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(sin descripción)</span>",
        "apierror-changeauth-norequest": "No se ha podido crear la petición de modificación.",
        "apierror-compare-inputneeded": "Se necesita un título, un identificador de página o un número de revisión tanto para el parámetro <var>from</var> como para el parámetro <var>to</var>.",
        "apierror-contentserializationexception": "La serialización de contenido falló: $1",
-       "apierror-contenttoobig": "El contenido que has suministrado supera el tamaño máximo de archivo de $1 {{PLURAL:$1|kilobytes|kilobytes}}.",
+       "apierror-contenttoobig": "El contenido que has suministrado supera el tamaño máximo de archivo de $1 {{PLURAL:$1|kilobyte|kilobytes}}.",
+       "apierror-copyuploadbaddomain": "No se permite realizar cargas a partir de este dominio.",
+       "apierror-copyuploadbadurl": "No se permite realizar cargas a partir de este URL.",
        "apierror-create-titleexists": "Los títulos existentes no se pueden proteger con <kbd>create</kbd>.",
        "apierror-csp-report": "Error de procesamiento del informe CSP: $1.",
        "apierror-databaseerror": "[$1] Error en la consulta de la base de datos.",
        "apierror-revisions-norevids": "El parámetro <var>revids</var> no se puede utilizar junto con las opciones de lista (<var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var> y <var>$1end</var>).",
        "apierror-revisions-singlepage": "Se utilizó <var>titles</var>, <var>pageids</var> o un generador para proporcionar múltiples páginas, pero los parámetros <var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var> y <var>$1end</var> solo se pueden utilizar en una sola página.",
        "apierror-revwrongpage": "r$1 no es una revisión de $2.",
+       "apierror-searchdisabled": "Se ha desactivado la búsqueda de «<var>$1</var>».",
        "apierror-sectionreplacefailed": "No se ha podido combinar la sección actualizada.",
        "apierror-sectionsnotsupported": "Las secciones no son compatibles con el modelo de contenido $1.",
        "apierror-sectionsnotsupported-what": "Las secciones no son compatibles con $1.",
index 4c028b2..3a47b63 100644 (file)
        "apihelp-query+langlinks-paramvalue-prop-autonym": "Ajoute le nom natif de la langue.",
        "apihelp-query+langlinks-param-lang": "Renvoyer uniquement les liens interlangue avec ce code de langue.",
        "apihelp-query+langlinks-param-title": "Lien à rechercher. Doit être utilisé avec <var>$1lang</var>.",
-       "apihelp-query+langlinks-param-dir": "La direction dans laquelle énumérer.",
+       "apihelp-query+langlinks-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+langlinks-param-inlanguagecode": "Code de langue pour les noms de langue localisés.",
        "apihelp-query+langlinks-example-simple": "Obtenir les liens interlangue de la page <kbd>Main Page</kbd>.",
        "apihelp-query+links-description": "Renvoie tous les liens des pages fournies.",
        "apihelp-query+tags-paramvalue-prop-defined": "Indique si la balise est définie.",
        "apihelp-query+tags-paramvalue-prop-source": "Retourne les sources de la balise, ce qui comprend <samp>extension</samp> pour les balises définies par une extension et <samp>manual</samp> pour les balises pouvant être appliquées manuellement par les utilisateurs.",
        "apihelp-query+tags-paramvalue-prop-active": "Si la balise est encore appliquée.",
-       "apihelp-query+tags-example-simple": "Lister les balises disponibles",
+       "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 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-simple": "Obtenir les modèles utilisés sur la page <kbd>Accueil</kbd>.",
+       "apihelp-query+templates-example-simple": "Obtenir les modèles utilisés sur la page <kbd>Main Page</kbd>.",
        "apihelp-query+templates-example-generator": "Obtenir des informations sur les pages modèle utilisé sur <kbd>Main Page</kbd>.",
-       "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+templates-example-namespaces": "Obtenir les pages des espaces de noms {{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+usercontribs-param-user": "Utilisateurs pour lesquels il faut récupérer les contributions.   Ne peut pas être utilisé avec <var>$1userid</var> ou <var>$1userprefix</var>.",
        "apihelp-query+usercontribs-param-userprefix": "Récupérer les contributions pour tous les utilisateurs dont les noms commencent par cette valeur. Ne peut pas être utilisé avec <var>$1user</var> ou <var>$1userids</var>.",
        "apihelp-query+usercontribs-param-userids": "Utilisateurs pour lesquels il faut récupérer les contributions.   Ne peut pas être utilisé avec <var>$1user</var> ou <var>$1userprefix</var>.",
-       "apihelp-query+usercontribs-param-namespace": "Lister uniquement les contributions dans ces espaces de nom.",
+       "apihelp-query+usercontribs-param-namespace": "Lister uniquement les contributions dans ces espaces de noms.",
        "apihelp-query+usercontribs-param-prop": "Inclure des informations supplémentaires:",
        "apihelp-query+usercontribs-paramvalue-prop-ids": "Ajoute l’ID de page et l’ID de révision.",
        "apihelp-query+usercontribs-paramvalue-prop-title": "Ajoute le titre et l’ID d’espace de noms de la page.",
        "apihelp-query+userinfo-paramvalue-prop-centralids": "Ajoute les IDs centraux et l’état d’attachement de l’utilisateur.",
        "apihelp-query+userinfo-param-attachedwiki": "Avec <kbd>$1prop=centralids</kbd>, indiquer si l’utilisateur est attaché au wiki identifié par cet ID.",
        "apihelp-query+userinfo-example-simple": "Obtenir des informations sur l’utilisateur actuel.",
-       "apihelp-query+userinfo-example-data": "Obtenir des informations supplémentaires sur l’utilisateur actuel",
+       "apihelp-query+userinfo-example-data": "Obtenir des informations supplémentaires sur l’utilisateur actuel.",
        "apihelp-query+users-description": "Obtenir des informations sur une liste d’utilisateurs",
        "apihelp-query+users-param-prop": "Quelles informations inclure :",
        "apihelp-query+users-paramvalue-prop-blockinfo": "Marque si l’utilisateur est bloqué, par qui, et pour quelle raison.",
        "apihelp-query+users-paramvalue-prop-centralids": "Ajoute les IDs centraux et l’état d’attachement de l’utilisateur.",
        "apihelp-query+users-paramvalue-prop-cancreate": "Indique si un compte peut être créé pour les noms d’utilisateurs valides mais non enregistrés.",
        "apihelp-query+users-param-attachedwiki": "Avec <kbd>$1prop=centralids</kbd>, indiquer si l’utilisateur est attaché au wiki identifié par cet ID.",
-       "apihelp-query+users-param-users": "Une liste des utilisateurs sur lesquels obtenir de l’information.",
+       "apihelp-query+users-param-users": "Une liste d'utilisateurs pour lesquels obtenir des l’informations.",
        "apihelp-query+users-param-userids": "Une liste d’ID utilisateur pour lesquels obtenir des informations.",
-       "apihelp-query+users-param-token": "Utiliser plutôt <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-query+users-param-token": "Utiliser <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> à la place.",
        "apihelp-query+users-example-simple": "Renvoyer des informations pour l'utilisateur <kbd>Example</kbd>.",
-       "apihelp-query+watchlist-description": "Obtenir les modifications récentes des pages dans la liste de suivi de l’utilisateur actuel.",
+       "apihelp-query+watchlist-description": "Obtenir les modifications récentes des pages de la liste de suivi de l’utilisateur actuel.",
        "apihelp-query+watchlist-param-allrev": "Inclure les multiples révisions de la même page dans l’intervalle de temps fourni.",
        "apihelp-query+watchlist-param-start": "L’horodatage auquel démarrer l’énumération.",
        "apihelp-query+watchlist-param-end": "L’horodatage auquel arrêter l’énumération.",
        "apihelp-query+watchlist-param-excludeuser": "Ne pas lister les modifications faites par cet utilisateur.",
        "apihelp-query+watchlist-param-limit": "Combien de résultats au total renvoyer par demande.",
        "apihelp-query+watchlist-param-prop": "Quelles propriétés supplémentaires obtenir :",
-       "apihelp-query+watchlist-paramvalue-prop-ids": "Ajoute les IDs de révision et de page",
+       "apihelp-query+watchlist-paramvalue-prop-ids": "Ajoute les IDs de révision et de page.",
        "apihelp-query+watchlist-paramvalue-prop-title": "Ajoute le titre de la page.",
        "apihelp-query+watchlist-paramvalue-prop-flags": "Ajoute les marqueurs de la modification.",
        "apihelp-query+watchlist-paramvalue-prop-user": "Ajoute l’utilisateur ayant fait la modification.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "Ajoute l’information de trace le cas échéant.",
        "apihelp-query+watchlist-param-show": "Afficher uniquement les éléments qui correspondent à ces critères. Par exemple, pour voir uniquement les modifications mineures faites par des utilisateurs connectés, mettre $1show=minor|!anon.",
        "apihelp-query+watchlist-param-type": "Quels types de modification afficher :",
-       "apihelp-query+watchlist-paramvalue-type-edit": "Modifications normales de page",
+       "apihelp-query+watchlist-paramvalue-type-edit": "Modifications normales de page.",
        "apihelp-query+watchlist-paramvalue-type-external": "Modifications externes.",
        "apihelp-query+watchlist-paramvalue-type-new": "Créations de pages.",
        "apihelp-query+watchlist-paramvalue-type-log": "Entrées du journal.",
        "apihelp-query+watchlist-paramvalue-type-categorize": "Modifications d’appartenance aux catégories.",
        "apihelp-query+watchlist-param-owner": "Utilisé avec $1token pour accéder à la liste de suivi d’un autre utilisateur.",
-       "apihelp-query+watchlist-param-token": "Un jeton de sécurité (disponible dans les [[Special:Preferences#mw-prefsection-watchlist|préférences]] de l’utilsiateur) pour autoriser l’accès à la liste de suivi d&un autre utilisateur.",
+       "apihelp-query+watchlist-param-token": "Un jeton de sécurité (disponible dans les [[Special:Preferences#mw-prefsection-watchlist|préférences]] de l’utilsateur) pour autoriser l’accès à la liste de suivi d'un autre utilisateur.",
        "apihelp-query+watchlist-example-simple": "Lister la révision de tête des pages récemment modifiées dans la liste de suivi de l’utilisateur actuel.",
        "apihelp-query+watchlist-example-props": "Chercher des informations supplémentaires sur la révision de tête des pages récemment modifiées de la liste de suivi de l’utilisateur actuel.",
        "apihelp-query+watchlist-example-allrev": "Chercher les informations sur toutes les modifications récentes des pages de la liste de suivi de l’utilisateur actuel",
        "apihelp-query+watchlist-example-generator-rev": "Chercher l’information de la révision pour les modifications récentes des pages de la liste de suivi de l’utilisateur actuel.",
        "apihelp-query+watchlist-example-wlowner": "Lister la révision de tête des pages récemment modifiées de la liste de suivi de l'utilisateur <kbd>Exemple</kbd>.",
        "apihelp-query+watchlistraw-description": "Obtenir toutes les pages de la liste de suivi de l’utilisateur actuel.",
-       "apihelp-query+watchlistraw-param-namespace": "Lister uniquement les pages dans les espaces de nom fournis.",
+       "apihelp-query+watchlistraw-param-namespace": "Lister uniquement les pages dans les espaces de noms fournis.",
        "apihelp-query+watchlistraw-param-limit": "Combien de résultats renvoyer au total par requête.",
        "apihelp-query+watchlistraw-param-prop": "Quelles propriétés supplémentaires obtenir :",
        "apihelp-query+watchlistraw-paramvalue-prop-changed": "Ajoute l’horodatage de la dernière notification de l’utilisateur à propos de la modification.",
        "apihelp-revisiondelete-param-suppress": "S’il faut supprimer les données aux administrateurs comme aux autres.",
        "apihelp-revisiondelete-param-reason": "Motif de suppression ou d’annulation de suppression.",
        "apihelp-revisiondelete-param-tags": "Balises à appliquer à l’entrée dans le journal de suppression.",
-       "apihelp-revisiondelete-example-revision": "Masquer le contenu de la révision <kbd>12345</kbd> de la page <kbd>Main Page</kbd>",
+       "apihelp-revisiondelete-example-revision": "Masquer le contenu de la révision <kbd>12345</kbd> de la page <kbd>Main Page</kbd>.",
        "apihelp-revisiondelete-example-log": "Masquer toutes les données de l’entrée de journal <kbd>67890</kbd> avec le motif <kbd>Violation de Biographie de Personne Vivante</kbd>.",
        "apihelp-rollback-description": "Annuler la dernière modification de la page.\n\nSi le dernier utilisateur à avoir modifié la page a fait plusieurs modifications sur une ligne, elles seront toutes annulées.",
        "apihelp-rollback-param-title": "Titre de la page à restaurer. Impossible à utiliser avec <var>$1pageid</var>.",
        "apihelp-rollback-param-summary": "Personnaliser le résumé de la modification. S’il est vide, le résumé par défaut sera utilisé.",
        "apihelp-rollback-param-markbot": "Marquer les modifications annulées et les modifications annulées comme robot.",
        "apihelp-rollback-param-watchlist": "Ajouter ou supprimer la page de la liste de suivi de l’utilisateur actuel sans condition, utiliser les préférences ou ne pas modifier le suivi.",
-       "apihelp-rollback-example-simple": "Annuler les dernières modifications à [<kbd>Main Page</kbd> par l’utilisateur <kbd>Exemple</kbd>.",
+       "apihelp-rollback-example-simple": "Annuler les dernières modifications à <kbd>Main Page</kbd> par l’utilisateur <kbd>Example</kbd>.",
        "apihelp-rollback-example-summary": "Annuler les dernières modifications de la page <kbd>Main Page</kbd> par l’utilisateur à l’adresse IP <kbd>192.0.2.5</kbd> avec le résumé <kbd>Annulation de vandalisme<kbd>, et marquer ces modifications et l’annulation comme modifications de robots.",
        "apihelp-rsd-description": "Exporter un schéma RSD (Découverte Très Simple).",
        "apihelp-rsd-example-simple": "Exporter le schéma RSD",
        "apihelp-stashedit-param-summary": "Résumé du changement",
        "apihelp-tag-description": "Ajouter ou enlever des balises de modification aux révisions ou ou aux entrées de journal individuelles.",
        "apihelp-tag-param-rcid": "Un ou plus IDs de modification récente à partir desquels ajouter ou supprimer la balise.",
-       "apihelp-tag-param-revid": "Un ou plus IDs de révision à partir desquels ajouter ou supprimer la balise.",
-       "apihelp-tag-param-logid": "Un ou plus IDs d’entrée de journal à partir desquels ajouter ou supprimer la balise.",
+       "apihelp-tag-param-revid": "Un ou plusieurs IDs de révision à partir desquels ajouter ou supprimer la balise.",
+       "apihelp-tag-param-logid": "Un ou plusieurs IDs d’entrée de journal à partir desquels ajouter ou supprimer la balise.",
        "apihelp-tag-param-add": "Balises à ajouter. Seules les balises définies manuellement peuvent être ajoutées.",
        "apihelp-tag-param-remove": "Balises à supprimer. Seules les balises qui sont soit définies manuellement soit pas du tout définies peuvent être supprimées.",
        "apihelp-tag-param-reason": "Motif de la modification.",
index 493184c..9f8bf47 100644 (file)
        "apierror-nosuchuserid": "Non hai ningún usuario con identificador $1.",
        "apierror-notarget": "Non indicou un destino válido para esta acción.",
        "apierror-notpatrollable": "A revisión r$1 non pode patrullarse por ser demasiado antiga.",
+       "apierror-nouploadmodule": "Non se definiu un módulo de carga.",
        "apierror-opensearch-json-warnings": "Non se poden representar os avisos en formato JSON de OpenSearch.",
        "apierror-pagecannotexist": "O espazo de nomes non permite as páxinas actuais.",
        "apierror-pagedeleted": "A páxina foi borrada dende que obtivo o selo de tempo.",
        "apiwarn-badurlparam": "Non se puido analizar <var>$1urlparam</var> para $2. Só se usará a anchura e a altura.",
        "apiwarn-badutf8": "O valor pasado para <var>$1</var> contén datos non válidos ou non normalizados. Os datos de texto deberían estar en formato Unicode válido, normalizado en NFC e sen caracteres de control C0 distintos de HT (\\t), LF (\\n) e CR (\\r).",
        "apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> quedou obsoleto. No seu lugar, utilice <kbd>prop=deletedrevisions</kbd> ou <kbd>list=alldeletedrevisions</kbd>.",
+       "apiwarn-deprecation-expandtemplates-prop": "Como non se especificou ningún valor para o parámetro <var>prop</var>, utilizouse un formato herdado para a saída. Este formato está en desuso e, no futuro, o parámetro <var>prop</var> terá un valor predeterminado, de forma que sempre se utilizará o formato novo.",
        "apiwarn-deprecation-httpsexpected": "Utilizouse HTTP cando esperábase HTTPS.",
+       "apiwarn-deprecation-login-botpw": "O inicio de sesión coa conta principal mediante <kbd>action=login</kbd> está en desuso e pode deixar de funcionar sen aviso previo. Para proseguir o inicio de sesión mediante <kbd>action=login</kbd>, consulte [[Special:BotPasswords]]. Para proseguir o inicio de sesión coa conta principal de forma segura, consulte <kbd>action=clientlogin</kbd>.",
+       "apiwarn-deprecation-login-nobotpw": "O inicio de sesión coa conta principal mediante <kbd>action=login</kbd> está en desuso e pode deixar de funcionar sen aviso previo. Para iniciar sesión de forma segura, consulte <kbd>action=clientlogin</kbd>.",
        "apiwarn-deprecation-parameter": "O parámetro <var>$1</var> está obsoleto.",
+       "apiwarn-deprecation-parse-headitems": "<kbd>prop=headitems</kbd> está en desuso desde MediaWiki 1.28. Use <kbd>prop=headhtml</kbd> cando cree novos documentos HTML, ou <kbd>prop=módulos|jsconfigvars</kbd> cando actualice un documento no lado do cliente.",
        "apiwarn-deprecation-purge-get": "O uso de <kbd>action=purge</kbd> mediante GET está obsoleto. Use POST no seu lugar.",
        "apiwarn-deprecation-withreplacement": "<kbd>$1</kbd> está obsoleto. No seu lugar, utilice <kbd>$2</kbd>.",
+       "apiwarn-difftohidden": "Imposible facer un diff con r$1: o contido está oculto.",
        "apiwarn-invalidcategory": "\"$1\" non é unha categoría.",
        "apiwarn-invalidtitle": "\"$1\" non é un título válido.",
        "apiwarn-invalidxmlstylesheetext": "As follas de estilo deben ter a extensión <code>.xsl</code>.",
        "apiwarn-wgDebugAPI": "<strong>Aviso de seguridade</strong>: <var>$wgDebugAPI</var> está habilitado.",
        "api-feed-error-title": "Erro ($1)",
        "api-usage-docref": "Consulte $1 para ver o uso da API.",
+       "api-usage-mailinglist-ref": "Subscribirse á lista de correo mediawiki-api-announce en &lt;https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce&gt;  para obter avisos de obsolescencia da API ou de modificacións importantes.",
        "api-exception-trace": "$1 en $2($3)\n$4",
        "api-credits-header": "Créditos",
        "api-credits": "Desenvolvedores da API:\n* Roan Kattouw (desenvolvedor principal, set. 2007-2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (creador e desenvolvedor principal, set. 2006-sep. 2007)\n* Brad Jorsch (desenvolvedor principal, 2013-actualidade)\n\nEnvía comentarios, suxerencias e preguntas a mediawiki-api@lists.wikimedia.org\nou informa dun erro en https://phabricator.wikimedia.org/."
index d2f595d..21987fd 100644 (file)
        "apihelp-xml-param-includexmlnamespace": "指定すると、XML 名前空間を追加します。",
        "apihelp-xmlfm-description": "データを XML 形式 (HTML に埋め込んだ形式) で出力します。",
        "api-format-title": "MediaWiki API の結果",
-       "api-format-prettyprint-header": "このページは $1 形式を HTML で表現したものです。HTML はデバッグに役立ちますが、アプリケーションでの使用には適していません。\n\n<var>format</var> パラメーターを指定すると出力形式を変更できます 。$1 形式の非 HTML 版を閲覧するには、format=$2 を設定してください。\n\n詳細情報については [[mw:API|完全な説明文書]]または [[Special:ApiHelp/main|API のヘルプ]]を参照してください。",
+       "api-format-prettyprint-header": "このページは $1 形式を HTML で表現したものです。HTML はデバッグに役立ちますが、アプリケーションでの使用には適していません。\n\n<var>format</var> パラメーターを指定すると出力形式を変更できます 。$1 形式の非 HTML 版を閲覧するには、format=$2 を設定してください。\n\n詳細情報については [[mw:Special:MyLanguage/API|完全な説明文書]]または [[Special:ApiHelp/main|API のヘルプ]]を参照してください。",
        "api-pageset-param-titles": "対象のページ名のリスト。",
        "api-pageset-param-pageids": "対象のページIDのリスト。",
        "api-pageset-param-revids": "対象の版IDのリスト。",
        "api-help-param-default-empty": "既定値: <span class=\"apihelp-empty\">(空)</span>",
        "api-help-param-token": "[[Special:ApiHelp/query+tokens|action=query&meta=tokens]] から取得した「$1」トークン",
        "api-help-param-token-webui": "互換性のために、ウェブUIで使用されるトークンも受理されます。",
-       "api-help-param-limited-in-miser-mode": "<strong>注意:</strong> [[mw:Manual:$wgMiserMode|miser mode]] により、これを使用すると継続する前に <var>$1limit</var> より返される結果が少なくなることがあります; 極端な場合では、ゼロ件の結果が返ることもあります。",
+       "api-help-param-limited-in-miser-mode": "<strong>注意:</strong> [[mw:Special:MyLanguage/Manual:$wgMiserMode|miser mode]] により、これを使用すると継続する前に <var>$1limit</var> より返される結果が少なくなることがあります; 極端な場合では、ゼロ件の結果が返ることもあります。",
        "api-help-param-direction": "列挙の方向:\n;newer:古いものを先に表示します。注意: $1start は $1end 以前でなければなりません。\n;older:新しいものを先に表示します (既定)。注意: $1start は $1end 以降でなければなりません。",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(説明なし)</span>",
        "api-help-examples": "{{PLURAL:$1|例}}:",
index 7136774..e937a3e 100644 (file)
                        "Ykhwong",
                        "Jonghaya",
                        "Jerrykim306",
-                       "코코아"
+                       "코코아",
+                       "Macofe"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|설명문서]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 메일링 리스트]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API 알림 사항]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 버그 및 요청]\n</div>\n<strong>상태:</strong> 이 페이지에 보이는 모든 기능은 정상적으로 작동하지만, API는 여전히 활발하게 개발되고 있으며, 언제든지 변경될 수 있습니다. 업데이트 공지를 받아보려면 [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mediawiki-api-announce 메일링 리스트]를 구독하십시오.\n\n<strong>잘못된 요청:</strong> API에 잘못된 요청이 전송되면 \"MediaWiki-API-Error\" 키가 포함된 HTTP 헤더가 전송되며 반환되는 헤더와 오류 코드의 값은 모두 동일한 값으로 설정됩니다. 자세한 정보에 대해서는 [[mw:Special:MyLanguage/API:Errors and warnings/ko|API:오류와 경고]]를 참조하십시오.\n\n<strong>테스트하기:</strong> API 요청 테스트를 용이하게 하려면, [[Special:ApiSandbox]]를 보십시오.",
        "apihelp-main-param-action": "수행할 동작",
        "apihelp-main-param-format": "출력값의 형식.",
-       "apihelp-main-param-maxlag": "최대 랙은 미디어위키가 데이터베이스 복제된 클러스터에 설치되었을 때 사용될 수 있습니다. 특정한 행동이 사이트 복제 랙을 유발할 때, 이 변수는 클라이언트가 복제 랙이 설정된 숫자 아래로 내려갈 때까지 기다리도록 지시합니다. 과도한 랙의 경우, <samp>maxlag</samp> 오류 코드와 <samp>Waiting for $host: $lag seconds lagged</samp> 메시지가 제공됩니다.<br />[[mw:Manual:Maxlag_parameter|매뉴얼: Maxlag 변수]] 에서 더 많은 정보를 얻을 수 있습니다.",
+       "apihelp-main-param-maxlag": "최대 랙은 미디어위키가 데이터베이스 복제된 클러스터에 설치되었을 때 사용될 수 있습니다. 특정한 행동이 사이트 복제 랙을 유발할 때, 이 변수는 클라이언트가 복제 랙이 설정된 숫자 아래로 내려갈 때까지 기다리도록 지시합니다. 과도한 랙의 경우, <samp>maxlag</samp> 오류 코드와 <samp>$host 대기 중: $lag초 지연되었습니다</samp> 메시지가 제공됩니다.<br />[[mw:Special:MyLanguage/Manual:Maxlag_parameter|매뉴얼: Maxlag 변수]]에서 더 많은 정보를 얻을 수 있습니다.",
        "apihelp-main-param-smaxage": "<code>s-maxage</code> HTTP 캐시 컨트롤 헤더를 설정합니다. 오류는 캐시되지 않습니다.",
        "apihelp-main-param-maxage": "<code>max-age</code> HTTP 캐시 컨트롤 헤더를 설정합니다. 오류는 캐시되지 않습니다.",
        "apihelp-main-param-assert": "<kbd>user</kbd> 플래그가 설정되어 있다면 로그인 여부를 체크하며, <kbd>bot</kbd>  플래그가 설정되어 있다면 봇 사용자 권한이 설정되어 있는지 확인합니다.",
@@ -91,6 +92,7 @@
        "apihelp-delete-param-pageid": "삭제할 문서의 ID. <var>$1title</var>과 함께 사용할 수 없습니다.",
        "apihelp-delete-param-reason": "삭제의 이유. 설정하지 않으면 자동 생성되는 이유를 사용합니다.",
        "apihelp-delete-param-watch": "문서를 현재 사용자의 주시문서 목록에 추가합니다.",
+       "apihelp-delete-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
        "apihelp-delete-param-unwatch": "문서를 현재 사용자의 주시문서 목록에서 제거합니다.",
        "apihelp-delete-example-simple": "<kbd>Main Page</kbd>를 삭제합니다.",
        "apihelp-delete-example-reason": "<kbd>Preparing for move</kbd> 라는 이유로 <kbd>Main Page</kbd>를 삭제하기.",
        "apihelp-edit-param-nocreate": "페이지가 존재하지 않으면 오류를 출력합니다.",
        "apihelp-edit-param-watch": "문서를 현재 사용자의 주시문서 목록에 추가합니다.",
        "apihelp-edit-param-unwatch": "문서를 현재 사용자의 주시문서 목록에서 제거합니다.",
+       "apihelp-edit-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
        "apihelp-edit-param-redirect": "자동으로 넘겨주기 처리하기.",
        "apihelp-edit-param-contentmodel": "새 콘텐츠의 콘텐츠 모델.",
        "apihelp-edit-example-edit": "문서 편집",
        "apihelp-move-param-noredirect": "넘겨주기 문서 만들지 않기",
        "apihelp-move-param-watch": "현재 사용자의 주시 문서에 이 문서와 넘겨주기 문서를 추가하기",
        "apihelp-move-param-unwatch": "현재 사용자의 주시 문서에 이 문서와 넘겨주기 문서를 제거하기",
+       "apihelp-move-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
        "apihelp-move-param-ignorewarnings": "모든 경고 무시하기",
        "apihelp-move-example-move": "<kbd>기존 제목</kbd>에서 <kbd>대상 제목</kbd>으로 넘겨주기를 만들지 않고 이동하기.",
        "apihelp-opensearch-description": "OpenSearch 프로토콜을 이용하여 위키 검색하기",
        "apihelp-patrol-example-revid": "판을 점검합니다.",
        "apihelp-protect-description": "문서의 보호 수준을 변경합니다.",
        "apihelp-protect-param-reason": "보호 또는 보호 해제의 이유.",
+       "apihelp-protect-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
        "apihelp-protect-example-protect": "문서 보호",
        "apihelp-purge-description": "주어진 제목을 위한 캐시를 새로 고침.",
        "apihelp-purge-param-forcelinkupdate": "링크 테이블을 업데이트합니다.",
        "apihelp-revisiondelete-description": "판을 삭제하거나 되살립니다.",
        "apihelp-revisiondelete-param-reason": "삭제 또는 복구 이유.",
        "apihelp-rollback-param-tags": "되돌리기를 적용하기 위해 태그합니다.",
+       "apihelp-rollback-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
        "apihelp-rollback-example-simple": "<kbd>Project:대문</kbd> 문서의 <kbd>예시</kbd>의 마지막 판을 되돌리기",
        "apihelp-setpagelanguage-description": "문서의 언어를 변경합니다.",
-       "apihelp-setpagelanguage-description-disabled": "이 위키에서 문서의 언어 변경은 허용되지 않습니다.\n\n이 동작을 사용하려면 <var>[[mw:Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var>을 활성화하십시오.",
+       "apihelp-setpagelanguage-description-disabled": "이 위키에서 문서의 언어 변경은 허용되지 않습니다.\n\n이 동작을 사용하려면 <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var>을 활성화하십시오.",
        "apihelp-setpagelanguage-param-reason": "변경 이유.",
        "apihelp-setpagelanguage-example-language": "<kbd>Main Page</kbd>의 언어를 바스크어로 변경합니다.",
        "apihelp-stashedit-param-sectiontitle": "새 문단을 위한 제목.",
        "apihelp-stashedit-param-text": "문서 내용.",
        "apihelp-stashedit-param-contentmodel": "새 콘텐츠의 콘텐츠 모델.",
        "apihelp-tag-param-reason": "변경 이유.",
+       "apihelp-tokens-description": "데이터 수정 작업을 위해 토큰을 가져옵니다.\n\n이 모듈은 [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]의 선호에 따라 사용이 권장되지 않습니다.",
        "apihelp-tokens-param-type": "요청할 토큰의 종류.",
+       "apihelp-tokens-example-edit": "편집 토큰을 검색합니다. (기본값)",
+       "apihelp-tokens-example-emailmove": "편집 토큰과 이동 토큰을 검색합니다.",
        "apihelp-unblock-description": "사용자를 차단 해제합니다.",
+       "apihelp-unblock-param-id": "차단을 해제할 차단 ID입니다. (<kbd>list=blocks</kbd>를 통해 가져옴) <var>$1user</var> 또는 <var>$1userid</var>와 함께 사용할 수 없습니다.",
        "apihelp-unblock-param-user": "차단을 해제할 사용자 이름, IP 주소, IP 주소 대역입니다. <var>$1id</var> 또는 <var>$1userid</var>와(과) 함께 사용할 수 없습니다.",
        "apihelp-unblock-param-userid": "차단을 해제할 사용자 ID입니다. <var>$1id</var> 또는 <var>$1user</var>와(과) 함께 사용할 수 없습니다.",
        "apihelp-unblock-param-reason": "차단 해제 이유.",
        "apihelp-unblock-param-tags": "차단 기록의 항목에 적용할 태그를 변경합니다.",
+       "apihelp-unblock-example-id": "차단 ID #<kbd>105</kbd>의 차단을 해제합니다.",
+       "apihelp-unblock-example-user": "<kbd>Sorry Bob</kbd>이 이유인 <kbd>Bob</kbd> 사용자의 차단을 해제합니다.",
+       "apihelp-undelete-description": "삭제된 문서의 판을 복구합니다.\n\n삭제된 판의 목록(타임스탬프 포함)은 [[Special:ApiHelp/query+deletedrevisions|prop=deletedrevisions]]을 통해 검색할 수 있으며 삭제된 파일 ID의 목록은 [[Special:ApiHelp/query+filearchive|list=filearchive]]을 통해 검색할 수 있습니다.",
+       "apihelp-undelete-param-title": "복구할 문서의 제목입니다.",
+       "apihelp-undelete-param-reason": "복구할 이유입니다.",
+       "apihelp-undelete-param-tags": "삭제 기록의 항목에 적용할 태그를 변경합니다.",
+       "apihelp-undelete-param-timestamps": "복구할 판의 타임스탬프입니다. <var>$1timestamps</var>와 <var>$1fileids</var>가 둘 다 비어있으면 모든 판이 복구됩니다.",
+       "apihelp-undelete-param-fileids": "복구할 파일 판의 ID입니다. <var>$1timestamps</var>와 <var>$1fileids</var>가 둘 다 비어있으면 모든 판이 복구됩니다.",
+       "apihelp-undelete-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
+       "apihelp-undelete-example-page": "<kbd>대문</kbd> 문서를 복구합니다.",
+       "apihelp-undelete-example-revisions": "<kbd>대문</kbd> 문서의 두 판을 복구합니다.",
+       "apihelp-unlinkaccount-description": "현재 사용자에 연결된 타사 계정을 제거합니다.",
+       "apihelp-unlinkaccount-example-simple": "<kbd>FooAuthenticationRequest</kbd>와 연결된 제공자에 대한 현재 사용자의 토론 링크 제거를 시도합니다.",
        "apihelp-upload-param-filename": "대상 파일 이름.",
+       "apihelp-upload-param-comment": "업로드 주석입니다. 또, <var>$1text</var>가 지정되지 않은 경우 새로운 파일들의 초기 페이지 텍스트로 사용됩니다.",
+       "apihelp-upload-param-tags": "업로드 기록 항목과 파일 문서 판에 적용할 태그를 변경합니다.",
+       "apihelp-upload-param-text": "새로운 파일들에 대한 초기 문서 텍스트.",
+       "apihelp-upload-param-watch": "문서를 주시합니다.",
+       "apihelp-upload-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
        "apihelp-upload-param-ignorewarnings": "모든 경고를 무시합니다.",
+       "apihelp-upload-param-file": "파일의 내용입니다.",
+       "apihelp-upload-param-url": "파일을 가져올 URL입니다.",
+       "apihelp-upload-param-filekey": "임시로 보관한 이전의 업로드를 식별하는 키입니다.",
+       "apihelp-upload-param-sessionkey": "$1filekey와 동일하며, 하위 호환성을 위해 유지됩니다.",
+       "apihelp-upload-param-stash": "설정하면 서버는 저장소에 파일을 추가하는 대신 임시로 파일을 보관합니다.",
+       "apihelp-upload-param-filesize": "전체 업로드의 파일 크기입니다.",
+       "apihelp-upload-param-offset": "바이트 단위의 청크 오프셋.",
+       "apihelp-upload-param-chunk": "청크의 내용입니다.",
+       "apihelp-upload-param-async": "가능하면 잠재적으로 큰 파일 작업을 비동기로 처리합니다.",
+       "apihelp-upload-param-checkstatus": "제공된 파일 키의 업로드 상태만 가져옵니다.",
+       "apihelp-upload-example-url": "URL에서 업로드합니다.",
+       "apihelp-upload-example-filekey": "경고로 인해 실패한 업로드를 마칩니다.",
+       "apihelp-userrights-description": "사용자의 그룹 권한을 변경합니다.",
        "apihelp-userrights-param-user": "사용자 이름.",
        "apihelp-userrights-param-userid": "사용자 ID.",
+       "apihelp-userrights-param-add": "이 그룹에 사용자를 추가하지만, 이미 회원이라면 해당 그룹의 회원 만료 날짜를 업데이트합니다.",
+       "apihelp-userrights-param-expiry": "만료 타임스탬프입니다. 상대값(예: <kbd>5 months</kbd> 또는 <kbd>2 weeks</kbd>)이거나 절대값(예: <kbd>2014-09-18T12:34:56Z</kbd>)이다. 타임스탬프만 설정할 경우, <var>$1add</var> 변수에 전달되는 모든 그룹에 사용됩니다. 만료되지 않는 사용자 그룹으로 지정하려면 <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd>, 또는 <kbd>never</kbd>를 사용하십시오.",
+       "apihelp-userrights-param-remove": "이 그룹에서 사용자를 제거합니다.",
+       "apihelp-userrights-param-reason": "변경 이유입니다.",
+       "apihelp-userrights-param-tags": "사용자 권한 기록의 항목에 적용할 태그를 변경합니다.",
+       "apihelp-userrights-example-user": "<kbd>FooBot</kbd> 사용자를 <kbd>bot</kbd> 그룹에 추가하며 <kbd>sysop</kbd>과 <kbd>bureaucrat</kbd> 그룹에서 제거합니다.",
+       "apihelp-userrights-example-userid": "ID가 <kbd>123</kbd>인 사용자를 <kbd>bot</kbd> 그룹에 추가하며, <kbd>sysop</kbd>과 <kbd>bureaucrat</kbd> 그룹에서 제거합니다.",
+       "apihelp-userrights-example-expiry": "사용자 <kbd>SometimeSysop</kbd>을 <kbd>sysop</kbd> 그룹에 1개월 간 추가합니다.",
+       "apihelp-validatepassword-description": "위키의 비밀번호 정책에 근간하여 비밀번호를 확인합니다.\n\n비밀번호를 수용할 수 있으면 <samp>Good</samp>으로, 로그인 시 비밀번호를 사용할 수 있지만 변경이 필요한 경우 <samp>Change</samp>로, 비밀번호를 사용할 수 없으면 <samp>Invalid</samp>로 보고됩니다.",
+       "apihelp-validatepassword-param-password": "확인할 비밀번호.",
+       "apihelp-validatepassword-param-user": "계정 생성을 테스트할 때 사용할 사용자 이름입니다. 명명된 사용자는 존재하지 않습니다.",
        "apihelp-validatepassword-param-email": "계정 생성을 테스트할 때 사용할 이메일 주소입니다.",
        "apihelp-validatepassword-param-realname": "계정 생성을 테스트할 때 사용할 실명입니다.",
+       "apihelp-validatepassword-example-1": "현재 사용자에 대해 비밀번호 <kbd>foobar</kbd>를 확인합니다.",
+       "apihelp-validatepassword-example-2": "사용자 <kbd>Example</kbd>를 만들기 위해 비밀번호 <kbd>qwerty</kbd>를 확인합니다.",
+       "apihelp-watch-description": "현재 사용자의 주시목록에서 문서를 추가하거나 제거합니다.",
+       "apihelp-watch-param-title": "주시하거나 주시를 해제할 문서입니다. <var>$1titles</var>를 대신 사용하세요.",
+       "apihelp-watch-param-unwatch": "설정하면 문서의 주시는 해제됩니다.",
+       "apihelp-watch-example-watch": "<kbd>대문</kbd> 문서를 주시합니다.",
+       "apihelp-watch-example-unwatch": "<kbd>대문</kbd> 문서의 주시를 해제합니다.",
+       "apihelp-watch-example-generator": "일반 이름공간의 일부 첫 문서들을 주시합니다.",
        "apihelp-json-description": "데이터를 JSON 형식으로 출력합니다.",
        "apihelp-json-param-formatversion": "출력 형식:\n;1:하위 호환 포맷 (XML 스타일 불린, 콘텐츠 노드를 위한 <samp>*</samp> 키 등).\n;2:실험적인 모던 포맷. 상세 내용은 바뀔 수 있습니다!\n;latest:최신 포맷(현재 <kbd>2</kbd>)을 이용하지만 경고 없이 바뀔 수 있습니다.",
        "apihelp-jsonfm-description": "데이터를 JSON 포맷으로 출력합니다. (HTML의 가독성 증가)",
        "api-pageset-param-pageids": "작업할 페이지 ID의 목록입니다.",
        "api-pageset-param-revids": "작업할 판 ID의 목록입니다.",
        "api-pageset-param-generator": "특정 쿼리 모듈을 실행함으로써 작업할 페이지의 목록입니다.\n\n<strong>참고:</strong> 발생기 변수명은 \"g\"로 시작해야 합니다. 예시를 참고하십시오.",
+       "api-pageset-param-redirects-generator": "<var>$1titles</var>, <var>$1pageids</var>, <var>$1revids</var> 및 <var>$1generator</var>가 반환한 문서들의 넘겨주기를 자동으로 결정합니다.",
+       "api-pageset-param-redirects-nogenerator": "<var>$1titles</var>, <var>$1pageids</var>, <var>$1revids</var>의 넘겨주기를 자동으로 결정합니다.",
+       "api-pageset-param-converttitles": "필요하면 제목을 다른 형태로 변환합니다. 위키의 내용 언어가 형태 변환을 지원하는 경우에만 동작합니다. 형태 변환을 지원하는 언어는 $1을(를) 포함합니다.",
        "api-help-title": "미디어위키 API 도움말",
        "api-help-lead": "이 페이지는 자동으로 생성된 미디어위키 API 도움말 문서입니다.\n\n설명 문서 및 예시: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "메인 모듈",
        "api-help-param-type-limit": "유형: 정수 또는 <kbd>max</kbd>",
        "api-help-param-type-integer": "유형: {{PLURAL:$1|1=정수|2=정수 목록}}",
        "api-help-param-type-boolean": "유형: 부울 ([[Special:ApiHelp/main#main/datatypes|자세한 정보]])",
+       "api-help-param-type-timestamp": "유형: {{PLURAL:$1|1=타임스탬프|2=타임스탬프 목록}} ([[Special:ApiHelp/main#main/datatypes|허용되는 포맷]])",
        "api-help-param-type-user": "유형: {{PLURAL:$1|1=사용자 이름|2=사용자 이름 목록}}",
        "api-help-param-list": "{{PLURAL:$1|1=다음 값 중 하나|2=값 (<kbd>{{!}}</kbd>로 구분)}}: $2 또는 [[Special:ApiHelp/main#main/datatypes|alternative]]: $2",
        "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=비어 있어야 함|비어 있을 수 있거나 $2}}",
        "api-help-param-integer-min": "{{PLURAL:$1|1=값|2=값들}}은 $2 이상이어야 합니다.",
        "api-help-param-integer-max": "{{PLURAL:$1|1=값|2=값들}}은 $3 이하여야 합니다.",
        "api-help-param-integer-minmax": "{{PLURAL:$1|1=값|2=값들}}은 $2와 $3 사이여야 합니다.",
+       "api-help-param-upload": "여러 부분/폼 데이터를 사용한 파일 업로드로 게시되어야 합니다.",
        "api-help-param-multi-separate": "<kbd>|</kbd> 또는 [[Special:ApiHelp/main#main/datatypes|대안]]으로 값을 구분합니다.",
        "api-help-param-multi-max": "값들의 최대 수는 {{PLURAL:$1|$1}}입니다. (봇의 경우 {{PLURAL:$2|$2}})",
        "api-help-param-default": "기본값: $1",
index 7db9665..85cab4e 100644 (file)
@@ -1,7 +1,8 @@
 {
        "@metadata": {
                "authors": [
-                       "Purodha"
+                       "Purodha",
+                       "Macofe"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page/de|Dokemäntazjohn]]\n* [[mw:API:FAQ/de|Öff jefrohch]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mäileng_Leß]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Aanköndejonge zom <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Jemäldte Fähler un Wönsch]\n</div>\n<strong>Status:</strong> Alle op heh dä Sigg aanjzeischte Ußwahle sullte donn, ävver et <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> weed jrahd noch äntwekeld un et kann sesch alle Nahslangs jädd ändere. Holl Der de [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ Mäileng_Leß med Aanköndejonge], öm automattesch övver Neujeschkeite enfommehrt ze wähde.\n\n<strong>Kapodde Aanfrohre:</strong> Wam_mer kapodde Aanfroheaan et API <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> schek, kritt mer ene <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Transfer Protocol\">HTTP</i>-Kopp ußjejovve met däm Täx „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">MediaWiki-API-Error</code>“ dren, dä mer als ene Schlößel bedraachte kann. Mih dohzoh fengk met op dä Sigg [[mw:API:Errors_and_warnings|<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>: Fähler un Warnonge]].",
        "apihelp-xml-param-includexmlnamespace": "Wann aanjejovve, deihd en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Extensible Markup Language\">XML</i>-Appachtemand derbei.",
        "apihelp-xmlfm-description": "Donn de Dahte em <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Extensible Markup Language\">XML</i>-Fommahd schöhn jemaht met <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i> ußjävve.",
        "api-format-title": "Wat et <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> ußjohv.",
-       "api-format-prettyprint-header-only-html": "Dat heh es en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i>_Daaschtällong un för et Fähersöhke jedaach. Dadd is för Aanwändongsprojramme nit ze bruche.\n\nEn de [[mw:API|complete Dokkemäntazjohn]] un de [[Special:ApiHelp/main|API Hölp_Sigg]] kam_mer doh mih drövver lässe.",
+       "api-format-prettyprint-header-only-html": "Dat heh es en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i>_Daaschtällong un för et Fähersöhke jedaach. Dadd is för Aanwändongsprojramme nit ze bruche.\n\nEn de [[mw:Special:MyLanguage/API|complete Dokkemäntazjohn]] un de [[Special:ApiHelp/main|API Hölp_Sigg]] kam_mer doh mih drövver lässe.",
        "api-pageset-param-titles": "En Leß vun Övverschreffte för ze beärbeide.",
        "api-pageset-param-pageids": "En Leß vun Kännonge vun Sigge för ze beärbeide.",
        "api-pageset-param-revids": "En Leß vun Kännonge vun Väsjohne för ze beärbeide.",
        "api-help-param-multi-max": "De jrühßte müjjelesche Zahl es {{PLURAL:$1|$1}}, un {{PLURAL:$2|$2}} för Botprojramme.",
        "api-help-param-default": "Schtandatt: $1",
        "api-help-param-default-empty": "Schtandatt: <span class=\"apihelp-empty\">(läddesch)</span>",
-       "api-help-param-disabled-in-miser-mode": "Dadd es wäje em [[mw:Manual:$wgMiserMode|miser mode]] affjeschalldt.",
-       "api-help-param-limited-in-miser-mode": "<strong>Opjepaß:</strong> Weil der [[mw:Manual:$wgMiserMode|miser mode]] enjeschalld es, künne heh winnijer wi <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1limit</var> Äjehpneße ußjejejovve wähde, vör em Wigger_Mache. En Jränzfäll künne et Noll sin.",
+       "api-help-param-disabled-in-miser-mode": "Dadd es wäje em [[mw:Special:MyLanguage/Manual:$wgMiserMode|miser mode]] affjeschalldt.",
+       "api-help-param-limited-in-miser-mode": "<strong>Opjepaß:</strong> Weil der [[mw:Special:MyLanguage/Manual:$wgMiserMode|miser mode]] enjeschalld es, künne heh winnijer wi <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1limit</var> Äjehpneße ußjejejovve wähde, vör em Wigger_Mache. En Jränzfäll künne et Noll sin.",
        "api-help-param-direction": "En wälsche Reihjefollsch opleßte:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">newer</code>:De Ählsde et eez. Opjepaß: „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1start</code>“ moß fröhjer sin wi „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1end</code>“.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">older</code>:De Neuste et eez, der Schtanndatt. Opjepaß: „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1start</code>“ moß schpääder sin wi „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1end</code>“.",
        "api-help-param-continue": "Wann mih ze holle es, nemm dat för wigger ze maache.",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(nix drövver bikannt)</span>",
index 3045332..fa5dd2a 100644 (file)
        "apihelp-xml-param-includexmlnamespace": "Ако е укажано, додава именски простор XML.",
        "apihelp-xmlfm-description": "Давај го изводот во XML-формат (подобрен испис во HTML).",
        "api-format-title": "Исход од Извршникот на МедијаВики",
-       "api-format-prettyprint-header": "Ова е HTML-претстава на форматот $1. HTML е добар за отстранување на грешки, но не е погоден за употреба во извршник.\n\nУкажете го параметарот <var>format</var> за да го смените изводниот формат. За да ги видите претставите на форматот $1 вон HTML, задајте <kbd>format=$2</kbd>.\n\nПовеќе информации ќе најдете на [[mw:API|целосната документација]], или пак [[Special:ApiHelp/main|помош со извршникот]].",
+       "api-format-prettyprint-header": "Ова е HTML-претстава на форматот $1. HTML е добар за отстранување на грешки, но не е погоден за употреба во извршник.\n\nУкажете го параметарот <var>format</var> за да го смените изводниот формат. За да ги видите претставите на форматот $1 вон HTML, задајте <kbd>format=$2</kbd>.\n\nПовеќе информации ќе најдете на [[mw:Special:MyLanguage/API|целосната документација]], или пак [[Special:ApiHelp/main|помош со извршникот]].",
        "api-pageset-param-titles": "Список на наслови на кои ќе се работи",
        "api-pageset-param-pageids": "Список на назнаки за страници на кои ќе се работи",
        "api-pageset-param-revids": "Список на назнаки на преработки на кои ќе се работи",
        "api-help-param-default-empty": "По основно: <span class=\"apihelp-empty\">(празно)</span>",
        "api-help-param-token": "Шифра „$1“ добиена од [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
        "api-help-param-token-webui": "За складност, се прифаќа и шифрата што се користи за обичниот кориснички посредник.",
-       "api-help-param-disabled-in-miser-mode": "Исклучено поради [[mw:Manual:$wgMiserMode|скржавиот режим]].",
-       "api-help-param-limited-in-miser-mode": "<strong>Напомена:</strong> Бидејќи сте во [[mw:Manual:$wgMiserMode|скржав режим]], користејќи го ова може да добиете помалку од <var>$1limit</var> исходни ставки пред да продолжите; во крајни случаи може да не добиете ниедна ставка.",
+       "api-help-param-disabled-in-miser-mode": "Исклучено поради [[mw:Special:MyLanguage/Manual:$wgMiserMode|скржавиот режим]].",
+       "api-help-param-limited-in-miser-mode": "<strong>Напомена:</strong> Бидејќи сте во [[mw:Special:MyLanguage/Manual:$wgMiserMode|скржав режим]], користејќи го ова може да добиете помалку од <var>$1limit</var> исходни ставки пред да продолжите; во крајни случаи може да не добиете ниедна ставка.",
        "api-help-param-direction": "Во која насока да се набројува:\n;понови:Прво најстарите. Напомена: $1start мора да биде пред $1end.\n;постари:Прво најновите (по основно). Напомена: $1start мора да биде подоцна од $1end.",
        "api-help-param-continue": "Употребете го ова за да продолжите кога има повеќе расположиви ставки.",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(нема опис)</span>",
index a5291c7..c4e7f89 100644 (file)
        "api-help-param-deprecated": "Verouderd.",
        "api-help-datatypes-header": "Gegevenstypen",
        "api-help-param-default": "Standaard: $1",
+       "api-help-examples": "{{PLURAL:$1|Voorbeeld|Voorbeelden}}:",
        "apierror-autoblocked": "Uw IP-adres is automatisch geblokeerd, omdat het gebruikt is door een geblokkeerde gebruiker.",
        "apierror-badmodule-nosubmodules": "De module <kbd>$1</kbd> heeft geen submodules.",
        "apierror-blockedfrommail": "U bent geblokkeerd en kunt geen emails verzenden.",
index 87cacb9..6bdaaeb 100644 (file)
                        "Woytecr"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Dokumentacja]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista dyskusyjna]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Ogłoszenia dotyczące API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Błędy i propozycje]\n</div>\n<strong>Stan:</strong> Wszystkie funkcje opisane na tej stronie powinny działać, ale API nadal jest aktywnie rozwijane i mogą się zmienić w dowolnym czasie. Subskrybuj [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ listę dyskusyjną mediawiki-api-announce], aby móc na bieżąco dowiadywać się o aktualizacjach.\n\n<strong>Błędne żądania:</strong> Gdy zostanie wysłane błędne żądanie do API, zostanie wysłany w odpowiedzi nagłówek HTTP z kluczem \"MediaWiki-API-Error\" i zarówno jego wartość jak i wartość kodu błędu wysłanego w odpowiedzi będą miały taką samą wartość. Aby uzyskać więcej informacji, zobacz [[mw:API:Errors_and_warnings|API: Błędy i ostrzeżenia]].\n\n<strong>Testowanie:</strong> Aby łatwo testować żądania API, zobacz [[Special:ApiSandbox]].",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentacja]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista dyskusyjna]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Ogłoszenia dotyczące API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Błędy i propozycje]\n</div>\n<strong>Stan:</strong> Wszystkie funkcje opisane na tej stronie powinny działać, ale API nadal jest aktywnie rozwijane i mogą się zmienić w dowolnym czasie. Subskrybuj [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ listę dyskusyjną mediawiki-api-announce], aby móc na bieżąco dowiadywać się o aktualizacjach.\n\n<strong>Błędne żądania:</strong> Gdy zostanie wysłane błędne żądanie do API, zostanie wysłany w odpowiedzi nagłówek HTTP z kluczem \"MediaWiki-API-Error\" i zarówno jego wartość jak i wartość kodu błędu wysłanego w odpowiedzi będą miały taką samą wartość. Aby uzyskać więcej informacji, zobacz [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Błędy i ostrzeżenia]].\n\n<strong>Testowanie:</strong> Aby łatwo testować żądania API, zobacz [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Wybierz akcję do wykonania.",
        "apihelp-main-param-format": "Format danych wyjściowych.",
-       "apihelp-main-param-maxlag": "Maksymalne opóźnienie mogą być używane kiedy MediaWiki jest zainstalowana w klastrze zreplikowanej bazy danych. By zapisać działania powodujące większe opóźnienie replikacji, ten parametr może wymusić czekanie u klienta, dopóki opóźnienie replikacji jest mniejsze niż określona wartość. W przypadku nadmiernego opóźnienia, kod błędu <samp>maxlag</samp> jest zwracany z wiadomością jak <samp>Oczekiwanie na $host: $lag sekund opóźnienia</samp>.<br />Zobacz [[mw:Manual:Maxlag_parameter|Podręcznik:Parametr Maxlag]] by uzyskać więcej informacji.",
+       "apihelp-main-param-maxlag": "Maksymalne opóźnienie mogą być używane kiedy MediaWiki jest zainstalowana w klastrze zreplikowanej bazy danych. By zapisać działania powodujące większe opóźnienie replikacji, ten parametr może wymusić czekanie u klienta, dopóki opóźnienie replikacji jest mniejsze niż określona wartość. W przypadku nadmiernego opóźnienia, kod błędu <samp>maxlag</samp> jest zwracany z wiadomością jak <samp>Oczekiwanie na $host: $lag sekund opóźnienia</samp>.<br />Zobacz [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Podręcznik:Parametr Maxlag]] by uzyskać więcej informacji.",
        "apihelp-main-param-smaxage": "Ustaw nagłówek HTTP kontrolujący pamięć podręczną <code>s-maxage</code> na taką ilość sekund. Błędy nie będą nigdy przechowywane w pamięci podręcznej.",
        "apihelp-main-param-maxage": "Ustaw nagłówek HTTP kontrolujący pamięć podręczną <code>maxage</code> na taką ilość sekund. Błędy nie będą nigdy przechowywane w pamięci podręcznej.",
        "apihelp-main-param-assert": "Zweryfikuj, czy użytkownik jest zalogowany, jeżeli wybrano <kbd>user</kbd>, lub czy ma uprawnienia bota, jeżeli wybrano <kbd>bot</kbd>.",
        "apihelp-block-param-nocreate": "Zapobiegnij utworzeniu konta.",
        "apihelp-block-param-autoblock": "Zablokuj ostatni adres IP tego użytkownika i automatycznie wszystkie kolejne, z których będzie się logował.",
        "apihelp-block-param-noemail": "Uniemożliwia użytkownikowi wysyłanie wiadomości e-mail za pośrednictwem interfejsu wiki. (Wymagane uprawnienie <code>blockemail</code>).",
-       "apihelp-block-param-hidename": "Ukryj nazwę użytkownika z rejestru blokad. (Wymagane uprawnienia <code>hideuser</code>)",
+       "apihelp-block-param-hidename": "Ukryj nazwę użytkownika z rejestru blokad. (Wymagane uprawnienie <code>hideuser</code>)",
        "apihelp-block-param-allowusertalk": "Pozwala użytkownikowi edytować własną stronę dyskusji (zależy od <var>[[mw:Special:MyLanguage/Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "Jeżeli ten użytkownik jest już zablokowany, nadpisz blokadę.",
-       "apihelp-block-param-watchuser": "Obserwuj stronę użytkownika i jego IP oraz ich strony dyskusji.",
+       "apihelp-block-param-watchuser": "Obserwuj stronę użytkownika lub IP oraz ich strony dyskusji.",
        "apihelp-block-example-ip-simple": "Zablokuj IP <kbd>192.0.2.5</kbd> na 3 dni z powodem <kbd>First strike</kbd>.",
        "apihelp-block-example-user-complex": "Zablokuj użytkownika <kbd>Vandal</kbd> na zawsze z powodem <kbd>Vandalism</kbd> i uniemożliw utworzenie nowego konta oraz wysyłanie emaili.",
        "apihelp-changeauthenticationdata-description": "Zmień dane logowania bieżącego użytkownika.",
        "apihelp-compare-param-torev": "Druga wersja do porównania.",
        "apihelp-createaccount-description": "Utwórz nowe konto.",
        "apihelp-createaccount-param-name": "Nazwa użytkownika",
-       "apihelp-createaccount-param-password": "Hasło (ignorowane jeśli <var>$1mailpassword</var> jest ustawione).",
+       "apihelp-createaccount-param-password": "Hasło (ignorowane jeśli ustawiono <var>$1mailpassword</var>).",
        "apihelp-createaccount-param-domain": "Domena uwierzytelniania zewnętrznego (opcjonalnie).",
        "apihelp-createaccount-param-token": "Token tworzenia konta uzyskany w pierwszym zapytaniu.",
        "apihelp-createaccount-param-email": "Adres email użytkownika (opcjonalne).",
        "apihelp-createaccount-param-realname": "Prawdziwe imię i nazwisko użytkownika (opcjonalne).",
-       "apihelp-createaccount-param-reason": "Opcjionalny powód tworzenia konta (aby został umieszczony w logu).",
+       "apihelp-createaccount-param-reason": "Opcjonalny powód tworzenia konta, który zostanie umieszczony w rejestrze.",
        "apihelp-createaccount-example-pass": "Utwórz użytkownika <kbd>testuser</kbd> z hasłem <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Utwórz użytkownika <kbd>testmailuser</kbd> i wyślij losowo wygenerowane hasło na emaila.",
        "apihelp-delete-description": "Usuń stronę.",
-       "apihelp-delete-param-reason": "Powód usuwania. Jeśli pozostaiwsz to pole puste, zostanie on wygenerowany automatycznie.",
+       "apihelp-delete-param-reason": "Powód usuwania. Jeśli pozostawisz to pole puste, zostanie użyty powód wygenerowany automatycznie.",
        "apihelp-delete-param-watch": "Dodaj stronę do obecnej listy obserwowanych.",
        "apihelp-delete-param-unwatch": "Usuń stronę z obecnej listy obserwowanych.",
        "apihelp-delete-example-simple": "Usuń <kbd>Main Page</kbd>.",
@@ -88,7 +88,7 @@
        "apihelp-edit-param-basetimestamp": "Czas wersji, która jest edytowana. Służy do wykrywania konfliktów edycji. Można pobrać poprzez [[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]].",
        "apihelp-edit-param-starttimestamp": "Czas rozpoczęcia procesu edycji. Służy do wykrywania konfliktów edycji. Odpowiednia wartość może być pobrana za pomocą <var>[[Special:ApiHelp/main|curtimestamp]]</var> podczas rozpoczynania procesu edycji (np. podczas ładowania zawartości strony do edycji).",
        "apihelp-edit-param-recreate": "Ignoruj błędy o usunięciu strony w międzyczasie.",
-       "apihelp-edit-param-createonly": "Nie edytuj strony, jesli już istnieje.",
+       "apihelp-edit-param-createonly": "Nie edytuj strony, jeśli już istnieje.",
        "apihelp-edit-param-nocreate": "Zwróć błąd, jeśli strona nie istnieje.",
        "apihelp-edit-param-watch": "Dodaj stronę do listy obserwowanych bieżącego użytkownika.",
        "apihelp-edit-param-unwatch": "Usuń stronę z listy obserwowanych bieżącego użytkownika.",
        "apihelp-edit-example-edit": "Edytuj stronę.",
        "apihelp-edit-example-prepend": "Dopisz <kbd>_&#95;NOTOC_&#95;</kbd> na początku strony.",
        "apihelp-emailuser-description": "Wyślij e‐mail do użytkownika.",
-       "apihelp-emailuser-param-target": "Użytkownik, do którego wysyłany jest e-mail.",
+       "apihelp-emailuser-param-target": "Użytkownik, do którego wysłać e-mail.",
        "apihelp-emailuser-param-subject": "Nagłówek tematu.",
        "apihelp-emailuser-param-text": "Treść emaila.",
        "apihelp-emailuser-param-ccme": "Wyślij kopię wiadomości do mnie.",
        "apihelp-expandtemplates-param-title": "Tytuł strony.",
        "apihelp-expandtemplates-param-text": "Wikitext do przekonwertowania.",
        "apihelp-expandtemplates-param-revid": "ID wersji, dla <nowiki>{{REVISIONID}}</nowiki> i podobnych zmiennych.",
-       "apihelp-expandtemplates-paramvalue-prop-wikitext": "Rozszerzony wikitext.",
+       "apihelp-expandtemplates-paramvalue-prop-wikitext": "Rozwinięty wikitekst.",
        "apihelp-feedcontributions-description": "Zwraca kanał wkładu użytkownika.",
        "apihelp-feedcontributions-param-feedformat": "Format danych wyjściowych.",
        "apihelp-feedcontributions-param-user": "Jakich użytkowników pobrać wkład.",
        "apihelp-imagerotate-example-generator": "Obróć wszystkie obrazki w <kbd>Kategorii:Flip</kbd> o <kbd>180</kbd> stopni.",
        "apihelp-import-param-summary": "Podsumowanie importu rekordów dziennika.",
        "apihelp-import-param-xml": "Przesłany plik XML.",
-       "apihelp-import-param-interwikisource": "Dla importów mediawiki: źródłowa wiki.",
+       "apihelp-import-param-interwikisource": "Dla importów interwiki: wiki, z której importować.",
        "apihelp-import-param-interwikipage": "Dla importów interwiki: strona do importu.",
        "apihelp-import-param-fullhistory": "Dla importów interwiki: importuj całą historię, a nie tylko obecną wersję.",
-       "apihelp-import-param-templates": "Dla importów mediawiki: importuj też wszystkie użyte szablony.",
+       "apihelp-import-param-templates": "Dla importów interwiki: importuj też wszystkie użyte szablony.",
        "apihelp-import-param-namespace": "Importuj do tej przestrzeni nazw. Nie może być użyte razem z <var>$1rootpage</var>.",
        "apihelp-import-param-rootpage": "Importuj jako podstronę tej strony. Nie może być użyte razem z <var>$1namespace</var>.",
        "apihelp-login-param-name": "Nazwa użytkownika.",
        "apihelp-options-example-complex": "Zresetuj wszystkie preferencje, a następnie ustaw <kbd>skin</kbd> i <kbd>nickname</kbd>.",
        "apihelp-paraminfo-description": "Zdobądź informacje o modułach API.",
        "apihelp-paraminfo-param-modules": "Lista nazw modułów (wartości parametrów <var>action</var> i <var>format</var> lub <kbd>main</kbd>). Można określić podmoduły za pomocą <kbd>+</kbd> lub wszystkie podmoduły, wpisując <kbd>+*</kbd>, lub wszystkie podmoduły rekursywnie <kbd>+**</kbd>.",
-       "apihelp-paraminfo-param-helpformat": "Format tekstów pomocnicznych.",
+       "apihelp-paraminfo-param-helpformat": "Format tekstów pomocy.",
        "apihelp-paraminfo-param-querymodules": "Lista nazw modułów zapytań (wartość parametrów <var>prop</var>, <var>meta</var> lub <var>list</var>). Użyj <kbd>$1modules=query+foo</kbd> zamiast <kbd>$1querymodules=foo</kbd>.",
-       "apihelp-parse-param-summary": "Powód do analizy.",
+       "apihelp-parse-param-summary": "Powód do sparsowania.",
        "apihelp-parse-param-prop": "Jakie porcje informacji otrzymać:",
        "apihelp-parse-paramvalue-prop-text": "Przetworzony tekst z wikitekstu.",
        "apihelp-parse-paramvalue-prop-langlinks": "Linki językowe z przetworzonego wikitekstu.",
        "apihelp-parse-paramvalue-prop-externallinks": "Linki zewnętrzne z przetworzonego wikitekstu.",
        "apihelp-parse-paramvalue-prop-sections": "Sekcje z przetworzonego wikitekstu.",
        "apihelp-parse-paramvalue-prop-displaytitle": "Dodaje tytuł parsowanego wikitekstu.",
-       "apihelp-parse-paramvalue-prop-wikitext": "Zwróć oryginalny wikitext, który został przeanalizowany.",
-       "apihelp-parse-param-preview": "Analizuj w trybie podglądu.",
+       "apihelp-parse-paramvalue-prop-wikitext": "Zwróć oryginalny wikitekst, który został sparsowany.",
+       "apihelp-parse-param-preview": "Parsuj w trybie podglądu.",
        "apihelp-parse-param-disabletoc": "Pomiń spis treści na wyjściu.",
        "apihelp-parse-example-page": "Przeanalizuj stronę.",
-       "apihelp-parse-example-text": "Analizuj wikitext.",
-       "apihelp-parse-example-summary": "Analizuj powód.",
+       "apihelp-parse-example-text": "Parsuj wikitekst.",
+       "apihelp-parse-example-summary": "Parsuj powód.",
        "apihelp-patrol-description": "Sprawdź stronę lub edycję.",
-       "apihelp-patrol-param-rcid": "ID ostatnich zmian do patrolowania.",
+       "apihelp-patrol-param-rcid": "ID z ostatnich zmian do oznaczenia jako sprawdzone.",
        "apihelp-patrol-param-revid": "Numer edycji do sprawdzenia.",
        "apihelp-patrol-example-rcid": "Sprawdź ostatnią zmianę.",
        "apihelp-patrol-example-revid": "Sprawdź edycje.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Uaktualnij tabele linków włącznie z linkami dotyczącymi każdej strony wykorzystywanej jako szablon na tej stronie.",
        "apihelp-purge-example-simple": "Wyczyść strony <kbd>Main Page</kbd> i <kbd>API</kbd>.",
        "apihelp-purge-example-generator": "Przeczyść pierwsze 10 stron w przestrzeni głównej.",
-       "apihelp-query+allcategories-description": "Emuluj wszystkie kategorie.",
+       "apihelp-query+allcategories-description": "Wymień wszystkie kategorie.",
        "apihelp-query+allcategories-param-from": "Kategoria, od której rozpocząć wyliczanie.",
        "apihelp-query+allcategories-param-to": "Kategoria, na której zakończyć wyliczanie.",
        "apihelp-query+allcategories-param-dir": "Kierunek sortowania.",
-       "apihelp-query+allcategories-param-limit": "Liczba kategorii do zwórcenia.",
+       "apihelp-query+allcategories-param-limit": "Liczba kategorii do zwcenia.",
        "apihelp-query+allcategories-param-prop": "Jakie właściwości otrzymać:",
        "apihelp-query+allcategories-paramvalue-prop-size": "Dodaje liczbę stron w kategorii.",
        "apihelp-query+allcategories-paramvalue-prop-hidden": "Oznacza kategorie ukryte za pomocą <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Nie może być używane z <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-param-start": "Znacznik czasu, od którego rozpocząć wyliczanie.",
        "apihelp-query+alldeletedrevisions-param-end": "Znacznik czasu, na którym zakończyć wyliczanie.",
-       "apihelp-query+alldeletedrevisions-param-from": "Zacznij nasłuchiwanie na tym tytule.",
-       "apihelp-query+alldeletedrevisions-param-to": "Skończ nasłuchiwanie na tym tytule.",
+       "apihelp-query+alldeletedrevisions-param-from": "Zacznij listowanie na tym tytule.",
+       "apihelp-query+alldeletedrevisions-param-to": "Skończ listowanie na tym tytule.",
        "apihelp-query+alldeletedrevisions-param-prefix": "Szukaj tytułów stron zaczynających się na tę wartość.",
        "apihelp-query+alldeletedrevisions-param-tag": "Pokazuj tylko zmiany oznaczone tym znacznikiem.",
        "apihelp-query+alldeletedrevisions-param-user": "Pokazuj tylko zmiany dokonane przez tego użytkownika.",
        "apihelp-query+alllinks-param-to": "Nazwa linku, na którym zakończyć wyliczanie.",
        "apihelp-query+alllinks-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+alllinks-paramvalue-prop-title": "Dodaje tytuł linku.",
-       "apihelp-query+alllinks-param-namespace": "Przestrzeń nazw do emulacji.",
+       "apihelp-query+alllinks-param-namespace": "Przestrzeń nazw, z której wymieniać.",
        "apihelp-query+alllinks-param-limit": "Łączna liczba obiektów do zwrócenia.",
        "apihelp-query+alllinks-example-unique": "Lista unikatowych tytułów plików.",
        "apihelp-query+allmessages-param-prop": "Właściwości do odczytu.",
        "apihelp-query+allredirects-param-to": "Nazwa przekierowania, na którym zakończyć wyliczanie.",
        "apihelp-query+allredirects-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+allredirects-paramvalue-prop-title": "Dodaje tytuł przekierowania.",
-       "apihelp-query+allredirects-param-namespace": "Przestrzeń nazw do emulacji.",
+       "apihelp-query+allredirects-param-namespace": "Przestrzeń nazw, z której wymieniać.",
        "apihelp-query+allredirects-param-limit": "Łączna liczba obiektów do zwrócenia.",
        "apihelp-query+allrevisions-description": "Wyświetl wszystkie wersje.",
        "apihelp-query+allrevisions-param-start": "Znacznik czasu, od którego rozpocząć wyliczanie.",
        "apihelp-query+mystashedfiles-param-limit": "Liczba plików do pobrania.",
        "apihelp-query+alltransclusions-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+alltransclusions-paramvalue-prop-title": "Dodaje tytuł osadzenia.",
-       "apihelp-query+alltransclusions-param-namespace": "Przestrzeń nazw do emulacji.",
+       "apihelp-query+alltransclusions-param-namespace": "Przestrzeń nazw, z której wymieniać.",
        "apihelp-query+alltransclusions-param-limit": "Łączna liczba elementów do zwrócenia.",
        "apihelp-query+allusers-param-from": "Nazwa użytkownika, od którego rozpocząć wyliczanie.",
        "apihelp-query+allusers-param-to": "Nazwa użytkownika, na którym zakończyć wyliczanie.",
        "apihelp-query+allusers-param-activeusers": "Wyświetl tylko użytkowników, aktywnych w ciągu {{PLURAL:$1|ostatniego dnia|ostatnich $1 dni}}.",
        "apihelp-query+allusers-example-Y": "Wyświetl użytkowników zaczynających się na <kbd>Y</kbd>.",
        "apihelp-query+backlinks-description": "Znajdź wszystkie strony, które linkują do danej strony.",
-       "apihelp-query+backlinks-param-namespace": "Przestrzeń nazw do emulacji.",
+       "apihelp-query+backlinks-param-namespace": "Przestrzeń nazw, z której wymieniać.",
        "apihelp-query+backlinks-example-simple": "Pokazuj linki do <kbd>Main page</kbd>.",
        "apihelp-query+blocks-description": "Lista wszystkich zablokowanych użytkowników i adresów IP.",
        "apihelp-query+blocks-param-start": "Znacznik czasu, od którego rozpocząć wyliczanie.",
        "apihelp-query+categorymembers-param-limit": "Maksymalna liczba zwracanych wyników.",
        "apihelp-query+categorymembers-param-sort": "Sortowanie według właściwości.",
        "apihelp-query+categorymembers-param-dir": "W jakim kierunku sortować.",
-       "apihelp-query+deletedrevisions-param-tag": "Pokazuj tylko zmiany oznaczone tym tagiem.",
+       "apihelp-query+deletedrevisions-param-tag": "Pokazuj tylko zmiany oznaczone tym znacznikiem.",
        "apihelp-query+deletedrevisions-param-user": "Pokazuj tylko zmiany dokonane przez tego użytkownika.",
        "apihelp-query+deletedrevisions-param-excludeuser": "Nie pokazuj zmian dokonanych przez tego użytkownika.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Tryb|Tryby}}: $2",
        "apihelp-query+deletedrevs-param-start": "Znacznik czasu, od którego rozpocząć wyliczanie.",
        "apihelp-query+deletedrevs-param-end": "Znacznik czasu, na którym zakończyć wyliczanie.",
-       "apihelp-query+deletedrevs-param-unique": "Liatuj tylko jedną edycję dla każdej strony.",
-       "apihelp-query+deletedrevs-param-tag": "Pokazuj tylko zmiany oznaczone tym tagiem.",
+       "apihelp-query+deletedrevs-param-unique": "Listuj tylko jedną edycję dla każdej strony.",
+       "apihelp-query+deletedrevs-param-tag": "Pokazuj tylko zmiany oznaczone tym znacznikiem.",
        "apihelp-query+deletedrevs-param-user": "Listuj tylko zmiany dokonane przez tego użytkownika.",
        "apihelp-query+deletedrevs-param-excludeuser": "Nie listuj zmian dokonanych przez tego użytkownika.",
        "apihelp-query+deletedrevs-param-namespace": "Listuj tylko strony z tej przestrzeni nazw.",
        "apihelp-query+deletedrevs-param-limit": "Maksymalna liczba zmian do wylistowania.",
        "apihelp-query+disabled-description": "Ten moduł zapytań został wyłączony.",
-       "apihelp-query+duplicatefiles-example-generated": "Szukaj duplikatów wszystkich plików.",
-       "apihelp-query+embeddedin-param-filterredir": "Jaki filtrować przekierowania.",
+       "apihelp-query+duplicatefiles-example-generated": "Szukaj duplikatów wśród wszystkich plików.",
+       "apihelp-query+embeddedin-param-filterredir": "Jak filtrować przekierowania.",
        "apihelp-query+embeddedin-param-limit": "Łączna liczba stron do zwrócenia.",
        "apihelp-query+extlinks-param-limit": "Liczba linków do zwrócenia.",
        "apihelp-query+exturlusage-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+imageinfo-description": "Zwraca informacje o pliku i historię przesyłania.",
        "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Dodaje kanoniczny tytuł pliku.",
        "apihelp-query+imageinfo-paramvalue-prop-dimensions": "Alias rozmiaru.",
-       "apihelp-query+imageinfo-paramvalue-prop-sha1": "Dodaj sumę kontrolną SHA-1 dla tego pliku.",
+       "apihelp-query+imageinfo-paramvalue-prop-sha1": "Dołączy sumę kontrolną SHA-1 dla tego pliku.",
        "apihelp-query+imageinfo-paramvalue-prop-mime": "Dodaje typ MIME pliku.",
        "apihelp-query+imageinfo-param-urlheight": "Podobne do $1urlwidth.",
        "apihelp-query+images-param-limit": "Liczba plików do zwrócenia.",
        "apihelp-query+linkshere-paramvalue-prop-title": "Nazwa każdej strony.",
        "apihelp-query+linkshere-paramvalue-prop-redirect": "Oznacz, jeśli strona jest przekierowaniem.",
        "apihelp-query+linkshere-param-limit": "Liczba do zwrócenia.",
-       "apihelp-query+logevents-description": "Pobierz eventy z logu.",
+       "apihelp-query+logevents-description": "Pobierz zdarzenia z rejestru.",
        "apihelp-query+logevents-example-simple": "Lista ostatnich zarejestrowanych zdarzeń.",
        "apihelp-query+pagepropnames-param-limit": "Maksymalna liczba zwracanych nazw.",
        "apihelp-query+pageswithprop-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+protectedtitles-param-namespace": "Listuj tylko strony z tych przestrzeni nazw.",
        "apihelp-query+protectedtitles-param-limit": "Łączna liczba stron do zwrócenia.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "Dodaje poziom zabezpieczeń.",
-       "apihelp-query+protectedtitles-example-simple": "Lista chronionych nagłówków",
+       "apihelp-query+protectedtitles-example-simple": "Wymień zabezpieczone tytuły.",
        "apihelp-query+querypage-param-page": "Nazwa strony specjalnej. Należy pamiętać o wielkości liter.",
        "apihelp-query+querypage-param-limit": "Liczba zwracanych wyników.",
        "apihelp-query+random-param-namespace": "Zwraca strony tylko w tych przestrzeniach nazw.",
        "apihelp-query+random-example-simple": "Zwraca dwie losowe strony z głównej przestrzeni nazw.",
        "apihelp-query+recentchanges-param-user": "Listuj tylko zmiany dokonane przez tego użytkownika.",
        "apihelp-query+recentchanges-param-excludeuser": "Nie listuj zmian dokonanych przez tego użytkownika.",
-       "apihelp-query+recentchanges-param-tag": "Pokazuj tylko zmiany oznaczone tym tagiem.",
+       "apihelp-query+recentchanges-param-tag": "Pokazuj tylko zmiany oznaczone tym znacznikiem.",
        "apihelp-query+recentchanges-paramvalue-prop-comment": "Dodaje komentarz do edycji.",
        "apihelp-query+recentchanges-example-simple": "Lista ostatnich zmian.",
        "apihelp-query+redirects-description": "Zwraca wszystkie przekierowania do danej strony.",
        "apihelp-query+siteinfo-param-numberingroup": "Wyświetla liczbę użytkowników w grupach użytkowników.",
        "apihelp-query+siteinfo-example-simple": "Pobierz informacje o stronie.",
        "apihelp-query+stashimageinfo-param-sessionkey": "Alias dla $1filekey, dla kompatybilności wstecznej.",
-       "apihelp-query+tags-description": "Lista zmian tagów.",
-       "apihelp-query+tags-param-limit": "Maksymalna liczba tagów do wyświetlenia.",
+       "apihelp-query+tags-description": "Lista znaczników zmian.",
+       "apihelp-query+tags-param-limit": "Maksymalna liczba znaczników do wyświetlenia.",
        "apihelp-query+tags-paramvalue-prop-name": "Dodaje nazwę znacznika.",
        "apihelp-query+tags-paramvalue-prop-displayname": "Dodaje komunikat systemowy dla znacznika.",
        "apihelp-query+tags-paramvalue-prop-description": "Dodaje opis znacznika.",
        "apihelp-query+tags-paramvalue-prop-active": "Czy znacznik jest nadal stosowany.",
-       "apihelp-query+tags-example-simple": "Lista dostęnych tagów.",
+       "apihelp-query+tags-example-simple": "Wymień dostępne znaczniki.",
        "apihelp-query+templates-description": "Zwraca wszystkie strony osadzone w danych stronach.",
        "apihelp-query+templates-param-namespace": "Pokaż szablony tylko w tych przestrzeniach nazw.",
        "apihelp-query+templates-param-limit": "Ile szablonów zwrócić?",
        "apihelp-upload-param-file": "Zawartość pliku.",
        "apihelp-userrights-param-user": "Nazwa użytkownika.",
        "apihelp-userrights-param-userid": "Identyfikator użytkownika.",
-       "apihelp-userrights-param-add": "Dodaj użytkownika do tych grup.",
+       "apihelp-userrights-param-add": "Dodaj użytkownika do tych grup, lub, jeżeli jest już ich członkiem, zmień czas wygaśnięcia członkostwa w tych grupach.",
        "apihelp-userrights-param-remove": "Usuń użytkownika z tych grup.",
        "apihelp-userrights-param-reason": "Powód zmiany.",
        "apihelp-validatepassword-param-password": "Hasło do walidacji.",
index d7cc662..a0d2676 100644 (file)
        "apihelp-move-description": "Mover uma página.",
        "apihelp-move-param-from": "Título da página para renomear. Não pode ser usado em conjunto com <var>$1fromid</var>.",
        "apihelp-move-param-fromid": "ID da página a se renomear. Não pode ser usado em conjunto com <var>$1from</var>.",
+       "apihelp-move-param-reason": "Motivo para a alteração do nome.",
        "apihelp-move-param-movetalk": "Renomear a página de discussão, se existir.",
        "apihelp-move-param-movesubpages": "Renomeia subpáginas, se aplicável.",
        "apihelp-move-param-noredirect": "Não cria um redirecionamento.",
        "apihelp-query+allfileusages-param-dir": "A direção na qual listar.",
        "apihelp-query+allfileusages-example-unique": "Listar títulos únicos de arquivos",
        "apihelp-query+allfileusages-example-generator": "Obter as páginas contendo os arquivos",
+       "apihelp-query+allimages-description": "Enumera todas as imagens sequencialmente.",
+       "apihelp-query+allimages-param-sort": "Propriedade pela qual ordenar.",
        "apihelp-query+allimages-param-dir": "A direção de listagem.",
        "apihelp-query+allimages-param-user": "Retorna apenas os arquivos enviados por este usuário. Só pode ser usado com $1sort=timestamp. Não pode ser usado em conjunto com $1filterbots.",
        "apihelp-query+allimages-param-filterbots": "Como filtrar arquivos enviados por bots. Só pode ser usado com $1sort=timestamp. Não pode ser usado em conjunto com $1user.",
        "apihelp-query+alltransclusions-param-limit": "Quantos itens retornar.",
        "apihelp-query+alltransclusions-param-dir": "A direção na qual listar.",
        "apihelp-query+allusers-param-prop": "Que informações incluir:",
+       "apihelp-query+allusers-paramvalue-prop-rights": "Lista os direitos que o usuário possui.",
        "apihelp-query+allusers-param-limit": "Quantos nomes de usuário a serem retornados.",
        "apihelp-query+backlinks-param-title": "Título a se pesquisar. Não pode ser usado em conjunto com <var>$1pageid</var>.",
        "apihelp-query+backlinks-param-pageid": "ID da página a se pesquisar. Não pode ser usado em conjunto com <var>$1title</var>.",
        "apihelp-query+revisions-example-first5-not-localhost": "Mostrar as 5 primeiras revisões do <kbd>Main Page</kbd> que não foram feitas pelo usuário anônimo <kbd>127.0.0.1</kbd>.",
        "apihelp-query+revisions-example-first5-user": "Mostrar as 5 primeiras revisões da <kbd>Main Page</kbd> que foram feitas pelo usuário <kbd>MediaWiki default</kbd>.",
        "apihelp-query+revisions+base-param-prop": "Que propriedades mostrar para cada modificação:",
+       "apihelp-query+revisions+base-paramvalue-prop-ids": "O ID da revisão.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "Texto da revisão.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "Etiquetas para a revisão.",
        "apihelp-query+revisions+base-param-limit": "Limita quantas revisões serão retornadas.",
        "apihelp-query+siteinfo-paramvalue-prop-statistics": "Voltar às estatísticas do site.",
        "apihelp-query+siteinfo-param-numberingroup": "Listar o número de usuários nos grupos de usuário.",
        "apihelp-query+siteinfo-example-simple": "Obter informação do site.",
+       "apihelp-query+tags-param-limit": "O número máximo de tags a serem listadas.",
        "apihelp-query+tags-param-prop": "Quais propriedades obter:",
        "apihelp-query+templates-param-limit": "Quantas predefinições retornar.",
        "apihelp-query+templates-param-dir": "A direção na qual listar.",
        "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-default": "Padrão: $1",
+       "api-help-param-default-empty": "Padrão: <span class=\"apihelp-empty\">(vazio)</span>",
        "apierror-badurl": "Valor \"$2\" não é válido para o parâmetro <var>$1</var> da URL.",
        "apierror-cantblock-email": "Você não tem permissão para impedir que os usuários enviem e-mails através da wiki.",
        "apierror-cantblock": "Você não tem permissão para bloquear usuários.",
        "apierror-canthide": "Você não tem permissão para ocultar nomes de usuários do registro de bloqueios.",
        "apierror-cantimport-upload": "Você não tem permissão para importar páginas enviadas.",
        "apierror-cantimport": "Você não tem permissão para importar páginas.",
+       "apierror-filedoesnotexist": "Arquivo não existe.",
+       "apierror-invalidexpiry": "Tempo de expiração \"$1\" não válido.",
+       "apierror-invalidtitle": "Título incorreto \"$1\".",
+       "apierror-invaliduser": "Nome de usuário \"$1\" é inválido.",
+       "apierror-missingtitle-byname": "A página $1 não existe.",
+       "apierror-mustbeloggedin-generic": "Você deve estar logado.",
        "apierror-noedit": "Você não tem permissão para editar páginas.",
        "apierror-noimageredirect": "Você não tem permissão para criar redirecionamentos de imagens.",
        "apierror-permissiondenied": "Você não tem permissão para $1.",
        "apiwarn-invalidtitle": "\"$1\" não é um título válido.",
        "apiwarn-notfile": "\"$1\" não é um arquivo.",
        "apiwarn-tokennotallowed": "A ação \"$1\" não é permitida para o usuário atual.",
+       "api-feed-error-title": "Erro ($1)",
        "api-credits-header": "Créditos"
 }
index e6873fb..feba73c 100644 (file)
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "Definir a data e hora de notificação para a página <kbd>Main page</kbd> de forma a que todas as edições desde 1 de janeiro de 2012 passem a ser consideradas não vistas",
        "apihelp-setnotificationtimestamp-example-allpages": "Reiniciar o estado de notificação das páginas no espaço nominal <kbd>{{ns:user}}</kbd>.",
        "apihelp-setpagelanguage-description": "Alterar a língua de uma página.",
-       "apihelp-setpagelanguage-description-disabled": "Não é permitido alterar a língua de uma página nesta wiki.\n\nAtivar <var>[[mw:Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> para usar esta operação.",
+       "apihelp-setpagelanguage-description-disabled": "Não é permitido alterar a língua de uma página nesta wiki.\n\nAtivar <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> para usar esta operação.",
        "apihelp-setpagelanguage-param-title": "O título da página cuja língua pretende alterar. Não pode ser usado em conjunto com <var>$1pageid</var>.",
        "apihelp-setpagelanguage-param-pageid": "O identificador da página cuja língua pretende alterar. Não pode ser usado em conjunto com <var>$1title</var>.",
        "apihelp-setpagelanguage-param-lang": "O código de língua, da língua para a qual a página será alterada. Usar <kbd>default</kbd> para redefinir a língua da página para a língua padrão de conteúdo da wiki.",
        "apihelp-xml-param-includexmlnamespace": "Se especificado, adiciona um espaço nominal XML.",
        "apihelp-xmlfm-description": "Produzir os dados de saída em formato XML (realce sintático em HTML).",
        "api-format-title": "Resultado da API do MediaWiki.",
-       "api-format-prettyprint-header": "Esta é a representação em HTML do formato $1. O HTML é bom para o despiste de erros, mas inadequado para uso na aplicação.\n\nEspecifique o parâmetro <var>format</var> para alterar o formato de saída. Para ver a representação que não é em HTML do formato $1, defina <kbd>format=$2</kbd>.\n\nConsulte a [[mw:API|documentação completa]], ou a [[Special:ApiHelp/main|ajuda da API]] para mais informação.",
-       "api-format-prettyprint-header-only-html": "Esta é uma representação em HTML para ser usada no despiste de erros, mas inadequada para uso na aplicação.\n\nConsulte a [[mw:API|documentação completa]], ou a [[Special:ApiHelp/main|ajuda da API]] para mais informação.",
+       "api-format-prettyprint-header": "Esta é a representação em HTML do formato $1. O HTML é bom para o despiste de erros, mas inadequado para uso na aplicação.\n\nEspecifique o parâmetro <var>format</var> para alterar o formato de saída. Para ver a representação que não é em HTML do formato $1, defina <kbd>format=$2</kbd>.\n\nConsulte a [[mw:Special:MyLanguage/API|documentação completa]], ou a [[Special:ApiHelp/main|ajuda da API]] para mais informação.",
+       "api-format-prettyprint-header-only-html": "Esta é uma representação em HTML para ser usada no despiste de erros, mas inadequada para uso na aplicação.\n\nConsulte a [[mw:Special:MyLanguage/API|documentação completa]], ou a [[Special:ApiHelp/main|ajuda da API]] para mais informação.",
        "api-format-prettyprint-status": "Esta resposta seria devolvida com o estado de HTTP: $1 $2.",
        "api-pageset-param-titles": "Uma lista dos títulos a serem trabalhados.",
        "api-pageset-param-pageids": "Uma lista dos identificadores de página a serem trabalhados.",
        "api-help-param-default-empty": "Padrão: <span class=\"apihelp-empty\">(vazio)</span>",
        "api-help-param-token": "Uma chave \"$1\" obtida de [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
        "api-help-param-token-webui": "Para efeitos de compatibilidade, a chave usada na interface ''web'' também é aceite.",
-       "api-help-param-disabled-in-miser-mode": "Desativado devido ao [[mw:Manual:$wgMiserMode|modo avarento]] (''miser mode'').",
-       "api-help-param-limited-in-miser-mode": "<strong>Nota:</strong> devido ao [[mw:Manual:$wgMiserMode|modo avarento]] (''miser mode''), usar isto pode resultar na devolução de menos de <var>$1limit</var> resultados antes de continuar; em casos extremos pode não ser devolvido qualquer resultado.",
+       "api-help-param-disabled-in-miser-mode": "Desativado devido ao [[mw:Special:MyLanguage/Manual:$wgMiserMode|modo avarento]] (''miser mode'').",
+       "api-help-param-limited-in-miser-mode": "<strong>Nota:</strong> devido ao [[mw:Special:MyLanguage/Manual:$wgMiserMode|modo avarento]] (''miser mode''), usar isto pode resultar na devolução de menos de <var>$1limit</var> resultados antes de continuar; em casos extremos pode não ser devolvido qualquer resultado.",
        "api-help-param-direction": "A direção da enumeração:\n;newer:Listar o mais antigo primeiro. Nota: $1start tem de estar antes de $1end.\n;older:Listar o mais recente primeiro (padrão). Nota: $1start tem de estar depois de $1end.",
        "api-help-param-continue": "Quando houver mais resultados disponíveis, usar isto para continuar",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(sem descrição)</span>",
index d3fbd65..fd5c3f7 100644 (file)
@@ -54,8 +54,6 @@ class EtcdConfig implements Config, LoggerAwareInterface {
        private $skewCacheTTL;
        /** @var integer */
        private $timeout;
-       /** @var string */
-       private $directoryHash;
 
        /**
         * @param array $params Parameter map:
@@ -81,14 +79,13 @@ class EtcdConfig implements Config, LoggerAwareInterface {
                $this->host = $params['host'];
                $this->protocol = $params['protocol'];
                $this->directory = trim( $params['directory'], '/' );
-               $this->directoryHash = sha1( $this->directory );
                $this->encoding = $params['encoding'];
                $this->skewCacheTTL = $params['skewTTL'];
                $this->baseCacheTTL = max( $params['cacheTTL'] - $this->skewCacheTTL, 0 );
                $this->timeout = $params['timeout'];
 
                if ( !isset( $params['cache'] ) ) {
-                       $this->srvCache = new HashBagOStuff( [] );
+                       $this->srvCache = new HashBagOStuff();
                } elseif ( $params['cache'] instanceof BagOStuff ) {
                        $this->srvCache = $params['cache'];
                } else {
@@ -122,13 +119,20 @@ class EtcdConfig implements Config, LoggerAwareInterface {
                return $this->procCache['config'][$name];
        }
 
+       /**
+        * @throws ConfigException
+        */
        private function load() {
                if ( $this->procCache !== null ) {
                        return; // already loaded
                }
 
                $now = microtime( true );
-               $key = $this->srvCache->makeKey( 'variable', $this->directoryHash );
+               $key = $this->srvCache->makeGlobalKey(
+                       __CLASS__,
+                       $this->host,
+                       $this->directory
+               );
 
                // Get the cached value or block until it is regenerated (by this or another thread)...
                $data = null; // latest config info
@@ -148,24 +152,24 @@ class EtcdConfig implements Config, LoggerAwareInterface {
                                if ( $this->srvCache->lock( $key, 0, $this->baseCacheTTL ) ) {
                                        try {
                                                list( $config, $error, $retry ) = $this->fetchAllFromEtcd();
-                                               if ( $config === null ) {
-                                                       $this->logger->error( "Failed to fetch configuration: $error" );
-                                                       // Fail fast if the error is likely to just keep happening
-                                                       return $retry
-                                                               ? WaitConditionLoop::CONDITION_CONTINUE
-                                                               : WaitConditionLoop::CONDITION_FAILED;
-                                               }
-
-                                               // Avoid having all servers expire cache keys at the same time
-                                               $expiry = microtime( true ) + $this->baseCacheTTL;
-                                               $expiry += mt_rand( 0, 1e6 ) / 1e6 * $this->skewCacheTTL;
+                                               if ( is_array( $config ) ) {
+                                                       // Avoid having all servers expire cache keys at the same time
+                                                       $expiry = microtime( true ) + $this->baseCacheTTL;
+                                                       $expiry += mt_rand( 0, 1e6 ) / 1e6 * $this->skewCacheTTL;
 
-                                               $data = [ 'config' => $config, 'expires' => $expiry ];
-                                               $this->srvCache->set( $key, $data, BagOStuff::TTL_INDEFINITE );
+                                                       $data = [ 'config' => $config, 'expires' => $expiry ];
+                                                       $this->srvCache->set( $key, $data, BagOStuff::TTL_INDEFINITE );
 
-                                               $this->logger->info( "Refreshed stale etcd configuration cache." );
+                                                       $this->logger->info( "Refreshed stale etcd configuration cache." );
 
-                                               return WaitConditionLoop::CONDITION_REACHED;
+                                                       return WaitConditionLoop::CONDITION_REACHED;
+                                               } else {
+                                                       $this->logger->error( "Failed to fetch configuration: $error" );
+                                                       if ( !$retry ) {
+                                                               // Fail fast since the error is likely to keep happening
+                                                               return WaitConditionLoop::CONDITION_FAILED;
+                                                       }
+                                               }
                                        } finally {
                                                $this->srvCache->unlock( $key ); // release mutex
                                        }
@@ -251,7 +255,7 @@ class EtcdConfig implements Config, LoggerAwareInterface {
 
                        $name = basename( $node['key'] );
                        $value = $this->unserialize( $node['value'] );
-                       if ( !is_array( $value ) || !isset( $value['val'] ) ) {
+                       if ( !is_array( $value ) || !array_key_exists( 'val', $value ) ) {
                                return [ null, "Failed to parse value for '$name'.", false ];
                        }
 
diff --git a/includes/debug/logger/ConsoleLogger.php b/includes/debug/logger/ConsoleLogger.php
new file mode 100644 (file)
index 0000000..5a5e507
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+namespace MediaWiki\Logger;
+
+use Psr\Log\AbstractLogger;
+
+/**
+ * A logger which writes to the terminal. The output is supposed to be
+ * human-readable, and should be changed as necessary to better achieve that
+ * goal.
+ */
+class ConsoleLogger extends AbstractLogger {
+       public function __construct( $channel ) {
+               $this->channel = $channel;
+       }
+
+       public function log( $level, $message, array $context = [] ) {
+               fwrite( STDERR, "[$level] " .
+                       LegacyLogger::format( $this->channel, $message, $context ) );
+       }
+}
diff --git a/includes/debug/logger/ConsoleSpi.php b/includes/debug/logger/ConsoleSpi.php
new file mode 100644 (file)
index 0000000..e29b98d
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+namespace MediaWiki\Logger;
+
+class ConsoleSpi implements Spi {
+       public function __construct( $config = [] ) {
+       }
+
+       public function getLogger( $channel ) {
+               return new ConsoleLogger( $channel );
+       }
+}
index a629458..072c1e0 100644 (file)
@@ -364,21 +364,24 @@ class LinksUpdate extends DataUpdate implements EnqueueableDataUpdate {
        private function updateCategoryCounts( array $added, array $deleted ) {
                global $wgUpdateRowsPerQuery;
 
+               if ( !$added && !$deleted ) {
+                       return;
+               }
+
+               $wikiId = $this->getDB()->getWikiID();
                $wp = WikiPage::factory( $this->mTitle );
-               $factory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+               $lbf = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+               // T163801: try to release any row locks to reduce contention
+               $lbf->commitAndWaitForReplication( __METHOD__, $this->ticket, [ 'wiki' => $wikiId ] );
 
                foreach ( array_chunk( array_keys( $added ), $wgUpdateRowsPerQuery ) as $addBatch ) {
                        $wp->updateCategoryCounts( $addBatch, [], $this->mId );
-                       $factory->commitAndWaitForReplication(
-                               __METHOD__, $this->ticket, [ 'wiki' => $this->getDB()->getWikiID() ]
-                       );
+                       $lbf->commitAndWaitForReplication( __METHOD__, $this->ticket, [ 'wiki' => $wikiId ] );
                }
 
                foreach ( array_chunk( array_keys( $deleted ), $wgUpdateRowsPerQuery ) as $deleteBatch ) {
                        $wp->updateCategoryCounts( [], $deleteBatch, $this->mId );
-                       $factory->commitAndWaitForReplication(
-                               __METHOD__, $this->ticket, [ 'wiki' => $this->getDB()->getWikiID() ]
-                       );
+                       $lbf->commitAndWaitForReplication( __METHOD__, $this->ticket, [ 'wiki' => $wikiId ] );
                }
        }
 
@@ -399,7 +402,7 @@ class LinksUpdate extends DataUpdate implements EnqueueableDataUpdate {
        private function incrTableUpdate( $table, $prefix, $deletions, $insertions ) {
                $services = MediaWikiServices::getInstance();
                $bSize = $services->getMainConfig()->get( 'UpdateRowsPerQuery' );
-               $factory = $services->getDBLoadBalancerFactory();
+               $lbf = $services->getDBLoadBalancerFactory();
 
                if ( $table === 'page_props' ) {
                        $fromField = 'pp_page';
@@ -451,7 +454,7 @@ class LinksUpdate extends DataUpdate implements EnqueueableDataUpdate {
 
                foreach ( $deleteWheres as $deleteWhere ) {
                        $this->getDB()->delete( $table, $deleteWhere, __METHOD__ );
-                       $factory->commitAndWaitForReplication(
+                       $lbf->commitAndWaitForReplication(
                                __METHOD__, $this->ticket, [ 'wiki' => $this->getDB()->getWikiID() ]
                        );
                }
@@ -459,7 +462,7 @@ class LinksUpdate extends DataUpdate implements EnqueueableDataUpdate {
                $insertBatches = array_chunk( $insertions, $bSize );
                foreach ( $insertBatches as $insertBatch ) {
                        $this->getDB()->insert( $table, $insertBatch, __METHOD__, 'IGNORE' );
-                       $factory->commitAndWaitForReplication(
+                       $lbf->commitAndWaitForReplication(
                                __METHOD__, $this->ticket, [ 'wiki' => $this->getDB()->getWikiID() ]
                        );
                }
index a9bd4da..435fde3 100644 (file)
@@ -47,10 +47,10 @@ class MWExceptionRenderer {
                } elseif ( self::isCommandLine() ) {
                        self::printError( self::getText( $e ) );
                } elseif ( $mode === self::AS_PRETTY ) {
+                       self::statusHeader( 500 );
                        if ( $e instanceof DBConnectionError ) {
                                self::reportOutageHTML( $e );
                        } else {
-                               self::statusHeader( 500 );
                                self::header( "Content-Type: $wgMimeType; charset=utf-8" );
                                self::reportHTML( $e );
                        }
@@ -293,7 +293,7 @@ class MWExceptionRenderer {
                        $vars[] = '$wgShowDBErrorBacktrace = true;';
                }
                $vars = implode( ' and ', $vars );
-               return "Set $vars at the bottom of LocalSettings.php to show detailed debugging information";
+               return "Set $vars at the bottom of LocalSettings.php to show detailed debugging information\n";
        }
 
        /**
index 0a2b808..12e8dd1 100644 (file)
@@ -724,6 +724,7 @@ abstract class Installer {
                                'ss_good_articles' => 0,
                                'ss_total_pages' => 0,
                                'ss_users' => 0,
+                               'ss_active_users' => 0,
                                'ss_images' => 0
                        ],
                        __METHOD__, 'IGNORE'
index 661ca43..9dfd0ab 100644 (file)
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
        "config-mysql-myisam-dep": "<strong>Diwallit :</strong> Diuzet eo bet ganeoc'h MyISAM evel keflusker stokañ evit MySQL, ar pezh n'eo ket erbedet evit implijout gant MediaWiki, rak :\n* a-boan m'eo skoret gantañ ober meur a dra war un dro peogwir eo prennet an taolennoù\n* techetoc'h eo d'ar gwastoù eget kefluskerioù all\n* kod diazez MediaWiki n'eo ket atav embreget MyISAM gantañ evel m'eo dleet\n\nM'eo skoret InnoDB gant ho staliadur MySQL, ez eo kuzuliet c'hwek deoc'h dibab hennezh kentoc'h.\nMa n'eo ket skoret InnoDB gant ho staliadur MySQL, e c'hallfe bezañ poent deoc'h ober un hizivadenn.",
+       "config-mysql-only-myisam-dep": "<strong>Taolit evezh :</strong> MyISAM eo ar c'heflusker stokañ nemetañ a c'haller ober gantañ war ar mekanik-mañ evit MySQL, padal n'eo ket erbedet e implij gant MediaWiki, rak :\n* a-boan ma skor ar c'hevezerezh abalamour m'eo prennet an taolennoù\n* aesoc'h eo e wastañ eget kefluskerioù all\n* n'eo ket atav embreget MyIsam evel ma tlefe bezañ gant kod diazez MediaWiki\n\nN'eo ket skoret InnoDB gant ho staliadur MySQL. Poent eo hizivaat anezhañ marteze.",
        "config-mysql-charset": "Strobad arouezennoù an diaz roadennoù :",
        "config-mysql-binary": "Binarel",
        "config-mysql-utf8": "UTF-8",
index c122b2a..b6d89f0 100644 (file)
@@ -14,7 +14,7 @@
        "config-localsettings-upgrade": "Otkrivena je datoteka <code>LocalSettings.php</code>.\nDa biste unaprijedili vaš softver, molimo vas upišite vrijednost od <code>$wgUpgradeKey</code> u okvir ispod.\nNaći ćete ga u <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Datoteka <code>LocalSettings.php</code> file je otkrivena.\nZa nadogradnju ove instalacije, molimo da pokrenete <code>update.php</code> umjesto toga",
        "config-localsettings-key": "Ključ za nadgradnju:",
-       "config-localsettings-badkey": "Ključ koji ste dali je pogrešan.",
+       "config-localsettings-badkey": "Ključ za nadogradnju koji ste naveli je pogrešan.",
        "config-upgrade-key-missing": "Postojeća instalacije MediaWiki je pronađena.\nZa nadogradnju ove instalacije, molimo da stavite sljedeće liniju na dno vašeg <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "Postojeći <code>LocalSettings.php</code> se čini da je nepotpun.\nVarijabla $1 nije podešena.\nMolimo da zamjenite <code>LocalSettings.php</code> tako da je varijabla podešena, i kliknite \"{{int:Config-continue}}\".",
        "config-session-error": "Greška pri pokretanju sesije: $1",
@@ -44,6 +44,7 @@
        "config-restart": "Da, pokreni ponovo",
        "config-sidebar": "* [https://www.mediawiki.org MediaWiki Početna strana]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Vodič za korisnike]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Vodič za administratore]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ NPP]\n----\n* <doclink href=Readme>Pročitaj me</doclink>\n* <doclink href=ReleaseNotes>Napomene izdanja</doclink>\n* <doclink href=Copying>Kopiranje</doclink>\n* <doclink href=UpgradeDoc>Poboljšavanje</doclink>",
        "config-env-good": "Okruženje je provjereno.\nMožete instalirati MediaWiki.",
+       "config-env-bad": "Okruženje je provjereno.\nNe možete instalirati MediaWiki.",
        "config-env-php": "PHP $1 je instaliran.",
        "config-env-hhvm": "HHVM $1 je instaliran.",
        "config-no-db": "Nije mogao biti pronađen pogodan driver za bazu podataka! Morate instalirati driver baze podataka za PHP.\nSljedeće vrste baza podataka {{PLURAL:$2|type is|types are}}su podržane: $1.\n\nAko se sami kompajlirali PHP, podesite ga sa omogućenim klijentom baze podataka, koristeći naprimjer, <code>./configure --with-mysqli</code>.\nAko ste instalirali PHP iz Debian ili Ubuntu paketa, tada morate instalirati, naprimjer, i paket <code>php5-mysql</code>.",
@@ -88,6 +89,6 @@
        "config-install-tables": "Kreiranje tabela",
        "config-help": "pomoć",
        "config-help-tooltip": "klikni za proširenje",
-       "mainpagetext": "'''MediaWiki softver je uspješno instaliran.'''",
-       "mainpagedocfooter": "Kontaktirajte [https://meta.wikimedia.org/wiki/Help:Sadržaj uputstva za korisnike] za informacije o upotrebi wiki programa.\n\n== Početak ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista postavki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki najčešće postavljana pitanja]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista E-Mail adresa MediaWiki]"
+       "mainpagetext": "<strong>MediaWiki je instaliran.</strong>",
+       "mainpagedocfooter": "Pogledajte [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents korisnički vodič] za uputstva o upotrebi wiki softvera.\n\n== Prvi koraci ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Spisak postavki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Često postavljana pitanja o MediaWikiju]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Dopisna lista o izdanjima MediaWikija]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Lokalizirajte MediaWiki za svoj jezik]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Naučite kako se boriti protiv neželjenog sadržaja na svom wikiju]"
 }
index 559e7dd..c86b824 100644 (file)
@@ -62,6 +62,7 @@
        "config-memory-bad": "<strong>Avís:</strong> El <code>memory_limit</code> del PHP és $1.\nAixò és probablement massa baix.\nLa instal·lació pot fallar!",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] està instal·lat",
        "config-apc": "L’[http://www.php.net/apc APC] està instal·lat",
+       "config-apcu": "[http://www.php.net/apcu APCu] està instal·lat",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] està instal·lat",
        "config-diff3-bad": "No s'ha trobat el GNU diff3.",
        "config-git": "S'ha trobat el programari de control de versions Git: <code>$1</code>.",
        "config-cache-options": "Configuració per a la memòria cau dels objectes:",
        "config-cache-help": "L'encauament d'objectes s'utilitza per a millorar la rapidesa del MediaWiki afegint a la memòria cau les dades que s'utilitzen de forma freqüent. És recomanable que els llocs web mitjans o grans ho habilitin. També els llocs web petits en veuran els beneficis.",
        "config-cache-none": "Sense encauament (no se suprimeix cap funcionalitat, però la velocitat pot veure's afectada en els llocs wiki més grans)",
+       "config-cache-accel": "Emmagatzemament en memòria cau d'objectes de PHP (APC, APCu, XCache o WinCache)",
        "config-cache-memcached": "Utilitza Memcached (requereix una instal·lació i configuració addicionals)",
        "config-memcached-servers": "Servidors de Memcache:",
        "config-memcache-badip": "Heu introduït una adreça IP no vàlida per al Memcached: $1.",
        "config-memcache-badport": "Els números de port de Memcached han de ser entre $1 i $2.",
        "config-extensions": "Extensions",
        "config-skins": "Aparences",
+       "config-skins-help": "S'han detectat els temes llistats a dalt en el directori <code>./skins</code>. Heu d'habilitar-ne com a mínim un i trieu-ne el predeterminat.",
        "config-skins-use-as-default": "Utilitza aquest tema per defecte",
        "config-skins-missing": "No s'ha trobat cap tema; MediaWiki utilitzarà el tema per defecte fins que hi instal·leu alguns adequats.",
        "config-skins-must-enable-some": "Heu de triar com a mínim un tema per habilitar.",
        "config-skins-must-enable-default": "Cal habilitar el tema triat per defecte.",
+       "config-install-alreadydone": "<strong>Avís:</strong> Sembla que ja havíeu instal·lat MediaWiki i esteu provant d'instal·lar-lo de nou.\nProcediu a la pàgina següent.",
        "config-install-begin": "En fer clic a «{{int:config-continue}}» s’iniciarà la instal·lació del MediaWiki. Si encara voleu fer canvis, feu clic a «{{int:config-back}}».",
        "config-install-step-done": "fet",
        "config-install-step-failed": "ha fallat",
        "config-help": "ajuda",
        "config-help-tooltip": "feu clic per ampliar",
        "config-nofile": "No s'ha pogut trobar el fitxer «$1». S'ha suprimit?",
+       "config-extension-link": "Sabíeu que el vostre wiki permet l'ús d'[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensions]?\n\nPodeu navegar les [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensions per categoria] o la [https://www.mediawiki.org/wiki/Extension_Matrix matriu d'extensions] per a veure'n una llista sencera.",
        "mainpagetext": "<strong>MediaWiki s'ha instal·lat.</strong>",
-       "mainpagedocfooter": "Consulteu la [https://meta.wikimedia.org/wiki/Help:Contents Guia d'Usuari] per a més informació sobre com utilitzar-lo.\n\n== Per a començar ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Llista de característiques configurables]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ PMF del MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de correu (''listserv'') per a anuncis del MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traduïu MediaWiki en la vostra llengua]"
+       "mainpagedocfooter": "Consulteu la [https://meta.wikimedia.org/wiki/Help:Contents Guia d'Usuari] per a més informació sobre com utilitzar aquest programari wiki.\n\n== Primers passos ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Llista de paràmetres configurables]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ PMF del MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de correu per a anuncis del MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducció de MediaWiki en la vostra llengua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprengueu com combatre la brossa que pot atacar el vostre wiki]"
 }
index 8c4914c..6ed903c 100644 (file)
@@ -45,7 +45,7 @@
        "config-localsettings-badkey": "La clave de actualización proporcionada es incorrecta.",
        "config-upgrade-key-missing": "Se ha detectado una instalación existente de MediaWiki.\nPara actualizar la instalación, añade la siguiente línea al final de tu  <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "El archivo <code>LocalSettings.php</code> existente parece estar incompleto.\nLa variable $1 no está definida.\nCambia <code>LocalSettings.php</code> para que esta variable quede establecida y haz clic en \"{{int:Config-continue}}\".",
-       "config-localsettings-connection-error": "Se ha producido un error al conectar a la base de datos utilizando la configuración especificada en <code>LocalSettings.php</code>. Corrige estos ajustes e inténtalo de nuevo.\n\n$1",
+       "config-localsettings-connection-error": "Se ha producido un error al conectar con la base de datos a través de la configuración especificada en <code>LocalSettings.php</code>. Corrige estos ajustes e inténtalo de nuevo.\n\n$1",
        "config-session-error": "Error al iniciar la sesión: $1",
        "config-session-expired": "Tus datos de sesión parecen haber expirado.\nLas sesiones están configuradas por una duración de $1.\nPuedes incrementar esto configurando <code>session.gc_maxlifetime</code> en php.ini.\nReiniciar el proceso de instalación.",
        "config-no-session": "Se han perdido los datos de sesión.\nVerifica tu php.ini y comprueba que <code>session.save_path</code> está establecido en un directorio apropiado.",
@@ -57,7 +57,7 @@
        "config-continue": "Continuar →",
        "config-page-language": "Idioma",
        "config-page-welcome": "Te damos la bienvenida a MediaWiki.",
-       "config-page-dbconnect": "Conectar a la base de datos",
+       "config-page-dbconnect": "Conectar con la base de datos",
        "config-page-upgrade": "Actualizar instalación existente",
        "config-page-dbsettings": "Configuración de la base de datos",
        "config-page-name": "Nombre",
        "config-db-port": "Puerto de la base de datos:",
        "config-db-schema": "Esquema para MediaWiki",
        "config-db-schema-help": "Este esquema usualmente estará bien.\nCámbialos solo si lo necesitas.",
-       "config-pg-test-error": "No se puede conectar a la base de datos <strong>$1</strong>: $2",
+       "config-pg-test-error": "No se puede conectar con la base de datos <strong>$1</strong>: $2",
        "config-sqlite-dir": "Directorio de datos SQLite:",
        "config-sqlite-dir-help": "SQLite almacena todos los datos en un único archivo.\n\nEl directorio que proporciones debe poder escribirse por el servidor web durante la instalación.\n\n'''No''' debería ser accesible a través de Internet. Por eso no vamos a ponerlo en el sitio donde están los archivos PHP.\n\nEl instalador escribirá un archivo <code>.htaccess</code> junto con él, pero si falla alguien podría tener acceso a la base de datos en bloque.\nEso incluye los datos de usuario en bloque (direcciones de correo electrónico, las contraseñas con hash) así como revisiones eliminadas y otros datos restringidos del wiki.\n\nConsidera poner la base de datos en algún otro sitio, por ejemplo en <code>/var/lib/mediawiki/tuwiki</code> .",
        "config-oracle-def-ts": "Espacio de tablas predeterminado:",
        "config-dbsupport-postgres": "[{{int:version-db-postgres-url}} PostgreSQL] es un sistema de base de datos popular de código abierto, alternativa a MySQL. ([http://www.php.net/manual/es/pgsql.installation.php Cómo compilar PHP con compatibilidad PostgreSQL]).",
        "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] es un sistema de base de datos ligero con gran compatibilidad con MediaWiki. ([http://www.php.net/manual/es/pdo.installation.php Cómo compilar PHP con compatibilidad SQLite], usando PDO)",
        "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] es una base de datos comercial a nivel empresarial. ([http://www.php.net/manual/es/oci8.installation.php Cómo compilar PHP con compatibilidad con OCI8])",
-       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] es una base de datos comercial a nivel empresarial para Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php Cómo compilar PHP con soporte para SQLSRV])",
+       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] es un sistema comercial de base de datos empresariales para Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php Cómo compilar PHP con compatibilidad con SQLSRV])",
        "config-header-mysql": "Configuración de MySQL",
        "config-header-postgres": "Configuración de PostgreSQL",
        "config-header-sqlite": "Configuración de SQLite",
index 23f3de1..671d073 100644 (file)
@@ -29,6 +29,7 @@
        "config-env-hhvm": "HHVM $1 ir uzstādīts.",
        "config-apcu": "[http://www.php.net/apcu APCu] ir uzstādīts",
        "config-diff3-bad": "GNU diff3 nav atrasts.",
+       "config-db-host-oracle": "Datubāzes TNS:",
        "config-db-name": "Datubāzes nosaukums:",
        "config-db-username": "Datubāzes lietotājvārds:",
        "config-db-password": "Datubāzes parole:",
index 770a2a8..0b72341 100644 (file)
        "config-type-oracle": "Oracle",
        "config-type-mssql": "Microsoft SQL Server",
        "config-support-info": "O MediaWiki suporta os sistemas de banco de dados a seguir:\n\n$1\n\nSe você não vê o sistema de banco de dados que você está tentando usar listados abaixo, siga as instruções relacionadas acima, para ativar o suporte.",
+       "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] é o principal alvo para MediaWiki e é melhor suportado. O MediaWiki também funciona com [{{int:version-db-mariadb-url}} MariaDB] e [{{int:version-db-percona-url}} Percona Server], que são compatíveis com MySQL.\n ([Http://www.php.net/manual/en/mysqli.installation.php Como compilar PHP com suporte a MySQL])",
+       "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] é um popular sistema de banco de dados de código aberto como uma alternativa para o MySQL. ([http://www.php.net/manual/en/pgsql.installation.php Como compilar o PHP com suporte PostgreSQL])",
        "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] é um sistema de banco de dados leve que é muito bem suportado. ([http://www.php.net/manual/en/pdo.installation.php como compilar o PHP com suporte a SQLite], usa DOP)",
+       "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] é um banco de dados comercial de empresas. ([http://www.php.net/manual/en/oci8.installation.php Como compilar o PHP com suporte OCI8])",
+       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] é uma banco de dados comercial do Windows para empresas. ([http://www.php.net/manual/en/sqlsrv.installation.php Como compilar o PHP com suporte SQLSRV])",
        "config-header-mysql": "Configurações MySQL",
        "config-header-postgres": "Configurações PostgreSQL",
        "config-header-sqlite": "Configurações SQLite",
        "config-missing-db-name": "Você deve inserir um valor para \"{{int:config-db-name}}\".",
        "config-missing-db-host": "Você deve inserir um valor para \"{{int:config-db-host}}\".",
        "config-missing-db-server-oracle": "Você deve inserir um valor para \"{{int:config-db-host-oracle}}\".",
+       "config-invalid-db-server-oracle": "Banco de dados TNS inválido \"$1\".\nUse \"TNS Name\" ou \"Easy Connect\" ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Métodos de nomeação da Oracle]).",
+       "config-invalid-db-name": "O nome do banco de dados é inválido \"$1\".\nUse apenas letras ASCII (a-z, A-Z), números (0-9), underscores (_) e hifens (-).",
+       "config-invalid-db-prefix": "O prefixo do banco de dados é inválido \"$1\".\nUse apenas letras ASCII (a-z, A-Z), números (0-9), underscores (_) e hifens (-).",
        "config-connection-error": "$1\n\nVerifique o servidor, nome de usuário e senha e tente novamente.",
+       "config-invalid-schema": "Schema inválido para o MediaWiki \"$1\".\nUse apenas letras ASCII (a-z, A-Z), números (0-9) e underscores (_).",
        "config-db-sys-create-oracle": "O instalador só permite criar uma conta nova usando uma conta SYSDBA.",
        "config-db-sys-user-exists-oracle": "A conta de usuário $1 já existe. SYSDBA somente pode ser utilizado na criação de uma nova conta!",
        "config-postgres-old": "PostgreSQL $1 ou posterior é necessário. Você tem $2.",
        "config-sqlite-readonly": "Não é possível escrever no arquivo <code>$1</code>.",
        "config-sqlite-cant-create-db": "Não foi possível criar o arquivo da base de dados <code>$1</code>.",
        "config-sqlite-fts3-downgrade": "O PHP não tem suporte FTS3; revertendo o esquema das tabelas para versão anterior",
+       "config-can-upgrade": "Este banco de dados contém tabelas do MediaWiki.\nPara atualizá-las para o MediaWiki $1, clique em <strong>Continuar</strong>.",
        "config-upgrade-done-no-regenerate": "Atualização completa.\n\nAgora pode [$1 começar a usar a sua wiki].",
        "config-regenerate": "Regenerar arquivo LocalSettings.php →",
        "config-show-table-status": "Consulta <code>SHOW TABLE STATUS</code> falhou!",
index ccc7455..462fbf7 100644 (file)
                        "Aefgh39622"
                ]
        },
-       "config-desc": "ตัวติดตั้งสำหรับมีเดียวิกิ",
-       "config-title": "การติดตั้งมีเดียวิกิ $1",
+       "config-desc": "ตัวติดตั้ง MediaWiki",
+       "config-title": "การติดตั้ง MediaWiki $1",
        "config-information": "ข้อมูล",
-       "config-localsettings-upgrade": "à¸\95รวà¸\88à¸\9eà¸\9aà¹\84à¸\9fลà¹\8c <code>LocalSettings.php</code>\nà¹\80à¸\9eืà¹\88ออัà¸\9bà¹\80à¸\81รà¸\94à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¸\99ีà¹\89 à¸\81รุà¸\93าà¸\81รอà¸\81à¸\84à¹\88าà¸\82อà¸\87 <code>$wgUpgradeKey</code> à¹\83à¸\99à¸\81ลà¹\88อà¸\87à¸\94à¹\89าà¸\99ลà¹\88าà¸\87\nà¸\84ุà¸\93à¸\88ะà¸\9eà¸\9aมัà¸\99ได้ใน <code>LocalSettings.php</code>",
-       "config-localsettings-cli-upgrade": "à¸\95รวà¸\88à¸\9eà¸\9aà¹\84à¸\9fลà¹\8c <code>LocalSettings.php</code>\nà¹\80à¸\9eืà¹\88ออัà¸\9bà¹\80à¸\81รà¸\94à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¸\99ีà¹\89 à¸\81รุà¸\93าà¸\94ำà¹\80à¸\99ิà¸\99à¸\87าà¸\99 <code>update.php</code> แทน",
+       "config-localsettings-upgrade": "à¸\95รวà¸\88à¸\9eà¸\9aà¹\84à¸\9fลà¹\8c <code>LocalSettings.php</code>\nà¹\80มืà¹\88อà¸\95à¹\89อà¸\87à¸\81ารอัà¸\9bà¹\80à¸\81รà¸\94à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¸\99ีà¹\89 à¹\82à¸\9bรà¸\94à¸\9bà¹\89อà¸\99à¸\84à¹\88าà¸\82อà¸\87 <code>$wgUpgradeKey</code> à¹\83à¸\99à¸\81ลà¹\88อà¸\87à¸\94à¹\89าà¸\99ลà¹\88าà¸\87\nà¸\84ุà¸\93สามารà¸\96à¸\9eà¸\9aà¸\84à¹\88าà¸\99ีà¹\89ได้ใน <code>LocalSettings.php</code>",
+       "config-localsettings-cli-upgrade": "à¸\95รวà¸\88à¸\9eà¸\9aà¹\84à¸\9fลà¹\8c <code>LocalSettings.php</code>\nà¹\80มืà¹\88อà¸\95à¹\89อà¸\87à¸\81ารอัà¸\9bà¹\80à¸\81รà¸\94à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¸\99ีà¹\89 à¹\82à¸\9bรà¸\94à¹\80รียà¸\81à¹\83à¸\8aà¹\89 <code>update.php</code> แทน",
        "config-localsettings-key": "คีย์อัปเกรด:",
-       "config-localsettings-badkey": "à¸\84ียà¹\8cอัà¸\9bà¹\80à¸\81รà¸\94à¸\97ีà¹\88à¸\84ุà¸\93à¸\81รอà¸\81ไม่ถูกต้อง",
-       "config-upgrade-key-missing": "ตรวจพบการติดตั้งมีเดียวิกิที่มีอยู่แล้ว\nเพื่ออัปเกรดการติดตั้งนี้ กรุณาใส่บรรทัดต่อไปนี้ที่ท้ายไฟล์ <code>LocalSettings.php</code> ของคุณ:\n\n$1",
-       "config-localsettings-incomplete": "<code>LocalSettings.php</code> ที่มีอยู่ดูเหมือนว่าไม่สมบูรณ์\nตัวแปร $1 ไม่ถูกกำหนด\nกรุณาเปลี่ยนแปลง <code>LocalSettings.php</code> เพื่อกำหนดตัวแปรนี้ และคลิก \"{{int:Config-continue}}\"",
-       "config-localsettings-connection-error": "à¸\84วามà¸\9cิà¸\94à¸\9eลาà¸\94à¹\80à¸\81ิà¸\94à¸\82ึà¹\89à¸\99à¹\80มืà¹\88อà¹\80à¸\8aืà¹\88อมà¸\95à¹\88อà¸\90าà¸\99à¸\82à¹\89อมูลà¹\82à¸\94ยà¹\83à¸\8aà¹\89à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88าà¸\97ีà¹\88ระà¸\9aุà¹\83à¸\99 <code>LocalSettings.php</code> à¸\81รุà¸\93าà¹\81à¸\81à¹\89à¹\84à¸\82à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88าà¹\80หลà¹\88าà¸\99ีà¹\89à¹\81ละลอà¸\87อีกครั้ง\n\n$1",
-       "config-session-error": "à¸\84วามผิดพลาดการเริ่มต้นช่วงเวลาสื่อสาร: $1",
-       "config-session-expired": "à¸\8aà¹\88วà¸\87à¹\80วลาสืà¹\88อสารà¸\82อà¸\87à¸\84ุà¸\93à¸\94ูà¹\80หมือà¸\99วà¹\88าหมà¸\94อายุà¹\81ลà¹\89ว\nà¸\8aà¹\88วà¸\87à¹\80วลาสืà¹\88อสารà¸\96ูà¸\81à¸\95ัà¹\89à¸\87à¹\84วà¹\89à¹\83หà¹\89มีà¸\8aà¹\88วà¸\87อายุà¹\80à¸\9bà¹\87à¸\99 $1\nà¸\84ุà¸\93สามารà¸\96à¹\80à¸\9eิà¹\88มà¸\84à¹\88าสิà¹\88à¸\87à¸\99ีà¹\89à¹\82à¸\94ยà¸\81ำหà¸\99à¸\94 <code>session.gc_maxlifetime</code> à¹\83à¸\99 php.ini\nà¹\83หà¹\89à¹\80ริà¹\88มà¸\81ระà¸\9aวà¸\99à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87อีกครั้ง",
-       "config-no-session": "à¸\82à¹\89อมูลà¸\8aà¹\88วà¸\87à¹\80วลาสืà¹\88อสารà¸\82อà¸\87à¸\84ุà¸\93สูà¸\8dหาย!\nà¹\83หà¹\89à¸\95รวà¸\88สอà¸\9a php.ini à¸\82อà¸\87à¸\84ุà¸\93à¹\81ละà¹\81à¸\99à¹\88à¹\83à¸\88วà¹\88า <code>session.save_path</code> à¸\96ูà¸\81à¸\81ำหà¸\99à¸\94ไปยังไดเรกทอรีที่เหมาะสม",
+       "config-localsettings-badkey": "à¸\84ียà¹\8cอัà¸\9bà¹\80à¸\81รà¸\94à¸\97ีà¹\88à¸\84ุà¸\93ระà¸\9aุไม่ถูกต้อง",
+       "config-upgrade-key-missing": "ตรวจพบการติดตั้ง MediaWiki ที่มีอยู่แล้ว\nเมื่อต้องการอัปเกรดการติดตั้งนี้ โปรดใส่บรรทัดต่อไปนี้ที่ท้ายไฟล์\n<code>LocalSettings.php</code> ของคุณ:\n\n$1",
+       "config-localsettings-incomplete": "ไฟล์ <code>LocalSettings.php</code> ที่มีอยู่ดูเหมือนว่าไม่สมบูรณ์\nไม่ได้ตั้งค่าตัวแปร $1\nโปรดเปลี่ยนแปลง <code>LocalSettings.php</code> เพื่อตั้งค่าตัวแปรนี้ และคลิก \"{{int:Config-continue}}\"",
+       "config-localsettings-connection-error": "à¹\80à¸\81ิà¸\94à¸\82à¹\89อà¸\9cิà¸\94à¸\9eลาà¸\94à¸\82ึà¹\89à¸\99à¹\80มืà¹\88อà¹\80à¸\8aืà¹\88อมà¸\95à¹\88อà¸\90าà¸\99à¸\82à¹\89อมูลà¹\82à¸\94ยà¹\83à¸\8aà¹\89à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88าà¸\97ีà¹\88ระà¸\9aุà¹\83à¸\99 <code>LocalSettings.php</code>\nà¹\82à¸\9bรà¸\94à¹\81à¸\81à¹\89à¹\84à¸\82à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88าà¹\80หลà¹\88าà¸\99ีà¹\89à¹\81ลà¹\89วลอà¸\87à¹\83หมà¹\88อีกครั้ง\n\n$1",
+       "config-session-error": "à¸\82à¹\89อผิดพลาดการเริ่มต้นช่วงเวลาสื่อสาร: $1",
+       "config-session-expired": "à¸\8aà¹\88วà¸\87à¹\80วลาสืà¹\88อสารà¸\82อà¸\87à¸\84ุà¸\93à¸\94ูà¹\80หมือà¸\99วà¹\88าหมà¸\94อายุà¹\81ลà¹\89ว\nà¸\8aà¹\88วà¸\87à¹\80วลาสืà¹\88อสารà¸\96ูà¸\81à¸\95ัà¹\89à¸\87à¹\84วà¹\89à¹\83หà¹\89มีà¸\8aà¹\88วà¸\87อายุà¹\80à¸\9bà¹\87à¸\99 $1\nà¸\84ุà¸\93สามารà¸\96à¹\81à¸\81à¹\89à¹\84à¸\82à¸\9bัà¸\8dหาà¸\99ีà¹\89à¹\84à¸\94à¹\89à¹\82à¸\94ยà¸\95ัà¹\89à¸\87à¸\84à¹\88า <code>session.gc_maxlifetime</code> à¹\83à¸\99 php.ini\nà¹\83หà¹\89à¹\80ริà¹\88มà¸\81ระà¸\9aวà¸\99à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¹\83หมà¹\88อีกครั้ง",
+       "config-no-session": "à¸\82à¹\89อมูลà¸\8aà¹\88วà¸\87à¹\80วลาสืà¹\88อสารà¸\82อà¸\87à¸\84ุà¸\93สูà¸\8dหาย!\nà¹\83หà¹\89à¸\95รวà¸\88สอà¸\9a php.ini à¸\82อà¸\87à¸\84ุà¸\93à¹\81ละà¹\81à¸\99à¹\88à¹\83à¸\88วà¹\88า <code>session.save_path</code> à¸\96ูà¸\81à¸\95ัà¹\89à¸\87à¸\84à¹\88าไปยังไดเรกทอรีที่เหมาะสม",
        "config-your-language": "ภาษาของคุณ:",
-       "config-your-language-help": "เลือกภาษาที่จะใช้ระหว่างกระบวนการติดตั้ง",
-       "config-wiki-language": "ภาษาวิกิ:",
-       "config-wiki-language-help": "เลือกภาษาที่จะใช้เขียนเป็นหลักในวิกิ",
+       "config-your-language-help": "à¹\82à¸\9bรà¸\94à¹\80ลือà¸\81ภาษาà¸\97ีà¹\88à¸\88ะà¹\83à¸\8aà¹\89ระหวà¹\88าà¸\87à¸\81ระà¸\9aวà¸\99à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87",
+       "config-wiki-language": "ภาษาà¸\82อà¸\87วิà¸\81ิ:",
+       "config-wiki-language-help": "à¹\82à¸\9bรà¸\94à¹\80ลือà¸\81ภาษาà¸\97ีà¹\88à¸\88ะà¹\83à¸\8aà¹\89à¹\80à¸\82ียà¸\99à¹\80à¸\9bà¹\87à¸\99หลัà¸\81à¹\83à¸\99วิà¸\81ิ",
        "config-back": "← ย้อนกลับ",
        "config-continue": "ดำเนินการต่อ →",
        "config-page-language": "ภาษา",
-       "config-page-welcome": "ยินดีต้อนรับสู่มีเดียวิกิ!",
+       "config-page-welcome": "ยินดีต้อนรับสู่ MediaWiki!",
        "config-page-dbconnect": "เชื่อมต่อไปยังฐานข้อมูล",
        "config-page-upgrade": "อัปเกรดการติดตั้งที่มีอยู่",
        "config-page-dbsettings": "การตั้งค่าฐานข้อมูล",
        "config-page-name": "ชื่อ",
        "config-page-options": "ตัวเลือก",
        "config-page-install": "ติดตั้ง",
-       "config-page-complete": "สมบูรณ์!",
-       "config-page-restart": "เริ่มการติดตั้งอีกครั้ง",
+       "config-page-complete": "à¹\80สรà¹\87à¸\88สมà¸\9aูรà¸\93à¹\8c!",
+       "config-page-restart": "à¹\80ริà¹\88มà¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¹\83หมà¹\88อีà¸\81à¸\84รัà¹\89à¸\87",
        "config-page-readme": "อ่านเอกสารกำกับ",
        "config-page-releasenotes": "บันทึกการเผยแพร่",
        "config-page-copying": "การคัดลอก",
        "config-page-upgradedoc": "การอัปเกรด",
        "config-page-existingwiki": "วิกิที่มีอยู่",
-       "config-help-restart": "คุณต้องการล้างข้อมูลทั้งหมดที่คุณกรอกและเริ่มกระบวนการติดตั้งอีกครั้งหรือไม่?",
+       "config-help-restart": "à¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\81ารลà¹\89าà¸\87à¸\82à¹\89อมูลà¸\97ัà¹\89à¸\87หมà¸\94à¸\97ีà¹\88à¸\84ุà¸\93à¸\81รอà¸\81à¹\81ละà¹\80ริà¹\88มà¸\81ระà¸\9aวà¸\99à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¹\83หมà¹\88อีà¸\81à¸\84รัà¹\89à¸\87หรือà¹\84มà¹\88?",
        "config-restart": "ใช่ เริ่มใหม่อีกครั้ง",
-       "config-welcome": "=== การตรวจสอบสภาพแวดล้อม ===\nการตรวจสอบเบื้องต้นจะกระทำขึ้นเพื่อดูว่าสภาพแวดล้อมนี้เหมาะสมสำหรับการติดตั้งมีเดียวิกิหรือไม่\nจำไว้ว่าให้รวบรวมสารสนเทศนี้ ถ้าคุณแสวงหาการสนับสนุนเพื่อที่จะติดตั้งให้สมบูรณ์",
-       "config-sidebar": "* [https://www.mediawiki.org โฮมเพจมีเดียวิกิ]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents แนวปฏิบัติของผู้ใช้]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents แนวปฏิบัติของผู้ดูแลระบบ]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ คำถามที่ถามบ่อย]\n----\n* <doclink href=Readme>อ่านเอกสารกำกับ</doclink>\n* <doclink href=ReleaseNotes>บันทึกการเผยแพร่</doclink>\n* <doclink href=Copying>การคัดลอก</doclink>\n* <doclink href=UpgradeDoc>การอัปเกรด</doclink>",
-       "config-env-good": "สภาพแวดล้อมถูกตรวจสอบแล้ว\nคุณสามารถติดตั้งมีเดียวิกิ",
-       "config-env-bad": "สภาพแวดล้อมถูกตรวจสอบแล้ว\nคุณไม่สามารถติดตั้งมีเดียวิกิ",
-       "config-env-php": "PHP $1 ติดตั้งแล้ว",
-       "config-env-hhvm": "HHVM $1 ติดตั้งแล้ว",
+       "config-welcome": "=== การตรวจสอบสภาพแวดล้อม ===\nการตรวจสอบเบื้องต้นจะกระทำขึ้น เพื่อยืนยันว่าสภาพแวดล้อมปัจจุบันเหมาะสมสำหรับการติดตั้ง MediaWiki หรือไม่\nโปรดจำไว้ว่าให้รวบรวมผลลัพธ์การตรวจสอบนี้ ถ้าคุณต้องการแสวงหาการสนับสนุนเพื่อที่จะติดตั้งให้สมบูรณ์",
+       "config-copyright": "=== ลิขสิทธิ์และเงื่อนไข ===\n\n$1\n\nโปรแกรมนี้เป็นซอฟต์แวร์เสรี คุณสามารถนำโปรแกรมนี้มาเผยแพร่ซ้ำและ/หรือดัดแปลงได้ภายใต้เงื่อนไขของสัญญาอนุญาตสาธารณะทั่วไปของ GNU (GNU General Public License) ซึ่งเผยแพร่โดย Free Software Foundation (สัญญาอนุญาตรุ่น 2 ขึ้นไป)\n\nโปรแกรมนี้ถูกเผยแพร่โดยหวังว่าจะเป็นประโยชน์แก่ผู้ใช้ แต่<strong>จะไม่มีการรับประกันใด ๆ</strong> แม้แต่การรับประกันเกี่ยวกับ<strong>การนำไปใช้ในการซื้อขาย</strong> หรือ<strong>ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ</strong>\nสำหรับรายละเอียดเพิ่มเติม โปรดดูที่สัญญาอนุญาตสาธารณะทั่วไปของ GNU\n\nคุณควรได้รับ<doclink href=Copying>สำเนาของสัญญาอนุญาตสาธารณะทั่วไปของ GNU</doclink> มาพร้อมกับโปรแกรมนี้ ถ้าไม่ได้รับ ให้ขอได้ที่ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, \nหรือ[http://www.gnu.org/copyleft/gpl.html อ่านออนไลน์ที่นี่]",
+       "config-sidebar": "* [https://www.mediawiki.org โฮมเพจของ MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents แนวปฏิบัติของผู้ใช้]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents แนวปฏิบัติของผู้ดูแลระบบ]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ คำถามที่ถามบ่อย]\n----\n* <doclink href=Readme>อ่านเอกสารกำกับ</doclink>\n* <doclink href=ReleaseNotes>บันทึกการเผยแพร่</doclink>\n* <doclink href=Copying>การคัดลอก</doclink>\n* <doclink href=UpgradeDoc>การอัปเกรด</doclink>",
+       "config-env-good": "สภาพแวดล้อมถูกตรวจสอบแล้ว\nคุณสามารถติดตั้ง MediaWiki",
+       "config-env-bad": "สภาพแวดล้อมถูกตรวจสอบแล้ว\nคุณไม่สามารถติดตั้ง MediaWiki",
+       "config-env-php": "PHP $1 ถูกติดตั้งแล้ว",
+       "config-env-hhvm": "HHVM $1 ถูกติดตั้งแล้ว",
+       "config-unicode-using-intl": "ใช้[http://pecl.php.net/intl ส่วนขยาย intl PECL] สำหรับการจัดมาตรฐานแบบ Unicode",
+       "config-unicode-pure-php-warning": "<strong>คำเตือน:</strong> [http://pecl.php.net/intl intl ส่วนขยาย PECL] ไม่พร้อมใช้งานสำหรับการจัดมาตรฐาน Unicode กำลังกลับไปใช้ PHP ที่แท้จริงแบบช้า\nถ้าคุณเปิดดำเนินการไซต์ที่มีปริมาณการใช้งานสูง คุณควรอ่านดูเกี่ยวกับ[https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations การจัดมาตรฐาน Unicode] สักเล็กน้อย",
+       "config-no-db": "ไม่พบไดรเวอร์ฐานข้อมูลที่เหมาะสม! คุณจำเป็นต้องติดตั้งไดรเวอร์ฐานข้อมูลสำหรับ PHP\nชนิดฐานข้อมูลต่อไปนี้ได้รับการสนับสนุน: $1\n\nถ้าคุณคอมไพล์ PHP ด้วยตนเอง ให้กำหนดค่าใหม่อีกครั้งโดยเปิดใช้งานไคลเอนต์ฐานข้อมูล ตัวอย่างเช่น ใช้ <code>./configure --with-mysqli</code>\nถ้าคุณติดตั้ง PHP จากแพกเกจ Debian หรือ Ubuntu คุณก็จำเป็นต้องติดตั้งแพกเกจต่อไปนี้ ตัวอย่างเช่น แพกเกจ <code>php5-mysql</code>",
+       "config-outdated-sqlite": "<strong>คำเตือน:</strong> คุณมี SQLite $1 ซึ่งต่ำกว่ารุ่นขั้นต่ำที่ต้องการ $2 SQLite จะไม่พร้อมให้ใช้งาน",
+       "config-no-fts3": "<strong>คำเตือน:</strong> SQLite ถูกคอมไพล์โดยไม่มี[//sqlite.org/fts3.html โมดูล FTS3] คุณลักษณะการค้นหาจะไม่พร้อมใช้งานบนแบ็กเอนด์นี้",
+       "config-pcre-old": "<strong>ข้อผิดพลาดร้ายแรง:</strong> ต้องใช้ PCRE $1 หรือสูงกว่า\nไบนารี PHP ของคุณถูกเชื่อมโยงกับ PCRE $2\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE ข้อมูลเพิ่มเติม]",
+       "config-pcre-no-utf8": "<strong>ข้อผิดพลาดร้ายแรง:</strong> โมดูล PCRE ของ PHP ดูเหมือนจะถูกคอมไพล์โดยไม่มีการสนับสนุน PCRE_UTF8\nMediaWiki จำเป็นต้องมีการสนับสนุน UTF-8 เพื่อให้ทำงานได้อย่างถูกต้อง",
        "config-memory-raised": "<code>memory_limit</code> ของ PHP คือ $1 ได้เพิ่มเป็น $2",
        "config-memory-bad": "<strong>คำเตือน:</strong> <code>memory_limit</code> ของ PHP คือ $1.\nเป็นไปได้ว่ามันอาจต่ำเกินไป\nการติดตั้งอาจล้มเหลวได้!",
-       "config-xcache": "[http://xcache.lighttpd.net/ XCache] ติดตั้งแล้ว",
-       "config-apc": "[http://www.php.net/apc APC] ติดตั้งแล้ว",
-       "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] ติดตั้งแล้ว",
-       "config-mod-security": "<strong>คำเตือน:</strong> เว็บเซิร์ฟเวอร์ของคุณมี [http://modsecurity.org/ mod_security]/mod_security2 เปิดใช้งานอยู่ การตั้งค่าทั่วไปหลายอย่างของสิ่งนี้จะก่อให้เกิดปัญหาสำหรับมีเดียวิกิ และซอฟต์แวร์อื่นที่อนุญาตให้ผู้ใช้สามารถโพสต์เนื้อหาได้ตามใจ\nหากเป็นไปได้ สิ่งนี้ควรปิดใช้งาน หรือมิฉะนั้นก็ อ้างไปยัง[http://modsecurity.org/documentation/ เอกสารกำกับการใช้งาน mod_security] หรือติดต่อการสนับสนุนจากโฮสต์ของคุณ ถ้าคุณพบความผิดพลาดโดยสุ่ม",
+       "config-xcache": "[http://xcache.lighttpd.net/ XCache] ถูกติดตั้งแล้ว",
+       "config-apc": "[http://www.php.net/apc APC] ถูกติดตั้งแล้ว",
+       "config-apcu": "[http://www.php.net/apcu APCu] ถูกติดตั้งแล้ว",
+       "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] ถูกติดตั้งแล้ว",
+       "config-no-cache-apcu": "<strong>คำเตือน:</strong> ไม่พบ [http://www.php.net/apcu APCu] [http://xcache.lighttpd.net/ XCache] หรือ [http://www.iis.net/download/WinCacheForPhp WinCache]\nการแคชวัตถุไม่ได้ถูกเปิดใช้งาน",
+       "config-mod-security": "<strong>คำเตือน:</strong> เว็บเซิร์ฟเวอร์ของคุณมี [http://modsecurity.org/ mod_security]/mod_security2 เปิดใช้งานอยู่ การตั้งค่าทั่วไปหลายอย่างของสิ่งนี้จะก่อให้เกิดปัญหาสำหรับ MediaWiki และซอฟต์แวร์อื่นที่อนุญาตให้ผู้ใช้สามารถโพสต์เนื้อหาได้ตามที่ผู้ใช้\nหากเป็นไปได้ ควรปิดใช้งานคุณลักษณะนี้ หรือมิฉะนั้นก็ อ้างไปยัง[http://modsecurity.org/documentation/ เอกสารกำกับการใช้งาน mod_security] หรือติดต่อการสนับสนุนจากโฮสต์ของคุณ ถ้าคุณพบข้อผิดพลาดโดยสุ่ม",
        "config-diff3-bad": "ไม่พบ GNU diff3",
        "config-git": "พบซอฟต์แวร์ควบคุมรุ่น Git: <code>$1</code>",
        "config-git-bad": "ไม่พบซอฟต์แวร์ควบคุมรุ่น Git",
        "config-imagemagick": "พบ ImageMagick: <code>$1</code>\nการย่อรูปภาพจะถูกเปิดใช้งาน ถ้าคุณเปิดใช้งานการอัปโหลด",
-       "config-gd": "à¸\9eà¸\9aà¹\84ลà¸\9aรารีà¸\81ราà¸\9fิà¸\81 GD à¸ à¸²à¸¢à¹\83à¸\99\nการย่อรูปภาพจะถูกเปิดใช้งาน ถ้าคุณเปิดใช้งานการอัปโหลด",
+       "config-gd": "à¸\9eà¸\9aà¹\84ลà¸\9aรารีà¸\81ราà¸\9fิà¸\81 GD à¹\83à¸\99à¸\95ัว\nการย่อรูปภาพจะถูกเปิดใช้งาน ถ้าคุณเปิดใช้งานการอัปโหลด",
        "config-no-scaling": "ไม่พบไลบรารี GD หรือ ImageMagick\nการย่อรูปภาพจะถูกปิดใช้งาน",
        "config-no-uri": "<strong>ข้อผิดพลาด:</strong> ไม่สามารถทำการตรวจสอบ URI ปัจจุบันได้\nการติดตั้งถูกยกเลิกแล้ว",
+       "config-no-cli-uri": "<strong>คำเตือน:</strong> ไม่ได้ระบุ <code>--scriptpath</code> กำลังใช้ค่าเริ่มต้น: <code>$1</code>",
        "config-using-server": "ใช้ชื่อเซิร์ฟเวอร์ \"<nowiki>$1</nowiki>\"",
        "config-using-uri": "ใช้ยูอาร์แอลของเซิร์ฟเวอร์ \"<nowiki>$1$2</nowiki>\"",
+       "config-uploads-not-safe": "<strong>คำเตือน:</strong> ไดเรกทอรีเริ่มต้นของคุณสำหรับการอัปโหลด <code>$1</code> มีช่องโหว่ที่มีต่อการดำเนินการสคริปต์ด้วยตัวเอง\nถึงแม้ว่า MediaWiki จะมีการตรวจสอบช่องโหว่ด้านความปลอดภัยในไฟล์ที่อัปโหลดทั้งหมด แต่ขอแนะนำอย่างยิ่งว่าให้[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security ปิดช่องโหว่ด้านความปลอดภัยนี้]ก่อนเปิดใช้งานการอัปโหลด",
+       "config-no-cli-uploads-check": "<strong>คำเตือน:</strong> ไดเรกทอรีสำหรับอัปโหลดเริ่มต้นของคุณ (<code>$1</code>) ยังไม่ได้ถูกตรวจสอบช่องโหว่ด้านความปลอดภัย\nที่มีต่อการดำเนินการสคริปต์เองระหว่างการติดตั้ง CLI",
+       "config-brokenlibxml": "ระบบของคุณมีรุ่น PHP และ libxml2 ร่วมกันที่มีบักมากและอาจทำให้เกิดการสูญหายของข้อมูลที่ซ่อนไว้ใน MediaWiki และเว็บแอปพลิเคชั่นอื่นๆ ได้\nอัปเกรดเป็น libxml2 2.7.3 หรือสูงกว่า ([https://bugs.php.net/bug.php?id=45996 บักที่รายงานด้วย PHP])\nการติดตั้งถูกยกเลิกแล้ว",
+       "config-suhosin-max-value-length": "Suhosin ถูกติดตั้งแล้วและจำกัด<code>ความยาว</code>พารามิเตอร์ GET เป็น $1 ไบต์\nองค์ประกอบ ResourceLoader ของ MediaWiki จะยังคงทำงานภายใต้การจำกัดนี้ แต่อาจลดระดับประสิทธิภาพลงได้\nถ้าเป็นไปได้ คุณควรตั้ง <code>suhosin.get.max_value_length</code> เป็น 1024 หรือสูงกว่าใน <code>php.ini</code> และตั้งค่า <code>$wgResourceLoaderMaxQueryLength</code> ให้เป็นค่าเดียวกับใน <code>LocalSettings.php</code>",
+       "config-db-type": "ชนิดฐานข้อมูล:",
+       "config-db-host": "โฮสต์ฐานข้อมูล:",
+       "config-db-host-help": "ถ้าเซิร์ฟเวอร์ฐานข้อมูลของคุณอยู่บนเซิร์ฟเวอร์อื่น ให้ป้อนชื่อโฮสต์หรือที่อยู่ IP ที่นี่\n\nถ้าคุณกำลังใช้งานโฮสต์เว็บที่ใช้ร่วมกัน ผู้ให้บริการโฮสต์ควรให้ชื่อโฮสต์ที่ถูกต้องแก่คุณในเอกสารคู่มือ\n\nถ้าคุณกำลังติดตั้งบนเซิร์ฟเวอร์ Windows และกำลังใช้ MySQL การใช้ \"localhost\" อาจไม่สามารถใช้ได้สำหรับชื่อเซิร์ฟเวอร์ ถ้าไม่สามารถใช้ได้ ให้ลองใช้ \"127.0.0.1\" สำหรับที่อยู่ IP เฉพาะที่",
+       "config-db-host-oracle": "TNS ฐานข้อมูล:",
+       "config-db-host-oracle-help": "ป้อน [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Local Connect Name] ที่ถูกต้อง; ไฟล์ tnsnames.ora ต้องสามารถมองเห็นได้โดยการติดตัั้งนี้<br />ถ้าคุณกำลังใช้ไลบรารีไคลเอนต์ 10g หรือใหม่กว่า คุณก็สามารถใช้วิธีการตั้งชื่อแบบ [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect] ได้เช่นกัน",
+       "config-db-wiki-settings": "ระบุวิกินี้",
        "config-db-name": "ชื่อฐานข้อมูล:",
-       "config-mysql-innodb": "อินโนดีบี",
-       "config-mysql-myisam": "มายไอแซม",
+       "config-db-name-help": "เลือกชื่อที่ระบุวิกิของคุณ\nชื่อไม่ควรมีช่องว่าง\n\nถ้าคุณกำลังใช้โฮสต์เว็บที่ใช้ร่วมกัน ผู้ให้บริการโฮสต์ของคุณจะระบุชื่อฐานข้อมูลให้คุณ หรือให้คุณสร้างฐานข้อมูลโดยใช้แผงควบคุม",
+       "config-db-name-oracle": "แบบแผนฐานข้อมูล:",
+       "config-db-account-oracle-warn": "มีสถานการณ์สมมติสามสถานการณ์ที่สนับสนุนสำหรับการติดตั้ง Oracle เป็นแบ็กเอนด์ฐานข้อมูล:\n\nถ้าคุณต้องการสร้างบัญชีฐานข้อมูลเป็นส่วนหนึ่งของกระบวนการติดตั้ง โปรดจัดหาบัญชีที่มีบทบาท SYSDBA เป็นบัญชีฐานข้อมูลสำหรับการติดตั้งและระบุข้อมูลประจำตัวที่ต้องการสำหรับบัญชีการเข้าถึงเว็บ หรือคุณสามารถสร้างบัญชีการเข้าถึงเว็บด้วยตนเองและจัดหาเฉพาะบัญชีนั้น (ถ้ามีสิทธิ์ที่ต้องการในการสร้างวัตถุแบบแผน) หรือจัดหาบัญชีสองบัญชี โดยบัญชีหนึ่งใช้สร้างสิทธิ์ และบัญชีที่จำกัดอีกบัญชีหนึ่งสำหรับการเข้าถึงเว็บ\n\nสคริปต์ที่ใช้สำหรับการสร้างบัญชีพร้อมสิทธิ์ที่ต้องการสามารถพบได้ในไดเรกทอรี \"maintenance/oracle/\" ของการติดตั้งนี้\nอย่าลืมว่าการใช้บัญชีที่จำกัดจะเป็นการปิดใช้งานความสามารถในการบำรุงรักษาทั้งหมดด้วยบัญชีเริ่มต้น",
+       "config-db-install-account": "บัญชีผู้ใช้สำหรับการติดตั้ง",
+       "config-db-username": "ชื่อผู้ใช้ฐานข้อมูล:",
+       "config-db-password": "รหัสผ่านฐานข้อมูล:",
+       "config-db-install-username": "ป้อนชื่อผู้ใช้ที่จะใช้เชื่อมต่อไปยังฐานข้อมูลระหว่างกระบวนการติดตั้ง\nชื่อผู้ใช้นี้ไม่ใช่ชื่อผู้ใช้สำหรับบัญชี MediaWiki แต่เป็นชื่อผู้ใช้สำหรับฐานข้อมูลของคุณ",
+       "config-db-install-password": "ป้อนรหัสผ่านที่จะใช้เชื่อมต่อไปยังฐานข้อมูลระหว่างกระบวนการติดตั้ง\nรหัสผ่านนี้ไม่ใช่รหัสผ่านสำหรับบัญชี MediaWiki แต่เป็นรหัสผ่านสำหรับฐานข้อมูลของคุณ",
+       "config-db-install-help": "ป้อนชื่อผู้ใช้และรหัสผ่านที่จะใช้เชื่อมต่อไปยังฐานข้อมูลระหว่างกระบวนการติดตั้ง",
+       "config-db-account-lock": "ใช้ชื่อผู้ใช้และรหัสผ่านเดียวกันระหว่างการดำเนินการปกติ",
+       "config-db-wiki-account": "บัญชีผู้ใช้สำหรับการดำเนินการปกติ",
+       "config-db-wiki-help": "ป้อนชื่อผู้ใช้และรหัสผ่านที่จะใช้เชื่อมต่อไปยังฐานข้อมูลระหว่างการดำเนินการวิกิปกติ\nถ้าไม่มีบัญชีอยู่ และบัญชีการติดตั้งมีสิทธิ์เพียงพอ บัญชีผู้ใช้นี้จะถูกสร้างพร้อมสิทธิ์ขั้นต่ำที่จำเป็นต้องใช้ดำเนินการกับวิกิ",
+       "config-db-prefix": "คำนำหน้าตารางฐานข้อมูล:",
+       "config-db-prefix-help": "ถ้าคุณต้องการใช้ฐานข้อมูลเดียวร่วมกันระหว่างหลายวิกิ หรือระหว่าง MediaWiki กับเว็บแอปพลิเคชันอื่นๆ คุณอาจต้องเลือกเพิ่มคำนำหน้าให้กับชื่อตารางทั้งหมดเพื่อป้องกันความขัดแย้ง\nอย่าใช้ช่องว่าง\n\nโดยปกติ เขตข้อมูลนี้มักจะถูกปล่อยให้ว่างเปล่า",
+       "config-mysql-old": "จำเป็นต้องใช้ MySQL $1 หรือสูงกว่า คุณมี $2",
+       "config-db-port": "พอร์ตฐานข้อมูล:",
+       "config-db-schema": "แบบแผนสำหรับ MediaWiki:",
+       "config-db-schema-help": "โดยปกติ แบบแผนนี้จะไม่มีปัญหาใดๆ อยู่แล้ว\nเปลี่ยนเฉพาะก็ต่อเมื่อคุณรู้ว่าคุณจำเป็นต้องดำเนินการนี้",
+       "config-pg-test-error": "ไม่สามารถเชื่อมต่อไปยังฐานข้อมูล <strong>$1</strong>: $2",
+       "config-sqlite-dir": "ไดเรกทอรีข้อมูล SQLite:",
+       "config-sqlite-dir-help": "SQLite จัดเก็บข้อมูลทั้งหมดในไฟล์เดียว\n\nไดเรกทอรีที่คุณระบุจะต้องสามารถเขียนได้โดยเว็บเซิร์ฟเวอร์ระหว่างการติดตั้ง\n\nไดเรกทอรีดังกล่าว<strong>ไม่</strong>ควรสามารถเข้าถึงได้ผ่านเว็บ นี่คือเหตุผลที่เราไม่นำไฟล์ข้อมูลดังกล่าวไปไว้ในตำแหน่งที่มีไฟล์ PHP ของคุณอยู่\n\nโปรแกรมติดตั้งจะเขียนไฟล์ <code>.htaccess</code> ไปพร้อมกับไฟล์ข้อมูลดังกล่าว แต่ถ้าเกิดความล้มเหลว ทุกคนจะสามารถเข้าถึงฐานข้อมูลดิบของคุณได้\nซึ่งรวมถึงข้อมูลผู้ใช้ดิบ (ที่อยู่อีเมล ข้อมูลแฮช) รวมถึงรุ่นปรับปรุงที่ถูกลบไปแล้ว และข้อมูลที่ถูกจำกัดอื่นๆ บนวิกิ\n\nให้พิจารณานำฐานข้อมูลไปไว้ในตำแหน่งอื่น ตัวอย่างเช่น ใน <code>/var/lib/mediawiki/yourwiki</code>",
+       "config-oracle-def-ts": "พื้นที่ตารางเริ่มต้น:",
+       "config-oracle-temp-ts": "พื้นที่ตารางชั่วคราว:",
+       "config-type-mysql": "MySQL (หรือที่เข้ากันได้)",
+       "config-type-mssql": "Microsoft SQL Server",
+       "config-support-info": "MediaWiki สนับสนุนระบบฐานข้อมูลต่อไปนี้:\n\n$1\n\nถ้าคุณไม่พบระบบฐานข้อมูลที่คุณกำลังพยายามใช้ในรายการด้านล่างนี้ ให้ทำตามคำแนะนำที่เชื่อมโยงด้านบนเพื่อเปิดใช้งานการสนับสนุน",
+       "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] คือเป้าหมายหลักสำหรับ MediaWiki และได้รับการสนับสนุนดีที่สุด MediaWiki ยังคงสามารถใช้ได้ร่วมกับ [{{int:version-db-mariadb-url}} MariaDB] และ [{{int:version-db-percona-url}} Percona Server] ซึ่งเข้ากันได้กับ MySQL ([http://www.php.net/manual/en/mysqli.installation.php วิธีการคอมไพล์ PHP ด้วยการสนับสนุน MySQL])",
+       "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] คือระบบฐานข้อมูลแบบโอเพนซอร์สที่ได้รับความนิยมสูงที่สามารถใช้แทน MySQL ได้ ([http://www.php.net/manual/en/pgsql.installation.php วิธีการคอมไพล์ PHP ด้วยการสนับสนุน PostgreSQL])",
+       "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] คือระบบฐานข้อมูลขนาดเล็กที่ได้รับการสนับสนุนดีมาก ([http://www.php.net/manual/en/pdo.installation.php วิธีการคอมไพล์ PHP ด้วยการสนับสนุน SQLite], ใช้ PDO)",
+       "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] คือฐานข้อมูลสำหรับองค์กรพาณิชย์ ([http://www.php.net/manual/en/oci8.installation.php วิธีการคอมไพล์ PHP ด้วยการสนับสนุน OCI8])",
+       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] คือฐานข้อมูลสำหรับองค์กรพาณิชย์สำหรับ Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php วิธีการคอมไพล์ PHP ด้วยการสนับสนุน SQLSRV])",
+       "config-header-mysql": "การตั้งค่า MySQL",
+       "config-header-postgres": "การตั้งค่า PostgreSQL",
+       "config-header-sqlite": "การตั้งค่า SQLite",
+       "config-header-oracle": "การตั้งค่า Oracle",
+       "config-header-mssql": "การตั้งค่า Microsoft SQL Server",
+       "config-invalid-db-type": "ชนิดฐานข้อมูลไม่ถูกต้อง",
+       "config-missing-db-name": "คุณต้องป้อนค่าสำหรับ \"{{int:config-db-name}}\"",
+       "config-missing-db-host": "คุณต้องป้อนค่าสำหรับ \"{{int:config-db-host}}\"",
+       "config-missing-db-server-oracle": "คุณต้องป้อนค่าสำหรับ \"{{int:config-db-host-oracle}}\"",
+       "config-invalid-db-server-oracle": "TNS ฐานข้อมูล \"$1\" ไม่ถูกต้อง\nให้ใช้สตริง \"ชื่อ TNS\" หรือ \"Easy Connect\"\n ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm วิธีการตั้งชื่อของ Oracle])",
+       "config-invalid-db-name": "ชื่อฐานข้อมูล \"$1\" ไม่ถูกต้อง\nให้ใช้เฉพาะอักษร ASCII (a-z, A-Z) ตัวเลข (0-9) ขีดล่าง (_) และยัติภังค์ (-)",
+       "config-invalid-db-prefix": "คำนำหน้าฐานข้อมูล \"$1\" ไม่ถูกต้อง\nให้ใช้เฉพาะอักษร ASCII (a-z, A-Z) ตัวเลข (0-9) ขีดล่าง (_) และยัติภังค์ (-)",
+       "config-connection-error": "$1\n\nตรวจสอบโฮสต์ ชื่อผู้ใช้และรหัสผ่าน และลองอีกครั้ง",
+       "config-invalid-schema": "แบบแผนสำหรับ MediaWiki \"$1\" ไม่ถูกต้อง\nให้ใช้เฉพาะอักษร ASCII (a-z, A-Z) ตัวเลข (0-9) และขีดล่าง (_)",
+       "config-db-sys-create-oracle": "โปรแกรมติดตั้งสนับสนุนเฉพาะการใช้บัญชี SYSDBA สำหรับการสร้างบัญชีใหม่เท่านั้น",
+       "config-db-sys-user-exists-oracle": "มีบัญชีผู้ใช้ \"$1\" อยู่แล้ว คุณสามารถใช้เฉพาะ SYSDBA สำหรับการสร้างบัญชีใหม่ได้เท่านั้น!",
+       "config-postgres-old": "จำเป็นต้องใช้ PostgreSQL $1 หรือสูงกว่า คุณมี $2",
+       "config-mssql-old": "จำเป็นต้องใช้ Microsoft SQL Server $1 หรือสูงกว่า คุณมี $2.",
+       "config-sqlite-name-help": "เลือกชื่อที่จะระบุวิกิของคุณ\nอย่าใช้ช่องว่างหรือยัติภังค์\nชื่อนี้จะถูกใช้สำหรับชื่อไฟล์ข้อมูล SQLite",
+       "config-sqlite-parent-unwritable-group": "ไม่สามารถสร้างไดเรกทอรีข้อมูล <code><nowiki>$1</nowiki></code> ได้ เนื่องจากไดเรกทอรีหลัก <code><nowiki>$2</nowiki></code> ไม่สามารถเขียนได้โดยเว็บเซิร์ฟเวอร์\n\nโปรแกรมติดตั้งได้ทำการตรวจสอบแล้วว่าเว็บเซิร์ฟเวอร์ของคุณกำลังทำงานในฐานะผู้ใช้ใด\nทำให้ไดเรกทอรี <code><nowiki>$3</nowiki></code> สามารถเขียนโดยผู้ใช้ดังกล่าวได้เพื่อดำเนินการต่อ\nถ้าคุณใช้ระบบ Unix/Linux ให้่ทำเช่นนี้:\n\n<pre>cd $2\nmkdir $3\nchgrp $4 $3\nchmod g+w $3</pre>",
+       "config-sqlite-parent-unwritable-nogroup": "ไม่สามารถสร้างไดเรกทอรีข้อมูล <code><nowiki>$1</nowiki></code> ได้ เนื่องจากไดเรกทอรีหลัก <code><nowiki>$2</nowiki></code> ไม่สามารถเขียนได้โดยเว็บเซิร์ฟเวอร์\n\nโปรแกรมติดตั้งไม่สามารถทำการตรวจสอบได้ว่าเว็บเซิร์ฟเวอร์ของคุณกำลังทำงานในฐานะผู้ใช้ใด\nทำให้ไดเรกทอรี <code><nowiki>$3</nowiki></code> สามารถเขียนโดยส่วนกลาง (ุผู้ใช้ดังกล่าว รวมถึงคนอื่นๆ ด้วย!) ได้เพื่อดำเนินการต่อ\nถ้าคุณใช้ระบบ Unix/Linux ให้่ทำเช่นนี้:\n\n<pre>cd $2\nmkdir $3\nchmod a+w $3</pre>",
+       "config-sqlite-mkdir-error": "ไม่สามารถสร้างไดเรกทอรีข้อมูล \"$1\" ได้\nให้ตรวจสอบตำแหน่งที่ตั้ง และลองอีกครั้ง",
+       "config-sqlite-dir-unwritable": "ไม่สามารถเขียนข้อมูลลงในไดเรกทอรี \"$1\" ได้\nให้เปลี่ยนสิทธิ์ เพื่อให้เว็บเซิร์ฟเวอร์สามารถเขียนข้อมูลลงในไดเรกทอรีดังกล่าวได้ และลองอีกครั้ง",
+       "config-sqlite-connection-error": "$1\n\nตรวจสอบไดเรกทอรีข้อมูลและชื่อฐานข้อมูลด้านล่าง และลองอีกครั้ง",
+       "config-sqlite-readonly": "ไฟล์ <code>$1</code> ไม่สามารถเขียนได้",
+       "config-sqlite-cant-create-db": "ไม่สามารถสร้างไฟล์ฐานข้อมูล <code>$1</code> ได้",
+       "config-sqlite-fts3-downgrade": "PHP กำลังขาดการสนับสนุน FTS3 กำลังดาวน์เกรดตารางข้อมูล",
+       "config-can-upgrade": "มีตารางข้อมูล MediaWiki tables ในฐานข้อมูลนี้\nเมื่อต้องการอัปเกรดตารางข้อมูลเหล่านั้นไปเป็น MediaWiki $1 ให้คลิก <strong>ดำเนินการต่อ</strong>",
+       "config-upgrade-done": "การอัปเกรดเสร็จสมบูรณ์\n\nคุณสามารถ[$1 เริ่มใช้วิกิของคุณ]ได้ในขณะนี้\n\nถ้าคุณต้องการสร้างไฟล์ <code>LocalSettings.php</code> ของคุณใหม่ ให้คลิกปุ่มด้านล่างนี้\n<strong>ไม่แนะนำ</strong>ให้ดำเนินการนี้นอกจากว่าคุณกำลังมีปัญหากับวิกิของคุณ",
+       "config-upgrade-done-no-regenerate": "การอัปเกรดเสร็จสมบูรณ์\n\nคุณสามารถ[$1 เริ่มใช้วิกิของคุณ]ได้ในขณะนี้",
+       "config-regenerate": "สร้าง LocalSettings.php ใหม่ →",
+       "config-show-table-status": "คิวรี <code>SHOW TABLE STATUS</code> ล้มเหลว!",
+       "config-unknown-collation": "<strong>คำเตือน:</strong> ฐานข้อมูลกำลังใช้การจัดเรียงที่ไม่รู้จัก",
+       "config-db-web-account": "บัญชีฐานข้อมูลสำหรับการเข้าถึงเว็บ",
+       "config-db-web-help": "เลือกชื่อผู้ใช้และรหัสผ่านที่เว็บเซิร์ฟเวอร์จะใช้ในการเชื่อมต่อไปยังเซิร์ฟเวอร์ฐานข้อมูล ระหว่างการดำเนินการแบบธรรมดาของวิกิ",
+       "config-db-web-account-same": "ใช้บัญชีเดียวกันสำหรับการติดตั้ง",
+       "config-db-web-create": "สร้างบัญชี ถ้าบัญชีดังกล่าวไม่มีอยู่",
+       "config-db-web-no-create-privs": "บัญชีที่คุณระบุไว้สำหรับการติดตั้งมีสิทธิ์ไม่เพียงพอที่จะสร้างบัญชี\nบัญชีที่คุณระบุไว้ที่นี่จะต้องมีอยู่แล้ว",
+       "config-mysql-engine": "กลไกที่จัดเก็บข้อมูล:",
+       "config-mysql-innodb": "InnoDB",
+       "config-mysql-myisam": "MyISAM",
+       "config-mysql-myisam-dep": "<strong>คำเตือน:</strong> คุณได้เลือก MyISAM เป็นกลไกที่จัดเก็บข้อมูลสำหรับ MySQL ซึ่่งไม่แนะนำให้ใช้กับ MediaWiki เนื่องจาก:\n* ไม่ค่อยสนับสนุนกระบวนการทำงานพร้อมกันเนื่องจากการล็อกตารางข้อมูล\n* มีแนวโน้มที่จะเสียหายมากกว่ากลไกอื่น\n* Codebase ของ MediaWiki ไม่สามารถจัดการ MyISAM ได้ดีเท่าที่ควร\n\nถ้าการติดตั้ง MySQL ของคุณสนับสนุน InnoDB แนะนำอย่างยิ่งว่าให้คุณเลือก InnoDB แทน\nถ้าการติดตั้ง MySQL ของคุณไม่สนับสนุน InnoDB อาจถึงเวลาที่คุณต้องอัปเกรดแล้ว",
+       "config-mysql-only-myisam-dep": "<strong>คำเตือน:</strong> กลไกที่จัดเก็บข้อมูลสำหรับ MySQL ที่พร้อมใช้งานบนเครื่องนี้มีเพียง MySQL ซึ่่งไม่แนะนำให้ใช้กับ MediaWiki เนื่องจาก:\n* ไม่ค่อยสนับสนุนกระบวนการทำงานพร้อมกันเนื่องจากการล็อกตารางข้อมูล\n* มีแนวโน้มที่จะเสียหายมากกว่ากลไกอื่น\n* Codebase ของ MediaWiki ไม่สามารถจัดการ MyISAM ได้ดีเท่าที่ควร\n\nการติดตั้ง MySQL ของคุณไม่สนับสนุน InnoDB อาจถึงเวลาที่คุณต้องอัปเกรดแล้ว",
+       "config-mysql-engine-help": "<strong>InnoDB</strong> เป็นตัวเลือกที่เกือบดีที่สุดเสมอ เนื่องจากมีการสนับสนุนกระบวนการทำงานพร้อมกัน\n\n<strong>MyISAM</strong> อาจทำงานได้เร็วกว่าในการติดตั้งแบบผู้ใช้คนเดียวหรือแบบอ่านอย่างเดียว\nฐานข้อมูล MyISAM มักจะได้รับความเสียหายบ่อยมากกว่าฐานข้อมูล InnoDB",
+       "config-mysql-charset": "ชุดอักขระของฐานข้อมูล:",
        "config-mysql-binary": "ไบนารี",
-       "config-mysql-utf8": "ยูทีเอฟ-8",
+       "config-mysql-utf8": "UTF-8",
+       "config-mysql-charset-help": "ใน<strong>โหมดไบนารี</strong> MediaWiki จะจัดเก็บข้อความ UTF-8 ไว้ในฐานข้อมูลในเขตข้อมูลไบนารี\nการใช้โหมดไบนารีจะมีประสิทธิภาพมากกว่าการใช้โหมด UTF-8 ของ MySQL และจะอนุญาตให้คุณสามารถใช้อักขระที่มีใน Unicode ได้หมดทุกช่วง\n\nใน<strong>โหมด UTF-8</strong> MySQL จะทราบว่าข้อมูลของคุณอยู่ในชุดอักขระได้ และจะสามารถเสนอและแปลงข้อมูลดังกล่าวได้อย่างเหมาะสม แต่จะไม่อนุญาตให้คุณจัดเก็บข้อมูลที่มีอักขระนอกเหนือจากในช่วง[https://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes เพลนหลายภาษาพื้นฐาน]",
+       "config-mssql-auth": "ชนิดการรับรองความถูกต้อง:",
+       "config-mssql-install-auth": "เลือกชนิดการรับรองความถูกต้องที่จะถูกใช้ในการเชื่อมต่อไปยังฐานข้อมูลระหว่างกระบวนการติดตั้ง\nถ้าคุณเลือก \"{{int:config-mssql-windowsauth}}\" ข้อมูลประจำตัวที่ระบุว่าเว็บเซิร์ฟเวอร์กำลังทำงานในฐานะผู้ใช้ใดจะถูกใช้",
+       "config-mssql-web-auth": "เลือกชนิดการรับรองความถูกต้องที่จะถูกใช้ในการเชื่อมต่อไปยังฐานข้อมูลระหว่างการดำเนินการแบบธรรมดาของวิกิ\nถ้าคุณเลือก \"{{int:config-mssql-windowsauth}}\" ข้อมูลประจำตัวที่ระบุว่าเว็บเซิร์ฟเวอร์กำลังทำงานในฐานะผู้ใช้ใดจะถูกใช้",
+       "config-mssql-sqlauth": "การรับรองความถูกต้องของ SQL Server",
+       "config-mssql-windowsauth": "การรับรองความถูกต้องของ Windows",
        "config-site-name": "ชื่อของวิกิ:",
+       "config-site-name-help": "ชื่อนี้จะปรากฏในแถบชื่อเรื่องของเบราว์เซอร์และในที่อื่นๆ อีกหลายแห่ง",
+       "config-site-name-blank": "ป้อนชื่อไซต์",
+       "config-project-namespace": "เนมสเปซโครงการ:",
        "config-ns-generic": "โครงการ",
+       "config-ns-site-name": "เหมือนกับชื่อวิกิ: $1",
+       "config-ns-other": "อื่นๆ (ระบุ)",
        "config-ns-other-default": "วิกิของฉัน",
-       "config-admin-box": "บัญชีผู้ดูแลระบบ",
+       "config-project-namespace-help": "ตามตัวอย่างในวิกิพีเดีย วิกิหลายแห่งจะแยกหน้านโยบายออกจากหน้าเนื้อหาต่างๆ ใน '''เนมสเปซโครงการ'''\nชื่อเรื่องหน้าทั้งหมดในเนมสเปซนี้จะขึ้นต้นด้วยคำนำหน้าบางคำ ซึ่งคุณสามารถระบุได้ที่นี่\nโดยปกติ คำนำหน้านี้จะถูกสืบทอดมาจากชื่อของวิกิ แต่ไม่สามารถมีอักขระเครื่องหมายวรรคตอนได้ เช่น \"#\" หรือ \":\"",
+       "config-ns-invalid": "เนมสเปซ \"<nowiki>$1</nowiki>\" ที่ระบุไม่ถูกต้อง\nระบุเนมสเปซโครงการอื่น",
+       "config-ns-conflict": "เนมสเปซ \"<nowiki>$1</nowiki>\" ที่ระบุขัดแย้งกับเนมสเปซเริ่มต้นของ MediaWiki\nระบุเนมสเปซโครงการอื่น",
+       "config-admin-box": "บัญชีผู้ดูแล",
        "config-admin-name": "ชื่อผู้ใช้ของคุณ:",
        "config-admin-password": "รหัสผ่าน:",
        "config-admin-password-confirm": "รหัสผ่านอีกครั้ง:",
+       "config-admin-help": "ป้อนชื่อผู้ใช้ที่ต้องการของคุณที่นี่ ตัวอย่างเช่น \"Joe Bloggs\"\nชื่อนี้จะเป็นชื่อที่คุณจะใช้สำหรับเข้าสู่ระบบวิกิ",
+       "config-admin-name-blank": "ป้อนชื่อผู้ใช้ของผู้ดูแล",
+       "config-admin-name-invalid": "ชื่อผู้ใช้ \"<nowiki>$1</nowiki>\" ที่ระบุไม่ถูกต้อง\nระบุชื่อผู้ใช้อื่น",
+       "config-admin-password-blank": "ป้อนรหัสผ่านสำหรับบัญชีผู้ดูแล",
+       "config-admin-password-mismatch": "รหัสผ่านสองรหัสที่คุณป้อนไม่ตรงกัน",
        "config-admin-email": "ที่อยู่อีเมล:",
+       "config-admin-email-help": "ป้อนที่อยู่อีเมลที่นี่เพื่อให้คุณสามารถรับอีเมลจากผู้ใช้อื่นๆ บนวิกิ ตั้งค่ารหัสผ่านใหม่ และรับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงในหน้าที่อยู่บนรายการเฝ้าดูของคุณ คุณสามารถปล่อยเขตข้อมูลนี้ให้ว่างไว้ได้",
+       "config-admin-error-user": "เกิดข้อผิดพลาดภายในขณะสร้างผู้ดูแลด้วยชื่อ \"<nowiki>$1</nowiki>\"",
+       "config-admin-error-password": "เกิดข้อผิดพลาดภายในขณะตั้งค่ารหัสผ่านสำหรับผู้ดูแล \"<nowiki>$1</nowiki>\": <pre>$2</pre>",
+       "config-admin-error-bademail": "คุณได้ป้อนที่อยู่อีเมลที่ไม่ถูกต้อง",
+       "config-subscribe": "สมัครรับข้อมูลกับ[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce รายชื่อผู้รับจดหมายเกี่ยวกับการประกาศการออกรุ่น]",
+       "config-subscribe-help": "รายชื่อนี้เป็นรายชื่อผู้รับจดหมายที่มีปริมาณต่ำสำหรับแจ้งข่าวเกี่ยวกับการประกาศการออกรุ่น รวมถึงการประกาศความปลอดภัยที่สำคัญ\nคุณควรสมัครรับข้อมูล และทำการอัปเดตการติดตั้ง MediaWiki ของคุณเมื่อมีรุ่นใหม่ออกมา",
+       "config-subscribe-noemail": "คุณได้พยายามสมัครรับข้อมูลกับรายชื่อผู้รับจดหมายการประกาศการออกรุ่นโดยไม่ได้ระบุที่อยู่อีเมล\nโปรดระบุที่อยู่อีเมล ถ้าคุณต้องการสมัครรับข้อมูลกับรายชื่อผู้รับจดหมาย",
+       "config-pingback": "แบ่งปันข้อมูลเกี่ยวกับการติดตั้งนี้ให้กับผู้พัฒนา MediaWiki",
+       "config-almost-done": "คุณใกล้จะเสร็จสมบูรณ์แล้ว!\nคุณสามารถข้ามการกำหนดค่าที่เหลืออยู่และติดตั้งวิกิได้ในขณะนี้",
        "config-optional-continue": "ถามคำถามฉันอีก",
-       "config-license-pd": "สาธารณสมบัติ",
+       "config-optional-skip": "ฉันเบื่อแล้ว ติดตั้งวิกิให้ฉันเถอะ",
+       "config-profile": "โปรไฟล์สิทธิ์ผู้ใช้:",
+       "config-profile-wiki": "วิกิเปิด",
+       "config-profile-no-anon": "จำเป็นต้องสร้างบัญชี",
+       "config-profile-fishbowl": "เฉพาะผู้แก้ไขที่ได้รับอนุญาตเท่านั้น",
+       "config-profile-private": "วิกิส่วนตัว",
+       "config-profile-help": "วิกิต่างๆ จะใช้งานได้ดีที่สุดถ้าคุณเปิดให้หลายๆ คนร่วมแก้ไขวิกิของคุณได้มากเท่าที่จะได้\nใน MediaWiki มันง่ายที่จะตรวจทานการแก้ไขล่าสุด และแปลงกลับความเสียหายใดๆ ที่ถูกกระทำโดยผู้ใช้ที่ไม่มีมารยาทหรือที่เป็นอันตราย\n\nอย่างไรก็ตาม หลายคนได้พบว่า MediaWiki to be useful มีประโยชน์ในหลากหลายบทบาท และในบางครั้งมันไม่ง่ายที่จะทำให้ทุกๆ คนเชื่อว่า MediaWiki นั้นมีประโยชน์ในทางวิกิ\nดังนั้น คุณมีตัวเลือก\n\nแบบจำลอง <strong>{{int:config-profile-wiki}}</strong> อนุญาตให้ทุกๆ คนร่วมแก้ไขได้ โดยไม่จำเป็นต้องเข้าสู่ระบบ\nวิกิที่มี <strong>{{int:config-profile-no-anon}}</strong> จะจัดเตรียมการดำเนินงานพิเศษ แต่อาจห้ามไม่ให้ผู้คนเข้ามามีส่วนร่วม\n\nสถานการณ์จำลอง <strong>{{int:config-profile-fishbowl}}</strong> อนุญาตให้ผู้แก้ไขที่ได้รับการอนุมัติสามารถทำการแก้ไขได้ แต่ทุกคนสามารถมองเห็นหน้า รวมถึงประวัติได้\n<strong>{{int:config-profile-private}}</strong> อนุญาตให้เฉพาะผู้แก้ไขที่ได้รับการอนุมัติดูหน้า และแก้ไขได้\n\nการกำหนดค่าสิทธิ์ผู้ใช้ที่ซับซ้อนขึ้นจะพร้อมใช้งานหลังจากการติดตั้ง ดูที่ [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights รายการคู่มือที่เกี่ยวข้อง]",
+       "config-license": "ลิขสิทธิ์และสัญญาอนุญาต:",
+       "config-license-none": "ไม่มีส่วนท้ายของใบอนุญาต",
+       "config-license-cc-by-sa": "Creative Commons Attribution-ShareAlike",
+       "config-license-cc-by": "Creative Commons Attribution",
+       "config-license-cc-by-nc-sa": "Creative Commons Attribution-NonCommercial-ShareAlike",
+       "config-license-cc-0": "Creative Commons Zero (Public Domain)",
+       "config-license-gfdl": "GNU Free Documentation License 1.3 หรือสูงกว่า",
+       "config-license-pd": "โดเมนสาธารณะ",
+       "config-license-cc-choose": "เลือกสัญญาอนุญาต Creative Commons เอง",
        "config-extensions": "ส่วนขยาย",
        "config-install-step-done": "เสร็จสิ้น",
        "config-install-step-failed": "ล้มเหลว",
index f7394c8..c3a7539 100644 (file)
@@ -58,7 +58,7 @@
        "config-restart": "Evet, yeniden başlat",
        "config-welcome": "===Ortam Kontrolleri===\nOrtamın Mediawiki kurulumuna uygun olup olmadığını anlamak için basit kontroller yapılacak.\nKurulumu nasıl tamamlayacağınız konusunda destek isterken bu bilgileri eklemeyi unutmayın.",
        "config-copyright": "=== Telif Hakları ve Koşulları ===\n\n$1\n\nBu program ücretsiz bir yazılımdır; yeniden dağıtabilir veya Özgür Yazılım Kuruluşu tarafından yayınlanan (GNU) Genel Kamu Lisansı koşulları altında değiştirebilirsiniz; isterseniz ikinci lisans sürümünü veya (sizin seçeneğiniz) herhangi bir sonraki lisans sürümünü kullanabilirsiniz.\n\nBu program, faydalı olacağı umuduyla dağıtılmaktadır, ancak ''' herhangi bir garantisi yoktur '''; ''' uygunluk ''' veya ''' belirli bir amaca uygunluk ''' gibi dolaylı garantileri bile yoktur.\nDaha fazla ayrıntı için (GNU) Genel Kamu Lisansına bakınız.\n\nBu program ile birlikte <doclink href=\"Copying\">bir (GNU) Genel Kamu Lisansının bir kopyasını </doclink> almış olmanız gerekir; bu program (GNU) Genel Kamu Lisansı ile dağıtılmadıysa, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, ABD adresine yazın veya [http://www.gnu.org/copyleft/gpl.html online olarak okuyun].",
-       "config-sidebar": "* [https://www.mediawiki.org MediaWiki ana sayfa]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Kullanıcı Rehberi]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Yetkili Rehberi]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ SSS]\n----\n* <doclink href=Readme>Beni oku</doclink>\n* <doclink href=ReleaseNotes>Sürüm notları</doclink>\n* <doclink href=Copying>Kopyalama</doclink>\n* <doclink href=UpgradeDoc>Yükseltme</doclink>",
+       "config-sidebar": "* [https://www.mediawiki.org MediaWiki anasayfa]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Kullanıcı Kılavuzu]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Hizmetli Rehberi]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ SSS]\n----\n* <doclink href=Readme>Beni oku</doclink>\n* <doclink href=ReleaseNotes>Sürüm notları</doclink>\n* <doclink href=Copying>Kopyalama</doclink>\n* <doclink href=UpgradeDoc>Yükseltme</doclink>",
        "config-env-good": "Ortam kontrol edildi.\nMediaWiki'yi kurabilirsiniz.",
        "config-env-bad": "Ortam kontrol edildi.\nMediaWiki'yi kuramazsınız.",
        "config-env-php": "PHP $1 kurulu.",
        "config-install-stats": "İstatistik başlatılıyor",
        "config-install-keys": "Gizli anahtar oluşturma",
        "config-install-subscribe-notpossible": "cURL yüklü değil ve <code>allow_url_fopen</code> kullanılamaz.",
-       "config-install-mainpage": "Varsayılan içerik ile ana sayfa oluşturma",
+       "config-install-mainpage": "Varsayılan içerik ile anasayfa oluşturma",
        "config-install-extension-tables": "Uzantılar için etkinleştirilmiş tablolar oluşturma",
-       "config-install-mainpage-failed": "Ana sayfa eklenemedi:$1",
+       "config-install-mainpage-failed": "Anasayfa eklenemedi: $1",
        "config-download-localsettings": "İndir <code>LocalSettings.php</code>",
        "config-help": "Yardım",
        "config-help-tooltip": "genişletmek için tıklayın",
index faf5194..877740f 100644 (file)
        "config-instantcommons-help": "[https://www.mediawiki.org/wiki/InstantCommons 即時共享資源] 是允許 Wiki 使用來自 [https://commons.wikimedia.org/ Wikimedia Commons] 網站上的圖片、聲音以及其他媒體的一項功能。\n若要開啟此功能,您的 MediaWiki 必須能夠連線網際網路。\n更多有關此功能的訊息,包含如何存除了 Wikimedia Commons 之外其他網站的說明,請參考 \n[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos 操作手冊]。",
        "config-cc-error": "查無該創作共用授權條款,\n請手動輸入您的授權條款名稱。",
        "config-cc-again": "請重新選取...",
-       "config-cc-not-chosen": "請選擇您要使用的創作共享授權條款,然後點選 \"proceed\"。",
+       "config-cc-not-chosen": "請選擇您要使用的創用CC授權條款,然後點選 \"proceed\"。",
        "config-advanced-settings": "進階設定",
        "config-cache-options": "物件快取設定:",
        "config-cache-help": "物件快取是用來增進 MediaWiki 速度的一項功能,透過快取經常使用的資料。\n中型到大型的網站我們會建議開啟這個選項,對小型的網站也有一定程度的效果。",
index 5226aa0..d9c0424 100644 (file)
@@ -383,8 +383,6 @@ class ClassicInterwikiLookup implements InterwikiLookup {
                                . $e->getMessage() );
                }
 
-               ksort( $data );
-
                return array_values( $data );
        }
 
index 0915b7d..88a883a 100644 (file)
@@ -2019,8 +2019,10 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         * @param string $s
         * @return string
         */
-       protected function escapeLikeInternal( $s ) {
-               return addcslashes( $s, '\%_' );
+       protected function escapeLikeInternal( $s, $escapeChar = '`' ) {
+               return str_replace( [ $escapeChar, '%', '_' ],
+                       [ "{$escapeChar}{$escapeChar}", "{$escapeChar}%", "{$escapeChar}_" ],
+                       $s );
        }
 
        public function buildLike() {
@@ -2032,15 +2034,21 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
                $s = '';
 
+               // We use ` instead of \ as the default LIKE escape character, since addQuotes()
+               // may escape backslashes, creating problems of double escaping. The `
+               // character has good cross-DBMS compatibility, avoiding special operators
+               // in MS SQL like ^ and %
+               $escapeChar = '`';
+
                foreach ( $params as $value ) {
                        if ( $value instanceof LikeMatch ) {
                                $s .= $value->toString();
                        } else {
-                               $s .= $this->escapeLikeInternal( $value );
+                               $s .= $this->escapeLikeInternal( $value, $escapeChar );
                        }
                }
 
-               return " LIKE {$this->addQuotes( $s )} ";
+               return ' LIKE ' . $this->addQuotes( $s ) . ' ESCAPE ' . $this->addQuotes( $escapeChar ) . ' ';
        }
 
        public function anyChar() {
index c736cc7..782727a 100644 (file)
@@ -1110,27 +1110,11 @@ class DatabaseMssql extends Database {
         * @param string $s
         * @return string
         */
-       protected function escapeLikeInternal( $s ) {
-               return addcslashes( $s, '\%_[]^' );
-       }
-
-       /**
-        * MS SQL requires specifying the escape character used in a LIKE query
-        * or using Square brackets to surround characters that are to be escaped
-        * https://msdn.microsoft.com/en-us/library/ms179859.aspx
-        * Here we take the Specify-Escape-Character approach since it's less
-        * invasive, renders a query that is closer to other DB's and better at
-        * handling square bracket escaping
-        *
-        * @return string Fully built LIKE statement
-        */
-       public function buildLike() {
-               $params = func_get_args();
-               if ( count( $params ) > 0 && is_array( $params[0] ) ) {
-                       $params = $params[0];
-               }
-
-               return parent::buildLike( $params ) . " ESCAPE '\' ";
+       protected function escapeLikeInternal( $s, $escapeChar = '`' ) {
+               return str_replace( [ $escapeChar, '%', '_', '[', ']', '^' ],
+                       [ "{$escapeChar}{$escapeChar}", "{$escapeChar}%", "{$escapeChar}_",
+                               "{$escapeChar}[", "{$escapeChar}]", "{$escapeChar}^" ],
+                       $s );
        }
 
        /**
index 9824caf..50ead83 100644 (file)
@@ -532,9 +532,11 @@ abstract class DatabaseMysqlBase extends Database {
                        return true; // already known to exist and won't show in SHOW TABLES anyway
                }
 
-               $encLike = $this->buildLike( $table );
+               // We can't use buildLike() here, because it specifies an escape character
+               // other than the backslash, which is the only one supported by SHOW TABLES
+               $encLike = $this->escapeLikeInternal( $table, '\\' );
 
-               return $this->query( "SHOW TABLES $encLike", $fname )->numRows() > 0;
+               return $this->query( "SHOW TABLES LIKE '$encLike'", $fname )->numRows() > 0;
        }
 
        /**
index 779b4c9..60b6855 100644 (file)
@@ -812,18 +812,6 @@ class DatabaseSqlite extends Database {
                }
        }
 
-       /**
-        * @return string
-        */
-       function buildLike() {
-               $params = func_get_args();
-               if ( count( $params ) > 0 && is_array( $params[0] ) ) {
-                       $params = $params[0];
-               }
-
-               return parent::buildLike( $params ) . "ESCAPE '\' ";
-       }
-
        /**
         * @param string $field Field or column to cast
         * @return string
index 7f43436..e3fc1a6 100644 (file)
@@ -49,6 +49,8 @@ class RedisConnectionPool implements LoggerAwareInterface {
        protected $persistent;
        /** @var int Serializer to use (Redis::SERIALIZER_*) */
        protected $serializer;
+       /** @var string ID for persistent connections */
+       protected $id;
 
        /** @var int Current idle pool size */
        protected $idlePoolSize = 0;
@@ -71,9 +73,10 @@ class RedisConnectionPool implements LoggerAwareInterface {
 
        /**
         * @param array $options
+        * @param string $id
         * @throws Exception
         */
-       protected function __construct( array $options ) {
+       protected function __construct( array $options, $id ) {
                if ( !class_exists( 'Redis' ) ) {
                        throw new RuntimeException(
                                __CLASS__ . ' requires a Redis client library. ' .
@@ -95,6 +98,7 @@ class RedisConnectionPool implements LoggerAwareInterface {
                } else {
                        throw new InvalidArgumentException( "Invalid serializer specified." );
                }
+               $this->id = $id;
        }
 
        /**
@@ -148,7 +152,7 @@ class RedisConnectionPool implements LoggerAwareInterface {
                $id = sha1( serialize( $options ) );
                // Initialize the object at the hash as needed...
                if ( !isset( self::$instances[$id] ) ) {
-                       self::$instances[$id] = new self( $options );
+                       self::$instances[$id] = new self( $options, $id );
                }
 
                return self::$instances[$id];
@@ -230,7 +234,7 @@ class RedisConnectionPool implements LoggerAwareInterface {
                $conn = new Redis();
                try {
                        if ( $this->persistent ) {
-                               $result = $conn->pconnect( $host, $port, $this->connectTimeout );
+                               $result = $conn->pconnect( $host, $port, $this->connectTimeout, $this->id );
                        } else {
                                $result = $conn->connect( $host, $port, $this->connectTimeout );
                        }
index f8202a6..f3c3ed8 100644 (file)
@@ -494,6 +494,7 @@ class ImagePage extends Article {
                                                Xml::openElement( 'form', $formParams ) .
                                                Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
                                                $this->getContext()->msg( 'imgmultigoto' )->rawParams( $select )->parse() .
+                                               $this->getContext()->msg( 'word-separator' )->escaped() .
                                                Xml::submitButton( $this->getContext()->msg( 'imgmultigo' )->text() ) .
                                                Xml::closeElement( 'form' ) .
                                                "<hr />$thumb1\n$thumb2<br style=\"clear: both\" /></div></td></tr></table>"
index 01bf2d0..ffc884e 100644 (file)
@@ -83,7 +83,7 @@ class MWTidy {
        /**
         * @return bool|\MediaWiki\Tidy\TidyDriverBase
         */
-       protected static function singleton() {
+       public static function singleton() {
                global $wgUseTidy, $wgTidyInternal, $wgTidyConf, $wgDebugTidy, $wgTidyConfig,
                        $wgTidyBin, $wgTidyOpts;
 
index 7de3b30..10ac192 100644 (file)
@@ -708,7 +708,7 @@ class ParserOutput extends CacheTime {
         * @since 1.25
         */
        public function addTrackingCategory( $msg, $title ) {
-               if ( $title->getNamespace() === NS_SPECIAL ) {
+               if ( $title->isSpecialPage() ) {
                        wfDebug( __METHOD__ . ": Not adding tracking category $msg to special page!\n" );
                        return false;
                }
index 8c792ad..b8f2fa5 100644 (file)
@@ -170,7 +170,7 @@ class ResourceLoaderClientHtml {
 
                        if ( $module->getType() !== ResourceLoaderModule::LOAD_STYLES ) {
                                $logger = $rl->getLogger();
-                               $logger->debug( 'Unexpected general module "{module}" in styles queue.', [
+                               $logger->warning( 'Unexpected general module "{module}" in styles queue.', [
                                        'module' => $name,
                                ] );
                        } else {
index 3aafc94..fbfda2c 100644 (file)
@@ -254,6 +254,43 @@ abstract class ChangesListSpecialPage extends SpecialPage {
 
                        // reviewStatus (conditional)
 
+                       [
+                               'name' => 'lastRevision',
+                               'title' => 'rcfilters-filtergroup-lastRevision',
+                               'class' => ChangesListBooleanFilterGroup::class,
+                               'priority' => -7,
+                               'filters' => [
+                                       [
+                                               'name' => 'hidelastrevision',
+                                               'label' => 'rcfilters-filter-lastrevision-label',
+                                               'description' => 'rcfilters-filter-lastrevision-description',
+                                               'default' => false,
+                                               'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
+                                                       &$query_options, &$join_conds ) {
+                                                       $conds[] = 'rc_this_oldid <> page_latest';
+                                               },
+                                               'cssClassSuffix' => 'last',
+                                               'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                                                       return $rc->getAttribute( 'rc_this_oldid' ) === $rc->getAttribute( 'page_latest' );
+                                               }
+                                       ],
+                                       [
+                                               'name' => 'hidepreviousrevisions',
+                                               'label' => 'rcfilters-filter-previousrevision-label',
+                                               'description' => 'rcfilters-filter-previousrevision-description',
+                                               'default' => false,
+                                               'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
+                                                       &$query_options, &$join_conds ) {
+                                                       $conds[] = 'rc_this_oldid = page_latest';
+                                               },
+                                               'cssClassSuffix' => 'previous',
+                                               'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                                                       return $rc->getAttribute( 'rc_this_oldid' ) !== $rc->getAttribute( 'page_latest' );
+                                               }
+                                       ]
+                               ]
+                       ],
+
                        [
                                'name' => 'significance',
                                'title' => 'rcfilters-filtergroup-significance',
@@ -355,6 +392,95 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                        ],
                                ],
                        ],
+
+                       [
+                               'name' => 'watchlist',
+                               'title' => 'rcfilters-filtergroup-watchlist',
+                               'class' => ChangesListStringOptionsFilterGroup::class,
+                               'isFullCoverage' => true,
+                               'filters' => [
+                                       [
+                                               'name' => 'watched',
+                                               'label' => 'rcfilters-filter-watchlist-watched-label',
+                                               'description' => 'rcfilters-filter-watchlist-watched-description',
+                                               'cssClassSuffix' => 'watched',
+                                               'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                                                       return $rc->getAttribute( 'wl_user' );
+                                               }
+                                       ],
+                                       [
+                                               'name' => 'watchednew',
+                                               'label' => 'rcfilters-filter-watchlist-watchednew-label',
+                                               'description' => 'rcfilters-filter-watchlist-watchednew-description',
+                                               'cssClassSuffix' => 'watchednew',
+                                               'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                                                       return $rc->getAttribute( 'wl_user' ) &&
+                                                               $rc->getAttribute( 'rc_timestamp' ) > $rc->getAttribute( 'wl_notificationtimestamp' );
+                                               },
+                                       ],
+                                       [
+                                               'name' => 'notwatched',
+                                               'label' => 'rcfilters-filter-watchlist-notwatched-label',
+                                               'description' => 'rcfilters-filter-watchlist-notwatched-description',
+                                               'cssClassSuffix' => 'notwatched',
+                                               'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                                                       return $rc->getAttribute( 'wl_user' ) === null;
+                                               },
+                                       ]
+                               ],
+                               'default' => ChangesListStringOptionsFilterGroup::NONE,
+                               'queryCallable' => function ( $specialPageClassName, $context, $dbr,
+                                       &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedValues ) {
+                                       sort( $selectedValues );
+                                       $notwatchedCond = 'wl_user IS NULL';
+                                       $watchedCond = 'wl_user IS NOT NULL';
+                                       $newCond = 'rc_timestamp >= wl_notificationtimestamp';
+
+                                       if ( $selectedValues === [ 'notwatched' ] ) {
+                                               $conds[] = $notwatchedCond;
+                                               return;
+                                       }
+
+                                       if ( $selectedValues === [ 'watched' ] ) {
+                                               $conds[] = $watchedCond;
+                                               return;
+                                       }
+
+                                       if ( $selectedValues === [ 'watchednew' ] ) {
+                                               $conds[] = $dbr->makeList( [
+                                                       $watchedCond,
+                                                       $newCond
+                                               ], LIST_AND );
+                                               return;
+                                       }
+
+                                       if ( $selectedValues === [ 'notwatched', 'watched' ] ) {
+                                               // no filters
+                                               return;
+                                       }
+
+                                       if ( $selectedValues === [ 'notwatched', 'watchednew' ] ) {
+                                               $conds[] = $dbr->makeList( [
+                                                       $notwatchedCond,
+                                                       $dbr->makeList( [
+                                                               $watchedCond,
+                                                               $newCond
+                                                       ], LIST_AND )
+                                               ], LIST_OR );
+                                               return;
+                                       }
+
+                                       if ( $selectedValues === [ 'watched', 'watchednew' ] ) {
+                                               $conds[] = $watchedCond;
+                                               return;
+                                       }
+
+                                       if ( $selectedValues === [ 'notwatched', 'watched', 'watchednew' ] ) {
+                                               // no filters
+                                               return;
+                                       }
+                               },
+                       ],
                ];
 
                $this->reviewStatusFilterGroupDefinition = [
@@ -642,6 +768,11 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                        'rcfilters-hideminor-conflicts-typeofchange',
                        'rcfilters-typeofchange-conflicts-hideminor'
                );
+
+               $watchlistGroup = $this->getFilterGroup( 'watchlist' );
+               $watchlistGroup->getFilter( 'watched' )->setAsSupersetOf(
+                       $watchlistGroup->getFilter( 'watchednew' )
+               );
        }
 
        /**
@@ -1211,7 +1342,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
         * @param array $selectedExpLevels The allowed active values, sorted
         */
        public function filterOnUserExperienceLevel( $specialPageClassName, $context, $dbr,
-               &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedExpLevels ) {
+               &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedExpLevels, $now = 0 ) {
 
                global $wgLearnerEdits,
                        $wgExperiencedUserEdits,
@@ -1230,7 +1361,9 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                $tables[] = 'user';
                $join_conds['user'] = [ 'LEFT JOIN', 'rc_user = user_id' ];
 
-               $now = time();
+               if ( $now === 0 ) {
+                       $now = time();
+               }
                $secondsPerDay = 86400;
                $learnerCutoff = $now - $wgLearnerMemberSince * $secondsPerDay;
                $experiencedUserCutoff = $now - $wgExperiencedUserMemberSince * $secondsPerDay;
index dc6a619..17c64c8 100644 (file)
@@ -134,14 +134,26 @@ class SpecialJavaScriptTest extends SpecialPage {
                // Catch exceptions (such as "dependency missing" or "unknown module") so that we
                // always start QUnit. Re-throw so that they are caught and reported as global exceptions
                // by QUnit and Karma.
-               $code .= '(function () {'
-                       . 'var start = window.__karma__ ? window.__karma__.start : QUnit.start;'
-                       . 'try {'
-                       . 'mw.loader.using( ' . Xml::encodeJsVar( $modules ) . ' )'
-                       . '.always( start )'
-                       . '.fail( function ( e ) { throw e; } );'
-                       . '} catch ( e ) { start(); throw e; }'
-                       . '}());';
+               $modules = Xml::encodeJsVar( $modules );
+               $code .= <<<CODE
+(function () {
+       var start = window.__karma__ ? window.__karma__.start : QUnit.start;
+       try {
+               mw.loader.using( $modules )
+                       .always( function () {
+                               start();
+                       } )
+                       .fail( function ( e ) {
+                               setTimeout( function () {
+                                       throw e;
+                               } );
+                       } );
+       } catch ( e ) {
+               start();
+               throw e;
+       }
+}());
+CODE;
 
                header( 'Content-Type: text/javascript; charset=utf-8' );
                header( 'Cache-Control: private, no-cache, must-revalidate' );
index 7c4b490..5192eb9 100644 (file)
@@ -84,10 +84,6 @@ class MediaStatisticsPage extends QueryPage {
                                'namespace' => NS_MEDIA, /* needs to be something */
                                'value' => '1'
                        ],
-                       'conds' => [
-                               // WMF has a random null row in the db
-                               'img_media_type IS NOT NULL'
-                       ],
                        'options' => [
                                'GROUP BY' => [
                                        'img_media_type',
index 139e4f7..3a93107 100644 (file)
@@ -475,7 +475,9 @@ class SpecialSearch extends SpecialPage {
                        if ( $title->isKnown() ) {
                                $messageName = 'searchmenu-exists';
                                $linkClass = 'mw-search-exists';
-                       } elseif ( $title->quickUserCan( 'create', $this->getUser() ) ) {
+                       } elseif ( ContentHandler::getForTitle( $title )->supportsDirectEditing()
+                               && $title->quickUserCan( 'create', $this->getUser() )
+                       ) {
                                $messageName = 'searchmenu-new';
                        }
                }
index b8a36b8..bb1e751 100644 (file)
@@ -20,6 +20,7 @@
  * @file
  */
 
+use IPSet\IPSet;
 use MediaWiki\MediaWikiServices;
 use MediaWiki\Session\SessionManager;
 use MediaWiki\Session\Token;
@@ -509,6 +510,17 @@ class User implements IDBAccessObject {
 
                                $ttl = $cache->adaptiveTTL( wfTimestamp( TS_UNIX, $this->mTouched ), $ttl );
 
+                               // if a user group membership is about to expire, the cache needs to
+                               // expire at that time (T163691)
+                               foreach ( $this->mGroupMemberships as $ugm ) {
+                                       if ( $ugm->getExpiry() ) {
+                                               $secondsUntilExpiry = wfTimestamp( TS_UNIX, $ugm->getExpiry() ) - time();
+                                               if ( $secondsUntilExpiry > 0 && $secondsUntilExpiry < $ttl ) {
+                                                       $ttl = $secondsUntilExpiry;
+                                               }
+                                       }
+                               }
+
                                return $data;
 
                        },
@@ -1843,18 +1855,33 @@ class User implements IDBAccessObject {
                        $wgProxyList = array_map( 'trim', file( $wgProxyList ) );
                }
 
-               if ( is_array( $wgProxyList ) ) {
-                       if (
-                               // Look for IP as value
-                               array_search( $ip, $wgProxyList ) !== false ||
-                               // Look for IP as key (for backwards-compatility)
-                               array_key_exists( $ip, $wgProxyList )
-                       ) {
-                               return true;
+               $resultProxyList = [];
+               $deprecatedIPEntries = [];
+
+               // backward compatibility: move all ip addresses in keys to values
+               foreach ( $wgProxyList as $key => $value ) {
+                       $keyIsIP = IP::isIPAddress( $key );
+                       $valueIsIP = IP::isIPAddress( $value );
+                       if ( $keyIsIP && !$valueIsIP ) {
+                               $deprecatedIPEntries[] = $key;
+                               $resultProxyList[] = $key;
+                       } elseif ( $keyIsIP && $valueIsIP ) {
+                               $deprecatedIPEntries[] = $key;
+                               $resultProxyList[] = $key;
+                               $resultProxyList[] = $value;
+                       } else {
+                               $resultProxyList[] = $value;
                        }
                }
 
-               return false;
+               if ( $deprecatedIPEntries ) {
+                       wfDeprecated(
+                               'IP addresses in the keys of $wgProxyList (found the following IP addresses in keys: ' .
+                               implode( ', ', $deprecatedIPEntries ) . ', please move them to values)', '1.30' );
+               }
+
+               $proxyListIPSet = new IPSet( $resultProxyList );
+               return $proxyListIPSet->match( $ip );
        }
 
        /**
@@ -5066,6 +5093,9 @@ class User implements IDBAccessObject {
 
        /**
         * Deferred version of incEditCountImmediate()
+        *
+        * This function, rather than incEditCountImmediate(), should be used for
+        * most cases as it avoids potential deadlocks caused by concurrent editing.
         */
        public function incEditCount() {
                wfGetDB( DB_MASTER )->onTransactionPreCommitOrIdle(
diff --git a/includes/widget/SelectWithInputWidget.php b/includes/widget/SelectWithInputWidget.php
new file mode 100644 (file)
index 0000000..8faae82
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+/**
+ * MediaWiki Widgets – SelectWithInputWidget class.
+ *
+ * @copyright 2011-2017 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+namespace MediaWiki\Widget;
+
+use \OOUI\TextInputWidget;
+use \OOUI\DropdownInputWidget;
+
+/**
+ * Select and input widget.
+ */
+class SelectWithInputWidget extends \OOUI\Widget {
+
+       protected $textinput = null;
+       protected $dropdowninput = null;
+
+       /**
+        * A version of the SelectWithInputWidget, with `or` set to true.
+        *
+        * @param array $config Configuration options
+        * @param array $config['textinput'] Configuration for the TextInputWidget
+        * @param array $config['dropdowninput'] Configuration for the DropdownInputWidget
+        * @param boolean $config['or'] Configuration for whether the widget is dropdown AND input
+        *                              or dropdown OR input
+        */
+       public function __construct( array $config = [] ) {
+               // Configuration initialization
+               $config = array_merge(
+                       [
+                               'textinput' => [],
+                               'dropdowninput' => [],
+                               'or' => false
+                       ],
+                       $config
+               );
+
+               // Parent constructor
+               parent::__construct( $config );
+
+               // Properties
+               $this->config = $config;
+               $this->textinput = new TextInputWidget( $config['textinput'] );
+               $this->dropdowninput = new DropdownInputWidget( $config['dropdowninput'] );
+
+               // Initialization
+               $this
+                       ->addClasses( [ 'mw-widget-selectWithInputWidget' ] )
+                       ->appendContent( $this->dropdowninput, $this->textinput );
+       }
+
+       protected function getJavaScriptClassName() {
+               return 'mw.widgets.SelectWithInputWidget';
+       }
+
+       public function getConfig( &$config ) {
+               $config['textinput'] = $this->config['textinput'];
+               $config['dropdowninput'] = $this->config['dropdowninput'];
+               $config['or'] = $this->config['or'];
+               return parent::getConfig( $config );
+       }
+}
index 39e02e6..d1715d2 100644 (file)
@@ -132,6 +132,7 @@ class Names {
                'de-at' => 'Österreichisches Deutsch', # Austrian German
                'de-ch' => 'Schweizer Hochdeutsch', # Swiss Standard German
                'de-formal' => "Deutsch (Sie-Form)\xE2\x80\x8E", # German - formal address ("Sie")
+               'din' => 'Thuɔŋjäŋ', # Dinka
                'diq' => 'Zazaki', # Zazaki
                'dsb' => 'dolnoserbski', # Lower Sorbian
                'dtp' => 'Dusun Bundu-liwan', # Central Dusun
index 6512225..a741daa 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Gutsul",
-                       "Amir E. Aharoni (amir.aharoni@mail.huji.ac.il)"
+                       "Amir E. Aharoni (amir.aharoni@mail.huji.ac.il)",
+                       "Eugene Gvozdetsky (epgvozdet@gmail.com)"
                ],
                "comment": "These rules don't cover the whole grammar of the language, and are intended only for names of languages and Wikimedia projects."
        },
        ],
        "accusative": [
                [ "(.+)ія$", "$1ію" ]
+       ],
+       "languagegen": [
+               [ "@metadata", [
+                       "comment", "мова в родовому відмінку: '(з) української'"
+               ] ],
+               [ "(.+)ка$", "$1кої" ],
+               [ "іврит$", "івриту" ],
+               [ "їдиш$", "їдишу" ],
+               [ "(.+)$", "$1" ]
+       ],
+       "languageadverb": [
+               [ "@metadata", [
+                       "comment", "прислівник з назвою мови: 'українською'"
+               ] ],
+               [ "(.+)ка$", "$1кою" ],
+               [ "іврит$", "івритом" ],
+               [ "їдиш$", "їдишом" ],
+               [ "(.+)$", "мовою $1" ]
        ]
 }
index 9187f84..ec368ad 100644 (file)
        "viewyourtext": "يمكنك رؤية و نسخ مصدر <strong>تعديلاتك</strong> لهذه الصفحة.",
        "protectedinterface": "توفر هذه الصفحة نص الواجهة للبرنامج على هذا الويكي، وهي محمية لمنع سوء أستخدامها.\nلإضافة أو تغيير الترجمات لجميع مشاريع الويكي، رجاءً أستخدم [https://translatewiki.net/ translatewiki.net]، مشروع الترجمة الخاص بميدياويكي.",
        "editinginterface": "<strong>تنبيه:</strong> تعديل هذه الصفحة سيحفظ في هذا الويكي فقط. لتعميم التعديل على جميع مشاريع ميدياويكي، عدلها في [https://translatewiki.net/ مشروع ترجمة الويكي].",
-       "translateinterface": "من أجل إضافة أو تعديل ترجمات في كل مشاريع الويكي يرجى استخدم [https://translatewiki.net/ translatewiki.net]، مشروع ميدياويكي لترجمة الواجهة.",
+       "translateinterface": "من أجل إضافة أو تعديل ترجمات في كل مشاريع الويكي يرجى استخدام [https://translatewiki.net/ translatewiki.net]، مشروع ميدياويكي لترجمة الواجهة.",
        "cascadeprotected": "تمت حماية هذه الصفحة من التعديل لأنها مدمجة في {{PLURAL:$1||الصفحة التالية، والتي|الصفحتين التاليتين، واللتين|الصفحات التالية، والتي}} تم استعمال خاصية \"حماية الصفحات المدمجة\" {{PLURAL:$1||بها|بهما|بها}}:\n$2",
        "namespaceprotected": "لا تمتلك الصلاحية لتعديل الصفحات في نطاق '''$1'''.",
        "customcssprotected": "أنت لا تمتلك السماح لتعديل صفحة الCSS هذه، لأنها تحتوي على الإعدادات الشخصية لمستخدم آخر.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "هذا المرشح يتعارض مع {{PLURAL:$2|مرشح الخبرة التالي|مرشحات الخبرة التالية}}، و {{PLURAL:$2|الذي يعطي|التي تعطي}} فقط المستخدمين المسجلين: $1",
        "rcfilters-filtergroup-authorship": "ملكية التعديلات",
        "rcfilters-filter-editsbyself-label": "تعديلاتك الشخصية",
-       "rcfilters-filter-editsbyself-description": "التعديلات بواسطتك.",
-       "rcfilters-filter-editsbyother-label": "اÙ\84تعدÙ\8aÙ\84ات بواسطة الآخرين",
-       "rcfilters-filter-editsbyother-description": "التعديلات المنشأة بواسطة المستخدمين الآخرين (ليس أنت).",
+       "rcfilters-filter-editsbyself-description": "مساهماتك الشخصية.",
+       "rcfilters-filter-editsbyother-label": "اÙ\84تغÙ\8aÙ\8aرات بواسطة الآخرين",
+       "rcfilters-filter-editsbyother-description": "كل التغييرات باستثناء تغييراتك.",
        "rcfilters-filtergroup-userExpLevel": "مستوى الخبرة (للمستخدمين المسجلين فقط)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "مرشحات الخبرة تعطي فقط المستخدمين المسجلين، لذا فهذا المرشح يتعارض مع مرشح \"غير المسجلين\".",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "مرشح \"غير المسجلين\" يتعارض مع واحد أو أكثر من مرشحات الخبرة، والتي تعطي المستخدمين المسجلين فقط. المرشحات المتعارضة معلم عليها في مساحة المرشحات النشطة، بالأعلى.",
        "enotif_body_intro_moved": "صفحة {{SITENAME}} $1 {{GENDER:$2|نقلها|نقلتها}} $2 في $PAGEEDITDATE. لمشاهدة النسخة الحالية راجع $3.",
        "enotif_body_intro_restored": "صفحة {{SITENAME}} $1 {{GENDER:$2|استرجعها|استرجعتها}} $2 في $PAGEEDITDATE. لمشاهدة النسخة الحالية راجع $3.",
        "enotif_body_intro_changed": "صفحة {{SITENAME}} $1 {{GENDER:$2|عدلها|عدلتها}} $2 في $PAGEEDITDATE. لمشاهدة النسخة الحالية راجع $3.",
-       "enotif_lastvisited": "انظر $1 لكل التغييرات منذ زيارتك الأخيرة.",
-       "enotif_lastdiff": "انظر $1 لرؤية هذا التغيير.",
+       "enotif_lastvisited": "لكل التغييرات منذ زيارتك الأخيرة، انظر $1",
+       "enotif_lastdiff": "لرؤية هذا التغيير، انظر $1",
        "enotif_anon_editor": "مستخدم مجهول $1",
        "enotif_body": "عزيزي $WATCHINGUSERNAME\n\n$PAGEINTRO $NEWPAGE\n\nملخص التعديل: $PAGESUMMARY $PAGEMINOREDIT\n\nاتصل بالمحرر:\nالبريد: $PAGEEDITOR_EMAIL\nويكي: $PAGEEDITOR_WIKI\n\nلن يكون هناك إخطارات أخرى في حالة حدوث مزيد من التغييرات إلا إذا قمت بزيارة تلك الصفحة أثناء تواجدك. يمكنك أيضاً إزالة العلامات عن جميع الصفحات في قائمة مراقبتك.\n\nنظام {{SITENAME}} للإشعار\n\n--\nلتغيير إعدادات الإشعار بالبريد الإلكتروني الخاص بك، قم بزيارة\n{{canonicalurl:{{#special:Preferences}}}}\n\nلتغيير إعدادات قائمة مراقبتك، قم بزيارة\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nلحذف الصفحة من قائمة مراقبتك، قم بزيارة\n$UNWATCHURL\n\nللمقترحات وللحصول على مساعدة إضافية:\n$HELPPAGE",
        "created": "أنشئت",
        "blocklist-timestamp": "الزمن",
        "blocklist-target": "الهدف",
        "blocklist-expiry": "ينتهي في",
-       "blocklist-by": "حظر Ø§Ù\84Ù\85شرÙ\81",
+       "blocklist-by": "اÙ\84إدارÙ\8a Ø§Ù\84Ù\85اÙ\86ع",
        "blocklist-params": "معطيات المنع",
        "blocklist-reason": "السبب",
        "ipblocklist-submit": "بحث",
        "tooltip-pt-anontalk": "نقاش حول التعديلات من عنوان الأيبي هذا",
        "tooltip-pt-preferences": "{{GENDER:|Your}} تفضيلاتي",
        "tooltip-pt-watchlist": "قائمة الصفحات التي تراقب التغييرات التي تحدث بها",
-       "tooltip-pt-mycontris": "قائمة{{GENDER:|your}}  مساهماتك",
+       "tooltip-pt-mycontris": "قائمة مساهمات{{GENDER:|ك}}",
        "tooltip-pt-anoncontribs": "قائمة بتعديلات قام بها عنوان الآي بي",
        "tooltip-pt-login": "يفضل أن تسجل الدخول، لكنه ليس إلزاميا.",
        "tooltip-pt-login-private": "عليك تسجيل الدخول لاستخدام هذه الويكي.",
index 527710a..db15fe3 100644 (file)
        "undeletelink": "شوف/رجع",
        "undeleteviewlink": "شوف",
        "undelete-show-file-submit": "إيه",
-       "namespace": "بلاصه تع أسموات",
+       "namespace": "بلاصة تاع أسماوات",
        "invert": "اعكس التخيار",
        "tooltip-invert": "علّم هاد المقّبسة باش تخبّي التبدالات تاع الصفحات الّي فيها وسَع` التسمية (و وسَع التسمية المربوط يلا كاين)",
        "namespace_association": "وسَع التسمية المربوط",
index 3085f60..7b9e361 100644 (file)
        "searcharticle": "যাওক",
        "history": "পৃষ্ঠা ইতিহাস",
        "history_short": "ইতিহাস",
+       "history_small": "ইতিহাস",
        "updatedmarker": "মোৰ শেহতীয়া পৰিদৰ্শনৰ পাছৰ সালসলনিবোৰ",
        "printableversion": "মুদ্ৰণযোগ্য সংস্কৰণ",
        "permalink": "স্থায়ী সূত্ৰ (লিংক)",
        "views": "দৰ্শন",
        "toolbox": "সঁজুলিসমূহ",
        "tool-link-userrights": "{{GENDER:$1|সদস্য}} গোটসমূহ সলাওক",
+       "tool-link-userrights-readonly": "{{GENDER:$1|সদস্য}} গোটসমূহ চাওক",
        "tool-link-emailuser": "এই {{GENDER:$1|সদস্যজনক}} ইমেইল কৰক",
        "userpage": "সদস্য পৃষ্ঠা চাওক",
        "projectpage": "প্ৰকল্প পৃষ্ঠা চাওক",
        "protectedinterface": "এই পৃষ্ঠাই ৱিকি ছফ্টৱেৰৰ ইণ্টাৰফে’চ বাৰ্তা প্ৰদান কৰে আৰু ইয়াক সুৰক্ষিত কৰি ৰখা হৈছে।\nসকলো ৱিকিৰ বাবে অনুবাদ যোগ কৰিবলৈ বা সলাবলৈ অনুগ্ৰহ কৰি মিডিয়াৱিকি স্থানীয়কৰণ প্ৰকল্প [https://translatewiki.net/ translatewiki.net] ব্যৱহাৰ কৰক।",
        "editinginterface": "<strong>সাৱধানবাণী:</strong> আপুনি সম্পাদনা কৰি থকা পৃষ্ঠাটো এই ছফ্টৱেৰৰ ইণ্টাৰফে’চ বাৰ্তা দিবলৈ ব্যৱহাৰ হয়।\nএই পৃষ্ঠাৰ সাল-সলনিয়ে এই ৱিকিত আন ব্যৱহাৰকাৰীৰ বাবে ইণ্টাৰফে’চত প্ৰভাৱ পেলাব।",
        "translateinterface": "সকলো ৱিকিৰ বাবে অনুবাদ যোগ বা সালসলনি কৰিবৰ বাবে অনুগ্ৰহ কৰি মিডিয়াৱিকি স্থানীয়কৰণ প্ৰকল্প //translatewiki.net/ translatewiki.net] ব্যৱহাৰ কৰক।",
-       "cascadeprotected": "à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¸à¦®à§\8dপাদনাৰ à¦ªà§°à¦¾ à¦¸à§\81ৰà¦\95à§\8dষিত à¦\95াৰণ à¦\8fà¦\87 {{PLURAL:$1|পà§\83ষà§\8dঠা, à¦¯à¦¿à¦\9fà§\8b|পà§\83ষà§\8dঠা, যিবোৰ}} \"প্ৰপাতাকাৰ\" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: \n$2",
+       "cascadeprotected": "à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¸à¦®à§\8dপাদনাৰ à¦ªà§°à¦¾ à¦¸à§\81ৰà¦\95à§\8dষিত à¦\95াৰণ à¦\87 à¦¨à¦¿à¦®à§\8dনà§\8bà¦\95à§\8dত {{PLURAL:$1|পà§\83ষà§\8dঠাত|পà§\83ষà§\8dঠাবà§\8bৰত}} à¦\85নà§\8dতৰà§\8dভà§\81à¦\95à§\8dত, {{PLURAL:$1|যি|যিবোৰ}} \"প্ৰপাতাকাৰ\" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: \n$2",
        "namespaceprotected": "আপোনাৰ '''$1''' নামস্থানৰ পৃষ্ঠাসমূহ সম্পাদনা কৰাৰ অধিকাৰ নাই।",
        "customcssprotected": "এই CSS পৃষ্ঠা সম্পাদনা কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদস্যৰ ব্যক্তিগত পছন্দসমূহত আছে ।",
        "customjsprotected": "এই জাভালিপিৰ পৃষ্ঠা সম্পাদনা কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদস্যৰ ব্যক্তিগত পছন্দসমূহত আছে ।",
        "mypreferencesprotected": "পছন্দসমূহ সম্পাদনা কৰিবলৈ আপোনাৰ অনুমতি  নাই।",
        "ns-specialprotected": "বিশেষ পৃষ্ঠা সম্পাদিত কৰিব নোৱাৰি।",
        "titleprotected": "[[User:$1|$1]] সদস্যজনে এই শিৰোনাণমাৰ লিখনী লিখা ৰোধ কৰিছে ।\nইয়াৰ কাৰণ হৈছে <em>$2</em> ।",
-       "filereadonlyerror": "\"$1\" ফাইলটোক পৰিৱৰ্তন কৰিব পৰা নগ'ল কাৰণ ফাইল ভঁৰাল \"$2\" কেৱল পঢ়িব পৰা অৱস্থাত আছে।\nযিজন প্ৰশাসকে এইটো বন্ধ কৰিছে তেওঁ দৰ্শোৱা কাৰণ হৈছে: ''$3''।",
+       "filereadonlyerror": "\"$1\" à¦«à¦¾à¦\87লà¦\9fà§\8bà¦\95 à¦ªà§°à¦¿à§±à§°à§\8dতন à¦\95ৰিব à¦ªà§°à¦¾ à¦¨à¦\97'ল à¦\95াৰণ à¦«à¦¾à¦\87ল à¦­à¦\81ৰাল \"$2\" à¦\95à§\87ৱল à¦ªà¦¢à¦¼à¦¿à¦¬ à¦ªà§°à¦¾ à¦\85ৱসà§\8dথাত à¦\86à¦\9bà§\87।\nযিà¦\9cন à¦\9bà§\80ষà§\8dà¦\9fà§\87ম à¦ªà§\8dৰশাসà¦\95à§\87 à¦\8fà¦\87à¦\9fà§\8b à¦¬à¦¨à§\8dধ à¦\95ৰিà¦\9bà§\87 à¦¤à§\87à¦\93à¦\81 à¦¦à§°à§\8dশà§\8bৱা à¦\95াৰণ à¦¹à§\88à¦\9bà§\87: ''$3''।",
        "invalidtitle-knownnamespace": "নামস্থান \"$2\" আৰু পাঠ্য \"$3\" থকা অবৈধ শিৰোনাম",
        "invalidtitle-unknownnamespace": "অজ্ঞাত নামস্থান সংখ্যা $1 আৰু পাঠ্য \"$2\" থকা অবৈধ শিৰোনাম",
        "exception-nologin": "প্ৰৱেশ কৰা নাই",
        "cannotlogin-text": "প্ৰৱেশ কৰা সম্ভৱ নহয়",
        "cannotloginnow-title": "এতিয়া প্ৰৱেশ কৰিব নোৱাৰি",
        "cannotloginnow-text": "$1 ব্যৱহাৰ কৰাৰ সময়ত প্ৰৱেশ কৰিব নোৱাৰি।",
+       "cannotcreateaccount-title": "একাউণ্ট সৃষ্টি কৰিব নোৱাৰি",
+       "cannotcreateaccount-text": "পোনপটীয়া একাউণ্ট সৃষ্টি এই ৱিকিত সম্ভৱ নহয়।",
        "yourdomainname": "আপোনাৰ ডমেইন:",
        "password-change-forbidden": "আপুনি এই ৱিকিত গুপ্তশব্দ সলাব নোৱাৰে।",
        "externaldberror": "কোনো প্ৰামাণ্যকৰণ তথ্যকোষৰ ত্ৰুটি ঘটিছে নতুবা আপোনাৰ বৰ্হি-একাউণ্ট নৱীকৰণ কৰাৰ অনুমতি নাই ।",
        "login": "প্ৰৱেশ",
+       "login-security": "আপোনাৰ পৰিচয়ৰ প্ৰমাণ দিয়ক",
        "nav-login-createaccount": "প্ৰৱেশ/সদস্যভুক্তি",
        "logout": "প্ৰস্থান",
        "userlogout": "প্ৰস্থান",
        "userlogin-resetpassword-link": "আপোনাৰ গুপ্তশব্দ পাহৰিছে?",
        "userlogin-helplink2": "প্ৰৱেশ সংক্ৰান্তীয় সাহায্য",
        "userlogin-loggedin": "আপুনি ইতিমধ্যে {{GENDER:$1|$1}} হিচাপে প্ৰৱেশ কৰিছে। তলৰ আন সদস্যৰূপে প্ৰৱেশ কৰিবলৈ তলৰ প্ৰপত্ৰ ব্যৱহাৰ কৰক।",
+       "userlogin-reauth": "আপুনি যে {{GENDER:$1|$1}} সেয়া প্ৰমাণ কৰিবলৈ আকৌ এবাৰ প্ৰৱেশ কৰিব লাগিব।",
        "userlogin-createanother": "আন এটা একাউণ্ট সৃষ্টি কৰক",
        "createacct-emailrequired": "ই-মেইল ঠিকনা",
        "createacct-emailoptional": "ই-মেইল ঠিকনা (বৈকল্পিক)",
        "createacct-email-ph": "আপোনাৰ ই-মেইল ঠিকনা লিখক",
        "createacct-another-email-ph": "ইমেইল ঠিকনা লিখক",
        "createaccountmail": "এটা যাদৃচ্ছিক অস্থায়ী গুপ্তশব্দ ব্যৱহাৰ কৰক আৰু ইয়াক তলত দিয়া ইমেইল ঠিকনাটোলৈ পঠিয়াই দিয়ক",
+       "createaccountmail-help": "গুপ্তশব্দ নজনাকৈ অন্য ব্যক্তিৰ বাবে একাউণ্ট সৃষ্টিত ব্যৱহাৰ কৰিব পৰি।",
        "createacct-realname": "প্ৰকৃত নাম (বৈকল্পিক)",
        "createacct-reason": "কাৰণ",
        "createacct-reason-ph": "আপুনি কিয় আন এটা একাউণ্ট সৃষ্টি কৰিছে",
        "createacct-submit": "আপোনাৰ একাউণ্ট সৃষ্টি কৰক",
        "createacct-another-submit": "একাউণ্ট সৃষ্টি কৰক",
+       "createacct-continue-submit": "একাউণ্ট সৃষ্টি অব্যাহত ৰাখক",
+       "createacct-another-continue-submit": "একাউণ্ট সৃষ্টি অব্যাহত ৰাখক",
        "createacct-benefit-heading": "আপোনাৰ দৰে মানুহেই {{SITENAME}} তৈয়াৰ কৰিছে",
        "createacct-benefit-body1": "{{PLURAL:$1|সম্পাদনা}}",
        "createacct-benefit-body2": "{{PLURAL:$1|পৃষ্ঠা|পৃষ্ঠাসমূহ}}",
        "nocookiesnew": "আপোনাৰ সদস্যভুক্তি হৈ গৈছে, কিন্তু আপুনি প্ৰৱেশ কৰা নাই।\n{{SITENAME}}ত প্ৰৱেশ কৰিবলৈ কুকি সক্ৰিয় থাকিব লাগিব।\nআপুনি কুকি নিষ্ক্ৰিয় কৰি থৈছে।\nঅনুগ্ৰহ কৰি কুকি সক্ৰিয় কৰক, আৰু তাৰ পাছত আপোনাৰ সদস্য নামেৰে প্ৰৱেশ কৰক।",
        "nocookieslogin": "{{SITENAME}} ত প্ৰৱেশ কৰিবলৈ কুকি সক্ৰিয় থাকিব লাগিব।\nআপুনি কুকি নিষ্ক্ৰিয় কৰি থৈছে।\nঅনুগ্ৰহ কৰি কুকি সক্ৰিয় কৰক, আৰু তাৰ পাছত চেষ্টা কৰক।",
        "nocookiesfornew": "সদস্য একাউন্ট সৃষ্টি কৰা নহল, কাৰণ তাৰ উৎস অনিশ্চিত ।\nআপোনাৰ কুকি সক্ৰিয় ৰাখক, এই পৃষ্ঠা ৰি-লোড কৰি পুনৰ চেষ্টা কৰক ।",
+       "createacct-loginerror": "একাউণ্ট সফলতাৰে সৃষ্টি কৰা হ'ল কিন্তু স্বয়ংক্ৰিয়ভাৱে আপোনাৰ প্ৰৱেশ সম্ভৱ নহয়। অনুগ্ৰহ কৰি [[Special:UserLogin|মেনুৱেল প্ৰৱেশ]] কৰক।",
        "noname": "আপুনি বৈধ সদস্যনাম এটা দিয়া নাই।",
-       "loginsuccesstitle": "পà§\8dৰৱà§\87শ à¦\85নà§\81মà§\8bদিত à¦¹'ল",
+       "loginsuccesstitle": "প্ৰৱেশ হ'ল",
        "loginsuccess": "''' আপুনি {{SITENAME}}ত \"$1\" নামেৰে প্ৰৱেশ কৰিলে '''",
-       "nosuchuser": "\"$1\" নামৰ কোনো সদস্য নাই।\nসদস্য নাম আকাৰ সংবেদনশীল।\nআপোনাৰ বানানতো চাওক, বা  [[Special:CreateAccount|নতুন সদস্যভুক্তি কৰক]]।",
+       "nosuchuser": "\"$1\" নামৰ কোনো সদস্য নাই।\nসদস্য নাম আকাৰ সংবেদনশীল।\nআপোনাৰ বানান পৰীক্ষা কৰক, বা  [[Special:CreateAccount|নতুন একাউণ্ট সৃষ্টি কৰক]]।",
        "nosuchusershort": "\"$1\" এই নামৰ কোনো সদস্য নাই ।\nবানানতো আকৌ এবাৰ ভালদৰে চাওক ।",
        "nouserspecified": "সদস্যনাম দিয়া বাধ্যতামূলক।",
        "login-userblocked": "এই সদস্যক নিষেধ কৰা হৈছে। প্ৰৱেশ অসম্ভৱ।",
        "wrongpasswordempty": "দিয়া গুপ্তশব্দতো খালী; অনুগ্ৰহ কৰি আকৌ এবাৰ চেষ্টা কৰক। ।",
        "passwordtooshort": "গুপ্তশব্দ কমেও {{PLURAL:$1|১ টা|$1 টা}} আখৰৰ হ'ব লাগিব ।",
        "passwordtoolong": "গুপ্তশব্দ {{PLURAL:$1|১ টা আখৰতকৈ|$1 টা আখৰতকৈ}} দীঘল হ'ব নোৱাৰে।",
+       "passwordtoopopular": "সাধাৰাণভাৱে নিৰ্বাচিত গুপ্তশব্দ ব্যৱহাৰ কৰিব নোৱাৰি। অনুগ্ৰহ কৰি এটা অনন্য গুপ্তশব্দ ব্যৱহাৰ কৰক।",
        "password-name-match": "আপোনাৰ গুপ্তশব্দ আৰু আপোনাৰ সদস্যনাম বেলেগ হ'ব লাগিব",
        "password-login-forbidden": "এই সদস্যনাম আৰু গুপ্তশব্দৰ ব্যৱহাৰ নিষিদ্ধ কৰা হৈছে ।",
        "mailmypassword": "গুপ্তশব্দ ন-কৈ বহুৱাওক",
        "noemail": "\"$1\" সদস্যজনৰ কোনো ই-মেইল ঠিকনা সঞ্চিত কৰা নাই।",
        "noemailcreate": "আপুনি এটা সঠিক ই-মেইল ঠিকনা দিব লাগিব",
        "passwordsent": "\"$1\" ৰ ই-মেইল ঠিকনাত নতুন গুপ্তশব্দ এটা পঠোৱা হৈছে। অনুগ্ৰহ কৰি সেয়া পোৱাৰ পাছত পুনৰ প্ৰৱেশ কৰক।",
-       "blocked-mailpassword": "à¦\86পà§\8bনাৰ à¦\86à¦\87পি à¦ à¦¿à¦\95নাৰ à¦ªà§°à¦¾ à¦¸à¦®à§\8dপাদনা à¦\95ৰা à¦¬à¦¾à§°à¦£ à¦\95ৰা à¦¹à§\88à¦\9bà§\87, à¦\8fনà§\87 à¦\85ৱসà§\8dথাত à¦¦à§\81ৰà§\8dবà§\8dযৱহাৰ à§°à§\8bধ à¦\95ৰিবলà§\88 à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà§\81নà¦\83à¦\89দà§\8dধাৰ à¦\95ৰা à¦¸à§\81বিধাà¦\93 à¦¬à¦¾à¦¤à¦¿à¦² à¦\95ৰা à¦¹à§\88à¦\9bà§\87।",
+       "blocked-mailpassword": "à¦\86পà§\8bনাৰ à¦\86à¦\87পি à¦ à¦¿à¦\95নাৰ à¦ªà§°à¦¾ à¦¸à¦®à§\8dপাদনা à¦\95ৰা à¦¬à¦¾à§°à¦£ à¦\95ৰা à¦¹à§\88à¦\9bà§\87, à¦\8fনà§\87 à¦\85ৱসà§\8dথাত à¦¦à§\81ৰà§\8dবà§\8dযৱহাৰ à§°à§\8bধ à¦\95ৰিবলà§\88 à¦\8fà¦\87 à¦\86à¦\87পি à¦ à¦¿à¦\95নাৰ à¦ªà§°à¦¾ à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà§\81নৰà§\81দà§\8dধাৰ à¦\95ৰা à¦\85নà§\81মতি à¦¦à¦¿à¦¯à¦¼à¦¾ à¦¹à§\8bৱা à¦¨à¦¾à¦\87।",
        "eauthentsent": "সঞ্চিত ই-মেইল ঠিকনালৈ নিশ্চিতকৰণ ই-মেইল এখন পঠিওৱা হৈছে।\nএকাউণ্টটোলৈ আন ই-মেইল পঠিওৱাৰ আগতে আপোনাৰ সদস্যতা নিশ্চিত কৰিবলৈ সেই ই-মেইলত দিয়া নিৰ্দেশনা আপুনি অনু্সৰণ কৰিব লাগিব।",
        "throttled-mailpassword": "যোৱা {{PLURAL:$1|এঘণ্টাত|$1 ঘণ্টাত}} এখন গুপ্তশব্দ উদ্ধাৰ ইমেইল পঠিওৱা হৈছে।\nঅবৈধ ব্যৱহাৰ ৰোধ কৰিবলৈ প্ৰতি {{PLURAL:$1|এঘণ্টাত|$1 ঘণ্টাত}} এবাৰহে গুপ্তশব্দ উদ্ধাৰ ইমেইল পঠিওৱা হ'ব।",
        "mailerror": "ই-মেইল পঠিওৱাত সমস্যা হৈছে: $1",
        "resetpass_submit": "গুপ্তশব্দ বহুৱাওক আৰু প্ৰৱেশ কৰক",
        "changepassword-success": "আপোনাৰ গুপ্তশব্দ সফলতাৰে সলনি কৰা হৈছে!",
        "changepassword-throttled": "আপুনি স‍ম্প্ৰতি অজস্ৰবাৰ লগ্‌-ইনৰ প্ৰয়াস কৰিছে।\nঅনুগ্ৰহ কৰি $1 সময়ৰ পিছত আকৌ চেষ্টা কৰক।",
+       "botpasswords-label-create": "সৃষ্টি কৰক",
+       "botpasswords-label-update": "আপডেট কৰক",
+       "botpasswords-label-cancel": "বাতিল কৰক",
+       "botpasswords-label-delete": "বিলোপ কৰক",
+       "botpasswords-label-resetpassword": "গুপ্তশব্দ ন-কৈ বহুৱাওক",
+       "botpasswords-label-grants": "প্ৰয়োগযোগ্য অনুমোদন:",
+       "botpasswords-label-grants-column": "অনুমোদিত",
        "resetpass_forbidden": "গুপ্তশব্দ সলনি কৰিব নোৱাৰি",
        "resetpass-no-info": "এই পৃষ্ঠাটোত প্ৰৱেশাধিকাৰ পাবলৈ আপুনি লগ্‌ ইন কৰিব লাগিব ।",
        "resetpass-submit-loggedin": "গুপ্তশব্দ সলনি কৰক",
        "watchthis": "এই পৃষ্ঠাটো লক্ষ্য কৰক",
        "savearticle": "পৃষ্ঠা সাঁচক",
        "savechanges": "সাঁচি থওক",
+       "publishpage": "পৃষ্ঠা প্ৰকাশ কৰক",
        "publishchanges": "সালসলনি প্ৰকাশ কৰক",
        "preview": "খচৰা",
        "showpreview": "খচৰা চাওক",
index c51e568..be73fdd 100644 (file)
        "redirectedfrom": "(Redirixío dende $1)",
        "redirectpagesub": "Páxina de redireición",
        "redirectto": "Redirixe a:",
-       "lastmodifiedat": "L'últimu cambiu d'esta páxina foi el $1, a les $2.",
+       "lastmodifiedat": "La última edición d'esta páxina foi el $1, a les $2.",
        "viewcount": "Esta páxina visitóse {{PLURAL:$1|una vegada|$1 vegaes}}.",
        "protectedpage": "Páxina protexida",
        "jumpto": "Saltar a:",
        "readonlywarning": "<strong>Avisu: La base de datos ta candada por mantenimientu, polo que nun vas poder guardar les tos ediciones nestos momentos.</strong>\nSeique habríes copiar y apegar el testu nun ficheru de testu y guardalu pa intentalo sero.\n\nL'alministrador del sistema que la candó dio esta esplicación: $1",
        "protectedpagewarning": "'''Avisu: Esta páxina ta candada pa que sólo los alministradores puean editala.'''\nLa cabera entrada del rexistru s'ufre darréu pa referencia:",
        "semiprotectedpagewarning": "'''Nota:''' Esta páxina ta candada pa que nun puean editala namái que los usuarios rexistraos.\nLa cabera entrada del rexistru s'ufre darréu pa referencia:",
-       "cascadeprotectedwarning": "<strong>Avisu:</strong> Esta páxina ta candada pa que namái los alministradores puedan editala porque ta trescluída {{PLURAL:$1|na siguiente páxina protexida|nes siguientes páxines protexíes}} en cascada:",
+       "cascadeprotectedwarning": "<strong>Avisu:</strong> Esta páxina ta candada pa que namái los usuarios con [[Special:ListGroupRights|determinaos permisos]] puedan editala porque ta trescluída {{PLURAL:$1|na siguiente páxina protexida|nes siguientes páxines protexíes}} en cascada:",
        "titleprotectedwarning": "'''Avisu: Esta páxina ta candada pa que necesite [[Special:ListGroupRights|permisos especiales]] pa creala.'''\nLa cabera entrada del rexistru s'ufre darréu pa referencia:",
        "templatesused": "{{PLURAL:$1|Plantía usada|Plantíes usaes}} nesta páxina:",
        "templatesusedpreview": "{{PLURAL:$1|Plantía usada|Plantíes usaes}} nesta vista previa:",
        "rcfilters-filter-unregistered-label": "Non rexistraos",
        "rcfilters-filter-unregistered-description": "Editores ensin coneutar.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Esti filtru fai conflictu {{PLURAL:$2|col siguiente filtru|colos siguientes filtros}} Experience, qu'{{PLURAL:$2|alcuentra|alcuentren}} sólo usuarios rexistraos: $1",
-       "rcfilters-filtergroup-authorship": "Editar autoría",
-       "rcfilters-filter-editsbyself-label": "Les tos propies ediciones",
-       "rcfilters-filter-editsbyself-description": "Ediciones de to",
-       "rcfilters-filter-editsbyother-label": "Ediciones d'otros",
-       "rcfilters-filter-editsbyother-description": "Ediciones creaes por otros usuarios (non por ti).",
+       "rcfilters-filtergroup-authorship": "Autoría de la contribución",
+       "rcfilters-filter-editsbyself-label": "Cambios de to",
+       "rcfilters-filter-editsbyself-description": "Contribuciones de to.",
+       "rcfilters-filter-editsbyother-label": "Cambios d'otros",
+       "rcfilters-filter-editsbyother-description": "Tolos cambios menos los de to.",
        "rcfilters-filtergroup-userExpLevel": "Nivel d'esperiencia (solo pa usuarios rexistraos)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Los filtros Experience alcuentren sólo usuarios rexistraos, de manera qu'esti filtru entra en conflictu col filtru «Sin rexistrar».",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "El filtru «Ensin rexistrar» tien un conflictu con un filtru Experience o más, qu'alcuentren sólo usuarios rexistraos. Los filtros que tienen un conflictu márquense nel área de Filtros activos, más arriba.",
        "php-uploaddisabledtext": "Les xubíes de ficheros tan desactivaes en PHP.\nPor favor, comprueba la configuración de file_uploads.",
        "uploadscripted": "Esti ficheru contien códigu HTML o scripts que pueden interpretase de mou equivocáu por un navegador.",
        "upload-scripted-pi-callback": "Nun puede xubise un ficheru que contien instrucciones de procesamientu XML de fueya d'estilu.",
+       "upload-scripted-dtd": "Nun pueden xubise ficheros SVG que contengan una declaración DTD non estándar.",
        "uploaded-script-svg": "Alcontróse l'elementu «$1» que puede recibir scripts nel ficheru SVG xubíu.",
        "uploaded-hostile-svg": "Alcontróse CSS inseguru nel elementu d'estilu del ficheru SVG xubíu.",
        "uploaded-event-handler-on-svg": "Nun se permite configurar los atributos de controladores de socesos <code>$1=\"$2\"</code> nos ficheros SVG.",
        "enotif_body_intro_moved": "{{GENDER:$2|$2}} treslladó la páxina «$1» de {{SITENAME}} el $PAGEEDITDATE, consulta $3 pa ver la revisión actual.",
        "enotif_body_intro_restored": "{{GENDER:$2|$2}} restauró la páxina «$1» de {{SITENAME}} el $PAGEEDITDATE, consulta $3 pa ver la revisión actual.",
        "enotif_body_intro_changed": "{{GENDER:$2|$2}} camudó la páxina «$1» de {{SITENAME}} el $PAGEEDITDATE, consulta $3 pa ver la revisión actual.",
-       "enotif_lastvisited": "Mira en $1 pa ver tolos cambios dende la cabera visita.",
-       "enotif_lastdiff": "Mira en $1 pa ver esti cambéu.",
+       "enotif_lastvisited": "Pa ver tolos cambios dende la cabera visita, mira en $1",
+       "enotif_lastdiff": "Pa ver esti cambiu mira en $1",
        "enotif_anon_editor": "usuariu anónimu $1",
        "enotif_body": "Estimáu $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nResume del editor: $PAGESUMMARY $PAGEMINOREDIT\n\nPa comunicate col editor:\ncorréu: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nEn casu de producise más actividá, nun habrá más notificaciones a nun ser que visites esta páxina teniendo sesión aniciada. Tamién podríes reaniciar na to llista de siguimientu los marcadores de notificación de toles páxines que sigues.\n\nEl to abertable sistema de notificación de {{SITENAME}}\n\n--\nPa camudar les preferencies d'avisos per corréu, visita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPa camudar la configuración de la to llista de siguimientu, visita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPa desaniciar la páxina de la to llista de siguimientu, visita\n$UNWATCHURL\n\nMás ayuda y sofitu:\n$HELPPAGE",
        "created": "creada",
        "sp-contributions-uploads": "xubes",
        "sp-contributions-logs": "rexistros",
        "sp-contributions-talk": "alderique",
-       "sp-contributions-userrights": "xestión de permisos d'usuariu",
+       "sp-contributions-userrights": "xestión de permisos d'{{GENDER:$1|usuariu|usuaria}}",
        "sp-contributions-blocked-notice": "Esti usuariu anguaño ta bloquiáu.\nLa cabera entrada del rexistru de bloqueos s'ufre darréu pa referencia:",
        "sp-contributions-blocked-notice-anon": "Esta IP anguaño ta bloquiada.\nLa cabera entrada del rexistru de bloqueos s'ufre darréu pa referencia:",
        "sp-contributions-search": "Buscar contribuciones",
        "unblocked-id": "Desaniciose'l bloquéu $1.",
        "unblocked-ip": "Desbloquióse a [[Special:Contributions/$1|$1]].",
        "blocklist": "Usuarios bloquiaos",
+       "autoblocklist": "Bloqueos automáticos",
+       "autoblocklist-submit": "Guetar",
+       "autoblocklist-legend": "Llista de bloqueos automáticos",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Bloquéu automáticu llocal|Bloqueos automáticos llocales}}",
+       "autoblocklist-empty": "La llista de bloqueos automáticos ta balera.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Otru bloquéu automáticu|Otros bloqueos automáticos}}",
        "ipblocklist": "Usuarios bloquiaos",
        "ipblocklist-legend": "Atopar un usuariu bloquiáu",
        "blocklist-userblocks": "Anubrir los bloqueos de cuenta",
        "tooltip-pt-mycontris": "Llista de les {{GENDER:|tos}} collaboraciones",
        "tooltip-pt-anoncontribs": "Una llista d'ediciones feches dende esta dirección IP",
        "tooltip-pt-login": "T'encamentamos que t'identifiques, anque nun ye obligatorio",
+       "tooltip-pt-login-private": "Tienes d'aniciar sesión pa usar esta wiki",
        "tooltip-pt-logout": "Salir",
        "tooltip-pt-createaccount": "Encamentámoste que crees una cuenta y qu'anicies sesión; sicasí, nun ye obligatorio",
        "tooltip-ca-talk": "Alderique tocante al conteníu de la páxina",
        "anonymous": "{{PLURAL:$1|Usuariu anónimu|Usuarios anónimos}} de {{SITENAME}}",
        "siteuser": "{{SITENAME}} usuariu $1",
        "anonuser": "usuariu anónimu de {{SITENAME}} $1",
-       "lastmodifiedatby": "L'últimu cambiu d'esta páxina foi el $1, a les $2, por $3.",
+       "lastmodifiedatby": "La última edición d'esta páxina foi el $1 a les $2, por $3.",
        "othercontribs": "Basao nel trabayu fechu por $1.",
        "others": "otros",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|usuariu|usuaria}}|usuarios}} $1",
        "confirmrecreate": "{{GENDER:$1|L'usuariu|La usuaria}} [[User:$1|$1]] ([[User talk:$1|alderique]]) desanició esta páxina depués de qu'empecipiaras a editala pol siguiente motivu:\n: <em>$2</em>\nPor favor confirma que daveres quies volver a crear esta páxina.",
        "confirmrecreate-noreason": "{{GENDER:$1|L'usuariu|La usuaria}} [[User:$1|$1]] ([[User talk:$1|alderique]]) desanició esta páxina depués de que principiaras a editala.  Por favor confirma que daveres quies volver a crear esta páxina.",
        "recreate": "Volver a crear",
+       "confirm-purge-title": "Purgar esta páxina",
        "confirm_purge_button": "Aceutar",
        "confirm-purge-top": "¿Llimpiar la caché d'esta páxina?",
        "confirm-purge-bottom": "Purgar una páxina esborra la caché y fuercia a apaecer la versión actual más recién.",
        "htmlform-user-not-valid": "<strong>$1</strong> nun ye un nome d'usuariu válidu.",
        "logentry-delete-delete": "$1 {{GENDER:$2|desanició}} la páxina $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|desanició}} la redireición $3 sobreescribiéndola",
-       "logentry-delete-restore": "$1 {{GENDER:$2|restauró}} la páxina $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|restauró}} la páxina $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|restauró}} la páxina $3",
+       "restore-count-revisions": "{{PLURAL:$1|1 revisión|$1 revisiones}}",
+       "restore-count-files": "{{PLURAL: $1|1 ficheru|$1 ficheros}}",
        "logentry-delete-event": "$1 {{GENDER:$2|camudó}} la visibilidá {{PLURAL:$5|d'un socesu del rexistru|de $5 socesos del rexistru}} en $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|camudó}} la visibilidá {{PLURAL:$5|d'una revisión|de $5 revisiones}} na páxina $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|camudó}} la visibilidá de los socesos del rexistru en $3",
        "restrictionsfield-help": "Una única direición IP o rangu CIDR per llinia. P'activar toos, utiliza:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "revisión $1",
        "pageid": "ID de páxina $1",
-       "rawhtml-notallowed": "Les etiquetes &lt;html&gt; nun pueden usase fuera de les páxines normales."
+       "rawhtml-notallowed": "Les etiquetes &lt;html&gt; nun pueden usase fuera de les páxines normales.",
+       "gotointerwiki": "Dexando {{SITENAME}}",
+       "gotointerwiki-invalid": "El títulu especificáu nun ye válidu.",
+       "gotointerwiki-external": "Tas a piques de dexar {{SITENAME}} pa visitar [[$2]], que ye un sitiu web distintu.\n\n[$1 Fai click equí pa siguir a $1].",
+       "undelete-cantedit": "Nun puedes desfacer el borráu d'esta páxina porque nun tienes permisu pa editala.",
+       "undelete-cantcreate": "Nun puedes desfacer el borráu d'esta páxina porque nun existe nenguna páxina con esti nome y nun tienes permisu pa creala."
 }
index 7a5a43f..e6a8353 100644 (file)
@@ -95,7 +95,7 @@
        "returnto": "Nte ica paskickwemakanik $1",
        "tagline": "E pe otciparik {{SITENAME}}",
        "help": "Witcihici",
-       "search": "Nantokaskeritcikatek",
+       "search": "Nantona",
        "searchbutton": "Nantokiskeritcikatek",
        "go": "Go",
        "searcharticle": "Tapwata",
        "jumptosearch": "nantokiskeritcikatek",
        "aboutsite": "Taci we otciparik {{SITENAME}}",
        "aboutpage": "Project:Enko nehe",
+       "copyrightpage": "{{ns:project}}:tiperitakon",
        "currentevents": "Mekwata",
        "currentevents-url": "Project:Mekwata",
        "disclaimers": "Ke ekwamanictcikatek",
        "powersearch-legend": "Awocamec nantona",
        "powersearch-toggleall": "Kaskina",
        "preferences": "Kirowe",
-       "mypreferences": "Kirowe",
+       "mypreferences": "Mocak ka kinawapataman",
        "saveprefs": "Kinokepitcikanik",
        "searchresultshead": "Nantokaskeritcikatek",
        "stub-threshold-disabled": "Manisinaha",
        "undelete-show-file-submit": "Ehe",
        "namespace": "Ka ici masinasotcik:",
        "invert": "kweskisinaha nohwe",
+       "tooltip-invert": "Tcikisinaha taci e kikesinatek kata katcictain ka ki  koski kweskisihihikateki paskickwemikanan taci ka masinateki ke ki actakaniwoki.",
        "namespace_association": "Taci e mamowisinasonaniwok",
+       "tooltip-namespace_association": "Tcikisinaha nohwe kikesinahikan kata acotcisinatek kirika taci e mamowisinasinaniwok e aimihitonaniwok kekotc kekwan,taci ka ki orapitcikateki icinikatewina",
        "blanknamespace": "(Ka ici ocitakiniwok)",
-       "mycontris": "Wi kipitanikeine",
+       "mycontris": "Witcihewin",
        "anoncontribs": "E ki witcihehin",
        "uctop": "(mekwatc)",
        "month": "Anotc pisimw ka akotcinitc (nac nte nictam):",
        "whatlinkshere-submit": "Tapowata",
        "ipblocklist-submit": "Nantokaskeritcikatek",
        "blocklink": "nokipita",
-       "contribslink": "wi kipitanikeine",
+       "contribslink": "Kaki witcihehin",
        "movesubpagetalktext": "Neta ka arimotcikatek tipatcimosanikanik $1 {{PLURAL:$1|Nota paskickwemakan|Nota paskickwemakana}} kita masinatewa ota.",
        "export": "Matcetciciha masinahikana",
        "allmessages-filter-all": "Kaskina",
        "pageinfo-protect-cascading-yes": "Ehe",
        "confirm-markpatrolled-button": "OK",
        "nextdiff": "Tec meckotcisinihikan",
+       "file-info-size": "$1x$2pixels, e irikweckamikak mawtockwemikan:$3nohwe MIME:$4",
        "show-big-image": "E otciparik masinahikaniwoc",
        "show-big-image-preview": "E irikweckwemakisitc$1",
        "show-big-image-size": "$1 x $2 pixels",
        "saturday-at": "mari kicikaw $1",
        "sunday-at": "manactakaniwon $1",
        "metadata": "E ici tipatcitcikatek",
+       "metadata-help": "Nohwe mawtockwemikan ekota acteki awacimec tipatcimowina,nohwe masinapiskipitcikan ka ki actakwen kekotc otitapiskipitcikan ka ki ocitarikwen. Kecpin ka meckotisinihikatekwen nictam ka icinakok, nama kaskina kata nokona ka wi icinakotakaniwok nohwe masinasowin.",
        "metadata-fields": "Nohwe e aitotwakaniwitc masinasowin nta kata ici actew paskickwemakanik ka ici tipatcimonaniwok ickwa atciwonikateke nta kitci tipatcimoniwocik. Minawatc kotakahi kata katcictakaniwona.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-orientation": "Itactamictew",
        "exif-datetime": "Apitc ka meckotcitakaniwok",
index 4495973..ba14392 100644 (file)
        "mergehistory-no-destination": "Не існуе мэтавай старонкі $1.",
        "mergehistory-invalid-source": "Крынічная старонка мусіць мець карэктную назву.",
        "mergehistory-invalid-destination": "Мэтавая старонка мусіць мець карэктную назву.",
-       "mergehistory-autocomment": "Гісторыя [[:$1]] аб'яднаная ў [[:$2]]",
-       "mergehistory-comment": "Гісторыя [[:$1]] аб'яднаная ў [[:$2]]: $3",
+       "mergehistory-autocomment": "Гісторыя [[:$1]] абяднаная ў [[:$2]]",
+       "mergehistory-comment": "Гісторыя [[:$1]] абяднаная ў [[:$2]]: $3",
        "mergehistory-same-destination": "Крынічная і мэтавая старонкі ня могуць супадаць",
        "mergehistory-reason": "Прычына:",
        "mergelog": "Журнал аб’яднаньняў",
        "mergelogpagetext": "Ніжэй знаходзіцца сьпіс апошніх аб'яднаньняў гісторыяў старонак.",
        "history-title": "$1 — гісторыя зьменаў",
        "difference-title": "Розьніца паміж вэрсіямі «$1»",
-       "difference-title-multipage": "«$1» і «$2» — розьніца паміж старонкамі",
+       "difference-title-multipage": "Розьніца паміж старонкамі «$1» і «$2»",
        "difference-multipage": "(Розьніца паміж старонкамі)",
        "lineno": "Радок $1:",
        "compareselectedversions": "Параўнаць выбраныя вэрсіі",
        "rcfilters-filter-unregistered-label": "Незарэгістраваныя",
        "rcfilters-filter-unregistered-description": "Рэдактары, якія не ўвайшлі ў сыстэму",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Гэты фільтар канфліктуе з {{PLURAL:$2|1=наступным фільтрам|наступнымі фільтрамі}} дасьведчаных удзельнікаў, {{PLURAL:$2|1=які знаходзіць|якія знаходзяць}} толькі зарэгістраваных удзельнікаў: $1",
-       "rcfilters-filtergroup-authorship": "РÑ\8dдагаваÑ\86Ñ\8c Ð°Ñ\9eÑ\82аÑ\80Ñ\81Ñ\82ва",
-       "rcfilters-filter-editsbyself-label": "Ð\92аÑ\88Ñ\8bÑ\8f Ð¿Ñ\80аÑ\9eкі",
-       "rcfilters-filter-editsbyself-description": "Ð\9fÑ\80аÑ\9eкÑ\96, Ð·Ñ\80обленÑ\8bÑ\8f Ð²Ð°Ð¼Ñ\96",
-       "rcfilters-filter-editsbyother-label": "Ð\9fÑ\80аÑ\9eкÑ\96 Ñ\96нÑ\88Ñ\8bÑ\85 Ñ\83дзелÑ\8cнÑ\96каÑ\9e",
-       "rcfilters-filter-editsbyother-description": "Ð\9fÑ\80аÑ\9eкÑ\96, Ð·Ñ\80обленÑ\8bÑ\8f Ñ\96нÑ\88Ñ\8bмÑ\96 Ñ\9eдзелÑ\8cнÑ\96камÑ\96 (нÑ\8f Ð²Ð°Ð¼Ñ\96).",
+       "rcfilters-filtergroup-authorship": "Ð\90Ñ\9eÑ\82аÑ\80Ñ\81Ñ\82ва Ñ\9eнÑ\91Ñ\81кÑ\83",
+       "rcfilters-filter-editsbyself-label": "Ð\97Ñ\8cменÑ\8b, Ð·Ñ\80обленÑ\8bÑ\8f Ð²Ð°Ð¼і",
+       "rcfilters-filter-editsbyself-description": "Ð\92аÑ\88 Ñ\83лаÑ\81нÑ\8b Ñ\9eнÑ\91Ñ\81ак.",
+       "rcfilters-filter-editsbyother-label": "Ð\97Ñ\8cменÑ\8b, Ð·Ñ\80обленÑ\8bÑ\8f Ñ\96нÑ\88Ñ\8bмÑ\96",
+       "rcfilters-filter-editsbyother-description": "УÑ\81е Ð·Ñ\8cменÑ\8b, Ð·Ð° Ð²Ñ\8bклÑ\8eÑ\87Ñ\8dнÑ\8cнем Ð²Ð°Ñ\88Ñ\8bÑ\85.",
        "rcfilters-filtergroup-userExpLevel": "Узровень досьведу (толькі для зарэгістраваных удзельнікаў)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Гэты фільтар досьведу знаходзіць толькі зарэгістраваных удзельнікаў, такім чынам фільтар канфліктуе зь фільтрам «Незарэгістраваныя».",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Фільтар «Незарэгістраваныя» канфліктуе з адным ці некалькімі фільтрамі ўзроўню досьведу, якія шукаюць толькі зарэгістраваных удзельнікаў. Канфліктныя фільтры пазначаныя ў разьдзеле актыўных фільтраў вышэй.",
        "enotif_body_intro_moved": "Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была перанесеная $PAGEEDITDATE {{GENDER:$2|удзельнікам|удзельніцай}} $2, па цяперашнюю вэрсію глядзіце $3.",
        "enotif_body_intro_restored": "Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была адноўленая $PAGEEDITDATE {{GENDER:$2|удзельнікам|удзельніцай}} $2, па цяперашнюю вэрсію глядзіце $3.",
        "enotif_body_intro_changed": "Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была зьмененая $PAGEEDITDATE {{GENDER:$2|удзельнікам|удзельніцай}} $2, па цяперашнюю вэрсію глядзіце $3.",
-       "enotif_lastvisited": "Ð\93лÑ\8fдзÑ\96Ñ\86е Ð½Ð° $1 Ñ\83Ñ\81е Ð°Ð¿Ð¾Ñ\88нÑ\96Ñ\8f Ð·Ñ\8cменÑ\8b, Ñ\8fкÑ\96Ñ\8f Ð°Ð´Ð±Ñ\8bлÑ\96Ñ\81Ñ\8f Ð¿Ð°Ñ\81Ñ\8cлÑ\8f Ð\92аÑ\88ага Ð°Ð¿Ð¾Ñ\88нÑ\8fга Ð½Ð°Ð²ÐµÐ´Ð²Ð°Ð½Ñ\8cнÑ\8f.",
+       "enotif_lastvisited": "Ð\94зелÑ\8f Ñ\9eÑ\81Ñ\96Ñ\85 Ð·Ñ\8cменаÑ\9e Ð· Ð²Ð°Ñ\88ага Ð°Ð¿Ð¾Ñ\88нÑ\8fга Ð½Ð°Ð²ÐµÐ´Ð²Ð°Ð½Ñ\8cнÑ\8f, Ð³Ð»Ñ\8fдзÑ\96Ñ\86е $1",
        "enotif_lastdiff": "Глядзіце $1, каб пабачыць гэтую зьмену.",
        "enotif_anon_editor": "ананімны ўдзельнік $1",
        "enotif_body": "Вітаем, $WATCHINGUSERNAME.\n\n$PAGEINTRO $NEWPAGE\n\nАпісаньне зьменаў: $PAGESUMMARY $PAGEMINOREDIT\n\nЗьвязацца з рэдактарам:\nпраз электронную пошту: $PAGEEDITOR_EMAIL\nпразь вікі-старонку: $PAGEEDITOR_WIKI\n\nПаведамленьні ня будуць дасылацца ў выпадку новых дзеяньняў, пакуль Вы не наведаеце гэтую старонку па ўваходзе ў сыстэму. Вы таксама можаце адключыць паведамленьні пра зьмены для ўсіх старонак з Вашага сьпісу назіраньня.\n\n             Сыстэма паведамленьняў {{GRAMMAR:родны|{{SITENAME}}}}\n\n--\nКаб зьмяніць налады абвяшчэньня праз электронную пошту, наведайце:\n{{canonicalurl:{{#special:Preferences}}}}\n\nКаб зьмяніць налады сьпісу назіраньня, наведайце:\n{{canonicalurl:{{#special:Preferences}}}}\n\nКаб выдаліць старонку з Вашага сьпісу назіраньня, наведайце:\n$UNWATCHURL\n\nЗваротная сувязь і дапамога:\n$HELPPAGE",
        "tooltip-pt-mycontris": "{{GENDER:|Ваш}} унёсак",
        "tooltip-pt-anoncontribs": "Сьпіс рэдагаваньняў, зробленых з гэтага IP-адрасу",
        "tooltip-pt-login": "Вас запрашаюць увайсьці, хаця гэта і неабавязкова.",
+       "tooltip-pt-login-private": "Каб карыстацца гэтай вікі, вам трэба ўвайсьці",
        "tooltip-pt-logout": "Выйсьці",
        "tooltip-pt-createaccount": "Мы прапануем вам стварыць рахунак і ўвайсьці, але гэта не абавязкова",
        "tooltip-ca-talk": "Абмеркаваньне зьместу старонкі",
        "confirmrecreate-noreason": "{{GENDER:$1|Удзельнік|Удзельніца}} [[User:$1|$1]] ([[User talk:$1|гутаркі]]) {{GENDER:$1|выдаліў|выдаліла}} гэтую старонку, пасьля таго як Вы пачалі яе рэдагаваць. Калі ласка, пацьвердзіце, што Вы сапраўды жадаеце стварыць гэтую старонку ізноў.",
        "recreate": "Стварыць ізноў",
        "unit-pixel": "пкс",
+       "confirm-purge-title": "Ачысьціць кэш гэтай старонкі",
        "confirm_purge_button": "Добра",
        "confirm-purge-top": "Ачысьціць кэш гэтай старонкі?",
        "confirm-purge-bottom": "Ачыстка кэшу старонкі прывядзе да адлюстраваньня яе апошняй вэрсіі.",
        "logentry-delete-restore": "$1 {{GENDER:$2|аднавіў|аднавіла}} старонку $3 ($4)",
        "logentry-delete-restore-nocount": "$1 {{GENDER:$2|аднавіў|аднавіла}} старонку $3",
        "restore-count-revisions": "$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}",
+       "restore-count-files": "$1 {{PLURAL:$1|файл|файлы|файлаў}}",
        "logentry-delete-event": "$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=падзеі ў журнале|падзеяў у журнале}} на $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|вэрсіі|вэрсіяў}} старонкі $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць падзеяў у журнале на $3",
        "special-characters-group-thai": "Тайскія",
        "special-characters-group-lao": "Лаоскія",
        "special-characters-group-khmer": "Кхмэрскія",
+       "special-characters-group-canadianaboriginal": "Канадзкае складовае пісьмо",
        "special-characters-title-endash": "кароткі працяжнік",
        "special-characters-title-emdash": "доўгі працяжнік",
        "special-characters-title-minus": "мінус",
        "authmanager-provider-password": "Аўтэнтыфікацыя на аснове паролю",
        "authmanager-provider-password-domain": "Аўтэнтыфікацыя на аснове паролю і дамэну",
        "authmanager-provider-temporarypassword": "Часовы пароль",
+       "authprovider-confirmlink-message": "Калі грунтавацца на вашых няўдаўніх спробах уваходу, наступныя рахункі могуць быць далучаныя да вашага вікірахунку. Іх далучэньне дазволіць вам уваходзіць праз гэтыя рахункі. Калі ласка, абярце якія рахункі трэба далучыць.",
+       "authprovider-confirmlink-request-label": "Рахункі, якія павінны быць злучаныя",
+       "authprovider-confirmlink-success-line": "$1: пасьпяхова далучаны.",
        "changecredentials": "Зьмена ўліковых зьвестак",
        "removecredentials": "Выдаленьне ўліковых зьвестак",
        "removecredentials-submit": "Выдаліць уліковыя зьвесткі",
index 1a66112..fdcfc13 100644 (file)
@@ -29,7 +29,8 @@
                        "Nemo bis",
                        "SamGold",
                        "Liashko",
-                       "Mechanizatar"
+                       "Mechanizatar",
+                       "Artsiom91"
                ]
        },
        "tog-underline": "Падкрэсліваць спасылкі:",
        "post-expand-template-argument-warning": "Увага: на гэтай старонцы ёсць прынамсі адзін параметр шаблона, які занадта доўгі ў разгорнутым выглядзе.\nТакія параметры былі прапушчаныя.",
        "post-expand-template-argument-category": "Старонкі, на якіх прапушчаны параметры шаблонаў",
        "parser-template-loop-warning": "Цыклічнае ўключэнне шаблона: [[$1]]",
+       "template-loop-category": "Старонкі з зацыкліваннем у шаблонах",
+       "template-loop-category-desc": "Старонка змяшчае зацыкліванне шаблона, гэта значыць уключае шаблон, які выклікае сам сябе рэкурсіўна",
        "parser-template-recursion-depth-warning": "Вычарпаны ліміт глыбіні ўключэння шаблонаў ($1)",
        "language-converter-depth-warning": "Перавышана глыбіня моўнага канвертэра ($1)",
        "node-count-exceeded-category": "Старонкі, якія перасягнулі колькасць вузлоў",
        "recentchanges-legend-heading": "<strong>Легенда:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (гл. асобна [[Special:NewPages|новыя старонкі]])",
        "recentchanges-submit": "Паказаць",
+       "rcfilters-activefilters": "Актыўныя фільтры",
+       "rcfilters-restore-default-filters": "Аднавіць фільтры па змоўчанні",
+       "rcfilters-clear-all-filters": "Ачысціць усе фільтры",
+       "rcfilters-highlightmenu-title": "Выбраць колер",
+       "rcfilters-highlightmenu-help": "Выбраць колер для падсвечвання уласцівасці",
+       "rcfilters-filtergroup-registration": "Рэгістрацыя ўдзельніка",
+       "rcfilters-filter-registered-label": "Зарэгістраваны",
+       "rcfilters-filter-registered-description": "Залагіненыя рэдактары",
+       "rcfilters-filter-unregistered-label": "Незарэгістраваны",
+       "rcfilters-filter-editsbyself-label": "Вашыя змены",
+       "rcfilters-filter-editsbyself-description": "Ваш унёсак",
+       "rcfilters-filter-editsbyother-label": "Змены іншых удзельнікаў",
+       "rcfilters-filter-editsbyother-description": "Усе змены, акрамя Вашых",
+       "rcfilters-filtergroup-userExpLevel": "Вопыт (толькі для зарэгістраваных удзельнікаў)",
        "rcfilters-filter-user-experience-level-learner-description": "Болей дзён актыўнасці і правак, чым у «навічкоў», але меней чым у «дасведчаных удзельнікаў».",
        "rcfilters-filter-user-experience-level-experienced-description": "Больш за 30 дзён актыўнасці і 500 правак.",
        "rcfilters-filter-bots-label": "Бот",
+       "rcfilters-filter-humans-label": "Чалавек (не бот)",
+       "rcfilters-filter-humans-description": "Праўкі, зробленыя людзьмі",
+       "rcfilters-filter-patrolled-label": "Дагледжаны",
+       "rcfilters-filter-unpatrolled-label": "Недагледжаны",
        "rcnotefrom": "Ніжэй {{PLURAL:$5|паказана змяненне|паказаны змены}} з <strong>$3, $4</strong> (не больш за <strong>$1</strong>).",
        "rclistfrom": "Паказаць змены з $3 $2",
        "rcshowhideminor": "$1 дробныя праўкі",
        "trackingcategories-msg": "Катэгорыя для асочвання",
        "trackingcategories-name": "Назва паведамлення",
        "trackingcategories-desc": "Крытэрый уключэння ў катэгорыю",
+       "restricted-displaytitle-ignored-desc": "Старонка змяшчае <code><nowiki>{{DISPLAYTITLE}}</nowiki></code>, які ігнаруецца з-за несупадзення з актуальнай назвай старонкі",
        "noindex-category-desc": "Старонка не індэксуецца пошукавымі робатамі, таму што на ёй ёсць магічнае слова <code><nowiki>__NOINDEX__</nowiki></code> і яна знаходзіцца ў прасторы назваў, дзе гэты сцяг дазволены.",
        "index-category-desc": "На старонцы ёсць магічнае слова <code><nowiki>__INDEX__</nowiki></code> (і старонка знаходзіцца ў прасторы назваў, дзе гэты сцяг дазволены), таму яна індэксуецца пошукавымі робатамі у выпадках, калі гэтага звычайна не адбываецца.",
        "post-expand-template-inclusion-category-desc": "Пасля разгортвання ўсіх шаблонаў памер старонкі перавышае <code>$wgMaxArticleSize</code>, таму некаторыя шаблоны пакінуты неразгорнутымі.",
index b59d50e..9b3cf52 100644 (file)
        "navigation-heading": "Навигация",
        "errorpagetitle": "Грешка",
        "returnto": "Обратно към $1.",
-       "tagline": "от {{SITENAME}}",
+       "tagline": "Ð\9eт {{SITENAME}}",
        "help": "Помощ",
        "search": "Търсене",
        "searchbutton": "Търсене",
        "history": "История",
        "history_short": "История",
        "history_small": "история",
-       "updatedmarker": "има Ð¿Ñ\80омÑ\8fна (оÑ\82 Ð¿Ð¾Ñ\81ледноÑ\82о Ð²Ð¸ Ð²Ð»Ð¸Ð·Ð°Ð½Ðµ)",
+       "updatedmarker": "пÑ\80оменено Ð¾Ñ\82 Ð¿Ð¾Ñ\81ледноÑ\82о Ð¼Ð¸ Ð¿Ð¾Ñ\81еÑ\89ение",
        "printableversion": "Версия за печат",
        "permalink": "Постоянна препратка",
        "print": "Печат",
        "noarticletext": "Понастоящем няма текст на тази страница. Можете да [[Special:Search/{{PAGENAME}}|потърсите за заглавието на страницата]] в други страници, да <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} потърсите в съответните дневници] или [{{fullurl:{{FULLPAGENAME}}|action=edit}} да я създадете]</span>.",
        "noarticletext-nopermission": "Понастоящем в тази страница няма текст.\nМожете да [[Special:Search/{{PAGENAME}}|потърсите заглавието на тази страница ]] в други страници или да <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} потърсите в съответните дневници]</span>, но нямате права да създадете тази страница.",
        "missing-revision": "Версия #$1 на страницата „{{FULLPAGENAME}}“ не съществува.\n\nТова обикновено се дължи на препратка от историята на страницата, която е била изтрита.\nПодробности могат да бъдат открити в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневника на изтриванията].",
-       "userpage-userdoesnotexist": "Няма регистрирана потребителска сметка за „<nowiki>$1</nowiki>“. Изисква се потвърждение, че желаете да създадете/редактирате тази страница?",
+       "userpage-userdoesnotexist": "Няма регистрирана потребителска сметка за „$1“. Изисква се потвърждение, че желаете да създадете/редактирате тази страница?",
        "userpage-userdoesnotexist-view": "Не е регистрирана потребителска сметка на име „$1“.",
        "blocked-notice-logextract": "В момента този потребител е блокиран.\nПо-долу за справка е показан последният запис от Дневника на блокиранията:",
        "clearyourcache": "<strong>Забележка:</strong> За да се видят промените, необходимо е след съхраняване на страницата, кешът на браузъра да бъде изтрит.\n* <strong>Firefox / Safari:</strong> Задържа се клавиш <em>Shift</em> и се щраква върху <em>Презареждане</em> (<em>Reload</em>) или чрез клавишната комбинация <em>Ctrl-F5</em> or <em>Ctrl-R</em> (<em>⌘-R</em> за Mac);\n* <strong>Google Chrome:</strong> клавишна комбинация <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> за Mac)\n* <strong>Internet Explorer:</strong> Задържа се клавиш <em>Ctrl</em> и се щраква върху <em>Refresh</em> или чрез клавишната комбинация <em>Ctrl-F5</em>;\n* <strong>Opera:</strong> кешът се изчиства през менюто <em>Tools → Settings</em> (<em>Opera → Preferences</em> за Mac) след което <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
        "sitejspreview": "'''Не забравяйте, че това е само предварителен преглед на този Джаваскрипт код.'''\n'''Той все още не е съхранен!'''",
        "userinvalidcssjstitle": "'''Внимание:''' Не съществува облик „$1“. Необходимо е да се знае, че имената на потребителските ви страници за CSS и Джаваскрипт трябва да се състоят от малки букви, например: „{{ns:user}}:Иван/vector.css“ (а не „{{ns:user}}:Иван/Vector.css“).",
        "updated": "(обновена)",
-       "note": "'''Забележка:'''",
+       "note": "<strong>Забележка:</strong>",
        "previewnote": "<strong>Обърнете внимание, че това е само предварителен преглед.</strong>\nПромените все още не са съхранени!",
        "continue-editing": "Продължаване към полето за редактиране",
        "previewconflict": "Този предварителен преглед отразява текста в горната текстова кутия така, както би се показал, ако съхраните.",
        "session_fail_preview": "За съжаление редакцията ви не успя да бъде обработена поради загуба на данните за текущата сесия.\n\nМоже би сте излезли от системата. <strong>Моля, уверете се, че сте влезли в профила си и опитайте отново.</strong>\nАко все още не работи, опитайте да [[Special:UserLogout|излезете]] и да влезете отново, също така проверете дали браузърът ви позволява бисквитки от този сайт.",
        "session_fail_preview_html": "За съжаление редакцията ви не беше записана поради загуба на данните за текущата сесия.\n\n<em>Тъй като {{SITENAME}} приема обикновен HTML, предварителният преглед е скрит като предпазна мярка срещу атаки чрез JavaScript.</em>\n\n<strong>Ако това е обикновен опит за редактиране, моля опитайте отново.</strong>\nАко все още не сработва, пробвайте да [[Special:UserLogout|излезете]] и влезете отново, и се уверете, че браузъра ви приема бисквитки от този сайт.",
        "token_suffix_mismatch": "'''Редакцията ви беше отхвърлена, защото браузърът ви е развалил пунктуационните знаци в редакционната отметка. Евентуалното съхранение би унищожило съдържанието на страницата. Понякога това се случва при използването на грешно работещи анонимни междинни сървъри.'''",
-       "edit_form_incomplete": "'''Някои части от формуляра за редактиране не достигнаха до сървъра; проверете дали редакциите ви са непокътнати и опитайте отново.'''",
+       "edit_form_incomplete": "<strong>Някои части от формуляра за редактиране не достигнаха до сървъра; проверете дали редакциите ви са непокътнати и опитайте отново.</strong>",
        "editing": "Редактиране на „$1“",
        "creating": "Създаване на $1",
        "editingsection": "Редактиране на „$1“ (раздел)",
        "editingcomment": "Редактиране на „$1“ (нов раздел)",
        "editconflict": "Различна редакция: $1",
-       "explainconflict": "Някой друг вече е променил тази страница, откакто започнахте да я редактирате.\nГорната текстова кутия съдържа текущия текст на страницата без вашите промени, които са показани в долната кутия.\nЗа да бъдат и те съхранени, е необходимо ръчно да ги преместите в горното поле, тъй като '''единствено''' текстът в него ще бъде съхранен при натискането на бутона „{{int:savearticle}}“.",
+       "explainconflict": "Някой друг вече е променил тази страница, откакто започнахте да я редактирате.\nГорната текстова кутия съдържа текущия текст на страницата без вашите промени, които са показани в долната кутия.\nЗа да бъдат и те съхранени, е необходимо ръчно да ги преместите в горното поле, тъй като <strong>единствено</strong> текстът в него ще бъде съхранен при натискането на бутона „{{int:savearticle}}“.",
        "yourtext": "Вашият текст",
        "storedversion": "Съхранена версия",
        "nonunicodebrowser": "'''ВНИМАНИЕ: Браузърът ви не поддържа Уникод. За да можете спокойно да редактирате страници, всички знаци, невключени в ASCII-таблицата, ще бъдат заменени с шестнадесетични кодове.'''",
        "rcfilters-filtergroup-registration": "Регистрация на потребители",
        "rcfilters-filter-registered-label": "Регистрация",
        "rcfilters-filter-unregistered-label": "Нерегистрирани",
-       "rcfilters-filter-editsbyself-label": "Ð\92аÑ\88и Ñ\81обÑ\81Ñ\82вени Ñ\80едакÑ\86ии",
+       "rcfilters-filter-editsbyself-label": "Ваши редакции",
        "rcfilters-filter-editsbyself-description": "Ваши редакции.",
        "rcfilters-filter-editsbyother-label": "Чужди редакции",
        "rcfilters-filter-user-experience-level-newcomer-label": "Новодошли",
        "allpagesbadtitle": "Зададеното име е невалидно. Възможно е да съдържа междуезикова или междупроектна представка или пък знаци, които не могат да се използват в заглавия.",
        "allpages-bad-ns": "В {{SITENAME}} не съществува именно пространство „$1“.",
        "allpages-hide-redirects": "Скриване на пренасочванията",
-       "cachedspecial-viewing-cached-ttl": "Ð\9fÑ\80еглеждаÑ\82е ÐºÐµÑ\88иÑ\80ана Ð²ÐµÑ\80Ñ\81иÑ\8f Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а, ÐºÐ¾Ñ\8fÑ\82о Ðµ Ð·Ð° Ð¿Ð¾Ñ\81ледно обновена преди $1.",
+       "cachedspecial-viewing-cached-ttl": "Ð\9fÑ\80еглеждаÑ\82е ÐºÐµÑ\88иÑ\80ана Ð²ÐµÑ\80Ñ\81иÑ\8f Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а, ÐºÐ¾Ñ\8fÑ\82о Ð·Ð° Ð¿Ð¾Ñ\81ледно Ðµ обновена преди $1.",
        "cachedspecial-refresh-now": "Преглед на текущата.",
        "categories": "Категории",
        "categories-submit": "Показване",
index e7cbfb8..9ee53a2 100644 (file)
        "redirectedfrom": "($1 থেকে পুনর্নির্দেশিত)",
        "redirectpagesub": "পুনর্নির্দেশ পাতা",
        "redirectto": "পুননির্দেশিত হয়েছে:",
-       "lastmodifiedat": "এ পাতায় শেষ পরিবর্তন হয়েছিল $2টার সময়, $1 তারিখে।",
+       "lastmodifiedat": "এই পাতা শেষ সম্পাদিত হয়েছে $2টার সময়, $1 তারিখে।",
        "viewcount": "এই পাতাটি {{PLURAL:$1|একবার|$1 বার}} দেখা হয়েছে।",
        "protectedpage": "সুরক্ষিত পাতা",
        "jumpto": "সরাসরি যাও:",
        "difference-title-multipage": "\"$1\" ও \"$2\" পাতাগুলির মধ্যে পার্থক্য",
        "difference-multipage": "(পাতাগুলির মধ্যে পার্থক্য)",
        "lineno": "$1 নং লাইন:",
-       "compareselectedversions": "নিরà§\8dবাà¦\9aিত à¦¸à¦\82শà§\8bধিত à¦¸à¦\82সà§\8dà¦\95রণà¦\97à§\81লির à¦¤à§\81লনা",
+       "compareselectedversions": "নিরà§\8dবাà¦\9aিত à¦¸à¦\82সà§\8dà¦\95রণà¦\97à§\81লি à¦¤à§\81লনা à¦\95রà§\81ন",
        "showhideselectedversions": "নির্বাচিত সংশোধনগুলি দেখাও/লুকাও",
        "editundo": "পূর্বাবস্থায় ফেরত",
        "diff-empty": "(কোন পার্থক্য নেই)",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (আরও দেখুন [[Special:NewPages|নতুন পাতার তালিকা]])",
        "recentchanges-legend-plusminus": "(''±১২৩'')",
        "recentchanges-submit": "দেখাও",
-       "rcfilters-activefilters": "সà¦\95à§\8dরিয় à¦«à¦¿à¦²à§\8dà¦\9fার",
+       "rcfilters-activefilters": "সà¦\95à§\8dরিয় à¦\9bাà¦\81à¦\95নিসমà§\82হ",
        "rcfilters-restore-default-filters": "পূর্বনির্ধারিত ছাঁকনি পুনরুদ্ধার করুন",
        "rcfilters-clear-all-filters": "সব ছাঁকনি পরিষ্কার করুন",
        "rcfilters-search-placeholder": "সাম্প্রতিক পরিবর্তনসমূহ ছাঁকুন (ব্রাউজ বা টাইপ করা শুরু করুন)",
        "rcfilters-filter-unregistered-label": "অনিবন্ধিত",
        "rcfilters-filter-unregistered-description": "যেসব সম্পাদক অ্যাকাউন্টে প্রবেশ করেননি।",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "এই ছাঁকনিটির সাথে নিম্নোক্ত ব্যবহারকারী অভিজ্ঞতা {{PLURAL:$2|ছাঁকনিটির|ছাঁকনিগুলির}} সংঘর্ষ আছে; যা কেবলমাত্র নিবন্ধিত ব্যবহারকারীদের খুঁজে বের করে: $1",
-       "rcfilters-filtergroup-authorship": "à¦\95ার à¦¦à§\8dবারা à¦¸à¦®à§\8dপাদিত",
-       "rcfilters-filter-editsbyself-label": "à¦\86পনার à¦¨à¦¿à¦\9cসà§\8dব à¦¸à¦®à§\8dপাদনা",
-       "rcfilters-filter-editsbyself-description": "à¦\86পনার à¦¸à¦®à§\8dপাদনাà¦\97à§\81লি।",
-       "rcfilters-filter-editsbyother-label": "à¦\85নà§\8dযদà§\87র à¦¸à¦®à§\8dপাদনাà¦\97à§\81লি",
-       "rcfilters-filter-editsbyother-description": "à¦\85নà§\8dয à¦¬à§\8dযবহারà¦\95ারà§\80দà§\87র à¦\95রা à¦¸à¦®à§\8dপাদনাà¦\97à§\81লি (à¦\86পনার à¦\95রা à¦¨à¦¯à¦¼)।",
+       "rcfilters-filtergroup-authorship": "à¦\95ার à¦¦à§\8dবারা à¦ªà¦°à¦¿à¦¬à¦°à§\8dতিত",
+       "rcfilters-filter-editsbyself-label": "à¦\86পনার à¦¦à§\8dবারা à¦ªà¦°à¦¿à¦¬à¦°à§\8dতিত",
+       "rcfilters-filter-editsbyself-description": "à¦\86পনার à¦¨à¦¿à¦\9cসà§\8dব à¦\85বদান।",
+       "rcfilters-filter-editsbyother-label": "à¦\85নà§\8dযদà§\87র à¦¦à§\8dবারা à¦ªà¦°à¦¿à¦¬à¦°à§\8dতিত",
+       "rcfilters-filter-editsbyother-description": "à¦\86পনার à¦¨à¦¿à¦\9cসà§\8dবà¦\97à§\81লি à¦\9bাড়া à¦¸à¦\95ল à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন।",
        "rcfilters-filtergroup-userExpLevel": "অভিজ্ঞতার স্তর (শুধু মাত্র নিবন্ধিত ব্যবহারকারীর জন্য)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "অভিজ্ঞতা ছাঁকনিগুলি কেবলমাত্র নিবন্ধিত ব্যবহারকারীদের খুঁজে বের করে, তাই এই ছাঁকনিটি \"অনিবন্ধিত\" ছাঁকনিটির সাথে সংঘর্ষে আছে।",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"অনিবন্ধিত\" ছাঁকনিটি এক বা তার অধিক অভিজ্ঞতা ছাঁকনির সাথে সংঘর্ষে আছে, যে ছাঁকনিগুলি কেবলমাত্র নিবন্ধিত ব্যবহারকারীদের খুঁজে বের করে। সংঘর্ষরত ছাঁকনিগুলিকে উপরের \"সক্রিয় ছাঁকনিসমূহ\" এলাকাতে চিহ্নিত করা হয়েছে।",
        "rcfilters-filter-user-experience-level-newcomer-label": "নতুন আগত",
        "rcfilters-filter-user-experience-level-newcomer-description": "১০টির কমসংখ্যক সম্পাদনা করেছেন ও ৪ দিনের কম সময় ধরে সক্রিয় আছেন।",
        "rcfilters-filter-user-experience-level-learner-label": "শিক্ষার্থী",
-       "rcfilters-filter-user-experience-level-learner-description": "যারা \"নবাগত\" ব্যবহারকারীদের চেয়ে বেশিসংখ্যক দিন ও বেশিবার সম্পাদনা করেছেন, কিন্তু \"অভিজ্ঞ ব্যবহারকারীদের\" চেয়ে কম করেছেন।",
+       "rcfilters-filter-user-experience-level-learner-description": "\"নতুন আগতদের\" চেয়ে বেশিসংখ্যক দিন ও বেশিবার সম্পাদনা করেছেন, কিন্তু \"অভিজ্ঞ ব্যবহারকারীদের\" চেয়ে কম করেছেন।",
        "rcfilters-filter-user-experience-level-experienced-label": "অভিজ্ঞ ব্যবহারকারী",
        "rcfilters-filter-user-experience-level-experienced-description": "৩০ দিনের বেশি সক্রিয় আছেন ও ৫০০টির বেশি সম্পাদনা করেছেন।",
        "rcfilters-filtergroup-automated": "স্বয়ংক্রিয় অবদান",
        "rcshowhidecategorization": "পাতা শ্রেণীবদ্ধকরণ $1",
        "rcshowhidecategorization-show": "দেখাও",
        "rcshowhidecategorization-hide": "লুকিয়ে রাখো",
-       "rclinks": "'''প্রদর্শনের ধরন'''<br />\n* বিগত ($2) দিনের শেষ ($1)টি পরিবর্তন দেখাও",
+       "rclinks": "বিগত $2 দিনের শেষ $1টি পরিবর্তন দেখান",
        "diff": "পরিবর্তন",
        "hist": "ইতিহাস",
        "hide": "লুকিয়ে রাখো",
        "apisandbox-fullscreen-tooltip": "ব্রাউজারের উইন্ডো পূরণ করতে খেলাঘরের প্যানেল প্রসারিত করুন।",
        "apisandbox-unfullscreen": "পাতা দেখাও",
        "apisandbox-unfullscreen-tooltip": "খেলাঘরের প্যানেল হ্রাস করুন, তাহলে মিডিয়াউইকি পরিভ্রমণ করার সংযোগগুলি পাওয়া যাবে।",
-       "apisandbox-submit": "à¦\85নà§\81রà§\8bধ à¦°à¦¾à¦\96ুন",
+       "apisandbox-submit": "à¦\85নà§\81রà§\8bধ à¦\95রুন",
        "apisandbox-reset": "পরিষ্কার",
        "apisandbox-retry": "পুনঃচেষ্টা করুন",
        "apisandbox-loading": "\"$1\" এপিআই মডিউলের জন্য তথ্য লোড হচ্ছে...",
        "enotif_body_intro_moved": "{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} $PAGEEDITDATE তারিখে স্থানান্তর করেছেন, বর্তমান সংস্করণ দেখুন এখানে $3।",
        "enotif_body_intro_restored": "{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} $PAGEEDITDATE আগের অবস্থায় ফিরিয়ে এনেছেন, বর্তমান সংস্করণ দেখুন এখানে $3।",
        "enotif_body_intro_changed": "{{SITENAME}} এর $1 পাতাটি $PAGEEDITDATE তারিখে $2 কর্তৃক {{GENDER:$2|পরিবর্তিত}} হয়েছে, বর্তমান সংস্করণের দেখুন $3।",
-       "enotif_lastvisited": "আপনার শেষ আগমনের পরে সংঘটিত সমস্ত পরিবর্তনের জন্য $1 দেখুন।",
-       "enotif_lastdiff": "এই পরিবর্তনটি দেখার জন্য $1 দেখুন।",
+       "enotif_lastvisited": "আপনার শেষ আগমনের পরে সংঘটিত সমস্ত পরিবর্তনের জন্য, $1 দেখুন",
+       "enotif_lastdiff": "এই পরিবর্তনটি দেখার জন্য, $1 দেখুন",
        "enotif_anon_editor": "বেনামী ব্যবহারকারী $1",
        "enotif_body": "প্রিয় $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nসম্পাদকের সারাংশ: $PAGESUMMARY $PAGEMINOREDIT\n\nসম্পাদকের সাথে যোগাযোগের উপায়:\nইমেইল: $PAGEEDITOR_EMAIL\nউইকি: $PAGEEDITOR_WIKI\n\nপাতাটির পরবর্তী পরিবর্তনগুলো জন্য আর কোন বিজ্ঞপ্তি পাঠানো হবে না, যতক্ষণ না আপনি প্রবেশ করার সময় এই পাতায় ব্রাউজ করবেন। এছাড়া আপনি আপনার নজরতালিকায় রাখা সবগুলি পাতা জন্য বিজ্ঞপ্তি ফ্ল্যাগ শুরুর অবস্থায় ফিরিয়ে নিতে পারেন।\n\nআপনার বন্ধুত্বপূর্ণ {{SITENAME}} বিজ্ঞপ্তি ব্যবস্থা\n\n--\nইমেইল বিজ্ঞপ্তি সেটিং পরিবর্তনের জন্য দেখুন\n{{canonicalurl:{{#special:Preferences}}}}\n\nআপনার নজরতালিকা সেটিংস পরিবর্তন করতে চাইলে দেখুন, \n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nনজরতালিকা থেকে কোন পাতা অপসারণ করতে চাইলে এখানে যান:\n$UNWATCHURL\n\nপ্রতিক্রিয়া জানাতে ও আরও সহযোগিতার জন্য:\n$HELPPAGE",
        "created": "তৈরী হয়েছিল",
        "sp-contributions-uploads": "আপলোডসমূহ",
        "sp-contributions-logs": "লগসমূহ",
        "sp-contributions-talk": "আলোচনা",
-       "sp-contributions-userrights": "ব্যবহারকারী অধিকার ব্যবস্থাপনা",
+       "sp-contributions-userrights": "{{GENDER:$1|ব্যবহারকারী}} অধিকার ব্যবস্থাপনা",
        "sp-contributions-blocked-notice": "এই ব্যবহারকারী বর্তমানে বাধাদানকৃত অবস্থায় রয়েছেন।\nতথ্যসূত্র হিসেবে সাম্প্রতিক বাধাদান লগের ভুক্তিটি নিচে দেওয়া হলো:",
        "sp-contributions-blocked-notice-anon": "এই আইপি ঠিকানাটি বর্তমানে বাধাদানকৃত অবস্থায় রয়েছে।\nতথ্যসূত্র হিসেবে সাম্প্রতিক বাধাদান লগের ভুক্তিটি নিচে দেওয়া হলো:",
        "sp-contributions-search": "অবদানসমূহের জন্য অনুসন্ধান",
        "tooltip-pt-mycontris": "{{GENDER:|আপনার}} অবদানগুলোর একটি তালিকা",
        "tooltip-pt-anoncontribs": "এই আইপি ঠিকানা থেকে করা সম্পাদনার একটি তালিকা",
        "tooltip-pt-login": "আপনার প্রবেশ করাটা বাঞ্চনীয়, কিন্তু তা বাধ্যতামূলক নয়।",
+       "tooltip-pt-login-private": "এই উইকিতে ব্যবহার করতে আপনাকে প্রবেশ করতে হবে",
        "tooltip-pt-logout": "প্রস্থান",
        "tooltip-pt-createaccount": "আপনাকে একটি অ্যাকাউন্ট তৈরি করে প্রবেশ করার পরামর্শ দেওয়া হচ্ছে; তবে এটা বাধ্যতামূলক নয়",
        "tooltip-ca-talk": "বিষয়বস্তু পাতা সম্পর্কে আলোচনা",
        "anonymous": "{{SITENAME}} এর বেনামী {{PLURAL:$1|ব্যবহারকারী|ব্যবহারকারীবৃন্দ}}",
        "siteuser": "{{SITENAME}} ব্যবহারকারী $1",
        "anonuser": "{{SITENAME}} বেনামী ব্যবহারকারী $1",
-       "lastmodifiedatby": "$3 কর্তৃক $2, $1 তারিখে এই পাতাটিতে শেষ পরিবর্তন করা হয়েছিল।",
+       "lastmodifiedatby": "$3 কর্তৃক $2, $1 তারিখে এই পাতাটি শেষ সম্পাদিত হয়েছিল।",
        "othercontribs": "$1-এর কাজের উপর ভিত্তি করে।",
        "others": "অন্যান্য",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|ব্যবহারকারী}}|ব্যবহারকারী}} $1",
        "confirmrecreate": "আপনি সম্পাদনা শুরু করার পর ব্যবহারকারী [[User:$1|$1]] ([[User talk:$1|আলাপ]]) এই পাতাটি মুছে দিয়েছেন, নিচের কারণ দেখিয়ে:\n: <em>$2</em>\nআপনি সত্যিই যে পাতাটি পুনরায় সৃষ্টি করতে চান, তা দয়া করে নিশ্চিত করুন।",
        "confirmrecreate-noreason": "আপনি সম্পাদনা শুরু করার পর ব্যবহারকারী [[User:$1|$1]] ([[User talk:$1|আলাপ]]) এই পাতাটি {{GENDER:$1|মুছে}} দিয়েছেন। আপনি সত্যিই যে পাতাটি পুনরায় সৃষ্টি করতে চান, তা দয়া করে নিশ্চিত করুন।",
        "recreate": "পুনরায় তৈরি করো",
+       "confirm-purge-title": "এই পাতাটি শোধন করুন",
        "confirm_purge_button": "ঠিক আছে",
        "confirm-purge-top": "এই পাতার ক্যাশে পরিষ্কার করতে চান?",
        "confirm-purge-bottom": "ক্যাশে পরিষ্কারের মাধ্যমে পাতাটির সবচেয়ে সাম্প্রতিক সংস্করণটি প্রদর্শিত হবে।",
index 846759b..530c036 100644 (file)
        "rcfilters-filter-unregistered-label": "Divarilh",
        "rcfilters-filter-unregistered-description": "Aozerien n'int ket kevreet.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Tabut zo etre ar sil-mañ hag ar {{PLURAL:$2|sil|siloù}} Arroutet, na {{PLURAL:$2|gav|gavont}} nemet an implijerien enrollet : $1",
-       "rcfilters-filtergroup-authorship": "Kemmañ anv an aozer",
+       "rcfilters-filtergroup-authorship": "Aozer ar c'hemmoù",
        "rcfilters-filter-editsbyself-label": "Kemmet ganeoc'h",
-       "rcfilters-filter-editsbyself-description": "Kemmet ganeoc'h",
+       "rcfilters-filter-editsbyself-description": "Ar c'hemmoù graet ganeoc'h.",
        "rcfilters-filter-editsbyother-label": "Kemmet gant tud all",
-       "rcfilters-filter-editsbyother-description": "Kemmoù graet gant implijerien all (ket ganeoc'h).",
+       "rcfilters-filter-editsbyother-description": "An holl gemmoù nemet ar re graet ganeoc'h.",
        "rcfilters-filtergroup-userExpLevel": "Live skiant-prenañ (evit an implijer enrollet hepken)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Ar siloù Arroutet ne gavont nemet implijerien enrollet, se zo kaoz zo tabut etre ar sil-mañ hag ar sil \"Dienroll\".",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Emañ ar sil \"Dienroll\" o tabutal gant gant ur sil Arroutet pe gant meur a hini. Ar siloù Arroutet a gav implijerien enrollet hepken. Ar siloù o tabutal zo merket en takad Siloù oberiant a-us.",
        "tooltip-pt-mycontris": "Roll ho tegasadennoù",
        "tooltip-pt-anoncontribs": "Ur roll eus ar c'hemmoù graet adalek ar chomlec'h IP-mañ",
        "tooltip-pt-login": "Daoust ma n'eo ket ret, ec'h aliomp deoc'h kevreañ",
+       "tooltip-pt-login-private": "Ret eo deoc'h kevreañ evit gallout ober gant ar wiki-mañ",
        "tooltip-pt-logout": "Digevreañ",
        "tooltip-pt-createaccount": "Erbedet eo deoc'h krouiñ ur gont ha kevreañ ; n'eo ket ret koulskoude.",
        "tooltip-ca-talk": "Kaozeadennoù diwar-benn ar pennad",
index e03faf1..17fdfa7 100644 (file)
        "redirectedfrom": "(Preusmjereno sa $1)",
        "redirectpagesub": "Preusmjerenje",
        "redirectto": "Preusmjerenje na:",
-       "lastmodifiedat": "Ova stranica je posljednji put izmijenjena na dan $1 u $2.",
+       "lastmodifiedat": "Ova stranica je posljednji put izmijenjena na datum $1 u $2.",
        "viewcount": "Ovoj stranici je pristupljeno {{PLURAL:$1|$1 put|$1 puta}}.",
        "protectedpage": "Zaštićena stranica",
        "jumpto": "Idi na:",
        "virus-unknownscanner": "nepoznati anti-virus program:",
        "logouttext": "'''Sad ste odjavljeni.'''\n\nObratite pažnju da neke stranice mogu nastaviti da se prikazuju kao da ste još uvijek prijavljeni, dok ne očistite keš svog preglednika.",
        "cannotlogoutnow-title": "Odjava trenutno nije moguća",
+       "cannotlogoutnow-text": "Ne možete se odjaviti kad se koriste $1.",
        "welcomeuser": "Dobro došli, $1",
        "welcomecreation-msg": "Vaš nalog je napravljen.\nNe zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} podešavanja]].",
        "yourname": "Korisničko ime:",
        "cannotlogin-title": "Prijava nije moguća",
        "cannotlogin-text": "Prijava nija moguća.",
        "cannotloginnow-title": "Prijava trenutno nije moguća",
+       "cannotloginnow-text": "Ne možete se prijaviti kad se koriste $1.",
        "cannotcreateaccount-title": "Pravljenje računa nije moguće",
        "cannotcreateaccount-text": "Direktno pravljenje računa nije omogućeno na ovom wikiju.",
        "yourdomainname": "Vaš domen:",
        "botpasswords-updated-title": "Ažurirana lozinka bota",
        "botpasswords-updated-body": "Ažurirana lozinka za bota \"$1\" korisnika \"$2\".",
        "botpasswords-deleted-title": "Obrisana lozinka bota",
+       "botpasswords-deleted-body": "Lozinka za bota \"$1\" korisnika \"$2\" je obrisana.",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider nije dostupan.",
+       "botpasswords-restriction-failed": "Ne možete se prijaviti zbog ograničenja lozinki za botove.",
+       "botpasswords-invalid-name": "Navedeno korisničko ime ne sadrži rastavni znak (\"$1\") za lozinke botova.",
+       "botpasswords-not-exist": "Korisnik \"$1\" nema lozinku bota \"$2\".",
        "resetpass_forbidden": "Lozinke ne mogu biti promijenjene",
        "resetpass_forbidden-reason": "Lozinke ne mogu biti promijenjene: $1",
        "resetpass-no-info": "Morate biti prijavljeni da biste pristupili ovoj stranici direktno.",
        "passwordreset-emailtext-user": "Korisnik $1 na {{SITENAME}} je zatražio podsjetnik o detaljima Vašeg računa za {{SITENAME}} ($4). Sljedeći {{PLURAL:$3|korisnički račun je|korisnički računi su}} povezani s ovom e-mail adresom:\n\n$2\n\n{{PLURAL:$3|Ova privremena šifra|Ove privremene šifre}} će isteći za {{PLURAL:$5|jedan dan|$5 dana}}.\nTrebate se prijaviti i odabrati novu šifru. Ako je neko drugi napravio ovaj zahtjev, ili ako ste se sjetili Vaše originalne šifre, a ne želite je više promijeniti, možete zanemariti ovu poruku i nastaviti koristiti staru šifru.",
        "passwordreset-emailelement": "Korisničko ime: \n$1\n\nPrivremena šifra: \n$2",
        "passwordreset-emailsentemail": "Ako je ova adresa e-pošte povezana s Vašim računom, podsjetnik o lozinci bit će Vam poslan na adresu e-pošte.",
+       "passwordreset-emailsentusername": "Ako je adresa e-pošte povezana s ovim korisničkim imenom, primit ćete e-poruku za resetiranje lozinke.",
        "passwordreset-nocaller": "Mora se navesti pozivalac",
        "passwordreset-nosuchcaller": "Pozivalac ne postoji: $1",
+       "passwordreset-ignored": "Resetiranje lozinke nije uspjelo. Možda poslužilac nije konfiguriran?",
        "passwordreset-invalidemail": "Neispravna adresa e-pošte",
+       "passwordreset-nodata": "Niste naveli ni korisničko ime, a ni adresu e-pošte",
        "changeemail": "Promjena ili uklanjanje e-adrese",
        "changeemail-header": "Ispunite sljedeći formular da biste promijenili adresu e-pošte. Ako želite ukloniti postojeću adresu e-pošte s vašeg korisničkog računa, pri ispunjavanju formulara, polje nove adrese e-pošte ostavite prazno.",
        "changeemail-no-info": "Morate biti prijavljeni za direktan pristup ovoj stranici.",
        "blockedtitle": "Korisnik je blokiran",
        "blockedtext": "'''Vaše korisničko ime ili IP-adresa je blokirana.'''\n\nBlokada izvršena od strane $1.\nDati razlog je sljedeći: ''$2''.\n\n*Početak blokade: $8\n*Kraj perioda blokade: $6\n*Ime blokiranog korisnika: $7\n\nMožete kontaktirati sa $1 ili nekim drugim [[{{MediaWiki:Grouppage-sysop}}|administratorom]] da biste razgovarali o blokadi.\n\nNe možete koristiti opciju ''Pošalji e-mail korisniku'' osim ako niste unijeli e-mail adresu u [[Special:Preferences|Vaše postavke]].\nVaša trenutna IP-adresa je $3, a oznaka blokade je #$5.\nMolimo Vas da navedete gornje podatke pri zahtjevu za deblokadu.",
        "autoblockedtext": "Vaša IP-adresa automatski je blokirana jer ju je koristio drugi korisnik, a blokirao ju je $1.\nNaveden je sljedeći razlog:\n\n:''$2''\n\n* Početak blokade: $8\n* Kraj blokade: $6\n* Blokirani korisnik: $7\n\nMožete kontaktirati sa $1 ili nekim drugim iz grupe [[{{MediaWiki:Grouppage-sysop}}|administratora]] i zahtijevati da Vas deblokira.\n\nZapamtite da ne možete koristiti opciju \"pošalji e-mail ovom korisniku\" sve dok ne unesete validnu e-mail adresu pri registraciji u Vašim [[Special:Preferences|korisničkim postavkama]] i dok niste spriječeni (blokadom) da je koristite.\n\nVaša trenutna IP-adresa je $3, a ID blokade je $5.\nMolimo da navedete sve gore navedene detalje u zahtjevu za deblokadu.",
+       "systemblockedtext": "MediaWiki je automatski blokirao Vaše korisničko ime ili IP-adresu.\nDat je sljedeći razlog:\n\n:<em>$2</em>\n\n* Početak blokade: $8\n* Istek blokade: $6\n* Blokada je namijenjena za: $7\n\nVaša trenutna IP-adresa je $3.\nAko imate pitanja u vezi s blokadom, priložite sve gorenavedene pojedinosti.",
        "blockednoreason": "razlog nije naveden",
        "whitelistedittext": "Morate biti $1 da biste uređivali stranice.",
        "confirmedittext": "Morate potvrditi svoju adresu e-pošte prije nego počnete mijenjati stranice.\nPostavite i potvrdite svoju adresu e-pošte u [[Special:Preferences|korisničkim postavkama]].",
        "continue-editing": "Idi na područje uređivanja",
        "previewconflict": "Ovaj pregled prikazuje kako će tekst u gornjem polju izgledati ako odlučite sačuvati stranicu.",
        "session_fail_preview": "Izvinjavamo se! Nismo mogli obraditi Vašu izmjenu zbog gubitka podataka o prijavi.\n\nMožda ste odjavljeni. <strong>Provjerite jeste li prijavljeni i pokušajte ponovo</strong>.\nAko i dalje ne radi, pokušajte se [[Special:UserLogout|odjaviti]] i ponovo prijaviti i provjerite dozvoljava li Vaš preglednik kolačiće s ovog sajta.",
-       "session_fail_preview_html": "'''Žao nam je! Nismo mogli da obradimo vašu izmjenu zbog gubitka podataka.'''\n\n''Zbog toga što {{SITENAME}} ima omogućen izvorni HTML, predpregled je sakriven kao predostrožnost protiv JavaScript napada.''\n\n'''Ako ste pokušali da napravite pravu izmjenu, molimo pokušajte ponovo. Ako i dalje ne radi, pokušajte da se [[Special:UserLogout|odjavite]] i ponovo prijavite.'''",
+       "session_fail_preview_html": "Izvinjavamo se! Nismo mogli obraditi Vašu izmjenu zbog gubitka podataka sesije.\n\n<em>Budući da {{SITENAME}} ima omogućen izvorni HTML, pretpregled je sakriven kao mjera predostrožnosti protiv napada preko JavaScripta.</em>\n\n<strong>Ako ste pokušali napraviti pravu izmjenu, pokušajte ponovo.</strong>\nAko i dalje ne radi, pokušajte se [[Special:UserLogout|odjaviti]] i ponovo prijaviti i provjerite dozvoljava li Vaš preglednik kolačiće s ovog sajta.",
        "token_suffix_mismatch": "'''Vaša izmjena nije prihvaćena jer je Vaš web preglednik ubacio znakove interpunkcije u token uređivanja.\nIzmjena je odbačena da bi se spriječilo uništavanje teksta stranice.\nTo se događa ponekad kad korisite problematični anonimni proxy koji je baziran na web-u.'''",
        "edit_form_incomplete": "'''Neki dijelovi uređivačkog obrasca nisu došli do servera; dvaput provjerite da su vaše izmjene nepromjenjene i pokušajte ponovno.'''",
        "editing": "Uređujete $1",
        "readonlywarning": "<strong>Upozorenje: Baza je zaključana zbog održavanja, tako da nećete moći da sačuvate svoje izmjene za sada.</strong>\nMožda želite da kopirate i nalijepite tekst u tekst editor i sačuvate ga za kasnije.\n\nAdministrator koji je zaključao bazu je naveo sljedeće objašnjenje: $1",
        "protectedpagewarning": "'''PAŽNJA: Ova stranica je zaključana tako da samo korisnici sa administratorskim privilegijama mogu da je mijenjaju.'''\nPosljednja stavka u zapisniku je prikazana ispod kao referenca:",
        "semiprotectedpagewarning": "'''Pažnja:''' Ova stranica je zaključana tako da je samo registrovani korisnici mogu uređivati.\nPosljednja stavka zapisnika je prikazana ispod kao referenca:",
-       "cascadeprotectedwarning": "<strong>Upozorenje:</strong> Ova stranica je zaključana tako da je samo administratori mogu mijenjati, jer je ona uključena u {{PLURAL:$1|ovu, lančanu povezanu, zaštićenu stranicu|sljedeće, prenosivo povezane, zaštićene stranice}}:",
+       "cascadeprotectedwarning": "<strong>Upozorenje:</strong> Ova stranica je zaključana tako da je samo korisnici sa [[Special:ListGroupRights|specifičnim pravima]] mogu mijenjati, jer je ona uključena u {{PLURAL:$1|ovu, lančanu povezanu, zaštićenu stranicu|sljedeće, prenosivo povezane, zaštićene stranice}}:",
        "titleprotectedwarning": "'''UPOZORENJE: Ova stranica je zaključana tako da su potrebna [[Special:ListGroupRights|posebna prava]] da se ona napravi.'''\nPosljednja stavka zapisnika je prikazana ispod kao referenca:",
        "templatesused": "{{PLURAL:$1|Šablon|Šabloni}} koji su upotrebljeni na ovoj stranici:",
        "templatesusedpreview": "{{PLURAL:$1|Šablon|Šabloni}} prikazani u ovom pregledu:",
        "permissionserrors": "Greška pri odobrenju",
        "permissionserrorstext": "Nemate dopuštenje za ovu radnju iz {{PLURAL:$1|sljedećeg razloga|sljedećih razloga}}:",
        "permissionserrorstext-withaction": "Nemate dopuštenje da $2, iz {{PLURAL:$1|sljedećeg|sljedećih}} razloga:",
-       "contentmodelediterror": "Ne možete urediti ovu izmjenu jer je njen model sadržaja <code>$1</code>, a trenutni model sadržaja stranice je <code>$2</code>.",
+       "contentmodelediterror": "Ne možete urediti ovu izmjenu jer je njen model sadržaja <code>$1</code>, što se razlikuje od trenutnog modela sadržaja stranice <code>$2</code>.",
        "recreate-moveddeleted-warn": "<strong>Upozorenje: Ponovo pravite stranicu koja je prethodno obrisana.</strong>\n\nRazmotrite je li prikladno nastaviti s uređivanjem ove stranice.\nOvdje je naveden zapisnik brisanja i premještanja:",
        "moveddeleted-notice": "Ova stranica je obrisana.\nZapisnik brisanja i premještanja stranice je prikazan ispod kao referenca.",
        "moveddeleted-notice-recent": "Žao nam je, ova stranica je nedavno obrisana (u prethodna 24 sata).\nNiže su navedeni zapisnici brisanja i premještanja.",
        "content-json-empty-object": "Prazan objekat",
        "content-json-empty-array": "Prazan niz",
        "deprecated-self-close-category": "Stranice s neispravnim samozatvorenim HTML oznakama",
+       "deprecated-self-close-category-desc": "Stranica sadrži neispravne samozatvorene HTML oznake, kao što su <code>&lt;b/></code> ili <code>&lt;span/></code>. Njihovo funkcioniranje uskoro će se promijeniti da bude u skladu sa specifikacijama za HTML5, što znači da su zastarjeli i ne bi se trebali upotrebljavati u wikitekstu.",
        "duplicate-args-warning": "<strong>Upozorenje:</strong> [[:$1]] poziva na [[:$2]] sa više od jedne vrijednosti za parametar \"$3\". Koristit će se samo posljednja navedena vrijednost.",
        "duplicate-args-category": "Stranice sa istim argumentima kod poziva šablona",
        "duplicate-args-category-desc": "Stranica sadrži pozive šablona koji koriste argumente dvojnike, kao što su <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> ili <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "page_first": "prva",
        "page_last": "posljednja",
        "histlegend": "Odabir razlika: označite radio dugme verzija koje uspoređujete i pritistnite enter ili dugme na dnu. <br />\nObjašnjenje: <strong>({{int:cur}})</strong> = razlika sa trenutnom verzijom, <strong>({{int:last}})</strong> = razlika sa prethodnom verzijom, <strong>{{int:minoreditletter}}</strong> = mala izmjena.",
-       "history-fieldset-title": "Pretraga historije",
+       "history-fieldset-title": "Pretraži izmjene",
        "history-show-deleted": "Samo obrisane",
        "histfirst": "najstarije",
        "histlast": "najnovije",
        "prefs-help-prefershttps": "Ova podešavanja će stupiti na snagu pri sljedećoj prijavi.",
        "prefswarning-warning": "Napravili ste promjene u vašim postavkama koje još uvijek nisu sačuvane. Ako napustite ovu stranicu bez da pritisnete na \"$1\", postavke neće biti ažurirane.",
        "prefs-tabs-navigation-hint": "Savjet: Možete koristiti tipke sa lijevom i desnom strelicom za kretanje kroz kartice.",
-       "userrights": "Postavke korisničkih prava",
+       "userrights": "Korisnička prava",
        "userrights-lookup-user": "Izaberi korisnika",
        "userrights-user-editname": "Upišite korisničko ime:",
        "editusergroup": "Učitaj korisničke grupe",
        "saveusergroups": "Sačuvaj {{GENDER:$1|korisničke}} grupe",
        "userrights-groupsmember": "Član:",
        "userrights-groupsmember-auto": "Uključeni član od:",
-       "userrights-groups-help": "Možete promijeniti grupe kojima ovaj korisnik pripada:\n* Označeni kvadratić znači da je korisnik u toj grupi.\n* Neoznačeni kvadratić znači da korisnik nije u toj grupi.\n* Zvjezdica (*) označava da ne možete ukloniti grupu nakon što je dodate i obrnuto.\n* Taraba (#) označava da jedino možete odložiti vrijeme isteka ove grupe; ne možete ga ubrzati.",
+       "userrights-groups-help": "Možete promijeniti grupe kojima ovaj korisnik pripada:\n* Označeni kvadratić znači da je korisnik u toj grupi.\n* Neoznačeni kvadratić znači da korisnik nije u toj grupi.\n* Zvjezdica (*) označava da ne možete ukloniti grupu nakon što je dodate i obrnuto.\n* Taraba (#) označava da jedino možete odložiti vrijeme isteka članstva u ovoj grupi; ne možete ga ubrzati.",
        "userrights-reason": "Razlog:",
        "userrights-no-interwiki": "Nemate dopuštenja da uređujete korisnička prava na drugim wikijima.",
        "userrights-nodatabase": "Baza podataka $1 ne postoji ili nije lokalna baza.",
        "userrights-expiry-options": "1 dan:1 day,1 sedmica:1 week,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godina:1 year",
        "userrights-invalid-expiry": "Vrijeme isticanja grupe \"$1\" nije ispravno.",
        "userrights-expiry-in-past": "Vrijeme isticanja grupe \"$1\" je u prošlosti.",
-       "userrights-cannot-shorten-expiry": "Ne možete ubrzati vrijeme isteka grupe \"$1\". Jedino je mogu ubrzati korisnici koji mogu dodavati i uklanjati ovu grupu.",
+       "userrights-cannot-shorten-expiry": "Ne možete ubrzati vrijeme isteka članstva u grupi \"$1\". Jedino je mogu ubrzati korisnici koji mogu dodavati i uklanjati ovu grupu.",
        "userrights-conflict": "Sukob u izmjeni korisničkih prava! Molimo da razmotrite i potvrdite Vaše promjene.",
        "group": "Grupa:",
        "group-user": "Korisnici",
        "right-createpage": "Pravljenje stranica (izuzev stranica za razgovor)",
        "right-createtalk": "Pravljenje stranica za razgovor",
        "right-createaccount": "Pravljenje novih korisničkih računa",
+       "right-autocreateaccount": "Automatska prijava s vanjskim korisničkim računom",
        "right-minoredit": "Označavanje izmjena manjim",
        "right-move": "Premještanje stranica",
        "right-move-subpages": "Premještanje stranica s njihovim podstranicama",
        "right-applychangetags": "Primjenjivanje [[Special:Tags|oznaka]] na nečije izmjene",
        "right-changetags": "Dodavanje ili uklanjanje raznih [[Special:Tags|oznaka]] na pojedinačnim verzijama i unosima u zapisnicima",
        "right-deletechangetags": "Brisanje [[Special:Tags|oznaka]] iz baze podataka",
+       "grant-generic": "Zbir prava \"$1\"",
        "grant-group-page-interaction": "Upravljanje stranicama",
        "grant-group-file-interaction": "Rad s medijskim datotekama",
        "grant-group-watchlist-interaction": "Upravljanje Vašim spiskom praćenja",
        "action-createpage": "napravite ovu stranicu",
        "action-createtalk": "napravite ovu stranicu za razgovor",
        "action-createaccount": "napravite ovaj korisnički račun",
+       "action-autocreateaccount": "automatski napravite ovaj vanjski korisnički račun",
        "action-history": "gledate historiju ove stranice",
        "action-minoredit": "označite ovu izmjenu manjom",
        "action-move": "premjestite ovu stranicu",
        "rcfilters-invalid-filter": "Neispravan filter",
        "rcfilters-empty-filter": "Nema aktivnih filtera. Prikazani su svi doprinosi.",
        "rcfilters-filterlist-title": "Filteri",
+       "rcfilters-filterlist-whatsthis": "Šta je ovo?",
        "rcfilters-filterlist-feedbacklink": "Pružite povratne informacije o novim (beta) filterima",
        "rcfilters-highlightbutton-title": "Istakni rezultate",
        "rcfilters-highlightmenu-title": "Izaberite boju",
        "rcfilters-highlightmenu-help": "Izaberite boju da biste istaknuli ovo svojstvo",
        "rcfilters-filterlist-noresults": "Nema filtera",
+       "rcfilters-state-message-fullcoverage": "Izabiranje svih filtera u grupi isto je kao da niste izabrali nijedan, tako da ovaj filter nema nikakvog efekta. Grupa sadrži: $1",
        "rcfilters-filtergroup-registration": "Registracija korisnika",
        "rcfilters-filter-registered-label": "Registrirani",
        "rcfilters-filter-registered-description": "Prijavljeni korisnici.",
        "rcfilters-filter-unregistered-label": "Anonimni",
        "rcfilters-filter-unregistered-description": "Neprijavljeni korisnici.",
-       "rcfilters-filtergroup-authorship": "Autorstvo izmjena",
-       "rcfilters-filter-editsbyself-label": "Vlastite izmjene",
-       "rcfilters-filter-editsbyself-description": "Izmjene koje ste Vi napravili.",
+       "rcfilters-filtergroup-authorship": "Autorstvo doprinosa",
+       "rcfilters-filter-editsbyself-label": "Ve izmjene",
+       "rcfilters-filter-editsbyself-description": "Vaši vlastiti doprinosi.",
        "rcfilters-filter-editsbyother-label": "Tuđe izmjene",
-       "rcfilters-filter-editsbyother-description": "Izmjene koje su napravili drugi korisnici (ne Vi).",
+       "rcfilters-filter-editsbyother-description": "Sve izmjene osim Vaših.",
        "rcfilters-filtergroup-userExpLevel": "Korisničko iskustvo (samo za registrirane)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Novajlije",
        "rcfilters-filter-user-experience-level-newcomer-description": "Manje od 10 izmjena i 4 dana aktivnosti.",
        "rcfilters-filter-bots-description": "Izmjene napravljene automatiziranim alatima.",
        "rcfilters-filter-humans-label": "Čovjek (ne bot)",
        "rcfilters-filter-humans-description": "Izmjene koje su napravili ljudi.",
+       "rcfilters-filtergroup-reviewstatus": "Pregledanost",
+       "rcfilters-filter-patrolled-label": "Patrolirano",
+       "rcfilters-filter-patrolled-description": "Izmjene označene patroliranim.",
+       "rcfilters-filter-unpatrolled-label": "Nepatrolirano",
+       "rcfilters-filter-unpatrolled-description": "Izmjene koje nisu označene patroliranim.",
        "rcfilters-filtergroup-significance": "Značaj",
        "rcfilters-filter-minor-label": "Manje izmjene",
        "rcfilters-filter-minor-description": "Izmjene koje je njihov autor označio manjim.",
        "rcfilters-filter-categorization-description": "Izmjene kojima se dodavaju ili uklanjaju kategorije.",
        "rcfilters-filter-logactions-label": "Zapisane radnje",
        "rcfilters-filter-logactions-description": "Administrativne radnje, pravljenje računa, brisanje stranica, postavljenje datoteka....",
+       "rcfilters-typeofchange-conflicts-hideminor": "Ovaj filter za vrstu izmjene u sukobu je s filterom za \"manje izmjene\". Izvjesne vrste izmjena ne mogu se označiti kao \"manje\".",
        "rcnotefrom": "Ispod {{PLURAL:$5|je izmjena|su izmjene}} od <strong>$3, $4</strong> (do <strong>$1</strong> prikazano).",
+       "rclistfromreset": "Resetiraj izbor datuma",
        "rclistfrom": "Prikaži nove izmjene počev od $3 u $2",
        "rcshowhideminor": "$1 manje izmjene",
        "rcshowhideminor-show": "Prikaži",
        "uploaded-script-svg": "Pronađen skriptni element \"$1\" u postavljenoj SVG datoteci.",
        "uploaded-hostile-svg": "Pronađen nesiguran CSS u stilskom elementu postavljene SVG datoteke.",
        "uploaded-event-handler-on-svg": "Nije dozvoljeno postavljanje atributa koji kontroliraju događaje <code>$1=\"$2\"</code> u SVG datotekama.",
-       "uploaded-href-unsafe-target-svg": "Pronađen href sa nesigurnom metom <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
+       "uploaded-href-unsafe-target-svg": "Pronađen href s nesigurnim podacima: URI-meta <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
        "uploaded-animate-svg": "Pronađena \"animate\" oznaka koja možda mijenja href koristeći se \"from\" atributom <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
        "uploaded-setting-event-handler-svg": "Postavljanje kontrole događaja je blokirano, pronađeno <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
        "uploaded-setting-href-svg": "Blokirano je korištenje \"set\" oznake kako bi se dodao \"href\" atribut glavnom elementu.",
        "backend-fail-read": "Ne mogu čitati datoteku $1.",
        "backend-fail-create": "Ne mogu napraviti datoteku $1.",
        "backend-fail-maxsize": "Ne mogu zapisati datoteku \"$1\" jer je veća od {{PLURAL:$2|$2 bajta|$2 bajta|$2 bajtova}}.",
-       "backend-fail-readonly": "Skladišna osnova \"$1\" je trenutno samo za čitanje. Navedeni razlog je: \"$2\"",
+       "backend-fail-readonly": "Skladišna osnova \"$1\" trenutno je samo za čitanje. Navedeni razlog je: <em>$2</em>",
        "backend-fail-synced": "Datoteka \"$1\" je u nekonzistentnom stanju u internom skladištu",
        "backend-fail-connect": "Ne mogu se povezati sa pozadinskim spremištem \"$1\".",
        "backend-fail-internal": "Došlo je do nepoznate greške u skladišnoj osnovi \"$1\".",
        "uploadstash-summary": "Ova stranica daje pristup datotekama koje su postavljene (ili su u postupku postavljanja) ali još nisu objavljene na wiki. Ove datoteke nisu vidljive nikom osim korisniku koji ih je postavio.",
        "uploadstash-clear": "Očisti sakrivene datoteke",
        "uploadstash-nofiles": "Nemate sakrivenih datoteka.",
-       "uploadstash-badtoken": "Izvršavanje ove akcije je bilo neuspješno, možda zato što su vaša uređivačka odobrenja istekla. Pokušajte ponovo.",
+       "uploadstash-badtoken": "Izvršavanje ove radnje nije uspjelo, možda zato što su Vaša uređivačka odobrenja istekla. Pokušajte ponovo.",
        "uploadstash-errclear": "Brisanje datoteka nije uspjelo.",
        "uploadstash-refresh": "Osvježi spisak datoteka",
        "invalid-chunk-offset": "Neispravna polazna tačka",
        "apisandbox-results": "Rezultati",
        "apisandbox-continue": "Nastavi",
        "apisandbox-continue-clear": "Očisti",
+       "apisandbox-multivalue-all-namespaces": "$1 (svi imenski prostori)",
        "apisandbox-multivalue-all-values": "$1 (sve vrijednosti)",
        "booksources": "Književni izvori",
        "booksources-search-legend": "Traži književne izvore",
        "listgrouprights-namespaceprotection-namespace": "Imenski prostor",
        "listgrouprights-namespaceprotection-restrictedto": "Prava kojima se dozvoljava korisniku da uređuje",
        "listgrants": "Dozvole",
-       "listgrants-summary": "Ovo je spisak OAuth dozvola s odgovarajućim pravima uz svaku dozvolu s desne strane. Korisnici aplikacijama mogu odobriti da koriste njihov korisnički račun ali uz ograničena prava u zavisnosti od tog koju dozvolu im korisnik omogući. Međutim, aplikacija koja se koristi korisničkim računom ne može koristiti prava koja korisnik ne posjeduje. Moguće je da postoje [[{{MediaWiki:Listgrouprights-helppage}}|dodatne informacije]] o pojedinim pravima.",
+       "listgrants-summary": "Ovo je spisak dozvola s odgovarajućim pravima uz svaku dozvolu s desne strane. Korisnici aplikacijama mogu odobriti da koriste njihov korisnički račun, ali uz ograničena prava u zavisnosti od tog koju dozvolu im korisnik omogući. Međutim, aplikacija koja se koristi korisničkim računom ne može koristiti prava koja korisnik ne posjeduje. Moguće je da postoje [[{{MediaWiki:Listgrouprights-helppage}}|dodatne informacije]] o pojedinim pravima.",
        "listgrants-grant": "Dozvola",
        "listgrants-rights": "Prava",
        "trackingcategories": "Kategorije za praćenje",
-       "trackingcategories-summary": "Ova stranica prikazuje prateće kategorije koje MediaWiki softver automatski popunjava. Njihovi nazivi se mogu promijeniti izmjenom odgovarajućih sistemskih poruka u imenskom prostoru {{ns:8}}.",
+       "trackingcategories-summary": "Ova stranica prikazuje kategorije za praćenje koje softver MediaWiki automatski popunjava. Njihovi nazivi mogu se promijeniti izmjenom odgovarajućih sistemskih poruka u imenskom prostoru {{ns:8}}.",
        "trackingcategories-msg": "Praćenje kategorije",
        "trackingcategories-name": "Ime poruke",
        "trackingcategories-desc": "Kriterij uključenja kategorije",
        "enotif_body_intro_moved": "Stranicu $1 projekta {{SITENAME}} {{GENDER:$2|premjestio|premjestila}} je $PAGEEDITDATE {{GENDER:$2|korisnik|korisnica}} $2, pogledajte $3 za trenutnu verziju.",
        "enotif_body_intro_restored": "Stranicu $1 projekta {{SITENAME}} {{GENDER:$2|vratio|vratila}} je dana $PAGEEDITDATE {{GENDER:$2|korisnik|korisnica}} $2, pogledajte $3 za trenutnu verziju.",
        "enotif_body_intro_changed": "Stranicu $1 projekta {{SITENAME}} {{GENDER:$2|promijenio|promijenila}} je dana $PAGEEDITDATE {{GENDER:$2|korisnik|korisnica}} $2, pogledajte $3 za trenutnu verziju.",
-       "enotif_lastvisited": "Pogledajte $1 za sve izmjene od vaše posljednje posjete.",
-       "enotif_lastdiff": "Vidi $1 da pregledate ovu promjenu.",
+       "enotif_lastvisited": "Za sve izmjene od Vaše posljednje posjete, pogledajte $1",
+       "enotif_lastdiff": "Da vidite ovu izmjenu, pogledajte $1",
        "enotif_anon_editor": "anonimni korisnik $1",
        "enotif_body": "Poštovani $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nSažetak urednika: $PAGESUMMARY $PAGEMINOREDIT\n\nKontaktirajte urednika:\ne-pošta: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNeće biti drugih obavještenja u slučaju daljnjih izmjena osim ako prijavljeni ponovno posjetite stranicu. Također možete poništiti oznake obavijesti za sve praćene stranice koje imate na vašem spisku praćenja.\n\nVaš prijateljski {{SITENAME}} sistem obavještavanja\n\n--\nZa promjenu vaših postavki email obavijesti, posjetite\n{{canonicalurl:{{#special:Preferences}}}}\n\nZa promjenu postavki vašeg praćenja, posjetite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nDa obrišete stranicu sa vašeg spiska praćenja, posjetite\n$UNWATCHURL\n\nPovratne informacije i daljnja pomoć:\n$HELPPAGE",
        "created": "napravljena",
        "editcomment": "Sažetak izmjene je bio: <em>$1</em>.",
        "revertpage": "Vraćene izmjene {{GENDER:$2|korisnika|korisnice}} [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na posljednju izmjenu {{GENDER:$1|korisnika|korisnice}} [[User:$1|$1]]",
        "revertpage-nouser": "Vraćene izmjene skrivenog korisnika na posljednju reviziju, koju je {{GENDER:$1|napravio|napravila}} [[User:$1|$1]]",
-       "rollback-success": "Vraćene izmjene {{GENDER:$2|korisnika|korisnice}} $1 na posljednju verziju {{GENDER:$2|korisnika|korisnice}} $2.",
+       "rollback-success": "Vraćene izmjene {{GENDER:$3|korisnika|korisnice}} $1 na posljednju verziju {{GENDER:$4|korisnika|korisnice}} $2.",
        "sessionfailure-title": "Greška u sesiji",
        "sessionfailure": "Izgleda da postoji problem sa vašom sesijom; ova akcija je otkazana kao prevencija protiv napadanja sesija. Kliknite \"back\" (''nazad'') i osvježite stranicu sa koje ste došli, i opet pokušajte.",
        "changecontentmodel": "Promijeni model sadržaja stranice",
        "changecontentmodel-emptymodels-title": "Nema dostupnih modela sadržaja",
        "changecontentmodel-emptymodels-text": "Model sadržaja stranice [[:$1]] ne može se pretvoriti ni u jednu drugu vrstu.",
        "log-name-contentmodel": "Zapisnik promjene modela sadržaja",
-       "log-description-contentmodel": "Događaji koji su povezani s modelom sadržaja stranice",
+       "log-description-contentmodel": "Ova stranica navodi izmjene modela sadržaja stranica, kao i stranice napravljene s modelom sadržaja koji se razlikuje od predodređenog.",
        "logentry-contentmodel-new": "$1 {{GENDER:$2|napravio|napravila}} je stranicu $3 s nestandardnim modelom sadržaja \"$5\"",
        "logentry-contentmodel-change": "$1 {{GENDER:$2|promijenio|promijenila}} je model sadržaja stranice $3 iz \"$4\" u \"$5\"",
        "logentry-contentmodel-change-revertlink": "vrati",
        "sp-contributions-uploads": "postavljanja",
        "sp-contributions-logs": "zapisnici",
        "sp-contributions-talk": "razgovor",
-       "sp-contributions-userrights": "postavke korisničkih prava",
+       "sp-contributions-userrights": "postavke {{GENDER:$1|korisničkih}} prava",
        "sp-contributions-blocked-notice": "{{GENDER:$1|Ovaj korisnik|Ova korisnica}} je trenutno {{GENDER:$1|blokiran|blokirana}}.\nPosljednju stavku zapisnika blokiranja možete pogledati ispod:",
        "sp-contributions-blocked-notice-anon": "Ova IP adresa je trenutno blokirana.\nPosljednje stavke zapisnika blokiranja možete pogledati ispod:",
        "sp-contributions-search": "Pretraži doprinose",
        "unblock": "Odblokiraj korisnika",
        "blockip": "Blokiraj {{GENDER:$1|korisnika|korisnicu}}",
        "blockip-legend": "Blokiranje korisnika",
-       "blockiptext": "Upotrebite donji upitnik da biste uklonili prava pisanja sa određene IP adrese ili korisničkog imena.  Ovo bi trebalo da bude urađeno samo da bi se spriječio vandalizam, i u skladu sa [[{{MediaWiki:Policy-url}}|smjernicama]]. Unesite konkretan razlog ispod (na primjer, navodeći koje stranice su vandalizovane).",
+       "blockiptext": "Koristite donji obrazac da biste uklonili prava pisanja određenoj IP-adresi ili korisničkom imenu.\nOvo bi se trebalo raditi samo da bi se spriječio vandalizam, i u skladu sa [[{{MediaWiki:Policy-url}}|smjernicama]].\nIspod upišite konkretan razlog (naprimjer, navedite koje su stranice vandalizirane).\nMožete blokirati IP-opsege koristeći sintaksu [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR-a]; najveći dozvoljeni opseg za IPv4 je /$1, a za IPv6 /$2.",
        "ipaddressorusername": "IP adresa ili korisničko ime:",
        "ipbexpiry": "Ističe:",
        "ipbreason": "Razlog:",
        "ipbreason-dropdown": "*Najčešći razlozi blokiranja\n**Netačne informacije\n**Uklanjanje sadržaja stranica\n**Postavljanje spam vanjskih linkova\n**Ubacivanje gluposti/grafita\n**Osobni napadi (ili napadačko ponašanje)\n**Čarapare (zloupotreba više korisničkih računa)\n**Neprihvatljivo korisničko ime",
        "ipb-hardblock": "Onemogući prijavljene korisnike da uređuju sa ove IP adrese",
        "ipbcreateaccount": "Spriječi pravljenje računa",
-       "ipbemailban": "Onemogući korisnika da šalje e-mail",
+       "ipbemailban": "Spriječi korisnika da šalje e-poštu",
        "ipbenableautoblock": "Automatski blokiraj posljednju IP-adresu koju je koristio ovaj korisnik i sve druge IP-adrese s kojih je pokušao uređivati",
        "ipbsubmit": "Blokiraj ovog korisnika",
        "ipbother": "Drugo vrijeme:",
        "unblocked-id": "Blokada ID oznake $1 je uklonjena",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] je deblokiran.",
        "blocklist": "Blokirani korisnici",
+       "autoblocklist": "Autoblokovi",
+       "autoblocklist-submit": "Pretraži",
+       "autoblocklist-legend": "Ispis autoblokova",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Lokalni autoblok|Lokalni autoblokovi}}",
+       "autoblocklist-empty": "Spisak autoblokova je prazan.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Drugi autoblok|Drugi autoblokovi}}",
        "ipblocklist": "Blokirani korisnici",
        "ipblocklist-legend": "Traži blokiranog korisnika",
        "blocklist-userblocks": "Sakrij blokade računa",
        "block-log-flags-hiddenname": "korisničko ime sakriveno",
        "range_block_disabled": "Administratorska mogućnost da blokira grupe je isključena.",
        "ipb_expiry_invalid": "Neispravno vrijeme isteka.",
+       "ipb_expiry_old": "Vrijeme isteka je u prošlosti.",
        "ipb_expiry_temp": "Sakrivene blokade korisničkih imena moraju biti stalne.",
        "ipb_hide_invalid": "Ne može se onemogućiti ovaj račun; on ima više od {{PLURAL:$1|jedne izmjene|$1 izmjena}}.",
        "ipb_already_blocked": "\"$1\" je već blokiran",
        "proxyblockreason": "Vaša IP adresa je blokirana jer je ona otvoreni proxy.\nMolimo vas da kontaktirate vašeg davatelja internetskih usluga ili tehničku podršku i obavijestite ih o ovom ozbiljnom sigurnosnom problemu.",
        "sorbsreason": "Vaša IP adresa je prikazana kao otvoreni proxy u DNSBL koji koristi {{SITENAME}}.",
        "sorbs_create_account_reason": "Vaša IP adresa je prikazana kao otvoreni proxy u DNSBL korišten od {{SITENAME}}.\nNe možete napraviti račun",
+       "softblockrangesreason": "Anonimni doprinosi nisu dozvoljeni s Vaše IP-adrese ($1). Prijavite se.",
        "xffblockreason": "Blokirana je vaša ili IP adresa proxy servera koga koristite, koja se nalazi u zaglavlju X-Forwarded-For. Razlog za blokiranje je bio: $1",
        "cant-see-hidden-user": "Korisnik kojeg pokušavate blokirati je već blokiran i sakriven. Pošto nemate prava hideuser (sakrivanje korisnika), ne možete vidjeti ni urediti korisnikovu blokadu.",
        "ipbblocked": "Ne možete blokirati ili deblokirati druge korisnike, jer ste i sami blokirani",
        "lockdbsuccesstext": "Baza podataka je zaključana.<br />\nNe zaboravite je [[Special:UnlockDB|otključati]] nakon što završite s održavanjem.",
        "unlockdbsuccesstext": "{{SITENAME}} baza podataka je otključana.",
        "lockfilenotwritable": "Datoteka zaključavanja baze je zaštićena za pisanje.\nAko želite otključati ili zaključati bazu, ova datoteka mora biti omogućena za pisanje od strane web servera.",
+       "databaselocked": "Baza podataka već je zaključana.",
        "databasenotlocked": "Baza podataka nije zaključana.",
        "lockedbyandtime": "(od $1 dana $2 u $3)",
        "move-page": "Premjesti $1",
        "move-page-legend": "Premjesti stranicu",
-       "movepagetext": "Korištenjem ovog formulara možete preimenovati stranicu, premještajući cijelu historiju na novo ime.\nČlanak pod starim imenom postat će stranica koja preusmjerava na članak pod novim imenom. \nMožete automatski izmijeniti preusmjerenje do izvornog naslova.\nAko se ne odlučite na to, provjerite [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|neispravna preusmjeravanja]].\nDužni ste provjeriti da svi linkovi i dalje nastave voditi na prave stranice.\n\nImajte na umu da članak '''neće''' biti premješten ako već postoji članak pod imenom na koje ga namjeravate preusmjeriti osim u slučaju stranice za preusmjeravanje koja nema nikakvih starih izmjena.\nTo znači da možete vratiti stranicu na prethodno mjesto ako pogriješite, ali ne možete zamijeniti postojeću stranicu.\n\n'''Pažnja!'''\nOvo može biti drastična i neočekivana promjena kad su u pitanju popularne stranice.\nMolimo da dobro razmislite prije no što premjestite stranicu.",
+       "movepagetext": "Korištenjem ovog formulara možete preimenovati stranicu, premještajući cijelu historiju na novo ime.\nČlanak pod starim imenom postat će stranica koja preusmjerava na članak pod novim imenom. \nMožete automatski izmijeniti preusmjerenje do izvornog naslova.\nAko se ne odlučite na to, provjerite [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|neispravna preusmjeravanja]].\nDužni ste provjeriti da svi linkovi i dalje nastave voditi na prave stranice.\n\nImajte na umu da članak <strong>neće</strong> biti premješten ako već postoji članak pod imenom na koje ga namjeravate preusmjeriti osim u slučaju stranice za preusmjeravanje koja nema nikakvih starih izmjena.\nTo znači da možete vratiti stranicu na prethodno mjesto ako pogriješite, ali ne možete zamijeniti postojeću stranicu.\n\n<strong>Napomena:</strong>\nOvo može biti drastična i neočekivana promjena kad su u pitanju popularne stranice.\nMolimo da dobro razmislite prije no što premjestite stranicu.",
        "movepagetext-noredirectfixer": "Koristeći donji obrazac, preimenovat ćete stranicu i premjestiti cijelu njenu historiju na novi naziv.\nStari naziv postat će preusmjerenje na novi naziv.\nMolimo da provjerite postoje li [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|nedovršena preusmjerenja]].\nVi ste za to odgovorni te morate provjeriti jesu li linkovi ispravni i vode li tamo kamo bi trebali voditi.\n\nImajte na umu da stranica '''neće''' biti premještena ako već postoji stranica s tim imenom, osim ako je prazna ili je preusmjerenje ili nema ranije historije.\nOvo znači da možete preimenovati stranicu nazad gdje je ranije bila preimenovana ako ste pogriješili, ali ne možete ponovo preimenovati postojeću stranicu.\n\n<strong>Napomena:</strong>\nImajte na umu da premještanje popularnog članka može biti\ndrastična i neočekivana promjena za korisnike; molimo da budete sigurni da ste shvatili posljedice prije no što nastavite.",
        "movepagetalktext": "Ako označite ovu kutijicu, odgovarajuća stranica za razgovor, ako postoji, automatski će biti premještena na novi naziv, osim ako već postoji sadržaj na odredišnoj stranici za razgovor.\n\nU tom slučaju, morat ćete ručno premjestiti ili prekopirati stranicu ako to želite.",
        "moveuserpage-warning": "<strong>Upozorenje:</strong> Premještate korisničku stranicu. Imajte u vidu da će samo stranica biti premještena, a sam korisnik <em>neće</em> biti preimenovan.",
        "import-nonewrevisions": "Nijedna revizija nije uvezena (ili su sve već prisutne ili su preskočene zbog greške).",
        "xml-error-string": "$1 na liniji $2, kolona $3 (bajt $4): $5",
        "import-upload": "Postavljanje XML podataka",
-       "import-token-mismatch": "Izgubljeni podaci sesije. Molimo pokušajte ponovno.",
+       "import-token-mismatch": "Izgubljeni podaci sesije.\n\nMožda ste odjavljeni. <strong>Provjerite jeste li još uvijek prijavljeni i pokušajte ponovo</strong>.\nAko i dalje ne radi, pokušajte se [[Special:UserLogout|odjaviti]] i ponovo prijaviti i provjerite dozvoljava li Vaš preglednik kolačiće s ovog sajta.",
        "import-invalid-interwiki": "Ne mogu uvesti iz navedenog wikija.",
        "import-error-edit": "Stranica \"$1\" nije uvezena jer vam nije dopušteno da je uređujete.",
        "import-error-create": "Stranica \"$1\" nije uvezena jer vam nije dozvoljeno da je napravite.",
        "tooltip-pt-preferences": "{{GENDER:|Vaše}} postavke",
        "tooltip-pt-watchlist": "Spisak stranica koje pratite",
        "tooltip-pt-mycontris": "Spisak {{GENDER:|Vaših}} doprinosa",
+       "tooltip-pt-anoncontribs": "Spisak izmjena napravljenih s ove IP-adrese",
        "tooltip-pt-login": "Predlažemo da se prijavite, ali nije obvezno.",
+       "tooltip-pt-login-private": "Morate se prijaviti da biste koristili ovaj wiki",
        "tooltip-pt-logout": "Odjavi me",
        "tooltip-pt-createaccount": "Ohrabrujemo vas da otvorite nalog i prijavite se, međutim to nije obavezno",
        "tooltip-ca-talk": "Razgovor o sadržaju",
        "anonymous": "{{PLURAL:$1|Anonimni korisnik|$1 anonimna korisnika|$1 anonimnih korisnika}} projekta {{SITENAME}}",
        "siteuser": "{{SITENAME}} {{GENDER:$2|korisnik|korisnica}} $1",
        "anonuser": "{{SITENAME}} anonimni korisnik $1",
-       "lastmodifiedatby": "Ovu stranicu posljednji je put {{GENDER:$4|izmijenio|izmijenila}} $3 dana $1 u $2.",
+       "lastmodifiedatby": "Ovu stranicu posljednji je put {{GENDER:$4|uredio|uredila}} $3 na datum $1 u $2.",
        "othercontribs": "Bazirano na radu od strane korisnika $1.",
        "others": "ostali",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|korisnik|korisnica}}|korisnici}} $1",
        "exif-gpsdop": "Preciznost mjerenja",
        "exif-gpsspeedref": "Jedinica brzine",
        "exif-gpsspeed": "Brzina GPS prijemnika",
-       "exif-gpstrackref": "Referenca za smijer kretanja",
-       "exif-gpstrack": "Smijer kretanja",
-       "exif-gpsimgdirectionref": "Referenca za smijer slike",
-       "exif-gpsimgdirection": "Smijer slike",
+       "exif-gpstrackref": "Referenca za pravac kretanja",
+       "exif-gpstrack": "Pravac kretanja",
+       "exif-gpsimgdirectionref": "Referenca za pravac slike",
+       "exif-gpsimgdirection": "Pravac slike",
        "exif-gpsmapdatum": "Upotrijebljeni podaci geoloških mjerenja",
        "exif-gpsdestlatituderef": "Referenca za širinu odredišta",
        "exif-gpsdestlatitude": "Širina odredišta",
        "exif-objectcycle-p": "Samo navečer",
        "exif-objectcycle-b": "I ujutro i navečer",
        "exif-gpsdirection-t": "Stvarni pravac",
-       "exif-gpsdirection-m": "Magnetski smijer",
+       "exif-gpsdirection-m": "Magnetski pravac",
        "exif-ycbcrpositioning-1": "Centrirano",
        "exif-ycbcrpositioning-2": "Uporedo",
        "exif-dc-contributor": "Autori",
        "confirmemail_body_set": "Neko, vjerovatno Vi, je sa IP adrese $1\npostavio adresu e-pošte računa \"$2\" na ovu adresu za {{SITENAME}}.\n\nDa potvrdite da ovaj račun stvarno pripada Vama i da aktivirate mogućnosti e-pošte na {{SITENAME}}, otvorite ovaj link u Vašem pregledniku:\n\n$3\n\nAko ovaj račun *ne* pripada Vama, pratite ovaj link da prekinete odobravanje adrese e-pošte:\n\n$5\n\nOvaj kôd za potvrdu će isteći u $4.",
        "confirmemail_invalidated": "Potvrda e-mail adrese otkazana",
        "invalidateemail": "Odustani od e-mail potvrde",
+       "notificationemail_subject_changed": "Registrirana adresa e-pošte na {{GRAMMAR:dativ|{{SITENAME}}}} je promijenjena",
+       "notificationemail_subject_removed": "Registrirana adresa e-pošte na {{GRAMMAR:dativ|{{SITENAME}}}} je uklonjena",
+       "notificationemail_body_changed": "Neko, vjerovatno Vi, s IP-adrese $1,\npromijenio je adresu e-pošte računa \"$2\" na \"$3\" na {{GRAMMAR:dativ|{{SITENAME}}}}.\n\nAko ovo niste bili Vi, odmah se obratite administratoru sajta.",
+       "notificationemail_body_removed": "Neko, vjerovatno Vi, s IP-adrese $1,\nuklonio je adresu e-pošte računa \"$2\" na {{GRAMMAR:dativ|{{SITENAME}}}}.\n\nAko ovo niste bili Vi, odmah se obratite administratoru sajta.",
        "scarytranscludedisabled": "[Međuwiki umetanje je isključeno]",
        "scarytranscludefailed": "[Neuspješno preusmjerenje šablona na $1]",
        "scarytranscludefailed-httpstatus": "[Preuzimanje šablona nije uspjelo za $1: HTTP $2]",
        "confirmrecreate-noreason": "{{GENDER:$1|Korisnik|Korisnica}} [[User:$1|$1]] ([[User talk:$1|razgovor]]) {{GENDER:$1|obrisao|obrisala}} je ovu stranicu nakon što ste je počeli uređivati. Potvrdite da stvarno želite ponovo napraviti ovu stranicu.",
        "recreate": "Ponovno napravi",
        "unit-pixel": "px",
+       "confirm-purge-title": "Osvježi ovu stranicu",
        "confirm_purge_button": "U redu",
        "confirm-purge-top": "Da li želite obrisati keš ove stranice?",
        "confirm-purge-bottom": "Ispražnjava keš stranice i prikazuje najsvježiju verziju.",
        "version-libraries-description": "Opis",
        "version-libraries-authors": "Autori",
        "redirect": "Preusmjerenje na datoteku, korisnika, stranicu, izmjenu ili zapisnik",
-       "redirect-summary": "Ova posebna stranica preusmjerava na datoteku (datog imena), stranicu (date oznake izmjene) ili korisničku stranicu (datog numeričkog identifikatora korisnika). Oznake se koriste na sljedeći način: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ili [[{{#Special:Redirect}}/user/101]].",
+       "redirect-summary": "Ova posebna stranica preusmjerava na datoteku (datog imena), stranicu (date oznake izmjene), korisničku stranicu (datog numeričkog identifikatora korisnika) ili unos u zapisniku (datog numeričkog identifikatora zapisnika). Oznake se koriste na sljedeći način: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] ili [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Idi",
        "redirect-lookup": "Tip vrijednosti:",
        "redirect-value": "Vrijednost:",
        "redirect-page": "ID stranice",
        "redirect-revision": "Verzija stranice",
        "redirect-file": "Naziv datoteke",
+       "redirect-logid": "ID unosa",
        "redirect-not-exists": "Vrijednost nije pronađena",
        "fileduplicatesearch": "Pretraga duplikata",
        "fileduplicatesearch-summary": "Pretraga za duplim datotekama na bazi njihove haš vrijednosti.",
        "tag-filter-submit": "Filter",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|oznaka|oznake}}]]: $2)",
        "tag-mw-contentmodelchange": "promjena modela sadržaja",
+       "tag-mw-contentmodelchange-description": "Izmjena kojom se [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel mijenja model sadržaja] stranice",
        "tags-title": "Oznake",
        "tags-intro": "Ova stranica prikazuje spisak oznaka koje softver može staviti na svaku izmjenu i njihovo značenje.",
        "tags-tag": "Naziv oznake",
        "tags-deactivate-not-allowed": "Nije moguće deaktivirati oznaku \"$1\".",
        "tags-deactivate-submit": "Deaktiviraj",
        "tags-apply-no-permission": "Nemate dopuštenja da dodate izmjenske oznake zajedno s vašim promjenama.",
+       "tags-apply-blocked": "Ne možete primjenjivati oznake za promjenu uz svoje izmjene dok {{GENDER:$1|ste}} blokirani.",
        "tags-apply-not-allowed-one": "Nije dozvoljeno da se oznaka \"$1\" ručno dodaje.",
        "tags-apply-not-allowed-multi": "{{PLURAL:$2|Sljedeća oznaka ne dozvoljava da se ručno doda|Sljedeće oznake ne dozvoljavaju da se ručno dodaju}}: $1",
        "tags-update-no-permission": "Nemate dopuštenje da dodate ili uklonite izmjenske oznake sa zasebnih verzija ili zapisničkih unosa.",
+       "tags-update-blocked": "Ne možete dodavati niti uklanjati oznake za promjenu dok {{GENDER:$1|ste}} blokirani.",
        "tags-update-add-not-allowed-one": "Nije dozvoljeno da se oznaka \"$1\" ručno dodaje.",
        "tags-update-add-not-allowed-multi": "{{PLURAL:$2|Sljedeća oznaka ne dozvoljava da se ručno doda|Sljedeće oznake ne dozvoljavaju da se ručno dodaju}}: $1",
        "tags-update-remove-not-allowed-one": "Oznaka \"$1\" se ne može ručno ukloniti.",
        "htmlform-user-not-valid": "<strong>$1</strong> nije ispravno korisničko ime.",
        "logentry-delete-delete": "$1 {{GENDER:$2|obrisao|obrisala}} je stranicu $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|obrisao|obrisala}} je preusmjerenje $3 prepisivanjem",
-       "logentry-delete-restore": "$1 {{GENDER:$2|vratio|vratila}} je stranicu $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|vratio|vratila}} je stranicu $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|vratio|vratila}} je stranicu $3",
+       "restore-count-revisions": "{{PLURAL:$1|1 izmjena|$1 izmjene|$1 izmjena}}",
+       "restore-count-files": "{{PLURAL:$1|1 datoteka|$1 datoteke|$1 datoteka}}",
        "logentry-delete-event": "$1 {{GENDER:$2|promijenio|promijenila}} je vidljivost {{PLURAL:$5|unosa|$5 unosa}} u zapisniku na $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|promijenio|promijenila}} je vidljivost {{PLURAL:$5|izmjene|$5 izmjene|$5 izmjena}} na stranici $3: $4",
        "logentry-delete-event-legacy": "$1 je {{GENDER:$2|promijenio|promijenila}} vidljivost događaja u evidenciji na $3",
        "expand_templates_generate_xml": "Prikaži XML stablo parsera",
        "expand_templates_generate_rawhtml": "Pokaži izvorni HTML",
        "expand_templates_preview": "Pregled",
-       "expand_templates_preview_fail_html": "<em>Pošto stranica {{SITENAME}} ima uključen sirov HTML prikaz, te je bilo gubitka u podacima sesije, pregled je sakriven kao mjera predostrožnosti protiv JavaScript napada.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, molim da ponovo pokušate.</strong>\nAko i dalje ne bude radilo, pokušajte se [[Special:UserLogout|odjaviti]], pa ponovo prijaviti.",
+       "expand_templates_preview_fail_html": "<em>Budući da {{SITENAME}} ima uključen sirov HTML, te je bilo gubitka u podacima sesije, pregled je sakriven kao mjera predostrožnosti protiv napada preko JavaScripta.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, pokušajte ponovo.</strong>\nAko i dalje ne bude radilo, pokušajte se [[Special:UserLogout|odjaviti]], pa ponovo prijaviti i provjerite dozvoljava li Vaš preglednik kolačiće s ovog sajta.",
        "expand_templates_preview_fail_html_anon": "<em>Pošto stranica {{SITENAME}} ima uključen sirov HTML prikaz, a vi se niste prijavili, pregled je sakriven kao mjera predostrožnosti protiv JavaScript napada.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, molim da se [[Special:UserLogin|prijavite]] i pokušate ponovo.</strong>",
        "pagelanguage": "Promijeni jezik stranice",
        "pagelang-name": "Stranica",
        "special-characters-title-emdash": "duga crta",
        "special-characters-title-minus": "minus",
        "mw-widgets-dateinput-no-date": "Nikakav datum nije izabran",
+       "mw-widgets-mediasearch-input-placeholder": "Pretraži multimediju",
        "mw-widgets-mediasearch-noresults": "Nema rezultata.",
        "mw-widgets-titleinput-description-new-page": "stranica još ne postoji",
        "mw-widgets-titleinput-description-redirect": "preusmjerava na $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Dodaj kategoriju...",
        "mw-widgets-usersmultiselect-placeholder": "Dodaj više...",
        "sessionmanager-tie": "Ne možete istovremeno koristiti nekoliko vrsta provjera autentičnosti: $1.",
+       "sessionprovider-generic": "$1 sesije",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "sesije s kolačićima",
+       "sessionprovider-nocookies": "Moguće je da su kolačići isključeni. Ako je tako, uključite ih i počnite ponovo.",
        "randomrootpage": "Slučajna korijenska stranica",
        "log-action-filter-block": "Vrsta blokiranja:",
        "log-action-filter-contentmodel": "Vrsta izmjene modela sadržaja:",
        "log-action-filter-suppress-reblock": "Skrivanje korisnika ponovnim blokiranjem",
        "log-action-filter-upload-upload": "Nova datoteka",
        "log-action-filter-upload-overwrite": "Izmjena postojeće datoteke",
+       "authmanager-authn-not-in-progress": "Verifikacija nije u toku ili je došlo do gubitka podataka o sesiji. Počnite ispočetka.",
+       "authmanager-authn-no-primary": "Pruženi akreditivi ne mogu se verificirati.",
+       "authmanager-authn-no-local-user": "Pruženi akreditivi nisu povezani ni s jednim korisnikom na ovom wikiju.",
+       "authmanager-authn-no-local-user-link": "Pruženi su ispravni akreditivi, ali nisu povezani ni s jednim korisnikom na ovom wikiju. Prijavite se na neki drugi način ili napravite novi korisnički račun, što će Vam dati mogućnost da povežete prethodne akreditive na novi račun.",
+       "authmanager-authn-autocreate-failed": "Automatsko stvaranje lokalnog računa nije uspjelo: $1",
        "authmanager-create-disabled": "Onemogućeno pravljenje računa.",
        "authmanager-create-from-login": "Popunite polja da biste napravili račun.",
        "authmanager-create-not-in-progress": "Pravljenje računa nije u toku ili su podaci o sesiji izgubljeni. Počnite ispočetka.",
        "authmanager-autocreate-noperm": "Automatsko pravljenje računa nije dozvoljeno.",
        "authmanager-autocreate-exception": "Automatsko pravljenje računa privremeno je onemogućeno zbog prijašnjih greški.",
        "authmanager-userdoesnotexist": "Korisnički račun \"$1\" nije registriran.",
+       "authmanager-username-help": "Korisničko ime za verifikaciju.",
+       "authmanager-password-help": "Lozinka za verifikaciju.",
+       "authmanager-domain-help": "Domen za vanjsku verifikaciju.",
+       "authmanager-retype-help": "Ponovite lozinku (za potvrdu).",
+       "authmanager-email-label": "E-pošta",
        "authmanager-email-help": "Adresa e-pošte",
        "authmanager-realname-label": "Pravo ime",
        "authmanager-realname-help": "Korisnikovo pravo ime",
+       "authmanager-provider-password": "Verifikacija lozinkom",
+       "authmanager-provider-password-domain": "Verifikacija lozinkom i domenom",
        "authmanager-provider-temporarypassword": "Privremena lozinka",
+       "authprovider-confirmlink-request-label": "Računi koji se trebaju povezati",
+       "authprovider-confirmlink-success-line": "$1: Uspješno povezano.",
+       "authprovider-confirmlink-failed": "Povezivanje računa nije uspjelo u potpunosti: $1",
        "authprovider-resetpass-skip-label": "Preskoči",
+       "authprovider-resetpass-skip-help": "Preskoči resetiranje lozinke.",
+       "authform-nosession-login": "Verifikacija je uspješna, ali Vaš preglednik ne može \"zapamtiti\" da ste prijavljeni.\n\n$1",
+       "authform-nosession-signup": "Račun je napravljen, ali Vaš preglednik ne može \"zapamtiti\" da ste prijavljeni.\n\n$1",
+       "authform-wrongtoken": "Pogrešan žeton",
        "specialpage-securitylevel-not-allowed-title": "Nije dozvoljeno",
        "specialpage-securitylevel-not-allowed": "Žao nam je, nije Vam dozvoljeno korištenje ove stranice jer ne možemo potvrditi Vaš identitet.",
+       "authpage-cannot-login": "Ne mogu započeti prijavu.",
+       "authpage-cannot-login-continue": "Ne mogu nastaviti s prijavom. Najvjerovatnije Vam je istekla sesija.",
+       "authpage-cannot-create": "Ne mogu započeti stvaranje računa.",
+       "authpage-cannot-create-continue": "Ne mogu nastaviti s stvaranjem računa. Najvjerovatnije Vam je istekla sesija.",
+       "authpage-cannot-link": "Ne mogu započeti spajanje računa.",
+       "authpage-cannot-link-continue": "Ne mogu nastaviti sa spajanjem računa. Najvjerovatnije Vam je istekla sesija.",
        "cannotauth-not-allowed-title": "Pristup odbijen",
        "cannotauth-not-allowed": "Nije Vam dozvoljeno da koristite ovu stranicu",
        "changecredentials": "Promjena akreditiva",
        "changecredentials-submit": "Promijeni akreditive",
        "changecredentials-invalidsubpage": "$1 nije ispravna vrsta akreditiva.",
+       "changecredentials-success": "Vaši akreditivi su promijenjeni.",
+       "removecredentials": "Uklanjanje akreditiva",
+       "removecredentials-submit": "Ukloni akreditive",
+       "removecredentials-invalidsubpage": "$1 nije ispravna vrsta akreditiva.",
+       "removecredentials-success": "Vaši akreditivi su uklonjeni.",
+       "credentialsform-provider": "Vrsta akreditiva:",
        "credentialsform-account": "Naziv računa:",
        "cannotlink-no-provider-title": "Nema spojivih računa",
        "cannotlink-no-provider": "Nema spojivih računa.",
        "linkaccounts-submit": "Spoji račune",
        "unlinkaccounts": "Razdvajanje računa",
        "unlinkaccounts-success": "Račun je razdvojen.",
+       "userjsispublic": "Napomena: Podstranice s JavaScriptom ne bi trebale sadržavati povjerljive podatke budući da ih drugi korisnici mogu vidjeti.",
+       "usercssispublic": "Napomena: Podstranice s CSS-om ne bi trebale sadržavati povjerljive podatke budući da ih drugi korisnici mogu vidjeti.",
        "restrictionsfield-badip": "Neispravna IP-adresa ili opseg: $1",
        "restrictionsfield-label": "Dozvoljeni IP-opsezi:",
        "revid": "izmjena $1",
-       "pageid": "ID stranice $1"
+       "pageid": "ID stranice $1",
+       "rawhtml-notallowed": "&lt;html&gt; oznake ne mogu se koristiti van normalnih stranica.",
+       "gotointerwiki": "Napuštate {{GRAMMAR:akuzativ|{{SITENAME}}}}",
+       "gotointerwiki-invalid": "Navedeni naslov nije ispravan.",
+       "gotointerwiki-external": "Napuštate {{GRAMMAR:akuzativ|{{SITENAME}}}} da biste posjetili zasebni veb-sajt [[$2]].\n\n[$1 Kliknite ovdje da biste otišli na $1].",
+       "undelete-cantedit": "Ne možete vratiti ovu stranicu jer Vam nije dozvoljeno da je uređujete."
 }
index bc494d5..403898c 100644 (file)
        "redirectedfrom": "(S'ha redirigit des de: $1)",
        "redirectpagesub": "Pàgina de redirecció",
        "redirectto": "Redirigeix a:",
-       "lastmodifiedat": "Darrera modificació de la pàgina: $1 a les $2.",
+       "lastmodifiedat": "La pàgina va ser modificada per darrera vegada el $1 a les $2.",
        "viewcount": "S'ha visitat aquesta pàgina {{PLURAL:$1|una vegada|$1 vegades}}.",
        "protectedpage": "Pàgina protegida",
        "jumpto": "Dreceres ràpides:",
        "rcfilters-filter-registered-description": "Editors que han iniciat sessió",
        "rcfilters-filter-unregistered-label": "No registrats",
        "rcfilters-filter-unregistered-description": "Editors que no han iniciat una sessió.",
-       "rcfilters-filtergroup-authorship": "Modifica l'autoria",
+       "rcfilters-filtergroup-authorship": "Autoria de les contribucions",
        "rcfilters-filter-editsbyself-label": "Les vostres modificacions",
-       "rcfilters-filter-editsbyself-description": "Modificacions vostres.",
-       "rcfilters-filter-editsbyother-label": "Modificacions d'altres",
-       "rcfilters-filter-editsbyother-description": "Modificacions creades per altres usuaris (no vostres).",
+       "rcfilters-filter-editsbyself-description": "Les vostres pròpies contribucions.",
+       "rcfilters-filter-editsbyother-label": "Canvis d'altres",
+       "rcfilters-filter-editsbyother-description": "Tots els canvis excepte els vostres.",
        "rcfilters-filtergroup-userExpLevel": "Nivell d'experiència (només per a usuaris registrats)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Novells",
        "rcfilters-filter-user-experience-level-newcomer-description": "Menys de 10 edicions i 4 dies d'activitat.",
        "rcshowhidecategorization": "$1 categoritzacions de pàgina",
        "rcshowhidecategorization-show": "Mostra",
        "rcshowhidecategorization-hide": "Amaga",
-       "rclinks": "Mostra els darrers $1 canvis en els darrers $2 dies",
+       "rclinks": "Mostra els darrers $1 canvis dels darrers $2 dies",
        "diff": "dif",
        "hist": "hist",
        "hide": "Amaga",
        "sp-contributions-uploads": "càrregues",
        "sp-contributions-logs": "registres",
        "sp-contributions-talk": "discussió",
-       "sp-contributions-userrights": "gestió de drets d'usuari",
+       "sp-contributions-userrights": "gestió de drets d'{{GENDER:$1|usuari|usuària}}",
        "sp-contributions-blocked-notice": "En aquests moments aquest compte d'usuari està blocat.\nPer a més informació, a continuació es mostra l'última entrada del registre:",
        "sp-contributions-blocked-notice-anon": "En aquests moments, aquesta adreça IP es troba blocada.\nPer més detalls, l'última entrada del registre es mostra a continuació:",
        "sp-contributions-search": "Cerca les contribucions",
        "unblocked-id": "S'ha eliminat el bloqueig de $1",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] ha estat desbloquejat.",
        "blocklist": "Usuaris blocats",
+       "autoblocklist-submit": "Cerca",
        "ipblocklist": "Usuaris blocats",
        "ipblocklist-legend": "Cerca un usuari blocat",
        "blocklist-userblocks": "Amaga bloquejos de compte",
        "confirmrecreate": "{{GENDER:$1|L'usuari|La usuària}} [[User:$1|$1]] ([[User talk:$1|discussió]]) va eliminar aquesta pàgina que havíeu creat donant-ne el següent motiu:\n: <em>$2</em>\nConfirmeu que realment voleu tornar-la a crear.",
        "confirmrecreate-noreason": "{{GENDER:$1|L'usuari|La usuària}} [[User:$1|$1]] ([[User talk:$1|discussió]]) va esborrar aquesta pàgina després que la comencéssiu a modificar. Confirmeu que realment voleu tornar-la a crear.",
        "recreate": "Torna a crear",
+       "confirm-purge-title": "Purga la pàgina",
        "confirm_purge_button": "D'acord",
        "confirm-purge-top": "Voleu buidar la memòria cau d'aquesta pàgina?",
        "confirm-purge-bottom": "En refrescar una pàgina es neteja de la memòria cau i es força que hi aparegui la versió més actual.",
        "htmlform-user-not-valid": "<strong>$1</strong> no és nom d'usuari vàlid.",
        "logentry-delete-delete": "$1 {{GENDER:$2|ha esborrat}} la pàgina $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|ha esborrat}} la redirecció $3 sobreescrivint-la",
-       "logentry-delete-restore": "$1 ha restaurat $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|ha restaurat}} la pàgina $3 ($4)",
        "logentry-delete-event": "$1 {{GENDER:$2|ha canviat}} la visibilitat {{PLURAL:$5|d'un esdeveniment al registre|de $5 esdeveniments al registre}} de $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|ha canviat}} la visibilitat {{PLURAL:$5|d'una revisió|de $5 revisions}} a la pàgina $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|ha canviat}} la visibilitat d'esdeveniments al registre de $3",
        "restrictionsfield-badip": "Adreça o interval d'IP no vàlid: $1",
        "restrictionsfield-label": "Intervals d'IP permesos:",
        "revid": "revisió $1",
-       "pageid": "ID de pàgina $1"
+       "pageid": "ID de pàgina $1",
+       "gotointerwiki-invalid": "El títol especificat no és vàlid."
 }
index 992eed7..323c5ef 100644 (file)
        "userrights-no-interwiki": "Хьан бакъо яц декъашхой бакъо хийца кхечу википеди чохь.",
        "userrights-changeable-col": "Хьоьга хийцалун бакъонаш",
        "userrights-unchangeable-col": "Хьоьга хийцалун бакъонаш",
+       "userrights-expiry-none": "Цкъа а",
+       "userrights-expiry": "Бакъо дӀайолу:",
+       "userrights-expiry-othertime": "Кхин хан:",
        "group": "Тоба:",
        "group-user": "Декъашхой",
        "group-autoconfirmed": "АвтотӀелаьцна декъашхой",
        "newimages": "Керлачу файлийн галерей",
        "newimages-summary": "ХӀокху белхан агӀона чохь гойтуш ю дукха хан йоццуш чуяьхна файлаш.",
        "newimages-legend": "Луьттург",
+       "newimages-user": "Декъашхочун цӀе я IP-адрес",
        "newimages-showbots": "Гайта боташ чуяьхна файлаш",
        "newimages-hidepatrolled": "Къайлаяха патруль йина файлаш",
        "noimages": "Суьрташ дац.",
index bf119ff..8cedc71 100644 (file)
        "deletedwhileediting": "'''ھۆشیار بە''': ئەم پەڕە دوای ئەوە تۆ دەستکاریکردنیت دەستپێکرد سڕاوەتەوە!",
        "confirmrecreate-noreason": "بەکارھێنەر [[User:$1|$1]] ([[User talk:$1|talk]]) پەڕەکەی سڕییەوە پاش ئەوەی تۆ دەستکاریکردنی پەڕەکەت دەستپێکرد. تکایە پشتڕاستی بکەوە کە بە ڕاستی دەتەوێ دیسان ئەم پەڕە دروست بکەیتەوە.",
        "recreate": "درووست‌کردنەوە",
+       "confirm-purge-title": "ئەم پەڕەیە پاک بکەرەوە",
        "confirm_purge_button": "باشە",
+       "confirm-purge-top": "کاشی ئەم پەڕەیە پاکبکرێتەوە؟",
+       "confirm-purge-bottom": "پاکسازیکردنی پەڕەیەک کاشەکەی پاکدەکاتەوە و نوێترین وەشانی دەردەخات.",
        "confirm-watch-button": "باشە",
        "confirm-watch-top": "زێدەکردنی ئەم پەڕە بە لیستی چاودێریت؟",
        "confirm-unwatch-button": "باشه‌",
        "logentry-newusers-create2": "ھەژماری بەکارھێنەریی $3 لە لایەن $1 {{GENDER:$2|دروست کرا}}",
        "logentry-newusers-byemail": "ھەژماری بەکارھێنەریی $3 لە لایەن $1 {{GENDER:$2|دروست کرا}} و تێپەڕوشە بە ئیمەیل نێردرا",
        "logentry-newusers-autocreate": "ھەژماری بەکارھێنەریی $1 بە شێوەی خۆگەڕ {{GENDER:$2|دروست کرا}}",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2}} ڕێکخستنەکانی پاراستنی گۆڕی لە $4 بۆ $3",
        "logentry-protect-protect": "$1 $3ی {{GENDER:$2|پاراست}} $4",
        "logentry-protect-modify": "$1 ئاستی پاراستنی $3ی {{GENDER:$2|گۆڕی}} $4",
        "logentry-rights-rights": "$1 ئەندامێتیی {{GENDER:$6|$3}}ی لە $4 بۆ $5 {{GENDER:$2|گۆڕی}}",
index e13ef12..21e758d 100644 (file)
        "rcfilters-filter-unregistered-label": "Neregistrovaní",
        "rcfilters-filter-unregistered-description": "Editoři, kteří nejsou přihlášení",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Tento filtr je v konfliktu s {{PLURAL:$2|následujícím filtrem|následujícími filtry}} podle zkušeností, {{PLURAL:$2|vyhledávajícím|vyhledávajícími}} pouze registrované uživatele: $1",
-       "rcfilters-filtergroup-authorship": "Autorství editace",
-       "rcfilters-filter-editsbyself-label": "Vaše vlastní editace",
-       "rcfilters-filter-editsbyself-description": "Vaše editace.",
-       "rcfilters-filter-editsbyother-label": "Editace ostatních",
-       "rcfilters-filter-editsbyother-description": "Editace vytvořené ostatními uživateli (ne vámi).",
+       "rcfilters-filtergroup-authorship": "Autorství příspěvku",
+       "rcfilters-filter-editsbyself-label": "Vaše změny",
+       "rcfilters-filter-editsbyself-description": "Vaše vlastní příspěvky.",
+       "rcfilters-filter-editsbyother-label": "Změny ostatních",
+       "rcfilters-filter-editsbyother-description": "Všechny změny kromě vašich.",
        "rcfilters-filtergroup-userExpLevel": "Úrveň zkušeností (pouze registrovaných uživatelů)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filtr podle zkušeností vyhledává pouze registrované uživatele, tento filtr je tedy v konfliktu s filtrem „Neregistrovaní“.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filtr „Neregistrovaní“ je v konfliktu s jedním nebo více filtry podle zkušeností, vyhledávajícími pouze registrované uživatele. Dotyčné filtry jsou označeny nahoře, v prostoru „Aktivní filtry“.",
        "php-uploaddisabledtext": "V PHP je vypnuto načítání souborů. Prosím, zkontrolujte nastavení file_uploads.",
        "uploadscripted": "Tento soubor obsahuje HTML nebo kód skriptu, který by mohl být prohlížečem chybně interpretován.",
        "upload-scripted-pi-callback": "Nelze načíst soubor, který obsahuje instrukci xml-stylesheet.",
+       "upload-scripted-dtd": "Nelze načíst SVG soubory, které obsahují nestandardní DTD deklaraci.",
        "uploaded-script-svg": "V načteném SVG souboru byl nalezen skriptovatelný element „$1“.",
        "uploaded-hostile-svg": "V načteném SVG souboru bylo v elementu se styly nalezeno nebezpečné CSS.",
        "uploaded-event-handler-on-svg": "Nastavování atributů pro obsluhu událostí <code>$1=\"$2\"</code> není v SVG souborech dovoleno.",
        "enotif_body_intro_moved": "V $PAGEEDITDATE {{gender:$2|přesunul|přesunula}} $2 na {{grammar:6sg|{{SITENAME}}}} stránku $1, vizte aktuální verzi na $3 .",
        "enotif_body_intro_restored": "V $PAGEEDITDATE {{gender:$2|obnovil|obnovila}} $2 na {{grammar:6sg|{{SITENAME}}}} stránku $1, vizte aktuální verzi na $3 .",
        "enotif_body_intro_changed": "V $PAGEEDITDATE {{gender:$2|změnil|změnila}} $2 na {{grammar:6sg|{{SITENAME}}}} stránku $1, vizte aktuální verzi na $3 .",
-       "enotif_lastvisited": "Vizte $1 pro seznam všech změn od minulé návštěvy.",
-       "enotif_lastdiff": "Na $1 si tuto změnu můžete prohlédnout.",
+       "enotif_lastvisited": "Pro všechny změny od vaší minulé návštěvy vizte $1",
+       "enotif_lastdiff": "Tuto změnu si můžete prohlédnout na $1",
        "enotif_anon_editor": "anonymní uživatel $1",
        "enotif_body": "Vážený uživateli $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nShrnutí editace: $PAGESUMMARY $PAGEMINOREDIT\n\nUživatele, který změnu provedl, můžete kontaktovat:\ne-mailem: $PAGEEDITOR_EMAIL\nna wiki: $PAGEEDITOR_WIKI\n\nDo doby, než stránku navštívíte jako přihlášený uživatel, vám další oznámení k této stránce nebudou zasílána. Případně si můžete vynulovat příznaky ve svém seznamu sledovaných stránek.\n\nS pozdravem váš zasílač hlášení {{grammar:2sg|{{SITENAME}}}}\n\n--\nZměnit nastavení e-mailových oznámení můžete na\n{{canonicalurl:{{#special:Preferences}}}}\n\nNastavení sledovaných stránek může změnit na\n{{canonicalurl:Special:Watchlist/edit}}\n\nStránku můžete ze svých sledovaných vyřadit na\n$UNWATCHURL\n\nRady a kontakt:\n$HELPPAGE",
        "created": "vytvořil",
index 64c38af..c9e152a 100644 (file)
        "userrights-unchangeable-col": "Uredigerbare grupper",
        "userrights-expiry-current": "Udløber $1",
        "userrights-expiry-none": "Udløber ikke",
+       "userrights-expiry-options": "1 dag:1 day,1 uge:1 week,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year",
        "userrights-conflict": "Konflikt i ændringer af brugerrettigheder!\nVær venlig at gennemse og bekræft dine ændringer.",
        "group": "Gruppe:",
        "group-user": "Brugere",
        "group-all": "(alle)",
        "group-user-member": "{{GENDER:$1|bruger}}",
        "group-autoconfirmed-member": "{{GENDER:$1|registreret bruger}}",
-       "group-bot-member": "{{GENDER:$1|robot}}",
+       "group-bot-member": "{{GENDER:$1|bot}}",
        "group-sysop-member": "{{GENDER:$1|administrator}}",
        "group-bureaucrat-member": "{{GENDER:$1|bureaukrat}}",
        "group-suppress-member": "{{GENDER:$1|undertrykker}}",
index 22facc5..e06442a 100644 (file)
        "rcfilters-filter-unregistered-label": "Unangemeldet",
        "rcfilters-filter-unregistered-description": "Autoren, die nicht angemeldet sind.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Dieser Filter befindet sich in Konflikt mit {{PLURAL:$2|dem folgenden Erfahrungsfilter, der nur angemeldete Benutzer finden kann|den folgenden Erfahrungsfiltern, die nur angemeldete Benutzer finden können}}: $1",
-       "rcfilters-filtergroup-authorship": "Bearbeitungs-Autorenschaft",
-       "rcfilters-filter-editsbyself-label": "Deine eigenen Bearbeitungen",
-       "rcfilters-filter-editsbyself-description": "Bearbeitungen von dir.",
-       "rcfilters-filter-editsbyother-label": "Bearbeitungen von anderen",
-       "rcfilters-filter-editsbyother-description": "Bearbeitungen von anderen Benutzern (nicht von dir).",
+       "rcfilters-filtergroup-authorship": "Beitrags-Autorenschaft",
+       "rcfilters-filter-editsbyself-label": "Änderungen von dir",
+       "rcfilters-filter-editsbyself-description": "Deine eigenen Beiträge.",
+       "rcfilters-filter-editsbyother-label": "Änderungen von anderen",
+       "rcfilters-filter-editsbyother-description": "Alle Änderungen außer deine eigenen.",
        "rcfilters-filtergroup-userExpLevel": "Erfahrungsniveau (nur für angemeldete Benutzer)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Erfahrungsfilter finden nur angemeldete Benutzer. Deshalb befindet sich dieser Filter in Konflikt mit dem Filter „Unangemeldet“.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Der Filter „Unangemeldet“ befindet sich in Konflikt mit einem oder mehreren Erfahrungsfiltern, die nur angemeldete Benutzer finden können. Die kollidierenden Filter sind oben im Bereich der aktiven Filter markiert.",
        "enotif_body_intro_moved": "Die {{SITENAME}}-Seite $1 wurde am $PAGEEDITDATE von {{GENDER:$2|$2}} verschoben. Siehe $3 für deren aktuelle Version.",
        "enotif_body_intro_restored": "Die {{SITENAME}}-Seite $1 wurde am $PAGEEDITDATE von {{GENDER:$2|$2}} wiederhergestellt. Siehe $3 für deren aktuelle Version.",
        "enotif_body_intro_changed": "Die {{SITENAME}}-Seite $1 wurde am $PAGEEDITDATE von {{GENDER:$2|$2}} geändert. Siehe $3 für deren aktuelle Version.",
-       "enotif_lastvisited": "Alle Änderungen auf einen Blick: $1",
-       "enotif_lastdiff": "Siehe $1 für diese Änderung.",
+       "enotif_lastvisited": "Für alle Änderungen seit deinem letzten Besuch, siehe $1",
+       "enotif_lastdiff": "Um diese Änderung anzusehen, siehe $1",
        "enotif_anon_editor": "Anonymer Benutzer $1",
        "enotif_body": "Hallo $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nZusammenfassung des Bearbeiters: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakt zum Bearbeiter:\nE-Mail: $PAGEEDITOR_EMAIL\nWiki: $PAGEEDITOR_WIKI\n\nBei weiterer Aktivität auf der Seite werden dir so lange keine weiteren Benachrichtigungs-E-Mails gesendet, bis du die Seite wieder angemeldet besucht hast. Auf deiner Beobachtungsliste kannst du alle Benachrichtigungsmarkierungen zusammen zurücksetzen.\n\nDein freundliches {{SITENAME}}-Benachrichtigungssystem\n\n--\nUm die Einstellungen der E-Mail-Benachrichtigung anzupassen, besuche {{canonicalurl:{{#special:Preferences}}}}.\n\nUm die Einstellungen deiner Beobachtungsliste anzupassen, besuche {{canonicalurl:{{#special:EditWatchlist}}}}.\n\nUm die Seite von deiner Beobachtungsliste herunterzunehmen, besuche $UNWATCHURL.\n\nRückmeldungen und weitere Hilfe: $HELPPAGE",
        "created": "erstellt",
diff --git a/languages/i18n/din.json b/languages/i18n/din.json
new file mode 100644 (file)
index 0000000..e88d6a9
--- /dev/null
@@ -0,0 +1,515 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Amire80",
+                       "Dinkawiki",
+                       "Kumkumuk",
+                       "Mawanmuortat"
+               ]
+       },
+       "sunday": "Nïnëdhorou",
+       "monday": "Nïnëtök",
+       "tuesday": "Nïnërou",
+       "wednesday": "Nïnëdiäk",
+       "thursday": "Nïnëŋuan",
+       "friday": "Nïnëdhiëc",
+       "saturday": "Nïnëdhetem",
+       "sun": "Ndhr",
+       "mon": "Ntö",
+       "tue": "Nro",
+       "wed": "Ndi",
+       "thu": "Nŋu",
+       "fri": "Ndhi",
+       "sat": "Ndhe",
+       "january": "Pɛnëtök",
+       "february": "Pɛnërou",
+       "march": "Pɛnëdiäk",
+       "april": "Pɛnëŋuan",
+       "may_long": "Pɛnëdhiëc",
+       "june": "Pɛnëdhetem",
+       "july": "Pɛnëdhorou",
+       "august": "Pɛnëbɛ̈t",
+       "september": "Pɛnëdhoŋuan",
+       "october": "Pɛnëthiäär",
+       "november": "Pɛnëthiäärkutök",
+       "december": "Pɛnëthiäärkurou",
+       "january-gen": "Pɛnëtök",
+       "february-gen": "Pɛnërou",
+       "march-gen": "Pɛnëdiäk",
+       "april-gen": "Pɛnëŋuan",
+       "may-gen": "Pɛnëdhiëc",
+       "june-gen": "Pɛnëdhetem",
+       "july-gen": "Pɛnëdhorou",
+       "august-gen": "Pɛnëbɛ̈t",
+       "september-gen": "Pɛnëdhoŋuan",
+       "october-gen": "Pɛnëthiäär",
+       "november-gen": "Pɛnëthiäärkutök",
+       "december-gen": "Pɛnëthiäärkurou",
+       "jan": "Ptö",
+       "feb": "Pro",
+       "mar": "Pdi",
+       "apr": "Pŋu",
+       "may": "Pdhi",
+       "jun": "Pdhe",
+       "jul": "Pdhr",
+       "aug": "Pbɛ̈",
+       "sep": "Pdhŋ",
+       "oct": "Pthi",
+       "nov": "Ptht",
+       "dec": "Pthr",
+       "pagecategories": "{{PLURAL:$1|atëkthok|atëkthuɔk}}",
+       "category_header": "Apääm në atëkthok \"$1\"ic",
+       "subcategories": "Tëktëëkor",
+       "category-media-header": "Kuat në alëk $1 yic",
+       "hidden-categories": "{{PLURAL:$1|Atëkthok cï thiaan|Atëkthuɔk cï thiaan}}",
+       "category-subcat-count": "{{PLURAL:$2|Akuutkäŋë anɔŋ akutkäŋ-thiikɛ̈ kepɛ̈c.|Akuutkäŋë anɔŋ \n{{PLURAL:$1|akuutkäŋë|$1 akuutkäŋkɛ̈}}, në $2 yic̈;}}",
+       "category-article-count": "{{PLURAL:$2|Bekätakthookë anɔŋic yärë yetök.|{{PLURAL:$1|Yärë atɔ̈|$1 yɔ̈rkɛ̈ aatɔ̈}} bekätakthook thiöökë yic, në $2 yic.}}",
+       "category-file-count": "{{PLURAL:$2|Bekätakthook kän anɔŋic wëtmät kän etök.|{{PLURAL:|Wëtmät de $1 thiöökë atɔ̈ |wëlmäät ke $1 thiookkɛ̈ aa tɔ̈}} në bekätakthook känic, në $2 yiic ëbɛ̈n.}}",
+       "listingcontinuesabbrev": "ɣäthtueŋ",
+       "about": "Biäk",
+       "newwindow": "(aliɛp adhɛɛr yam thïn)",
+       "cancel": "Tɛmkɔ̈u",
+       "mypage": "Apam",
+       "mytalk": "Jam",
+       "anontalk": "Jam",
+       "navigation": "Äden",
+       "and": "&#32;ku",
+       "qbedit": "Cokic",
+       "namespaces": "Rinɣɔnläu",
+       "variants": "Aalelthook",
+       "navigation-heading": "Dentënëɔ̈ɔ̈tu",
+       "returnto": "Dhuk lɔ $1.",
+       "tagline": "Jɔk {{SITENAME}}",
+       "help": "Kuɔny",
+       "search": "Yiɔ̈ɔ̈p",
+       "searchbutton": "Yiɔ̈ɔ̈p",
+       "go": "Lɔ",
+       "searcharticle": "Lɔ",
+       "history": "Käthɛɛr ë apäm",
+       "history_short": "Käthɛɛr",
+       "history_small": "käthɛɛr",
+       "printableversion": "Alelgäär",
+       "permalink": "Anuɛ̈t ciedɔ̈kic",
+       "view": "Ɣoi",
+       "view-foreign": "Ɣoi në $1ic",
+       "edit": "Cokic",
+       "create": "Cak",
+       "create-local": "Matë tɛ̈ɛ̈tëyic ë  ɣänthiök thïn",
+       "editthispage": "Cok apamë-yic",
+       "newpage": "Apam yam",
+       "talkpagelinktext": "jam",
+       "personaltools": "Kakëluɔi ke ŋɛk",
+       "talk": "Abëjaamic",
+       "views": "Cïtiŋna",
+       "toolbox": "Käkluɔi",
+       "otherlanguages": "Në thook kɔ̈kiic",
+       "redirectedfrom": "(Cï bɛn wel në $1ic)",
+       "redirectto": "Bɛnwel lɔ:",
+       "lastmodifiedat": "Apam kënë acï apuɔc dac waaric në pɛinïn $1, në $2.",
+       "jumpto": "Kɛɛcthïn:",
+       "jumptonavigation": "äden",
+       "jumptosearch": "yiɔ̈ɔ̈p",
+       "aboutsite": "Wɛ̈t ë {{SITENAME}}",
+       "aboutpage": "Project:Biäk",
+       "copyrightpage": "{{ns:project}}:Yicaagɛ̈ɛ̈t",
+       "currentevents": "Kä cë röt piac looi",
+       "currentevents-url": "Project:Kä cë röt piac looi",
+       "disclaimers": "Acëkakuɔ",
+       "disclaimerpage": "Project:Acëkëda ëbɛ̈n",
+       "edithelp": "Kuɔny bë comic",
+       "helppage-top-gethelp": "Kony",
+       "mainpage": "Apam këdït",
+       "mainpage-description": "Apam këdït",
+       "portal": "Tëlɔthïn wut",
+       "portal-url": "Project:Tëlɔthïn wut",
+       "privacy": "Löŋ këcïthiaan",
+       "privacypage": "Project:Löŋ këcïthiaan",
+       "retrievedfrom": "Cïdhuk në \"$1\"",
+       "editsection": "cokic",
+       "editold": "cokic",
+       "editlink": "cokic",
+       "viewsourcelink": "Ɣoi tënëyök",
+       "editsectionhint": "Cokic akut: $1",
+       "toc": "Kätɔ̈",
+       "showtoc": "nyooth",
+       "hidetoc": "thaan",
+       "site-atom-feed": "$1 Atɛ̈unyinmot thïn",
+       "page-atom-feed": "\"$1\" Atɛ̈unyinmot thïn",
+       "red-link-title": "$1 (apam cïï tɔ̈)",
+       "nstab-main": "Apam",
+       "nstab-user": "Apam dului",
+       "nstab-special": "Apam lel",
+       "nstab-project": "Apam kälooi",
+       "nstab-image": "Apamduööt",
+       "nstab-template": "Macuëc",
+       "nstab-category": "Atëkthok",
+       "mainpage-nstab": "Apam këdït",
+       "badtitle": "Rin awäc",
+       "badtitletext": "Këjiɛmë ca thiëëcë acïï lɔcök, tëdɛ̈ ka cïn kë tɔ̈u thïn, tëdɛ̈ ka këjiɛmë de thuɔkmɛ̈t wälä de wikimɛ̈t aa këcëkɛ nyiɛc nuet apath. Tëkdɛ̈ kä nɔŋic cït cïï lëu bïke luööi në käjiɛmëkeyiic.",
+       "viewsource": "Ɣoi tënëyök",
+       "yourname": "Rinduloi:",
+       "userlogin-yourname": "Rinduloi",
+       "userlogin-yourname-ph": "Tɔ̈ɔ̈u rinduloiku",
+       "yourpassword": "Wɛ̈tëŋääny:",
+       "userlogin-yourpassword": "Wɛ̈tëŋääny",
+       "userlogin-yourpassword-ph": "Tɔ̈ɔ̈u wëtëŋaany",
+       "createacct-yourpassword-ph": "Tɔ̈ɔ̈u wëtëŋaany",
+       "createacct-yourpasswordagain": "Yiclajiik wɛ̈tëŋaany",
+       "createacct-yourpasswordagain-ph": "Bɛn tɔ̈ɔ̈u wɛ̈tëŋaany",
+       "userlogin-remembermypassword": "Cɔk ya rɛ̈ɛ̈r keya cï liɛp ɣöt",
+       "login": "Ŋaanythïn",
+       "logout": "Ŋaanyaɣeer",
+       "userlogout": "Ŋaanyaɣeer",
+       "userlogin-noaccount": "Cïï nɔŋ cinakuën?",
+       "userlogin-joinproject": "Röm {{SITENAME}}",
+       "createaccount": "Cak cinakuën",
+       "userlogin-resetpassword-link": "Määrnhom wɛ̈tëŋaanyku?",
+       "userlogin-helplink2": "Kuɔny bë ŋaanythïn",
+       "createacct-emailrequired": "Thoŋëmanywëëth",
+       "createacct-emailoptional": "Thoŋëmanywëëth (cïïdhilëwïc)",
+       "createacct-email-ph": "Gɔ̈t tëcieng de thoŋëmanywëëthdu",
+       "createacct-submit": "Cak cinakuënku",
+       "createacct-benefit-heading": "{{SITENAME}} acï looi në kɔc cïmëndu.",
+       "createacct-benefit-body1": "{{PLURAL:$1|käcïcokic|këcïcokic}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|apäm|apääm}}",
+       "createacct-benefit-body3": "{{PLURAL:$1|dujuër|dujuëër}} kathiöökwɛ̈r",
+       "loginlanguagelabel": "Thok: $1",
+       "pt-login": "Ŋaanythïn",
+       "pt-login-button": "Ŋaanythïn",
+       "pt-createaccount": "Cak cinakuën",
+       "pt-userlogout": "Ŋaanyaɣeer",
+       "botpasswords-label-create": "Cak",
+       "botpasswords-label-cancel": "Tɛmkɔ̈u",
+       "resetpass-submit-cancel": "Tɛmkɔ̈u",
+       "passwordreset": "Bentɔ̈ɔ̈u wɛ̈tëŋaany",
+       "passwordreset-username": "Rinduloi:",
+       "passwordreset-email": "Thoŋëmanywëëth:",
+       "bold_sample": "Gɔ̈t dïtnyin",
+       "bold_tip": "Gɔ̈t dïtnyin",
+       "italic_sample": "Rïugäät",
+       "italic_tip": "Gɔ̈t cïrïu",
+       "link_sample": "Nuɛ̈të rinënyooth",
+       "link_tip": "Nuɛ̈t akenythïn",
+       "extlink_sample": "http://www.example.com ruk rin",
+       "extlink_tip": "Nuɛ̈t akenybaai (tauë http:// adöttueeŋ)",
+       "headline_sample": "Gäättueŋ",
+       "headline_tip": "Kuëën ë rou tueŋ",
+       "nowiki_sample": "Tɔ̈ɔ̈uë këcïgɔ̈t cinajuɛɛr thïn",
+       "nowiki_tip": "Dhölë yic ajuɛɛr ë wiki",
+       "image_tip": "Apamduööt cïtɔ̈ɔ̈uthïn",
+       "media_tip": "Nuɛ̈t ë makec",
+       "sig_tip": "Thanygɔ̈tdu kekë gutatiitik",
+       "hr_tip": "Ajït temrɔt (looië tëgöörye)",
+       "summary": "Cuutyic:",
+       "minoredit": "Kën ee acökic thiin",
+       "watchthis": "Ɣoi apamë",
+       "savearticle": "Tɔ̈ɔ̈u apam",
+       "showpreview": "Nyooth këkoŋtiŋ",
+       "showdiff": "Nyoothë käcëwaar",
+       "anoneditwarning": "<strong>Nyïïn:</strong> Yin akɛ̈cë ŋaanythïn.  IP de tëcieŋdu abë tïc tënë jäŋ ëbɛ̈n të gɛ̈t yïn ke waar käŋ. Të <strong>[$1 bɛk yïn ɣöt]</strong> tëdɛ̈ <strong>[$2 të ciɛk yïn cinakuɛ̈n]</strong>, ka kä gɔ̈tke ku kä waarke (ku kä kɔ̈k nɔŋ kony ayɛ) aabï ke gät rinëduluuiku.",
+       "loginreqlink": "Ŋaanythïn",
+       "newarticletext": "Yïn acë anuët lɔ apam liu buɔɔthcök.\nTë wïc yin ba apam kënë cak, ka jɔk ba gɔ̈t në akeer  tɔ̈ piinyic (tïŋ [$1 apamëkuɔny] të wic yin ba wëlëŋïc yök).\nTë tɔ̈ yïn ëtɛ̈n ke kɛ̈ce ŋuun, kayï tuany gakyeethany de <strong>ciëën</strong> në akuenarekwëldu-yic.",
+       "noarticletext": "Amɛn, acïn gɔ̈t tɔ̈ ee apam thiöökë-yic.\nYïn alëu ba [[Special:Search/{{PAGENAME}}|wɛ̈tnhom thiööke göör]] në apam kɔ̈kiic,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} göör cökthɛɛr nɔŋkaariic],\nnadëk [{{fullurl:{{FULLPAGENAME}}|action=edit}} cak apamë]</span>.",
+       "noarticletext-nopermission": "Amɛn, acïn gär ee apam kënë yic.  Yïn alëu ba  [[Special:Search/{{PAGENAME}}|këjiɛɛmë de apam thööke göör]]  këjiɛɛmë de apam thööke göör në apɛmkɔ̈k yiic, tëdɛ̈ ka <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}] yïn alëu ba athörtɔ̈ɔ̈uke nɔŋ kar ke apam thiöökë gööric ayɛ. Lakin, yïn acï  nɔŋ yic ba apam yam cak.",
+       "editing": "Ee cokic $1",
+       "creating": "Ee cak $1",
+       "editingsection": "Ee cok $1 (akut)ic",
+       "templatesused": "{{PLURAL:$1|Macuëc|Mïcuëc}} ee luööi në apam känic",
+       "template-protected": "(cïtiit)",
+       "template-semiprotected": "(gëlamääth)",
+       "hiddencategories": "Apamkën ee rem ë {{PLURAL:$1|1 bekätakthook cï thiaan |$1 bekäŋtakthook cï  thiaan}}:",
+       "permissionserrorstext-withaction": "Yïn acïï nɔŋ nhomlääu ba $2, \n{{PLURAL:$1|wɛ̈t de kän|wët de käk}}:",
+       "moveddeleted-notice": "Apam acï cuɔthwei. Athörtɔ̈ɔ̈u de cothëwei ku nyiɛɛi në apamë aa cïke gam piiny ëtɛ̈n tɔŋ raan wïc bë ke kueen",
+       "content-model-javascript": "JavaScript",
+       "viewpagelogs": "Ɣoi athörtɔ̈ɔ̈u në apamkën",
+       "currentrev-asof": "Dhuɔ̈kic yambëtɛɛm ee bɔ̈bei pɛinïn $1",
+       "revisionasof": "Dhokic tɛ̈cït $1",
+       "revision-info": "Dhuɔ̈kic agut $1 në {{GENDER:$6|$2}}$7",
+       "previousrevision": "← Bïebei thɛɛr",
+       "nextrevision": "Dhuɔ̈k yam tënë kɔ̈k →",
+       "currentrevisionlink": "Dhuɔ̈kic yambëtɛɛm",
+       "cur": "ŋär",
+       "last": "käciën",
+       "rev-delundel": "wak daai",
+       "rev-showdeleted": "nyooth",
+       "pagehist": "Käthɛɛr ë apäm",
+       "history-title": "Dhuɔ̈kic käthɛɛr de \"$1\"",
+       "difference-title": "Käwääc kɛmke dhuɔ̈ɔ̈k ke \"$1\"",
+       "lineno": "Giɛɛt $1:",
+       "editundo": "berëpiny",
+       "diff-multi-sameuser": "({{PLURAL:$1|dhukic ciɛl|$1 dhukiic ciɛl}} në duluui tök̈̈, acie nyuɔɔth)",
+       "searchresults": "Yiɔ̈ɔ̈p käcïyiök",
+       "searchresults-title": "Yiööp \"$1\" në käcïyökic",
+       "prevn": "këcëwan {{PLURAL:$1|$1}}",
+       "nextn": "këböth {{PLURAL:$1|$1}}",
+       "nextn-title": "{{PLURAL:$1|käcïyök|këcïyök}} bɔ̈ $1",
+       "shown-title": "Show $1 {{PLURAL:$1|këcïtuöl|kacïtuöl}} gun yär",
+       "viewprevnext": "Ɣoi ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-new": "<strong>Cak apam \"[[:$1]]\" në yee wiki känic!</strong> {{PLURAL:$2|0=|Tïŋ apam ee yök kekë göördu ayɛ|Tïŋ käcïyök në göördu ayɛ}}",
+       "searchprofile-articles": "Abɛ̈ɛ̈k kätɔ̈",
+       "searchprofile-images": "Ciɛ̈liicjuëc",
+       "searchprofile-everything": "Ëbɛ̈n",
+       "searchprofile-advanced": "Cï lɔ tueŋ",
+       "searchprofile-articles-tooltip": "Yiɔ̈ɔ̈p $1ic",
+       "searchprofile-images-tooltip": "Apamduööt yiɔ̈ɔ̈p",
+       "searchprofile-everything-tooltip": "Gör kathïn abɛ̈n (agut yɔ̈r jam)",
+       "searchprofile-advanced-tooltip": "Yiɔ̈ɔ̈p në rinlääu këŋiɛcic",
+       "search-result-size": "$1 ({{PLURAL:$2|1 wët|$2 wël}})",
+       "search-redirect": "(bɛnwel $1)",
+       "search-section": "(akut $1)",
+       "search-suggest": "Ee $1 yen ca ŋuun?",
+       "searchall": "ëbɛ̈n",
+       "search-showingresults": "{{PLURAL:$4|Käcïyök <riɛl>$1</riɛl> de <riɛl>$3</riɛl>|Këcïyök <riɛl>$1 - $2</riɛl> de <riɛl>$3</riɛl>}}",
+       "search-nonefound": "Acin këcïbenbei ë thɔ̈ŋ ke thiëc",
+       "preferences": "Känyaar",
+       "mypreferences": "Känyaar",
+       "prefs-watchlist": "Abërtït",
+       "searchresultshead": "Yiɔ̈ɔ̈p",
+       "prefs-searchoptions": "Yiɔ̈ɔ̈p",
+       "prefs-namespaces": "Rinɣɔnläu",
+       "right-writeapi": "Luuië API ë gɔ̈t",
+       "newuserlogpage": "Athörtɔ̈ɔ̈u cäk ë duloi",
+       "enhancedrc-history": "käthɛɛr",
+       "recentchanges": "Kärötdäcwäär",
+       "recentchanges-legend": "Tek cë röt piac waar",
+       "recentchanges-summary": "Buɔɔthë wäär kathiöökwɛ̈rbëtɛɛm në wiki në apaamkën.",
+       "recentchanges-label-newpage": "Cokicë acë apam yam cak",
+       "recentchanges-label-minor": "Kën ee acökic thiin",
+       "recentchanges-label-bot": "Acökic kënë acï looi në bot",
+       "recentchanges-label-unpatrolled": "Cökic kënë akëcë kɔc ruu ë cath",
+       "recentchanges-label-plusminus": "Themdït ë yär acë rat war në kolook ka lɛ̈",
+       "recentchanges-legend-heading": "<riɛl>Atekkït:</riɛl>",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (tïŋ ayɛ [[Special:NewPages|marec de yɔ̈r yam]])",
+       "recentchanges-submit": "Nyooth",
+       "rclistfrom": "Nyoothë weer yam jɔɔk $2, $3",
+       "rcshowhideminor": "$1 käcïcökic thiin",
+       "rcshowhideminor-show": "Nyooth",
+       "rcshowhideminor-hide": "Thaan",
+       "rcshowhidebots": "$1 boot",
+       "rcshowhidebots-show": "Nyooth",
+       "rcshowhidebots-hide": "Thaan",
+       "rcshowhideliu": "$1 dulooi cïgɔ̈t",
+       "rcshowhideliu-show": "Nyooth",
+       "rcshowhideliu-hide": "Thaan",
+       "rcshowhideanons": "$1 duluɔɔi cierin",
+       "rcshowhideanons-show": "Nyooth",
+       "rcshowhideanons-hide": "Thaan",
+       "rcshowhidepatr-show": "Nyooth",
+       "rcshowhidepatr-hide": "Thaan",
+       "rcshowhidemine": "$1 acökicdië",
+       "rcshowhidemine-show": "Nyooth",
+       "rcshowhidemine-hide": "Thaan",
+       "rcshowhidecategorization-show": "Nyooth",
+       "rcshowhidecategorization-hide": "Thaan",
+       "rclinks": "Nyoothë weer $1 thök në nïn $2 thök",
+       "diff": "këdä",
+       "hist": "käth",
+       "hide": "Thaan",
+       "show": "Nyooth",
+       "minoreditletter": "th",
+       "newpageletter": "Y",
+       "boteditletter": "b",
+       "rc-change-size-new": "$1 {{PLURAL:$1|kɛ̈c|kɛ̈ɛ̈c}} ciën ë wɛ̈r",
+       "recentchangeslinked": "Wɛ̈r nɔŋkar",
+       "recentchangeslinked-toolbox": "Kaceyiicwar nɔŋ kar",
+       "recentchangeslinked-title": "Weer thöŋ kekë \"$1\"",
+       "recentchangeslinked-summary": "Kän areny de wɛ̈r cïloi wɛ̈ramɛn tënɔŋ apam nuɛtke apam nhic (nadëk ka nuɛtke kɔcakuut de bekätakthook nhic).\nApam tɔ̈ [[Special:Watchlist|abërtïtdu]] aa <strong>gɔ̈tdïtnyin</strong>.",
+       "recentchangeslinked-page": "Rin ë akap",
+       "recentchangeslinked-to": "Nyuɔɔthë kä cï ke waar në apɛ̈m cï nuɛ̈ɛ̈t ke apam tiöökë, ku acie kä cï ke waar në yen apam thiöökë yic",
+       "upload": "Wälë apamduööt",
+       "filedesc": "Cuutyic",
+       "fileuploadsummary": "Cuutyic:",
+       "upload-dialog-title": "Wälë apamduööt",
+       "upload-dialog-button-cancel": "Tɛmkɔ̈u",
+       "upload-form-label-infoform-description": "Lëkcäät",
+       "upload-form-label-infoform-date": "Aköl",
+       "license-header": "Gɛmluɔ̈ɔ̈i",
+       "imgfile": "apamduööt",
+       "listfiles_date": "Aköl",
+       "listfiles_user": "Dului",
+       "listfiles_description": "Lëkcäät",
+       "file-anchor-link": "Apamduööt",
+       "filehist": "Käthɛɛr ë makec",
+       "filehist-help": "Tuenyë në aköl/akɔ̈licic apamduööt ɣoi kecit rɔt nyuɔɔth në akölic.",
+       "filehist-current": "ee mënë",
+       "filehist-datetime": "Aköl/Akɔ̈lic",
+       "filehist-thumb": "riöpbundït",
+       "filehist-thumbtext": "Alelthook ë riöpcök, tɛ̈cït $1",
+       "filehist-user": "Dului",
+       "filehist-dimensions": "Thëmthëm",
+       "filehist-comment": "Këcïjaamic",
+       "imagelinks": "Luɔi ë apamduööt",
+       "linkstoimage": "{{PLURAL:$1|Apam thöökë anuɛ̈tke|$1 apamkɛ̈ aanuɛ̈tke}} apamduöötë:",
+       "nolinkstoimage": "Cin apaam ye nuët lɔ wëtmätkën.",
+       "sharedupload-desc-here": "Ɣɔ̈c apamduööt kënë ee rat jɔɔk ë $1 ku alëu bï luöi ë loiloilɔtueŋ kɔ̈kyiic.\nLëkcäät ë [$2 yär ë lëkcäät apamduööt de] denë atɔ̈ piiny ëtɛ̈n.",
+       "upload-disallowed-here": "Yïn acïï lëu bä apamduööt kënë gɔ̈t arët.",
+       "randompage": "Apam räŋräŋ",
+       "randomincategory-submit": "Lɔ",
+       "pageswithprop-submit": "Lɔ",
+       "brokenredirects-edit": "cokic",
+       "withoutinterwiki-submit": "Nyooth",
+       "nbytes": "$1 {{PLURAL:$1|kɛ̈c|kɛ̈ɛ̈c}}",
+       "nmembers": "$1 {{PLURAL:$1|raanalɔŋthïn|kɔcalɔŋthïn}}",
+       "prefixindex-submit": "Nyooth",
+       "protectedpages-page": "Apam",
+       "newpages": "Abɛ̈ɛ̈k yam",
+       "newpages-submit": "Nyooth",
+       "newpages-username": "Rinduloi:",
+       "move": "Laar",
+       "pager-older-n": "{{PLURAL:$1|thɛɛr 1|thɛɛr $1}}",
+       "booksources": "Ɣɔnnëyök athör",
+       "booksources-search-legend": "Yiööp ɣɔnnëyök athör",
+       "booksources-search": "Yiɔ̈ɔ̈p",
+       "log": "Athörtɔ̈ɔ̈u",
+       "logeventslist-submit": "Nyooth",
+       "allarticles": "Abɛ̈ɛ̈k ëbɛ̈n",
+       "allpagessubmit": "Lɔ",
+       "categories": "Atëkthuɔk",
+       "categories-submit": "Nyooth",
+       "sp-deletedcontributions-contribs": "amöc",
+       "linksearch-ns": "Rinɣɔnläu",
+       "linksearch-ok": "Yiɔ̈ɔ̈p",
+       "listusers-submit": "Nyooth",
+       "watchlist": "Abërtït",
+       "mywatchlist": "Abërtït",
+       "watch": "Ɣoi",
+       "watchlist-hide": "Thaan",
+       "watchlist-submit": "Nyooth",
+       "historyaction-submit": "Nyooth",
+       "dellogpage": "Athörtɔ̈ɔ̈u cöthwei",
+       "rollbacklink": "dhuɔ̈kciɛ̈ɛ̈n",
+       "rollbacklinkcount": "dhuɔ̈kcïɛ̈n $1 {{PLURAL:$1|käcïcokic|këcïcokic}}",
+       "protectlogpage": "Athörtɔ̈ɔ̈u tïït",
+       "restriction-edit": "Cokic",
+       "restriction-move": "Laar",
+       "undeleteviewlink": "ɣoi",
+       "undelete-search-submit": "Yiɔ̈ɔ̈p",
+       "namespace": "Rinɣɔnläu",
+       "invert": "Yalic kuɛ̈nykuɛ̈ny",
+       "tooltip-invert": "Kuany rök thiöökë ba wɛ̈r tööu, wɛ̈r cïke luööi apam tɔ̈ rindɔ̈r cïï locë yic (ku rindɔ̈rkɔ̈k nɔŋ kar ke ye, të cïneke kuay ayɛ)",
+       "namespace_association": "Rinlääu tɔ̈ɔ̈ŋic",
+       "tooltip-namespace_association": "Gɔtë ye akeerë-yic bä tääu pɔ̈rderin ë këjiɛɛmë tëdɛ̈t kedejɔ̈k aya cï mat kenë pɔ̈rderin cï lɔc",
+       "blanknamespace": "(Këdït)",
+       "contributions": "{{GENDER:$1|Dulooi}} amöc",
+       "mycontris": "Amöc",
+       "anoncontribs": "Amöc",
+       "month": "Jäl ee penë (ku lɔ ciën):",
+       "year": "Jäl ee ruɔ̈ɔ̈n (ku lɔ ciën):",
+       "sp-contributions-talk": "jam",
+       "sp-contributions-submit": "Yiɔ̈ɔ̈p",
+       "whatlinkshere": "Këkerɛkthïn",
+       "whatlinkshere-title": "apääm aanyuët tënë \"$1\"",
+       "whatlinkshere-page": "Apam:",
+       "linkshere": "Apɛ̈m bɔ̈ anuët në <riɛl>[[:$1]]</riɛl>:",
+       "isredirect": "bɛnwel apam",
+       "istemplate": "tɛ̈wë anuët në athööric ku bë athöördɛ̈ nyooth",
+       "isimage": "Nuɛ̈t ë apamduööt",
+       "whatlinkshere-prev": "{{PLURAL:$1|ketueŋ|ketueŋ $1}}",
+       "whatlinkshere-next": "{{PLURAL:$1|la|la $1}}",
+       "whatlinkshere-links": "← anyuët",
+       "whatlinkshere-hideredirs": "$1 benwel",
+       "whatlinkshere-hidetrans": "$1 tɛ̈wë anuët në athööric ku bë athöördɛ̈ nyooth",
+       "whatlinkshere-hidelinks": "$1 anyuët",
+       "whatlinkshere-filters": "Thiic",
+       "whatlinkshere-submit": "Lɔ",
+       "autoblocklist-submit": "Yiɔ̈ɔ̈p",
+       "ipblocklist-submit": "Yiɔ̈ɔ̈p",
+       "blocklink": "gël",
+       "contribslink": "aamioc",
+       "movelogpage": "Laar athörtɔ̈ɔ̈u",
+       "export": "Kɛ̈ŋbɛ̈ɛ̈i abɛ̈ɛ̈k",
+       "allmessages-filter-submit": "Lɔ",
+       "thumbnail-more": "Wëric",
+       "tooltip-pt-userpage": "{{GENDER:|Apamdu}} de dulooi",
+       "tooltip-pt-mytalk": "Jam apam {{GENDER:|du}}",
+       "tooltip-pt-preferences": "Kaŋuɛ̈ɛ̈n {{GENDER:|ku}}",
+       "tooltip-pt-watchlist": "Arec de athör ee ke tiit lɔn bïneke waar",
+       "tooltip-pt-mycontris": "Abëër ë {{GENDER:|ajuëërku}}",
+       "tooltip-pt-login": "Yïn aye dɛtpuöu ba rat gätpiny balɔɣöt; ku yen ace këthɛnyëkoɔthïn",
+       "tooltip-pt-logout": "Ŋaanyaɣeer",
+       "tooltip-pt-createaccount": "Yïn adetkupuöu ba akuɛ̈n cak ku ba gɛ̈tëpiny de lɔɣöt loi; ku töŋtɔ̈thïn acïn thɛnyëthïn tɔ̈u thïn",
+       "tooltip-ca-talk": "Abëjaamic wɛ̈t ë apamkëtɔ̈thïn",
+       "tooltip-ca-edit": "Cok apamë-yic",
+       "tooltip-ca-addsection": "Cak akut yam",
+       "tooltip-ca-viewsource": "Apäm kënë acï gël.\nKu alëu bä tënëyök tïŋcök",
+       "tooltip-ca-history": "Dhuɔ̈kic cïlooi apamë-yic",
+       "tooltip-ca-move": "Laar apamë",
+       "tooltip-ca-watch": "Mät apamë në abërtïtku-yic",
+       "tooltip-search": "Yiɔ̈ɔ̈p {{SITENAME}}",
+       "tooltip-search-go": "Lɔ apam man nɔŋ rinë kot, na tɔ̈",
+       "tooltip-search-fulltext": "Yiööp cïgɔtë në abɛ̈kic",
+       "tooltip-p-logo": "Lɔneem apam këdït",
+       "tooltip-n-mainpage": "Lɔneem apam këdït",
+       "tooltip-n-mainpage-description": "Lɔneem apam këdït",
+       "tooltip-n-portal": "Wɛ̈t ë këlooi, kë lëu bä luɔi, bä kɛ̈ŋ yök tëno",
+       "tooltip-n-currentevents": "Lɔ deet wël ë kä cë röt piac looi cök",
+       "tooltip-n-recentchanges": "Aber rötdäcwäär wikiyic",
+       "tooltip-n-randompage": "Dhɛ̈th apam räŋräŋ",
+       "tooltip-n-help": "Tëlɔdeet",
+       "tooltip-t-whatlinkshere": "Abër ë apäämwiki aa rɛkthïn ëbɛ̈n",
+       "tooltip-t-recentchangeslinked": "Kë cë röt piac waar apääm cï nuɛt kekë apäm kënë yiic",
+       "tooltip-feed-atom": "Bïï de Atom tënë apam känic",
+       "tooltip-t-contributions": "Abëër ë ajuëër në  {{GENDER:$1dulooikën}}",
+       "tooltip-t-upload": "Wälë apamduööt",
+       "tooltip-t-specialpages": "Wat apɛ̈m lel ëbɛ̈n",
+       "tooltip-t-print": "Alelgäär ë apäm kënë",
+       "tooltip-t-permalink": "Anuɛ̈t ciedɔ̈kic kë cï dhuɔ̈kic apämë-yic",
+       "tooltip-ca-nstab-main": "Ɣoi apam kätɔ̈",
+       "tooltip-ca-nstab-user": "Ɣoi apam duloi",
+       "tooltip-ca-nstab-special": "Kënë ee apam lel ku cïï lëu bë cokic",
+       "tooltip-ca-nstab-project": "Ɣoi apam kätɔ̈",
+       "tooltip-ca-nstab-image": "Ɣoië apäm ë makec",
+       "tooltip-ca-nstab-template": "Tïŋ macuëc",
+       "tooltip-ca-nstab-category": "Ɣoië apäm atëkthok",
+       "tooltip-save": "Tɔ̈ɔ̈uë weerdu",
+       "tooltip-preview": "Tiɛ̈ŋë tueŋ weerdu. Yïn looië yen këcë guor tɔ̈ɔ̈u.",
+       "tooltip-diff": "Nyoothë weer ɣo cä looi këcïgɔ̈tic",
+       "tooltip-rollback": "\"Duɔlëciën\" ee gɛ̈t ë raankuny puɔc thök dhuöktëdɛn në apamë të cïnye tuaany na tök",
+       "tooltip-undo": "\"Cuɔthëwei\", ee këpuɔc gɔ̈t nyaai, ku liep apam gɔ̈t yïn thïn thok në kuer cï lëu bï käŋ waar thïn. Kän ee kɔc puöl bïk wɛ̈tciekic gätpiny, bïk lueel ee wɛ̈tŋu coth kek wël wei",
+       "tooltip-summary": "Lɔthïn wëlcekic cony",
+       "simpleantispam-label": "Thiöökëtïŋ wëlpuɔliic. <riɛl>Duk</riɛl> kän thiɛ̈ŋ thïn!",
+       "pageinfo-toolboxlink": "Lëkapam",
+       "previousdiff": "← Cokic thɛɛr",
+       "nextdiff": "Cökic yam →",
+       "file-info-size": "$1 × $2 kolook, thëndït de aduötyɔ̈r: $3, MIME kuat: $4",
+       "file-nohires": "Acïn kuerdɛ̈ tɔ̈thïn wär kän lëu bë atïïp tïc.",
+       "svg-long-desc": "Apamduööt SVG, yee kolookë ke aayee $1 x $2, dït de apamduööt: $3",
+       "show-big-image": "Makec tueŋ",
+       "show-big-image-preview": "Thöŋ ë këkoŋtiŋë: $1",
+       "show-big-image-other": "{{PLURAL:$2|Tïckëtïŋ dɛ̈t|Tïckatïŋ kɔ̈k}}: $1.",
+       "show-big-image-size": "$1 × $2 kolook",
+       "ilsubmit": "Yiɔ̈ɔ̈p",
+       "metadata": "Leekmeta",
+       "metadata-help": "Yär thiöögë anɔŋic lëk juëc kɔ̈k, tɛkdɛ̈ eke mɛtëke thïn në ajötatïïp ë yit ka ye atɔuatïïp ye luööi bëye cak ka bëye yiɛt.\nTë cïnë yär war tëden thɛric, ka kajuëëckɔ̈k tɔ̈thïn tɛkdɛ̈ aacë bë tïc në yär ciiwar yic.",
+       "metadata-fields": "Tuɔc ke lëëkmeta ë këcïkäär cï ke rɛcpiny ee thong kënë yic aa bï ke mat yär ë nyuuth ë kacïkäär yic.\nTë ler kör ë lëëkmeta ŋɛɛrpiny.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "exif-orientation": "Cök",
+       "exif-xresolution": "Wëtcïmat piny",
+       "exif-yresolution": "Wëtcïmat nhial",
+       "exif-datetime": "Akölnïn ku akölic ë wär ë wëtmät",
+       "exif-make": "Duluɔi adɔmtïïp",
+       "exif-model": "Këcëkäär adɔmtïïp",
+       "exif-software": "Yöökkɔ̈c cïlooi",
+       "exif-artist": "Agɔ̈t",
+       "exif-exifversion": "Bïïbei Exif",
+       "exif-colorspace": "Tëlääu kiit",
+       "exif-datetimeoriginal": "Akölnïn ku akölic ë cäk ë akutëyith",
+       "exif-datetimedigitized": "Akölnïn ku akölic ë cɔkakuënnhialkupiny",
+       "exif-iimcategory": "Atëkthok",
+       "exif-disclaimer": "Acëkakuɔ",
+       "exif-orientation-1": "Epath",
+       "namespacesall": "ëbɛ̈n",
+       "monthsall": "ëbɛ̈n",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|jam]])",
+       "version-ext-colheader-description": "Lëkcäät",
+       "version-libraries-description": "Lëkcäät",
+       "specialpages": "Apɛ̈m lel",
+       "tag-filter": "[[Special:Tags|Dhïïm]] wɛ̈ttɛ̈kkɔcde:",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Dhïïm|Dhïm}}]]: $2)",
+       "tags-edit": "cokic",
+       "logentry-delete-delete": "$1 {{GENDER:$2|cuɔthwei}} apam $3",
+       "logentry-move-move": "$1 {{GENDER:$2|cï riɛt}} apam $3 lɔ $4",
+       "logentry-newusers-create": "Cinakuën ë dukui $1 acï {{GENDER:$2|cak}}",
+       "logentry-upload-upload": "$1 {{GENDER:$2|cï jatnhial}} $3",
+       "feedback-cancel": "Tɛmkɔ̈u",
+       "searchsuggest-search": "Yiɔ̈ɔ̈p {{SITENAME}}"
+}
index b1a1fe5..07fe4d2 100644 (file)
        "badtitletext": "Sernameyê pela ke şıma waşt, nêvêrd, vengo ya zi zıwano miyanêno ğelet gırêdaye ya zi sernameyê wiki.\nBeno ke, tede yew ya zi zêdê işareti estê ke sernameyan de nêxebetiyenê.",
        "title-invalid-empty": "Waziyaye sernamey perrer  venonyana teyna canamey nami sero esto.",
        "title-invalid-utf8": "Sernamey perre ke şıma wazenê, yew rêza UTF-8iya ke nêvêrene xo sero kırışeno.",
+       "title-invalid-talk-namespace": "Ena perra ke waziyena yew perrê werênayışa ke nêşena bıbo aye ra bestiyena.",
+       "title-invalid-characters": "Ena perra karakterê ke nêvêrenê inan gêna xo miyan.",
        "perfcached": "Datay cı ver hazır biye. No semedê ra nıkayin niyo! tewr zaf {{PLURAL:$1|netice|$1 netice}} debêno de",
        "perfcachedts": "Cêr de malumatê nımıteyi esti, demdê newe kerdışo peyın: $1. Tewr zaf {{PLURAL:$4|netice|$4 neticey cı}} debyayo de",
        "querypage-no-updates": "Rocanebiyayışê na pele nıka cadayiyê.\nDayiyi tiya nıka newe nêbenê.",
        "recentchangeslinked-feed": "Vırnayışê bestiyaey",
        "recentchangeslinked-toolbox": "Vırnayışê bestiyaey",
        "recentchangeslinked-title": "Heqa \"$1\" de vurnayışi",
-       "recentchangeslinked-summary": "Lista cêrêne, pela bêlikerdiye rê (ya zi karberanê kategoriya bêlikerdiye rê) pelanê gırêdayoğan de lista de vurnayışê peyênana.\n[[Special:Watchlist|Lista şımaya seyrkedışi de]] peli be nuşteyo '''qolınd''' bêli kerdê.",
+       "recentchangeslinked-summary": "Ena liste, perra spesifike rê (ya zi karberanê kategoriya spesifike rê) perranê gırêdayoğan de lista de vırnayışê peyênana.\n[[Special:Watchlist|Lista şımaya seyrkedışi de]] perri be nuşteyo '''qolınd''' bêli kerdê.",
        "recentchangeslinked-page": "Namey perrer:",
        "recentchangeslinked-to": "Heruna perra kı yena dayene, vurnayışanê perranê ke daye ra gırêdayiyê inan bımotne",
        "recentchanges-page-added-to-category": "[[:$1]] kerd kategoriye miyan",
        "revdelete-unrestricted": "vergırewtışê ke xızmekaran rê dariyê we",
        "logentry-move-move": "$1 perra $3 {{GENDER:$2|kırışt}} $4",
        "logentry-move-move-noredirect": "$1, pera $3'i bêhetenayış {{GENDER:$2|kırışt}} pera $4`i",
-       "logentry-move-move_redir": "Hetenayışi sera karber $1 pera $3'i  {{GENDER:$2|kırışt}} pera $4",
-       "logentry-move-move_redir-noredirect": "Hetenayışi sera pela $3 ra $1 {{GENDER:$2|berd}} pela $4",
+       "logentry-move-move_redir": "$1 {{GENDER:$2|kırışna}} riperr $3 be $4 weçarnayış sera.",
+       "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|berd}} riperrê $3 be $4 weçarnayış sera, weçarnayış nêverda.",
        "logentry-patrol-patrol": "$1 versiyono $4 ke {{GENDER:$2|nişan biyo}} pela $3 ra qontrol kerd",
        "logentry-patrol-patrol-auto": "Çımraviyarnayışê $4 pela $3 ke $1 otomatikman {{GENDER:$2|nişan biyo}} qontrol kerd",
        "logentry-newusers-newusers": "Hesabê karberê $1 {{GENDER:$2|vıraziya}}",
index ba1bac3..42a57d8 100644 (file)
@@ -53,9 +53,9 @@
        "tog-norollbackdiff": "पैलास्थितिमी फर्काएपछा भिन्नता हटाउन्या",
        "tog-useeditwarning": "सम्पादनहरू सङ्ग्रह नगरिएका अवस्थामी अर्को पानामी जान खोज्या चेतावनी धेखाउन्या",
        "tog-prefershttps": "प्रवेश गरन्ज्या जबलै सुरक्षित जडानको प्रयोग गर्न्या",
-       "underline-always": "सधà¥\88à¤\82",
+       "underline-always": "à¤\9cबलà¥\88",
        "underline-never": "कभैई नाई",
-       "underline-default": "à¤\96à¥\8bल à¤\85थवा à¤¬à¥\8dराà¤\89à¤\9cर à¤ªà¥\88लà¥\80à¤\95ाà¤\9cसà¥\8b",
+       "underline-default": "à¤\96à¥\8bल à¤\94र à¤¬à¥\8dराà¤\89à¤\9cर à¤¨à¤¿à¤°à¥\8dधारित",
        "editfont-style": "फन्ट प्रकार क्षेत्र सम्पादन गर:",
        "editfont-default": "ब्राउजर पूर्वस्थिति",
        "editfont-monospace": "मोनोस्पेस्ड फन्ट",
@@ -64,7 +64,7 @@
        "sunday": "आइतबार",
        "monday": "सौउबार",
        "tuesday": "माङलबार",
-       "wednesday": "बà¥\81धबार",
+       "wednesday": "बà¥\8bबार",
        "thursday": "बीपैबार",
        "friday": "शुकबार",
        "saturday": "छन्चरबार",
        "noname": "तमीले सही प्रयोगकर्ता नाम दिएनौ।",
        "loginsuccesstitle": "प्रवेश सफल",
        "loginsuccess": "'''तमले {{SITENAME}}मी  \"$1\" को रुपमी प्रवेश गरया छौ।'''",
+       "nosuchuser": "\"$1\" नाउँ भयाः कोइलै प्रयोगकर्ता नाइथिन।\nप्रयोगकर्ता नाउँ वर्णसंवेदनशील हुनान।\nतमरो हिज्जे जाँचः, या [[Special:CreateAccount|नौलो खाता बनाः]]।",
+       "nosuchusershort": " \"$1\" नाउँ भयाः कोइलै प्रयोगकर्ता नाइथिन।\n तमरो हिज्जे जाँचः।",
        "nouserspecified": "प्रयोगकर्ता नाम दिनु अनिवार्य छ।",
        "login-userblocked": "ये प्रयोगकर्तालाई रोक लगाया छ। प्रवेश गददु अनुमति छैन।",
        "wrongpassword": "पासवर्ड गलत हालियो।\nकृपया आजी प्रयास गरया।",
        "wrongpasswordempty": "हालिएया पासवर्ड खालि थ्यो।\nकृपया आजी प्रयास गरया।",
+       "passwordtooshort": "पासवर्ड कम्तिमालै {{PLURAL:$1|१ अक्षर|$1 अक्षरन}}को हुनुपडन्छ।",
+       "passwordtoolong": "पासवर्ड {{PLURAL:$1|१ अक्षर|$1 अक्षरन}} है लामो हुननाइसक्दो।",
        "password-name-match": "तमरो प्रवेशशव्द प्रयोगकर्ता नाम है फरक हुनपडन्छ ।",
        "password-login-forbidden": "ये प्रयोगकर्ता नाम र प्रवेश शब्द वर्जित गरिया छ।",
        "mailmypassword": "पासवर्ड पूर्वनिर्धारित गर",
        "recentchanges-label-plusminus": "यति बाइटहरू संख्याले पानाको आकार फेरबदल  भयाको छ",
        "recentchanges-legend-heading": "<strong>आदर्श वाक्य:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नौला पानाको सूची]] यैलाई लै हेरिदिय)",
+       "rcfilters-filter-editsbyself-description": "तमरा आफ्फुनाइ योगदानन",
        "rclistfrom": "$3 $2 देखिका नयाँ परिवर्तनहरू देखाउन्या",
        "rcshowhideminor": "$1 सानतिनो सम्पादन",
        "rcshowhideminor-show": "धेकाइदिय",
        "rcshowhidemine-hide": "लुकाऽ",
        "rcshowhidecategorization-show": "धेकाउन्या",
        "rcshowhidecategorization-hide": "लुकाउन्या",
-       "rclinks": "पà¤\9bिलà¥\8dला $1 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\82 <br/> à¤ªà¤\9bाडिà¤\95ा $2 à¤¦à¤¿à¤¨à¤¹à¤°à¥\82मà¥\80",
+       "rclinks": "à¤\97याà¤\83 $2 à¤¦à¤¿à¤¨à¤¨à¤®à¥\80 à¤­à¤¯à¤¾à¤\83 à¤\9bाडà¥\8dडà¥\80à¤\9aालाà¤\83 $1 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनन à¤§à¥\87à¤\95ाà¤\83",
        "diff": "फरक",
        "hist": "इतिहास",
        "hide": "लुकाइदिय",
        "filehist-user": "प्रयोगकर्ता",
        "filehist-dimensions": "आयाम",
        "filehist-comment": "टिप्पणी",
-       "imagelinks": "फाइलको प्रयोगहरू",
+       "imagelinks": "फाइल उपयोग",
        "linkstoimage": "यै चित्रमी निम्न{{PLURAL:$1|पाना जोडिनान{{PLURAL:$1|}}|$1 पानाहरू जोडिनान्}}:",
        "nolinkstoimage": "यो चित्रसित लिंकभयाकि कोइ पाना नाइथी",
        "morelinkstoimage": "यै फाइलको [[Special:WhatLinksHere/$1|थप लिंकहरू]] हेर ।",
        "tooltip-n-mainpage-description": "खास पन्नामी झाऽ",
        "tooltip-n-portal": "आयोजनाका बारेमी , तम कि अद्द सकन्छौ , समान काखाइ  भेटौन्या",
        "tooltip-n-currentevents": "हालैका घटनाको बारेमी पृष्ठभूमि जानकारी पत्ता लागाइदिय",
-       "tooltip-n-recentchanges": "विà¤\95िमà¥\80 à¤¹à¤¾à¤²à¥\88 à¤\85रियाà¤\95ा à¤«à¥\87रबदलà¥\88 à¤¸à¥\82à¤\9aà¥\80 à¥¤",
+       "tooltip-n-recentchanges": "विà¤\95िमà¥\80 à¤\86à¤\9cभà¥\8bलà¥\88 à¤\85रियाà¤\95ा à¤«à¥\87रबदलà¥\88 à¤¸à¥\82à¤\9aà¥\80",
        "tooltip-n-randompage": "क्रमरहित पन्ना खोलऽ",
        "tooltip-n-help": "खोज्जु पड्ड्या ठौर ।",
        "tooltip-t-whatlinkshere": "सप्पै विकि पन्नाअनै शुचि जो याँखाइ जोणीजान",
index 6c4430b..183512d 100644 (file)
        "right-applychangetags": "Εφαρμογή [[Special:Tags|ετικετών]] παράλληλα με τις όποιες αλλαγές κάνει κάποιος",
        "right-changetags": "Προσθέστε και αφαιρέστε αυθαίρετες [[Special:Tags|ετικέτες]] σε μεμονωμένες εκδόσεις και καταχωρήσεις καταγραφών",
        "right-deletechangetags": "Διαγραφή [[Special:Tags|ετικετών]] από τη βάση δεδομένων",
+       "grant-generic": "Πακέτο δικαιωμάτων \"$1\"",
        "grant-group-page-interaction": "Αλληλεπίδραση με σελίδες",
        "grant-group-file-interaction": "Αλληλεπίδραση με πολυμέσα",
        "grant-group-watchlist-interaction": "Αλληλεπίδραση με τη λίστα παρακολούθησής σου",
        "rcfilters-empty-filter": "Χωρίς ενεργά φίλτρα. Εμφανίζονται όλες οι συνεισφορές.",
        "rcfilters-filterlist-title": "Φίλτρα",
        "rcfilters-filterlist-whatsthis": "Τι είναι αυτό;",
+       "rcfilters-filterlist-feedbacklink": "Δώστε ανατροφοδότηση για τα νέα φίλτρα (beta)",
+       "rcfilters-highlightbutton-title": "Επισήμανση αποτελεσμάτων",
+       "rcfilters-highlightmenu-title": "Επιλέξτε ένα χρώμα",
+       "rcfilters-highlightmenu-help": "Επιλέξτε ένα χρώμα για να επισημάνετε αυτή την ιδιότητα",
        "rcfilters-filterlist-noresults": "Δεν βρέθηκαν φίλτρα",
        "rcfilters-noresults-conflict": "Δε βρέθηκαν αποτελέσματα γιατί τα κριτήρια αναζήτησης είναι σε διένεξη.",
+       "rcfilters-state-message-subset": "Αυτό το φίλτρο δεν έχει επιρροή επειδή τα αποτελέσματά του περιλαμβάνονται σε αυτά {{PLURAL:$2|ευρύτερου φίλτρου|ευρύτερων φίλτρων}} (δοκιμάστε την επισήμανση για να τα ξεχωρήσετε): $1",
        "rcfilters-filtergroup-registration": "Επωνυμία χρηστών",
        "rcfilters-filter-registered-label": "Εγγεγραμμένοι",
        "rcfilters-filter-registered-description": "Συνδεδεμένοι συντάκτες.",
        "rcfilters-filter-unregistered-label": "Μη εγγεγραμμένοι",
        "rcfilters-filter-unregistered-description": "Συντάκτες που δεν είναι συνδεδεμένοι.",
        "rcfilters-filtergroup-authorship": "Πατρότητα επεξεργασιών",
-       "rcfilters-filter-editsbyself-label": "Î\9fι Î´Î¹ÎºÎ­Ï\82 Ï\83αÏ\82 ÎµÏ\80εξεÏ\81γαÏ\83ίες",
-       "rcfilters-filter-editsbyself-description": "Î\95Ï\80εξεÏ\81γαÏ\83ίεÏ\82 Î±Ï\80Ï\8c ÎµÏ\83άς.",
-       "rcfilters-filter-editsbyother-label": "Î\95Ï\80εξεÏ\81γαÏ\83ίες από άλλους",
-       "rcfilters-filter-editsbyother-description": "Î\95Ï\80εξεÏ\81γαÏ\83ίεÏ\82 Ï\80οÏ\85 Î´Î·Î¼Î¹Î¿Ï\85Ï\81γήθηκαν Î±Ï\80Ï\8c Î¬Î»Î»Î¿Ï\85Ï\82 Ï\87Ï\81ήÏ\83Ï\84εÏ\82 (Ï\8cÏ\87ι ÎµÏ\83άÏ\82).",
+       "rcfilters-filter-editsbyself-label": "Î\95Ï\80εξεÏ\81γαÏ\83ίεÏ\82 Î±Ï\80Ï\8c ÎµÏ\83άς",
+       "rcfilters-filter-editsbyself-description": "Î\9fι Î´Î¹ÎºÎ­Ï\82 Ï\83αÏ\82 Ï\83Ï\85νειÏ\83Ï\86οÏ\81ές.",
+       "rcfilters-filter-editsbyother-label": "Î\91λλαγές από άλλους",
+       "rcfilters-filter-editsbyother-description": "Î\8cλεÏ\82 Î¿Î¹ Î±Î»Î»Î±Î³Î­Ï\82 ÎµÎºÏ\84Ï\8cÏ\82 Î±Ï\80Ï\8c Ï\84ιÏ\82 Î´Î¹ÎºÎ­Ï\82 Ï\83αÏ\82.",
        "rcfilters-filtergroup-userExpLevel": "Επίπεδο εμπειρίας (για εγγεγραμμένους χρήστες μόνο)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Τα φίλτρα εμπειρίας βρίσκουν μόνο εγγεγραμμένους χρήστες, οπότε αυτό το φίλτρο αντικρούει το φίλτρο \"μη εγγεγραμμένοι\".",
        "rcfilters-filter-user-experience-level-newcomer-label": "Νεοφερμένοι",
        "rcfilters-filter-user-experience-level-newcomer-description": "Λιγότερες από 10 επεξεργασίες και 4 ημέρες δραστηριότητας.",
        "rcfilters-filter-user-experience-level-learner-label": "Μαθητευόμενοι",
index 05c0241..a704d39 100644 (file)
        "rcfilters-filter-minor-description": "Edits the author labeled as minor.",
        "rcfilters-filter-major-label": "Non-minor edits",
        "rcfilters-filter-major-description": "Edits not labeled as minor.",
+       "rcfilters-filtergroup-watchlist": "Watchlisted pages",
+       "rcfilters-filter-watchlist-watched-label": "On Watchlist",
+       "rcfilters-filter-watchlist-watched-description": "Changes to pages on your Watchlist.",
+       "rcfilters-filter-watchlist-watchednew-label": "New Watchlist changes",
+       "rcfilters-filter-watchlist-watchednew-description": "Changes to Watchlisted pages you haven't visited since the changes occurred.",
+       "rcfilters-filter-watchlist-notwatched-label": "Not on Watchlist",
+       "rcfilters-filter-watchlist-notwatched-description": "Everything except changes to your Watchlisted pages.",
        "rcfilters-filtergroup-changetype": "Type of change",
        "rcfilters-filter-pageedits-label": "Page edits",
        "rcfilters-filter-pageedits-description": "Edits to wiki content, discussions, category descriptions....",
        "rcfilters-hideminor-conflicts-typeofchange-global": "The \"Minor edits\" filter conflicts with one or more Type of Change filters, because certain types of change cannot be designated as \"minor.\" The conflicting filters are marked in the Active Filters area, above.",
        "rcfilters-hideminor-conflicts-typeofchange": "Certain types of change cannot be designated as \"minor,\" so this filter conflicts with the following Type of Change filters: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "This Type of Change filter conflicts with the \"Minor Edits\" filter. Certain types of change cannot be designated as \"minor.\"",
+       "rcfilters-filtergroup-lastRevision": "Last revision",
+       "rcfilters-filter-lastrevision-label": "Last revision",
+       "rcfilters-filter-lastrevision-description": "The most recent change to a page.",
+       "rcfilters-filter-previousrevision-label": "Earlier revisions",
+       "rcfilters-filter-previousrevision-description": "All changes that are not the most recent change to a page.",
        "rcnotefrom": "Below {{PLURAL:$5|is the change|are the changes}} since <strong>$3, $4</strong> (up to <strong>$1</strong> shown).",
        "rclistfromreset": "Reset date selection",
        "rclistfrom": "Show new changes starting from $2, $3",
        "enotif_body_intro_moved": "The {{SITENAME}} page $1 has been {{GENDER:$2|moved}} on $PAGEEDITDATE by $2, see $3 for the current revision.",
        "enotif_body_intro_restored": "The {{SITENAME}} page $1 has been {{GENDER:$2|restored}} on $PAGEEDITDATE by $2, see $3 for the current revision.",
        "enotif_body_intro_changed": "The {{SITENAME}} page $1 has been {{GENDER:$2|changed}} on $PAGEEDITDATE by $2, see $3 for the current revision.",
-       "enotif_lastvisited": "See $1 for all changes since your last visit.",
-       "enotif_lastdiff": "See $1 to view this change.",
+       "enotif_lastvisited": "For all changes since your last visit, see $1",
+       "enotif_lastdiff": "To view this change, see $1",
        "enotif_anon_editor": "anonymous user $1",
        "enotif_body": "Dear $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nEditor's summary: $PAGESUMMARY $PAGEMINOREDIT\n\nContact the editor:\nmail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nThere will be no other notifications in case of further activity unless you visit this page while logged in. You could also reset the notification flags for all your watched pages on your watchlist.\n\nYour friendly {{SITENAME}} notification system\n\n--\nTo change your email notification settings, visit\n{{canonicalurl:{{#special:Preferences}}}}\n\nTo change your watchlist settings, visit\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nTo delete the page from your watchlist, visit\n$UNWATCHURL\n\nFeedback and further assistance:\n$HELPPAGE",
        "created": "created",
        "autoredircomment": "Redirected page to [[$1]]",
        "autosumm-new": "Created page with \"$1\"",
        "autosumm-newblank": "Created blank page",
-       "autoblock_whitelist": "AOL http://webmaster.info.aol.com/proxyinfo.html\n*64.12.96.0/19\n*149.174.160.0/20\n*152.163.240.0/21\n*152.163.248.0/22\n*152.163.252.0/23\n*152.163.96.0/22\n*152.163.100.0/23\n*195.93.32.0/22\n*195.93.48.0/22\n*195.93.64.0/19\n*195.93.96.0/19\n*195.93.16.0/20\n*198.81.0.0/22\n*198.81.16.0/20\n*198.81.8.0/23\n*202.67.64.128/25\n*205.188.192.0/20\n*205.188.208.0/23\n*205.188.112.0/20\n*205.188.146.144/30\n*207.200.112.0/21",
+       "autoblock_whitelist": "",
        "size-bytes": "$1 {{PLURAL:$1|byte|bytes}}",
        "size-kilobytes": "$1 KB",
        "size-megabytes": "$1 MB",
diff --git a/languages/i18n/es-formal.json b/languages/i18n/es-formal.json
new file mode 100644 (file)
index 0000000..fe7026c
--- /dev/null
@@ -0,0 +1,333 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Baffo",
+                       "Dalton2",
+                       "Fitoschido",
+                       "Macofe",
+                       "MarcoAurelio",
+                       "XanaG"
+               ]
+       },
+       "tog-underline": "Subrayado de enlaces:",
+       "tog-hideminor": "Ocultar ediciones menores de los cambios recientes",
+       "tog-hidepatrolled": "Ocultar ediciones patrulladas de los cambios recientes",
+       "tog-newpageshidepatrolled": "Ocultar páginas patrulladas de la lista de páginas nuevas",
+       "tog-showtoolbar": "Mostrar barra de edición",
+       "tog-ccmeonemails": "Enviarme una copia de los correos electrónicos que yo envíe a otros usuarios",
+       "sunday": "domingo",
+       "monday": "lunes",
+       "tuesday": "martes",
+       "wednesday": "miércoles",
+       "thursday": "jueves",
+       "friday": "viernes",
+       "saturday": "sábado",
+       "sun": "dom.",
+       "mon": "lun.",
+       "tue": "mar.",
+       "wed": "mié.",
+       "thu": "jue.",
+       "fri": "vie.",
+       "sat": "sáb.",
+       "january": "enero",
+       "february": "febrero",
+       "march": "marzo",
+       "april": "abril",
+       "may_long": "mayo",
+       "june": "junio",
+       "july": "julio",
+       "august": "agosto",
+       "september": "septiembre",
+       "october": "octubre",
+       "november": "noviembre",
+       "december": "diciembre",
+       "january-gen": "enero",
+       "february-gen": "febrero",
+       "march-gen": "marzo",
+       "april-gen": "abril",
+       "may-gen": "mayo",
+       "june-gen": "junio",
+       "july-gen": "julio",
+       "august-gen": "agosto",
+       "september-gen": "septiembre",
+       "october-gen": "octubre",
+       "november-gen": "noviembre",
+       "december-gen": "diciembre",
+       "jan": "enero",
+       "feb": "febrero",
+       "mar": "marzo",
+       "apr": "abril",
+       "may": "mayo",
+       "jun": "junio",
+       "jul": "julio",
+       "aug": "agosto",
+       "sep": "septiembre",
+       "oct": "octubre",
+       "nov": "noviembre",
+       "dec": "diciembre",
+       "january-date": "$1 de enero",
+       "february-date": "$1 de febrero",
+       "march-date": "$1 de marzo",
+       "april-date": "$1 de abril",
+       "may-date": "$1 de mayo",
+       "june-date": "$1 de junio",
+       "july-date": "$1 de julio",
+       "august-date": "$1 de agosto",
+       "september-date": "$1 de septiembre",
+       "october-date": "$1 de octubre",
+       "november-date": "$1 de noviembre",
+       "december-date": "$1 de diciembre",
+       "pagecategories": "{{PLURAL:$1|Categoría|Categorías}}",
+       "category_header": "Páginas en la categoría «$1»",
+       "subcategories": "Subcategorías",
+       "category-media-header": "Archivos multimedia en la categoría «$1»",
+       "about": "Acerca de",
+       "article": "Página de contenido",
+       "newwindow": "(se abre en una ventana nueva)",
+       "cancel": "Cancelar",
+       "moredotdotdot": "Más…",
+       "morenotlisted": "Esta lista no está completa.",
+       "mypage": "Página",
+       "mytalk": "Discusión",
+       "anontalk": "Discusión para esta IP",
+       "navigation": "Navegación",
+       "and": "&#32;y",
+       "qbfind": "Buscar",
+       "qbbrowse": "Examinar",
+       "qbedit": "Editar",
+       "qbpageoptions": "Esta página",
+       "qbmyoptions": "Mis páginas",
+       "faq": "PP. FF.",
+       "faqpage": "Project:Preguntas frecuentes",
+       "actions": "Acciones",
+       "namespaces": "Espacios de nombres",
+       "variants": "Variantes",
+       "navigation-heading": "Menú de navegación",
+       "errorpagetitle": "Error",
+       "returnto": "Volver a $1.",
+       "tagline": "De {{SITENAME}}",
+       "help": "Ayuda",
+       "search": "Buscar",
+       "searchbutton": "Buscar",
+       "go": "Ir",
+       "searcharticle": "Ir",
+       "history": "Historial de página",
+       "history_short": "Historial",
+       "printableversion": "Versión para imprimir",
+       "permalink": "Enlace permanente",
+       "print": "Imprimir",
+       "view": "Ver",
+       "view-foreign": "Ver en $1",
+       "edit": "Editar",
+       "edit-local": "Editar descripción local",
+       "create": "Crear",
+       "create-local": "Añadir descripción local",
+       "editthispage": "Editar esta página",
+       "create-this-page": "Crear esta página",
+       "talkpagelinktext": "Discusión",
+       "personaltools": "Herramientas personales",
+       "talk": "Discusión",
+       "views": "Vistas",
+       "toolbox": "Herramientas",
+       "otherlanguages": "Otros idiomas",
+       "lastmodifiedat": "Esta página fue modificada por última vez el $1, a las $2.",
+       "protectedpage": "Página protegida",
+       "jumpto": "Saltar a:",
+       "jumptonavigation": "navegación",
+       "jumptosearch": "buscar",
+       "view-pool-error": "Lo sentimos, los servidores están sobrecargados en este momento.\nDemasiados usuarios están intentando ver esta página.\nPor favor espere unos instantes antes de reintentar acceder nuevamente a esta página.\n\n$1",
+       "aboutsite": "Acerca de {{SITENAME}}",
+       "aboutpage": "Project:Acerca de",
+       "currentevents": "Actualidad",
+       "currentevents-url": "Project:Actualidad",
+       "disclaimers": "Avisos legales",
+       "disclaimerpage": "Project:Limitación general de responsabilidad",
+       "helppage-top-gethelp": "Ayuda",
+       "mainpage": "Página Principal",
+       "mainpage-description": "Página principal",
+       "policy-url": "Project:Política",
+       "portal": "Portal de la comunidad",
+       "portal-url": "Project:Portal de la comunidad",
+       "privacy": "Política de protección de datos",
+       "privacypage": "Project:Política de protección de datos",
+       "badaccess": "Error de permisos",
+       "badaccess-group0": "No tiene permiso para ejecutar la acción que ha solicitado.",
+       "badaccess-groups": "La acción que ha solicitado está limitada {{PLURAL:$2|al grupo|a uno de estos $2 grupos}}: $1.",
+       "versionrequired": "Se necesita por lo menos la versión $1 de MediaWiki",
+       "ok": "Aceptar",
+       "retrievedfrom": "Obtenido de «$1»",
+       "youhavenewmessages": "Tiene usted $1 ($2).",
+       "youhavenewmessagesmulti": "Tienes mensajes nuevos en $1",
+       "editsection": "editar",
+       "editold": "editar",
+       "viewsourceold": "ver código",
+       "editlink": "editar",
+       "viewsourcelink": "ver código",
+       "editsectionhint": "Editar sección: $1",
+       "toc": "Contenido",
+       "showtoc": "mostrar",
+       "hidetoc": "ocultar",
+       "collapsible-collapse": "Contraer",
+       "collapsible-expand": "Expandir",
+       "confirmable-confirm": "¿Está {{GENDER:$1|seguro|segura}}?",
+       "confirmable-yes": "Sí",
+       "confirmable-no": "No",
+       "site-atom-feed": "Feed Atom de $1",
+       "page-rss-feed": "Canal RSS «$1»",
+       "page-atom-feed": "Canal Atom «$1»",
+       "red-link-title": "$1 (la página no existe)",
+       "nstab-main": "Página",
+       "nstab-special": "Página especial",
+       "nstab-image": "Archivo",
+       "nstab-mediawiki": "Mensaje",
+       "nstab-template": "Plantilla",
+       "nstab-help": "Página de ayuda",
+       "nstab-category": "Categoría",
+       "nosuchactiontext": "La acción especificada en la dirección es inválida.\nEs posible que haya escrito mal la URL o que haya seguido un enlace incorrecto. \nEsto también podría indicar un error en el software utilizado en {{SITENAME}}.",
+       "nospecialpagetext": "<strong>Ha solicitado una página especial inexistente.</strong>\n\nPuede usted ver una lista de las páginas especiales en [[Special:SpecialPages|{{int:specialpages}}]].",
+       "error": "Error",
+       "databaseerror": "Error en la base de datos",
+       "databaseerror-query": "Consulta: $1",
+       "databaseerror-function": "Función: $1",
+       "databaseerror-error": "Error: $1",
+       "laggedslavemode": "<strong>Aviso:</strong> la página puede no contener las actualizaciones más recientes.",
+       "enterlockreason": "Proporcione el motivo del bloqueo, así como una estimación de cuándo se producirá el desbloqueo",
+       "readonlytext": "La base de datos se encuentra actualmente bloqueada y no permite la creación de páginas nuevas y otras modificaciones, probablemente de forma temporal debido al mantenimiento rutinario de la base de datos. Después de esas operaciones el sitio se encontrará nuevamente disponible.\n\nLa razón dada por el administrador que bloqueó la base de datos es la que sigue: $1",
+       "missing-article": "La base de datos no encuentra el texto de una página que debería hallarse, llamada \"$1\" $2.\n\nLa causa de esto suele deberse a un ''diff'' anacrónico o un enlace al historial de una página que ha sido borrada.\n\nSi no fuera el caso, usted puede haber encontrado un fallo en el sistema.\n\nPor favor, avise a un [[Special:ListUsers/sysop|administrador]], tomando nota de la URL.",
+       "internalerror": "Error interno",
+       "internalerror_info": "Error interno: $1",
+       "viewsource": "Ver código",
+       "actionthrottledtext": "Como medida de protección contra el ''spam'', la acción que está realizando está limitada a un número determinado de veces en un periodo corto de tiempo. Usted ha excedido ese límite. Por favor pruebe de nuevo en unos minutos.",
+       "viewsourcetext": "Puede ver y copiar el código fuente de esta página:",
+       "editinginterface": "'''Aviso:''' Está usted editando una página usada para proporcionar texto de interfaz para el software. Los cambios en esta página afectarán a la apariencia de la interfaz para los demás usuarios. Para traducciones, por favor considere usar [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], el proyecto de traducción de MediaWiki.",
+       "welcomeuser": "Le damos la bienvenida, $1.",
+       "welcomecreation-msg": "Se ha creado su cuenta.\nPuede cambiar las [[Special:Preferences|preferencias]] de {{SITENAME}} si lo desea.",
+       "yourname": "Nombre de usuario:",
+       "userlogin-yourname": "Nombre de usuario",
+       "userlogin-yourname-ph": "Escriba su nombre de usuario",
+       "createacct-another-username-ph": "Escriba el nombre de usuario",
+       "yourpassword": "Contraseña:",
+       "userlogin-yourpassword": "Contraseña",
+       "userlogin-yourpassword-ph": "Escriba su contraseña",
+       "createacct-yourpassword-ph": "Escriba una contraseña",
+       "yourpasswordagain": "Escriba la contraseña otra vez:",
+       "createacct-yourpasswordagain": "Confirme la contraseña",
+       "createacct-yourpasswordagain-ph": "Escriba la contraseña otra vez",
+       "login": "Acceder",
+       "nav-login-createaccount": "Iniciar sesión / crear cuenta",
+       "logout": "Desconectar",
+       "userlogout": "Salir",
+       "userlogin-noaccount": "¿No tiene una cuenta?",
+       "userlogin-joinproject": "Únase a {{SITENAME}}",
+       "userlogin-resetpassword-link": "¿Olvidó su contraseña?",
+       "createacct-emailrequired": "Dirección de correo electrónico",
+       "createacct-emailoptional": "Dirección de correo electrónico (opcional)",
+       "anoneditwarning": "'''Aviso:''' No ha iniciado sesión con una cuenta de usuario.\nSu dirección IP se almacenará en el historial de ediciones de la página.",
+       "newarticletext": "Ha seguido usted un enlace a una página que aún no existe.\nPara crear esta página, escriba en el campo a continuación. Para más información, consulte la [$1 página de ayuda].\nSi ha llegado aquí por error, vuelva a la página anterior.",
+       "noarticletext": "En este momento no hay texto en esta página.\nPuede [[Special:Search/{{PAGENAME}}|buscar el título de esta página]] en otras páginas,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar en los registros],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta página]</span>.",
+       "copyrightwarning": "Por favor observe que todas las contribuciones realizadas en {{SITENAME}} serán consideradas como liberadas bajo $2 (véase $1 para más detalles).\nSi no desea que sus escritos sean editados o redistribuídos a voluntad, entonces no contribuya aquí.<br />\nAl mismo tiempo está usted prometiendo que lo que usted va a enviar lo ha escrito usted, o copiado de una fuente de dominio público.\n'''¡No envíe textos con derechos de autor sin el debido permiso!'''",
+       "permissionserrorstext-withaction": "No tiene permiso para $2 por {{PLURAL:$1|la|las}} {{PLURAL:$1|siguiente|siguientes}} {{PLURAL:$1|razón|razones}}:",
+       "rev-deleted-text-permission": "Esta revisión de la página ha sido '''borrada'''.\nPuede encontrar detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
+       "rev-deleted-text-unhide": "Esta revisión de página ha sido '''borrada'''.\nPuede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].\nComo administrador todavía puede [$1 ver esta revisión] si así lo desea.",
+       "rev-suppressed-text-unhide": "Esta revisión de la página ha sido '''suprimida'''.\nPuede haber detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].\nComo administrador podrá seguir [$1 viendo esta revisión] si desea continuar.",
+       "rev-deleted-text-view": "Esta revisión de la página ha sido '''borrada'''.\nComo administrador puede verla; puede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
+       "rev-suppressed-text-view": "Esta revisión de la página ha sido '''suprimida'''.\nComo administrador puede verla; puede haber detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].",
+       "rev-deleted-no-diff": "No puede visualizarse este cambio debido a que las revisiones han sido '''borradas'''.\nPuede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
+       "revdelete-nooldid-text": "No se ha especificado una revisión o revisiones destino sobre las que realizar esta función.",
+       "revdelete-show-file-confirm": "¿Está seguro de que desea ver la revisión borrada del archivo \"<nowiki>$1</nowiki>\" del $2 a las $3?",
+       "revdelete-confirm": "Confirme que quiere realizar la operación, que entiende las consecuencias y que está ejecutando dicha acción acorde con [[{{MediaWiki:Policy-url}}|las políticas]].",
+       "lineno": "Línea $1:",
+       "editundo": "deshacer",
+       "searchresults": "Resultados de la búsqueda",
+       "searchresults-title": "Resultados de la búsqueda de «$1»",
+       "shown-title": "Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página",
+       "search-result-size": "$1 ({{PLURAL:$2|1 palabra|$2 palabras}})",
+       "search-section": "(sección $1)",
+       "search-suggest": "¿Quiso decir: $1?",
+       "newuserlogpage": "Altas de usuarios",
+       "rightslog": "Registro de cambios de permisos de usuarios",
+       "recentchanges": "Cambios recientes",
+       "recentchangeslinked-toolbox": "Cambios relacionados",
+       "recentchangeslinked-summary": "Esta es una lista de cambios efectuados recientemente a páginas enlazadas desde una página dada (o de miembros de una categoría dada).\nLas páginas que se encuentran en tu [[Special:Watchlist|lista de seguimiento]] están en <strong>negritas</strong>.",
+       "upload": "Subir archivo",
+       "filehist-help": "Haga clic sobre una fecha/hora para ver el archivo a esa fecha.",
+       "randompage": "Página aleatoria",
+       "nbytes": "$1 {{PLURAL:$1|byte|bytes}}",
+       "emailuser": "Enviar un correo electrónico a este usuario",
+       "addedwatchtext": "La página «[[:$1]]» ha sido añadida a su [[Special:Watchlist|lista de seguimiento]]. Los cambios futuros en esta página y en su página de discusión asociada se indicarán ahí, y la página aparecerá '''en negritas''' en la [[Special:RecentChanges|lista de cambios recientes]] para hacerla más fácil de detectar.\n\nCuando quiera eliminar la página de su lista de seguimiento, presione «Dejar de vigilar» en el menú.",
+       "removedwatchtext": "La página «[[:$1]]» ha sido eliminada de su [[Special:Watchlist|lista de seguimiento]].",
+       "confirmdeletetext": "Está a punto de borrar una página junto con su historial.\nPor favor confirme que desea realizar esto, que entiende las consecuencias y que está realizando esta acción de acuerdo con las [[{{MediaWiki:Policy-url}}|políticas]]",
+       "deletedtext": "\"$1\" ha sido borrado.\nVea $2 para un registro de los borrados recientes.",
+       "rollbacklink": "revertir",
+       "protect-text": "Puede ver y modificar el nivel de protección de la página '''$1'''.",
+       "protect-locked-access": "Su cuenta no tiene permiso para cambiar los niveles de protección de una página.\nA continuación se muestran las opciones actuales de la página '''$1''':",
+       "protect-cascadeon": "Actualmente esta página está protegida porque está incluida en {{PLURAL:$1|la siguiente página|las siguientes páginas}}, que tienen activada la opción de protección en cascada. Puede cambiar el nivel de protección de esta página, pero no afectará a la protección en cascada.",
+       "protect-cantedit": "No puede cambiar el nivel de protección porque no tiene permiso para editarla.",
+       "blanknamespace": "(Principal)",
+       "whatlinkshere": "Lo que enlaza aquí",
+       "ipblocklist": "Usuarios bloqueados",
+       "contribslink": "contribs",
+       "articleexists": "Ya existe una página con ese nombre, o el nombre que ha escogido no es válido.\nPor favor, elija otro nombre.",
+       "thumbnail-more": "Aumentar",
+       "tooltip-pt-userpage": "Su página de usuario",
+       "tooltip-pt-mytalk": "Su página de discusión",
+       "tooltip-pt-preferences": "Sus preferencias",
+       "tooltip-pt-watchlist": "La lista de páginas cuyos cambios usted vigila",
+       "tooltip-pt-mycontris": "Lista de sus contribuciones",
+       "tooltip-pt-login": "Le invitamos a que se registre, aunque no es obligatorio",
+       "tooltip-pt-createaccount": "Le invitamos a que cree una cuenta de usuario e inicie sesión, aunque ello no es obligatorio.",
+       "tooltip-ca-talk": "Discusión acerca del artículo",
+       "tooltip-ca-edit": "Usted puede editar esta página. Por favor, use el botón de previsualización antes de grabar.",
+       "tooltip-ca-history": "Versiones anteriores de esta página y sus autores",
+       "tooltip-ca-watch": "Añadir esta página a tu lista de seguimiento",
+       "tooltip-ca-unwatch": "Borrar esta página de su lista de seguimiento",
+       "tooltip-search": "Buscar en {{SITENAME}}",
+       "tooltip-search-fulltext": "Busca este texto en las páginas",
+       "tooltip-p-logo": "Visitar la página principal",
+       "tooltip-n-mainpage": "Visitar la página principal",
+       "tooltip-n-mainpage-description": "Visitar la página principal",
+       "tooltip-n-portal": "Acerca del proyecto, lo que usted puede hacer, dónde encontrar las cosas",
+       "tooltip-n-currentevents": "Información básica sobre acontecimientos actuales",
+       "tooltip-n-recentchanges": "Lista de cambios recientes en el wiki",
+       "tooltip-n-randompage": "Cargar una página al azar",
+       "tooltip-n-help": "El lugar para aprender",
+       "tooltip-t-whatlinkshere": "Lista de todas las páginas del wiki que enlazan aquí",
+       "tooltip-t-recentchangeslinked": "Cambios recientes en las páginas que enlazan con ésta",
+       "tooltip-t-upload": "Subir imágenes o archivos multimedia",
+       "tooltip-t-specialpages": "Lista de todas las páginas especiales",
+       "tooltip-t-print": "Versión imprimible de esta página",
+       "tooltip-t-permalink": "Enlace permanente a esta versión de la página",
+       "tooltip-ca-nstab-main": "Ver el artículo",
+       "tooltip-ca-nstab-special": "Esta es una página especial, usted no puede modificar la página en sí",
+       "tooltip-save": "Guarde sus cambios",
+       "tooltip-preview": "Vista previa de sus cambios, por favor use esto antes de guardar",
+       "tooltip-diff": "Mostrar los cambios que ha introducido en el texto.",
+       "tooltip-rollback": "«Revertir» revierte todas las ediciones del último usuario con un solo clic.",
+       "bad_image_list": "El formato es el siguiente:\n\nSolo se reconocen elementos de lista (líneas que comienzan con «*»).\nEl primer enlace de cada línea debe ser un enlace al archivo que se quiere bloquear.\nTodos los demás enlaces en la misma línea se tomarán como excepciones (es decir, páginas donde sí se puede usar el archivo).",
+       "confirmemail_body": "Alguien, probablemente usted mismo, ha registrado desde la dirección IP $1 la cuenta \"$2\" en {{SITENAME}}, utilizando esta dirección de correo.\n\nPara confirmar que esta cuenta realmente le pertenece y activar el correo en {{SITENAME}}, siga este enlace:\n\n$3\n\nSi la cuenta *no* es suya, siga este otro enlace para cancelar la confirmación de la dirección de correo:\n\n$5\n\nEl código de confirmación expirará en $4.",
+       "confirmemail_body_changed": "Alguien, probablemente usted,\nha modificado la dirección de correo electrónico asociado a la cuenta \"$2\" hacia esta en {{SITENAME}}, desde la dirección IP $1.\n\nPara confirmar que esta cuenta realmente le pertenece y reactivar las funciones de correo electrónico en {{SITENAME}}, abra este enlace en su navegador:\n\n$3\n\nSi la cuenta *no* le pertenece, sigua el siguiente enlace para cancelar la confirmación:\n\n$5\n\nEste código de confirmación expirará el $4.",
+       "deletedwhileediting": "'''Aviso''': ¡Esta página fue borrada después de que usted empezara a editar!",
+       "confirmrecreate": "El usuario [[User:$1|$1]] ([[User talk:$1|discusión]]) borró este artículo después de que usted empezara a editarlo y dio esta razón:\n: ''$2'' \nPor favor, confirme que realmente desea crear de nuevo esta página.",
+       "watchlistedit-normal-explain": "Los títulos de su lista de seguimiento se muestran debajo.\nPara eliminar un título, marque la casilla junto a él, y haga clic en ''{{int:Watchlistedit-normal-submit}}''.\nTambién puede [[Special:EditWatchlist/raw|editar la lista de en crudo]].",
+       "watchlistedit-raw-explain": "Los títulos de su lista de seguimiento se muestran debajo. Esta lista puede ser editada añadiendo o eliminando líneas de la lista;\nun título por línea.\nCuando acabe, haga clic en \"{{int:Watchlistedit-raw-submit}}\".\nTambién puede [[Special:EditWatchlist|usar el editor estándar]].",
+       "watchlistedit-raw-done": "Su lista de seguimiento ha sido actualizada.",
+       "version-license-info": "MediaWiki es software libre; usted puede redistribuírlo y/o modificarlo bajo los términos de la Licencia General Pública GNU publicada por la Fundación del Software Libre; ya sea la versión 2 de la licencia, o (a su elección) cualquier versión posterior.\n\nMediaWiki es distribuído con la esperanza de que será útil, pero SIN NINGUNA GARANTÍA; ni siquiera con la garantía implícita de COMERCIALIZACIÓN ó ADAPTACIÓN A UN PROPÓSITO PARTICULAR. Véase la Licencia Pública General GNU para mayores detalles.\n\nHa usted recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública General GNU] junto a este programa; si no es así, escriba usted a la Fundación del Software Libre, Inc., Calle Franklin 51, Quinto Piso, Boston, MA 02110-1301, EE.UU. ó [//www.gnu.org/licenses/old-licenses/gpl-2.0.html léala usted en línea].",
+       "fileduplicatesearch-summary": "Búsqueda de archivos duplicados en base a su valor hash.",
+       "specialpages": "Páginas especiales",
+       "dberr-usegoogle": "Mientras tanto puede usted probar buscando a través de Google.",
+       "htmlform-invalid-input": "Existen problemas con alguno de los datos que usted ha introducido",
+       "htmlform-select-badoption": "El valo que usted ha especificado no es una opción válida.",
+       "htmlform-int-invalid": "El valor que usted ha especificado no es un entero.",
+       "htmlform-float-invalid": "El valor que usted ha especificado no es un número.",
+       "htmlform-int-toolow": "El valor que usted ha especificado está por debajo del mínimo de $1",
+       "htmlform-int-toohigh": "El valor que usted ha especificado está por encima del máximo de $1",
+       "json-warn-trailing-comma": "$1 posterior {{PLURAL:$1|comma was|comas fueron }} retirado de JSON",
+       "json-error-unknown": "Ocurrió un problema con el código JSON. Error: $1",
+       "json-error-depth": "La profundidad máxima de la pila (en inglés stack) ha sido excedida.",
+       "json-error-ctrl-char": "Errores de caracteres de control, posiblemente codificado en manera incorrecta",
+       "json-error-syntax": "Error sintáctico",
+       "json-error-utf8": "Los caracteres UTF-8 tienen errores de formato, puede ser que la codificación es incorrecta.",
+       "json-error-recursion": "Uno o más recursiva de las referencias en valor de codificar",
+       "json-error-inf-or-nan": "Uno o más valores NAN o INF en el valor de ser codificado",
+       "json-error-unsupported-type": "Fue dado un valor de un tipo que no puede ser codificado"
+}
index 2b171e0..a5b775b 100644 (file)
                        "Pompilos",
                        "Igv",
                        "Juanpabl",
-                       "AlimanRuna"
+                       "AlimanRuna",
+                       "Luzcaru"
                ]
        },
        "tog-underline": "Subrayar los enlaces:",
        "transaction-duration-limit-exceeded": "Con el fin de evitar un aumento excesivo del retardo de replicación, se anuló esta transacción porque la duración de escritura ($1) excedió el límite de $2 {{PLURAL:$2|segundo|segundos}}.\nSi estás cambiando muchos elementos a la vez, trata de hacer operaciones similares más pequeñas.",
        "laggedslavemode": "<strong>Advertencia:</strong> puede que falten las actualizaciones más recientes en esta página.",
        "readonly": "Base de datos bloqueada",
-       "enterlockreason": "Explica el motivo del bloqueo, incluyendo una estimación de cuándo se producirá el desbloqueo",
+       "enterlockreason": "Proporciona el motivo del bloqueo, así como una estimación de cuándo se producirá el desbloqueo",
        "readonlytext": "Actualmente la base de datos no permite nuevas entradas u otras modificaciones, probablemente por mantenimiento rutinario, tras lo cual volverá a la normalidad.\n\nLa explicación dada por el administrador que la bloqueó fue: $1",
        "missing-article": "La base de datos no ha encontrado el texto de la página «$1» $2, cuando debería haberse hallado.\n\nLa causa de esto suele ser un ''diff'' anacrónico o un enlace al historial de una página que ha sido borrada.\n\nSi no fuera el caso, puede que hayas encontrado un fallo en el software.\n\nPor favor, informa de esto a [[Special:ListUsers/sysop|administrador]], y anota la URL actual.",
        "missingarticle-rev": "(revisión: $1)",
        "missingarticle-diff": "(diferencia: $1, $2)",
        "readonly_lag": "La base de datos se ha bloqueado automáticamente mientras sus servidores esclavos se sincronizan con el maestro.",
-       "nonwrite-api-promise-error": "El encabezado HTTP 'Promise-Non-Write-API-Action' ha sido enviado pero la petición fue hacia un módulo de escritura de la API.",
+       "nonwrite-api-promise-error": "La cabecera HTTP «Promise-Non-Write-API-Action» se ha enviado pero la petición se realizó a un módulo de escritura de la API.",
        "internalerror": "Error interno",
        "internalerror_info": "Error interno: $1",
        "internalerror-fatal-exception": "Excepción grave de tipo \"$1\"",
        "noname": "No se ha especificado un nombre de usuario válido.",
        "loginsuccesstitle": "Has accedido",
        "loginsuccess": "<strong>Has accedido a {{SITENAME}} como «$1».</strong>",
-       "nosuchuser": "No existe ningún usuario llamado «$1».\nLos nombres de usuario son sensibles a las mayúsculas.\nRevisa tu ortografía, o [[Special:CreateAccount|crea una cuenta nueva]].",
+       "nosuchuser": "No existe ninguna cuenta llamada «$1».\nLos nombres de usuario distinguen mayúsculas y minúsculas.\nComprueba tu escritura o [[Special:CreateAccount|crea una cuenta nueva]].",
        "nosuchusershort": "No existe ningún usuario llamado «$1». Comprueba que lo has escrito correctamente.",
        "nouserspecified": "Debes especificar un nombre de usuario.",
        "login-userblocked": "No puedes iniciar sesión porque tu cuenta está bloqueada.",
        "extlink_sample": "http://www.ejemplo.com Título del enlace",
        "extlink_tip": "Enlace externo (recuerda añadir el prefijo http://)",
        "headline_sample": "Texto de encabezado",
-       "headline_tip": "Encabezado de nivel 2",
+       "headline_tip": "Título de 2.º nivel",
        "nowiki_sample": "Insertar aquí texto sin formato",
        "nowiki_tip": "Ignorar el formato wiki",
        "image_sample": "Ejemplo.jpg",
        "readonlywarning": "<strong>Advertencia: La base de datos ha sido bloqueada por labores de mantenimiento, así que en este momento no puedes guardar tus ediciones.</strong>\nQuizás quieras copiar y pegar tu texto en un archivo de texto y guardarlo para después.\n\nEl administrador que la bloqueó ha dado esta explicación: $1",
        "protectedpagewarning": "<strong>Advertencia: Esta página ha sido protegida para que solo puedan editarla los usuarios con permisos de administrador.</strong>\nA continuación se muestra la última entrada de registro para más información:",
        "semiprotectedpagewarning": "<strong>Nota:</strong> Esta página ha sido protegida para que solo puedan editarla los usuarios registrados.\nA continuación se muestra la última entrada de registro para más información:",
-       "cascadeprotectedwarning": "<strong>Aviso:</strong> esta página está protegida y solo los administradores pueden editarla porque está transcluida en {{PLURAL:$1|la siguiente página protegida|las siguientes páginas protegidas}} en cascada:",
+       "cascadeprotectedwarning": "<strong>Aviso:</strong> esta página está protegida y solo pueden editarla usuarios con [[Special:ListGroupRights|permisos específicos]] porque está transcluida en {{PLURAL:$1|la siguiente página protegida|las siguientes páginas protegidas}} en cascada:",
        "titleprotectedwarning": "<strong>Aviso: esta página está protegida de modo que se necesitan [[Special:ListGroupRights|permisos específicos]] para crearla.</strong>\nA continuación se muestra la última entrada del registro como referencia:",
        "templatesused": "{{PLURAL:$1|Plantilla usada|Plantillas usadas}} en esta página:",
        "templatesusedpreview": "{{PLURAL:$1|Plantilla usada|Plantillas usadas}} en esta previsualización:",
        "searchprofile-advanced": "Avanzado",
        "searchprofile-articles-tooltip": "Buscar en $1",
        "searchprofile-images-tooltip": "Buscar archivos",
-       "searchprofile-everything-tooltip": "Buscar en todo el contenido (incluyendo páginas de discusión)",
+       "searchprofile-everything-tooltip": "Buscar en todo el contenido (incluidas las páginas de discusión)",
        "searchprofile-advanced-tooltip": "Buscar en espacios de nombres personalizados",
        "search-result-size": "$1 ({{PLURAL:$2|1 palabra|$2 palabras}})",
        "search-result-category-size": "{{PLURAL:$1|1 miembro|$1 miembros}} ({{PLURAL:$2|1 subcategoría|$2 subcategorías}}, {{PLURAL:$3|1 archivo|$3 archivos}})",
        "userrights-expiry-options": "1 día:1 day,1 semana:1 week,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year",
        "userrights-invalid-expiry": "El tiempo de caducidad del grupo \"$1\" no es válido.",
        "userrights-expiry-in-past": "El tiempo de caducidad del grupo \"$1\" está en el pasado.",
+       "userrights-cannot-shorten-expiry": "No puedes acortar la caducidad de las membresías del grupo «$1». Únicamente los usuarios con permisos para añadir y quitar el grupo pueden hacerlo.",
        "userrights-conflict": "¡Conflicto de cambio de los permisos de usuario! Por favor, revisa y confirma tus cambios.",
        "group": "Grupo:",
        "group-user": "Usuarios",
        "right-userrights": "Modificar todos los permisos de usuario",
        "right-userrights-interwiki": "Modificar los permisos de usuario en otros wikis",
        "right-siteadmin": "Bloquear y desbloquear la base de datos",
-       "right-override-export-depth": "Exportar páginas, incluyendo aquellas enlazadas hasta una profundidad de 5",
+       "right-override-export-depth": "Exportar páginas, incluidas aquellas enlazadas hasta una profundidad de 5",
        "right-sendemail": "Enviar correo electrónico a otros usuarios",
        "right-managechangetags": "Crear y (des)activar [[Special:Tags|etiquetas]]",
        "right-applychangetags": "Aplicar [[Special:Tags|etiquetas]] junto con los cambios propios",
        "rcfilters-empty-filter": "No hay filtros activos. Se muestran todas las contribuciones.",
        "rcfilters-filterlist-title": "Filtros",
        "rcfilters-filterlist-whatsthis": "¿Qué es esto?",
+       "rcfilters-filterlist-feedbacklink": "Comparte tus comentarios sobre los filtros (beta) nuevos",
        "rcfilters-highlightbutton-title": "Resaltar los resultados",
        "rcfilters-highlightmenu-title": "Selecciona un color",
        "rcfilters-highlightmenu-help": "Selecciona un color para resaltar esta propiedad",
        "rcfilters-filterlist-noresults": "No se encontraron filtros",
        "rcfilters-noresults-conflict": "No se encontraron resultados porque los criterios de búsqueda están en conflicto.",
+       "rcfilters-state-message-subset": "Este filtro no tiene ningún efecto debido a que sus resultados se incluyen con los de los siguientes: {{PLURAL:$2|filtro|filtros}} (intente destacarlo para distinguirlo): $1",
+       "rcfilters-state-message-fullcoverage": "Seleccionar todos los filtros de un grupo es lo mismo que seleccionar ninguno, por lo que este filtro no tiene efecto. El grupo incluye: $1",
        "rcfilters-filtergroup-registration": "Registro de usuario",
        "rcfilters-filter-registered-label": "Registrados",
        "rcfilters-filter-registered-description": "Editores conectados.",
        "rcfilters-filter-unregistered-label": "No registrados",
        "rcfilters-filter-unregistered-description": "Editores no conectados.",
-       "rcfilters-filtergroup-authorship": "Editar autoría",
-       "rcfilters-filter-editsbyself-label": "Tus propias ediciones",
-       "rcfilters-filter-editsbyself-description": "Ediciones tuyas",
-       "rcfilters-filter-editsbyother-label": "Ediciones de otros",
-       "rcfilters-filter-editsbyother-description": "Ediciones creadas por otros usuarios (no por ti).",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Este filtro entra en conflicto con el siguiente nivel de Experiencia {{PLURAL:$2|filtro|filtros}}, que {{PLURAL:$2 |encuentra|encontrar}} sólo usuarios registrados: $1",
+       "rcfilters-filtergroup-authorship": "Autoría de la contribución",
+       "rcfilters-filter-editsbyself-label": "Cambios tuyos",
+       "rcfilters-filter-editsbyself-description": "Tus propias contribuciones",
+       "rcfilters-filter-editsbyother-label": "Cambios de otros",
+       "rcfilters-filter-editsbyother-description": "Todos los cambios, excepto los tuyos.",
        "rcfilters-filtergroup-userExpLevel": "Nivel de experiencia (solo para usuarios registrados)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Los filtros de nivel de experiencia sólo encuentran usuarios registrados, por lo que este filtro entra en conflicto con el filtro \"No registrado\".",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "El filtro \"No registrado\" está en conflicto con uno o más filtros de nivel de Experiencia, que solo encuentran usuarios registrados. Los filtros en conflicto están marcados en el área Filtros Activos, anterior.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Recién llegados",
        "rcfilters-filter-user-experience-level-newcomer-description": "Menos de 10 ediciones y 4 días de actividad.",
        "rcfilters-filter-user-experience-level-learner-label": "Aprendices",
        "rcfilters-filter-categorization-description": "Registros de páginas añadidas o borradas de categorías.",
        "rcfilters-filter-logactions-label": "Acciones registradas",
        "rcfilters-filter-logactions-description": "Acciones administrativas, creación de cuentas, borrados de páginas, subidas de archivos...",
-       "rcnotefrom": "Debajo aparece{{PLURAL:$5| el cambio|n los cambios}} desde <strong>$3, $4</strong> (se muestran hasta <strong>$1</strong>).",
-       "rclistfromreset": "Reiniciar selección de fecha",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "El filtro \"Ediciones menores\" está en conflicto con uno o más Tipos de filtros de Cambio, ya que ciertos tipos de cambio no pueden ser designados como \"menores\". Los filtros en conflicto están marcados en el área Filtros activos, anterior.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Ciertos tipos de cambio no pueden ser designados como \"menores\", por lo que este filtro entra en conflicto con los siguientes  Tipos de filtros de Cambio: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Este filtro «Tipo de cambio» entra en conflicto con el filtro «Ediciones menores». Hay ciertos tipos de cambios que no pueden denominarse «menores».",
+       "rcnotefrom": "Debajo {{PLURAL:$5|aparece el cambio|aparecen los cambios}} desde <strong>$3, $4</strong> (se muestran hasta <strong>$1</strong>).",
+       "rclistfromreset": "Restablecer selección de fecha",
        "rclistfrom": "Mostrar cambios nuevos desde las $2 del $3",
        "rcshowhideminor": "$1 ediciones menores",
        "rcshowhideminor-show": "Mostrar",
        "php-uploaddisabledtext": "La subida de archivos está deshabilitada en PHP.\nComprueba la opción <code>file_uploads</code>.",
        "uploadscripted": "Este archivo contiene script o código HTML que puede ser interpretado erróneamente por un navegador web.",
        "upload-scripted-pi-callback": "No se pueden cargar archivos que contengan instrucciones de procesamiento en forma de hojas de estilo XML.",
+       "upload-scripted-dtd": "No se pueden cargar archivos SVG que contengan una declaración DTD no estándar.",
        "uploaded-script-svg": "Se encontró el elemento habilitado para secuencias de órdenes «$1» en el archivo SVG cargado.",
        "uploaded-hostile-svg": "Se encontró código CSS no seguro en el elemento de estilo del archivo SVG cargado.",
        "uploaded-event-handler-on-svg": "No está permitido configurar atributos controladores de eventos <code>$1=\"$2\"</code> en los archivos SVG.",
        "backend-fail-closetemp": "No se pudo cerrar el archivo temporal.",
        "backend-fail-read": "No se pudo leer el archivo «$1».",
        "backend-fail-create": "No se pudo escribir el archivo \"$1\".",
-       "backend-fail-maxsize": "No se pudo escribir el archivo \"$1\" porque es mayor a {{PLURAL:$2|un byte|$2 bytes}}.",
-       "backend-fail-readonly": "El servidor (back-end) de almacenamiento \"$1\" está actualmente en estado de sólo lectura. La razón aducida es: <em>$2</em>",
-       "backend-fail-synced": "El archivo \"$1\" se encuentra en un estado incoherente dentro de los servidores (backends) de almacenamiento interno",
-       "backend-fail-connect": "No se pudo conectar al servidor (backend) de almacenamiento \"$1\".",
-       "backend-fail-internal": "Se ha producido un error desconocido en el servidor (backend) de almacenamiento \"$1\".",
-       "backend-fail-contenttype": "No se pudo determinar el tipo de contenido del archivo a guardar en \" $1 \".",
-       "backend-fail-batchsize": "El servidor (back-end) de almacenamiento ha suministrado un lote de $1 {{PLURAL:$1|operación|operaciones}} de archivo; el límite es de $2 {{PLURAL:$2|operación|operaciones}}.",
+       "backend-fail-maxsize": "No se pudo escribir el archivo «$1» porque es mayor que {{PLURAL:$2|un byte|$2 bytes}}.",
+       "backend-fail-readonly": "El sistema de almacenamiento «$1» está actualmente en modo de solo lectura. La razón aducida es: <em>$2</em>",
+       "backend-fail-synced": "El archivo «$1» se encuentra en un estado incoherente dentro de los sistemas de almacenamiento interno",
+       "backend-fail-connect": "No se pudo conectar con el sistema de almacenamiento «$1».",
+       "backend-fail-internal": "Se ha producido un error desconocido en el sistema de almacenamiento «$1».",
+       "backend-fail-contenttype": "No se pudo determinar el tipo de contenido del archivo que se debe guardar en «$1».",
+       "backend-fail-batchsize": "Se ha proporcionado al sistema de almacenamiento un lote de $1 {{PLURAL:$1|operación|operaciones}} de archivos; el límite es de $2 {{PLURAL:$2|operación|operaciones}}.",
        "backend-fail-usable": "No se pudo leer o escribir el archivo \"$1\" debido a permisos insuficientes o directorios/contenedores desaparecidos.",
-       "filejournal-fail-dbconnect": "No se pudo conectar a la base de datos del registro del sistema de almacenamiento \"$1\".",
+       "filejournal-fail-dbconnect": "No se pudo conectar con la base de datos del registro del sistema de almacenamiento «$1».",
        "filejournal-fail-dbquery": "No se pudo actualizar la base de datos del registro del sistema de almacenamiento \"$1\".",
        "lockmanager-notlocked": "No se pudo desbloquear \"$1\": no se encontraba bloqueado.",
        "lockmanager-fail-closelock": "No se pudo cerrar la referencia para el archivo de bloqueo de \"$1\".",
        "statistics-header-hooks": "Otras estadísticas",
        "statistics-articles": "Páginas de contenido",
        "statistics-pages": "Páginas",
-       "statistics-pages-desc": "Todas las páginas en el wiki, incluyendo páginas de discusión, redirecciones, etc.",
+       "statistics-pages-desc": "Todas las páginas del wiki, incluidas las páginas de discusión, redirecciones, etc.",
        "statistics-files": "Archivos subidos",
        "statistics-edits": "Ediciones en páginas desde que {{SITENAME}} fue instalado",
        "statistics-edits-average": "Promedio de ediciones por página",
        "apisandbox-request-selectformat-label": "Mostrar los datos de la petición como:",
        "apisandbox-request-format-url-label": "Cadena de consulta de la URL",
        "apisandbox-request-url-label": "URL solicitante:",
+       "apisandbox-request-json-label": "JSON de la solicitud:",
        "apisandbox-request-time": "Tiempo de solicitud: {{PLURAL:$1|$1 ms}}",
        "apisandbox-results-fixtoken": "Corrige el token y vuelve a enviar",
        "apisandbox-results-fixtoken-fail": "No fue posible recuperar el token \"$1\".",
        "enotif_body_intro_moved": "La página $1 de {{SITENAME}} ha sido trasladada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.",
        "enotif_body_intro_restored": "La página $1 de {{SITENAME}} ha sido restaurada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.",
        "enotif_body_intro_changed": "La página $1 de {{SITENAME}} ha sido cambiada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.",
-       "enotif_lastvisited": "Consulta $1 para ver todos los cambios desde tu última visita.",
-       "enotif_lastdiff": "Consulta $1 para ver este cambio.",
+       "enotif_lastvisited": "Consulta $1 para ver todos los cambios desde tu última visita",
+       "enotif_lastdiff": "Consulta $1 para ver este cambio",
        "enotif_anon_editor": "usuario anónimo $1",
        "enotif_body": "Hola, $WATCHINGUSERNAME:\n\n$PAGEINTRO $NEWPAGE\n\nResumen del editor: $PAGESUMMARY $PAGEMINOREDIT\n\nContacta al editor:\ncorreo: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNo enviaremos más notificaciones si ocurre más actividad, a menos que visites esta página con la sesión iniciada. También puedes restablecer los estados de notificación para todas las páginas en tu lista de seguimiento.\n\nAtentamente, el sistema de notificaciones de {{SITENAME}}\n\n--\nPara cambiar tus ajustes de notificación por correo, visita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPara cambiar los ajustes de tu lista de seguimiento, visita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPara quitar la página de tu lista de seguimiento, visita\n$UNWATCHURL\n\nPara ayuda y comentarios:\n$HELPPAGE",
        "created": "creada",
        "unblocked-id": "Se ha eliminado el bloqueo $1",
        "unblocked-ip": "Se ha desbloqueado a [[Special:Contributions/$1|$1]].",
        "blocklist": "Usuarios bloqueados",
+       "autoblocklist": "Bloqueos automáticos",
        "autoblocklist-submit": "Buscar",
+       "autoblocklist-legend": "Mostrar bloqueos automáticos",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Bloqueo automático local|Bloqueos automáticos locales}}",
+       "autoblocklist-empty": "La lista de bloqueos automáticos está vacía.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Otro bloqueo automático|Otros bloqueos automáticos}}",
        "ipblocklist": "Usuarios bloqueados",
        "ipblocklist-legend": "Encontrar a un usuario bloqueado",
        "blocklist-userblocks": "Ocultar bloqueos de cuenta",
        "tooltip-pt-mycontris": "Una lista de {{GENDER:|tus}} contribuciones",
        "tooltip-pt-anoncontribs": "Una lista de modificaciones hechas desde esta dirección IP",
        "tooltip-pt-login": "Te recomendamos iniciar sesión, aunque no es obligatorio",
+       "tooltip-pt-login-private": "Es necesario acceder a una cuenta para utilizar este wiki",
        "tooltip-pt-logout": "Salir de la sesión",
        "tooltip-pt-createaccount": "Te recomendamos crear una cuenta e iniciar sesión; sin embargo, no es obligatorio",
        "tooltip-ca-talk": "Discusión acerca de la página de contenido",
        "confirmrecreate": "{{GENDER:$1|El usuario|La usuaria}} [[User:$1|$1]] ([[User talk:$1|discusión]]) borró esta página después de que comenzaras a editarla, por este motivo:\n: <em>$2</em>\nConfirma que realmente quieres volver a crear esta página.",
        "confirmrecreate-noreason": "{{GENDER:$1|El usuario|La usuaria}} [[User:$1|$1]] ([[User talk:$1|discusión]]) borró esta página después de que comenzaras a editarla. Confirma que realmente quieres recrear esta página.",
        "recreate": "Recrear",
+       "confirm-purge-title": "Purgar esta página",
        "confirm_purge_button": "Aceptar",
        "confirm-purge-top": "¿Limpiar la caché de esta página?",
-       "confirm-purge-bottom": "Purgar una página limpia la caché y fuerza a que aparezca la versión más actual.",
+       "confirm-purge-bottom": "Purgar una página limpia la antememoria y fuerza a que aparezca la versión más actual.",
        "confirm-watch-button": "Aceptar",
        "confirm-watch-top": "¿Añadir esta página a tu lista de seguimiento?",
        "confirm-unwatch-button": "Aceptar",
        "json-error-unsupported-type": "Se proporcionó un valor en un tipo que no se puede codificar",
        "headline-anchor-title": "Enlace a esta sección",
        "special-characters-group-latin": "Latín",
-       "special-characters-group-latinextended": "Latín extendido",
+       "special-characters-group-latinextended": "Latino ampliado",
        "special-characters-group-ipa": "AFI",
        "special-characters-group-symbols": "Símbolos",
        "special-characters-group-greek": "Griego",
-       "special-characters-group-greekextended": "Griego extendido",
+       "special-characters-group-greekextended": "Griego ampliado",
        "special-characters-group-cyrillic": "Cirílico",
        "special-characters-group-arabic": "Árabe",
-       "special-characters-group-arabicextended": "Arábico extendido",
+       "special-characters-group-arabicextended": "Árabe ampliado",
        "special-characters-group-persian": "Persa",
        "special-characters-group-hebrew": "Hebreo",
        "special-characters-group-bangla": "Bengalí",
        "special-characters-group-tamil": "Tamil",
        "special-characters-group-telugu": "Telugú",
-       "special-characters-group-sinhala": "Sinhala",
+       "special-characters-group-sinhala": "Cingalés",
        "special-characters-group-gujarati": "Guyaratí",
        "special-characters-group-devanagari": "Devanagari",
        "special-characters-group-thai": "Tailandés",
-       "special-characters-group-lao": "Lao",
-       "special-characters-group-khmer": "Jemer",
+       "special-characters-group-lao": "Laosiano",
+       "special-characters-group-khmer": "Camboyano",
+       "special-characters-group-canadianaboriginal": "Silabario aborigen canadiense",
        "special-characters-title-endash": "semirraya",
        "special-characters-title-emdash": "raya",
        "special-characters-title-minus": "signo de resta",
        "restrictionsfield-help": "Una dirección IP o intervalo de CIDR por renglón. Para activarlo todo, utiliza <pre>0.0.0.0/0\n::/0</pre>",
        "revid": "revisión $1",
        "pageid": "ID de página $1",
+       "rawhtml-notallowed": "No se pueden emplear las etiquetas &lt;html&gt; si no es en las páginas normales.",
        "gotointerwiki": "Salir de {{SITENAME}}",
-       "gotointerwiki-invalid": "El título especificado no es válido."
+       "gotointerwiki-invalid": "El título especificado no es válido.",
+       "gotointerwiki-external": "Estás a punto de abandonar {{SITENAME}} para visitar [[$2]], un sitio web separado.\n\n[$1 Continuar a $1].",
+       "undelete-cantedit": "No puedes deshacer el borrado de esta página porque no tienes permisos para editarla.",
+       "undelete-cantcreate": "No puedes deshacer el borrado de esta página porque no existe ninguna página con este nombre y no tienes permisos para crearla."
 }
index fabb374..43c1228 100644 (file)
        "redirectedfrom": "(Ümber suunatud leheküljelt $1)",
        "redirectpagesub": "Ümbersuunamisleht",
        "redirectto": "Ümber suunatud lehekülje:",
-       "lastmodifiedat": "Viimane muutmine: $2, $1",
+       "lastmodifiedat": "Selle lehekülje viimane muutmine: $2, $1.",
        "viewcount": "Seda lehekülge on külastatud {{PLURAL:$1|üks kord|$1 korda}}.",
        "protectedpage": "Kaitstud lehekülg",
        "jumpto": "Mine:",
        "nstab-media": "Meedia",
        "nstab-special": "Eri",
        "nstab-project": "Projektileht",
-       "nstab-image": "Pilt",
+       "nstab-image": "Fail",
        "nstab-mediawiki": "Sõnum",
        "nstab-template": "Mall",
        "nstab-help": "Juhend",
        "nowiki_sample": "Sisesta vormindamata tekst",
        "nowiki_tip": "Ignoreeri vikivormindust",
        "image_sample": "Näidis.jpg",
-       "image_tip": "Pilt",
+       "image_tip": "Manusfail",
        "media_sample": "Näidis.ogg",
        "media_tip": "Link failile",
        "sig_tip": "Sinu allkiri ajatempliga",
        "readonlywarning": "<strong>Hoiatus: Andmebaas on lukustatud hooldustöödeks, nii et praegu ei saa parandusi salvestada.</strong>\nVõid teksti hilisemaks kasutamiseks alles hoida tekstifailina.\n\nSüsteemiadministraator, kes andmebaasi lukustas, andis järgmise selgituse: $1",
        "protectedpagewarning": "'''Hoiatus: See lehekülg on lukustatud, nii et ainult administraatori õigustega kasutajad saavad seda redigeerida.'''\nAllpool on toodud uusim logisissekanne:",
        "semiprotectedpagewarning": "'''Märkus:''' See lehekülg on lukustatud, nii et üksnes registreeritud kasutajad saavad seda muuta.\nAllpool on toodud uusim logisissekanne:",
-       "cascadeprotectedwarning": "<strong>Hoiatus:</strong> See lehekülg on nii lukustatud, et ainult administraatori õigustega kasutajad saavad seda redigeerida, sest lehekülg on osa {{PLURAL:$1|järgmisest|järgmistest}} kaskaadkaitsega {{PLURAL:$1|leheküljest|lehekülgedest}}:",
+       "cascadeprotectedwarning": "<strong>Hoiatus:</strong> See lehekülg on nii kaitstud, et ainult [[Special:ListGroupRights|teatud õigustega]] kasutajad saavad seda redigeerida, sest lehekülg on osa {{PLURAL:$1|järgmisest|järgmistest}} kaskaadkaitsega {{PLURAL:$1|leheküljest|lehekülgedest}}:",
        "titleprotectedwarning": "'''Hoiatus: See lehekülg on nii lukustatud, et selle loomiseks on tarvis [[Special:ListGroupRights|eriõigusi]].'''\nAllpool on toodud uusim logisissekanne:",
        "templatesused": "Sellel leheküljel on kasutusel {{PLURAL:$1|järgmine mall|järgmised mallid}}:",
        "templatesusedpreview": "Eelvaates {{PLURAL:$1|kasutatav mall|kasutatavad mallid}}:",
        "userrights-expiry-options": "1 päev:1 day,1 nädal:1 week,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aasta:1 year",
        "userrights-invalid-expiry": "Rühma \"$1\" aegumistähtaeg on vigane.",
        "userrights-expiry-in-past": "Rühma \"$1\" aegumistähtaeg on minevikus.",
-       "userrights-cannot-shorten-expiry": "Rühma \"$1\" aegumistähtaega ei saa varasemale ajale tuua. Ainult kasutajad, kellel on õigus seda rühma lisada ja eemaldada, saavad aegumistähtaegu varsemale ajale tuua.",
+       "userrights-cannot-shorten-expiry": "Rühma \"$1\" kuulumise aegumistähtaega ei saa varasemale ajale tuua. Ainult kasutajad, kellel on õigus seda rühma lisada ja eemaldada, saavad aegumistähtaegu varsemale ajale tuua.",
        "userrights-conflict": "Kasutajaõiguste muutmise konflikt! Palun vaata oma muudatused üle ja kinnita need.",
        "group": "Rühm:",
        "group-user": "Kasutajad",
        "minlength1": "Failinimes peab olema vähemalt üks täht.",
        "illegalfilename": "Failinimi \"$1\" sisaldab märke, mis pole pealkirjades lubatud. Palun nimeta fail ümber ja proovi uuesti.",
        "filename-toolong": "Failinimed ei või olla pikemad kui 240 baiti.",
-       "badfilename": "Pildi nimi on muudetud. Uus nimi on \"$1\".",
+       "badfilename": "Failinimi on muudetud. Uus nimi on \"$1\".",
        "filetype-mime-mismatch": "Faililaiend \".$1\" ei vasta faili ($2) MIME tüübile.",
        "filetype-badmime": "MIME tüübiga \"$1\" faile ei ole lubatud üles laadida.",
        "filetype-bad-ie-mime": "Seda faili ei saa üles laadida, sest Internet Explorer avastaks, et selle MIME tüüp on \"$1\", mis on keelatud või võimalik ohtlik failitüüp.",
        "listfiles_search_for": "Nimeotsing:",
        "listfiles-userdoesnotexist": "Kasutajakonto \"$1\" pole registreeritud.",
        "imgfile": "fail",
-       "listfiles": "Piltide loend",
+       "listfiles": "Failide loend",
        "listfiles_thumb": "Pisipilt",
        "listfiles_date": "Kuupäev",
        "listfiles_name": "Nimi",
        "listfiles-latestversion": "Praegune versioon",
        "listfiles-latestversion-yes": "Jah",
        "listfiles-latestversion-no": "Ei",
-       "file-anchor-link": "Pilt",
+       "file-anchor-link": "Fail",
        "filehist": "Faili ajalugu",
        "filehist-help": "Klõpsa kuupäeva ja kellaaega, et näha sel ajahetkel kasutusel olnud failiversiooni.",
        "filehist-deleteall": "kustuta kõik",
        "imagelinks": "Failikasutus",
        "linkstoimage": "Sellele failile {{PLURAL:$1|viitab järgmine lehekülg|viitavad järgmised $1 leheküljed}}:",
        "linkstoimage-more": "Sellele failile viitab enam kui {{PLURAL:$1|üks lehekülg|$1 lehekülge}}.\nJärgmises loendis on näidatud ainult {{PLURAL:$1|esimene viitav lehekülg|esimesed $1 viitavat lehekülge}}.\n[[Special:WhatLinksHere/$2|Kogu loetelu]] on saadaval.",
-       "nolinkstoimage": "Sellele pildile ei viita ükski lehekülg.",
+       "nolinkstoimage": "Sellele failile ei viita ükski lehekülg.",
        "morelinkstoimage": "Vaata [[Special:WhatLinksHere/$1|veel linke]], mis sellele failile viitavad.",
        "linkstoimage-redirect": "$1 (failiümbersuunamine) $2",
        "duplicatesoffile": "{{PLURAL:$1|Järgmine fail|Järgmised $1 faili}} on selle faili {{PLURAL:$1|duplikaat|duplikaadid}} ([[Special:FileDuplicateSearch/$2|üksikasjad]]):",
        "post-expand-template-inclusion-category-desc": "Kõigi mallide hõrendamise järel on lehekülg suurem kui <code>$wgMaxArticleSize</code>, mistõttu jäid mõned mallid hõrendamata.",
        "post-expand-template-argument-category-desc": "Malli argumendi (midagi kolmekordsete looksulgude vahel, näiteks <code>{{{Foo}}}</code>) hõrendamise järel on lehekülg suurem kui <code>$wgMaxArticleSize</code>.",
        "expensive-parserfunction-category-desc": "Lehekülg kasutab liiga palju kulukaid parserifunktsioone nagu <code>#ifexist</code>. Vaata [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit dokumentatsiooni].",
-       "broken-file-category-desc": "Leheküljel on katkine pildilink, millega manustatakse fail, mida pole olemas.",
+       "broken-file-category-desc": "Leheküljel on katkine faililink, millega manustatakse fail, mida pole olemas.",
        "hidden-category-category-desc": "Selle kategooria leheküljel on <code><nowiki>__HIDDENCAT__</nowiki></code>, mis vaikimisi ei lase näidata seda kategooriat lehekülgedel kategoorialinkide kastis.",
        "trackingcategories-nodesc": "Kirjeldus puudub.",
        "trackingcategories-disabled": "Kategooria on keelatud.",
        "enotif_body_intro_restored": "$2 taastas {{GRAMMAR:genitive|{{SITENAME}}}} lehekülje $1 kuupäeval $PAGEEDITDATE. Vaata lehekülje praegust redaktsiooni aadressil $3.",
        "enotif_body_intro_changed": "$2 muutis {{GRAMMAR:genitive|{{SITENAME}}}} lehekülge $1 kuupäeval $PAGEEDITDATE. Vaata lehekülje praegust redaktsiooni aadressil $3.",
        "enotif_lastvisited": "Kõigi sinu viimase külastuse järel tehtud muudatuste nägemiseks vaata: $1.",
-       "enotif_lastdiff": "Muudatus on leheküljel $1.",
+       "enotif_lastdiff": "Et seda muudatust näha, vaata: $1.",
        "enotif_anon_editor": "anonüümne kasutaja $1",
        "enotif_body": "Lugupeetud $WATCHINGUSERNAME\n\n$PAGEINTRO $NEWPAGE\n\nRedigeerija resümee: $PAGESUMMARY $PAGEMINOREDIT\n\nRedigeerijaga ühenduse võtmine:\ne-post: $PAGEEDITOR_EMAIL\nviki: $PAGEEDITOR_WIKI\n\nSeni kuni sa sisselogituna seda lehekülge ei külasta, selle leheküljega seotud toimingute kohta sulle uusi teavituse e-kirju ei saadeta. Jälgimisloendis saaksid kõigi jälgitavate lehekülgedega seotud teavitussätted ka lähtestada.\n\nAbivalmilt\n{{GRAMMAR:genitive|{{SITENAME}}}} teavitussüsteem\n\n--\nE-kirjatsi saabuvate teavituste sätteid saad muuta leheküljel\n{{canonicalurl:{{#special:Preferences}}}}.\n\nOma jälgimisloendi sätete muutmiseks mine leheküljele\n{{canonicalurl:Special:Watchlist/edit}}.\n\nLehekülje kustutamiseks jälgimisloendist mine leheküljele $UNWATCHURL.\n\nTagasiside ja abi:\n$HELPPAGE",
        "created": "loonud lehekülje",
        "sp-contributions-uploads": "üleslaadimised",
        "sp-contributions-logs": "logid",
        "sp-contributions-talk": "arutelu",
-       "sp-contributions-userrights": "kasutajaõiguste muutmine",
+       "sp-contributions-userrights": "{{GENDER:$1|kasutajaõiguste}} haldus",
        "sp-contributions-blocked-notice": "See kasutaja on parajasti blokeeritud. Allpool on toodud kõige hilisem blokeerimislogi sissekanne:",
        "sp-contributions-blocked-notice-anon": "See IP-aadress on parajasti blokeeritud.\nAllpool on toodud viimane blokeerimislogi sissekanne:",
        "sp-contributions-search": "Kaastöö otsimine",
        "unblocked-id": "Blokeerimine $1 on lõpetatud",
        "unblocked-ip": "IP-aadressi [[Special:Contributions/$1|$1]] blokeering on eemaldatud.",
        "blocklist": "Blokeeritud kasutajad",
+       "autoblocklist": "Automaatblokeeringud",
+       "autoblocklist-submit": "Otsi",
+       "autoblocklist-legend": "Automaatblokeeringute loend",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Kohalik automaatblokeering|Kohalikud automaatblokeeringud}}",
+       "autoblocklist-empty": "Automaatblokeeringute loend on tühi.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Muu automaatblokeering|Muud automaatblokeeringud}}",
        "ipblocklist": "Blokeeritud kasutajad",
        "ipblocklist-legend": "Leia blokeeritud kasutaja",
        "blocklist-userblocks": "Peida kontod",
        "tooltip-t-permalink": "Püsilink lehekülje sellele redaktsioonile",
        "tooltip-ca-nstab-main": "Vaata sisulehekülge",
        "tooltip-ca-nstab-user": "Näita kasutaja lehte",
-       "tooltip-ca-nstab-media": "Näita pildi lehte",
+       "tooltip-ca-nstab-media": "Vaata meediafaili lehekülge",
        "tooltip-ca-nstab-special": "See on erilehekülg ja seda ei saa redigeerida.",
        "tooltip-ca-nstab-project": "Näita projekti lehte",
-       "tooltip-ca-nstab-image": "Näita pildi lehte",
+       "tooltip-ca-nstab-image": "Vaata faili lehekülge",
        "tooltip-ca-nstab-mediawiki": "Näita süsteemi sõnumit",
        "tooltip-ca-nstab-template": "Näita malli",
        "tooltip-ca-nstab-help": "Näita abilehte",
        "anonymous": "{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$1|anonüümne kasutaja|anonüümsed kasutajad}}",
        "siteuser": "{{GRAMMAR:genitive|{{SITENAME}}}} kasutaja $1",
        "anonuser": "{{GRAMMAR:genitive|{{SITENAME}}}} anonüümne kasutaja $1",
-       "lastmodifiedatby": "Viimati muutis lehekülge $3 $2 kell $1.",
+       "lastmodifiedatby": "Seda lehekülge muutis viimati $3 ($2, $1).",
        "othercontribs": "Põhineb järgmiste kasutajate kaastööl: $1.",
        "others": "teiste",
        "siteusers": "{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$2|kasutaja|kasutajad}} $1",
        "newimages-user": "IP-aadress või kasutajanimi",
        "newimages-showbots": "Näita robotite üles laaditud faile",
        "newimages-hidepatrolled": "Peida kontrollitud failid",
-       "noimages": "Uusi pilte ei ole.",
+       "noimages": "Uued failid puuduvad.",
        "gallery-slideshow-toggle": "Lülita pisipildid ümber",
        "ilsubmit": "Otsi",
        "bydate": "kuupäeva järgi",
        "htmlform-user-not-valid": "<strong>$1</strong> pole sobiv kasutajanimi.",
        "logentry-delete-delete": "$1 {{GENDER:$2|kustutas}} lehekülje $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|kustutas}} ülekirjutamise teel ümbersuunamise $3",
-       "logentry-delete-restore": "$1 {{GENDER:$2|taastas}} lehekülje $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|taastas}} lehekülje $3 ($4)",
+       "restore-count-revisions": "{{PLURAL:$1|üks redaktsioon|$1 redaktsiooni}}",
+       "restore-count-files": "{{PLURAL:$1|üks fail|$1 faili}}",
        "logentry-delete-event": "$1 {{GENDER:$2|muutis}} leheküljel $3 {{PLURAL:$5|ühe|$5}} logisündmuse nähtavust: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|muutis}} leheküljel $3 {{PLURAL:$5|ühe|$5}} redaktsiooni nähtavust: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|muutis}} leheküljel $3 logisündmuste nähtavust",
        "restrictionsfield-label": "Lubatud IP-aadressivahemikud:",
        "restrictionsfield-help": "Üks IP-aadress või CIDR-vahemik rea kohta. Et lubada kõik, kasuta järgmist süntaksit:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "redaktsioon $1",
-       "pageid": "lehekülje identifikaator $1"
+       "pageid": "lehekülje identifikaator $1",
+       "undelete-cantedit": "Sa ei saa seda lehekülge taastada, sest sul pole lubatud seda lehekülge redigeerida.",
+       "undelete-cantcreate": "Sa ei saa seda lehekülge taastada, sest sellise pealkirjaga lehekülg puudub ja sul pole lubatud seda lehekülge alustada."
 }
index 8d94599..0ac3fdd 100644 (file)
        "redirectedfrom": "($1(e)tik birzuzenduta)",
        "redirectpagesub": "Birbideratze orria",
        "redirectto": "Hona birzuzentzen du:",
-       "lastmodifiedat": "Orrialdearen azken aldaketa: $2, $1.",
+       "lastmodifiedat": "Orrialdearen azken aldaketa: $1, $2.",
        "viewcount": "Orrialde hau {{PLURAL:$1|behin|$1 aldiz}} bisitatu da.",
        "protectedpage": "Babestutako orrialdea",
        "jumpto": "Hona jo:",
        "changepassword-throttled": "Saioa hasteko saiakera gehiegi egin berri dituzu.\nBerriro saiatu aurretik $1 itxoin, mesedez.",
        "botpasswords": "Bot pasahitzak",
        "botpasswords-disabled": "Bot pasahitzak desgaituak daude.",
+       "botpasswords-existing": "Dauden bot-en pasahitzak",
        "botpasswords-label-appid": "Bot izena:",
        "botpasswords-label-create": "Sortu",
        "botpasswords-label-update": "Eguneratu",
        "botpasswords-label-grants-column": "Baimenduta",
        "botpasswords-bad-appid": "Bot horren \"$1\" izen hori ez da baliagarria.",
        "botpasswords-insert-failed": "Ezin izan da bot \"$1\" izen hori gehitu. Dagoeneko gehituta zegoen?",
+       "botpasswords-created-title": "Botaren pasahitza sortu da",
+       "botpasswords-updated-title": "Botaren pasahitza eguneratu da",
+       "botpasswords-deleted-title": "Botaren pasahitza ezabatu da",
        "resetpass_forbidden": "Ezin dira pasahitzak aldatu",
+       "resetpass_forbidden-reason": "Ezin dira pasahitzak aldatu: $1",
        "resetpass-no-info": "Orrialde honetara zuzenean sartzeko izena eman behar duzu.",
        "resetpass-submit-loggedin": "Pasahitza aldatu",
        "resetpass-submit-cancel": "Utzi",
        "search-redirect": "(«$1» orritik birbideratua)",
        "search-section": "($1 atala)",
        "search-category": "($1 kategoria)",
+       "search-file-match": "(fitxategiaren edukiarekin bat dator)",
        "search-suggest": "$1 esan nahi zenuen",
        "search-interwiki-caption": "Beste proiektuak",
        "search-interwiki-default": "$1(r)en emaitzak:",
        "search-interwiki-more": "(gehiago)",
+       "search-interwiki-more-results": "emaitza gehiago",
        "search-relatedarticle": "Erlazionatua",
        "searchrelated": "erlazionatua",
        "searchall": "guztia",
        "userrights-nodatabase": "$1 datubasea ez da existitzen edo ez dago lokalki.",
        "userrights-changeable-col": "Alda ditzakezun taldeak",
        "userrights-unchangeable-col": "Aldatu ezin ditzakezun taldeak",
+       "userrights-expiry-options": "Egun 1:Egun 1,Aste 1:Aste 1,Hilabete 1:Hilabete 1,3 hilabete:3 hilabete,6 hilabete:6 hilabete,Urte 1:Urte 1",
        "userrights-conflict": "Gatazka gertatu da erabiltzaile eskubideak aldatzean. Mesedez, berrikusi eta baieztatu zure aldaketak.",
        "group": "Taldea:",
        "group-user": "Erabiltzaileak",
        "right-sendemail": "Beste erabiltzaileei e-posta bidali",
        "grant-group-email": "E-posta bidali",
        "grant-createaccount": "Kontuak sortu",
+       "grant-createeditmovepage": "Orrialdeak sortu, aldatu eta mugitu",
        "grant-editmycssjs": "Zure CSS/JavaScript aldatu",
        "grant-editmyoptions": "Aldatu zure hobespenak",
        "grant-editmywatchlist": "Zure jarraipen zerrenda aldatu",
+       "grant-editpage": "Aldatu dauden orrialdeak",
        "grant-editprotected": "Babestutako orriak aldatu",
        "grant-patrol": "Orrietako aldaketa patruilatu",
        "grant-protect": "Orriak babestu eta babesgabetu",
+       "grant-sendemail": "Bidali mezu elektronikoa beste erabiltzailei",
+       "grant-uploadeditmovefile": "Fitxategiak igo, ordeztu eta mugitu",
        "grant-uploadfile": "Fitxategi berriak igo",
        "grant-basic": "Oinarrizko baimenak",
        "grant-viewdeleted": "Ikusi ezabatutako fitxategiak eta orriak",
        "action-viewmyprivateinfo": "zure informazio pribatua ikusi",
        "action-editmyprivateinfo": "zure informazio pribatua aldatu",
        "action-managechangetags": "Etiketak sortu eta (des)aktibatu",
+       "action-deletechangetags": "ezabatu etiketak datu-basetik",
        "nchanges": "{{PLURAL:$1|aldaketa 1|$1 aldaketa}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|azkeneko bisitatik}}",
        "enhancedrc-history": "historia",
        "recentchanges-legend-heading": "<strong>Azalpenak:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ikus, gainera, [[Special:NewPages|orri berrien zerrenda]])",
        "recentchanges-submit": "Erakutsi",
+       "rcfilters-activefilters": "Iragazki aktiboak",
+       "rcfilters-restore-default-filters": "Leheneratu iragazki lehenetsiak",
+       "rcfilters-clear-all-filters": "Iragazki guztiak garbitu",
+       "rcfilters-search-placeholder": "Aldaketa berriak iragazi (nabigatu ala idatzi)",
        "rcfilters-filterlist-title": "Iragazkiak",
-       "rcfilters-filtergroup-authorship": "Edizioaren egiletza",
+       "rcfilters-filterlist-whatsthis": "Zer da hau?",
+       "rcfilters-highlightbutton-title": "Nabarmendu emaitzak",
+       "rcfilters-highlightmenu-title": "Hautatu kolore bat",
+       "rcfilters-filterlist-noresults": "Ez da iragazkirik aurkitu",
+       "rcfilters-filter-registered-label": "Erregistratuak",
+       "rcfilters-filter-unregistered-label": "Ez erregistratuak",
+       "rcfilters-filtergroup-authorship": "Ekarpenaren egiletza",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Iritsiberriak",
+       "rcfilters-filter-user-experience-level-learner-label": "Ikasten",
+       "rcfilters-filter-user-experience-level-experienced-label": "Erabiltzaile trebatuak",
+       "rcfilters-filter-user-experience-level-experienced-description": "30 eguneko jarduera eta 500 aldaketa baino gehiago.",
+       "rcfilters-filtergroup-automated": "Automatizatutako ekarpenak",
        "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Tresna automatizatuekin egindako aldaketak.",
+       "rcfilters-filter-humans-label": "Gizaki (ez bot)",
+       "rcfilters-filter-humans-description": "Gizaki editoreek egindako aldaketak.",
+       "rcfilters-filtergroup-reviewstatus": "Berrikuspenaren egoera",
+       "rcfilters-filtergroup-significance": "Munta",
        "rcfilters-filter-minor-label": "Aldaketa txikiak",
+       "rcfilters-filter-major-label": "Aldaketa ez Txikiak",
+       "rcfilters-filtergroup-changetype": "Aldaketa mota",
+       "rcfilters-filter-pageedits-label": "Orrialde aldaketak",
+       "rcfilters-filter-newpages-label": "Orrialde berriak",
+       "rcfilters-filter-categorization-label": "Kategoria aldaketak",
+       "rcfilters-filter-logactions-label": "Erregistratutako ekintzak",
        "rcnotefrom": "Jarraian azaltzen diren {{PLURAL:$5|aldaketak}} data honetatik aurrerakoak dira: <strong>$3,$4</strong> (gehienez <b>$1</b> erakusten dira).",
        "rclistfrom": "Erakutsi $3 $2 ondorengo aldaketa berriak",
        "rcshowhideminor": "$1 aldaketa txikiak",
        "recentchangeslinked-page": "Orriaren izena:",
        "recentchangeslinked-to": "Lotutako orrietarako aldaketak erakutsi emandako orriaren ordez",
        "recentchanges-page-added-to-category": "[[:$1]] Kategoriara gehitua",
+       "recentchanges-page-removed-from-category": "[[:$1]] kategoriatik kendu da",
        "autochange-username": "MediaWiki aldaketa automatikoa",
        "upload": "Fitxategia igo",
        "uploadbtn": "Fitxategia igo",
        "activeusers": "Lankide aktiboen zerrenda",
        "activeusers-count": "{{PLURAL:$1|Ekintza berri bat|$1 ekintza berri}} azken {{PLURAL:$3|egunean|$3 egunetan}}",
        "activeusers-from": "Bilatu honela hasten diren lankideak:",
+       "activeusers-groups": "Erakutsi kategoria hauetako erabiltzaileak:",
+       "activeusers-excludegroups": "Alde batera utzi kategoria hauetako erabiltzaileak:",
        "activeusers-noresult": "Ez da lankiderik aurkitu.",
+       "activeusers-submit": "Erakutsi erabiltzaile aktiboak",
        "listgrouprights": "Erabiltzaile talde eskumenak",
        "listgrouprights-summary": "Ondorengo zerrendak wikian dauden lankide taldeak agertzen dira, beraien eskubideekin.\nBadago [[{{MediaWiki:Listgrouprights-helppage}}|informazio osagarria]] banakako eskubideei buruz.",
        "listgrouprights-key": "Legenda\n* <span class=\"listgrouprights-granted\">Eskubidea emanda</span>\n* <span class=\"listgrouprights-revoked\">Eskubidea kenduta</span>",
        "unblocked-id": "$1 blokeaketa ezabatu da",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] desblokeatua izan da.",
        "blocklist": "Blokeatutako erabiltzaileak",
+       "autoblocklist": "Blokeo automatikoak",
+       "autoblocklist-submit": "Bilatu",
+       "autoblocklist-legend": "Blokeo automatikoen zerrenda erakutsi",
+       "autoblocklist-empty": "Blokeo automatikoen zerrenda hutsik dago.",
        "ipblocklist": "Blokeatutako erabiltzaileak",
        "ipblocklist-legend": "Blokeatutako erabiltzaile bat bilatu",
        "blocklist-userblocks": "Ezkutatu kontu-blokeatzeak",
        "movenotallowedfile": "Ez duzu fitxategiak mugitzeko eskumenik.",
        "cant-move-user-page": "Ez duzu lankide orrialdeak mugitzeko eskumenik (azpiorrialdeetatik at).",
        "cant-move-to-user-page": "Ez duzu orrialde bat lankide orrialde batera mugitzeko eskumenik (lankide azpiorrialde batera izan ezik).",
+       "cant-move-category-page": "Ez duzu kategoria orrialdeak mugitzeko baimenik.",
        "cant-move-to-category-page": "Ez duzu baimenik orrialde bat kategoria-orrialde batera mugitzeko.",
+       "cant-move-subpages": "Ez duzu azpiorrialdeak mugitzeko baimenik.",
        "newtitle": "Izenburu berria:",
        "move-watch": "Orrialde hau jarraitu",
        "movepagebtn": "Mugitu orria",
        "newimages-summary": "Orrialde berezi honek igotako azkeneko fitxategiak erakusten ditu.",
        "newimages-legend": "Iragazkia",
        "newimages-label": "Fitxategia (edo bere zati bat):",
+       "newimages-user": "IP helbidea edo erabiltzaile-izena",
        "newimages-showbots": "Erakutsi botek igotako fitxategiak",
        "noimages": "Ez dago ezer ikusteko.",
        "ilsubmit": "Bilatu",
        "htmlform-user-not-valid": "<strong>$1</strong> erabiltzaile izena ezin da erabili.",
        "logentry-delete-delete": "$1 {{GENDER:$2|wikilariak}} «$3» orria ezabatu du",
        "logentry-delete-restore": "$1 administratzaileak «$3» orria {{GENDER:$2|lehengoratu}} du",
+       "restore-count-files": "{{PLURAL:$1|Fitxategi 1|$1 fitxategi}}",
        "logentry-delete-event": "$1 wikilariak ikusgaitasuna {{GENDER:$2|aldatu}} {{PLURAL:$5|dio erregistroko sarrera bati|die erregistroko $5 sarrerari}}, $3 orrian: $4",
        "logentry-delete-revision": "$1 erabiltzaileak {{PLURAL:$5|berrikuste baten|$5 berrikusteren}} ikusgaitasuna aldatu du «$3» orrian: $4",
        "logentry-suppress-delete": "$1 erabiltzaileak $3 orria {{GENDER:$2|ezabatu}} du",
        "special-characters-title-emdash": "em lerroa",
        "special-characters-title-minus": "minus zeinua",
        "mw-widgets-dateinput-no-date": "Ez duzu datarik aukeratu",
+       "mw-widgets-mediasearch-noresults": "Ez da emaitzarik aurkitu.",
        "mw-widgets-titleinput-description-new-page": "orri hori oraindik ez da existitzen",
        "mw-widgets-titleinput-description-redirect": "$1ra birzuzendu",
+       "mw-widgets-categoryselector-add-category-placeholder": "Gehitu kategoria bat...",
+       "mw-widgets-usersmultiselect-placeholder": "Gehitu gehiago...",
        "sessionprovider-generic": "$1 sesio",
        "log-action-filter-block": "Blokeatze mota:",
        "log-action-filter-delete": "Ezabatze mota:",
        "log-action-filter-block-unblock": "blokeoa kendu",
        "log-action-filter-delete-revision": "Berrikuspen ezabaketa",
        "log-action-filter-import-interwiki": "Transwiki inportazioa",
+       "log-action-filter-import-upload": "Inportatu XML igoera bidez",
        "log-action-filter-managetags-create": "Etiketa sorkuntza",
        "log-action-filter-managetags-delete": "Etiketa ezabaketa",
        "log-action-filter-managetags-activate": "Etiketa aktibazioa",
        "log-action-filter-managetags-deactivate": "Etiketa desaktibazioa",
+       "log-action-filter-upload-upload": "Igoera berria",
        "authmanager-userdoesnotexist": "\"$1\" erabiltzaile kontua ez dago erregistratua.",
        "authmanager-email-label": "Emaila",
        "authmanager-email-help": "Helbide elektronikoa",
        "authmanager-realname-help": "Erabiltzailearen benetako izena",
        "authprovider-resetpass-skip-label": "Utzi",
        "authform-wrongtoken": "Token okerra",
-       "credentialsform-account": "Kontuaren izena:"
+       "credentialsform-account": "Kontuaren izena:",
+       "gotointerwiki": "{{SITENAME}}(e)tik irteten"
 }
index 56b95e1..58ea6c5 100644 (file)
        "page_last": "واپسین",
        "histlegend": "انتخاب تفاوت: دکمه‌های گرد کنار ویرایش‌هایی که می‌خواهید با هم مقایسه کنید را علامت بزنید و دکمهٔ Enter را بزنید یا دکمهٔ پایین را فشار دهید.<br />\nاختصارات: '''({{int:cur}})''' = تفاوت با نسخهٔ فعلی، '''({{int:last}})''' = تفاوت با نسخهٔ قبلی، '''({{int:minoreditletter}})''' = ویرایش جزئی.",
        "history-fieldset-title": "جستجو برای نسخه‌ها",
-       "history-show-deleted": "فقط حذف‌شدهفقط نسخه‌های حذف شده",
+       "history-show-deleted": "فقط نسخه‌های حذف شده",
        "histfirst": "قدیمی‌ترین",
        "histlast": "جدیدترین",
        "historysize": "({{PLURAL:$1|۱ بایت|$1 بایت}})",
        "rcfilters-filter-unregistered-description": "ویرایشگرانی که به سامانه وارد نشده‌اند.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "این پالایه با {{PLURAL:$2|پالایه|پالایه‌های}} تجربهٔ زیر که فقط کاربران ثبت‌نام شده را {{PLURAL:$2|می‌یابد|می‌یابند}} تعارض دارد: $1",
        "rcfilters-filtergroup-authorship": "ویرایشگر",
-       "rcfilters-filter-editsbyself-label": "ویرایش‌های خودتان",
+       "rcfilters-filter-editsbyself-label": "تغییریافته توسط شما",
        "rcfilters-filter-editsbyself-description": "ویرایش‌های شما.",
-       "rcfilters-filter-editsbyother-label": "ویرایش‌های دیگران",
-       "rcfilters-filter-editsbyother-description": "Ù\88Û\8cراÛ\8cØ´â\80\8cÙ\87اÛ\8c Ø§Û\8cجاد Ø´Ø¯Ù\87 ØªÙ\88سط Ø¯Û\8cگر Ú©Ø§Ø±Ø¨Ø±Ø§Ù\86 (Ù\86Ù\87 Ø´Ù\85ا).",
+       "rcfilters-filter-editsbyother-label": "تغییریافته توسط دیگران",
+       "rcfilters-filter-editsbyother-description": "Ù\87Ù\85Ù\87Ù\94 ØªØºÛ\8cÛ\8cرات Ø¨Ù\87 Ø¬Ø² ØªØºÛ\8cÛ\8cرات Ø´Ù\85ا.",
        "rcfilters-filtergroup-userExpLevel": "درجهٔ تجربه (فقط برای کاربران ثبت‌نام کرده)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "پالایه‌های تجربه فقط کاربران ثبت‌نام کرده را پیدا می‌کنند، در نتیجه با پالایهٔ «کاربران ثبت‌نام نکرده» تعارض دارند.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "پالایه «کاربران ثبت‌نام نکرده» با یک یا چند مورد از پالایه‌های تجربه در تعارض است. پالایه‌های دیگر در قسمت «پالایه‌های فعال» در بالا نشان داده شده‌اند.",
        "tooltip-pt-mycontris": "فهرست مشارکت‌های {{GENDER:|شما}}",
        "tooltip-pt-anoncontribs": "فهرست ویرایش‌ها انجام شده از این نشانی آی‌پی",
        "tooltip-pt-login": "توصیه می‌شود که به سامانه وارد شوید، گرچه اجباری نیست",
+       "tooltip-pt-login-private": "برای استفاده از این ویکی نیاز است که به سامانه وارد شوید",
        "tooltip-pt-logout": "خروج از سامانه",
        "tooltip-pt-createaccount": "از شما دعوت می‌شود که حساب کاربری بسازید و به سامانه وارد شوید؛ هرچند که ساخت حساب کاربری اختیاری است.",
        "tooltip-ca-talk": "گفتگو پیرامون محتوای صفحه",
index 514df7d..d4adfd7 100644 (file)
        "password-login-forbidden": "Tämän käyttäjänimen ja salasanan käyttö on estetty.",
        "mailmypassword": "Hanki uusi salasana",
        "passwordremindertitle": "Uusi väliaikainen salasana {{GRAMMAR:elative|{{SITENAME}}}}",
-       "passwordremindertext": "Joku IP-osoitteesta $1 pyysi {{GRAMMAR:partitive|{{SITENAME}}}} ($4) lähettämään uuden salasanan. Väliaikainen salasana käyttäjälle $2 on nyt $3. Kirjaudu sisään ja vaihda salasana. Väliaikainen salasana vanhenee {{PLURAL:$5|yhden päivän|$5 päivän}} kuluttua.\n\nJos joku muu on tehnyt tämän pyynnön, tai jos olet muistanut salasanasi ja et halua vaihtaa sitä, voit jättää tämän viestin huomiotta ja jatkaa vanhan salasanan käyttöä.",
+       "passwordremindertext": "Joku IP-osoitteesta $1 pyysi {{GRAMMAR:partitive|{{SITENAME}}}} ($4) lähettämään uuden salasanan. Väliaikainen salasana käyttäjälle $2 on nyt $3. Kirjaudu sisään ja vaihda salasana. Väliaikainen salasana vanhentuu {{PLURAL:$5|yhden päivän|$5 päivän}} kuluttua.\n\nJos joku muu on tehnyt tämän pyynnön, tai jos olet muistanut salasanasi ja et halua vaihtaa sitä, voit jättää tämän viestin huomiotta ja jatkaa vanhan salasanan käyttöä.",
        "noemail": "Käyttäjälle $1 ei ole määritelty sähköpostiosoitetta.",
        "noemailcreate": "Sinun on annettava voimassa oleva sähköpostiosoite",
        "passwordsent": "Uusi salasana on lähetetty käyttäjän <b>$1</b> sähköpostiosoitteeseen.\nOle hyvä ja kirjaudu sisään kun olet saanut sen.",
        "resetpass-expired": "Salasanasi on vanhentunut. Valitse uusi salasana, jotta pääset kirjautumaan sisään.",
        "resetpass-expired-soft": "Salasanasi on vanhentunut ja se pitää uudistaa. Valitse uusi salasana nyt tai paina \"{{int:authprovider-resetpass-skip-label}}\", niin voit uudistaa salasanan myöhemmin.",
        "resetpass-validity-soft": "Salasanasi ei ole kelvollinen: $1\n\nValitse nyt uusi salasana tai paina \"{{int:authprovider-resetpass-skip-label}}\", niin voit vaihtaa sen myöhemmin.",
-       "passwordreset": "Salasanan palauttaminen",
+       "passwordreset": "Salasanan uusiminen",
        "passwordreset-text-one": "Täytä tämä lomake uudistaaksesi salasanasi.",
        "passwordreset-text-many": "{{PLURAL:$1|Täytä yksi seuraavista kentistä, jolloin saat väliaikaisen salasanan sähköpostitse.}}",
        "passwordreset-disabled": "Salasanojen uudistaminen ei ole mahdollista tässä wikissä.",
        "saveusergroups": "Tallenna {{GENDER:$1|käyttäjän}} ryhmät",
        "userrights-groupsmember": "Jäsenenä ryhmissä:",
        "userrights-groupsmember-auto": "Automaattisesti jäsenenä ryhmissä:",
-       "userrights-groups-help": "Voit muuttaa ryhmiä, joissa tämä käyttäjä on.\n* Merkattu valintaruutu tarkoittaa, että käyttäjä on kyseisessä ryhmässä.\n* Merkkaamaton valintaruutu tarkoittaa, että käyttäjä ei ole kyseisessä ryhmässä.\n* <nowiki>*</nowiki> tarkoittaa, että et pysty poistamaan ryhmää, kun olet sen lisännyt tai päinvastoin.\n* # tarkoittaa että voit vain asettaa tämän ryhmän jäsenyyden päättymisajan takaisin; et voi tuoda sitä eteenpäin.",
+       "userrights-groups-help": "Voit muuttaa ryhmiä, joissa tämä käyttäjä on.\n* Merkattu valintaruutu tarkoittaa, että käyttäjä on kyseisessä ryhmässä.\n* Merkkaamaton valintaruutu tarkoittaa, että käyttäjä ei ole kyseisessä ryhmässä.\n* <nowiki>*</nowiki> tarkoittaa, että et pysty poistamaan ryhmää, kun olet sen lisännyt tai päinvastoin.\n* # tarkoittaa että voit vain siirtää tämän ryhmän jäsenten vanhentumisaikaa menneisyyttä kohti etkä lisätä aikaa.",
        "userrights-reason": "Syy:",
        "userrights-no-interwiki": "Sinulla ei ole oikeutta muokata käyttöoikeuksia muissa wikeissä.",
        "userrights-nodatabase": "Tietokantaa $1 ei ole tai se ei ole paikallinen.",
        "userrights-changeable-col": "Ryhmät, joita voit muuttaa",
        "userrights-unchangeable-col": "Ryhmät, joita et voi muuttaa",
        "userrights-expiry-current": "Vanhentuu $1",
-       "userrights-expiry-none": "Ei vanhene",
+       "userrights-expiry-none": "Ei vanhennu",
        "userrights-expiry": "Vanhentuu:",
        "userrights-expiry-existing": "Nykyinen vanhentumisaika: $2 kello $3",
        "userrights-expiry-othertime": "Muu aika:",
        "rcfilters-activefilters": "Aktiiviset suodattimet",
        "rcfilters-restore-default-filters": "Palauta oletussuodattimet",
        "rcfilters-clear-all-filters": "Tyhjennä kaikki suodattimet",
-       "rcfilters-search-placeholder": "Suodattimen viimeaikaiset muutokset (selaa tai aloita kirjoittaa)",
+       "rcfilters-search-placeholder": "Suodata tuoreita muutoksia (selaa tai aloita kirjoittamaan)",
        "rcfilters-invalid-filter": "Suodatin on epäkelpo",
        "rcfilters-empty-filter": "Ei aktiivisia suodattimia. Kaikki muutokset näytetään.",
        "rcfilters-filterlist-title": "Suodattimet",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|poisti}} ohjaussivun $3 korvaamalla",
        "logentry-delete-restore": "$1 {{GENDER:$2|palautti}} sivun $3 ($4)",
        "logentry-delete-restore-nocount": "$1 {{GENDER:$2|palautti}} sivun $3",
-       "restore-count-revisions": "{{PLURAL:$1|1 versio|$1 versio}}",
+       "restore-count-revisions": "{{PLURAL:$1|1 versio|$1 versiota}}",
        "restore-count-files": "{{PLURAL:$1|1 tiedosto|$1 tiedostoa}}",
        "logentry-delete-event": "$1 {{GENDER:$2|muutti}} {{PLURAL:$5|lokitapahtuman|$5 lokitapahtuman}} näkyvyyttä kohteessa $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|muutti}} {{PLURAL:$5|version|$5 version}} näkyvyyttä sivulla $3: $4",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|päivitti}} merkkauksia kohdeversiossa $4 sivulla $3 ({{PLURAL:$7|lisätty}} $6; {{PLURAL:$9|poistettu}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|päivitti}} merkkauksia lokimerkinnässä $5 sivulla $3 ({{PLURAL:$7|lisätty}} $6; {{PLURAL:$9|poistettu}} $8)",
        "rightsnone": "(ei oikeuksia)",
-       "rightslogentry-temporary-group": "$1 (tilapäinen, $2 asti)",
+       "rightslogentry-temporary-group": "$1 (väliaikainen, $2 asti)",
        "feedback-adding": "Lisätään palautetta sivulle...",
        "feedback-back": "Takaisin",
        "feedback-bugcheck": "Hyvä! Varmista vielä, että ohjelmointivirhettä ei löydy [$1 tunnettujen virheiden luettelosta].",
        "gotointerwiki": "Lähdössä {{GRAMMAR:elative|{{SITENAME}}}}",
        "gotointerwiki-external": "Olet lähdössä {{GRAMMAR:elative|{{SITENAME}}}} toiselle sivustolle [[$2]].\n\n[$1 Paina tästä jatkaaksesi osoitteeseen $1].",
        "undelete-cantedit": "Et voi palauttaa tätä sivua, koska sinulla ei ole oikeutta muokata tätä sivua.",
-       "undelete-cantcreate": "Et voi palauttaa tätä sivua, koska tällä nimellä ei ole olemassaolevaa sivua, eikä sinulla ole oikeutta luoda tätä sivua."
+       "undelete-cantcreate": "Et voi palauttaa tätä sivua, koska tällä nimellä ei ole olemassaolevaa sivua eikä sinulla ole oikeutta luoda tätä sivua."
 }
index 9661a69..7366327 100644 (file)
        },
        "tog-underline": "Soulignement des liens :",
        "tog-hideminor": "Masquer les modifications mineures dans les modifications récentes",
-       "tog-hidepatrolled": "Masquer les modifications relues dans les modifications récentes",
+       "tog-hidepatrolled": "Masquer les modifications vérifiées dans les modifications récentes",
        "tog-newpageshidepatrolled": "Masquer les pages relues dans la liste des nouvelles pages",
        "tog-hidecategorization": "Masquer la catégorisation des pages",
        "tog-extendwatchlist": "Étendre la liste de suivi pour afficher toutes les modifications et pas uniquement les plus récentes",
        "tog-enotifminoredits": "M’avertir par courriel également lors des modifications mineures des pages ou des fichiers",
        "tog-enotifrevealaddr": "Afficher mon adresse électronique dans les courriels de notification",
        "tog-shownumberswatching": "Afficher le nombre d’utilisateurs en cours",
-       "tog-oldsig": "Votre signature existante :",
+       "tog-oldsig": "Votre signature actuelle :",
        "tog-fancysig": "Traiter la signature comme du wikitexte (sans lien automatique)",
        "tog-uselivepreview": "Utiliser l’aperçu rapide",
        "tog-forceeditsummary": "M’avertir lorsque je n’ai pas spécifié de résumé de modification",
        "rcfilters-filter-unregistered-label": "Non connectés",
        "rcfilters-filter-unregistered-description": "Éditeurs qui ne sont pas connectés.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Ce filtre est en conflit avec le{{PLURAL:$2| filtre|s filtres}}      Experience suivant, qui ne {{PLURAL:$2|trouve|trouvent}} que des utilisateurs inscrits : $1",
-       "rcfilters-filtergroup-authorship": "Modifier la paternité",
-       "rcfilters-filter-editsbyself-label": "Vos propres modifications",
-       "rcfilters-filter-editsbyself-description": "Vos modifications.",
-       "rcfilters-filter-editsbyother-label": "Modifications par d’autres.",
-       "rcfilters-filter-editsbyother-description": "Modifications créées par d’autres utilisateurs (pas vous).",
+       "rcfilters-filtergroup-authorship": "Paternité des contributions",
+       "rcfilters-filter-editsbyself-label": "Modifications faites par vous",
+       "rcfilters-filter-editsbyself-description": "Vos propres contributions.",
+       "rcfilters-filter-editsbyother-label": "Modifications faites par les autres.",
+       "rcfilters-filter-editsbyother-description": "Toutes les modifications sauf les votres.",
        "rcfilters-filtergroup-userExpLevel": "Niveau d’expérience (uniquement pour les utilisateurs enregistrés)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Les filtres Experience ne trouvent que des utilisateurs enregistrés, et ce filtre est en conflit avec le filtre \"non enregistré\".",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Le filtre \"non enregistrés\" est en conflit avec un ou plusieurs  filtres Expérience, qui ne trouvent que les utilisateurs inscrits seulement. Les filtres en conflit sont marqués dans le champ des filtres actifs, ci-dessus.",
        "enotif_body_intro_moved": "La page $1 sur {{SITENAME}} a été {{GENDER:$2|renommée}} le $PAGEEDITDATE par $2, voir $3 pour la révision actuelle.",
        "enotif_body_intro_restored": "La page $1 sur {{SITENAME}} a été restaurée le $PAGEEDITDATE par {{GENDER:$2|$2}}, voir $3 pour la révision actuelle.",
        "enotif_body_intro_changed": "La page $1 sur {{SITENAME}} a été {{GENDER:$2|modifiée}} le $PAGEEDITDATE par $2, voir $3 pour la révision actuelle.",
-       "enotif_lastvisited": "Voyez $1 pour tous les changements depuis votre dernière visite.",
-       "enotif_lastdiff": "Voyez $1 pour visualiser ces changements.",
+       "enotif_lastvisited": "Pour tous les changements intervenus depuis votre dernière visite, voyez $1",
+       "enotif_lastdiff": "Pour visualiser ces changements, voyez $1",
        "enotif_anon_editor": "utilisateur non-enregistré $1",
        "enotif_body": "Cher $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nRésumé du contributeur : $PAGESUMMARY $PAGEMINOREDIT\n\nContactez ce contributeur :\ncourriel : $PAGEEDITOR_EMAIL\nwiki : $PAGEEDITOR_WIKI\n\nIl n’y aura pas d’autres notifications en cas de changements ultérieurs, à moins que vous ne visitiez cette page une fois connecté. Vous pouvez aussi réinitialiser les drapeaux de notification pour toutes les pages de votre liste de suivi.\n\nVotre système de notification de {{SITENAME}}\n\n--\nPour modifier les paramètres de notification par courriel, visitez\n{{canonicalurl:{{#special:Preferences}}}}\n\nPour modifier les paramètres de votre liste de suivi, visitez\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPour supprimer la page de votre liste de suivi, visitez\n$UNWATCHURL\n\nRetour et assistance :\n$HELPPAGE",
        "created": "créée",
        "confirm-purge-title": "Détruire cette page",
        "confirm_purge_button": "Confirmer",
        "confirm-purge-top": "Voulez-vous rafraîchir cette page (purger le cache) ?",
-       "confirm-purge-bottom": "Purger une page l’efface du cache de rendu et force sa dernière version à être régénérée et affichée.",
+       "confirm-purge-bottom": "Purger une page l’efface du cache et force sa dernière version à être affichée.",
        "confirm-watch-button": "Valider",
        "confirm-watch-top": "Ajouter cette page à votre liste de suivi ?",
        "confirm-unwatch-button": "Valider",
index bcc0820..b3cdeac 100644 (file)
        "rcfilters-filter-unregistered-label": "Non rexistrado",
        "rcfilters-filter-unregistered-description": "Editores que non están autenticados.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Este filtro está en conflito {{PLURAL:$2|co seguinte filtro|cos seguintes filtros}} Experience, que {{PLURAL:$2|atopa|atopan}} só usuarios rexistradosː $1",
-       "rcfilters-filtergroup-authorship": "Editar autoría",
-       "rcfilters-filter-editsbyself-label": "As súas propias edicións",
-       "rcfilters-filter-editsbyself-description": "Edicións súas.",
-       "rcfilters-filter-editsbyother-label": "Edicións doutros.",
-       "rcfilters-filter-editsbyother-description": "Edicións creadas por outros usuarios (non por vostede).",
+       "rcfilters-filtergroup-authorship": "Autoría da contribución",
+       "rcfilters-filter-editsbyself-label": "Cambios seus",
+       "rcfilters-filter-editsbyself-description": "As súas contribucións",
+       "rcfilters-filter-editsbyother-label": "Modificacións doutros.",
+       "rcfilters-filter-editsbyother-description": "Tódolos cambios, excepto os seus.",
        "rcfilters-filtergroup-userExpLevel": "Nivel de experiencia (só para usuarios rexistrados)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Os filtros Experience só atopan usuarios rexistrados, polo que este filtro está en conflito co filtro \"non rexistrado\".",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "O filtro \"non rexistrados\" está en conflito cun ou máis filtros Experience, que só atopan usuarios rexistrados. Os filtros en conflito están marcados na área dos filtros activos, arriba.",
        "enotif_body_intro_moved": "{{GENDER:$2|$2}} trasladou a páxina chamada \"$1\" en {{SITENAME}} o $PAGEEDITDATE. Consulte $3 para ver a revisión actual.",
        "enotif_body_intro_restored": "{{GENDER:$2|$2}} restaurou a páxina chamada \"$1\" en {{SITENAME}} o $PAGEEDITDATE. Consulte $3 para ver a revisión actual.",
        "enotif_body_intro_changed": "{{GENDER:$2|$2}} modificou a páxina chamada \"$1\" en {{SITENAME}} o $PAGEEDITDATE. Consulte $3 para ver a revisión actual.",
-       "enotif_lastvisited": "Consulte $1 para comprobar todos os cambios feitos desde a súa última visita.",
-       "enotif_lastdiff": "Consulte $1 para ver esta modificación.",
+       "enotif_lastvisited": "Consulte $1 para ver tódolos cambios desde a súa última visita",
+       "enotif_lastdiff": "Consulte $1 para ver este cambio",
        "enotif_anon_editor": "usuario anónimo $1",
        "enotif_body": "Boas, $WATCHINGUSERNAME:\n\n$PAGEINTRO $NEWPAGE\n\nResumo de edición: $PAGESUMMARY $PAGEMINOREDIT\n\nPode contactar co editor:\npor correo electrónico: $PAGEEDITOR_EMAIL\nno wiki: $PAGEEDITOR_WIKI\n\nNon se producirán máis notificacións en caso de que haxa actividade nova ata que acceda ao sistema e visite a páxina. Pode restablecer os indicadores de aviso de notificación para o conxunto das páxinas marcadas na súa lista de vixilancia.\n\nO sistema de avisos de {{SITENAME}}\n\n--\nPara cambiar as notificacións por correo electrónico, visite\n{{canonicalurl:{{#special:Preferences}}}}\n\n\nPara cambiar a súa lista de vixilancia, visite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPara borrar a páxina da súa lista de vixilancia, visite\n$UNWATCHURL\n\nAxuda:\n$HELPPAGE",
        "created": "creada",
index 269cb93..65a720d 100644 (file)
        "tog-underline": "Garisiyi totibawa wumbuta",
        "tog-hideminor": "Wanto'a u biloli'a ngo'idi to'u lobohuwa",
        "tog-hidepatrolled": "Wanto'a u biloli'a lo patroli to'u lobohuwa",
-       "tog-newpageshidepatrolled": "Wanto'a halaamani patroli lonto daputari halaamani bohu",
-       "tog-hidecategorization": "Wanto'a tayadu halaamani",
-       "tog-extendwatchlist": "Duhengi daputari he'awasiyalo u mopobilohu nga'amila ulo ubawa, dila bo ubohu",
-       "tog-usenewrc": "Popotayade u iluba to bibilohu lu'ubawa baharu wawu daputari he awasiyalo berdasarkan halaamani",
+       "tog-newpageshidepatrolled": "Wanto'a halaman patroli lonto daputari halaman bohu",
+       "tog-hidecategorization": "Wanto'a tayadu halaman",
+       "tog-extendwatchlist": "Bu'ade daputari he'awasiyalo mopobilohu nga'amila u loboli'a, diila bo ubohu",
+       "tog-usenewrc": "Tayade u biloli'o to bibilohu halaman lobohuwa wawu daputari he awasiyalo",
        "tog-numberheadings": "Otomatis modulade nomoro",
-       "tog-showtoolbar": "Mopobilohe pilakasi ponguba",
-       "tog-editondblclick": "Monguba halaamani mo klik po'oluwo",
-       "tog-editsectiononrightclick": "Popohunawa monguba tayadu wolo mengeklik olowala to judul lo tayadu",
-       "tog-watchcreations": "Duhengi halamani u pilohutu'u wawu berkas u diletohu'u ode daputari he awasiya'u",
-       "tog-watchdefault": "Duhengi halamani wawu berkas u iluba'u ode daputari he awasiya'u",
-       "tog-watchmoves": "Duhengi halamani wawu berkas u pilinda'u ode daputari he awasiya'u",
-       "tog-watchdeletion": "Duhengi halamani wawu berkas u yilulutu'u ode daputari he awasiya'u",
+       "tog-showtoolbar": "Popobilohe pilakasi pomoli'o",
+       "tog-editondblclick": "Boli'a halaman lo klik po'oluwo",
+       "tog-editsectiononrightclick": "Popohunawa momoli'a tayadu wolo mengeklik olowala to judul lo tayadu",
+       "tog-watchcreations": "Duhengi halaman pilohutu'u wawu berkas diletohu ode daputari he awasiyalo",
+       "tog-watchdefault": "Duhengi halaman wawu berkas biloli'o ode daputari he awasiya'u",
+       "tog-watchmoves": "Duhengi halaman wawu berkas hileyi'u ode daputari he awasiya'u",
+       "tog-watchdeletion": "Duhengi halaman wawu berkas yilulutu'u ode daputari he awasiya'u",
        "tog-watchuploads": "Duhengi berkas bohu u diletohu'u to daputari he'awasiyalo",
        "tog-watchrollback": "Duhengi halamani u pilohuwalingu'u ode daputari he awasiya'u",
        "tog-minordefault": "Tandai nga'amila odelo iluba keke'ingo secara baku",
        "october": "Oktober",
        "november": "Nopember",
        "december": "Desember",
-       "january-gen": "Januwari",
-       "february-gen": "Peburuwari",
+       "january-gen": "Januari",
+       "february-gen": "Pebruari",
        "march-gen": "Maret",
        "april-gen": "April",
-       "may-gen": "Meyi",
+       "may-gen": "Mei",
        "june-gen": "Juni",
        "july-gen": "Juli",
        "august-gen": "Agustus",
        "oct": "Okt",
        "nov": "Nop",
        "dec": "Des",
-       "january-date": "$1 Yanuari",
+       "january-date": "$1 Januari",
        "february-date": "$1 Pebruari",
        "march-date": "$1 Maret",
        "april-date": "$1 April",
        "category-media-header": "Media to delomo kategori \"$1\"",
        "category-empty": "<em>Kategori botiye ja o halaman meyalo media.<em>",
        "hidden-categories": "{{PLURAL:$1|Tayadu wanto-wanto'o}}",
-       "hidden-category-category": "Kategori wanto-wanto'o",
+       "hidden-category-category": "Kategori wanto-wanto'o",
        "category-subcat-count": "{{PLURAL:$2|Kategori boti woluwo subkategori|Kategori boti woluwo {{PLURAL:$1|subkategori|$1 subkategori}} lonto nga'amila $2.}}",
        "category-subcat-count-limited": "Kategori boti woluwo {{PLURAL:$1|subkategori|$1 subkategori}}",
        "category-article-count": "{{PLURAL:$2|Kategori botiye o tuwango halaman.|Woluwo {{PLURAL:$|$1 halaman}} to delomo kategori, lonto $2 nga'amila.}}",
        "morenotlisted": "Daputari boti kira-kira diipo ganapu",
        "mypage": "Halaamani",
        "mytalk": "Lo'iya",
-       "anontalk": "Bisala",
+       "anontalk": "Lo'iya",
        "navigation": "Navigasi",
        "and": "&#32;wawu",
        "qbfind": "Lolohe",
        "qbbrowse": "Momilohu",
-       "qbedit": "Monguba",
+       "qbedit": "Boli'a",
        "qbpageoptions": "Halaman botiya",
        "qbmyoptions": "Halamani'u",
        "faq": "FAQ",
        "history": "Riwayati lo halaman",
        "history_short": "Riwayati",
        "history_small": "riwayati",
-       "updatedmarker": "iluba to'u nila'o'u pulitiyo",
+       "updatedmarker": "biloli'o to'u bililohe pulitiyo",
        "printableversion": "Persi cetak",
        "permalink": "Wumbuta kakali",
        "print": "Cetaki",
        "nstab-image": "Berkas",
        "nstab-mediawiki": "Tahuli",
        "nstab-template": "Templat",
-       "nstab-help": "Halaman tulungi",
+       "nstab-help": "Halaman wubodu",
        "nstab-category": "Kategori",
        "mainpage-nstab": "Halaman bungaliyo",
        "nosuchaction": "Diya'a huhutu boyito",
        "enhancedrc-history": "riwayati",
        "recentchanges": "Boheli loboli'a mola",
        "recentchanges-legend": "Tulawotolo boheli loboli'a mola",
-       "recentchanges-summary": "Mololohe u yilo'ubawa bohu to halaman wiki botiye.",
+       "recentchanges-summary": "Lolohe u boheli loboli'a mola to wiki halaman botiye.",
        "recentchanges-label-newpage": "Momoli'a utiye mohutu halaman bohu",
        "recentchanges-label-minor": "Utiye biloli'o ngo'idi",
        "recentchanges-label-bot": "Lomoli'a utiye kilaraja lo bot",
index 8552886..f7b695b 100644 (file)
        "rcfilters-filter-unregistered-label": "לא רשומים",
        "rcfilters-filter-unregistered-description": "עורכים שלא נכנסו לחשבון.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "המסנן הזה פעיל מתנגש עם {{PLURAL:$2|מסנן רמת הניסיון הבא, שמוצא|מסנני רמת הניסיון הבאים, שמוצאים}} רק משתמשים רשומים: $1",
-       "rcfilters-filtergroup-authorship": "×\9e×\91צע×\99 ×\94ער×\99×\9bה",
-       "rcfilters-filter-editsbyself-label": "ער×\99×\9b×\95ת שלך",
-       "rcfilters-filter-editsbyself-description": "ער×\99×\9bות שביצעת בעצמך.",
-       "rcfilters-filter-editsbyother-label": "ער×\99×\9b×\95ת של אחרים",
-       "rcfilters-filter-editsbyother-description": "ער×\99×\9b×\95ת ×©×\91×\95צע×\95 ×¢×\9cÖ¾×\99×\93×\99 ×\9eשת×\9eש×\99×\9d ×\90×\97ר×\99×\9d (×\9e×\9c×\91×\93×\9a).",
+       "rcfilters-filtergroup-authorship": "×\9e×\91צע×\99 ×\94תר×\95×\9eה",
+       "rcfilters-filter-editsbyself-label": "ש×\99× ×\95×\99×\99×\9d שלך",
+       "rcfilters-filter-editsbyself-description": "תר×\95×\9eות שביצעת בעצמך.",
+       "rcfilters-filter-editsbyother-label": "ש×\99× ×\95×\99×\99×\9d של אחרים",
+       "rcfilters-filter-editsbyother-description": "×\9b×\9c ×\94ש×\99× ×\95×\99×\99×\9d ×\9e×\9c×\91×\93 ×\90×\9c×\94 ×©×\9c×\9a.",
        "rcfilters-filtergroup-userExpLevel": "רמת ניסיון (למשתמשים רשומים בלבד)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "מסנני הניסיון מוצאים רק משתמשים רשומים, כך שמסנן זה מתנגש עם המסנן \"לא רשומים\".",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "המסנן \"לא רשומים\" מתנגש עם אחד או יותר ממסנני רמת הניסיון, שמוצאים משתמשים רשומים בלבד. המסננים המתנגשים מסומנים באזור המסננים הפעילים לעיל.",
        "enotif_body_intro_moved": "הדף \"$1\" באתר {{SITENAME}} הועבר ב־$PAGEEDITDATE על־ידי $2; ראו $3 לגרסה הנוכחית של הדף.",
        "enotif_body_intro_restored": "הדף \"$1\" באתר {{SITENAME}} שוחזר ב־$PAGEEDITDATE על־ידי $2; ראו $3 לגרסה הנוכחית של הדף.",
        "enotif_body_intro_changed": "הדף \"$1\" באתר {{SITENAME}} שוּנה ב־$PAGEEDITDATE על־ידי $2; ראו $3 לגרסה הנוכחית של הדף.",
-       "enotif_lastvisited": "ר×\90×\95 $1 ×\9c×\9b×\9c ×\94ש×\99× ×\95×\99×\99×\9d ×\9e×\90×\96 ×\91×\99ק×\95ר×\9b×\9d ×\94×\90×\97ר×\95×\9f ×\91×\93×£.",
-       "enotif_lastdiff": "ר×\90×\95 $1 ×\9cש×\99× ×\95×\99 ×\96×\94.",
+       "enotif_lastvisited": "×\9c×\9b×\9c ×\94ש×\99× ×\95×\99×\99×\9d ×\9e×\90×\96 ×\91×\99ק×\95ר×\9b×\9d ×\94×\90×\97ר×\95×\9f ×\91×\93×£, ×¨' $1",
+       "enotif_lastdiff": "×\9cצפ×\99×\99×\94 ×\91ש×\99× ×\95×\99 ×\96×\94, ×¨' $1",
        "enotif_anon_editor": "משתמש אנונימי $1",
        "enotif_body": "לכבוד $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nתקציר העריכה: $PAGESUMMARY $PAGEMINOREDIT\n\nבאפשרותכם ליצור קשר עם העורך:\nבדואר אלקטרוני: $PAGEEDITOR_EMAIL\nבאתר: $PAGEEDITOR_WIKI\n\nלא תקבלו הודעות על פעולות נוספות עד שתבקרו בדף הזה כשאתם מחוברים לחשבון. באפשרותכם גם לאפס את דגלי ההודעות עבור כל הדפים שברשימת המעקב שלכם.\n\nבברכה, מערכת ההודעות של {{SITENAME}}.\n\n--\nכדי לשנות את ההגדרות של הודעות הדוא\"ל הנשלחות אליכם, בקרו בדף:\n{{canonicalurl:{{#special:Preferences}}}}\n\nכדי לשנות את ההגדרות של רשימת המעקב שלכם, בקרו בדף:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nכדי להסיר את הדף הזה מרשימת המעקב שלכם, בקרו בדף:\n$UNWATCHURL\n\nלמשוב ולעזרה נוספת:\n$HELPPAGE",
        "created": "נוצר",
index e7d1ccc..09a07bc 100644 (file)
        "rcfilters-filter-unregistered-label": "अपंजीकृत",
        "rcfilters-filter-unregistered-description": "संपादक जो लॉग इन नहीं हैं।",
        "rcfilters-filtergroup-authorship": "लेखकों को संपादित करें",
-       "rcfilters-filter-editsbyself-label": "à¤\86पà¤\95à¥\87 à¤\85पनà¥\87 à¤¸à¤\82पादन",
-       "rcfilters-filter-editsbyself-description": "à¤\86पà¤\95à¥\87 à¤¦à¥\8dवारा à¤¸à¤\82पादित",
-       "rcfilters-filter-editsbyother-label": "दà¥\82सरà¥\8bà¤\82 à¤\95à¥\87 à¤¦à¥\8dवारा à¤¸à¤\82पादित",
-       "rcfilters-filter-editsbyother-description": "à¤\85नà¥\8dय à¤\89पयà¥\8bà¤\97à¤\95रà¥\8dताà¤\93à¤\82 à¤¦à¥\8dवारा à¤¬à¤¨à¤¾à¤\88 à¤\97à¤\8f à¤¸à¤\82पादन (à¤\86पà¤\95à¥\87 à¤¦à¥\8dवारा à¤¨à¤¹à¥\80à¤\82)",
+       "rcfilters-filter-editsbyself-label": "à¤\86पà¤\95à¥\87 à¤¦à¥\8dवारा à¤¬à¤¦à¤²à¤¾à¤µ",
+       "rcfilters-filter-editsbyself-description": "à¤\86पà¤\95à¥\87 à¤\85पनà¥\87 à¤¯à¥\8bà¤\97दान।",
+       "rcfilters-filter-editsbyother-label": "दà¥\82सरà¥\8bà¤\82 à¤\95à¥\87 à¤¦à¥\8dवारा à¤¬à¤¦à¤²à¤¾à¤µ",
+       "rcfilters-filter-editsbyother-description": "à¤\86पà¤\95à¥\87 à¤¬à¤¦à¤²à¤¾à¤µà¥\8bà¤\82 à¤\95à¥\8b à¤\9bà¥\8bड़ à¤\95र à¤¸à¤­à¥\80 à¤\95à¥\87 à¤¬à¤¦à¤²à¤¾à¤µà¥¤",
        "rcfilters-filtergroup-userExpLevel": "अनुभव स्तर (केवल पंजीकृत सदस्यों के लिए)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "अनुभव फ़िल्टर केवल पंजीकृत उपयोगकर्ता पाते हैं इसलिए यह फ़िल्टर \"अपंजीकृत\" फ़िल्टर के साथ संघर्ष करता है।",
        "rcfilters-filter-user-experience-level-newcomer-label": "अपरिचित",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] पर से प्रतिरोध हटाया गया है।",
        "blocklist": "अवरोधित उपयोक्ता",
        "autoblocklist-submit": "खोजें",
+       "autoblocklist-legend": "स्वतः अवरोध सूची",
+       "autoblocklist-localblocks": "स्थानीय {{PLURAL:$1|स्वतः अवरोध}}",
+       "autoblocklist-empty": "स्वतः अवरोध सूची खाली है।",
        "ipblocklist": "अवरोधित आईपी पते व सदस्यनाम",
        "ipblocklist-legend": "अवरोधित सदस्य को खोजें",
        "blocklist-userblocks": "खाते के अवरोध छिपाएं",
        "confirmrecreate-noreason": "जब आपने इस पृष्ठ का सम्पादन शुरू किया था, उसके बाद से सदस्य [[User:$1|$1]] ([[User talk:$1|talk]]) ने इसे हटा दिया है।  कृपया पुष्टि करें कि आप इस पृष्ठ को पुनः बनाना चाहते हैं।",
        "recreate": "फिरसे बनायें",
        "unit-pixel": "px",
+       "confirm-purge-title": "पृष्ठ ताजा करें",
        "confirm_purge_button": "ओके",
        "confirm-purge-top": "क्या आप यह पृष्ठ का कैश ख़ाली करने चाहिए?",
        "confirm-purge-bottom": "किसी पृष्ठ को मिटाने से संचिका साफ़ हो जाती है और इस वजह से ताज़ातरीन संस्करण प्रकट हो जाता है।",
        "log-action-filter-upload-upload": "नया अपलोड",
        "log-action-filter-upload-overwrite": "फिर से अपलोड",
        "authmanager-create-disabled": "खाता निर्माण निष्क्रिय है।",
+       "authmanager-create-from-login": "अपना खाता बनाने के लिए नीचे दिये जगहों को भर दें।",
        "authmanager-authplugin-setpass-failed-title": "पासवर्ड बदलाव विफल हुआ।",
        "authmanager-authplugin-setpass-bad-domain": "अमान्य जालस्थल।",
        "authmanager-autocreate-noperm": "स्वचालित खाता निर्माण की अनुमति नहीं है।",
        "authmanager-autocreate-exception": "स्वचालित खाता निर्माण को पहले के कुछ त्रुटियों के कारण कुछ समय के लिए निष्क्रिय किया गया है।",
        "authmanager-userdoesnotexist": "सदस्य खाता \"$1\" पंजीकृत नहीं है।",
+       "authmanager-retype-help": "फिर पासवर्ड डालें।",
        "authmanager-email-label": "ईमेल",
        "authmanager-email-help": "ईमेल पता",
        "authmanager-realname-label": "वास्तविक नाम",
        "linkaccounts-submit": "खाता जोड़ें",
        "unlinkaccounts": "खाता अलग करें",
        "unlinkaccounts-success": "खाता अलग हो गया।",
+       "userjsispublic": "ध्यान दें: जावास्क्रिप्ट के उपपृष्ठ में कोई भी निजी जानकारी नहीं होनी चाहिए, क्योंकि इसे कोई भी देख सकता है।",
+       "usercssispublic": "ध्यान दें: सीसीएस के उपपृष्ठ में कोई भी निजी जानकारी नहीं होनी चाहिए, क्योंकि इसे कोई भी देख सकता है।",
        "restrictionsfield-badip": "अमान्य आईपी पते या सीमा: $1",
        "restrictionsfield-label": "अनुमत आईपी सीमा:",
        "revid": "अवतरण $1",
-       "pageid": "पेज आईडी $1"
+       "pageid": "पेज आईडी $1",
+       "rawhtml-notallowed": "&lt;html&gt; टैग का उपयोग सामान्य पन्नों के बाहर नहीं किया जा सकता है।",
+       "gotointerwiki": "आप {{SITENAME}} से बाहर जा रहे हैं।",
+       "gotointerwiki-invalid": "दिया गया शीर्षक अमान्य है।",
+       "gotointerwiki-external": "[[$2]] एक बाहरी वेबसाइट है, जिसमें जाने के लिए आप {{SITENAME}} को छोड़ रहे हैं।\n\n[$1 $1 पर जाने के लिए इस पर क्लिक करें]।",
+       "undelete-cantedit": "आप इस पन्ने को वापस नहीं ला सकते, क्योंकि आपको इस पन्ने पर सम्पादन की अनुमति नहीं है।",
+       "undelete-cantcreate": "आप इस पन्ने को वापस नहीं ला सकते, क्योंकि यह पन्ना इस नाम से है ही नहीं और आपको इस पन्ने के निर्माण की अनुमति भी नहीं है।"
 }
index 73e2480..5a4ef08 100644 (file)
@@ -17,7 +17,8 @@
                        "Matma Rex",
                        "V6rg",
                        "C.R.",
-                       "Smcnarayan"
+                       "Smcnarayan",
+                       "Vito Genovese"
                ]
        },
        "tog-underline": "Jorr ke niche line khicho:",
index 4930e6d..82c9237 100644 (file)
        "versionrequired": "Potrebna inačica $1 MediaWikija",
        "versionrequiredtext": "Za korištenje ove stranice potrebna je inačica $1 MediaWiki softvera. Pogledaj [[Special:Version|inačice]]",
        "ok": "U redu",
+       "pagetitle": "$1 – {{SITENAME}}",
        "retrievedfrom": "Dobavljeno iz \"$1\"",
        "youhavenewmessages": "Imate $1 ($2).",
        "youhavenewmessagesfromusers": "Imate $1 {{PLURAL:$3||od $3 suradnika|od $3 suradnika}} ($2).",
        "changeemail-submit": "Promijeni e-mail",
        "changeemail-throttled": "Nedavno ste se previše puta pokušali prijaviti.\nMolimo Vas pričekajte $1 prije nego što pokušate ponovno.",
        "changeemail-nochange": "Molimo vas, upišite neku novu adresu e-pošte.",
+       "resettokens": "Ponovo postavljanje tajnoga ključa",
+       "resettokens-text": "Možete ponovo postaviti tajni ključ koji Vam dopušta pristupanje određenim osobnim podatcima povezanim s Vašim ovdje navedenim suradničkim računom.\n\nTrebali bi to načiniti ukoliko ga kojim slučajem priopćite nekome ili ukoliko je Vaš suradnički račun ugrožen.",
+       "resettokens-tokens": "Tajni ključevi:",
+       "resettokens-token-label": "$1 (trenutačna postavka: $2)",
+       "resettokens-watchlist-token": "Tajni ključ za uvoženje u mrežno sjedište (Atom/RSS) [[Special:Watchlist|promjena na stranicama s Vašega popisa praćenih stranica]]",
+       "resettokens-resetbutton": "Ponovo postavi odabrane tajne ključeve",
        "bold_sample": "Podebljani tekst",
        "bold_tip": "Podebljani tekst",
        "italic_sample": "Kurzivni tekst",
        "content-model-css": "CSS",
        "content-json-empty-object": "Prazan objekt",
        "content-json-empty-array": "Prazno polje",
+       "deprecated-self-close-category": "Stranice s krivo zatvorenim HTML oznakama‎",
        "duplicate-args-warning": "<strong>Upozorenje:</strong> [[:$1]] poziva na [[:$2]] s više od jedne vrijednosti za parametar \"$3\". Rabit će se samo posljednja navedena vrijednost.",
        "duplicate-args-category": "Stranice u kojima se ponavljaju argumenti u predlošcima",
        "expensive-parserfunction-warning": "Upozorenje: Ova stranica sadrži previše opterećujućih poziva parserskih funkcija\n\nTrebala bi imati manje od $2 {{PLURAL:$2|poziva|poziva}}, sada ima {{PLURAL:$1|$1 poziv|$1 poziva}}.",
        "userrights-unchangeable-col": "Skupine koje ne možete promijeniti",
        "userrights-expiry-current": "Ističe $1",
        "userrights-expiry-none": "Neograničeno trajanje statusa",
+       "userrights-expiry": "Istječe:",
+       "userrights-expiry-existing": "Postojeće vrijeme isteka: $3, $2",
+       "userrights-expiry-othertime": "Drugo vrijeme:",
+       "userrights-expiry-options": "1 dan:1 day,1 tjedan:1 week,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godina:1 year",
        "userrights-conflict": "Sukob promjene suradničkih prava! Molimo provjerite i potvrdite svoje promjene.",
        "group": "Skupina:",
        "group-user": "Suradnici",
        "rcfilters-clear-all-filters": "Očisti sve filtre",
        "rcfilters-search-placeholder": "Posljednje izmjene filtera (pogledajte ili počnite unositi)",
        "rcfilters-invalid-filter": "Filter nije valjan",
+       "rcfilters-filterlist-title": "Filtri",
+       "rcfilters-highlightmenu-title": "Odaberite boju",
        "rcnotefrom": "Slijede promjene od <b>$2</b> (prikazano ih je do <b>$1</b>).",
        "rclistfrom": "Prikaži nove promjene počevši od $3 $2",
        "rcshowhideminor": "$1 manje promjene",
        "brokenredirectstext": "Sljedeća preusmjeravanja povezuju na nepostojeće stranice:",
        "brokenredirects-edit": "uredi",
        "brokenredirects-delete": "izbriši",
-       "withoutinterwiki": "Stranice bez međuwiki poveznica",
+       "withoutinterwiki": "Stranice bez međuwikipoveznica",
        "withoutinterwiki-summary": "Sljedeće stranice nemaju poveznice na projekte na drugim jezicima:",
        "withoutinterwiki-legend": "Prefiks",
        "withoutinterwiki-submit": "Prikaži",
        "prefixindex-strip": "Ne prikazuj predmetak u popisu",
        "shortpages": "Kratke stranice",
        "longpages": "Duge stranice",
-       "deadendpages": "Slijepe ulice",
+       "deadendpages": "Stranice na koje ne vodi ijedna druga stranica",
        "deadendpagestext": "Sljedeće stranice nemaju poveznice na druge stranice na ovom wikiju ({{SITENAME}}).",
        "protectedpages": "Zaštićene stranice",
        "protectedpages-indef": "Samo neograničene zaštite",
        "suppress": "Nadzor",
        "querypage-disabled": "Ova posebna stranica onemogućena je jer bi usporila funkcioniranje projekta.",
        "apihelp": "Pomoć za API",
+       "apisandbox": "Stranica za vježbanje API-ja",
        "apisandbox-submit": "Napraviti zahtjev",
        "apisandbox-reset": "Očisti",
        "apisandbox-examples": "Primjer",
        "listgrants-grant": "Dozvola",
        "listgrants-rights": "Prava",
        "trackingcategories": "Kategorije za praćenje",
+       "trackingcategories-summary": "Ova je posebna stranica koja prikazuje prateće kategorije koje programska podrška MediaWiki automatski popunjava. Njihovi se nazivi mogu promijeniti izmjenom odgovarajućih sustavskih poruka u imenskom prostoru {{ns:8}}.",
        "trackingcategories-msg": "Praćene kategorije",
        "trackingcategories-name": "Naziv poruke",
        "trackingcategories-desc": "Kriteriji za uključenje u kategoriju",
        "unblocked-range": "$1 je deblokiran",
        "unblocked-id": "Blok $1 je uklonjen",
        "blocklist": "Blokirani suradnici",
+       "autoblocklist": "Automatska blokiranja",
        "ipblocklist": "Blokirani suradnici",
        "ipblocklist-legend": "Pronađi blokiranog suradnika",
        "blocklist-userblocks": "Sakrij blokiranja računa",
        "change-blocklink": "promijeni blokiranje",
        "contribslink": "doprinosi",
        "emaillink": "pošalji e-poruku",
-       "autoblocker": "Automatski ste blokirani jer je Vašu IP adresu nedavno koristio \"[[User:$1|$1]]\" koji je blokiran zbog: \"$2\".",
+       "autoblocker": "Automatski ste blokirani jer je Vašu IP adresu nedavno koristio \"[[User:$1|$1]]\".\nRazlog koji je dan za blokiranje $1 bio je \"$2\".",
        "blocklogpage": "Evidencija blokiranja",
        "blocklog-showlog": "Ovaj suradnik je ranije blokiran.\nEvidencija blokiranja je prikazan ispod kao napomena:",
        "blocklog-showsuppresslog": "Ovaj suradnik je ranije blokiran i skriven.\nEvidencija skrivanja je prikazana ispod kao napomena:",
        "tooltip-ca-nstab-category": "Pogledaj stranicu kategorije",
        "tooltip-minoredit": "Označi kao manju promjenu",
        "tooltip-save": "Sačuvaj promjene",
+       "tooltip-publish": "Sačuvaj svoje uređivanje",
        "tooltip-preview": "Prikaži kako će izgledati, molimo koristite prije snimanja!",
        "tooltip-diff": "Prikaži promjene učinjene u tekstu.",
        "tooltip-compareselectedversions": "Prikaži usporedbu izabranih inačica ove stranice.",
        "spam_blanking": "Sve inačice koje sadržavaju poveznice na $1, brišem cjelokupni sadržaj",
        "spam_deleting": "Sve inačice sadržale su poveznice na $1, brišem cjelokupni sadržaj",
        "simpleantispam-label": "Anti-spam provjera.\n<strong>NE</strong> ispunjavajte ovo!",
-       "pageinfo-title": "Podatci o stranici \"$1\"",
+       "pageinfo-title": "Podatci o stranici »$1«",
        "pageinfo-not-current": "Nema podataka o uređivanju za najstarija uređivanja stranice.",
        "pageinfo-header-basic": "Osnovni podatci",
        "pageinfo-header-edits": "Uređivanja",
        "pageinfo-article-id": "ID stranice",
        "pageinfo-language": "Jezik stranice",
        "pageinfo-content-model": "Tip podataka na stranici",
+       "pageinfo-content-model-change": "promijeni",
        "pageinfo-robot-policy": "Status tražilice",
        "pageinfo-robot-index": "Stranicu je moguće indeksirati",
        "pageinfo-robot-noindex": "Indeksiranje stranice onemogućeno",
        "specialpages-group-highuse": "Najčešće korištene stranice",
        "specialpages-group-pages": "Popisi stranica",
        "specialpages-group-pagetools": "Alati za stranice",
-       "specialpages-group-wiki": "Wiki podaci i alati",
+       "specialpages-group-wiki": "Podatci i oruđe",
        "specialpages-group-redirects": "Preusmjeravajuće posebne stranice",
        "specialpages-group-spam": "Spam alati",
        "specialpages-group-developer": "Alati za razvijatelje",
index e5d6ba2..cb2a6a6 100644 (file)
        "userrights-expiry-options": "1 nap:1 day,1 hét:1 week,1 hónap:1 month,3 hónap:3 months,6 hónap:6 months,1 év:1 year",
        "userrights-invalid-expiry": "A(z) „$1” csoport lejárati ideje érvénytelen.",
        "userrights-expiry-in-past": "A(z) „$1” csoport lejárati ideje már elmúlt.",
+       "userrights-cannot-shorten-expiry": "Nem hosszabbíthatod meg a(z) „$1” csoporthoz tartozást. Csak az ezen csoport hozzáadására és eltávolítására jogosult felhasználók rakhatják későbbre a lejáratot.",
        "userrights-conflict": "Felhasználói jogok ütközése! Kérlek, végezd el újra a változtatásokat.",
        "group": "Csoport:",
        "group-user": "szerkesztők",
        "rcfilters-highlightmenu-help": "Válassz színt ennek a tulajdonságnak kijelöléséhez",
        "rcfilters-filterlist-noresults": "Nem található szűrő",
        "rcfilters-noresults-conflict": "Nincs találat, mert a keresési kritériumok konfliktusban vannak",
+       "rcfilters-state-message-subset": "Ennek a szűrőnek nincs hatása, mert az eredményét {{PLURAL:$2|tartalmazza a következő, nagyobb szűrő|tartalmazzák a következő, nagyobb szűrők}} (próbáld meg kiemelni a megkülönböztetéshez): $1",
+       "rcfilters-state-message-fullcoverage": "Az összes szűrő kijelölése egy csoportban ugyanaz, mint ha semmit nem választanál ki, így ennek a szűrőnek nincs hatása. A csoport tartalmazza: $1",
        "rcfilters-filtergroup-registration": "Regisztráció",
        "rcfilters-filter-registered-label": "Regisztrált",
        "rcfilters-filter-registered-description": "Bejelentkezett szerkesztők.",
index 0942f76..ec99f57 100644 (file)
        "session_fail_preview_html": "'''Ցավոք՝ չհաջողվեց հիշել ձեր խմբագրումները սեսիայի տվյալների կորստի պատճառով։'''\n\n''Քանի որ {{SITENAME}} նախագիծը թույլատրում է հում HTML, նախադիտումը անջատված է JavaScript-գրոհի կանխման նպատակով։''\n\n'''Եթե սա բարեխիղճ խմբագրման փորձ է, խնդրում ենք փորձել կրկին։ Սխալի կրկնման դեպքում՝ փորձեք [[Special:UserLogout|դուրս գալ]], ապա կրկին մտնել համակարգ։'''",
        "token_suffix_mismatch": "'''Ձեր խմբագրումը մերժվել է, քանի որ ձեր օգտագործած ծրագիրը աղավաղել է կետադրության նշանները խմբագրման դաշտում։ Խմբագրումը մերժվել է էջի տեքստի խաթարումը կանխելու նպատակով։ Սա երբեմն պայմանավորված է սխալներ պարունակող անանվանեցնող վեբ-փոխարինորդ (proxy) ծառայության օգտագործմամբ։'''",
        "editing": "Խմբագրվում է՝ $1 էջը",
-       "creating": "Ստեղծվում է՝ $1 էջը",
+       "creating": "Ստեղծվում է «$1» էջը",
        "editingsection": "Խմբագրվում է $1 բաժինը",
        "editingcomment": "Խմբագրվում է՝ $1 էջի (նոր բաժինը)",
        "editconflict": "Խմբագրման ընդհարում. $1",
index 4632e13..0501016 100644 (file)
        "category-file-count-limited": "Le sequente {{PLURAL:$1|file es|$1 files es}} in le categoria actual.",
        "listingcontinuesabbrev": "cont.",
        "index-category": "Paginas indexate",
-       "noindex-category": "Paginas con \"__NOINDEX__\"",
+       "noindex-category": "Paginas non indexate",
        "broken-file-category": "Paginas con ligamines rupte a files",
        "about": "A proposito",
        "article": "Pagina de contento",
        "redirectedfrom": "(Redirigite ab $1)",
        "redirectpagesub": "Pagina de redirection",
        "redirectto": "Rediriger verso:",
-       "lastmodifiedat": "Ultime modification de iste pagina: le $1 a $2.",
+       "lastmodifiedat": "Iste pagina esseva modificate le plus recentemente le $1 a $2.",
        "viewcount": "Iste pagina ha essite visitate {{PLURAL:$1|un vice|$1 vices}}.",
        "protectedpage": "Pagina protegite",
        "jumpto": "Saltar a:",
index 381ee4b..7a18780 100644 (file)
@@ -25,7 +25,8 @@
                        "Xð",
                        "Sveinki",
                        "Nemo bis",
-                       "Asmen"
+                       "Asmen",
+                       "MyraMidnight"
                ]
        },
        "tog-underline": "Undirstrika tengla:",
        "hebrew-calendar-m6": "Adar",
        "hebrew-calendar-m6a": "Adar I",
        "hebrew-calendar-m6b": "Adar II",
-       "hebrew-calendar-m7": "Nisane",
+       "hebrew-calendar-m7": "Nisan",
        "hebrew-calendar-m8": "Iyar",
        "hebrew-calendar-m9": "Sivan",
        "hebrew-calendar-m10": "Tamuz",
        "hebrew-calendar-m6-gen": "Adar",
        "hebrew-calendar-m6a-gen": "Adar I",
        "hebrew-calendar-m6b-gen": "Adar II",
-       "hebrew-calendar-m7-gen": "Nisane",
+       "hebrew-calendar-m7-gen": "Nisan",
        "hebrew-calendar-m8-gen": "Iyar",
        "hebrew-calendar-m9-gen": "Sivan",
        "hebrew-calendar-m10-gen": "Tamuz",
index d14c1af..98b13b0 100644 (file)
        "rcfilters-empty-filter": "Nessun filtro attivo. Sono mostrati tutti i contributi.",
        "rcfilters-filterlist-title": "Filtri",
        "rcfilters-filterlist-whatsthis": "Cos'è questo?",
+       "rcfilters-filterlist-feedbacklink": "Lascia un commento sulla nuova funzionalità sperimentale",
+       "rcfilters-highlightbutton-title": "Evidenzia risultati",
        "rcfilters-highlightmenu-title": "Seleziona un colore",
        "rcfilters-highlightmenu-help": "Seleziona un colore per evidenziare questa proprietà",
        "rcfilters-filterlist-noresults": "Nessun filtro trovato",
        "rcfilters-filtergroup-registration": "Registrazione utente",
        "rcfilters-filter-registered-label": "Registrato",
        "rcfilters-filter-unregistered-label": "Non registrato",
-       "rcfilters-filtergroup-authorship": "Modifica paternità",
-       "rcfilters-filter-editsbyself-description": "Proprie modifiche.",
+       "rcfilters-filtergroup-authorship": "Autore del contributo",
+       "rcfilters-filter-editsbyself-label": "Mie modifiche",
+       "rcfilters-filter-editsbyself-description": "I tuoi contributi.",
        "rcfilters-filter-editsbyother-label": "Modifiche di altri",
-       "rcfilters-filter-editsbyother-description": "Modifiche create da altri utenti (non tu).",
+       "rcfilters-filter-editsbyother-description": "Tutte le modifiche eccetto le tue.",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Nuovi utenti",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Meno di 10 modifiche e 4 giorni di attività.",
+       "rcfilters-filter-user-experience-level-experienced-label": "Utenti con esperienza",
+       "rcfilters-filter-user-experience-level-experienced-description": "Più di 30 giorni di attività e 500 modifiche.",
        "rcfilters-filtergroup-automated": "Contributi automatici",
        "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Modifiche effettuate da strumenti automatici.",
        "rcfilters-filter-humans-label": "Umani (non bot)",
+       "rcfilters-filter-humans-description": "Modifiche effettuate da contributori umani.",
        "rcfilters-filter-patrolled-label": "Verificate",
        "rcfilters-filter-patrolled-description": "Modifiche contrassegnate come verificate.",
        "rcfilters-filter-unpatrolled-label": "Non verificate",
        "rcfilters-filter-unpatrolled-description": "Modifiche non contrassegnate come verificate.",
        "rcfilters-filtergroup-significance": "Significato",
        "rcfilters-filter-minor-label": "Modifiche minori",
+       "rcfilters-filter-minor-description": "Modifiche che sono state indicate come minori.",
        "rcfilters-filter-major-label": "Modifiche non minori",
        "rcfilters-filtergroup-changetype": "Tipo di modifica",
        "rcfilters-filter-pageedits-label": "Modifiche alle pagine",
        "enotif_body_intro_moved": "La pagina $1 di {{SITENAME}} è stata spostata da {{gender:$2|$2}} il $PAGEEDITDATE, vedi $3 per la versione attuale.",
        "enotif_body_intro_restored": "La pagina $1 di {{SITENAME}} è stata ripristinata da {{gender:$2|$2}} il $PAGEEDITDATE, vedi $3 per la versione attuale.",
        "enotif_body_intro_changed": "La pagina $1 di {{SITENAME}} è stata modificata da {{gender:$2|$2}} il $PAGEEDITDATE, vedi $3 per la versione attuale.",
-       "enotif_lastvisited": "Visita $1 per vedere tutte le modifiche dall'ultima visita.",
-       "enotif_lastdiff": "Visita $1 per vedere la modifica.",
+       "enotif_lastvisited": "Per tutte le modifiche dalla tua ultima visita, vedi $1",
+       "enotif_lastdiff": "Per vedere questa modifica, vedi $1",
        "enotif_anon_editor": "utente anonimo $1",
        "enotif_body": "Gentile $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nOggetto dell'intervento, inserito dall'autore: $PAGESUMMARY $PAGEMINOREDIT\n\nContatta l'autore:\nvia posta elettronica: $PAGEEDITOR_EMAIL\nsul sito: $PAGEEDITOR_WIKI\n\nNon verranno inviate altre notifiche in caso di ulteriori attività, se non visiti la pagina dopo aver effettuato l'accesso. Inoltre, è possibile modificare le impostazioni di notifica per tutte le pagine nella lista degli osservati speciali.\n\nIl sistema di notifica di {{SITENAME}}, al tuo servizio\n\n--\nPer modificare le impostazioni delle notifiche via posta elettronica, visita \n{{canonicalurl:{{#special:Preferences}}}}\n\nPer modificare la lista degli osservati speciali, visita \n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPer rimuovere la pagina dalla lista degli osservati speciali, visita\n$UNWATCHURL\n\nPer commentare e ricevere aiuto:\n$HELPPAGE",
        "created": "creata",
        "move-page-legend": "Spostamento di pagina",
        "movepagetext": "Questo modulo consente di rinominare una pagina, spostando tutta la sua cronologia al nuovo nome. La pagina attuale diverrà automaticamente un redirect al nuovo titolo. Puoi aggiornare automaticamente i redirect che puntano al titolo originale. Puoi decidere di non farlo, ma ricordati di verificare che lo spostamento non abbia creato [[Special:DoubleRedirects|doppi redirect]] o [[Special:BrokenRedirects|redirect errati]]. L'onere di garantire che i collegamenti alla pagina restino corretti spetta a chi la sposta.\n\nSi noti che la pagina <strong>non</strong> sarà spostata se ne esiste già una con il nuovo nome, a meno che quest'ultima non sia costituita solo da un redirect e sia priva di versioni precedenti. In caso di spostamento errato si può quindi tornare subito al vecchio titolo, e non è possibile sovrascrivere per errore una pagina già esistente.\n\n<strong>Nota:</strong>\nUn cambiamento così drastico può creare contrattempi e problemi, soprattutto per le pagine più visitate. Accertarsi di aver valutato le conseguenze dello spostamento prima di procedere.",
        "movepagetext-noredirectfixer": "Questo modulo consente di rinominare una pagina, spostando tutta la sua cronologia al nuovo nome. La pagina attuale diverrà automaticamente un redirect al nuovo titolo. Controlla che lo spostamento non abbia creato [[Special:DoubleRedirects|doppi redirect]] o [[Special:BrokenRedirects|redirect errati]]. L'onere di garantire che i collegamenti alla pagina restino corretti spetta a chi la sposta.\n\nSi noti che la pagina <strong>non</strong> sarà spostata se ne esiste già una con il nuovo nome, a meno che non sia costituita solo da un redirect e sia priva di versioni precedenti. In caso di spostamento errato si può quindi tornare subito al vecchio titolo, e non è possibile sovrascrivere per errore una pagina già esistente.\n\n<strong>Nota:</strong>\nUn cambiamento così drastico può creare contrattempi e problemi, soprattutto per le pagine più visitate. Accertarsi di aver valutato le conseguenze dello spostamento prima di procedere.",
-       "movepagetalktext": "Se selezioni questa casella, la corrispondente pagina di discussione sarà spostata automaticamente al nuovo titolo, a meno che esiste già una pagina di discussione non vuota.\n\nIn questi casi, dovrai spostare o unire manualmente la pagina, se lo si ritiene opportuno.",
+       "movepagetalktext": "Se selezioni questa casella, la corrispondente pagina di discussione sarà spostata automaticamente al nuovo titolo, a meno che esista già una pagina di discussione non vuota.\n\nIn questi casi, se lo ritieni opportuno, dovrai spostare o unire manualmente la pagina.",
        "moveuserpage-warning": "'''Attenzione:''' Si sta per spostare una pagina utente. Nota che verrà spostata solamente la pagina. L'utente ''non'' sarà rinominato.",
        "movecategorypage-warning": "<strong>Attenzione:</strong> si sta per spostare una categoria. Solo questa pagina verrà spostata: tutte le pagine nella vecchia categoria <em>non</em> saranno inserite nella nuova.",
        "movenologintext": "Lo spostamento delle pagine è consentito solo agli utenti registrati che hanno eseguito l'[[Special:UserLogin|accesso]] al sito.",
        "htmlform-user-not-exists": "<strong>$1</strong> non esiste.",
        "htmlform-user-not-valid": "<strong>$1</strong> non è un nome utente valido.",
        "logentry-delete-delete": "$1 {{GENDER:$2|ha cancellato}} la pagina $3",
+       "logentry-delete-delete_redir": "$1 {{GENDER:$2|ha cancellato}} il redirect $3 con la sovrascrittura",
        "logentry-delete-restore": "$1 {{GENDER:$2|ha ripristinato}} la pagina $3 ($4)",
        "logentry-delete-restore-nocount": "$1 {{GENDER:$2|ha ripristinato}} la pagina $3",
        "restore-count-revisions": "{{PLURAL:$1|1 versione|$1 versioni}}",
        "pagelang-reason": "Motivo",
        "pagelang-submit": "Invia",
        "pagelang-nonexistent-page": "La pagina $1 non esiste.",
+       "pagelang-db-failed": "Il database non è stato in grado di modificare la lingua della pagina.",
        "right-pagelang": "Modifica la lingua della pagina",
        "action-pagelang": "modificare la lingua della pagina",
        "log-name-pagelang": "Modifiche lingua",
        "special-characters-group-thai": "Thailandese",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Khmer",
+       "special-characters-group-canadianaboriginal": "Canadese aborigeno",
        "special-characters-title-endash": "lineetta enne",
        "special-characters-title-emdash": "lineetta emme",
        "special-characters-title-minus": "segno meno",
        "log-action-filter-contentmodel-change": "Modifica del modello di contenuto",
        "log-action-filter-contentmodel-new": "Creazione di pagina con modello di contenuto non predefinito",
        "log-action-filter-delete-delete": "Cancellazione pagina",
+       "log-action-filter-delete-delete_redir": "Sovrascrittura di redirect",
        "log-action-filter-delete-restore": "Ripristino pagina",
        "log-action-filter-delete-event": "Cancellazione registro",
        "log-action-filter-delete-revision": "Cancellazione versione",
index 508d59a..1cd60f8 100644 (file)
@@ -80,7 +80,8 @@
                        "にょきにょき",
                        "おはぐろ蜻蛉",
                        "Aefgh39622",
-                       "Ayame"
+                       "Ayame",
+                       "Omotecho"
                ]
        },
        "tog-underline": "リンクの下線:",
        "userrights-groupsmember": "所属グループ:",
        "userrights-groupsmember-auto": "自動的に付与される権限:",
        "userrights-groupsmember-type": "$1",
-       "userrights-groups-help": "ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cå±\9eã\81\99ã\82\8bã\82°ã\83«ã\83¼ã\83\97ã\82\92å¤\89æ\9b´ã\81§ã\81\8dã\81¾ã\81\99ã\80\82\n* ã\83\81ã\82§ã\83\83ã\82¯ã\81\8cå\85¥ã\81£ã\81¦ã\81\84ã\82\8bã\83\9cã\83\83ã\82¯ã\82¹ã\81¯ã\80\81ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cã\81\9dã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\97ã\81¦ã\81\84ã\82\8bã\81\93ã\81¨ã\82\92æ\84\8få\91³ã\81\97ã\81¾ã\81\99ã\80\82\n* ã\83\81ã\82§ã\83\83ã\82¯ã\81\8cå\85¥ã\81£ã\81¦ã\81\84ã\81ªã\81\84ã\83\9cã\83\83ã\82¯ã\82¹ã\81¯ã\80\81ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cã\81\9dã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\97ã\81¦ã\81\84ã\81ªã\81\84ã\81\93ã\81¨ã\82\92æ\84\8få\91³ã\81\97ã\81¾ã\81\99ã\80\82\n*ã\80\8c\80\8dã\81¯ã\82°ã\83«ã\83¼ã\83\97ã\81«ä¸\80æ\97¦è¿½å\8a ã\81\97ã\81\9få ´å\90\88ã\81«é\99¤å\8e» (ã\81\82ã\82\8bã\81\84ã\81¯ã\81\9dã\81®é\80\86) ã\81\8cã\81§ã\81\8dã\81ªã\81\84ã\81\93ã\81¨ã\82\92示ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82\n*ã\80\8c\80\8dã\81¯æ\9c\89å\8a¹æ\9c\9fé\99\90ã\81®å»¶é\95·ã\81®ã\81¿ã\82\92è¡\8cã\81\86ã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\81\8cã\80\81現在の期限よりも短縮することはできません。",
+       "userrights-groups-help": "ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cå±\9eã\81\99ã\82\8bã\82°ã\83«ã\83¼ã\83\97ã\82\92å¤\89æ\9b´ã\81§ã\81\8dã\81¾ã\81\99ã\80\82\n* ã\83\81ã\82§ã\83\83ã\82¯ã\81\8cå\85¥ã\81£ã\81¦ã\81\84ã\82\8bã\83\9cã\83\83ã\82¯ã\82¹ã\81¯ã\80\81ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cã\81\9dã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\97ã\81¦ã\81\84ã\82\8bã\81\93ã\81¨ã\82\92æ\84\8få\91³ã\81\97ã\81¾ã\81\99ã\80\82\n* ã\83\81ã\82§ã\83\83ã\82¯ã\81\8cå\85¥ã\81£ã\81¦ã\81\84ã\81ªã\81\84ã\83\9cã\83\83ã\82¯ã\82¹ã\81¯ã\80\81ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cã\81\9dã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\97ã\81¦ã\81\84ã\81ªã\81\84ã\81\93ã\81¨ã\82\92æ\84\8få\91³ã\81\97ã\81¾ã\81\99ã\80\82\n*ã\80\8c\80\8dã\81¯ã\82°ã\83«ã\83¼ã\83\97ã\81«ä¸\80æ\97¦è¿½å\8a ã\81\97ã\81\9få ´å\90\88ã\81«é\99¤å\8e» (ã\81\82ã\82\8bã\81\84ã\81¯ã\81\9dã\81®é\80\86) ã\81\8cã\81§ã\81\8dã\81ªã\81\84ã\81\93ã\81¨ã\82\92示ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82\n*ã\80\8c\80\8dã\81¯æ\9c\89å\8a¹æ\9c\9fé\99\90ã\81®å»¶é\95·ã\81®ã\81¿ã\82\92è¡\8cã\81\86ã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\82°ã\83«ã\83¼ã\83\97ã\81®å\8f\82å\8a è³\87æ ¼ã\82\92示ã\81\97ã\81¾ã\81\99現在の期限よりも短縮することはできません。",
        "userrights-reason": "理由:",
        "userrights-no-interwiki": "他ウィキ上における利用者権限の編集権限は、ありません。",
        "userrights-nodatabase": "データベース$1は存在しないか、ローカル上にありません。",
        "userrights-expiry-options": "1日:1 day,1週間:1 week,1か月:1 month,3か月:3 months,6か月:6 months,1 年:1 year",
        "userrights-invalid-expiry": "「$1」グループに指定された有効期限は無効です。",
        "userrights-expiry-in-past": "「$1」グループに指定された有効期限は過去の時刻です。",
-       "userrights-cannot-shorten-expiry": "「$1」グループの有効期限を短縮できません。このグループを与奪できる権限を持つ利用者だけが有効期限を短縮できます。",
+       "userrights-cannot-shorten-expiry": "「$1」グループの参加資格の有効期限を短縮できません。このグループを与奪できる権限を持つ利用者だけが有効期限を短縮できます。",
        "userrights-conflict": "利用者権限の変更が競合しています! 変更内容を確認してください。",
        "group": "グループ:",
        "group-user": "登録利用者",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|新しいページ一覧]]も参照)",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "表示",
+       "rcfilters-activefilters": "絞り込み",
+       "rcfilters-restore-default-filters": "標準設定の絞り込み条件を適用",
        "rcfilters-clear-all-filters": "すべてのフィルターをクリア",
+       "rcfilters-search-placeholder": "絞り込みを行う(一覧から選択、または検索)",
        "rcfilters-invalid-filter": "無効なフィルター",
+       "rcfilters-empty-filter": "絞り込みは行われていません。全ての項目が表示さます。",
        "rcfilters-filterlist-title": "フィルター",
+       "rcfilters-filterlist-whatsthis": "これは何?",
+       "rcfilters-filterlist-feedbacklink": "絞り込み機能(ベータ版)に関するフィードバックを行う",
+       "rcfilters-highlightbutton-title": "該当項目を強調表示する",
        "rcfilters-highlightmenu-title": "色を選ぶ",
+       "rcfilters-highlightmenu-help": "この項目を何色で強調表示するか選択してください",
        "rcfilters-filterlist-noresults": "フィルターが見つかりませんでした",
+       "rcfilters-noresults-conflict": "検索条件が競合しているため、絞り込みできません",
+       "rcfilters-state-message-subset": "この項目による絞り込みは全て以下の{{PLURAL:$2|項目}}による絞り込みの結果に含まれています(強調表示を使うことで該当項目を抽出できます) : $1",
+       "rcfilters-state-message-fullcoverage": "同じグループの全ての項目が選択されています。絞り込みできません。同じグループに含まれる項目 :$1",
        "rcfilters-filtergroup-registration": "利用者登録",
        "rcfilters-filter-registered-label": "登録済み",
        "rcfilters-filter-registered-description": "ログイン済みの編集者。",
        "rcfilters-filter-unregistered-label": "未登録",
+       "rcfilters-filter-unregistered-description": "ログインしていない編集者。",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "この項目は、登録済み利用者を編集回数別で絞り込む以下の{{PLURAL:$2|項目}}と競合しています :$1",
+       "rcfilters-filter-editsbyself-label": "自分の編集",
+       "rcfilters-filter-editsbyself-description": "自分の投稿記録を絞り込む",
+       "rcfilters-filter-editsbyother-label": "自分以外の編集",
+       "rcfilters-filter-editsbyother-description": "自分以外の利用者による編集",
+       "rcfilters-filtergroup-userExpLevel": "編集回数別(登録利用者のみが対象)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "編集回数別絞り込みは登録利用者のみが対象です。「未登録」の絞り込み項目と競合しています。",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "「未登録」の項目が登録済み利用者を絞り込む項目と競合しています。競合している項目は項目選択欄で強調表示されています。",
+       "rcfilters-filter-user-experience-level-newcomer-label": "新規参加者",
+       "rcfilters-filter-user-experience-level-newcomer-description": "登録から4日以内、かつ10編集以下の利用者",
+       "rcfilters-filter-user-experience-level-learner-label": "一般参加者",
+       "rcfilters-filter-user-experience-level-learner-description": "「新規参加者」よりも活動履歴が長く、「定着参加者」より活動履歴が短い利用者",
+       "rcfilters-filter-user-experience-level-experienced-label": "定着参加者",
+       "rcfilters-filter-user-experience-level-experienced-description": "30日以上、かつ500編集以上の活動履歴がある利用者",
+       "rcfilters-filtergroup-automated": "自動編集",
        "rcfilters-filter-bots-label": "ボット",
+       "rcfilters-filter-bots-description": "ツールによって自動化された編集",
        "rcfilters-filter-humans-label": "人間(ボットではない)",
+       "rcfilters-filter-humans-description": "人間の手作業による編集",
        "rcfilters-filter-patrolled-label": "巡回済み",
        "rcfilters-filter-patrolled-description": "巡回済みとマークされた編集。",
        "rcfilters-filter-unpatrolled-label": "未巡回",
        "rcfilters-filter-major-description": "細部とマークされていない編集。",
        "rcfilters-filtergroup-changetype": "変更の種類",
        "rcfilters-filter-pageedits-label": "ページの編集",
+       "rcfilters-filter-pageedits-description": "Wikiの項目編集、議論、カテゴリ変更など",
        "rcfilters-filter-newpages-label": "ページの作成",
        "rcfilters-filter-newpages-description": "ページを新規作成する編集。",
        "rcfilters-filter-categorization-label": "カテゴリ変更",
+       "rcfilters-filter-categorization-description": "ページがカテゴリから追加または削除された記録",
+       "rcfilters-filter-logactions-label": "操作ログ",
+       "rcfilters-filter-logactions-description": "アカウント作成、削除、アップロードなどのログに残る管理操作",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "「細部の編集」として絞り込めない項目を「細部の編集」として絞り込もうとしています。競合している項目は項目選択欄で強調表示されています。",
+       "rcfilters-hideminor-conflicts-typeofchange": "細部の編集として絞り込めない以下の項目を絞り込もうとしています: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "「細部の編集」の絞り込みと競合しています。この項目を「細部の編集」として絞り込むことはできません。",
        "rcnotefrom": "以下は<strong>$3 $4</strong>以降の{{PLURAL:$5|更新です}} (最大 <strong>$1</strong> 件)。",
+       "rclistfromreset": "日時指定をリセット",
        "rclistfrom": "$3の$2以降の更新を表示する",
        "rcshowhideminor": "細部の編集を$1",
        "rcshowhideminor-show": "表示する",
        "enotif_body_intro_restored": "{{SITENAME}}のページ「$1」が$PAGEEDITDATEに、$2 によって{{GENDER:$2|復元}}されました。現在の版は $3 で閲覧できます。",
        "enotif_body_intro_changed": "{{SITENAME}}のページ「$1」が$PAGEEDITDATEに、$2 によって{{GENDER:$2|変更}}されました。現在の版は $3 で閲覧できます。",
        "enotif_lastvisited": "最終訪問以降のすべての変更は $1 をご覧ください。",
-       "enotif_lastdiff": "この変更内容を表示するには $1 をご覧ください。",
+       "enotif_lastdiff": "この変更内容を表示するには $1 をご覧ください。",
        "enotif_anon_editor": "匿名利用者 $1",
        "enotif_body": "$WATCHINGUSERNAMEさん\n\n$PAGEINTRO $NEWPAGE\n\n編集内容の要約: $PAGESUMMARY ($PAGEMINOREDIT)\n\n投稿者の連絡先:\nメール: $PAGEEDITOR_EMAIL\nウィキ: $PAGEEDITOR_WIKI\n\nログインした状態でこのページを訪れない限り、これ以上の活動に対する通知は送信されません。ウォッチリスト内のすべてのページについて、通知を再設定することもできます。\n\n{{SITENAME}}通知システム\n\n--\nメール通知の設定は、以下のページで変更してください:\n{{canonicalurl:{{#special:Preferences}}}}\n\nウォッチリストの設定は、以下のページで変更してください:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nこのページは、以下のページでウォッチリストから削除できます:\n$UNWATCHURL\n\nご意見、お問い合わせ:\n$HELPPAGE",
        "created": "作成",
        "sp-contributions-uploads": "アップロード",
        "sp-contributions-logs": "記録",
        "sp-contributions-talk": "トーク",
-       "sp-contributions-userrights": "利用者権限の管理",
+       "sp-contributions-userrights": "{{GENDER:$1|利用者}}権限の管理",
        "sp-contributions-blocked-notice": "この利用者は現在ブロックされています。\n参考のために最新のブロック記録項目を以下に表示します:",
        "sp-contributions-blocked-notice-anon": "このIPアドレスは現在ブロックされています。\n参考のために最近のブロック記録項目を以下に表示します:",
        "sp-contributions-search": "投稿の検索",
        "anonymous": "{{SITENAME}}の匿名{{PLURAL:$1|利用者}}",
        "siteuser": "{{SITENAME}}の利用者 $1",
        "anonuser": "{{SITENAME}}の匿名利用者 $1",
-       "lastmodifiedatby": "このページの最終更新は $1 $2 に $3 によって行われました。",
+       "lastmodifiedatby": "このページの最終編集は $1 $2 に $3 によって行われました。",
        "othercontribs": "また、最終更新より前に $1 が編集しました。",
        "others": "その他",
        "siteusers": "{{SITENAME}}の{{PLURAL:$2|利用者}} $1",
        "htmlform-user-not-valid": "<strong>$1</strong>は有効な利用者名ではありません。",
        "logentry-delete-delete": "$1 がページ「$3」を{{GENDER:$2|削除しました}}",
        "logentry-delete-delete_redir": "$1 がリダイレクト「$3」を上書きにより{{GENDER:$2|削除しました}}",
-       "logentry-delete-restore": "$1 がページ「$3」を{{GENDER:$2|復元しました}}",
+       "logentry-delete-restore": "$1 がページ「$3 ($4)」を{{GENDER:$2|復元しました}}",
        "logentry-delete-event": "$1 が $3 の{{PLURAL:$5|記録項目|記録項目$5件}}の閲覧レベルを{{GENDER:$2|変更しました}}: $4",
        "logentry-delete-revision": "$1 がページ「$3」の{{PLURAL:$5|版|$5件の版}}の閲覧レベルを{{GENDER:$2|変更しました}}: $4",
        "logentry-delete-event-legacy": "$1 が $3 の記録項目の閲覧レベルを{{GENDER:$2|変更しました}}",
index 9e7dc60..18ce84f 100644 (file)
@@ -47,7 +47,7 @@
        "tog-oldsig": "Tandha tangan panjenengan sing ana:",
        "tog-fancysig": "Anggep tandha tangan minangka tulisan wiki (tanpa pranala otomatis)",
        "tog-uselivepreview": "Nganggo pratuduh langsung",
-       "tog-forceeditsummary": "Élingna aku menawa kothak ringkesan suntingan isih kosong",
+       "tog-forceeditsummary": "Kandhani aku manawa kothak ringkesané besutan isih kosong",
        "tog-watchlisthideown": "Dhelikaké besutanku saka pawawangan",
        "tog-watchlisthidebots": "Dhelikaké besutan bot saka pangawasan",
        "tog-watchlisthideminor": "Dhelikaké besutan cilik saka pawawangan",
        "searcharticle": "Menyang",
        "history": "Sujarah kaca",
        "history_short": "Sujarah",
+       "history_small": "sujarah",
        "updatedmarker": "wis dianyari kawit tekaku mréné pungkasan",
        "printableversion": "Vèrsi cithak",
        "permalink": "Pranala permanèn",
        "redirectedfrom": "(Dilih saka $1)",
        "redirectpagesub": "Alih kaca",
        "redirectto": "Ngalih menyang:",
-       "lastmodifiedat": "Kaca iki pungkasan diowah kala $1, tabuh $2.",
+       "lastmodifiedat": "Kaca iki dibesut pungkasan nalika $1, tabuh $2.",
        "viewcount": "Kaca iki wis diaksès ping {{PLURAL:$1|siji|$1}}.",
        "protectedpage": "Kaca kareksa",
        "jumpto": "Jujug:",
        "jumptonavigation": "navigasi",
        "jumptosearch": "golèk",
        "view-pool-error": "Nyuwun ngapuro, peladèn lagi sibuk wektu iki.\nKakèhan panganggo sing nyoba mbukak kaca iki.\nEntèni sedhéla sadurungé nyoba ngaksès kaca iki manèh .\n\n$1",
-       "generic-pool-error": "Nyuwun pangapura, paladèn saiki nembé arungan.\nKakèhan panganggo sing péngin ndeleng sumber iki.\nEntèna sadhéla sadurungé sampéyan nekani sumber iki manèh.",
+       "generic-pool-error": "Ngapunten, paladèné lagi kabotan momotan.\nPanganggo akèh sing péngin ndeleng sumber iki.\nEntènana sadhéla sadurungé panjenengan marani sumber iki manèh.",
        "pool-timeout": "Kelangkung wekdal nengga kunci",
        "pool-queuefull": "Kempalan antrian kebak",
        "pool-errorunknown": "Kalepata ingkang mboten dipun mangertosi",
        "ok": "Oké",
        "retrievedfrom": "Dijupuk saka: \"$1\"",
        "youhavenewmessages": "Panjenengan kagungan $1 ($2).",
-       "youhavenewmessagesfromusers": "Sampéyan nduwé $1 saka  {{PLURAL:$3|panganggo liya|$3 panganggo}} ($2).",
-       "youhavenewmessagesmanyusers": "Sampéyang nduwé $1 saka akèh panganggo ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Panjenengan duwé}} $1 saka {{PLURAL:$3|panganggo liya|$3 panganggo}} ($2).",
+       "youhavenewmessagesmanyusers": "Panjenengan duwé $1 saka manéka panganggo ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|layang anyar|999=layang anyar}}",
        "newmessagesdifflinkplural": "{{PLURAL:$1|owahan|999=owahan}} pungkasan",
-       "youhavenewmessagesmulti": "Sampéyan éntuk nawala anyar ing $1",
+       "youhavenewmessagesmulti": "Panjenengan éntuk layang anyar ing $1",
        "editsection": "besut",
        "editold": "besut",
        "viewsourceold": "deleng sumber",
        "hidetoc": "dhelikaké",
        "collapsible-collapse": "tutup",
        "collapsible-expand": "bukak",
-       "confirmable-confirm": "{{GENDER:$1|Sampéyan}} yakin?",
+       "confirmable-confirm": "{{GENDER:$1|Panjenengan}} yakin?",
        "confirmable-yes": "Iya",
        "confirmable-no": "Ora",
        "thisisdeleted": "Ndeleng utawa mbalèkaké $1?",
        "filerenameerror": "Ora bisa ngowahi saka \"$1\" dadi \"$2\".",
        "filedeleteerror": "Ora bisa mbusak berkas \"$1\".",
        "directorycreateerror": "Ora bisa nggawé dirèktori \"$1\".",
+       "directoryreadonlyerror": "Pérangan \"$1\" mung kena diwaca.",
+       "directorynotreadableerror": "Pérangan \"$1\" ora kena diwaca.",
        "filenotfound": "Ora bisa nemokaké berkas \"$1\".",
        "unexpected": "Biji (''nilai'') ing njabaning jangkauan: \"$1\"=\"$2\".",
        "formerror": "Kasalahan: Ora bisa ngirimaké formulir",
        "no-null-revision": "Ora isa nggawe revisi 'null' anyar kanggo kaca \"$1\"",
        "badtitle": "Sesirah ala",
        "badtitletext": "Sesirahing kaca sing dikarepaké ora sah, suwung, utawa salah nggayut nyang sesirah antarabasa utawa antarawiki.\nIku mungkin ngandhut pralambang siji utawa luwih sing ora kena dianggo tumrap sesirah iki.",
+       "title-invalid-empty": "Sesirah kaca sing dikarepaké kosong utawa mung ngemu jenengé mandala-aran.",
+       "title-invalid-utf8": "Sesirah kaca sing dikarepaké ngemu reroncèn UTF-8 sing ora sah.",
+       "title-invalid-interwiki": "Sesirah kaca sing dikarepaké ngemu pranala interwiki sing ora bisa dicakaké dadi sesirah",
+       "title-invalid-talk-namespace": "Sesirah kaca sing dikarepaké nggayut kaca parembugan sing ora ana.",
+       "title-invalid-characters": "Sesirah kaca sing dikarepaké ngemu karakter sing ora sah: \"$1\".",
+       "title-invalid-relative": "Sesirah ngemu alamat rélatif. Sesirah kaca relatif (./, ../) iku ora sah amarga ora bisa ditekani lumantar pangluru.",
+       "title-invalid-magic-tilde": "Sesirah kaca sing dikarepaké ngemu reroncèn tilda (<nowiki>~~~</nowiki>) sing ora sah.",
+       "title-invalid-too-long": "Sesirah kaca sing dikarepaké kedawan. Kuduné ora munjuli $1 bèt sarana kodhé UTF-8.",
+       "title-invalid-leading-colon": "Sesirah kaca sing dikarepaké ngemu titik loro sing ora sah ing ngarepé.",
        "perfcached": "Data ing ngisor iki kasimpen ing telih lan mungkin durung dianyari. Paling akèh ana {{PLURAL:$1|sakasil|$1 kasil}} sumadhiya ing telih iku.",
        "perfcachedts": "Data ing ngisor iki kasimpen ing telih, lan pungkasan dianyari $1. Paling akèh ana {{PLURAL:$4|sakasil|$4 kasil}} sumadhiya ing telih iku.",
        "querypage-no-updates": "Update saka kaca iki lagi dipatèni. Data sing ana ing kéné saiki ora bisa bakal dibalèni unggah manèh.",
        "actionthrottled": "Tindakan diwatesi",
        "actionthrottledtext": "Minangka sawijining pepesthèn anti-spam, panjenengan diwatesi nglakoni tindhakan iki sing cacahé kakèhan ing wektu cendhak.\nMangga dicoba manèh ing sawetara menit.",
        "protectedpagetext": "Kaca iki wis digembok supaya ora bisa disunting lan diapa-apakaké.",
-       "viewsourcetext": "Sampéyan bisa ndeleng lan nyalin sumbering kaca iki.",
-       "viewyourtext": "Sampéyan bisa ndeleng lan nyalin sumbering <strong>besutaning sampéyan</strong> ing kaca iki.",
+       "viewsourcetext": "Panjenengan bisa ndeleng lan nurun sumberé kaca iki.",
+       "viewyourtext": "Panjenengan bisa ndeleng lan nurun sumberé <strong>besutané panjenengan</strong> nyang kaca iki.",
        "protectedinterface": "Kaca iki isiné tèks antarmuka sing dienggo software lan wis dikunci kanggo menghindari kasalahan.",
        "editinginterface": "'''Pènget:''' Panjenengan nyunting kaca sing dianggo nyedyakaké tèks antarmuka kanggo piranti alus.\nPangowahan kaca iki bakal awèh pangaruh marang tampilan antarmuka panganggo kanggoné panganggo liya.\nKanggo terjemahan, mangga nganggo [https://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], proyèk lokalisasi MediaWiki.",
        "translateinterface": "Saperlu nambah utawa ngowah pertalan tumrap kabèh wiki, mangga anggoa [https://translatewiki.net/ translatewiki.net] minangka proyèk panglokaling MediaWiki.",
        "cascadeprotected": "Kaca iki wis direksa saka besutan amarga katransklusi ing {{PLURAL:$1|kaca, sing|kaca-kaca, sing}} kareksa mawa pilihan \"runut\" murub:\n$2",
        "namespaceprotected": "Panjenengan ora kagungan idin kanggo nyunting kaca ing bilik nama '''$1'''.",
-       "customcssprotected": "Sampéyan ora dililakaké nyunting kaca CSS iki amarga kaisi pangaturan pribadi saka panganggo liya.",
-       "customjsprotected": "Sampéyan ora dililakaké nyunting kaca JavaScript iki amarga kaisi pangaturan pribadi saka panganggo liya.",
+       "customcssprotected": "Panjenengan ora diidinaké mbesut kaca CSS iki amarga isiné setèlan pribadhi panganggo liyané.",
+       "customjsprotected": "Panjenengan ora diidinaké mbesut kaca JavaScript iki amarga isiné setèlan pribadhi panganggo liyané.",
        "mycustomcssprotected": "Sampèyan ora duwé idin kanggo ngowah kaca CSS iki.",
        "mycustomjsprotected": "Sampèyan ora duwé idin kanggo ngowah kaca JavaScript iki.",
        "myprivateinfoprotected": "Sampèyan ora duwé idin kanggo ngowah informasi privat sampèyan.",
        "virus-badscanner": "Kasalahan konfigurasi: pamindai virus ora dikenal: ''$1''",
        "virus-scanfailed": "''Pemindaian'' utawa ''scan'' gagal (kode $1)",
        "virus-unknownscanner": "antivirus buhbuhan:",
-       "logouttext": "'''Sampéyan wis metu log'''\n\nCathet yèn sapérangan kaca mungkin isih nampilaké kayata sampéyan isih mlebu log, kuwi bisa ilang yèn sampéyan ngresiki ''cache'' pramban sampéyan.",
+       "logouttext": "<strong>Panjenengan saiki wis metu.</strong>\n\nTulung gatèkaké yèn sawenèh kaca bokmanawa bakal isih katon kaya déné yèn panjenengan isih mlebu log, mula busakana cache pangluruné panjenengan.",
        "cannotlogoutnow-title": "Ora bisa metu saiki",
        "cannotlogoutnow-text": "Metu ora mungkin menawa nganggo $1.",
        "welcomeuser": "Sugeng Rawuh, $1!",
        "welcomecreation-msg": "Akun panjenengan wis kacipta. Aja lali nata konfigurasi [[Special:Preferences|preferensi {{SITENAME}}]] panjenengan.",
        "yourname": "Jeneng panganggo:",
        "userlogin-yourname": "Jeneng panganggo",
-       "userlogin-yourname-ph": "Isi jeneng panganggoning sampéyan",
+       "userlogin-yourname-ph": "Isènana jeneng panganggoné panjenengan",
        "createacct-another-username-ph": "Isi jeneng panganggo",
        "yourpassword": "Tembung wadi:",
        "userlogin-yourpassword": "Tembung wadi",
-       "userlogin-yourpassword-ph": "Lebokaké tembung wadining sampéyan",
+       "userlogin-yourpassword-ph": "Isènana tembung wadiné panjenengan",
        "createacct-yourpassword-ph": "Lebokaké tembung wadi",
        "yourpasswordagain": "Tik manèh tembung wadiné:",
        "createacct-yourpasswordagain": "Netepaké tembung wadi",
        "cannotcreateaccount-title": "Ora bisa gawé akun",
        "cannotcreateaccount-text": "Gawé akun langsung ora bisa ing wiki iki.",
        "yourdomainname": "Dhomain panjenengan",
-       "password-change-forbidden": "Sampéyan ora bisa ngganti tembung sandhi nèng wiki iki.",
+       "password-change-forbidden": "Panjenengan ora bisa ngowahi tembung wadi ing wiki iki.",
        "externaldberror": "Ana kasalahan otèntikasi basis dhata èksternal utawa panjenengan ora pareng nglakoni pemutakhiran marang akun èksternal panjenengan.",
        "login": "Mlebu",
        "login-security": "Vèrifikasi idhèntitas panjenengan",
        "userlogin-noaccount": "Durung duwé akun?",
        "userlogin-joinproject": "Mèlua {{SITENAME}}",
        "createaccount": "Gawé akun",
-       "userlogin-resetpassword-link": "Lali tembung wadining sampéyan?",
+       "userlogin-resetpassword-link": "Lali tembung wadiné panjenengan?",
        "userlogin-helplink2": "Tulungi mlebu",
        "userlogin-loggedin": "Panjenengan wis mlebu log minangka {{GENDER:$1|$1}}.\nAnggonen formulir ngisor iki saperlu mlebu log minangka panganggo liya.",
        "userlogin-createanother": "Gawé akun liya",
        "createacct-emailrequired": "Alamat layang èlèktronik",
        "createacct-emailoptional": "Alamat layang èlèktronik (manasuka)",
-       "createacct-email-ph": "Lebokaké layang èlèktronik sampéyan",
+       "createacct-email-ph": "Isènana layang-èlé panjenengan",
        "createacct-another-email-ph": "Isi alamat layang èlèktronik",
        "createaccountmail": "Nganggoa sandi sauntara sembarang lan kirimna liwat layang e-mail ing ngisor iki",
        "createacct-realname": "Jeneng asli (manasuka)",
        "createacct-reason": "Alesan",
        "createacct-reason-ph": "Alesané panjenengan nggawé akun liya",
-       "createacct-submit": "Gawé akun sampéyan",
+       "createacct-submit": "Gawé akuné panjenengan",
        "createacct-another-submit": "Gawé akun",
        "createacct-continue-submit": "Banjuraké gawé akun",
        "createacct-another-continue-submit": "Banjuraké gawé akun",
-       "createacct-benefit-heading": "{{SITENAME}} digawé déning wong-wong kaya déné sampéyan.",
+       "createacct-benefit-heading": "{{SITENAME}} digawé déning wong-wong kaya panjenengan.",
        "createacct-benefit-body1": "{{PLURAL:$1|besutan}}",
        "createacct-benefit-body2": "{{PLURAL:$1|kaca}}",
        "createacct-benefit-body3": "{{PLURAL:$1|sing nyumbang}} pungkasan",
        "createaccounterror": "Ora bisa gawé akun: $1",
        "nocookiesnew": "Rékening utawa akun panganggo panjenengan wis digawé, nanging panjenengan durung mlebu log. {{SITENAME}} nggunakaké ''cookies'' kanggo  log panganggo. ''Cookies'' ing panjlajah wèb panjengengan dipatèni. Mangga diaktifaké lan mlebu log manèh mawa jeneng panganggo lan tembung sandhi panjenengan.",
        "nocookieslogin": "{{SITENAME}} nggunakaké ''cookies'' kanggo log panganggoné. ''Cookies'' ing panjlajah wèb panjenengan dipatèni. Mangga ngaktifaké manèh lan coba manèh.",
-       "nocookiesfornew": "Akun panganggo ora digawé amarga sumberé ora bisa dipesthèkaké.\nPesthèkaké sampéyan wis ngurubaké kuki, banjur balèni ngamot kaca iki lan njajal manèh.",
-       "createacct-loginerror": "Akuné wis kasil digawe nanging sampéyan ora bisa mlebu otomatis. Mangga [[Special:UserLogin|mlebua manual]].",
+       "nocookiesfornew": "Akun panganggoné wurung digawé amarga awak dhéwé ora bisa mesthèkaké sumberé.\nPesthèkaké panjenengan wis ngurubaké kuki, banjur ambalana ngamot kaca iki lan njajalana manèh.",
+       "createacct-loginerror": "Akuné wis kasil digawe nanging panjenengan ora bisa otomatis mlebu. Mangga [[Special:UserLogin|mlebua kanthi manual]].",
        "noname": "Asma panganggo sing panjenengan pilih ora sah.",
        "loginsuccesstitle": "Kasil mlebu",
-       "loginsuccess": "'''Panjenengan saiki mlebu ing {{SITENAME}} kanthi asma \"$1\".'''",
+       "loginsuccess": "<strong>Panjenengan saiki wis mlebu log ing {{SITENAME}} minangka \"$1\".</strong>",
        "nosuchuser": "Ora ana panganggo mawa asma \"$1\".\nJeneng panganggo iku mbédakaké kapitalisasi.\nCoba dipriksa manèh pasang aksarané, utawa [[Special:CreateAccount|gawé akun anyar]].",
        "nosuchusershort": "Ora ana panganggo mawa asma \"$1\". Coba dipriksa manèh pasang aksarané (éjaané).",
        "nouserspecified": "Panjenengan kudu milih asma panganggo.",
        "createaccount-title": "Gawé rékening kanggo {{SITENAME}}",
        "createaccount-text": "Ana wong sing nggawé sawijining akun utawa rékening kanggo alamat e-mail panjenengan ing {{SITENAME}} ($4) mawa jeneng \"$2\" lan tembung sandi \"$3\". Panjenengan disaranaké kanggo mlebu log lan ngganti tembung sandi panjenengan saiki.\n\nPanjenengan bisa nglirwakaké pesen iki yèn akun utawa rékening iki digawé déné sawijining kaluputan.",
        "login-throttled": "Panjenengan wis kakèhan njajal mlebu log.\nTulung nunggu dhisik $1 sadurungé njajal manèh.",
-       "login-abort-generic": "Sampéyan ora bisa mlebu - Kawurungan",
+       "login-abort-generic": "Panjenengan ora bisa mlebu log - Kawurungan",
+       "login-migrated-generic": "Akuné panjenengan wis dimigrasi, lan jeneng panganggoné wis ora ana manèh ing wiki iki.",
        "loginlanguagelabel": "Basa: $1",
        "suspicious-userlogout": "Panjaluk panjenengan supaya metu ditolak amarga katoné panjlajah internt utawa proksi panyinggah.",
        "createacct-another-realname-tip": "Jeneng asli ora kudu diisi.\nYèn diisi, jeneng asliné panjenengan bakal kanggo atribusi awit karyané panjenengan.",
        "user-mail-no-addy": "Njajal ngirim layang èlèktronik tanpa alamat layang èlèktronik.",
        "user-mail-no-body": "Nyoba ngirim layang e-mail, tapi isine kosong.",
        "changepassword": "Ganti tembung wadi",
-       "resetpass_announce": "Kanggo ngrampungaké lelakoning lumebu, sampéyan kudu masang tembung wadi anyar.",
+       "resetpass_announce": "Saperlu ngrampungaké olèhé mlebu log, panjenengan kudu nggawé tembung wadi anyar.",
        "resetpass_text": "<!-- Tambahaké teks ing kéné -->",
        "resetpass_header": "Ganti tembung wadining akun",
        "oldpassword": "Tembung wadi lawas:",
        "newpassword": "Tembung wadi anyar:",
        "retypenew": "Tik manèh tembung wadi anyaré:",
        "resetpass_submit": "Nata tembung sandhi lan mlebu log",
-       "changepassword-success": "Tembung wadining sampéyan kasil diowah!",
+       "changepassword-success": "Tembung wadiné panjenengan kasil diowah!",
+       "changepassword-throttled": "Panjenengan wis kakèhan njajal mlebu log.\nTulung nunggu dhisik $1 sadurungé njajal manèh.",
        "botpasswords": "Tembung wadi bot",
+       "botpasswords-disabled": "Tembung wadiné bot dipatèni.",
+       "botpasswords-no-central-id": "Saperlu nganggo tembung wadiné bot, panjenengan kudu mlebu nyang akun séntral.",
+       "botpasswords-existing": "Tembung wadiné bot sing cumepak",
+       "botpasswords-createnew": "Gawé anyar tembung wadiné bot",
+       "botpasswords-editexisting": "Besut tembung wadiné bot sing anyar",
        "botpasswords-label-appid": "Jeneng bot:",
        "botpasswords-label-create": "Gawé",
        "botpasswords-label-update": "Anyari",
        "showdiff": "Tuduhaké owahan",
        "anoneditwarning": "<strong>Pènget:</strong> Panjenengan durung mlebu log. Alamat IP-né panjenengan bakal katon marang wong akèh manawa panjenengan mbesut. Manawa panjenengan <strong>[$1 mlebu log]</strong> utawa <strong>[$2 nggawé akun]</strong>, besutané panjenengan bakal dadi darbéné naragunané panjenengan lan uga ana kauntungan liya.",
        "anonpreviewwarning": "<em>Panjenengan durung mlebu log. Yèn disimpen, alamat IP panjenengan bakal kacathet ing sujarah besutan kaca iki.</em>",
-       "missingsummary": "'''Pènget:''' Panjenengan ora nglebokaké ringkesan panyuntingan. Menawa panjenengan mencèt tombol Simpen manèh, suntingan panjenengan bakal kasimpen tanpa ringkesan panyuntingan.",
+       "missingsummary": "<strong>Pangéling-éling:</strong> Panjenengan ora ngisèni ringkesané besutan.\nManawa panjenengan mencèt \"{{int:savearticle}}\" manèh, besutané panjengan bakal kasimpen tanpa katerangan.",
        "selfredirect": "<strong>Pélik:</strong> Sampéyan ngalih kaca iki iya nyang kaca iki dhéwé.\nSampéyan mungkin salah wènèh tujuan kanggo alihan utawa salah mbesut kaca.\nYèn sampéyan ngeklik \"{{int:savearticle}}\" manèh, kaca alihan bakal digawé.",
        "missingcommenttext": "Mangga isi tanggapan ing ngisor iki.",
        "missingcommentheader": "'''Pangéling:''' Sampéyan durung nyadhiyakaké judhul/jejer kanggo tanggepan iki.\nYèn Sampéyan klik \"{{int:savearticle}}\" manèh, suntingan Sampéyan bakal kasimpen tanpa kuwi.",
        "note": "<strong>Cathetan:</strong>",
        "previewnote": "<strong>Élinga yèn iki mung pratuduh.</strong>\nOwahanmu durung kasimpen!",
        "continue-editing": "Menyang pambesutan",
-       "previewconflict": "Pratilik iki nuduhaké tèks ing bagian dhuwur kothak suntingan tèks kayadéné bakal katon yèn panjenengan bakal simpen.",
+       "previewconflict": "Pratuduh iki nuduhaké tèksé ing pérangan ndhuwur kothak besutan tèks lan nuduhaké wujudé kaya déné yèn wis disimpen.",
        "session_fail_preview": "Ngapunten! Kita ora bisa mrosès besutan panjenengan amarga ilangé sèsi data.\n\nPanjenengan bokmanawa wis metu log. <strong>Mangga vèrifikasi manawa panjenengan isih mlebu log lan jajala manèh</strong>.\nManawa isih durung kena, jajala [[Special:UserLogout|metu log]] lan mlebu log manèh, banjur priksaa apa browser panjenengan ngidinaké kuki saka situs iki.",
        "session_fail_preview_html": "'''Nuwun sèwu! Kita ora bisa prosès suntingan panjenengan amerga data sési ilang.'''\n\n''Amerga wiki iki ngidinaké panrapan HTML mentah, pratayang didelikaké minangka penggakan marang serangan Javascript.''\n\n'''Yèn iki sawijining upaya suntingan sing absah, mangga dicoba manèh. Yèn isih tetep ora kasil, cobanen metu log utawa oncat lan mlebua manèh.'''",
-       "token_suffix_mismatch": "'''Suntingan panjenengan ditulak amerga aplikasi klièn panjenengan ngowahi karakter tandha wewacan ing suntingan. Suntingan iku ditulak kanggo untuk menggak kaluputan ing tèks artikel. Prekara iki kadhangkala dumadi yèn panjenengan ngangem dines layanan proxy anonim adhedhasar situs wèb sing duwé masalah.'''",
+       "token_suffix_mismatch": "<strong>Besutané panjenengan ditulak amarga aplikasi klièné panjenengan ngowahi karakter tandha waca ing token besutané.</strong>\nBesutané wis ditulak kanggo nyegah rusaké tèks kaca.\nSing kaya mangkono biyasané kadadéan nalika panjenengan nganggo paladenan proksi anonim sing lelandhesan jaringan.",
        "edit_form_incomplete": "'''Sebagéyan pormulir suntingan ora tekan nèng sasana; cèk pindho yèn suntingan Sampéyan isih wutuh lan jajal manèh.'''",
        "editing": "Mbesut $1",
        "creating": "Nggawé $1",
        "recreate-moveddeleted-warn": "'''Pènget: Panjenengan gawé manèh sawijining kaca sing wis tau dibusak.'''\n\nMangga digagas manèh apa pantes nerusaké nyunting kaca iki.\nIng ngisor iki kapacak log pambusakan lan pamindhahan saka kaca iki:",
        "moveddeleted-notice": "Kaca iki wis dibusak.\nCathetan busakan lan lih-lihan kaca ana ing ngisor minangka rujukan.",
        "log-fulllog": "Deleng cathetan wutuh",
-       "edit-hook-aborted": "Suntingan dibatalaké déning kait parser\nTanpa ana katrangan.",
+       "edit-hook-aborted": "Besutan diwurungaké déning cangkolan.\nOra ana katerangané.",
        "edit-gone-missing": "Ora bisa nganyari kaca.\nKatoné kaca iki wis dibusak.",
        "edit-conflict": "Cengkah besutan",
-       "edit-no-change": "Suntingan panjenengan dilirwakaké amerga panjenengan ora nglakoni pangowahan apa-apa ing tèks.",
+       "edit-no-change": "Besutané panjenengan dilirwakaké amarga ora ana owahan apa-apa nyang tèksé.",
        "postedit-confirmation-created": "Kaca wis kagawé.",
        "postedit-confirmation-saved": "Besutané panjenengan wis kasimpen.",
        "edit-already-exists": "Ora bisa nggawé kaca anyar.\nAmerga wis ana.",
        "right-edituserjs": "Besut barkas-barkas JavaScript panganggo liya",
        "right-editmyusercss": "Owahi berkas CSS panganggo sampeyan",
        "right-editmyuserjs": "Owahi berkas JavaScript panganggo sampeyan",
-       "right-viewmywatchlist": "Deleng pawawanganing sampéyan",
+       "right-viewmywatchlist": "Deleng pawawangané panjenengan",
        "right-editmywatchlist": "Owahi daftar pangawasan sampeyan. Cathetan: ana cara liyane kanggo nambahi kaca menyang daftar, sanadyan ora duwe hak iki.",
        "right-viewmyprivateinfo": "Dheleng data pribadi sampeyan (kayata alamat layang elektronik, jeneng asli)",
        "right-editmyprivateinfo": "Owahi data pribadi sampeyan (kayata alamat layang elektronik, jeneng asli)",
        "reuploaddesc": "Bali ing formulir pamotan",
        "upload-tryagain": "Kirim déskripsi berkas sing wis diowah",
        "uploadnologin": "Durung mlebu log",
-       "uploadnologintext": "Sampéyan kudu $1 supaya bisa ngunggah berkas.",
+       "uploadnologintext": "Mangga $1 saperlu ngunggah barkas.",
        "upload_directory_missing": "Direktori pamunggahan ($1) ora ditemokaké lan ora bisa digawé déning server wèb.",
        "upload_directory_read_only": "Dhirèktori pangunggahan ($1) ora bisa ditulis déning paladèn jaringan.",
        "uploaderror": "Kaluputan pangunggahan berkas",
        "filetype-unwanted-type": "'''\".$1\"''' klebu jenis berkas sing ora diidinaké.\nLuwih becik {{PLURAL:$3|jinis berkas|Jinis-jinis berkas}} $2.",
        "filetype-banned-type": "'''\".$1\"''' {{PLURAL:$4|dudu jinis berkas sing dililakaké|dudu jinis berkas sing dililakaké}}.\n{{PLURAL:$3|Berkas|Berkas}} sing dililakaké $2.",
        "filetype-missing": "Berkas ini ora duwé ekstènsi (contoné \".jpg\").",
-       "empty-file": "Berkas sing Sampéyan kirim kosong.",
-       "file-too-large": "Berkas sing Sampéyan kirim kagedhèn.",
+       "empty-file": "Barkas sing panjenengan kirim kosong.",
+       "file-too-large": "Barkas sing panjenengan kirim kagedhèn.",
        "filename-tooshort": "Jeneng berkas kacendhèken.",
        "filetype-banned": "Jinis berkas iki dilarang.",
        "verification-error": "Berkas iki ora lulus pangesahan.",
-       "hookaborted": "Pangowahan sing Sampéyan coba dibatalaké déning èkstènsi.",
+       "hookaborted": "Owahan sing panjenengan ayahi diwurungaké déning èkstènsi.",
        "illegal-filename": "Jeneng berkas ora dililakaké.",
        "overwrite": "Nibani berkas sing wis ana ora dililakaké.",
        "unknown-error": "Ana masalah sing ora dingertèni.",
        "uploadstash": "Unggah pandhelikan",
        "uploadstash-summary": "Kaca iki nyadhiyakaké dalan nèng berkas-berkas sing wis diunggah (utawa lagi diunggah) naning durung diterbitaké nèng wiki. Berkas-berkas iki ora katon kanggo sapa waé nanging namung kanggo panganggo sing ngunggah waé.",
        "uploadstash-clear": "Busak berkas kadhelikaké",
-       "uploadstash-nofiles": "Sampéyan ora nduwé berkas kadhelikaké.",
+       "uploadstash-nofiles": "Panjenengan ora duwé barkas simpenan.",
        "uploadstash-badtoken": "Nglakoni iki ora suksès, mungkin amarga hak panyuntingan Sampéyan wis kedaluwarsa. Jajal manèh.",
        "uploadstash-errclear": "Ngresiki berkas ora suksès.",
        "uploadstash-refresh": "Segeraké daptar berkas",
index 57e041d..f0a3490 100644 (file)
        "summary": "რეზიუმე:",
        "subject": "თემა:",
        "minoredit": "მცირე რედაქტირება",
-       "watchthis": "á\83£á\83\97á\83\95á\83\90á\83\9aá\83\97á\83\95á\83\90á\83\9aá\83\94 ამ გვერდს",
+       "watchthis": "á\83\97á\83\95á\83\90á\83\9aá\83\98 á\83\9bá\83\98á\83\90á\83\93á\83\94á\83\95á\83\9cá\83\94á\83\97 ამ გვერდს",
        "savearticle": "გვერდის შენახვა",
        "savechanges": "ცვლილებების შენახვა",
        "publishpage": "გვერდის გამოქვეყნება",
        "userrights-changeable-col": "ჯგუფები, რომლებიც შეგიძლიათ შეცვალოთ",
        "userrights-unchangeable-col": "ჯგუფები, რომლებიც არ შეგიძლიათ შეცვალოთ",
        "userrights-irreversible-marker": "$1*",
+       "userrights-expiry-none": "დასრულების ვადა არ გასულა",
+       "userrights-expiry": "ვადა:",
+       "userrights-expiry-existing": "დასრულების დრო: $3, $2",
+       "userrights-expiry-othertime": "სხვა დრო:",
+       "userrights-expiry-options": "1 დღე:1 day,1 კვირა:1 week,1 თვე:1 month,3 თვე:3 months,6 თვე:6 months,1 წელი:1 year",
        "userrights-conflict": "მომხმარებელთა უფლებების კონფლიქტი! გთხოვთ ხელმეორედ შეინახოთ თქვენი ცვლილებები.",
        "group": "ჯგუფი:",
        "group-user": "მომხმარებლები",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (იხ. აგრეთვე [[Special:NewPages|ახალი გვერდების სია]])",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "ჩვენება",
+       "rcfilters-activefilters": "აქტიური ფილტრები",
+       "rcfilters-clear-all-filters": "ყველა ფილტრის გაწმენდა",
+       "rcfilters-search-placeholder": "ფილტრის ბოლო ცვლილებები (დაათვალიერეთ ან დაიწყეთ შეყვანა)",
        "rcfilters-highlightmenu-title": "ფერის არჩევა",
+       "rcfilters-filter-humans-label": "ადამიანი (არა ბოტით)",
+       "rcfilters-filter-pageedits-label": "რედაქტირებების გვერდი",
        "rcnotefrom": "ქვემოთ {{PLURAL:$5|ნაჩვენებია ცვლილება|ნაჩვენებია ცვლილებები}} <strong>$3, $4</strong>-დან (ნაჩვენებია არაუმეტეს <strong>$1</strong>).",
        "rclistfrom": "ახალი ცვლილებების ჩვენება დაწყებული $3 $2-დან",
        "rcshowhideminor": "მცირე რედაქტირების $1",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|განაახლა}} დასათაურება $4 ვერსიასთან $3 გვერდთან ({{PLURAL:$7|დამატებული}} $6; {{PLURAL:$9|წაშლილი}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|განაახლა}} დასათაურება $5 ჟურნალის ჩანაწერთან $3 გვერდთან ({{PLURAL:$7|დამატებული}} $6; {{PLURAL:$9|წაშლილი}} $8)",
        "rightsnone": "(არცერთი)",
+       "rightslogentry-temporary-group": "$1 (დროებითი, $2-მდე)",
        "feedback-adding": "თქვენი შეფასების შენახვა...",
        "feedback-back": "უკან",
        "feedback-bugcheck": "კარგია! გთხოვთ, კიდევ ერთხელ შეამოწმეთ, ხომ არ არის აქ რომელიმე უკვე [$1 ნაცნობი შეცდომა].",
index 71c52a4..ca58d98 100644 (file)
@@ -29,7 +29,8 @@
                        "Macofe",
                        "రహ్మానుద్దీన్",
                        "ಶಿವಕುಮಾರ್ ನಾಯಕ್",
-                       "Yogesh"
+                       "Yogesh",
+                       "Lokesha kunchadka"
                ]
        },
        "tog-underline": "ಕೊಂಡಿಗಳ ಕೆಳಗೆ ಗೆರೆ ತೋರಿಸಿ",
        "right-upload": "ಕಡತಗಳನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡು",
        "right-reupload": "ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಫೈಲ್ ಗಳ ಕಡತಗಳ ಮೇಲೆ ಬರೆಯಿರಿ",
        "right-reupload-own": "ವತಃ ತಾವೇ ನಕಲೆರಿಸಿರುವ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಫೈಲ್ ಗಳ ಕಡತಗಳ ಮೇಲೆ ಬರೆಯಿರಿ",
+       "right-writeapi": "ಬರೊವು‍ಟ್ ಇಂದೆನ್ ಬಲಕೆ ಮಾಲ್ಪುಲೆ API",
        "right-delete": "ಪುಟಗಳನ್ನು ಅಳಿಸಿ",
        "right-bigdelete": "ಜಾಸ್ತಿ ಇತಿಹಾಸವಿರುವ ಪುಟಗಳನ್ನು ಅಳಿಸಿ",
        "right-deleterevision": "ಪುಟದ ಕೆಲ ಆವೃತ್ತಿಗಳನ್ನು ಅಳಿಸಿ ಹಾಗು ಉಳಿಸಿ",
        "recentchangeslinked-summary": "ಒಂದು ನಿರ್ದಿಷ್ಟ ಪುಟದಿಂದ (ಅಥವ ನಿರ್ದಿಷ್ಟ ವರ್ಗಕ್ಕೆ ಸೇರಿರುವ ಪುಟಗಳಿಂದ) ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಪುಟಗಳಲ್ಲಿ ಇತ್ತೀಚೆಗೆ ಮಾಡಲಾಗಿರುವ ಬದಲಾವಣೆಗಳನ್ನು ಈ ಕೆಳಗೆ ಪಟ್ಟಿ ಮಾಡಲಾಗಿದೆ.\n[[Special:Watchlist|ನಿಮ್ಮ ವೀಕ್ಷಣಾಪಟ್ಟಿಯಲ್ಲಿ]] ಇರುವ ಪುಟಗಳು '''ದಪ್ಪ ಅಕ್ಷರ'''ಗಳಲ್ಲಿ ಇವೆ.",
        "recentchangeslinked-page": "ಪುಟದ ಹೆಸರು:",
        "recentchangeslinked-to": "ಇದರ ಬದಲಿಗೆ ನೇಮಿತ ಪುಟಕ್ಕೆ ಕೊಂಡಿಯನ್ನು ಹೊಂದಿರುವ ಪುಟಗಳಲ್ಲಿನ ಬದಲಾವಣೆಗಳನ್ನು ತೋರು",
-       "upload": "ಫà³\88ಲà³\8d à²®à³\87ಲà²\95à³\8dà²\95à³\86ರಿಸಿ",
+       "upload": "à²\95ಡತ à²¸à³\87ರಿಸಿ",
        "uploadbtn": "ಫೈಲನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ",
        "reuploaddesc": "ಅಪ್ಲೋಡ್ ಅನ್ನು ನಿಲ್ಲಿಸಿ ಮತ್ತೆ ಅಪ್ಲೋಡ್ ವಕ್ಕಣೆಗೆ ಹಿಂದಿರುಗಿ",
        "uploadnologin": "ಲಾಗಿನ್ ಆಗಿಲ್ಲ",
        "tooltip-feed-atom": "ಈ ಪುಟಕ್ಕೆ Atom ಫೀಡು",
        "tooltip-t-contributions": "{{GENDER:$1|ಈ ಸದಸ್ಯರ}} ಕಾಣಿಕೆಗಳ ಪಟ್ಟಿ",
        "tooltip-t-emailuser": "ಈ ಸದಸ್ಯರಿಗೆ ಇ-ಅಂಚೆಯನ್ನು ಕಳುಹಿಸು",
-       "tooltip-t-upload": "ಫà³\88ಲನà³\8dನà³\81 à²®à³\87ಲà²\95à³\8dà²\95à³\86ರಿಸಿ",
+       "tooltip-t-upload": "à²\95ಡತ à²¸à³\87ರಿಸಿ",
        "tooltip-t-specialpages": "ಎಲ್ಲಾ ವಿಶೇಷ ಪುಟಗಳ ಪಟ್ಟಿ",
        "tooltip-t-print": "ಈ ಪುಟದ ಮುದ್ರಣ ಮಾಡಬಹುದಾದಂತ ಆವೃತ್ತಿ",
        "tooltip-t-permalink": "ಪುಟದ ಈ ಆವೃತ್ತಿಗೆ ಶಾಶ್ವತ ಕೊಂಡಿ",
index 260ade8..4d54f12 100644 (file)
@@ -66,7 +66,8 @@
                        "Tursetic",
                        "Jerrykim306",
                        "Sukjong0406",
-                       "Garam"
+                       "Garam",
+                       "렌즈"
                ]
        },
        "tog-underline": "링크에 밑줄:",
        "rcfilters-filter-registered-description": "로그인된 편집자.",
        "rcfilters-filter-unregistered-label": "등록 안 됨",
        "rcfilters-filter-unregistered-description": "로그인하지 않은 편집자.",
-       "rcfilters-filtergroup-authorship": "원작자 편집",
-       "rcfilters-filter-editsbyself-label": "자신의 편집",
-       "rcfilters-filter-editsbyself-description": "당신의 편집.",
-       "rcfilters-filter-editsbyother-label": "다른 사용자의 편집",
-       "rcfilters-filter-editsbyother-description": "ë\8b¤ë¥¸ ì\82¬ì\9a©ì\9e\90ì\97\90 ì\9d\98í\95\9c í\8e¸ì§\91 (ë\8b¹ì\8b ì\9d\98 í\8e¸ì§\91ì\9d´ ì\95\84ë\8b\98).",
+       "rcfilters-filtergroup-authorship": "원작자 기여",
+       "rcfilters-filter-editsbyself-label": "당신의 변경사항",
+       "rcfilters-filter-editsbyself-description": "당신의 기여.",
+       "rcfilters-filter-editsbyother-label": "다른 사용자의 변경사항",
+       "rcfilters-filter-editsbyother-description": "ë\8b¹ì\8b ì\9d\84 ì \9cì\99¸í\95\9c ëª¨ë\93  ë³\80ê²½ì\82¬í\95­.",
        "rcfilters-filtergroup-userExpLevel": "경험 수준 (등록된 사용자 전용)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "경험 필터는 등록된 사용자만을 검색하기 때문에 이 필터는 \"등록 안 됨\" 필터와 충돌합니다.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"등록 안 됨\" 필터는 하나 이상의 경험 필터와 충돌합니다. 경험 필터는 등록된 사용자만 찾습니다. 충돌되는 필터는 위의 활성화된 필터 목록에 표시됩니다.",
        "rcfilters-filter-major-description": "사소한 편집으로 표시되지 않은 편집.",
        "rcfilters-filtergroup-changetype": "차이 종류",
        "rcfilters-filter-pageedits-label": "문서 편집",
+       "rcfilters-filter-pageedits-description": "위키 내용, 토론, 분류 설명에 대한 편집....",
        "rcfilters-filter-newpages-label": "문서 생성",
        "rcfilters-filter-newpages-description": "새 문서를 만드는 편집.",
        "rcfilters-filter-categorization-label": "분류 차이",
        "rcfilters-filter-categorization-description": "분류에서 추가되거나 제거되는 페이지의 기록.",
+       "rcfilters-filter-logactions-label": "기록된 조치",
        "rcfilters-filter-logactions-description": "관리적 조치, 계정 만들기, 페이지 삭제, 업로드...",
        "rcfilters-hideminor-conflicts-typeofchange-global": "특정한 유형의 변경사항을 \"사소한 편집\"으로 지정할 수 없기 때문에 \"사소한 편집\" 필터는 하나 이상의 변경사항 유형 필터와 충돌합니다. 충돌되는 필터들은 위의 사용 중인 필터 영역에 표시됩니다.",
        "rcfilters-hideminor-conflicts-typeofchange": "특정한 종류의 변경사항은 \"사소한 편집\"으로 지정할 수 없으므로 이 필터는 다음 유형의 변경사항 필터와 충돌합니다: $1",
        "allpages": "모든 문서 목록",
        "nextpage": "다음 문서 ($1)",
        "prevpage": "이전 문서 ($1)",
-       "allpagesfrom": "다음으로 시작하는 문서 표시:",
-       "allpagesto": "다음으로 끝나는 문서 표시:",
+       "allpagesfrom": "다음보다 뒤에 오는 문서 표시:",
+       "allpagesto": "다음 보다 앞에 오는 문서 표시:",
        "allarticles": "모든 문서",
        "allinnamespace": "$1 이름공간의 모든 문서",
        "allpagessubmit": "보기",
        "categories": "분류 목록",
        "categories-submit": "보이기",
        "categoriespagetext": "문서나 자료를 {{PLURAL:$1|포함하고 있는 분류}} 목록입니다.\n[[Special:UnusedCategories|사용되지 않는 분류]]는 여기에 보이지 않습니다.\n[[Special:WantedCategories|필요한 분류]]도 참조하세요.",
-       "categoriesfrom": "다음으로 시작하는 분류 표시:",
+       "categoriesfrom": "검색어와 같거나 검색어보다 뒤에 오는 분류 표시:",
        "deletedcontributions": "삭제된 사용자 기여",
        "deletedcontributions-title": "삭제된 사용자 기여",
        "sp-deletedcontributions-contribs": "기여",
        "enotif_body_intro_moved": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|이동하였으며}} 현재 판은 $3 에서 볼 수 있습니다.",
        "enotif_body_intro_restored": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|되살렸으며}} 현재 판은 $3 에서 볼 수 있습니다.",
        "enotif_body_intro_changed": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|바꾸었으며}} 현재 판은 $3 에서 볼 수 있습니다.",
-       "enotif_lastvisited": "마지막으로 방문한 뒤 생긴 모든 바뀜을 보려면 $1을 보세요.",
-       "enotif_lastdiff": "이 바뀜을 보려면 $1을 보세요.",
+       "enotif_lastvisited": "마지막으로 방문한 뒤 생긴 모든 바뀜을 보려면 $1을 보세요",
+       "enotif_lastdiff": "이 바뀜을 보려면 $1을 보세요",
        "enotif_anon_editor": "익명 사용자 $1",
        "enotif_body": "$WATCHINGUSERNAME님,\n\n$PAGEINTRO $NEWPAGE\n\n편집 요약: $PAGESUMMARY $PAGEMINOREDIT\n\n다음을 통해 편집자와 대화를 할 수 있습니다:\n이메일: $PAGEEDITOR_EMAIL\n위키: $PAGEEDITOR_WIKI\n\n로그인한 상태에서 이 문서를 열기 전에는 다른 알림 이메일을 더 이상 보내지 않습니다. 모든 주시 문서의 알림 딱지를 초기화할 수도 있습니다.\n\n{{SITENAME}} 알림 시스템\n\n--\n이메일 알림 설정을 바꾸시려면 이곳을 방문해주세요:\n{{canonicalurl:{{#special:Preferences}}}}\n\n주시문서 설정을 바꾸려면 다음을 사용하세요:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\n주시문서에서 이 문서를 지우려면 이곳을 방문해주세요:\n$UNWATCHURL\n\n피드백 및 추가 도움 얻기:\n$HELPPAGE",
        "created": "만들었",
        "tooltip-pt-mycontris": "{{GENDER:|내}} 기여 목록",
        "tooltip-pt-anoncontribs": "이 IP 주소의 편집 목록",
        "tooltip-pt-login": "꼭 로그인해야 하는 것은 아니지만, 로그인을 권장합니다.",
+       "tooltip-pt-login-private": "이 위키를 사용하려면 로그인해야 합니다",
        "tooltip-pt-logout": "로그아웃",
        "tooltip-pt-createaccount": "계정을 만들고 로그인하는 것이 좋습니다; 하지만, 필수는 아닙니다",
        "tooltip-ca-talk": "문서의 내용에 대한 토론 문서",
index fa64a53..debe63e 100644 (file)
        "rcfilters-filterlist-noresults": "Keng Filtere fonnt",
        "rcfilters-noresults-conflict": "Näischt fonnt well d'Sichcritère sech widderspriechen",
        "rcfilters-filter-unregistered-description": "Auteuren déi net ageloggt sinn.",
-       "rcfilters-filter-editsbyself-label": "Är eegen Ännerungen",
-       "rcfilters-filter-editsbyself-description": "Ännerunge vun Iech.",
+       "rcfilters-filter-editsbyself-label": "Ännerunge vun Iech",
+       "rcfilters-filter-editsbyself-description": "Är eegen Ännerungen.",
        "rcfilters-filter-editsbyother-label": "Ännerunge vun Aneren",
-       "rcfilters-filter-editsbyother-description": "Ännerunge vun anere Benotzer (net vun Iech).",
+       "rcfilters-filter-editsbyother-description": "All Ännerunge ausser Ären eegenen.",
        "rcfilters-filtergroup-userExpLevel": "Niveau vun der Erfahrung (just fir registréiert Benotzer)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Neier",
        "rcfilters-filter-user-experience-level-newcomer-description": "Manner wéi 10 Ännerungen a manner wéi 4 Deeg Aktivitéit.",
        "enotif_body_intro_moved": "D'{{SITENAME}}-Säit $1 gouf den $PAGEEDITDATE vum $2 {{GENDER:$2|geréckelt}}, kuckt $3 fir déi aktuell Versioun.",
        "enotif_body_intro_restored": "D'{{SITENAME}}-Säit $1 gouf den $PAGEEDITDATE vum $2 {{GENDER:$2|restauréiert}}, kuckt $3 fir déi aktuell Versioun.",
        "enotif_body_intro_changed": "D'{{SITENAME}}-Säit $1 gouf den $PAGEEDITDATE vum $2  {{GENDER:$2|geännert}}, kuckt $3 fir déi aktuell Versioun",
-       "enotif_lastvisited": "All Ännerungen op ee Bléck: $1",
-       "enotif_lastdiff": "Kuckt $1 fir dës Ännerung.",
+       "enotif_lastvisited": "Fir all Ännerungen zanter Dir fir d'lescht hei waart kuckt $1",
+       "enotif_lastdiff": "Fir dës Ännerung ze gesinn, kuckt $1",
        "enotif_anon_editor": "Anonyme Benotzer $1",
        "enotif_body": "Léiwe $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nResumé vum Mataarbechter: $PAGESUMMARY $PAGEMINOREDIT\n\nDen Editeur kontaktéieren:\nE-Mail: $PAGEEDITOR_EMAIL\nWiki: $PAGEEDITOR_WIKI\n\nEt gi soulaang keng weider Maile geschéckt, bis Dir d'Säit nees emol besicht hutt wärend deem Dir ageloggt sidd.\nOp Ärer Iwwerwaachungslëscht kënnt Dir all Noriichtemarkeren zesummen zrécksetzen.\n\n\nÄre frëndleche(n) {{SITENAME}} Noriichtessystem\n\n--\n\nFir d'Astellungen op Ären E-Mailnoriichten z'änneren, besicht w.e.g.\n{{canonicalurl:{{#special:Preferences}}}}\n\n\nFir d'Astellunge vun Ärer Iwwerwaachungslëscht z'änneren, besicht w.e.g.\n{{canonicalurl:Special:Watchlist/edit}}\n\nFeedback a weider Hëllef:\n$HELPPAGE",
        "created": "gemaach",
        "tooltip-pt-mycontris": "Lëscht vun {{GENDER:|Äre}} Kontributiounen",
        "tooltip-pt-anoncontribs": "Eng Lëscht vun Ännerungen déi vun dëser IP-Adress aus gemaach goufen",
        "tooltip-pt-login": "Sech umelle gëtt gäre gesinn, Dir musst et awer net maachen.",
+       "tooltip-pt-login-private": "Dir musst Iech alogge fir dës Wiki ze benotzen",
        "tooltip-pt-logout": "Ofmellen",
        "tooltip-pt-createaccount": "Et gëtt Iech geroden e Benotzerkont unzeleeën an Iech anzeloggen; dat ass awer net obligatoresch",
        "tooltip-ca-talk": "Diskussioun iwwer de Säiteninhalt",
index 0a6b7e9..4774a6f 100644 (file)
        "redirectedfrom": "(Rendirissou da $1)",
        "redirectpagesub": "Paggina de rindirissamento",
        "redirectto": "Rendirissa a:",
-       "lastmodifiedat": "Sta pagina a l'è stæta cangiâ l'urtima votta a e $2 do $1.",
+       "lastmodifiedat": "Sta pagina a l'è stæta cangiâ l'urtima votta o $1 a $2.",
        "viewcount": "'Sta paggina a l'è stæta vista {{PLURAL:$1|solo 'na vòtta|$1 vòtte}}.",
        "protectedpage": "Paggina protetta",
        "jumpto": "Vanni a:",
index a61a4c3..7b5cfb0 100644 (file)
@@ -9,12 +9,12 @@
                ]
        },
        "tog-underline": "ການຂີດເສັ້ນກ້ອງລິງກ໌:",
-       "tog-hideminor": "à»\80àº\8aືà»\88ອàº\87àº\81າàº\99à»\81àº\81à»\89à»\84àº\82à»\80ລັàº\81àº\99à»\89ອàº\8dà»\83àº\99à»\9cà»\89າàº\9bັàº\9aàº\9bຸງລ້າສຸດ",
+       "tog-hideminor": "à»\80àº\8aືà»\88ອàº\87àº\81າàº\99à»\81àº\81à»\89à»\84àº\82à»\80ລັàº\81àº\99à»\89ອàº\8dà»\83àº\99à»\9cà»\89າàº\81າàº\99àº\9bà»\88ຽàº\99à»\81àº\9bງລ້າສຸດ",
        "tog-hidepatrolled": "ເຊື່ອງການແກ້ໄຂທີ່ກວດສອບແລ້ວໃນໜ້າປັບປຸງລ້າສຸດ",
        "tog-newpageshidepatrolled": "ເຊື່ອງໜ້າທີ່ກວດສອບແລ້ວໃນລາຍການໜ້າໃໝ່",
        "tog-hidecategorization": "ເຊື່ອງການຈັດໝວດໝູ່ໜ້າ",
        "tog-extendwatchlist": "ຂະຫຍາຍລາຍການຕິດຕາມໃຫ້ສະແດງການປ່ຽນແປງທັງໝົດ, ບໍ່ແມ່ນພຽງການປ່ຽນແປງລ້າສຸດ",
-       "tog-usenewrc": "àº\88ັàº\94àº\81ຸà»\88ມàº\81າàº\99àº\9bà»\88ຽàº\99à»\81àº\9bàº\87à»\81àº\9aà»\88àº\87àº\95າມà»\9cà»\89າຢູà»\88à»\83àº\99ລາàº\8dàº\81າàº\99àº\9bັàº\9aàº\9bຸງລ້າສຸດແລະລາຍການຕິດຕາມ",
+       "tog-usenewrc": "àº\88ັàº\94àº\81ຸà»\88ມàº\81າàº\99àº\9bà»\88ຽàº\99à»\81àº\9bàº\87à»\81àº\9aà»\88àº\87àº\95າມà»\9cà»\89າຢູà»\88à»\83àº\99ລາàº\8dàº\81າàº\99àº\9bà»\88ຽàº\99à»\81àº\9bງລ້າສຸດແລະລາຍການຕິດຕາມ",
        "tog-numberheadings": "ກຳນົດເລກຫົວເລື່ອງອັດຕະໂນມັດ",
        "tog-showtoolbar": "ສະແດງແຖບເຄື່ອງມືແກ້ໄຂ",
        "tog-editondblclick": "ແກ້ໄຂໜ້າເມື່ອກົດສອງເທື່ອ",
        "minoredit": "ນີ້ແມ່ນການດັດແກ້ເລັກນ້ອຍ",
        "watchthis": "ຕິດຕາມໜ້ານີ້",
        "savearticle": "ບັນທຶກ",
+       "publishpage": "ເຜີຍແຜ່ໜ້າ",
+       "publishchanges": "ເຜີຍແຜ່ການປ່ຽນແປງ",
        "preview": "ລອງເບິ່ງຜົນ",
        "showpreview": "ລອງເບິ່ງຜົນ",
        "showdiff": "ສະແດງສ່ວນຕ່າງ",
        "skin-preview": "ລອງເບິ່ງ",
        "datedefault": "ແນວໃດກໍ່ໄດ້",
        "prefs-personal": "ຂໍ້ມູນຫຼັກຜູ້ໃຊ້",
-       "prefs-rc": "àº\81າàº\99àº\94ັàº\94à»\81àº\81à»\89ຫຼ້າສຸດ",
+       "prefs-rc": "àº\81າàº\99àº\9bà»\88ຽàº\99à»\81àº\9bàº\87ຫຼ້າສຸດ",
        "prefs-watchlist": "ລາຍການຕິດຕາມ",
        "prefs-watchlist-days": "ຈຳນວນມື້ສະແດງ ໃນ ລາຍການຕິດຕາມ:",
        "prefs-watchlist-edits": "ຈຳນວນການດັດແກ້ ສະແດງ ໃນ ລາຍການຕິດຕາມທີ່ຂະຫຍາຍອອກ:",
        "saveprefs": "ບັນທຶກ",
        "prefs-editing": "ການດັດແກ້",
        "searchresultshead": "ຊອກຫາ",
-       "recentchangesdays": "ຈຳນວນມື້ສະແດງໃນການປ່ຽນແປງຫຼ້າສຸດ:",
+       "recentchangesdays": "àº\88ຳàº\99ວàº\99ມືà»\89àº\97ີà»\88àº\88ະສະà»\81àº\94àº\87à»\83àº\99àº\81າàº\99àº\9bà»\88ຽàº\99à»\81àº\9bàº\87ຫຼà»\89າສຸàº\94:",
        "recentchangescount": "ຈຳນວນການແກ້ໄຂທີ່ຕ້ອງການສະແດງໂດຍປະລິຍາຍ:",
+       "prefs-help-recentchangescount": "ລາຍການນີ້ປະກອບດ້ວຍການປ່ຽນແປງຫຼ້າສຸດ, ປະຫວັດໜ້າ, ແລະບັນທຶກ.",
        "savedprefs": "ການຕັ້ງຄ່າຂອງທ່ານໄດ້ຖືກບັນທຶກແລ້ວ.",
        "timezonelegend": "ເຂດເວລາ:",
        "localtime": "ເວລາທ້ອງຖິ່ນ:",
index 407553c..85ff63a 100644 (file)
        "redirectedfrom": "(Pāradresēts no $1)",
        "redirectpagesub": "Pāradresācijas lapa",
        "redirectto": "Pāradresēt uz:",
-       "lastmodifiedat": "Šajā lapā pēdējo izmaiņu izdarīšanas brīdis: $2, $1.",
+       "lastmodifiedat": "Šī lapa pēdējoreiz labota: $1 plkst. $2.",
        "viewcount": "Šī lapa ir tikusi apskatīta $1 {{PLURAL:$1|reizes|reizi|reizes}}.",
        "protectedpage": "Aizsargāta lapa",
        "jumpto": "Pārlēkt uz:",
        "createacct-yourpasswordagain-ph": "Vēlreiz ievadiet paroli",
        "userlogin-remembermypassword": "Atcerēties mani",
        "userlogin-signwithsecure": "Izmantot drošu savienojumu",
+       "cannotlogin-title": "Nevar pieslēgties",
+       "cannotlogin-text": "Pieslēgšanās nav iespējama.",
+       "cannotloginnow-title": "Šobrīd nevar pieslēgties",
        "cannotcreateaccount-title": "Nevar izveidot kontus",
        "yourdomainname": "Tavs domēns",
        "password-change-forbidden": "Šajā wiki paroles nevar mainīt.",
        "botpasswords-label-delete": "Dzēst",
        "botpasswords-label-resetpassword": "Atiestatīt paroli",
        "botpasswords-label-grants-column": "Piešķirts",
+       "botpasswords-bad-appid": "Bota nosaukums \"$1\" nav derīgs.",
        "botpasswords-created-title": "Bota parole izveidota",
        "botpasswords-updated-title": "Bota parole atjaunināta",
        "botpasswords-deleted-title": "Bota parole dzēsta",
        "passwordreset-emailtitle": "Konta informācija {{SITENAME}}",
        "passwordreset-emailelement": "Lietotājvārds: \n$1\n\nPagaidu parole: \n$2",
        "passwordreset-emailsentemail": "Paroles atiestatīšanas e-pasts ir nosūtīts.",
+       "passwordreset-nocaller": "Jānorāda izsaucējs",
        "passwordreset-nosuchcaller": "Izsaucējs nepastāv: $1",
        "passwordreset-invalidemail": "Nederīga e-pasta adrese",
        "changeemail": "Mainīt vai noņemt e-pasta adresi",
        "missingsummary": "'''Atgādinājums''': Tu neesi norādījis izmaiņu kopsavilkumu. Vēlreiz klikšķinot uz \"Saglabāt lapu\", Tavas izmaiņas tiks saglabātas bez kopsavilkuma.",
        "missingcommenttext": "Lūdzu, ievadi tekstu zemāk redzamajā logā!",
        "missingcommentheader": "'''Atgādinājums:''' Tu šim komentāram neesi norādījis virsrakstu/tematu.\nJa tu vēlreiz spiedīsi uz \"{{int:savearticle}}\", tavas izmaiņas tiks saglabātas bez virsraksta.",
-       "summary-preview": "Kopsavilkuma pirmskats:",
+       "summary-preview": "Labojuma kopsavilkuma priekšskatījums:",
        "subject-preview": "Temata pirmskats:",
        "blockedtitle": "Dalībnieks ir bloķēts.",
        "blockedtext": "'''Tavs lietotāja vārds vai IP adrese ir nobloķēta.'''\n\n$1 nobloķēja tavu lietotāja vārdu vai IP adresi.\nBloķējot norādītais iemesls bija: ''$2''.\n\n*Bloka sākums: $8\n*Bloka beigas: $6\n*Bija domāts nobloķēt: $7\n\nTu vari sazināties ar $1 vai kādu citu [[{{MediaWiki:Grouppage-sysop}}|administratoru]] lai apspriestu šo bloku.\n\nPievērs uzmanību, tam, ka ja tu neesi norādījis derīgu e-pasta adresi ''[[Special:Preferences|savās izvēlēs]]'', tev nedarbosies \"sūtīt e-pastu\" iespēja.\n\nTava IP adrese ir $3 un bloka identifikators ir #$5. Lūdzu iekļauj vienu no tiem, vai abus, visos turpmākajos pieprasījumos.",
        "invalid-content-data": "Nederīgi satura dati",
        "content-not-allowed-here": "\"$1\" saturs nav atļauts lapā [[$2]]",
        "editwarning-warning": "Atstājot šo lapu tu zaudēsi izdarītās izmaiņas. \nJa esi pieteicies, jūs vari atspējot šo brīdinājumu savās izvēlēs sadaļā \"rediģēšana\"",
+       "editpage-invalidcontentmodel-title": "Satura modelis nav atbalstīts",
+       "editpage-invalidcontentmodel-text": "Satura modelis \"$1\" nav atbalstīts.",
        "editpage-notsupportedcontentformat-title": "Satura formāts nav atbalstīts",
+       "editpage-notsupportedcontentformat-text": "Satura formātu $1 neatbalsta satura modelis $2.",
        "content-model-wikitext": "vikiteksts",
        "content-model-text": "vienkāršs teksts",
        "content-model-javascript": "JavaScript kods",
        "youremail": "Tava e-pasta adrese:",
        "username": "{{GENDER:$1|Lietotājvārds}}:",
        "prefs-memberingroups": "Pieder {{PLURAL:$1|grupai|grupām}}:",
+       "group-membership-link-with-expiry": "$1 (līdz $2)",
        "prefs-registration": "Reģistrēšanās datums:",
        "yourrealname": "Tavs īstais vārds:",
        "yourlanguage": "Valoda:",
        "prefs-displaywatchlist": "Pamatuzstādījumi",
        "prefs-diffs": "Izmaiņas",
        "prefs-help-prefershttps": "Šie uzstādījumi stāsies spēkā nākamajā pievienošanās reizē.",
-       "userrights": "Dalībnieku tiesību pārvaldība",
-       "userrights-lookup-user": "Pārvaldīt dalībnieka grupas",
+       "userrights": "Dalībnieka tiesības",
+       "userrights-lookup-user": "Izvēlēties dalībnieku",
        "userrights-user-editname": "Ievadi lietotājvārdu:",
-       "editusergroup": "Izmainīt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
+       "editusergroup": "Ielādēt dalībnieka grupas",
        "editinguser": "Izmainīt lietotāja '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) statusu",
-       "userrights-editusergroup": "Izmainīt lietotāja grupas",
+       "userrights-editusergroup": "Izmainīt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
+       "userrights-viewusergroup": "Apskatīt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
        "saveusergroups": "Saglabāt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
        "userrights-groupsmember": "Šobrīd ietilpst grupās:",
        "userrights-groupsmember-auto": "Netiešs dalībnieks:",
        "right-userrights-interwiki": "Mainīt dalīnieku tiesības citās Vikipēdijās",
        "right-siteadmin": "Bloķēt un atbloķēt datubāzi",
        "right-sendemail": "Sūtīt e-pastu citiem dalībniekiem",
+       "right-deletechangetags": "Dzēst [[Special:Tags|iezīmes]] no datubāzes",
        "grant-group-email": "Sūtīt e-pastu",
        "grant-createaccount": "Izveidot kontu",
        "grant-editmywatchlist": "Labot uzraugāmo rakstu sarakstu",
        "action-siteadmin": "bloķēt vai atbloķēt datubāzi",
        "action-sendemail": "sūtīt e-pastus",
        "nchanges": "$1 {{PLURAL:$1|izmaiņas|izmaiņa|izmaiņas}}",
+       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|kopš pēdējā apmeklējuma}}",
        "enhancedrc-history": "vēsture",
        "recentchanges": "Pēdējās izmaiņas",
        "recentchanges-legend": "Pēdējo izmaiņu iespējas",
        "rcfilters-empty-filter": "Nav aktīvu filtru. Tiek rādītas visas izmaiņas.",
        "rcfilters-filterlist-title": "Filtri",
        "rcfilters-filterlist-whatsthis": "Kas tas ir?",
+       "rcfilters-filterlist-feedbacklink": "Sniedz atsauksmes par jaunajiem (bēta) filtriem",
        "rcfilters-highlightbutton-title": "Izcelt rezultātus",
        "rcfilters-highlightmenu-title": "Izvēlies krāsu",
        "rcfilters-highlightmenu-help": "Izvēlies krāsu, lai izceltu šo īpašību",
        "rcfilters-filter-editsbyother-label": "Citu labojumi",
        "rcfilters-filter-editsbyother-description": "Citu dalībnieku veiktie labojumi (bez taviem).",
        "rcfilters-filtergroup-userExpLevel": "Pieredzes līmenis (tikai reģistrētiem dalībniekiem)",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Jaunpienācēji",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Mazāk nekā 10 labojumi un 4 aktīvas dienas.",
+       "rcfilters-filter-user-experience-level-learner-label": "Mācekļi",
+       "rcfilters-filter-user-experience-level-learner-description": "Vairāk aktīvo dienu un labojumu nekā \"Jaunpienācējiem\", bet mazāk nekā \"Pieredzējušiem dalībniekiem\".",
+       "rcfilters-filter-user-experience-level-experienced-label": "Pieredzējuši dalībnieki",
+       "rcfilters-filter-user-experience-level-experienced-description": "Vairāk nekā 30 aktivitāte un 500 labojumi.",
+       "rcfilters-filtergroup-automated": "Automatizēts devums",
+       "rcfilters-filter-bots-label": "Boti",
+       "rcfilters-filter-bots-description": "Ar automatizētiem rīkiem veikti labojumi.",
+       "rcfilters-filter-humans-label": "Cilvēki (ne boti)",
+       "rcfilters-filter-humans-description": "Cilvēku veikti labojumi.",
        "rcfilters-filtergroup-reviewstatus": "Pārskatīšanas statuss",
        "rcfilters-filter-patrolled-label": "Patrulēti",
        "rcfilters-filter-patrolled-description": "Labojumi, kas atzīmēti kā patrulēti.",
        "rcfilters-filter-logactions-label": "Reģistrētās darbības",
        "rcfilters-filter-logactions-description": "Administratīvās darbības, kontu veidošana, lapu dzēšana, augšupielādes...",
        "rcnotefrom": "Šobrīd redzamas izmaiņas kopš '''$2''' (parādītas ne vairāk par '''$1''').",
+       "rclistfromreset": "Atiestatīt datuma izvēli",
        "rclistfrom": "Parādīt jaunas izmaiņas kopš $3 $2",
        "rcshowhideminor": "$1 maznozīmīgos",
        "rcshowhideminor-show": "Rādīt",
        "rcshowhidecategorization": "$1 lapu kategorizēšanu",
        "rcshowhidecategorization-show": "Rādīt",
        "rcshowhidecategorization-hide": "Paslēpt",
-       "rclinks": "Parādīt pēdējās $1 izmaiņas pēdējās $2 dienās.",
+       "rclinks": "Parādīt pēdējās $1 izmaiņas pēdējās $2 dienās",
        "diff": "izmaiņas",
        "hist": "hronoloģija",
        "hide": "paslēpt",
        "apisandbox-dynamic-parameters": "Papildu parametri",
        "apisandbox-dynamic-parameters-add-label": "Pievienot parametru:",
        "apisandbox-dynamic-parameters-add-placeholder": "Parametra nosaukums",
+       "apisandbox-deprecated-parameters": "Novecojuši parametri",
        "apisandbox-results": "Rezultāti",
        "apisandbox-request-url-label": "Pieprasījuma URL:",
        "apisandbox-request-json-label": "Pieprasījuma JSON:",
        "rollback-success": "Novērsu izmaiņas, ko izdarīja $1;\natjaunoju versiju, ko saglabāja $2.",
        "sessionfailure-title": "sesijas kļūda",
        "sessionfailure": "Ir radusies problēma ar sesijas autentifikāciju;\nšī darbība ir atcelta, lai novērstu lietotājvārda iespējami ļaunprātīgu izmantošanu.\nLūdzu, spied \"''back''\" un atjaunini iepriekšējo lapu. Tad mēģini vēlreiz.",
+       "changecontentmodel-legend": "Mainīt satura modeli",
        "changecontentmodel-title-label": "Lapas nosaukums",
+       "changecontentmodel-model-label": "Jauns satura modelis",
        "changecontentmodel-reason-label": "Iemesls:",
        "changecontentmodel-submit": "Mainīt",
        "protectlogpage": "Aizsargāšanas reģistrs",
index 7e1cf99..a1b7369 100644 (file)
@@ -22,7 +22,8 @@
                        "Macofe",
                        "Bowleerin",
                        "SolidBlock",
-                       "Suchichi02"
+                       "Suchichi02",
+                       "逆襲的天邪鬼"
                ]
        },
        "tog-underline": "鏈墊線:",
        "deletecomment": "因:",
        "deleteotherreason": "另/附之因:",
        "deletereasonotherlist": "另因",
-       "deletereason-dropdown": "*常å\88ªä¹\8bå\9b \n** ä½\9cè\80\85ä¹\8bæ±\82\n** ä¾µç\89\88æ¬\8a\n** ç ´å£\9e",
+       "deletereason-dropdown": "*å\88ªå\89\8a常å\9b \n** å»£å\91\8a宣å\82³\n** æ¯\80å£\9eé \81é\9d¢\n** æ\90\8d害ç\89\88æ¬\8a\n** ä½\9cè\80\85è«\8bæ±\82\n** æ\96·æ¸¡",
        "delete-edit-reasonlist": "纂刪因",
        "delete-toobig": "此頁含大誌,過$1修。刪頁限矣,防於{{SITENAME}}之亂也。",
        "delete-warning-toobig": "此頁含大誌,過$1修。刪之可亂{{SITENAME}}之事也;續時留神之。",
index 3de24cd..d209aa7 100644 (file)
@@ -43,7 +43,7 @@
        "tog-watchdeletion": "हमराद्वारा मेटाएल पृष्ठ हमर साकांक्ष सूचीमे राखी",
        "tog-watchrollback": "हमराद्वारा पूर्ववत कएल पृष्ठ हमर सांकक्ष सूचीमे राखी",
        "tog-minordefault": "हमर सभ सम्पादनसभ छोट परिवर्तनक रूपमे चिह्नित करी",
-       "tog-previewontop": "सम्पादन सन्दूक सँ पहिने झलक देखाबी",
+       "tog-previewontop": "सम्पादन सन्दूकसँ पहिने झलक देखाबी",
        "tog-previewonfirst": "पहिल सम्पादनक बाद पूर्वावलोकन देखाबी",
        "tog-enotifwatchlistpages": "जौं हमर ध्यानसूचीक कोनो पन्नामे परिवर्तन हुअए तँ हमरा इमेल पठाबी",
        "tog-enotifusertalkpages": "हमर वार्ता पृष्ठ परिवर्तित भेला पर हमरा इमेल करी",
        "userinvalidcssjstitle": "'''चेतौनी:''' ऐ मे कोनो आवरण \"$1\" नै अछि।\nबनाएल .css आ .js पन्ना लघ्वक्षरक शीर्षकक प्रयोग करैत अछि, जेना {{ns:user}}:Foo/vector.css एकर विरुद्ध {{ns:user}}:Foo/Vector.css ।",
        "updated": "(अद्यतन  कएल)",
        "note": "<strong>टिप्पणी:</strong>",
-       "previewnote": "'''मोन राखू ई मातर पूर्वावलोकन छी।'''\nअहाँक परिवर्तन अखन धरि सँचिआएल नै गेल अछि!",
+       "previewnote": "<strong>मोन राखू ई मात्र पूर्वावलोकन छी।</strong>\nअहाँक परिवर्तन अखन धरि सङ्ग्रह नै कएल गेल अछि!",
        "continue-editing": "सम्पादन क्षेत्र जाए",
        "previewconflict": "ई पूर्वदृश्य देखबैए उपरका सम्पादन क्षेत्रक पाठ, ई आएत जखन अहाँ संरक्षित करब।",
        "session_fail_preview": "'''क्षमा करी! सेशन डाटा नष्ट होमएक कारण अहाँक परिवर्तन रक्षण नै कएल जा सकल।'''\nकृपया पुन: प्रयास करी । यदि एकर बादो सफल नै भेल तँ कृपया [[Special:UserLogout|लग आउट]] करि पुनः सम्प्रवेश करी।",
-       "session_fail_preview_html": "à¤\95à¥\8dषमा à¤\95रà¥\80! à¤¸à¥\87शन à¤¡à¤¾à¤\9fा à¤¨à¤·à¥\8dà¤\9f à¤¹à¥\8bमà¤\8fà¤\95 à¤\95ारण à¤\85हाà¤\81à¤\95 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤°à¤\95à¥\8dषण à¤¨à¥\88 à¤\95à¤\8fल à¤\9cा à¤¸à¤\95ल।\n\n<em>à¤\9aà¥\82à¤\81à¤\95ि {{SITENAME}} à¤ªà¤° à¤°à¤µ à¤\8fà¤\9aà¤\9fिà¤\8fमà¤\8fल à¤¸à¤\95à¥\8dषम à¤\85à¤\9bि, à¤\9cाभासà¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤¹à¤®à¤²à¤¾ à¤¸à¤\81 à¤¬à¤\9aावà¤\95 à¤²à¥\87ल à¤\9dलà¤\95 à¤¨à¥\88 à¤¦à¥\87à¤\96ाà¤\8fल à¤\97à¥\87ल à¤\85à¤\9bि।</em>\n\n<strong>à¤\85à¤\97र à¤\88 à¤\85हाà¤\81à¤\95 à¤µà¥\88ध à¤¸à¤®à¥\8dपादन à¤¯à¤¤à¥\8dन à¤\9bल, à¤¤à¤\81 à¤\95à¥\83पया à¤ªà¥\81नà¤\83 à¤ªà¥\8dरयास à¤\95रà¥\80।</strong>\nयदि à¤\8fà¤\95र à¤¬à¤¾à¤¦à¥\8b à¤¸à¤«à¤² à¤¨à¥\88 à¤­à¥\87ल à¤¤à¤\81 à¤\95à¥\83पया [[Special:UserLogout|लà¤\97 à¤\86à¤\89à¤\9f]] à¤\95रि à¤ªà¥\81नà¤\83 à¤¸à¤®à¥\8dपà¥\8dरवà¥\87श à¤\95रà¥\80 à¤¤à¤¥à¤¾ à¤\9cाà¤\81à¤\9aà¥\80 à¤¯à¤¦à¤¿ à¤\85हाà¤\81à¤\95 à¤¬à¥\8dराà¤\89à¤\9cर à¤\8fहि à¤¸à¤¾à¤\87à¤\9f सँ कुकिजक अनुमति दैत अछि।",
+       "session_fail_preview_html": "à¤\95à¥\8dषमा à¤\95रà¥\80! à¤¸à¥\87शन à¤¡à¤¾à¤\9fा à¤¨à¤·à¥\8dà¤\9f à¤¹à¥\8bमà¤\8fà¤\95 à¤\95ारण à¤\85हाà¤\81à¤\95 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤°à¤\95à¥\8dषण à¤¨à¥\88 à¤\95à¤\8fल à¤\9cा à¤¸à¤\95ल।\n\n<em>à¤\9aà¥\82à¤\81à¤\95ि {{SITENAME}} à¤ªà¤° à¤\95à¤\9aà¥\8dà¤\9aा à¤\8fà¤\9aà¤\9fिà¤\8fमà¤\8fल à¤¸à¤\95à¥\8dषम à¤\85à¤\9bि, à¤\9cाभासà¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤¹à¤®à¤²à¤¾à¤¸à¤\81 à¤¬à¤\9aावà¤\95 à¤²à¥\87ल à¤\9dलà¤\95 à¤¨à¥\88 à¤¦à¥\87à¤\96ाà¤\8fल à¤\97à¥\87ल à¤\85à¤\9bि।</em>\n\n<strong>यदि à¤\88 à¤\85हाà¤\81à¤\95 à¤µà¥\88ध à¤¸à¤®à¥\8dपादन à¤¯à¤¤à¥\8dन à¤\9bल, à¤¤à¤\81 à¤\95à¥\83पया à¤ªà¥\81नà¤\83 à¤ªà¥\8dरयास à¤\95रà¥\80।</strong>\nयदि à¤\8fà¤\95र à¤¬à¤¾à¤¦à¥\8b à¤¸à¤«à¤² à¤¨à¥\88 à¤­à¥\87ल à¤¤à¤\81 à¤\95à¥\83पया [[Special:UserLogout|निषà¥\8dà¤\95à¥\8dरमण]] à¤\95रि à¤ªà¥\81नà¤\83 à¤¸à¤®à¥\8dपà¥\8dरवà¥\87श à¤\95रà¥\80 à¤¤à¤¥à¤¾ à¤\9cाà¤\81à¤\9aà¥\80 à¤¯à¤¦à¤¿ à¤\85हाà¤\81à¤\95 à¤¬à¥\8dराà¤\89à¤\9cर à¤\88 à¤¸à¤¾à¤\87à¤\9fसँ कुकिजक अनुमति दैत अछि।",
        "token_suffix_mismatch": "'''अहाँक सम्पादन अस्वीकार कऽ देल गेल अछि कारण अहाँक ग्राहक प्रेष्यमान अंक विधानक विराम चेन्ह सभकेँ नष्ट कऽ देलन्हि।'''\nई सम्पादन पन्नाक पाठकेँ दूषित होएबासँ बचेबा लेल अमान्य कऽ देल गेल।\nई कखनो काल होइए जखन अहाँ जाल आधारित अनाम दोसरा लेल चल सेवा प्रयुक्त करै छी।",
        "edit_form_incomplete": "<strong>सम्पादन आवेदनक किछु भाग वितरक धरि नै पहुँचल; एक बेर फेर देखी जे अहाँक सम्पादन दुरुस्त अछि आ फेरसँ प्रयास करी।</strong>",
        "editing": "सम्पादन होइए $1",
        "edit-no-change": "अहाँक सम्पादनपर ध्यान नै देल गेल, कारण ऐ सँ पाठमे कोनो परिवर्तन नै आएल।",
        "postedit-confirmation-created": "पन्ना निर्माण करल गेल अछि ।",
        "postedit-confirmation-restored": "पन्नाके पुराण स्थितिमे लौने गेल अछि ।",
-       "postedit-confirmation-saved": "अहाक सम्पादन सुरक्षित भेल ।",
+       "postedit-confirmation-saved": "à¤\85हाà¤\81à¤\95 à¤¸à¤®à¥\8dपादन à¤¸à¥\81रà¤\95à¥\8dषित à¤­à¥\87ल à¥¤",
        "edit-already-exists": "नव पन्नाक निर्माण नै भऽ सकल।\nई पहिनहियेसँ वर्तमान अछि।",
        "defaultmessagetext": "पूर्वनिर्धारित सन्देश पाठ",
        "content-failed-to-parse": "$1 के लेल $2 सामग्री के बिच्छेदन करए में विफल, त्रुटि: $3",
        "right-editmyprivateinfo": "अपन व्यक्तिगत डाटा सम्पादित करू (जेना ई-मेल पता, असली नाम)",
        "right-editmyoptions": "अपन वरीयतासभ सम्पादित करु",
        "right-rollback": "कृपा कऽ अन्तिम प्रयोक्ताक सम्पादन सभकेँ प्रत्यावर्तित करू जे एक खास पन्नाकेँ सम्पादित केलन्हि",
-       "right-markbotedits": "प्रत्यावर्तित सम्पादन सभकेँ स्वचालित सम्पादन देखाउ",
+       "right-markbotedits": "प्रत्यावर्तित सम्पादन सभके बोट सम्पादन देखाबी",
        "right-noratelimit": "दरक सीमासँ प्रभावित नै",
-       "right-import": "दà¥\8bसर à¤µà¤¿à¤\95à¥\80सà¤\81 à¤ªà¤¨à¥\8dना à¤²à¤¿à¤\85",
+       "right-import": "à¤\85नà¥\8dय à¤µà¤¿à¤\95à¥\80सà¤\81 à¤ªà¥\83षà¥\8dठ à¤\86यात à¤\95रà¥\80",
        "right-importupload": "पन्नासभकेँ संचिका उपारोपणसँ आनू",
        "right-patrol": "अन्य सदस्यसभक सम्पादन परीक्षित चिन्हित करी",
        "right-autopatrol": "अपन सम्पादन स्वचालित रूपसँ परीक्षित चिन्हित करी",
        "action-block": "ई प्रयोक्ताकेँ सम्पादनसँ रोकू",
        "action-protect": "ई पन्नाक सुरक्षा स्तर बदलू",
        "action-rollback": "कृपा कऽ अन्तिम प्रयोक्ताक सम्पादनकेँ प्रत्यावर्तित करू जे एक खास पन्नाकेँ सम्पादित केलन्हि",
-       "action-import": "à¤\90 à¤ªà¤¨à¥\8dनाà¤\95à¥\87à¤\81 à¤¦à¥\8bसर à¤µà¤¿à¤\95à¥\80सà¤\81 à¤\86नà¥\82",
+       "action-import": "à¤\95à¥\8bनà¥\8b à¤\85नà¥\8dय à¤µà¤¿à¤\95à¥\80सà¤\81 à¤ªà¥\83षà¥\8dठ à¤\86यात à¤\95रà¥\80",
        "action-importupload": "ऐ पन्नाकेँ संचिका उपारोपणसँ आनू",
        "action-patrol": "अन्य सदस्यसभक सम्पादन परीक्षित करी",
        "action-autopatrol": "अपन सम्पादन स्वचालित रूपसँ परीक्षित करी",
        "action-editmyprivateinfo": "अपन व्यक्तिगत जानकारी सम्पादित करी",
        "action-editcontentmodel": "एक पन्ना के सामग्री मॉडल कें सम्पादन।",
        "action-managechangetags": "ट्याग बनाबी आ सक्षम (असक्षम) करी",
-       "action-applychangetags": "à¤\86हाà¤\81 à¤\95à¥\87 à¤¬à¤¦à¤²à¤¾à¤µ à¤\95à¥\87 à¤¸à¤¾à¤¥ à¤\9fà¥\88à¤\97 à¤\9cà¥\8bडà¥\82।",
+       "action-applychangetags": "à¤\85हाà¤\81à¤\95 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनà¤\95 à¤¸à¤\82à¤\97 à¤\9fà¥\8dयाà¤\97 à¤\9cà¥\8bड़à¥\80।",
        "action-changetags": "जमा करु आर हटाबु स्वतंत्र टैग व्यक्तिगत अवतरण आर लॉग प्रविक्ति पे",
        "action-deletechangetags": "डेटाबेस सँ ट्याग मेटाबी",
        "action-purge": "पृष्ठक क्यास खाली करी",
        "filerevert-legend": "घुराएल संचिका",
        "filerevert-intro": "अहाँ संचिका घुराबैले छी '''[[Media:$1|$1]]''' केँ [$4 संस्करण $3, $2 केँ] लग।",
        "filerevert-comment": "कारण:",
-       "filerevert-defaultcomment": "$2, $1 ($3)à¤\95 à¤\85वतरण à¤ªà¥\82रà¥\8dववत à¤\95à¤\8fलक",
+       "filerevert-defaultcomment": "$2, $1 ($3)à¤\95 à¤\85वतरण à¤ªà¥\82रà¥\8dववत à¤\95à¥\87लक",
        "filerevert-submit": "फेरसँ वएह",
        "filerevert-success": "'''[[Media:$1|$1]]''' घुराएल गेल [$4 version as of $3, $2] लग।",
        "filerevert-badversion": "ओइ कालक कोनो पुरान स्थानीय संस्करण ऐ संचिकाक नै अछि।",
        "emailsent": "ई-पत्र पठेलौं",
        "emailsenttext": "अहाँक ई-पत्र सन्देश पठाएल गेल।",
        "emailuserfooter": "ई ई-मेल $1 {{GENDER:$1|द्वारा}} {{GENDER:$2|$2}}क भेजल गेल छल जेकर लेल \"{{int:emailuser}}\" कार्यके {{SITENAME}} पर प्रयोगमे लाबल गेल छल।",
-       "usermessage-summary": "प्रणाली सन्देश छोडि रहल अछि।",
+       "usermessage-summary": "पà¥\8dरणालà¥\80 à¤¸à¤¨à¥\8dदà¥\87श à¤\9bà¥\8bड़ि à¤°à¤¹à¤² à¤\85à¤\9bि।",
        "usermessage-editor": "प्रणालीक दूत",
        "usermessage-template": "मीडियाविकी:प्रयोक्ता संदेश",
        "watchlist": "साकांक्षसूची",
        "sp-contributions-blocked-notice-anon": "ई अनिकेत अखन प्रतिबन्धित अछि।\nअद्यतन प्रतिबन्धित  वृत्तलेख लेखा सन्दर्भ नीचाँ देल अछि:",
        "sp-contributions-search": "अवदानक लेल ताकू",
        "sp-contributions-username": "अनिकेत संकेत वा प्रयोक्तानाम:",
-       "sp-contributions-toponly": "मात्र ओइ सम्पादन देखाबी जे अद्यतन संशोधन छी।",
-       "sp-contributions-newonly": "मात्र ओइ सम्पादन देखाउ जे पृष्ठ निर्मित भेल अछि",
+       "sp-contributions-toponly": "मात्र ओ सम्पादन देखाबी जे नवीनतम संशोधन छी।",
+       "sp-contributions-newonly": "मात्र ओ सम्पादन देखाबी जहिसँ पृष्ठ निर्मित भेल अछि",
        "sp-contributions-hideminor": "अल्प सम्पादन नुकाबी",
        "sp-contributions-submit": "ताकू",
        "whatlinkshere": "एतय कोन लिङ्क अछि",
        "thumbnail_gd-library": "अपूर्ण जी.डी.पुस्तकालय विन्यास: प्रकार्य $1 अनुपस्थित",
        "thumbnail_image-missing": "संचिका लगैए अनुपस्थित अछि: $1",
        "import": "पन्ना सभकेँ आनू",
-       "importinterwiki": "à¤\95à¥\8bनà¥\8b à¤\94र à¤µà¤¿à¤\95ि सँ आयात करी",
+       "importinterwiki": "à¤\95à¥\8bनà¥\8b à¤\85नà¥\8dय à¤µà¤¿à¤\95à¥\80सँ आयात करी",
        "import-interwiki-text": "एकटा विकी आ पन्ना शीर्षक आनैलेल चुनू।\nसंशोधन तिथि आ सम्पादकक नाम सुरक्षित रहत।\nसभटा ट्रान्सविकी आयात क्रिया सम्प्रवेशित [[Special:Log/import|आयात लग]] पर रहत।",
        "import-interwiki-sourcewiki": "मूल विकि:",
        "import-interwiki-sourcepage": "मूल पन्ना:",
        "import-interwiki-submit": "आयात",
        "import-mapping-default": "पूर्व निर्धारित स्थान सभ पर आयात करी",
        "import-mapping-namespace": "कोनो नामस्थान पर आयात करी",
-       "import-mapping-subpage": "निम्न लिखित पृष्ठ के उपपृष्ठ के रूप में आयात करी:",
+       "import-mapping-subpage": "निम्न लिखित पृष्ठके उपपृष्ठक रूपमे आयात करी:",
        "import-upload-filename": "संचिकानाम:",
        "import-comment": "समीक्षा:",
        "importtext": "मूल विकी [[Special:Export|export utility]] क प्रयोग कऽ संचिका पठाउ।\nअपन संगणकमे एकरा सुरक्षित करू आ एतए उपारोपित करू।",
        "xml-error-string": "$1 पाँतीपर $2, col $3 (byte $4): $5",
        "import-upload": "एक्स.एम.एल. दत्तांश उपारोपित करू",
        "import-token-mismatch": "सेशन डाटा नष्ट भेल।\nअहाँ सायद लग आउट क गेल छी।<strong>कृपया जाँच करी की अहाँ सम्प्रवेशित छी</strong>।\nयदि एकर बादो सफल नै भेल तँ कृपया [[Special:UserLogout|लग आउट]] करि पुनः सम्प्रवेश करी।",
-       "import-invalid-interwiki": "विशिषà¥\8dà¤\9f à¤µà¤¿à¤\95à¥\80सà¤\81 à¤\86यात à¤¨à¥\88 à¤\95ऽ à¤¸à¤\95à¥\88 à¤\9bà¥\80।",
+       "import-invalid-interwiki": "à¤\88 à¤µà¤¿à¤\95à¥\80सà¤\81 à¤\86यात à¤¨à¥\88 à¤­à¤½ à¤¸à¤\95à¥\88त à¤\85à¤\9bि।",
        "import-error-edit": "\"$1\" पन्ना आयातित नै कएल गेल अछि कारण अहाँकेँ एकरा सम्पादित करबाक अधिकार नै अछि।",
        "import-error-create": "\"$1\" पन्ना आयातित नै कएल गेल अछि कारण अहाँकेँ एकरा निर्माण करबाक अधिकार नै अछि।",
        "import-error-interwiki": "पृष्ठ \"$1\" आयात नै केल गेल कियाकि एकर नाम अन्तरविकि जडी बनाबै के लेल आरक्षित अछि।",
        "importlogpage": "आयात सूची",
        "importlogpagetext": "पन्ना सभक प्रशासनिक आयात दोसर विकीक सम्पादन इतिहासक संग।",
        "import-logentry-upload-detail": "$1 अवतरण आयात {{PLURAL:$1|केलक|कएल गेल}}",
-       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|सुधार|सुधार सभ}} $2 सँ",
+       "import-logentry-interwiki-detail": "$2 सँ $1 अवतरण आयात {{PLURAL:$1|कएल गेल|केल गेल}}",
        "javascripttest": "जावास्क्रिप्ट परिक्षण",
        "javascripttest-pagetext-unknownaction": "अज्ञात क्रिया \"$1\" ।",
        "javascripttest-qunit-intro": "mediawiki.org पर [$1 परीक्षण के प्रलेखन] देखु।",
        "dberr-problems": "दुखी छी! ई जालस्थल तकनीकी समस्या अनुभव कऽ अछि।",
        "dberr-again": "किछु काल रुकी आ फेरसँ जानकारी भरी।",
        "dberr-info": "(दत्तनिधि वितरकके सम्पर्क नै कऽ सकल: $1)",
-       "dberr-info-hidden": "(दतà¥\8dतनिधि à¤µà¤¿à¤¤à¤°à¤\95à¤\95à¥\87 à¤¸à¤®à¥\8dपरà¥\8dà¤\95 à¤¨à¥\88 à¤\95ऽ à¤¸à¤\95ल: $1)",
+       "dberr-info-hidden": "(डाà¤\9fाबà¥\87ससà¤\81 à¤¸à¤®à¥\8dपरà¥\8dà¤\95 à¤¨à¥\88 à¤\95à¤\8fल à¤\9cा à¤¸à¤\95ल)",
        "dberr-usegoogle": "ऐ बीचमे अहाँ गूगलसँ खोज कऽ सकै छी।",
        "dberr-outofdate": "मोन राखू जे हमर सामिग्रीक ओकर सूची पुरान भऽ सकैए।",
        "dberr-cachederror": "ई आग्रह कएल पन्नाक उपस्मृति संरक्षित द्वितीयक अछि, आ भऽ सकैए जे अद्यतन नै हुअए।",
        "revdelete-uname-unhid": "प्रयोक्तानाम सोझाँ",
        "revdelete-restricted": "संचालक लेल प्रायोगिक प्रतिबन्ध",
        "revdelete-unrestricted": "संचालक लेल हटाओल प्रतिबन्ध",
-       "logentry-import-upload": "$1 {{GENDER:$2|आयात केल गेल}} $3 संचिका उपारोपन के माध्यम सँ",
-       "logentry-import-interwiki": "$1 {{GENDER:$2|आयात कएल गेल}} $3 कोनो और विकिसँ",
+       "logentry-import-upload": "$1 {{GENDER:$2|आयात केल गेल}} $3 सञ्चिका उपारोपनक माध्यमसँ",
+       "logentry-import-upload-details": "$1द्वारा सञ्चिका उपारोपणसँ $3कें ($4 {{PLURAL:$4|अवतरण|अवतरणसभ}})कें {{GENDER:$2|आयात}} केलक।",
+       "logentry-import-interwiki": "$1 {{GENDER:$2|आयात कएल गेल}} $3 कोनो अन्य विकिसँ",
+       "logentry-import-interwiki-details": "$1द्वारा $3 कें ($4 {{PLURAL:$4|अवतरण|अवतरणसभ}})कें $5सँ {{GENDER:$2|आयात}} केलक।",
        "logentry-merge-merge": "$1 {{GENDER:$2|विलय केल गेल}} $3 के $4 में (संशोधन $5 धरि)",
-       "logentry-move-move": "$1दà¥\8dवारा $3 à¤ªà¥\83षà¥\8dठ $4 à¤ªà¤° {{GENDER:$2|सà¥\8dथानानà¥\8dतरित}} à¤\95à¤\8fलक",
-       "logentry-move-move-noredirect": "$1 द्वारा $3 पर पुनर्निर्देशन नै छोडि ओकरा $4 पर {{GENDER:$2|स्थानान्तरित}} केलक",
+       "logentry-move-move": "$1दà¥\8dवारा $3 à¤ªà¥\83षà¥\8dठ $4 à¤ªà¤° {{GENDER:$2|सà¥\8dथानानà¥\8dतरित}} à¤\95à¥\87लक",
+       "logentry-move-move-noredirect": "$1 à¤¦à¥\8dवारा $3 à¤ªà¤° à¤ªà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन à¤¨à¥\88 à¤\9bà¥\8bड़ि à¤\93à¤\95रा $4 à¤ªà¤° {{GENDER:$2|सà¥\8dथानानà¥\8dतरित}} à¤\95à¥\87लà¤\95",
        "logentry-move-move_redir": "$1 द्वारा $4 सँ पुनर्निर्देशन हटाए $3 क ओहिपर {{GENDER:$2|स्थानान्तरित}} केलक",
        "logentry-move-move_redir-noredirect": "$1 द्वारा $4 सँ पुनार्निर्देश हटाए $3 पर पुनर्निर्देश नै छोडि $3 के $4 पर {{GENDER:$2|स्थानान्तरित}} केलक",
        "logentry-patrol-patrol": "$1 {{GENDER:$2|चिन्हित}} संशोधन $4 $3 पन्नाक निरीक्षित",
        "expand_templates_remove_comments": "टिप्पणी हटाउ",
        "expand_templates_remove_nowiki": "परिणाम में <nowiki> ट्याग हटाउ",
        "expand_templates_generate_xml": "XML के पार्स (parse) वृक्ष देखाउ",
+       "expand_templates_preview": "पूर्वावलोकन",
        "pagelanguage": "पृष्ठ भाषा परिवर्तन करी",
        "pagelang-name": "पन्ना",
        "pagelang-language": "भाषा",
index afa44b8..c19da25 100644 (file)
        "rcfilters-filter-unregistered-label": "Нерегистрирани",
        "rcfilters-filter-unregistered-description": "Уредници кои не се најавени.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Овој филтер е протиставен со {{PLURAL:$2|следниов филтер|следниве филтри}} за искуство, {{PLURAL:$2|кој наоѓа|кои наоѓаат}} само регистрирани корисници: $1",
-       "rcfilters-filtergroup-authorship": "УÑ\80еди Ð°Ð²Ñ\82оÑ\80Ñ\81Ñ\82во",
-       "rcfilters-filter-editsbyself-label": "Ваши сопствени уредувања",
-       "rcfilters-filter-editsbyself-description": "Ð\92аÑ\88и Ñ\83Ñ\80едÑ\83ваÑ\9aа.",
-       "rcfilters-filter-editsbyother-label": "Туѓи уредувања",
-       "rcfilters-filter-editsbyother-description": "УÑ\80едÑ\83ваÑ\9aа Ð½Ð°Ð¿Ñ\80авени Ð¾Ð´ Ð´Ñ\80Ñ\83ги ÐºÐ¾Ñ\80иÑ\81ниÑ\86и (не Ð¾Ð´ Ð²Ð°Ñ\81).",
+       "rcfilters-filtergroup-authorship": "Ð\90вÑ\82оÑ\80Ñ\81Ñ\82во Ð½Ð° Ð¿Ñ\80идонеÑ\81оÑ\82",
+       "rcfilters-filter-editsbyself-label": "Ваши промени",
+       "rcfilters-filter-editsbyself-description": "Ð\92аÑ\88и Ñ\81опÑ\81Ñ\82вени Ð¿Ñ\80идонеÑ\81и.",
+       "rcfilters-filter-editsbyother-label": "Туѓи промени",
+       "rcfilters-filter-editsbyother-description": "СиÑ\82е Ð¿Ñ\80омени Ð½Ð°Ð¿Ñ\80авени Ð¾Ð´ Ð´Ñ\80Ñ\83ги Ñ\83Ñ\80едниÑ\86и",
        "rcfilters-filtergroup-userExpLevel": "Корисничка искусност (само за регистрирани)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Филтрите за искуство пронаоѓаат само регистрирани корисници, така што овој филтер е простиставен со филтерот „Нерегистрирани“.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Филтерот „Нерегистрирани“ е спротиставен на еден или повеќе од филтрите за искуство. Тие филтри наоѓаат само регистрирани корисници. Спротиставените филтри погоре се означени во одделот Активни филтри.",
        "enotif_body_intro_moved": "Страницата $1 на {{SITENAME}} е преместена на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната преработка ќе ја најдете на $3.",
        "enotif_body_intro_restored": "Страницата $1 на {{SITENAME}} е повратена на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната преработка ќе ја најдете на $3.",
        "enotif_body_intro_changed": "Страницата $1 на {{SITENAME}} е изменета на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната преработка ќе ја најдете на $3.",
-       "enotif_lastvisited": "Ð\92идеÑ\82е $1 Ð·Ð° Ñ\81иÑ\82е Ð¿Ñ\80омени Ð¾Ð´ Ð²Ð°Ñ\88аÑ\82а Ð¿Ð¾Ñ\81ледна Ð¿Ð¾Ñ\81еÑ\82а.",
-       "enotif_lastdiff": "Ð\92идеÑ\82е $1 Ð·Ð° Ð´Ð° Ñ\98а Ð²Ð¸Ð´Ð¸Ñ\82е Ð¾Ð²Ð°Ð° Ð¿Ñ\80омена.",
+       "enotif_lastvisited": "СиÑ\82е Ð¿Ñ\80омени Ð¾Ð´ Ð²Ð°Ñ\88аÑ\82а Ð¿Ð¾Ñ\81ледна Ð¿Ð¾Ñ\81еÑ\82а Ñ\9cе Ð³Ð¸ Ð½Ð°Ñ\98деÑ\82е Ð½Ð° $1",
+       "enotif_lastdiff": "Ð\9eваа Ð¿Ñ\80омена Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ñ\98а Ð²Ð¸Ð´Ð¸Ñ\82е Ð½Ð° $1",
        "enotif_anon_editor": "анонимен корисник $1",
        "enotif_body": "Почитуван(а) $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\n$NEWPAGE\n\nОпис од уредникот: $PAGESUMMARY $PAGEMINOREDIT\n\nКонакт на уредникот:\nе-пошта: $PAGEEDITOR_EMAIL\nвики: $PAGEEDITOR_WIKI\n\nПовеќе нема да добивате известувања во случај на други понатамошни активности, освен ако не ја посетите оваа страница додека сте најавени.\nМожете и да ги поништите ознаките за известување за сите набљудувани страници на вашиот список на набљудувања.\n\nИзвестителниот систем на {{SITENAME}}\n\n--\nАко сакате да ги измените нагодувањата за известување по е-пошта, посетете ја страницата\n{{canonicalurl:{{#special:Preferences}}}}\n\nДоколку сакате да ги измените нагодувањата на списокот на набљудувања, посетете ја страницата\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nЗа да ја избришете страницата од списокот на набљудувања, посетете ја страницата\n$UNWATCHURL\n\nВаши мислења, прашања и повеќе помош:\n$HELPPAGE",
        "created": "создадена",
        "tooltip-pt-mycontris": "Список на {{GENDER:|ваши}} придонеси",
        "tooltip-pt-anoncontribs": "Список на уредувања направени од оваа IP-адреса",
        "tooltip-pt-login": "Ви препорачуваме да се најавите, иако тоа не е задолжително.",
+       "tooltip-pt-login-private": "Ќе треба да се најавите за да го користите викито",
        "tooltip-pt-logout": "Одјавување",
        "tooltip-pt-createaccount": "Ви препорачуваме да направите сметка и да се најавите, иако тоа не е задолжително",
        "tooltip-ca-talk": "Разговор за страницата",
index c2ab5da..4203363 100644 (file)
        "rcfilters-filter-unregistered-label": "Uregistrerte",
        "rcfilters-filter-unregistered-description": "Brukere som ikke er logget inn.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Dette filteret konflikterer med følgende {{PLURAL:$2|erfaringsfilter|erfaringsfiltre}}, som finner kun registrerte brukere: $1",
-       "rcfilters-filtergroup-authorship": "Redigeringens forfatter",
-       "rcfilters-filter-editsbyself-label": "Dine egne redigeringer",
-       "rcfilters-filter-editsbyself-description": "Redigeringer gjort av deg.",
-       "rcfilters-filter-editsbyother-label": "Redigeringer av andre",
-       "rcfilters-filter-editsbyother-description": "Redigeringer som er gjort av andre brukere enn deg.",
+       "rcfilters-filtergroup-authorship": "Bidragets forfatter",
+       "rcfilters-filter-editsbyself-label": "Dine redigeringer",
+       "rcfilters-filter-editsbyself-description": "Dine egne bidrag.",
+       "rcfilters-filter-editsbyother-label": "Endringer av andre",
+       "rcfilters-filter-editsbyother-description": "Alle endringer utenom dine egne.",
        "rcfilters-filtergroup-userExpLevel": "Erfaringsnivå (kun for registrerte brukere)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Erfaringsfiltre finner kun registrerte brukere, så dette filteret konflikterer med filteret «Uregistrerte».",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filteret «Uregistrerte» konflikterer med ett eller flere erfaringsfiltre, som kun finner registrerte brukere. De konflikterende filtrene merkes i området for aktive filtre ovenfor.",
        "sp-contributions-uploads": "opplastinger",
        "sp-contributions-logs": "logger",
        "sp-contributions-talk": "diskusjon",
-       "sp-contributions-userrights": "brukerrettighetskontroll",
+       "sp-contributions-userrights": "{{GENDER:$1|bruker&shy;rettighets&shy;kontroll}}",
        "sp-contributions-blocked-notice": "Denne brukeren er for tiden blokkert.\nSiste blokkeringsloggelement kan sees nedenfor.",
        "sp-contributions-blocked-notice-anon": "Denne IP-adressen er for tiden blokkert.\nDen siste oppføringen i blokkeringsloggen er vist nedenfor som referanse:",
        "sp-contributions-search": "Søk etter bidrag",
        "tooltip-pt-mycontris": "En liste over {{GENDER:|dine}} bidrag",
        "tooltip-pt-anoncontribs": "En liste over redigeringer gjort fra denne IP-adressen",
        "tooltip-pt-login": "Du oppfordres til å logge inn, men det er ikke obligatorisk",
+       "tooltip-pt-login-private": "Du må logge inn for å bruke denne wikien",
        "tooltip-pt-logout": "Logg ut",
        "tooltip-pt-createaccount": "Du oppfordres til å opprette en konto og logge inn, men det er ikke obligatorisk.",
        "tooltip-ca-talk": "Diskusjon om innholdssiden",
        "confirmrecreate": "Brukeren [[User:$1|$1]] ([[User talk:$1|diskusjon]]) {{GENDER:$1|slettet}} siden etter at du begynte å redigere den, med begrunnelsen:\n: <em>$2</em>\nVennligst bekreft at du vil gjenopprette siden.",
        "confirmrecreate-noreason": "Brukeren [[User:$1|$1]] ([[User talk:$1|diskusjon]]) {{GENDER:$1|slettet}} denne siden etter at du begynte å redigere. Bekreft at du virkelig ønsker å gjenopprette denne siden.",
        "recreate": "Gjenopprett",
+       "confirm-purge-title": "Slette mellomlagringen av denne siden",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Vil du slette tjenerens mellomlagrede versjon (''cache'') av denne siden?",
        "confirm-purge-bottom": "Rensing av en side sletter mellomlageret og tvinger frem den nyeste versjonen.",
index b25ac56..0ac8735 100644 (file)
@@ -23,7 +23,8 @@
                        "Matma Rex",
                        "जनक राज भट्ट",
                        "Suniltheblue",
-                       "Irus"
+                       "Irus",
+                       "रमेश सिंह बोहरा"
                ]
        },
        "tog-underline": "रेखाङ्कित लिङ्क:",
        "searcharticle": "खोज्ने",
        "history": "पृष्ठको इतिहास",
        "history_short": "पृष्ठको इतिहास",
+       "history_small": "इतिहास",
        "updatedmarker": "मेरो अन्तिम भ्रमण पछि अद्यतन गरिएको",
        "printableversion": "छाप्नयोग्य संस्करण",
        "permalink": "स्थायी लिङ्क",
        "views": "अवलोकनहरू",
        "toolbox": "औजारहरू",
        "tool-link-userrights": "परिवर्तन {{GENDER:$1|प्रयोगकर्ता}} समूह",
+       "tool-link-userrights-readonly": "हेर {{GENDER:$1|user}} groups",
        "tool-link-emailuser": "{{GENDER:$1|प्रयोगकर्ता}} लाई इमेल गर्ने",
        "userpage": "प्रयोगकर्ता पृष्ठ हेर्ने",
        "projectpage": "आयोजना पृष्ठ हेर्ने",
        "userlogin-remembermypassword": "मलाई प्रवेश गराइराख्ने",
        "userlogin-signwithsecure": "सुक्षित जडान प्रयोग गर्ने",
        "cannotlogin-title": "मा लग गर्न सक्दैनौं",
+       "cannotlogin-text": "लगइन नाइभयो",
+       "cannotloginnow-title": "आब लग आउट गद्दु नाइसकिन्य हो",
+       "cannotloginnow-text": "लग आउट सम्भव नाइथी प्रयोग गरन्ज्या $1.",
        "cannotcreateaccount-title": "सिर्जना गर्न सकिँदैन खाता",
        "cannotcreateaccount-text": "प्रत्यक्ष खाता सिर्जना सक्षम छैन on this wiki.",
        "yourdomainname": "तपाईंको ज्ञानक्षेत्र(डोमेन):",
        "password-change-forbidden": "यो विकिमा पासवर्ड परिवर्तन गर्न सक्नुहुन्न।",
        "externaldberror": "यहाँ प्रमाणिकरण डेटाबेस त्रुटि भयो या त तपाईंलाई आफ्नो बाहिरी खाता अद्यतन गर्ने अनुमति छैन।",
        "login": "प्रवेश",
+       "login-security": "तमरो परिचय भेरिफाइ अर ।",
        "nav-login-createaccount": "प्रवेश गर्ने/नयाँ खाता बनाउने",
        "logout": "निर्गमन",
        "userlogout": "निर्गमन (लग आउट)",
        "noname": "तपाईंले सही प्रयोगकर्ता नाम दिनु भएन।",
        "loginsuccesstitle": "प्रवेश सफल",
        "loginsuccess": "'''तपाईंले {{SITENAME}}मा  \"$1\" को रुपमा प्रवेश गर्नुभएकोछ।'''",
-       "nosuchuser": "\"$1\" à¤\95à¥\8b à¤¨à¤¾à¤®à¤¬à¤¾à¤\9f à¤\95à¥\81नà¥\88 à¤ªà¤¨à¤¿ à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤­à¥\87à¤\9fिà¤\8fननà¥\8d à¥¤\nपà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¨à¤¾à¤® à¤µà¤°à¥\8dणसà¤\82वà¥\87दनशà¥\80ल à¤¹à¥\81नà¥\8dà¤\9bनà¥\8d à¥¤\nहिà¤\9cà¥\8dà¤\9cà¥\87 à¤\9cाà¤\81à¤\9aà¥\8dनà¥\81हà¥\8bसà¥\8d , à¤¯à¤¾ [[Special:CreateAccount|नयाà¤\81 à¤\96ाता à¤¬à¤¨à¤¾à¤\89नà¥\81हà¥\8bसà¥\8d]].",
+       "nosuchuser": "\"$1\" à¤\95à¥\8b à¤¨à¤¾à¤®à¤¬à¤ à¥\87 à¤\95à¥\8bà¤\87लà¥\88 à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¨à¤¾à¤\87भà¥\87à¤\9fिया à¥¤\nपà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¨à¤¾à¤® à¤µà¤°à¥\8dणसà¤\82वà¥\87दनशà¥\80ल à¤¹à¥\81नान à¥¤\nहिà¤\9cà¥\8dà¤\9cà¥\87 à¤\9cाà¤\81à¤\9a à¤\85र , à¤¯à¤¾ [[Special:CreateAccount|नयाà¤\81 à¤\96ाता à¤¬à¤¨à¤¾à¤\86]].",
        "nosuchusershort": " \"$1\" नामको कुनै पनि प्रयोगकर्ता भेटिएन।\n तपाईंको हिज्जे जाँच्नुहोस् ।",
        "nouserspecified": "तपाँईले प्रयोगकर्ताको नाम जनाउनुपर्छ।",
        "login-userblocked": "यस प्रयोगकर्तालाई रोक लगाइएको छ। प्रवेश गर्ने अनुमति छैन।",
        "noemail": "प्रयोगकर्ता  \"$1\"को लागि कुनै पनि इ-मेल दर्ता गरिएको छैन ।",
        "noemailcreate": "तपाईंले सही ई-मेल ठेगाना दिनुपर्छ",
        "passwordsent": "\"$1\" को लागि दर्ता गरिएको ई-मेल ठेगानामा एक प्रवेशशव्द पठाइएको छ।\nकृपया त्यसलाई प्राप्त गरेपछि प्रवेश गर्नुहोला ।",
-       "blocked-mailpassword": "तपाà¤\88à¤\82à¤\95à¥\8b IP à¤ à¥\87à¤\97ानालाà¤\88 à¤¸à¤®à¥\8dपादनà¤\97रà¥\8dनबाà¤\9f à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤\9b, à¤° à¤¤à¥\8dयसà¥\88लà¥\87 à¤¦à¥\81रà¥\81पयà¥\8bà¤\97 à¤°à¥\8bà¤\95à¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤ªà¥\8dरवà¥\87सशबà¥\8dद à¤ªà¥\81नरà¥\8dलाभ à¤ªà¥\8dरà¤\95à¥\8dरिया à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dन à¤\85नà¥\81मति à¤\9bà¥\88न ।",
+       "blocked-mailpassword": "तपाà¤\88à¤\82à¤\95à¥\8b IP à¤ à¥\87à¤\97ानालाà¤\88 à¤¸à¤®à¥\8dपादनà¤\97दà¥\8dदà¥\81बठà¥\87 à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87याà¤\95à¥\8b à¤\9b, à¤°à¥\87 à¤¤à¤¬à¥\88 à¤¦à¥\81रà¥\81पयà¥\8bà¤\97 à¤°à¥\8bà¤\95à¥\8dà¤\95ाà¤\95ि à¤²à¥\87à¤\96ा à¤ªà¥\8dरवà¥\87सशबà¥\8dद à¤ªà¥\81नरà¥\8dलाभ à¤ªà¥\8dरà¤\95à¥\8dरिया à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97दà¥\8dदà¥\81 à¤\85नà¥\81मति à¤¨à¤¾à¤\87थà¥\80 ।",
        "eauthentsent": "दिइएको इमेल ठेगानामा इमेल पठाइएको छ ।\nतपाईंको खातामा अरु इमेल पठउनु अघि , इमेलमा लेखिएको मार्गदर्शन अनुसार , त्यो खाता तपाईंकै हो भनेर निश्चित गर्नु पर्नेछ ।",
        "throttled-mailpassword": "बितेको {{PLURAL:$1|घण्टा|$1 घण्टाहरु}} भित्र एउटा पासवर्ड अनुस्मारक पठाई सकिएको छ।\nदुरुपयोगबाट बचाउकोलागि प्रत्येक {{PLURAL:$1|घण्टा|$1 घण्टाहरु}}मा केवल एउटा पासवर्ड अनुस्मारक पठाइन्छ।",
        "mailerror": " चिठी :$1 पठाउँदा त्रुटी भयो",
-       "acct_creation_throttle_hit": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\86à¤\88पà¥\80 à¤ à¥\87à¤\97ानाबाà¤\9f à¤\86à¤\8fà¤\95ा à¤\86à¤\97नà¥\8dतà¥\81à¤\95दà¥\8dवारा à¤¬à¤¿à¤¤à¥\87à¤\95à¥\8b à¤\9aà¥\8cबिस à¤\98णà¥\8dà¤\9fामा à¤¯à¤¸ à¤µà¤¿à¤\95िमा {{PLURAL:$1|à¤\8fà¤\89à¤\9fा à¤\96ाता à¤¬à¤¨à¤¾à¤\87सà¤\95िà¤\8fà¤\95à¥\8b à¤\9b|$1 à¤\96ाताहरà¥\81 à¤¬à¤¨à¤¾à¤\87सà¤\95िà¤\8fà¤\95ा à¤\9bनà¥\8d}}, à¤¯à¤¸ à¤¸à¤®à¤¯à¤¾à¤µà¤§à¤¿à¤®à¤¾ à¤¯à¤¤à¤¿ à¤¨à¥\88à¤\82 à¤\85धिà¤\95तम à¤¸à¥\80मा à¤¹à¥\8b।\nà¤\85तà¤\83 à¤¯à¤¸ à¤¸à¤®à¤¯ à¤¯à¤¸ à¤\86à¤\88पà¥\80 à¤ à¥\87à¤\97ानाà¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dनà¥\87 à¤\86à¤\97नà¥\8dतà¥\81à¤\95लà¥\87 à¤\85रà¥\81 à¤\96ाता à¤\96à¥\8bलà¥\8dन à¤¸à¤\95à¥\8dनà¥\87à¤\9bà¥\88ननà¥\8d।",
+       "acct_creation_throttle_hit": "तमरा à¤\86à¤\88पà¥\80 à¤ à¥\87à¤\97ानाबठà¥\87 à¤\86याà¤\95ा à¤\86à¤\97नà¥\8dतà¥\81à¤\95बठà¥\87 à¤¬à¤¿à¤¤à¥\8dयाà¤\95ा à¤\9aà¥\8cबिस à¤\98णà¥\8dà¤\9fामि à¤¯à¥\88 à¤µà¤¿à¤\95िमा {{PLURAL:$1|à¤\8fà¤\95 à¤\96ाता à¤¬à¤¨à¤¾à¤\87सà¤\95ियाà¤\95à¥\8b à¤\9b|$1 à¤\96ातान à¤¬à¤¨à¤¾à¤\87सà¤\95ियà¤\95ा à¤\9bनà¥\8d}}, à¤¯à¥\88 à¤¸à¤®à¤¯à¤¾à¤µà¤§à¤¿à¤®à¤¿ à¤\87तà¥\8dति à¤\9cà¥\87धाà¤\87 à¤¸à¥\80मा à¤¹à¥\8b।\nà¤\85तà¤\83 à¤¯à¥\88 à¤¸à¤®à¤¯ à¤¯à¥\88 à¤\86à¤\88पà¥\80 à¤ à¥\87à¤\97ानाà¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97दà¥\8dया à¤\86à¤\97नà¥\8dतà¥\81à¤\95लà¥\87 à¤\94र à¤\96ाता à¤\96à¥\8bलà¥\8dलà¥\81 à¤¨à¤¾à¤\87सà¤\95à¥\8dया à¤¹à¥\81न ।",
        "emailauthenticated": "तपाईंको इमेल ठेगाना $2 को $3 मा प्रमाणित गरिएको थियो।",
        "emailnotauthenticated": "तपाईंको इमेल ठेगाना अहिले सम्म प्रमाणित गरिएको छैन ।\nनिम्न सुविधाको लागि कुनै पनि इमेल पठाइने छैन ।",
        "noemailprefs": "निम्न सुविधाहरू राम्ररी काम गर्नको लागि तपाईंको अभिरुचिमा आफ्नो ई-मेल ठेगाना खुलाउनुहोस् ।",
        "createaccount-title": "{{SITENAME}}कोलागि खाता खोल्ने काम",
        "createaccount-text": "कसैले तपाईंको इमेल ठेगानालाई {{SITENAME}} ($4) मा \"$2\" नामको खाता बनाएको छ, जसको पासवर्ड \"$3\" छ ।\nअब तपाईं तुरुन्त लगइन गरेर आफ्नो प्रवेसशब्द परिवर्तन गर्नुहोला ।\nयदी यो खाता गल्तिले खोलिएको रहेछ भने तपाईं यो सन्देशलाई बेवास्ता गर्न सक्नुहुन्छ ।",
        "login-throttled": "तपाईंले भर्खरै धेरै पल्ट प्रवेशको निम्ति प्रयास गर्नुभएको छ ,कृपया $1 पर्खेर मात्र प्रयास गर्नुहोस्।",
-       "login-abort-generic": "तपाà¤\88à¤\82à¤\95à¥\8b à¤ªà¥\8dरवà¥\87श à¤\85सफल à¤­à¤¯à¥\8b - à¤\9bà¥\8bड़ियो",
+       "login-abort-generic": "तमरà¥\8b à¤ªà¥\8dरवà¥\87श à¤\85सफल à¤­à¤¯à¥\8b - à¤\9bाड़ियो",
        "login-migrated-generic": "तपाईंको खाता स्थानान्तरण भएको छ, र तपाईंको प्रयोगकर्ता नाम यस विकिमा छैन ।",
        "loginlanguagelabel": "भाषा: $1",
        "suspicious-userlogout": "तपाईंको निर्गमन अनुरोध अस्विकार गरिन्छ किन कि यो खराब ब्राउजर वा क्यासिङ प्रोक्सिले पठाएको जस्तो देखिन्छ।",
        "createacct-another-realname-tip": "वास्तविक नाम ऐच्छिक हो ।\nतपाईंले यो खुलाउनु भएको खण्डमा तपाईंको काममा प्रयोगकर्ता श्रेय दिनको लागि यसको प्रयोग गरिने छ ।",
        "pt-login": "प्रवेश (लग ईन)",
        "pt-login-button": "प्रवेश",
+       "pt-login-continue-button": "लग इन गद्दाइ रौ",
        "pt-createaccount": "खाता खोल्नुहोस्",
        "pt-userlogout": "निर्गमन (लग आउट)",
        "php-mail-error-unknown": "PHP मेल() क्रियामा अज्ञात त्रुटि",
        "resetpass_submit": "पासवर्ड व्यवस्थित गरी र प्रवेशगर्ने",
        "changepassword-success": "तपाईंको पासवर्ड सफलतापूर्वक परिवर्तन भयो!",
        "changepassword-throttled": "तपाईंले भर्खरै धेरै पल्ट प्रवेश (लग इन)को निम्ति प्रयास गर्नुभएको छ। \nकृपया $1 पर्खेर मात्र प्रयास गर्नुहोस्।",
+       "botpasswords": "पासवर्ड बिसरियो",
+       "botpasswords-createnew": "नयाँ बोट पासवर्ड बनाआ",
+       "botpasswords-label-appid": "बोट नाउँ",
+       "botpasswords-label-create": "सृजना गरअ",
+       "botpasswords-label-update": "अद्यतन गद्द्याया (अपडेट)",
+       "botpasswords-label-cancel": "रद्द गद्द्या",
+       "botpasswords-label-delete": "हटौन्या",
+       "botpasswords-label-resetpassword": "प्रवेस फेरबदल गद्द्या",
        "resetpass_forbidden": "पासवर्ड परिवर्तन गर्न मिल्दैन",
        "resetpass-no-info": "यो पृष्ठ सिधै हेर्नको लागि तपाईंले प्रवेश गर्नुपर्छ ।",
        "resetpass-submit-loggedin": "प्रवेसशब्द परिवर्तन गर्ने",
        "search-interwiki-caption": "भगिनी आयोजना",
        "search-interwiki-default": "$1देखिका नतिजाहरू:",
        "search-interwiki-more": "(अझै)",
+       "search-interwiki-more-results": "धेरै परिणामहरू",
        "search-relatedarticle": "सम्बन्धित",
        "searchrelated": "सम्बन्धित",
        "searchall": "सबै",
        "showingresultsinrange": "देखाई रहेको छ{{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> परिणाम}} सम्म पहुँच  #<strong>$2</strong> देखि #<strong>$3</strong> मा।",
        "search-showingresults": "{{PLURAL:$4|<strong>$3</strong> मा बाट <strong>$1</strong> परिणाम|<strong>$3</strong> मा बाट परिणाम <strong>$1 - $2</strong>}}",
        "search-nonefound": "तपाईंको खोजसँग मेल खाने नतिजाहरू भेटिएनन्",
+       "search-nonefound-thiswiki": "तपाईंको खोजसित मेल खाने नतिजाहरू भेटिएन ।",
        "powersearch-legend": "उन्नत खोज",
        "powersearch-ns": "नेमस्पेसेजहरूमा खोज्ने :",
        "powersearch-togglelabel": "जाँच्ने :",
        "search-external": "बाह्य खोज",
        "searchdisabled": "{{SITENAME}} खोज निस्क्रिय पारिएको छ ।\nहाललाई तपाईं गूगलद्वारा खोज्न सक्नुहुन्छ ।\nयाद गर्नुहोस् उनीहरूको {{SITENAME}}को सूची सामग्री पुरानो भएको हुनसक्छ ।",
        "search-error": "खोज्ने क्रममा समस्या देखियोः $1",
+       "search-warning": "खोज्ने क्रममा समस्या देखियोः $1",
        "preferences": "रोजाइहरू",
        "mypreferences": "प्राथमिकताहरू",
        "prefs-edits": "सम्पादन संख्या:",
        "restoreprefs": "सबै पूर्वनिर्धारित स्थिती कायम गर्ने(सबै खण्डहरूमा)",
        "prefs-editing": "सम्पादन",
        "searchresultshead": "खोज",
-       "stub-threshold": "<a href=\"#\" class=\"stub\">ठूटो</a> को लागि थ्रेसहोल्ड स्वरूपण (बाइट):",
+       "stub-threshold": "ठूटो लिङ्कको लागि थ्रेसहोल्ड स्वरूपण ($1):",
        "stub-threshold-sample-link": "उदाहरण",
        "stub-threshold-disabled": "निष्क्रिय",
        "recentchangesdays": "हालको परिवर्तनमा देखाउने दिनहरू:",
index d79467e..5138e1b 100644 (file)
        "rcfilters-highlightmenu-help": "Selecteer een kleur om deze eigenschap uit te lichten",
        "rcfilters-filterlist-noresults": "Geen filters gevonden",
        "rcfilters-noresults-conflict": "Geen resultaten gevonden omdat de zoekcriteria met elkaar conflicteren",
+       "rcfilters-state-message-fullcoverage": "Het selecteren van alle filters in deze groep is hetzelfde als geen filter selecteren, waardoor dit filter geen effect heeft. De groep bevat: $1",
        "rcfilters-filtergroup-registration": "Gebruikers-registratie",
        "rcfilters-filter-registered-label": "Geregistreerd",
        "rcfilters-filter-registered-description": "Ingelogde gebruikers.",
        "rcfilters-filter-unregistered-label": "Niet-geregistreerd",
        "rcfilters-filter-unregistered-description": "Gebruikers die niet zijn ingelogd.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Het \"Niet geregistreerd\" filter is niet actief, omdat het effect ongedaan wordt gemaakt door de volgende {{PLURAL:$2|filter|filters}} die alleen geregistreerde gebruikers {{PLURAL:$2|vindt|vinden}}: $1",
-       "rcfilters-filtergroup-authorship": "Bewerken auteurschap",
-       "rcfilters-filter-editsbyself-label": "Uw eigen bewerkingen",
-       "rcfilters-filter-editsbyself-description": "Bewerkingen door u.",
-       "rcfilters-filter-editsbyother-label": "Bewerkingen door anderen",
-       "rcfilters-filter-editsbyother-description": "Bewerkingen die gemaakt zijn door andere gebruikers (niet door uzelf).",
+       "rcfilters-filtergroup-authorship": "Bijdragen auteurschap",
+       "rcfilters-filter-editsbyself-label": "Uw eigen wijzigingen",
+       "rcfilters-filter-editsbyself-description": "Uw eigen bijdragen.",
+       "rcfilters-filter-editsbyother-label": "Wijzigingen door anderen",
+       "rcfilters-filter-editsbyother-description": "Alle wijzigingen behalve die door u gemaakt zijn.",
        "rcfilters-filtergroup-userExpLevel": "Gebruikerservarings niveau (alleen voor geregistreerde gebruikers)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Nieuwkomers",
        "rcfilters-filter-user-experience-level-newcomer-description": "Minder dan 10 bewerkingen en 4 dagen van activiteit.",
        "rcfilters-filter-bots-description": "De wijzigingen van geautomatiseerde hulpmiddelen.",
        "rcfilters-filter-humans-label": "Menselijk (geen bot)",
        "rcfilters-filter-humans-description": "Bewerkingen door menselijke bewerkers.",
+       "rcfilters-filtergroup-reviewstatus": "Controle status",
        "rcfilters-filter-patrolled-label": "Gecontroleerd",
        "rcfilters-filter-patrolled-description": "Bewerkingen gemarkeerd als gecontroleerd.",
        "rcfilters-filter-unpatrolled-label": "Niet gecontroleerd",
        "enotif_body_intro_moved": "De pagina $1 op {{SITENAME}} is hernoemd door {{GENDER:$2|$2}} op $PAGEEDITDATE. Zie $3 voor de huidige versie.",
        "enotif_body_intro_restored": "De pagina $1 op {{SITENAME}} is teruggeplaatst door {{GENDER:$2|$2}} op $PAGEEDITDATE. Zie $3 voor de huidige versie.",
        "enotif_body_intro_changed": "De pagina $1 op {{SITENAME}} is bewerkt door {{GENDER:$2|$2}} op $PAGEEDITDATE. Zie $3 voor de huidige versie.",
-       "enotif_lastvisited": "Zie $1 voor alle wijzigingen sinds uw laatste bezoek.",
-       "enotif_lastdiff": "Ga naar $1 om deze wijziging te bekijken.",
+       "enotif_lastvisited": "Voor alle wijzigingen sinds uw laatste bezoek, zie $1.",
+       "enotif_lastdiff": "Om deze wijziging te bekijken, ga naar $1.",
        "enotif_anon_editor": "anonieme gebruiker $1",
        "enotif_body": "Beste $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nSamenvatting van de wijziging: $PAGESUMMARY $PAGEMINOREDIT\n\nContactgegevens van de auteur:\nE-mailadres: $PAGEEDITOR_EMAIL\nWiki: $PAGEEDITOR_WIKI\n\nTenzij u deze pagina bezoekt, komen er geen verdere berichten. Als u bent aangemeld, kunt u op uw volglijst voor alle gevolgde pagina's de waarschuwingsinstellingen opschonen.\n\nGroet van uw {{SITENAME}}-waarschuwingssysteem.\n\n--\nU kunt uw e-mailinstellingen wijzigen op:\n{{canonicalurl:{{#special:Preferences}}}}\n\nU kunt uw volglijstinstellingen wijzigen op:\n{{canonicalurl:Special:Watchlist/edit}}\n\nU kunt de pagina van uw volglijst verwijderen via de volgende koppeling:\n$UNWATCHURL\n\nTerugkoppeling en verdere assistentie:\n$HELPPAGE",
        "created": "aangemaakt",
        "log-name-contentmodel": "Wijzigingenlogboek van inhoudsmodel",
        "log-description-contentmodel": "Deze pagina bevat wijzigingen rond het inhoudsmodel van pagina's en pagina's die aangemaakt zijn met een inhoudsmodel anders dan het standaardmodel.",
        "logentry-contentmodel-new": "$1 {{GENDER:$2|maakte}} de pagina $3 aan met behulp van een niet-standaard inhoudsmodel \"$5\"",
-       "logentry-contentmodel-change": "$1 {{GENDER:$2|heeft}} het inhoudsmodel gewijzigd van pagina $3 van \"$4\" in \"$5\"",
+       "logentry-contentmodel-change": "$1 {{GENDER:$2|heeft}} het inhoudsmodel gewijzigd van pagina $3 van \"$4\" naar \"$5\"",
        "logentry-contentmodel-change-revertlink": "terugdraaien",
        "logentry-contentmodel-change-revert": "terugdraaien",
        "protectlogpage": "Beveiligingslogboek",
        "tooltip-pt-mycontris": "Overzicht van {{GENDER:|uw}} bijdragen",
        "tooltip-pt-anoncontribs": "Een lijst van bewerkingen gemaakt door dit IP-adres",
        "tooltip-pt-login": "U wordt van harte uitgenodigd om aan te melden, maar dit is niet verplicht",
+       "tooltip-pt-login-private": "U moet zich aanmelden om gebruik te kunnen maken van deze wiki",
        "tooltip-pt-logout": "Afmelden",
        "tooltip-pt-createaccount": "Registreer u vooral en meld u aan. Dit is echter niet vereist.",
        "tooltip-ca-talk": "Overleg over deze pagina",
index 8d4d72c..377eefe 100644 (file)
        "rcfilters-filter-editsbyself-label": "Moje edycje",
        "rcfilters-filter-editsbyself-description": "Edycje dokonane przez Ciebie.",
        "rcfilters-filter-editsbyother-label": "Edycje inne niż Twoje",
-       "rcfilters-filter-editsbyother-description": "Edycje wykonane przez innych (nie Twoje).",
+       "rcfilters-filter-editsbyother-description": "Wszystkie zmiany oprócz Twoich.",
        "rcfilters-filtergroup-userExpLevel": "Poziom doświadczenia (tylko o zarejestrowanych użytkownikach)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filtry doświadczenia wyszukują tylko edycje zarejestrowanych użytkowników, więc ten filtr koliduje z filtrem „Niezarejestrowani”.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filtr \"Niezarejestrowani\" koliduje z jednym lub więcej filtrów z filtrów poziomu doświadczenia, które służą do wyszukiwania wkładu tylko zarejestrowanych użytkowników. Kolidujące filtry zostały odpowiednio oznaczone na pasku Aktywnych filtrów.",
        "enotif_body_intro_moved": "Strona projektu {{SITENAME}} o nazwie $1 została przeniesiona $PAGEEDITDATE przez {{gender:$2|$2}}, zobacz aktualną wersję na: $3",
        "enotif_body_intro_restored": "Strona projektu {{SITENAME}} o nazwie $1 została przywrócona $PAGEEDITDATE przez {{gender:$2|$2}}, zobacz aktualną wersję na: $3",
        "enotif_body_intro_changed": "Strona projektu {{SITENAME}} o nazwie $1 została zmieniona $PAGEEDITDATE przez {{gender:$2|$2}}, zobacz aktualną wersję na: $3",
-       "enotif_lastvisited": "Zobacz na stronie $1 wszystkie zmiany od Twojej ostatniej wizyty.",
-       "enotif_lastdiff": "Zobacz na stronie $1 tę zmianę.",
+       "enotif_lastvisited": "Aby obejrzeć wszystkie wszystkie zmiany od Twojej ostatniej wizyty, zobacz $1",
+       "enotif_lastdiff": "Aby obejrzeć tę zmianę, zobacz $1",
        "enotif_anon_editor": "użytkownik anonimowy $1",
        "enotif_body": "Szanowny $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nOpis zmiany: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakt do autora:\nmail – $PAGEEDITOR_EMAIL\nwiki – $PAGEEDITOR_WIKI\n\nW przypadku kolejnych zmian nowe powiadomienia nie zostaną wysłane, dopóki nie odwiedzisz tej strony jako zalogowany. Możesz także zresetować wszystkie flagi powiadomień na swojej liście stron obserwowanych.\n\nWiadomość z systemu powiadomień {{GRAMMAR:D.lp|{{SITENAME}}}}\n\n--\nW celu zmiany ustawień swojej listy obserwowanych odwiedź\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nUsunięcie strony z listy obserwowanych możliwe jest na stronie\n$UNWATCHURL\n\nPomoc\n$HELPPAGE",
        "created": "utworzona",
        "imgmultipageprev": "← poprzednia strona",
        "imgmultipagenext": "następna strona →",
        "imgmultigo": "Przejdź",
-       "imgmultigoto": "Idź do $1 strony",
+       "imgmultigoto": "Idź do strony: $1",
        "img-lang-default": "(język domyślny)",
        "img-lang-info": "Wyświetl tę ilustrację w $1. $2",
        "img-lang-go": "Dalej",
index a3d14c6..44d1a92 100644 (file)
                        "Alex Great",
                        "EVinente",
                        "Felipe L. Ewald",
-                       "WikiUser22222"
+                       "WikiUser22222",
+                       "BarbaraAckles"
                ]
        },
        "tog-underline": "Link sublinhado:",
        "invalidtitle-knownnamespace": "Título inválido para o espaço nominal \"$2\" e texto \"$3\"",
        "invalidtitle-unknownnamespace": "Título inválido para o espaço nominal de número desconhecido ($1) e texto \"$2\"",
        "exception-nologin": "Não está autenticado",
-       "exception-nologin-text": "Por favor clique $1 para poder acessar essa página ou ação.",
+       "exception-nologin-text": "Por favor, faça login para poder acessar esta página ou ação.",
        "exception-nologin-text-manual": "Por favor clique $1 para poder acessar essa página ou ação.",
        "virus-badscanner": "Má configuração: antivírus desconhecido: ''$1''",
        "virus-scanfailed": "a verificação falhou (código $1)",
        "showpreview": "Mostrar previsão",
        "showdiff": "Mostrar alterações",
        "blankarticle": "<strong>Aviso:</strong> A página que está prestes a criar está em branco.  \nSe clicar \"{{int:savearticle}}\" outra vez, a página será criada sem qualquer conteúdo.",
-       "anoneditwarning": "'''Atenção''': Você não se encontra autenticado.\nO seu endereço de IP será registrado no histórico de edições desta página.",
+       "anoneditwarning": "<strong>Aviso:</strong> Você não está conectado. Seu endereço IP será visível publicamente se você fizer alguma edição. Se você <strong>[$1 fizer login]</strong> ou <strong>[$2 criar uma conta]</strong>, suas edições serão atribuídas ao seu nome de usuário, juntamente com outros benefícios.",
        "anonpreviewwarning": "''Você não está logado. Gravar registará o seu endereço IP no histórico de edições desta página.''",
        "missingsummary": "'''Lembrete:''' Você não introduziu um sumário de edição. Se clicar novamente em Salvar, a sua edição será salva sem um sumário.",
        "selfredirect": "<strong>Aviso:</strong> Você esta redirecionando esta pagina para ela mesmo. Você pode ter especificado o caminho errado para redirecionar, ou você pode estar editando a pagina errada. Se você clicar \"{{int:savearticle}}\" novamente, o redirecionamento será criado de qualquer modo.",
        "missing-revision": "A revisão #$1 da página denominada \"{{FULLPAGENAME}}\" não existe.\n\nIsto é geralmente causado por seguir um link de histórico desatualizado para uma página que foi eliminada.\nOs detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de eliminação].",
        "userpage-userdoesnotexist": "A conta \"<nowiki>$1</nowiki>\" não se encontra registrada.\nVerifique se deseja mesmo criar/editar esta página.",
        "userpage-userdoesnotexist-view": "A conta de usuário \"$1\" não está registrada.",
-       "blocked-notice-logextract": "Este usuário está atualmente bloqueado.\nO registro de bloqueio mais recente é fornecido abaixo, para referência:",
+       "blocked-notice-logextract": "{{GENDER:$1|Este usuário está atualmente bloqueado|Esta usuária está atualmente bloqueada|Este(a) usuário(a) está atualmente bloqueado(a)}}.\nO registro de bloqueio mais recente é fornecido abaixo, para referência:",
        "clearyourcache": "<strong>Nota:</strong> Após salvar, você pode ter que limpar o \"cache\" do seu navegador para ver as alterações.\n*<strong>Firefox / Safari:</strong> Pressione <em>Shift</em> enquanto clica <em>Recarregar</em>, ou pressione <em>Ctrl-F5</em> ou <em>Ctrl-R</em> (<em>⌘-R</em> no Mac)\n*<strong>Google Chrome:</strong> Pressione <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> no Mac)\n* <strong>Internet Explorer:</strong> Pressione<em>Ctrl</em> enquanto clica <em>Recarregar</em>, ou Pressione <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Vá para <em>Menu → Configurações</em> (<em>Opera → Preferencias</em> no Mac) e depois para <em>Privacidade e Segurança → Limpar dados de navegação → Imagens e arquivos em cache</em>.",
        "usercssyoucanpreview": "'''Dica:''' Utilize o botão \"{{int:showpreview}}\" para testar seu novo CSS antes de salvar.",
        "userjsyoucanpreview": "'''Dica:''' Utilize o botão \"{{int:showpreview}}\" para testar seu novo JavaScript antes de salvar.",
        "readonlywarning": "'''Aviso: O banco de dados foi bloqueado para manutenção, por isso você não poderá salvar a sua edição neste momento.'''\nTalvez você queira copiar o seu texto num editor externo e guardá-lo, para posterior envio.\n\nQuem bloqueou o banco de dados forneceu a seguinte explicação: $1",
        "protectedpagewarning": "'''Atenção: Esta página foi protegida para que apenas usuários com privilégios de administrador possam editá-la.'''\nA última entrada no histórico é fornecida abaixo como referência:",
        "semiprotectedpagewarning": "'''Nota:''' Esta página foi protegida, sendo que apenas usuários registrados poderão editá-la.\nA última entrada no histórico é fornecida abaixo para referência:",
-       "cascadeprotectedwarning": "<strong>Aviso:</strong> Esta página foi protegida para que somente usuários com [[Special:ListGroupRights|direitos específicos]] possam editá-la porque ela é transcluída {{PLURAL:$1|na seguinte página protegida|nas seguintes páginas protegidas}} por cascata:",
+       "cascadeprotectedwarning": "<strong>Aviso:</strong> Esta página foi protegida para que somente usuários com [[Special:ListGroupRights grupos com|direitos específicos]] possam editá-la porque ela é transcluída {{PLURAL:$1|na seguinte página protegida|nas seguintes páginas protegidas}} por cascata:",
        "titleprotectedwarning": "'''Atenção: esta página foi protegida; [[Special:ListGroupRights|privilégios específicos]] são necessários para criá-la.'''\nA última entrada no histórico é fornecida abaixo como referência:",
        "templatesused": "{{PLURAL:$1|Predefinição usada|Predefinições usadas}} nesta página:",
        "templatesusedpreview": "{{PLURAL:$1|Predefinição usada|Predefinições usadas}} nesta previsão:",
        "preferences": "Preferências",
        "mypreferences": "Preferências",
        "prefs-edits": "Número de edições:",
-       "prefsnologintext2": "Por favor clique $1 para alterar suas preferências",
+       "prefsnologintext2": "Por favor, faça login para alterar suas preferências.",
        "prefs-skin": "Tema",
        "skin-preview": "prever",
        "datedefault": "Sem preferência",
        "rcfilters-filter-unregistered-label": "Não registrado",
        "rcfilters-filter-unregistered-description": "Editores que não estão conectados.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Este filtro entra em conflito com {{PLURAL:$2|o seguinte filtro|os seguintes filtros}} de Experiência, que {{PLURAL:$2|encontra|encontram}} somente usuários registrados: $1",
-       "rcfilters-filtergroup-authorship": "Editar autoria",
-       "rcfilters-filter-editsbyself-label": "Suas próprias edições",
-       "rcfilters-filter-editsbyself-description": "Edições por você.",
-       "rcfilters-filter-editsbyother-label": "Edições de outros",
-       "rcfilters-filter-editsbyother-description": "Edições criadas por outros usuários (não você.)",
+       "rcfilters-filtergroup-authorship": "Autoria da contribuição",
+       "rcfilters-filter-editsbyself-label": "Mudanças por você",
+       "rcfilters-filter-editsbyself-description": "Suas proprias contribuições.",
+       "rcfilters-filter-editsbyother-label": "Mudanças de outros",
+       "rcfilters-filter-editsbyother-description": "Todas as mudanças, exceto a sua.",
        "rcfilters-filtergroup-userExpLevel": "Nível de experiência (apenas para usuário registados)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Os filtros de experiência encontram apenas usuários registados, assim este filtro entra em conflito com o filtro “Não registado”.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "O filtro \"Não Registrado\" entra em conflito com um ou mais filtros de Experiência, que localizam apenas usuários registrados. Os filtros em conflito são marcados na área Filtros Ativos, acima.",
        "tmp-write-error": "Erro ao alterar arquivo temporário.",
        "large-file": "É recomendável que os arquivos não sejam maiores que $1;\neste possui $2.",
        "largefileserver": "Este arquivo é maior do que o servidor está configurado para permitir.",
-       "emptyfile": "O arquivo enviado para estar vazio.\nIsso pode ocorrer devido a um erro de digitação no nome do arquivo.\nVerifique se você realmente deseja enviar este arquivo.",
+       "emptyfile": "O arquivo enviado parece estar vazio.\nIsso pode ter ocorrido por um erro de digitação no nome do arquivo.\nVerifique se você realmente deseja enviar este arquivo.",
        "windows-nonascii-filename": "O wiki não aceita nomes de arquivos com caracteres especiais.",
        "fileexists": "Já existe um arquivo com este nome.\nVerifique <strong>[[:$1]]</strong> caso não tenha certeza se deseja alterar o arquivo atual.\n[[$1|thumb]]",
        "filepageexists": "A página de descrição deste arquivo já foi criada em <strong>[[:$1]]</strong>, mas atualmente não existe nenhum arquivo com este nome.\nO sumário que você inseriu não aparecerá na página de descrição.\nPara que ele apareça, será necessário editá-lo manualmente.\n[[$1|thumb]]",
        "apisandbox-multivalue-all-namespaces": "$1 (Todos os espaços de nomes)",
        "apisandbox-multivalue-all-values": "$1 (Todos os valores)",
        "booksources": "Fontes bibliográficas",
-       "booksources-search-legend": "Pesquisar referências bibliográficas",
+       "booksources-search-legend": "Pesquisar fontes de livros",
        "booksources-search": "Pesquisar",
        "booksources-text": "É exibida a seguir uma listagem de links para outros sites que vendem livros novos e usados e que possam possuir informações adicionais sobre os livros que você está pesquisando:",
        "booksources-invalid-isbn": "O número ISBN fornecido não parece ser válido; verifique se houve erros ao copiar da fonte original.",
        "autoblocker": "Você foi automaticamente bloqueado, pois o seu Endereço IP foi recentemente usado por \"[[User:$1|$1]]\". \nO motivo apresentado para o bloqueio de $1 é: \"$2\".",
        "blocklogpage": "Registro de bloqueios",
        "blocklog-showlog": "Este usuário já foi bloqueado anteriormente.\nO registro de bloqueio é fornecido abaixo, para referência:",
-       "blocklog-showsuppresslog": "O usuário foi bloqueado e ocultado anteriormente.\nO registro de supressão é fornecido abaixo para referência:",
+       "blocklog-showsuppresslog": "{{GENDER:$1|O usuário foi bloqueado e ocultado|A usuária foi bloqueada e ocultada|O(a) usuário(a) foi bloqueado(a) e ocultado(a)}} anteriormente.\nO registro de supressão é fornecido abaixo para referência:",
        "blocklogentry": "bloqueou \"[[$1]]\" por $2. $3",
        "reblock-logentry": "modificou parâmetros de bloqueio de [[$1]] com expiração em $2. $3",
        "blocklogtext": "Este é um registro de ações de bloqueio e desbloqueio.\nEndereços IP sujeitos a bloqueio automático não são listados.\nConsulte a [[Special:BlockList|lista de bloqueios]] para obter a lista de bloqueios e banimentos em efeito neste momento.",
        "exporttext": "Você pode exportar o texto e o histórico de edições, ou de uma página em particular ou de um conjunto de páginas, para um arquivo XML.\nA partir disso, será possível importar esse conteúdo em outro wiki que utilize o software MediaWiki através da [[Special:Import|página de importações]].\n\nPara exportar páginas, insira os títulos na caixa de texto abaixo, um título por linha; selecione entre a edição atual acompanhada das edições anteriores e respectivo histórico de edições ou entre apenas a última edição e suas respectivas informações.\n\nPara o último caso, é possível obter o XML a partir de um link direto (por exemplo, [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para a edição mais recente da página \"[[{{MediaWiki:Mainpage}}]]\").",
        "exportall": "Exportar todas as páginas",
        "exportcuronly": "Incluir apenas a revisão atual, não o histórico inteiro",
-       "exportnohistory": "----\n'''Nota:''' a exportação do histórico completo das páginas através deste formulário foi desativada devido a questões de performance.",
+       "exportnohistory": "----\n'''Nota:''' a exportação do histórico completo das páginas através deste formulário foi desativada devido a questões de desempenho.",
        "exportlistauthors": "Incluir uma lista completa dos colaboradores de cada página",
        "export-submit": "Exportar",
        "export-addcattext": "Adicionar à listagem páginas da categoria:",
        "exif-pixelydimension": "Altura da imagem",
        "exif-usercomment": "Comentários de usuários",
        "exif-relatedsoundfile": "arquivo áudio relacionado",
-       "exif-datetimeoriginal": "Data e hora de geração de dados",
+       "exif-datetimeoriginal": "Data e hora da geração dos dados",
        "exif-datetimedigitized": "Data e hora de digitalização",
        "exif-subsectime": "Subsegundos DataHora",
        "exif-subsectimeoriginal": "Subsegundos DataHoraOriginal",
index 4fe5c0e..c915165 100644 (file)
        "apisandbox-multivalue-all-namespaces": "$1 (Todos os espaços nominais)",
        "apisandbox-multivalue-all-values": "$1 (Todos os valores)",
        "booksources": "Fontes bibliográficas",
-       "booksources-search-legend": "Pesquisar referências bibliográficas",
+       "booksources-search-legend": "Pesquisar fontes de livros",
        "booksources-search": "Pesquisar",
        "booksources-text": "É apresentada abaixo uma lista de ligações para outros sítios na Internet que vendem livros novos e usados e talvez possuam informações adicionais sobre os livros que procura:",
        "booksources-invalid-isbn": "O número ISBN fornecido não parece ser válido; verifique a existência de erros ao copiar da fonte original.",
index afc9b32..27dc70a 100644 (file)
        "previousrevision": "See also:\n* {{msg-mw|Nextrevision}}",
        "nextrevision": "See also:\n* {{msg-mw|Previousrevision}}",
        "currentrevisionlink": "{{Identical|Current revision}}",
-       "cur": "Link in page history ([https://translatewiki.net/w/i.php?title=MediaWiki:Cur/qqq&action=history example])",
+       "cur": "Link in page history ([https://translatewiki.net/w/i.php?title=MediaWiki:Cur/qqq&action=history example]).\n\nThis is short for \"current\".",
        "next": "Link in page history\n\n{{Identical|Next}}",
        "last": "Link in page history",
        "page_first": "This is part of the navigation message on the top and bottom of Special pages which are lists of things in alphabetical order, e.g. the '[[Special:Categories|Categories]]' special page. It is followed by the message {{msg-mw|Viewprevnext}}.\n{{Identical|First}}",
        "rcfilters-filter-minor-description": "Description for the filter for showing edits marked as minor.",
        "rcfilters-filter-major-label": "Label for the filter for showing edits not marked as minor.",
        "rcfilters-filter-major-description": " Description for the filter for showing edits not marked as minor.",
+       "rcfilters-filtergroup-watchlist": "Title for the watchlist filter group",
+       "rcfilters-filter-watchlist-watched-label": "Label for the filter for showing changes to pages on your watchlist.",
+       "rcfilters-filter-watchlist-watched-description": "Description for the filter for showing changes to pages on your watchlist.",
+       "rcfilters-filter-watchlist-watchednew-label": "Label for the filter for showing new changes to pages on your watchlist.",
+       "rcfilters-filter-watchlist-watchednew-description": "Description for the filter for showing new changes to pages on your watchlist.",
+       "rcfilters-filter-watchlist-notwatched-label": "Label for the filter for showing changes to pages not on your watchlist.",
+       "rcfilters-filter-watchlist-notwatched-description": "Description for the filter for showing changes to pages not on your watchlist.",
        "rcfilters-filtergroup-changetype": "Title for the filter group for edit type.",
        "rcfilters-filter-pageedits-label": "Label for the filter for showing edits to existing pages.",
        "rcfilters-filter-pageedits-description": "Description for the filter for showing edits to existing pages.",
        "rcfilters-hideminor-conflicts-typeofchange-global": "The \"Minor edits\" filter is conflicting with one or more Type of Change filters, because certain types of change cannot be designated as \"minor.\" The conflicting filters are marked in the Active Filters area, above.\n\n\"Type of Change\" is {{msg-mw|Rcfilters-filtergroup-changetype}}.",
        "rcfilters-hideminor-conflicts-typeofchange": "Tooltip shown when hovering over the Minor edits tag, when a Type of Change filter is also selected.\n\n\"Minor edits\" is {{msg-mw|rcfilters-filter-minor-label}}.\n\n\"Type of change\" is {{msg-mw|rcfilters-filtergroup-changetype}}.\n\nThis indicates that no results will be shown.  Parameters:\n* $1 - Comma-separated string of selected Type of Change filters, e.g. \"Category, Logged Actions\"\n* $2 - Count of selected User Experience Level filters, for PLURAL",
        "rcfilters-typeofchange-conflicts-hideminor": "Tooltip shown when hovering over a Type of change filter tag, when the Minor edits filter is also selected.\n\n\"Minor edits\" is {{msg-mw|rcfilters-filter-minor-label}}.\n\n\"Type of change\" is {{msg-mw|rcfilters-filtergroup-changetype}}.\n\nThis indicates that no results will be shown.",
+       "rcfilters-filtergroup-lastRevision": "Title for the filter group for last revision",
+       "rcfilters-filter-lastrevision-label": "Title for the filter for showing changes on last revision of a page.",
+       "rcfilters-filter-lastrevision-description": "Description for the filter for showing changes on last revision of a page.",
+       "rcfilters-filter-previousrevision-label": "Title for the filter for showing changes on previous revisions of a page.",
+       "rcfilters-filter-previousrevision-description": "Description for the filter for showing changes on previous revisions of a page.",
        "rcnotefrom": "This message is displayed at [[Special:RecentChanges]] when viewing recentchanges from some specific time.\n\nThe corresponding message is {{msg-mw|Rclistfrom}}.\n\nParameters:\n* $1 - the maximum number of changes that are displayed\n* $2 - (Optional) a date and time\n* $3 - a date\n* $4 - a time\n* $5 - Number of changes are displayed, for use with PLURAL",
        "rclistfromreset": "Used on [[Special:RecentChanges]] to reset a selection of a certain date range.",
        "rclistfrom": "Used on [[Special:RecentChanges]]. Parameters:\n* $1 - (Currently not use) date and time. The date and the time adds to the rclistfrom description.\n* $2 - time. The time adds to the rclistfrom link description (with split of date and time).\n* $3 - date. The date adds to the rclistfrom link description (with split of date and time).\n\nThe corresponding message is {{msg-mw|Rcnotefrom}}.",
        "hist": "Short form of \"history\". Used on [[Special:RecentChanges]], [[Special:Watchlist]], ...",
        "hide": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]], and in [[Special:WhatLinksHere]].\n\nSee also:\n* {{msg-mw|Show}}\n{{Identical|Hide}}",
        "show": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]], and in [[Special:WhatLinksHere]].\n\nSee also:\n* {{msg-mw|Hide}}\n{{Identical|Show}}",
-       "minoreditletter": "Very short form of \"'''minor edit'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]], [[Special:Contributions]] and history pages.",
-       "newpageletter": "Very short form of \"'''new page'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]] and [[Special:Contributions]].",
-       "boteditletter": "Abbreviation of \"'''bot'''\". Appears in [[Special:RecentChanges]] and [[Special:Watchlist]].",
+       "minoreditletter": "Very short form of \"'''minor edit'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]], [[Special:Contributions]] and history pages. This should be a single letter.",
+       "newpageletter": "Very short form of \"'''new page'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]] and [[Special:Contributions]]. This should be a single letter.",
+       "boteditletter": "Abbreviation of \"'''bot'''\". Appears in [[Special:RecentChanges]] and [[Special:Watchlist]]. This should be a single letter.",
        "unpatrolledletter": "{{optional}}\n\nUsed in {{msg-mw|Recentchanges-label-legend}}, meaning \"unpatrolled\".",
        "number_of_watching_users_RCview": "{{notranslate}}\nParameters:\n* $1 - number of users who are watching",
        "number_of_watching_users_pageview": "Used if <code>$wgPageShowWatchingUsers</code> is true.\n* $1 - number of watching user(s)",
        "recentchangeslinked-feed": "Used in the feed object.\n\nThis message follows the message {{msg-mw|Recentchangeslinked-title}}.",
        "recentchangeslinked-toolbox": "Used as link text, and also used as link text in the common toolbox.\n\nThese links point to [[Special:RecentChangesLinked]].",
        "recentchangeslinked-title": "Message used as title and page header on [[Special:RecentChangesLinked]] (needs an argument like \"/Main Page\").\n\nRelated changes are all recent change to pages that are linked from ''this page''.\n\nThis message is followed by {{msg-mw|Recentchangeslinked-feed}}.\n\nParameters:\n* $1 - the name of the page for which related changes are shown",
-       "recentchangeslinked-summary": "Summary of [[Special:RecentChangesLinked]].",
+       "recentchangeslinked-summary": "Summary of [[Special:RecentChangesLinked]]. \"Pages on your watchlist\" refers to pages that ''also'' appear on the user's watchlist.",
        "recentchangeslinked-page": "{{Identical|Page name}}",
        "recentchangeslinked-to": "Checkbox in [[Special:RecentChangesLinked]].",
        "recentchanges-page-added-to-category": "Comment message for pages added to a category\n\nParameters:\n* $1 - name of the page being added",
        "listfiles_search_for": "Input label for the form displayed on [[Special:ListFiles]].",
        "listfiles-userdoesnotexist": "This message is displayed on [[Special:ListFiles]] when a invalid username is entered.",
        "imgfile": "{{Identical|File}}",
-       "listfiles": "Page title and grouping label for the form displayed on [[Special:ListFiles]].\n{{Identical|File list}}",
+       "listfiles": "Page title and grouping label for the form displayed on [[Special:ListFiles]].\n{{Identical|List}}",
        "listfiles_thumb": "{{Identical|Thumbnail}}",
        "listfiles_date": "Column header for the result table displayed on [[Special:ListFiles]].\n{{Identical|Date}}",
        "listfiles_name": "Column header for the result table displayed on [[Special:ListFiles]].\n{{Identical|Name}}",
        "nolinkshere": "Used in [[Special:WhatLinksHere]] if empty. Parameters:\n* $1 - page title\nSee also:\n* {{msg-mw|Nolinkshere-ns}}",
        "nolinkshere-ns": "Used in [[Special:WhatLinksHere]] if empty. Parameters:\n* $1 - page title\nSee also:\n* {{msg-mw|Nolinkshere}}",
        "isredirect": "Displayed in [[Special:WhatLinksHere]] (see [{{fullurl:Special:WhatLinksHere/Project:Translator|hidelinks=1}} Special:WhatLinksHere/Project:Translator] for example).\n\n{{Identical|Redirect page}}",
-       "istemplate": "Means that a page (a template, specifically) is used as <code><nowiki>{{Page name}}</nowiki></code>.\nDisplayed in [[Special:WhatLinksHere]] (see [[Special:WhatLinksHere/Template:New portal]] for example).\n{{Identical|Transclusion}}",
+       "istemplate": "Means that a page (a template, specifically) is used as <code><nowiki>{{Page name}}</nowiki></code>.\nDisplayed in [[Special:WhatLinksHere]] (see [[Special:WhatLinksHere/Template:New portal]] for example).\nIf you are not sure how to translate this term, think of something like \"inclusion\", \"embedding\", or \"insertion\".\n{{Identical|Transclusion}}",
        "isimage": "This message is displayed on [[Special:WhatLinksHere]] for images. It means that the image is used on the page (as opposed to just being linked to like an non-image page).\n{{Identical|File link}}",
        "whatlinkshere-prev": "This is part of the navigation message on the top and bottom of Whatlinkshere pages, where it is used as the first argument of {{msg-mw|Viewprevnext}}.\n\nParameters:\n* $1 - the number of items shown per page. It is not used when $1 is zero; not sure what happens when $1 is one.\nSpecial pages use {{msg-mw|Prevn}} instead (still as an argument to {{msg-mw|Viewprevnext}}).\n\nSee also:\n* {{msg-mw|Whatlinkshere-next}}\n{{Identical|Previous}}",
        "whatlinkshere-next": "This is part of the navigation message on the top and bottom of Whatlinkshere pages, where it is used as the second argument of {{msg-mw|Viewprevnext}}.\n\nParameters:\n* $1 - the number of items shown per page. It is not used when $1 is zero; not sure what happens when $1 is one.\nSpecial pages use {{msg-mw|Nextn}} instead (still as an argument to {{msg-mw|Viewprevnext}}).\n\nSee also:\n* {{msg-mw|Whatlinkshere-prev}}\n{{Identical|Next}}",
        "tooltip-t-whatlinkshere": "Tooltip shown when hovering over the {{msg-mw|whatlinkshere}} message in the toolbox.\n\nSee also:\n* {{msg-mw|Whatlinkshere}}\n* {{msg-mw|Accesskey-t-whatlinkshere}}\n* {{msg-mw|Tooltip-t-whatlinkshere}}",
        "tooltip-t-recentchangeslinked": "Used as tooltip for the link {{msg-mw|Recentchangeslinked}}.\n\nSee also:\n* {{msg-mw|Recentchangeslinked}}\n* {{msg-mw|Accesskey-t-recentchangeslinked}}\n* {{msg-mw|Tooltip-t-recentchangeslinked}}",
        "tooltip-feed-rss": "Used as tooltip for RSS feed link.\n\nSee also:\n* {{msg-mw|Feed-rss}}\n* {{msg-mw|Accesskey-feed-rss}}\n* {{msg-mw|Tooltip-feed-rss}}",
-       "tooltip-feed-atom": "Used as tooltip for Atom feed link.\n\nSee also:\n* {{msg-mw|Feed-atom}}\n* {{msg-mw|Accesskey-feed-atom}}\n* {{msg-mw|Tooltip-feed-atom}}",
+       "tooltip-feed-atom": "Used as tooltip for Atom feed link.\n\n\"Atom\" is a technology for automated updates. See [[w:en:Atom (standard)]].\n\nSee also:\n* {{msg-mw|Feed-atom}}\n* {{msg-mw|Accesskey-feed-atom}}\n* {{msg-mw|Tooltip-feed-atom}}",
        "tooltip-t-contributions": "Tooltip shown when hovering over {{msg-mw|Contributions}} in the toolbox.\n\nParameters:\n* $1 - Name of the user\n\nSee also:\n* {{msg-mw|Contributions}}\n* {{msg-mw|Accesskey-t-contributions}}\n* {{msg-mw|Tooltip-t-contributions}}",
        "tooltip-t-emailuser": "Tooltip shown when hovering over the {{msg-mw|Emailuser}} link in the toolbox (sidebar, below).\n\nParameters:\n* $1 - Name of the user\n\nSee also:\n* {{msg-mw|Emailuser}}\n* {{msg-mw|Accesskey-t-emailuser}}\n* {{msg-mw|Tooltip-t-emailuser}}",
        "tooltip-t-info": "Tooltip shown when hovering over the {{msg-mw|pageinfo-toolboxlink}} link in the toolbox (sidebar, below).",
        "metadata-help": "This message is followed by a table with metadata.",
        "metadata-expand": "On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on this link, you can see more data and information. For the link to hide back the less important data, see {{msg-mw|Metadata-collapse}}.",
        "metadata-collapse": "On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on the link {{msg-mw|Metadata-expand}}, you can see more data and information. This message is for the link to hide back the less important data.",
-       "metadata-fields": "{{doc-important|Do not translate list items, only translate the text! So leave \"<code>* make</code>\" and the other items exactly as they are.}}\nThe sentences are for explanation only and are not shown to the user.",
+       "metadata-fields": "{{doc-important|Do not translate list items, only translate the text! So leave \"<code>* make</code>\" and the other items exactly as they are.}}\nThis message allows wiki admins to edit the list of metadata fields that will be included on image page display when the metadata table is collapsed.\n\nThe sentence at the top is for explanation to the admins and is not shown to the user.",
        "metadata-langitem": "{{optional}}\nThis is used for constructing the list of translations when a metadata property is translated into multiple languages.\n\nParameters:\n* $1 - the value of the property (in one language)\n* $2 - the language name that this translation is for (or language code if language name cannot be determined)\n* $3 - (Unused) the language code",
        "metadata-langitem-default": "{{optional}}\nSimilar to \"metadata-langitem\" but for the case where a multilingual property has a default specified that does not specify what language the default is in. $1 is the value of the property.",
        "exif-imagewidth": "{{exif-qqq}}\n{{Identical|Width}}",
index d38328a..a40cf2e 100644 (file)
        "searcharticle": "Du-te",
        "history": "Istoricul paginii",
        "history_short": "Istoric",
+       "history_small": "istoric",
        "updatedmarker": "actualizat de la ultima mea vizită",
        "printableversion": "Versiune de tipărit",
        "permalink": "Legătură permanentă",
        "redirectedfrom": "(Redirecționat de la $1)",
        "redirectpagesub": "Pagină de redirecționare",
        "redirectto": "Redirecționare către:",
-       "lastmodifiedat": "Ultima modificare a paginii efectuată la $1, ora $2.",
+       "lastmodifiedat": "Ultima editare a paginii a fost efectuată la $1, ora $2.",
        "viewcount": "Pagina a fost accesată {{PLURAL:$1|o dată|de $1 ori|de $1 de ori}}.",
        "protectedpage": "Pagină protejată",
        "jumpto": "Salt la:",
        "eauthentsent": "Un e-mail de confirmare a fost trimis către adresa specificată.\nÎnainte ca orice alt e-mail să mai fie trimis către acel cont, trebuie să urmați instrucțiunile prezente în e-mail pentru a confirma că acest cont este într-adevăr al dumneavoastră.",
        "throttled-mailpassword": "Un e-mail pentru resetarea parolei a fost deja trimis în {{PLURAL:$1|ultima oră|ultimele $1 ore|ultimele $1 de ore}}. Pentru a preveni abuzul, se va trimite doar un e-mail de resetare a parolei la un interval de o {{PLURAL:$1|o oră|$1 ore|$1 de ore}}.",
        "mailerror": "Eroare la trimitere e-mail: $1",
-       "acct_creation_throttle_hit": "De la această adresă IP, vizitatorii sitului au creat {{PLURAL:$1|1 cont|$1 conturi|$1 de conturi}} de utilizator în ultimele zile, acest număr de noi conturi fiind maximul admis în această perioadă de timp.\nPrin urmare, vizitatorii care folosesc același IP nu mai pot crea alte conturi pentru moment.",
+       "acct_creation_throttle_hit": "De la această adresă IP, vizitatorii sitului au creat {{PLURAL:$1|1 cont|$1 conturi|$1 de conturi}} de utilizator în ultimele $2, acest număr de noi conturi fiind maximul admis în această perioadă de timp.\nPrin urmare, vizitatorii care folosesc același IP nu mai pot crea alte conturi pentru moment.",
        "emailauthenticated": "Adresa de e-mail a fost autentificată pe $2, la $3.",
        "emailnotauthenticated": "Adresa dumneavoastră de e-mail nu este autentificată încă. Nici un e-mail nu va fi trimis pentru nici una din întrebuințările următoare.",
        "noemailprefs": "Nu a fost specificată o adresă email, următoarele nu vor funcționa.",
        "botpasswords-label-grants-column": "Permise",
        "botpasswords-bad-appid": "Numele de robot „$1” nu este valid.",
        "botpasswords-created-title": "Parola de robot a fost creată",
+       "botpasswords-updated-title": "Parola de robot a fost actualizată",
        "resetpass_forbidden": "Parolele nu pot fi schimbate.",
        "resetpass_forbidden-reason": "Parolele nu pot fi schimbate: $1",
        "resetpass-no-info": "Trebuie să fiți autentificat pentru a accesa această pagină direct.",
        "accmailtext": "O parolă generată aleator pentru [[User talk:$1|$1]] a fost trimisă la $2. Parola poate fi schimbată după autentificare din pagina ''[[Special:ChangePassword|schimbare parolă]]''.",
        "newarticle": "(Nou)",
        "newarticletext": "Ați încercat să ajungeți la o pagină care nu există. Pentru a o crea, începeți să scrieți în caseta de mai jos (vedeți [$1 pagina de ajutor] pentru mai multe informații). Dacă ați ajuns aici din greșeală, întoarceți-vă folosind controalele navigatorului dumneavoastră.",
-       "anontalkpagetext": "---- ''Aceasta este pagina de discuții pentru un utilizator care nu și-a creat un cont încă, sau care nu s-a autentificat.\nDe aceea trebuie să folosim adresă IP pentru a identifica această persoană.\nO adresă IP poate fi folosită în comun de mai mulți utilizatori.\nDacă sunteți un astfel de utilizator și credeți că vă sunt adresate mesaje irelevante, vă rugăm să [[Special:CreateAccount|vă creați un cont]] sau să [[Special:UserLogin|vă autentificați]] pentru a evita confuzii cu alți utilizatori anonimi în viitor.''",
+       "anontalkpagetext": "----\n''Aceasta este pagina de discuții pentru un utilizator care încă nu și-a creat un cont sau care nu s-a autentificat.\nPrin urmare trebuie să folosim adresa IP pentru a identifica această persoană.\nO adresă IP poate fi folosită în comun de mai mulți utilizatori.\nDacă sunteți un astfel de utilizator și credeți că vă sunt adresate mesaje irelevante, vă rugăm să [[Special:CreateAccount|vă creați un cont]] sau să [[Special:UserLogin|vă autentificați]] pentru a evita confuzii cu alți utilizatori anonimi în viitor.''",
        "noarticletext": "Actualmente, această pagină este lipsită de conținut.\nPuteți [[Special:Search/{{PAGENAME}}|căuta titlul acestei pagini]] în alte pagini, puteți <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} căuta înregistrări în jurnalele relevante]\nsau puteți [{{fullurl:{{FULLPAGENAME}}|action=edit}} crea această pagină]</span>.",
        "noarticletext-nopermission": "Actualmente, această pagină este lipsită de conținut.\nPuteți [[Special:Search/{{PAGENAME}}|căuta acest titlu]] în alte pagini sau puteți <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} căuta înregistrări în jurnale]</span>; nu aveți însă permisiunea de a crea această pagină.",
        "missing-revision": "Versiunea nr. $1 a paginii „{{FULLPAGENAME}}” nu există.\n\nAcest lucru se întâmplă de obicei atunci când se accesează o legătură expirată către istoricul unei pagini șterse.\nDetalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jurnalul ștergerilor].",
        "userpage-userdoesnotexist": "Contul de utilizator „<nowiki>$1</nowiki>” nu este înregistrat.\nAsigurați-vă că doriți să creați/modificați această pagină.",
        "userpage-userdoesnotexist-view": "Contul de utilizator „$1” nu este înregistrat.",
        "blocked-notice-logextract": "Acest utilizator este momentan blocat.\nUltima intrare în jurnalul blocărilor este afișată mai jos pentru referință:",
-       "clearyourcache": "'''Notă:''' După salvare, trebuie să treceți peste memoria cache a navigatorului pentru a putea vedea modificările:\n* '''Firefox / Safari:''' țineți apăsat pe ''Shift'' în timp ce faceți clic pe ''Reîncărcare'', ori apăsați ''Ctrl-F5'' sau ''Ctrl-R'' (''⌘-R'' pe un sistem Mac);\n* '''Google Chrome:''' apăsați ''Ctrl-Shift-R'' (''⌘-Shift-R'' pe un sistem Mac);\n* '''Internet Explorer:''' țineți apăsat pe ''Ctrl'' în timp ce faceți clic pe ''Reîmprospătare'' sau apăsați ''Ctrl-F5'';\n* '''Opera:''' curățați memoria cache din ''Unelte → Preferințe''.",
+       "clearyourcache": "<strong>Notă:</strong> După salvare, trebuie să treceți peste memoria cache a navigatorului pentru a putea vedea modificările:\n* <strong>Firefox / Safari:</strong> țineți apăsat pe <em>Shift</em> în timp ce faceți clic pe <em>Reîncărcare</em> ori apăsați <em>Ctrl-F5</em> sau <em>Ctrl-R</em> (<em>⌘-R</em> pe un sistem Mac);\n* <strong>Google Chrome:</strong> apăsați <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> pe un sistem Mac);\n* <strong>Internet Explorer:</strong> țineți apăsat pe <em>Ctrl</em> în timp ce faceți clic pe ''Reîmprospătare'' sau apăsați <em>Ctrl-F5</em>;\n* <strong>Opera:</strong> Mergeți la <em>Meniu → Setări</em> (<em>Opera → Preferințe</em> pe un sistem Mac) și apoi la <em>Confidențialitate & securitate → Șterge istoricul de navigare → Imagini și fișiere memorate în cache</em>.",
        "usercssyoucanpreview": "'''Sfat:''' Folosiți butonul „{{int:showpreview}}” pentru a testa noul CSS înainte de a-l salva.",
        "userjsyoucanpreview": "'''Sfat:''' Folosiți butonul „{{int:showpreview}}” pentru a testa noul JavaScript înainte de a-l salva.",
        "usercsspreview": "'''Rețineți că vizualizați doar o previzualizare a CSS-ului dumneavoastră de utilizator.'''\n'''Acesta nu a fost încă salvat!'''",
        "previewnote": "'''Țineți cont că aceasta este doar o previzualizare.'''\nModificările dumneavoastră nu au fost încă salvate!",
        "continue-editing": "Mergi la zona de editare",
        "previewconflict": "Această pre-vizualizare reflectă textul din caseta de sus, respectiv felul în care va arăta articolul dacă alegeți să-l salvați acum.",
-       "session_fail_preview": "'''Ne pare rău! Nu am putut procesa modificarea dumneavoastră din cauza pierderii datelor sesiunii.\nVă rugăm să încercați din nou.\nDacă tot nu funcționează, încercați să [[Special:UserLogout|închideți sesiunea]] și să vă autentificați din nou.'''",
-       "session_fail_preview_html": "'''Ne pare rău! Modificările dvs. nu au putut fi procesate din cauza pierderii datelor sesiunii.'''\n\n''Deoarece {{SITENAME}} are activat HTML brut, previzualizarea este ascunsă ca măsură de precauție împotriva atacurilor JavaScript.''\n\n'''Dacă această încercare de modificare este legitimă, vă rugăm să încercați din nou. Dacă nu funcționează nici în acest fel, [[Special:UserLogout|închideți sesiunea]] și încearcați să vă autentificați din nou.'''",
+       "session_fail_preview": "Ne pare rău! Nu am putut procesa modificarea dumneavoastră din cauza pierderii datelor sesiunii.\n\nEste posibil să vă fi deconectat. <strong>Vă rugăm să verificați dacă sunteți încă conectat și să încercați din nou</strong>.\nDacă tot nu funcționează, încercați să [[Special:UserLogout|închideți sesiunea]] și să vă autentificați din nou. Verificați și dacă navigatorul dumneavoastră permite module cookie de la acest site.",
+       "session_fail_preview_html": "Ne pare rău! Modificările dvs. nu au putut fi procesate din cauza pierderii datelor sesiunii.\n\n<em>Deoarece {{SITENAME}} are activat HTML brut, previzualizarea este ascunsă ca măsură de precauție împotriva atacurilor JavaScript.</em>\n\n<strong>Dacă această încercare de modificare este legitimă, vă rugăm să încercați din nou. Dacă nu funcționează nici în acest fel, [[Special:UserLogout|închideți sesiunea]] și încercați să vă autentificați din nou. Verificați și dacă navigatorul dumneavoastră permite module cookie de la acest site</strong>.",
        "token_suffix_mismatch": "'''Modificarea ta a fost refuzată pentru că clientul tău a deformat caracterele de punctuatie în modificarea semnului.\nModificarea a fost respinsă pentru a preveni deformarea textului paginii.\nAcest fapt se poate întâmpla atunci când folosești un serviciu proxy anonim.'''",
        "edit_form_incomplete": "'''Unele părți ale formularului de modificare nu au ajuns la server; verificați dacă modificările dumneavoastră sunt intacte și reîncercați.'''",
        "editing": "Modificare „$1”",
        "readonlywarning": "<strong>Atenție: Baza de date a fost blocată pentru întreținere, deci nu veți putea salva modificările în acest moment.</strong>\nPuteți copia textul într-un fișier text, păstrându-l pentru mai târziu.\n\nAdministratorul de sistem care a efectuat blocarea a oferit următoarea explicație: $1",
        "protectedpagewarning": "'''Atenție: această pagină a fost protejată astfel încât poate fi modificată doar de către administratori.'''\nUltima intrare în jurnal este afișată mai jos pentru referință:",
        "semiprotectedpagewarning": "'''Observație: această pagină a fost protejată și poate fi modificată doar de către utilizatorii înregistrați.'''\nUltima intrare în jurnal este afișată mai jos pentru referință:",
-       "cascadeprotectedwarning": "<strong>Atenție:</strong> Această pagină a fost protejată, astfel încât numai administratorii o pot modifica, fiind inclusă în {{PLURAL:$1|următoarea pagină protejată|următoarele pagini protejate}} în cascadă:",
+       "cascadeprotectedwarning": "<strong>Atenție:</strong> Această pagină a fost protejată, astfel încât numai [[Special:ListGroupRights|utilizatori cu drepturi specifice]] o pot modifica, fiind inclusă în {{PLURAL:$1|următoarea pagină protejată|următoarele pagini protejate}} în cascadă:",
        "titleprotectedwarning": "'''Atenție: această pagină a fost protejată astfel încât doar anumiți [[Special:ListGroupRights|utilizatori]] o pot crea.'''\nUltima intrare în jurnal este afișată mai jos pentru referință:",
        "templatesused": "{{PLURAL:$1|Format folosit|Formate folosite}} în această pagină:",
        "templatesusedpreview": "{{PLURAL:$1|Format folosit|Formate folosite}} în această previzualizare:",
        "page_first": "prima",
        "page_last": "ultima",
        "histlegend": "Legendă: (actuală) = diferențe față de versiunea curentă,\n(prec) = diferențe față de versiunea precedentă, M = modificare minoră",
-       "history-fieldset-title": "Răsfoire istoric",
-       "history-show-deleted": "Doar șterse",
+       "history-fieldset-title": "Caută versiuni anterioare",
+       "history-show-deleted": "Doar versiuni șterse",
        "histfirst": "cele mai vechi",
        "histlast": "cele mai noi",
        "historysize": "({{PLURAL:$1|1 octet|$1 octeți|$1 de octeți}})",
        "search-interwiki-caption": "Proiecte înrudite",
        "search-interwiki-default": "Rezultate de la $1:",
        "search-interwiki-more": "(mai mult)",
+       "search-interwiki-more-results": "Mai multe rezultate",
        "search-relatedarticle": "Relaționat",
        "searchrelated": "relaționat",
        "searchall": "toate",
        "search-external": "Căutare externă",
        "searchdisabled": "<p>Ne pare rău! Căutarea după text a fost dezactivată temporar, din motive de performanță. Între timp puteți folosi căutarea prin Google mai jos, însă aceasta poate să dea rezultate învechite.</p>",
        "search-error": "A apărut o eroare în timpul căutării: $1",
+       "search-warning": "A apărut o eroare în timpul căutării: $1",
        "preferences": "Preferințe",
        "mypreferences": "Preferințe",
        "prefs-edits": "Număr de modificări:",
        "prefs-help-recentchangescount": "Sunt incluse schimbările recente, istoricul paginilor și jurnalele.",
        "prefs-help-watchlist-token2": "Aceasta este cheia secretă pentru fluxul web al listei dumneavoastră de pagini urmărite.\nOricine o cunoaște vă va putea citi lista de pagini urmărite, așa că n-o partajați cu nimeni.\n[[Special:ResetTokens|Faceți clic aici dacă doriți să o resetați]].",
        "savedprefs": "Preferințele dumneavoastră au fost salvate.",
-       "savedrights": "Drepturile utilizatorului {{GENDER:$1|$1}} au fost salvate.",
+       "savedrights": "Grupurile utilizatorului {{GENDER:$1|$1}} au fost salvate.",
        "timezonelegend": "Fus orar:",
        "localtime": "Ora locală:",
        "timezoneuseserverdefault": "Folosește ora implicită a wikiului ($1)",
        "prefs-help-prefershttps": "Această preferință va avea efect la următoarea autentificare.",
        "prefswarning-warning": "Ați efectuat modificări asupra preferințelor dumneavoastră, care nu au fost încă salvate.\nDacă părăsiți această pagină fără a apăsa butonul „$1”, preferințele dumnevoastră nu se vor actualiza.",
        "prefs-tabs-navigation-hint": "Sfat: Puteți folosi tastele săgeată stânga și dreapta pentru a naviga între filele din cadrul listei de file.",
-       "userrights": "Administrare permisiuni de utilizator",
-       "userrights-lookup-user": "Administrare grupuri de utilizatori",
+       "userrights": "Permisiuni utilizator",
+       "userrights-lookup-user": "Selectați un utilizator",
        "userrights-user-editname": "Introduceți un nume de utilizator:",
        "editusergroup": "Modificare grup de {{GENDER:$1|utilizatori}}",
        "editinguser": "Modificarea permisiunilor de {{GENDER:$1|utilizator}} pentru <strong>[[User:$1|$1]]</strong> $2",
-       "userrights-editusergroup": "Modificare grup de utilizatori",
+       "userrights-editusergroup": "Modificare grupuri {{GENDER:$1|utilizator}}",
        "saveusergroups": "Salvează grupul de {{GENDER:$1|utilizatori}}",
        "userrights-groupsmember": "Membru al:",
        "userrights-groupsmember-auto": "Membru, implicit, al:",
        "userrights-nodatabase": "Baza de date $1 nu există sau nu este locală.",
        "userrights-changeable-col": "Grupuri pe care le puteți schimba",
        "userrights-unchangeable-col": "Grupuri pe care nu le puteți schimba",
+       "userrights-expiry-current": "Expiră pe $1",
+       "userrights-expiry": "Expiră:",
+       "userrights-expiry-existing": "Data expirării: $2, $3",
+       "userrights-expiry-options": "1 oră:1 hour, 1 zi:1 day, 1 săptămână:1 week, 1 lună:1 month, 3 luni:3 months, 6 luni:6 months, 1 an:1 year",
        "userrights-conflict": "Conflict al schimbării drepturilor de utilizator! Reverificați și confirmați-vă modificările.",
        "group": "Grup:",
        "group-user": "Utilizatori",
        "grant-group-email": "Trimite e-mail",
        "grant-createaccount": "Creare conturi",
        "grant-createeditmovepage": "Creează, editează și redenumește pagini",
+       "grant-editmyoptions": "Modificați-vă preferințele de utilizator",
+       "grant-editmywatchlist": "Modificați-vă lista de pagini urmărite",
        "grant-highvolume": "Volum mare de editare",
        "grant-oversight": "Ascunde utilizatori și suprimă versiuni",
        "grant-patrol": "Patrulează schimbările paginilor",
        "action-upload_by_url": "încărcați acest fișier de la o adresă URL",
        "action-writeapi": "utilizați scrierea prin API",
        "action-delete": "ștergeți această pagină",
-       "action-deleterevision": "ștergeți această versiune",
+       "action-deleterevision": "ștergeți versiunile",
        "action-deletelogentry": "ștergeți înregistrări din jurnal",
        "action-deletedhistory": "vizualizați istoricul șters a unei pagini",
        "action-deletedtext": "vizualizați textul versiunii șterse",
        "action-userrights-interwiki": "modificați permisiunile utilizatorilor de pe alte wiki",
        "action-siteadmin": "blocați sau deblocați baza de date",
        "action-sendemail": "trimite e-mailuri",
+       "action-editmyoptions": "Modificați-vă preferințele",
        "action-editmywatchlist": "vă modificați lista de pagini urmărite",
        "action-viewmywatchlist": "vă vizualizați lista de pagini urmărite",
        "action-viewmyprivateinfo": "vă vizualizați informațiile personale",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vedeți și [[Special:NewPages|lista cu pagini noi]])",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Afișează",
+       "rcfilters-highlightmenu-title": "Selectați o culoare",
+       "rcfilters-filter-bots-label": "Robot",
+       "rcfilters-filter-minor-label": "Modificări minore",
        "rcnotefrom": "Dedesubt {{PLURAL:$5|se află o modificare|sunt modificările}} începând cu <b>$3, $4</b> (maximum <b>$1</b> afișate).",
        "rclistfrom": "Afișează modificările începând cu $3, ora $2",
        "rcshowhideminor": "$1 modificările minore",
        "upload-copy-upload-invalid-domain": "Încărcarea copiilor nu este disponibilă pentru acest domeniu.",
        "upload-dialog-title": "Încărcare fișier",
        "upload-dialog-button-cancel": "Revocare",
+       "upload-dialog-button-back": "Înapoi",
        "upload-dialog-button-done": "Realizat",
        "upload-dialog-button-save": "Salvare",
        "upload-dialog-button-upload": "Încarcă",
        "backend-fail-read": "Imposibil de citit fișierul $1.",
        "backend-fail-create": "Imposibil de scris fișierul $1.",
        "backend-fail-maxsize": "Nu s-a putut scrie fișierul $1 pentru că acesta este mai mare de {{PLURAL:$2|un octet|$2 octeți|$2 de octeți}}.",
-       "backend-fail-readonly": "Suportul de stocare „$1” este în prezent doar în citire. Motivul dat este: „''$2''”",
+       "backend-fail-readonly": "Suportul de stocare „$1” este în prezent doar în citire. Motivul dat este: „<em>$2</em>”",
        "backend-fail-synced": "Fișierul „$1” este într-o stare de inconsistență în suporturile de stocare internă",
        "backend-fail-connect": "Imposibil de conectat la suportul de stocare „$1”.",
        "backend-fail-internal": "O eroare necunoscută s-a produs în suportul de stocare „$1”.",
        "uploadstash-summary": "Această pagină oferă acces la fișierele care sunt încărcate sau sunt în curs de încărcare, dar nu sunt încă publicate pe wiki. Aceste fișiere nu sunt vizibile nimănui, cu excepția celui care le-a încărcat.",
        "uploadstash-clear": "Șterge fișierele din depozitul temporar",
        "uploadstash-nofiles": "Nu aveți fișiere în depozitul temporar.",
-       "uploadstash-badtoken": "Execuția acestei acțiuni nu a reușit, probabil deoarece informațiile dumneavoastră de identificare au expirat. Încercați din nou.",
+       "uploadstash-badtoken": "Execuția acestei acțiuni nu a reușit, probabil deoarece informațiile dumneavoastră de identificare au expirat. Vă rugăm să încercați din nou.",
        "uploadstash-errclear": "Golirea fișierelor nu a reușit.",
        "uploadstash-refresh": "Reîmprospătează lista de fișiere",
        "uploadstash-thumbnail": "arată miniatura",
        "filerevert-submit": "Revenire",
        "filerevert-success": "'''[[Media:$1|$1]]''' a fost readus [la versiunea $4 din $3, $2].",
        "filerevert-badversion": "Nu există o versiune mai veche a fișierului care să corespundă cu data introdusă.",
+       "filerevert-identical": "Versiunea curentă a fișierului este deja identică cu cea selectată.",
        "filedelete": "Șterge $1",
        "filedelete-legend": "Șterge fișierul",
        "filedelete-intro": "Sunteți pe cale să ștergeți fișierul '''[[Media:$1|$1]]''' cu tot istoricul acestuia.",
        "apisandbox-alert-page": "Câmpurile de pe această pagină nu sunt valide.",
        "apisandbox-alert-field": "Valoare acestui câmp nu este validă.",
        "apisandbox-continue": "Continuă",
+       "apisandbox-multivalue-all-namespaces": "$1 (Toate spațiile de nume)",
+       "apisandbox-multivalue-all-values": "$1 (Toate valorile)",
        "booksources": "Surse de cărți",
        "booksources-search-legend": "Căutare surse pentru cărți",
        "booksources-search": "Caută",
index 421884e..b72b2ec 100644 (file)
        "rcfilters-filter-unregistered-description": "Редакторы, которые не вошли в систему.",
        "rcfilters-filtergroup-authorship": "Редактировать авторство",
        "rcfilters-filter-editsbyself-label": "Ваши собственные правки",
-       "rcfilters-filter-editsbyself-description": "Ваши правки.",
+       "rcfilters-filter-editsbyself-description": "Ваш вклад.",
        "rcfilters-filter-editsbyother-label": "Правки других участников",
-       "rcfilters-filter-editsbyother-description": "Ð\9fÑ\80авки, Ñ\81деланнÑ\8bе Ð´Ñ\80Ñ\83гими Ñ\83Ñ\87аÑ\81Ñ\82никами (не Ð²Ð°Ð¼Ð¸).",
+       "rcfilters-filter-editsbyother-description": "Ð\92Ñ\81е Ð¿Ñ\80авки, ÐºÑ\80оме Ð²Ð°Ñ\88иÑ\85 Ñ\81обÑ\81Ñ\82веннÑ\8bÑ\85.",
        "rcfilters-filtergroup-userExpLevel": "Уровня опыта (только для зарегистрированных участников)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Новички",
        "rcfilters-filter-user-experience-level-newcomer-description": "Менее 10 правок и 4 дней работы.",
        "tooltip-pt-mycontris": "Список {{GENDER:|ваших}} правок",
        "tooltip-pt-anoncontribs": "Список правок, сделанных с этого IP-адреса",
        "tooltip-pt-login": "Здесь можно зарегистрироваться в системе, но это необязательно.",
+       "tooltip-pt-login-private": "Вам нужно войти, чтоб использовать эту вики",
        "tooltip-pt-logout": "Завершить сеанс работы",
        "tooltip-pt-createaccount": "Мы предлагаем вам создать учётную запись и войти в систему, хотя это и не обязательно.",
        "tooltip-ca-talk": "Обсуждение основной страницы",
index cbdb085..da94ae8 100644 (file)
        "rcfilters-filter-unregistered-label": "Neregistriran",
        "rcfilters-filter-unregistered-description": "Uredniki, ki niso prijavljeni.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Filter je v sporu z {{PLURAL:$2|naslednjim filtrom|naslednjima filtroma|naslednjimi filtri}} Izkušnje, ki {{PLURAL:$2|najde|najdeta|najdejo}} samo registrirane uporabnike: $1",
-       "rcfilters-filtergroup-authorship": "Uredi avtorstvo",
-       "rcfilters-filter-editsbyself-label": "Vaša lastna urejanja",
-       "rcfilters-filter-editsbyself-description": "Vaša urejanja.",
-       "rcfilters-filter-editsbyother-label": "Urejanja drugih",
-       "rcfilters-filter-editsbyother-description": "Urejanja, ki so jih naredili drugi uporabniki (ne vi).",
+       "rcfilters-filtergroup-authorship": "Avtorstvo prispevka",
+       "rcfilters-filter-editsbyself-label": "Vaše spremembe",
+       "rcfilters-filter-editsbyself-description": "Vaša lastna urejanja.",
+       "rcfilters-filter-editsbyother-label": "Spremembe drugih",
+       "rcfilters-filter-editsbyother-description": "Vse spremembe razen vaše.",
        "rcfilters-filtergroup-userExpLevel": "Stopnja izkušenosti (samo za registrirane uporabnike)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Napredni filtri najdejo samo registrirane uporabnike, zato je ta filter v sporu s filtrom »Neregistrirani«.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filter »Neregistrirani« je v sporu z enim ali več filtri Izkušnje, ki najdejo samo registrirane uporabnike. Filtri v sporu so označeni zgoraj, v območju Dejavni filtri.",
        "enotif_body_intro_moved": "{{GENDER:$2|uporabnik|uporabnica}} $2 je dne $PAGEEDITDATE {{GENDER:$2|spremenil|spremenila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}; za trenutno redakcijo glejte $3.",
        "enotif_body_intro_restored": "{{GENDER:$2|uporabnik|uporabnica}} $2 je dne $PAGEEDITDATE {{GENDER:$2|obnovil|obnovila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}; za trenutno redakcijo glejte $3.",
        "enotif_body_intro_changed": "{{GENDER:$2|uporabnik|uporabnica}} $2 je dne $PAGEEDITDATE {{GENDER:$2|spremenil|spremenila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}; za trenutno redakcijo glejte $3.",
-       "enotif_lastvisited": "Za spremembe po vašem zadnjem obisku glejte $1.",
+       "enotif_lastvisited": "Za vse spremembe po vašem zadnjem obisku si oglejte $1.",
        "enotif_lastdiff": "Glej $1 za to spremembo.",
        "enotif_anon_editor": "brezimni uporabnik $1",
        "enotif_body": "$WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nUrejevalčev povzetek: $PAGESUMMARY $PAGEMINOREDIT\n\nNavežite stik z urejevalcem:\ne-pošta: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nMedtem ko ste prijavljeni, nadaljnjih obvestil ne boste prejemali. Na spisku nadzorov lahko tudi ponastavite zastavice obveščanj za vse spremljane strani.\n\nVaš opozorilni sistem {{GRAMMAR:rodilnik|{{SITENAME}}}}\n\n--\nZa spremembo nastavitev e-poštnih obvestil obiščite\n{{canonicalurl:{{#special:Preferences}}}}\n\nZa spremembo nastavitev spiska nadzorov obiščite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nZa odstranitev strani z vašega spiska nadzorov obiščite\n$UNWATCHURL\n\nPovratna sporočila in pomoč:\n$HELPPAGE",
index 1e247dc..a97d96d 100644 (file)
@@ -32,7 +32,8 @@
                        "Сербијана",
                        "Xð",
                        "Matma Rex",
-                       "Zoranzoki21"
+                       "Zoranzoki21",
+                       "Obsuser"
                ]
        },
        "tog-underline": "Подвлачење веза:",
        "redirectedfrom": "(преусмерено са $1)",
        "redirectpagesub": "Преусмерење",
        "redirectto": "Преусмерава на:",
-       "lastmodifiedat": "Ова страница је последњи пут измењена $1 у $2.",
+       "lastmodifiedat": "Ова страница је последњи пут уређена на датум $1 у $2 ч.",
        "viewcount": "Ова страница је прегледана {{PLURAL:$1|једанпут|$1 пута|$1 пута}}.",
        "protectedpage": "Заштићена страница",
        "jumpto": "Иди на:",
        "readonlywarning": "<strong>Упозорење: база података је закључана ради одржавања, тако да тренутно нећете моћи да сачувате измене.</strong>\nМожда бисте желели сачувати текст за касније у некој текстуалној датотеци.\n\nСистемски администратор је навео следеће објашњење: $1",
        "protectedpagewarning": "<strong>Упозорење: ова страница је заштићена, тако да само администратори могу да је мењају.</strong>\nПоследњи запис у дневнику је приказан испод:",
        "semiprotectedpagewarning": "<strong>Напомена:</strong> Ова страница је заштићена, тако да само регистровани корисници могу да је уређују.\nПоследњи запис у дневнику приказан је испод као референца:",
-       "cascadeprotectedwarning": "<strong>УпозоÑ\80еÑ\9aе:</strong> Ð¾Ð²Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\98е Ð·Ð°Ñ\88Ñ\82иÑ\9bена Ñ\82ако Ð´Ð° Ñ\98е Ð¼Ð¾Ð³Ñ\83 Ñ\83Ñ\80еÑ\92иваÑ\82и Ñ\81амо Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80и, Ñ\98еÑ\80 Ñ\98е Ð¾Ð½Ð° Ñ\83кÑ\99Ñ\83Ñ\87ена Ñ\83 {{PLURAL:$1|Ñ\81ледеÑ\9bÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 ÐºÐ¾Ñ\98а Ñ\98е|Ñ\81ледеÑ\9bе Ñ\81Ñ\82Ñ\80аниÑ\86е ÐºÐ¾Ñ\98е Ñ\81Ñ\83}} Ð·Ð°Ñ\88Ñ\82иÑ\9bене â\80\9eпÑ\80еноÑ\81ивомâ\80\9c заштитом:",
+       "cascadeprotectedwarning": "<strong>УпозоÑ\80еÑ\9aе:</strong> Ð\9eва Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\98е Ð·Ð°Ñ\88Ñ\82иÑ\9bена Ñ\82ако Ð´Ð° Ñ\98е Ð¼Ð¾Ð³Ñ\83 Ñ\83Ñ\80еÑ\92иваÑ\82и Ñ\81амо ÐºÐ¾Ñ\80иÑ\81ниÑ\86и Ñ\81а [[Special:ListGroupRights|одÑ\80еÑ\92еним Ð¿Ñ\80авима]] (админиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80и), Ñ\98еÑ\80 Ñ\98е Ð¸Ñ\81Ñ\82а Ñ\83кÑ\99Ñ\83Ñ\87ена Ñ\83 {{PLURAL:$1|Ñ\81ледеÑ\9bÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 ÐºÐ¾Ñ\98а Ñ\98е Ð·Ð°Ñ\88Ñ\82иÑ\9bена|Ñ\81ледеÑ\9bе Ñ\81Ñ\82Ñ\80аниÑ\86е ÐºÐ¾Ñ\98е Ñ\81Ñ\83 Ð·Ð°Ñ\88Ñ\82иÑ\9bене}} â\80\9eпÑ\80еноÑ\81ивомâ\80\9d заштитом:",
        "titleprotectedwarning": "<strong>Упозорење: ову страницу могу направити само корисници [[Special:ListGroupRights|с одређеним правима]].</strong>\nИспод су наведени последњи записи у дневнику:",
        "templatesused": "{{PLURAL:$1|Шаблон|Шаблони}} на овој страници:",
        "templatesusedpreview": "{{PLURAL:$1|Шаблон|Шаблони}} у овом прегледу:",
        "post-expand-template-argument-warning": "'''Упозорење:''' ова страница садржи најмање један аргумент у шаблону који има превелику величину.\nОвакве аргументе би требало избегавати.",
        "post-expand-template-argument-category": "Странице које садрже изостављене аргументе у шаблону",
        "parser-template-loop-warning": "Откривена је петља шаблона: [[$1]]",
+       "template-loop-category": "Странице са петљама шаблона",
+       "template-loop-category-desc": "Страница садржи петљу шаблона, тј. шаблон који позива сам ребе рекурзивно.",
        "parser-template-recursion-depth-warning": "Дубина укључивања шаблона је прекорачена ($1)",
        "language-converter-depth-warning": "Прекорачена је граница дубине језичког претварача ($1)",
        "node-count-exceeded-category": "Странице у којима је прекорачен број чворова",
        "page_first": "прва",
        "page_last": "последња",
        "histlegend": "Избор разлика: изаберите кутијице измена за упоређивање и притисните ентер или дугме на дну.<br />\nОбјашњење: <strong>({{int:cur}})</strong> = разлика с тренутном изменом, <strong>({{int:last}})</strong> = разлика с претходном изменом, <strong>{{int:minoreditletter}}</strong> = мала измена",
-       "history-fieldset-title": "Преглед историје",
+       "history-fieldset-title": "Преглед измена",
        "history-show-deleted": "Само обрисано",
        "histfirst": "најстарије",
        "histlast": "најновије",
        "saveusergroups": "Сачувај {{GENDER:$1|корисничке}} групе",
        "userrights-groupsmember": "Члан:",
        "userrights-groupsmember-auto": "Подразумевано члан и:",
-       "userrights-groups-help": "Можете променити групе којима овај корисник припада.\n* Означен квадратић означава да се корисник налази у тој групи.\n* Неозначен квадратић означава да се корисник не налази у тој групи.\n* Звездица (*) означава да не можете уклонити групу ако је додате и обратно.\n* Тараба (#) означава да једино можете одложити време истека ове групе; не можете га убрзати.",
+       "userrights-groups-help": "Можете променити групе којима овај корисник припада:\n* Означен квадратић означава да се корисник налази у тој групи.\n* Неозначен квадратић означава да се корисник не налази у тој групи.\n* Звездица (*) означава да не можете уклонити ту групу ако је додате и обратно.\n* Тараба (#) означава да једино можете одложити време истека чланства у тој групи; не можете га убрзати.",
        "userrights-reason": "Разлог:",
        "userrights-no-interwiki": "Немате овлашћења да мењате корисничка права на другим викијима.",
        "userrights-nodatabase": "База података $1 не постоји или није локална.",
        "userrights-changeable-col": "Групе које можете да промените",
        "userrights-unchangeable-col": "Групе које не можете да промените",
        "userrights-irreversible-marker": "$1*",
+       "userrights-cannot-shorten-expiry": "Не можете убрзати истек чланства у групи „$1”. Само корисници са дозволом да додају или уклоне ову групу могу да убрзају рок истека.",
        "userrights-conflict": "Сукоб промена корисничких права! Молимо проверите ваше измене.",
        "group": "Група:",
        "group-user": "Корисници",
        "rcfilters-restore-default-filters": "Враћање подразумеваних филтера",
        "rcfilters-clear-all-filters": "Уклони све филтере",
        "rcfilters-empty-filter": "Нема активних филтера. Сви доприноси су приказани.",
+       "rcfilters-noresults-conflict": "Није пронађен ниједан резултат јер су критеријуми претраге сукобљени",
+       "rcfilters-state-message-subset": "Овај филтер нема ефекта јер су његови резултати укључени са онима {{PLURAL:$2|следећег, ширег филтера|следећих, ширих филтера}} (покушајте са означавањем да бисте их распознали): $1",
+       "rcfilters-state-message-fullcoverage": "Одабир свих филтера у групи је исто као и одабир ниједног, тако да овај филтер нема ефекта. Група укључује: $1",
+       "rcfilters-filtergroup-registration": "Регистрација корисника",
+       "rcfilters-filter-registered-label": "Регистровани",
+       "rcfilters-filter-registered-description": "Пријављени корисници.",
+       "rcfilters-filter-unregistered-label": "Нерегистровани",
+       "rcfilters-filter-unregistered-description": "Уредници који нису пријављени.",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Овај филтер је у сукобу са следећим {{PLURAL:$2|филтером|филтерима}} за искуство, који {{PLURAL:$2|проналази|проналазе}} само регистроване кориснике: $1",
+       "rcfilters-filtergroup-authorship": "Ауторство доприноса",
+       "rcfilters-filter-editsbyself-label": "Ваше измене",
+       "rcfilters-filter-editsbyself-description": "Ваши доприноси.",
+       "rcfilters-filter-editsbyother-label": "Измене других",
+       "rcfilters-filter-editsbyother-description": "Све измене осим Ваших.",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Филтери за искуство проналазе само регистроване кориснике, тако да је овај филтер у сукобу са филтером „Unregistered”.",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Филтер „Unregistered” је у сукобу са једним или више филтера за искуство, који проналазе само регистроване кориснике. Сукобљени филтери су означени у подручју Активни филтери, изнад.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Новајлије",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Мање од 10 измјена и 4 дана активности.",
+       "rcfilters-filter-user-experience-level-learner-label": "Ученици",
+       "rcfilters-filter-user-experience-level-learner-description": "Више дана активности и измјена од „новајлија”, али мање од „искусних корисника”.",
        "rcfilters-filter-user-experience-level-experienced-label": "Искусни корисници",
+       "rcfilters-filter-user-experience-level-experienced-description": "Преко 30 дана активности и 500 измјена.",
+       "rcfilters-filter-minor-label": "Мање измјене",
+       "rcfilters-filter-pageedits-label": "Измјене страница",
+       "rcfilters-filter-pageedits-description": "Измјене вики садржаја, расправа, описа категорија...",
+       "rcfilters-filter-newpages-label": "Стварање страница",
+       "rcfilters-filter-newpages-description": "Измјене којима се стварају нове странице.",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "Филтер за „мање” измене је у сукобу са једним или више филтера типа измена, зато што одређени типови измена не могу да се означе као „мање”. Сукобљени филтери су означени у подручју Активни филтери, изнад.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Одређени типови измена не могу да се означе као „мање”, тако да је овај филтер у сукобу са следећим филтерима типа измена: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Овај филтер типа измене је у сукобу са филтером за „мање” измене. Одређени типови измена не могу да се означе као „мање”.",
        "rcnotefrom": "Испод {{PLURAL:$5|је измена|су измене}} од <strong>$3, $4</strong> (до <strong>$1</strong> приказано).",
+       "rclistfromreset": "Ресетуј одабир датума",
        "rclistfrom": "Прикажи нове измене почев од $2 $3",
        "rcshowhideminor": "$1 мање измене",
        "rcshowhideminor-show": "Прикажи",
        "php-uploaddisabledtext": "Отпремање датотека је онемогућено у PHP-у.\nПроверите подешавања file_uploads.",
        "uploadscripted": "Датотека садржи HTML или скриптни код који може бити погрешно протумачен од стране прегледача.",
        "upload-scripted-pi-callback": "Датотека која садржи инструкције за обраду XML стилског облика се не може отпремити.",
+       "upload-scripted-dtd": "Није могуће отпремање SVG датотека које садрже нестандардну DTD декларацију.",
        "uploaded-script-svg": "Пронађен скриптни елеменат „$1“ у постављеној SVG датотеци.",
        "uploaded-hostile-svg": "Пронађен небезбедан CSS у стилском елементу постављене SVG датотеке.",
        "uploaded-event-handler-on-svg": "Није дозвољено постављање атрибута који контролишу догађаје <code>$1=\"$2\"</code> у SVG датотекама.",
        "enotif_body_intro_moved": "Страницу $1 на {{SITENAME}} {{GENDER:$2|преместио|преместила}} је $2 дана $PAGEEDITDATE Тренутна измена налази се на  $3.",
        "enotif_body_intro_restored": "Страницу $1 на {{SITENAME}} {{GENDER:$2|вратио|вратила}} је $2 дана $PAGEEDITDATE Тренутна измена налази се на $3.",
        "enotif_body_intro_changed": "Страницу $1 на {{SITENAME}} {{GENDER:$2|променио|променила}} је $2 дана $PAGEEDITDATE Тренутна измена налази се на $3.",
-       "enotif_lastvisited": "Ð\9fогледаÑ\98Ñ\82е $1 Ð·Ð° Ñ\81ве Ð¸Ð·Ð¼ÐµÐ½Ðµ Ð¾Ð´ Ð²Ð°Ñ\88е Ð¿Ð¾Ñ\81ледÑ\9aе Ð¿Ð¾Ñ\81еÑ\82е.",
-       "enotif_lastdiff": "Ð\9fогледаÑ\98Ñ\82е $1 Ð´Ð° Ð²Ð¸Ð´Ð¸Ñ\82е Ð¾Ð²Ñ\83 Ð¸Ð·Ð¼ÐµÐ½Ñ\83.",
+       "enotif_lastvisited": "Ð\97а Ñ\81ве Ð¸Ð·Ð¼ÐµÐ½Ðµ Ð¾Ð´ Ð²Ð°Ñ\88е Ð¿Ð¾Ñ\81ледÑ\9aе Ð¿Ð¾Ñ\81еÑ\82е, Ð¿Ð¾Ð³Ð»ÐµÐ´Ð°Ñ\98Ñ\82е $1.",
+       "enotif_lastdiff": "Ð\94а Ð²Ð¸Ð´Ð¸Ñ\82е Ð¾Ð²Ñ\83 Ð¸Ð·Ð¼ÐµÐ½Ñ\83, Ð¿Ð¾Ð³Ð»ÐµÐ´Ð°Ñ\98Ñ\82е $1.",
        "enotif_anon_editor": "анониман корисник $1",
        "enotif_body": "Поштовани $WATCHINGUSERNAME,\n \t\n$PAGEINTRO $NEWPAGE\n\nОпис: $PAGESUMMARY $PAGEMINOREDIT\n\nКонтакт:\nмејл: $PAGEEDITOR_EMAIL\nвики: $PAGEEDITOR_WIKI\n\nНеће бити других обавештења у случају даљих измена уколико не посетите ову страницу када сте пријављени.\nМожете и да поништите поставке обавештења за све странице у вашем списку надгледања.\n\nСрдачан поздрав, {{SITENAME}}\n\n--\nДа бисте променили поставке имејл обавештења, посетите\n{{canonicalurl:{{#special:Preferences}}}}\n\nДа бисте променили поставке списка надгледања, посетите\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nДа бисте уклонили ову страницу са списка надгледања, посетите\n$UNWATCHURL\n\nПодршка и даља помоћ:\n$HELPPAGE",
        "created": "направљена",
        "sp-contributions-uploads": "отпремања",
        "sp-contributions-logs": "дневници",
        "sp-contributions-talk": "разговор",
-       "sp-contributions-userrights": "Ñ\83пÑ\80авÑ\99аÑ\9aе ÐºÐ¾Ñ\80иÑ\81ниÑ\87ким Ð¿Ñ\80авима",
+       "sp-contributions-userrights": "Ñ\83пÑ\80авÑ\99аÑ\9aе Ð¿Ñ\80авима {{GENDER:$1|коÑ\80иÑ\81ника|коÑ\80иÑ\81ниÑ\86е|коÑ\80иÑ\81ника}}",
        "sp-contributions-blocked-notice": "Овај корисник је тренутно блокиран. \nИспод су наведени последњи записи у дневнику блокирања:",
        "sp-contributions-blocked-notice-anon": "Ова ИП адреса је тренутно блокирана.\nИспод су наведени последњи записи у дневнику блокирања:",
        "sp-contributions-search": "Претрага доприноса",
        "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": "Сакриј блокирања налога",
        "tooltip-pt-mycontris": "Списак {{GENDER:|ваших}} доприноса",
        "tooltip-pt-anoncontribs": "Списак измена направљених са ове IP адресе",
        "tooltip-pt-login": "Препоручујемо вам да се пријавите, иако то није обавезно.",
+       "tooltip-pt-login-private": "Морате да се пријавите да бисте користили овај Вики",
        "tooltip-pt-logout": "Одјавите се",
        "tooltip-pt-createaccount": "Охрабрујемо вас да отворите налог и пријавите се али то није обавезно",
        "tooltip-ca-talk": "Разговор о страници са садржајем",
        "anonymous": "Анонимни {{PLURAL:$1|корисник|корисници}} пројекта {{SITENAME}}",
        "siteuser": "{{SITENAME}} корисник $1",
        "anonuser": "{{SITENAME}} анониман корисник $1",
-       "lastmodifiedatby": "Ову страницу је последњи пут {{GENDER:$4|изменио|изменила|изменио}} $3, $1 у $2.",
+       "lastmodifiedatby": "Ову страницу је последњи пут {{GENDER:$4|уредио|уредила|уредио}} $3, на датум $1 у $2 ч.",
        "othercontribs": "Засновано на раду корисника $1.",
        "others": "други",
        "siteusers": "{{PLURAL:$2|1={{GENDER:$1|корисник|корисница}}|корисници}} на пројекту {{SITENAME}} $1",
        "newimages-summary": "Ова посебна страница приказује последње отпремљене датотеке.",
        "newimages-legend": "Филтер",
        "newimages-label": "Назив датотеке (или њен део):",
+       "newimages-user": "IP адреса или корисничко име",
        "newimages-showbots": "Прикажи датотеке које су послали ботови",
        "newimages-hidepatrolled": "Сакриј патролирана отпремања",
        "noimages": "Нема ништа.",
        "confirmrecreate-noreason": "{{GENDER:$1|Корисник|Корисница}} [[User:$1|$1]] ([[User talk:$1|разговор]]) је {{GENDER:$1|обрисао|обрисала}} ову страницу након што сте почели да је уређујете. Потврдите да стварно желите да поново направите ову страницу.",
        "recreate": "Поново направи",
        "unit-pixel": "px",
+       "confirm-purge-title": "Освежи ову страницу",
        "confirm_purge_button": "У реду",
        "confirm-purge-top": "Очистити привремену меморију ове стране?",
        "confirm-purge-bottom": "Ова радња чисти привремену меморију и приказује најновију измену.",
        "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|1=догађаја|$5 догађаја}} у дневнику $3: $4",
        "logentry-delete-revision": "$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=једне измене|$5 измене|$5 измена}} на страници $3: $4",
        "logentry-delete-event-legacy": "$1 је {{GENDER:$2|променио|променила}} видљивост догађаја у дневнику $3",
        "special-characters-group-thai": "Тајландски",
        "special-characters-group-lao": "Лаоски",
        "special-characters-group-khmer": "Кмерски",
+       "special-characters-group-canadianaboriginal": "Канадски абориџински",
        "mw-widgets-dateinput-no-date": "Датум није изабран",
        "mw-widgets-dateinput-placeholder-day": "ГГГГ-ММ-ДД",
        "mw-widgets-dateinput-placeholder-month": "ГГГГ-ММ",
        "changecredentials-submit": "Промени",
        "removecredentials": "Уклањање акредитива",
        "credentialsform-provider": "Врста акредитива:",
-       "credentialsform-account": "Назив налога:"
+       "credentialsform-account": "Назив налога:",
+       "rawhtml-notallowed": "&lt;html&gt; тагови не могу да се користе ван нормалних страница.",
+       "gotointerwiki": "Напуштам пројекат {{SITENAME}}",
+       "gotointerwiki-invalid": "Одабрани наслов је невалидан.",
+       "gotointerwiki-external": "Управо ћете да напустите пројекат {{SITENAME}} да бисте посетили пројекат [[$2]] који је засебан веб-сајт.\n\n[$1 Кликните овде да бисте отишли на $1].",
+       "undelete-cantedit": "Не можете повратити ову страницу јер немате дозволу да је уређујете.",
+       "undelete-cantcreate": "Не можете повратити ову страницу јер нема постојеће странице са овим именом и немате дозволу да направите ову страницу."
 }
index dd0e20c..db311fc 100644 (file)
@@ -24,7 +24,8 @@
                        "Xð",
                        "Matma Rex",
                        "Mega Aleksandar",
-                       "Asmen"
+                       "Asmen",
+                       "Obsuser"
                ]
        },
        "tog-underline": "Podvlačenje veza:",
        "redirectedfrom": "(preusmereno sa $1)",
        "redirectpagesub": "Preusmerenje",
        "redirectto": "Preusmerava na:",
-       "lastmodifiedat": "Ova stranica je poslednji put izmenjena $1 u $2.",
+       "lastmodifiedat": "Ova stranica je poslednji put uređena na datum $1 u $2 č.",
        "viewcount": "Ova stranica je pregledana {{PLURAL:$1|jedanput|$1 puta|$1 puta}}.",
        "protectedpage": "Zaštićena stranica",
        "jumpto": "Idi na:",
        "readonlywarning": "<strong>Upozorenje: baza podataka je zaključana radi održavanja, tako da trenutno nećete moći da sačuvate izmene.</strong>\nMožda biste želeli sačuvati tekst za kasnije u nekoj tekstualnoj datoteci.\n\nSistemski administrator je naveo sledeće objašnjenje: $1",
        "protectedpagewarning": "<strong>Upozorenje: ova stranica je zaštićena, tako da samo administratori mogu da je menjaju.</strong>\nPoslednji zapis u dnevniku je prikazan ispod:",
        "semiprotectedpagewarning": "<strong>Napomena:</strong> Ova stranica je zaštićena, tako da samo registrovani korisnici mogu da je uređuju.\nPoslednji zapis u dnevniku prikazan je ispod kao referenca:",
-       "cascadeprotectedwarning": "<strong>Upozorenje:</strong> ova stranica je zaštićena tako da je mogu uređivati samo administratori, jer je ona uključena u {{PLURAL:$1|sledeću stranicu koja je|sledeće stranice koje su}} zaštićene „prenosivom“ zaštitom:",
+       "cascadeprotectedwarning": "<strong>Upozorenje:</strong> Ova stranica je zaštićena tako da je mogu uređivati samo korisnici sa [[Special:ListGroupRights|određenim pravima]] (administratori), jer je ista uključena u {{PLURAL:$1|sledeću stranicu koja je zaštićena|sledeće stranice koje su zaštićene}} „prenosivom” zaštitom:",
        "titleprotectedwarning": "<strong>Upozorenje: ovu stranicu mogu napraviti samo korisnici [[Special:ListGroupRights|s određenim pravima]].</strong>\nIspod su navedeni poslednji zapisi u dnevniku:",
        "templatesused": "{{PLURAL:$1|Šablon|Šabloni}} na ovoj stranici:",
        "templatesusedpreview": "{{PLURAL:$1|Šablon|Šabloni}} u ovom pregledu:",
        "page_first": "prva",
        "page_last": "poslednja",
        "histlegend": "Izbor razlika: izaberite kutijice izmena za upoređivanje i pritisnite enter ili dugme na dnu.<br />\nObjašnjenje: <strong>({{int:cur}})</strong> = razlika s trenutnom izmenom, <strong>({{int:last}})</strong> = razlika s prethodnom izmenom, <strong>{{int:minoreditletter}}</strong> = mala izmena",
-       "history-fieldset-title": "Pregled istorije",
+       "history-fieldset-title": "Pregled izmena",
        "history-show-deleted": "Samo obrisane",
        "histfirst": "najstarije",
        "histlast": "najnovije",
        "recentchanges-legend-heading": "<strong>Legenda:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|spisak novih stranica]])",
        "recentchanges-submit": "Prikaži",
+       "rcfilters-filtergroup-registration": "Registracija korisnika",
+       "rcfilters-filter-registered-label": "Registrovani",
+       "rcfilters-filter-registered-description": "Prijavljeni korisnici.",
+       "rcfilters-filter-unregistered-label": "Neregistrovani",
+       "rcfilters-filter-unregistered-description": "Urednici koji nisu prijavljeni.",
+       "rcfilters-filtergroup-authorship": "Autorstvo doprinosa",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Novajlije",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Manje od 10 izmjena i 4 dana aktivnosti.",
+       "rcfilters-filter-user-experience-level-learner-label": "Učenici",
+       "rcfilters-filter-user-experience-level-learner-description": "Više dana aktivnosti i izmjena od „novajlija”, ali manje od „iskusnih korisnika”.",
+       "rcfilters-filter-user-experience-level-experienced-label": "Iskusni korisnici",
+       "rcfilters-filter-user-experience-level-experienced-description": "Preko 30 dana aktivnosti i 500 izmjena.",
+       "rcfilters-filter-minor-label": "Manje izmjene",
+       "rcfilters-filter-pageedits-label": "Izmjene stranica",
+       "rcfilters-filter-pageedits-description": "Izmjene viki sadržaja, rasprava, opisa kategorija...",
+       "rcfilters-filter-newpages-label": "Stvaranje stranica",
+       "rcfilters-filter-newpages-description": "Izmjene kojima se stvaraju nove stranice.",
        "rcnotefrom": "Ispod {{PLURAL:$5|je izmena|su izmene}} od <strong>$3, $4</strong> (do <strong>$1</strong> prikazano).",
        "rclistfrom": "Prikaži nove izmene počev od $2 $3",
        "rcshowhideminor": "$1 manje izmene",
        "enotif_body_intro_moved": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|premestio|premestila}} je $2 dana $PAGEEDITDATE Trenutna izmena nalazi se na  $3.",
        "enotif_body_intro_restored": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|vratio|vratila}} je $2 dana $PAGEEDITDATE Trenutna izmena nalazi se na $3.",
        "enotif_body_intro_changed": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|promenio|promenila}} je $2 dana $PAGEEDITDATE Trenutna izmena nalazi se na $3.",
-       "enotif_lastvisited": "Pogledajte $1 za sve izmene od vaše poslednje posete.",
-       "enotif_lastdiff": "Pogledajte $1 da vidite ovu izmenu.",
+       "enotif_lastvisited": "Za sve izmene od vaše poslednje posete, pogledajte $1.",
+       "enotif_lastdiff": "Da vidite ovu izmenu, pogledajte $1.",
        "enotif_anon_editor": "anoniman korisnik $1",
        "enotif_body": "Poštovani $WATCHINGUSERNAME,\n \t\n$PAGEINTRO $NEWPAGE\n\nOpis: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakt:\nmejl: $PAGEEDITOR_EMAIL\nviki: $PAGEEDITOR_WIKI\n\nNeće biti drugih obaveštenja u slučaju daljih izmena ukoliko ne posetite ovu stranicu kada ste prijavljeni.\nMožete i da poništite postavke obaveštenja za sve stranice u vašem spisku nadgledanja.\n\nSrdačan pozdrav, {{SITENAME}}\n\n--\nDa biste promenili postavke imejl obaveštenja, posetite\n{{canonicalurl:{{#special:Preferences}}}}\n\nDa biste promenili postavke spiska nadgledanja, posetite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nDa biste uklonili ovu stranicu sa spiska nadgledanja, posetite\n$UNWATCHURL\n\nPodrška i dalja pomoć:\n$HELPPAGE",
        "created": "napravljena",
        "sp-contributions-uploads": "otpremanja",
        "sp-contributions-logs": "dnevnici",
        "sp-contributions-talk": "razgovor",
-       "sp-contributions-userrights": "upravljanje korisničkim pravima",
+       "sp-contributions-userrights": "upravljanje pravima {{GENDER:$1|korisnika|korisnice|korisnika}}",
        "sp-contributions-blocked-notice": "Ovaj korisnik je trenutno blokiran. \nIspod su navedeni poslednji zapisi u dnevniku blokiranja:",
        "sp-contributions-blocked-notice-anon": "Ova IP adresa je trenutno blokirana.\nIspod su navedeni poslednji zapisi u dnevniku blokiranja:",
        "sp-contributions-search": "Pretraga doprinosa",
        "anonymous": "Anonimni {{PLURAL:$1|korisnik|korisnici}} projekta {{SITENAME}}",
        "siteuser": "{{SITENAME}} korisnik $1",
        "anonuser": "{{SITENAME}} anoniman korisnik $1",
-       "lastmodifiedatby": "Ovu stranicu je poslednji put {{GENDER:$4|izmenio|izmenila|izmenio}} $3, $1 u $2.",
+       "lastmodifiedatby": "Ovu stranicu je poslednji put {{GENDER:$4|uredio|uredila|uredio}} $3, na datum $1 u $2 č.",
        "othercontribs": "Zasnovano na radu korisnika $1.",
        "others": "drugi",
        "siteusers": "{{PLURAL:$2|1={{GENDER:$1|korisnik|korisnica}}|korisnici}} na projektu {{SITENAME}} $1",
index 7a893dc..7117c23 100644 (file)
                        "לערי ריינהארט",
                        "아라",
                        "Macofe",
-                       "Uchup19"
+                       "Uchup19",
+                       "WikiKaruhun"
                ]
        },
        "tog-underline": "Gurat-handapan tutumbu",
        "tog-hideminor": "Sumputkeun éditan minor dina anyar robah",
        "tog-hidepatrolled": "Sumputkeun anu geus diroris ti béréndélan nu anyar robah",
        "tog-newpageshidepatrolled": "Sumputkeun nu geus diroris tina béréndélan kaca anyar",
+       "tog-hidecategorization": "Sumputkeun pangkategorian kaca",
        "tog-extendwatchlist": "Legaan béréndélan ngarah sakabéh parobahanana kaawaskeun",
        "tog-usenewrc": "Parobahan grup dumasar kaca dina béréndélan anu anyar robah jeung awaskeuneun",
        "tog-numberheadings": "Nomeran lulugu sacara otomatis",
        "tog-watchlisthidebots": "Sumputkeun éditan bot dina daptar awaskeuneun",
        "tog-watchlisthideminor": "Sumputkeun éditan leutik dina daptar awaskeuneun",
        "tog-watchlisthideliu": "Sumputkeun éditan pamaké nu asup log tina daptar awaskeun",
+       "tog-watchlistreloadautomatically": "Muat deui awaskeuneun kalawan otomatis nalika hiji saringan dirobah (diperlukeun JavaScript)",
        "tog-watchlisthideanons": "Sumputkeun éditan pamaké anonim tina daptar awaskeun",
        "tog-watchlisthidepatrolled": "Sumputkeun éditan nu geus diroris tina béréndélan awaskeuneun",
+       "tog-watchlisthidecategorization": "Sumputkeun pangkategorian kaca",
        "tog-ccmeonemails": "Kirimkeun ogé salinan surélékna ka alamat kuring",
        "tog-diffonly": "Ulah némbongkeun eusi kaca di handapeun béda éditan",
        "tog-showhiddencats": "Témbongkeun kategori nyumput",
-       "tog-norollbackdiff": "Liwat béda sanggeus malikkeun révisi",
+       "tog-norollbackdiff": "Ulah némbongkeun bébéda sanggeus ngalakonan pamalikan",
        "tog-useeditwarning": "Béjaan kuring lamun ninggalkeun kaca édit anu parobahanana can disimpen",
-       "tog-prefershttps": "Salawasna paké sambungan aman nalika asup log",
+       "tog-prefershttps": "Teterusan paké sambungan aman nalika asup log",
        "underline-always": "Salawasna",
        "underline-never": "Ulah",
        "underline-default": "Kalakop atawa panyungsi bawaan",
@@ -63,7 +67,7 @@
        "editfont-monospace": "Tulisan monospasi",
        "editfont-sansserif": "Aksara Sans-serif",
        "editfont-serif": "Aksara Serif",
-       "sunday": "Minggu",
+       "sunday": "Ahad",
        "monday": "Senén",
        "tuesday": "Salasa",
        "wednesday": "Rebo",
        "october-date": "$1 Oktober",
        "november-date": "$1 Nopémber",
        "december-date": "$1 Désémber",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Kategori|Kategori}}",
        "category_header": "Artikel-artikel na kategori \"$1\"",
        "subcategories": "Subkategori",
        "category-media-header": "Média dina kategori \"$1\"",
-       "category-empty": "''Kategori ieu, ayeuna teu ngabogaan artikel atawa gambar.''",
+       "category-empty": "<em>Ieu kategori kiwari teu ngandung kaca atawa média.</em>",
        "hidden-categories": "{{PLURAL:$1|Kategori nyumput|Kategori nyumput}}",
        "hidden-category-category": "Kategori nu nyarumput",
        "category-subcat-count": "{{PLURAL:$2|Ieu kategori ngan boga subkategori di handap.|Kategori ieu ngawengku {{PLURAL:$1|subkategori|$1 subkategori}} ti $2.}}",
        "category-subcat-count-limited": "Ieu kategori ngawengku {{PLURAL:$1|subkategori|$1 subkategori}}.",
-       "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-article-count": "{{PLURAL:$2|Ieu kategori ngan ngawengku kaca 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 ieu 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 ieu kategori.",
        "listingcontinuesabbrev": "(samb.)",
        "index-category": "Kaca nu diindéks",
-       "noindex-category": "Kaca nu teu diindéks",
+       "noindex-category": "Kaca nu teu kaindéks",
        "broken-file-category": "Kaca anu ngandung tutumbu buntu",
        "about": "Ngeunaan",
        "article": "Kaca eusi",
        "newwindow": "(buka na jandéla anyar)",
        "cancel": "Bolay",
        "moredotdotdot": "Deui...",
-       "morenotlisted": "Ieu béréndélan tacan lengkep.",
+       "morenotlisted": "Ieu béréndélan bangun can lengkep.",
        "mypage": "Kaca",
        "mytalk": "Obrolan",
-       "anontalk": "Obrolan pikeun alamat IP ieu",
+       "anontalk": "Obrolan",
        "navigation": "Pituduh",
        "and": "&#32;jeung",
        "qbfind": "Panggihan",
        "qbmyoptions": "Kaca kuring",
        "faq": "NLD",
        "faqpage": "Project:NLD",
-       "actions": "Peta",
+       "actions": "Tarékah",
        "namespaces": "Ngaranspasi",
        "variants": "Varian",
        "navigation-heading": "Menu navigasi",
        "tagline": "Ti {{SITENAME}}",
        "help": "Pitulung",
        "search": "Paluruh",
+       "search-ignored-headings": "# <!-- antepkeun ieu baris sakumaha ayana wé --> <pre>\n# Judul anu bakal diantep ku pamaluruhan.\n# Éditan kana ieu bakal dilarapkeun geuwat kalayan judul nu kaindéks\n# Anjeun bisa maksa pangindékan deui ieu kaca ku cara ngédit kosong (''null édit'')\n# Sintaksisna mah siga kieu yeuh:\n#   * Sagalaning ti karakter \"#\" nepi ka ahir baris éta téh mangrupa koméntar.\n#   * Unggal baris teu-kosong mah judul perenah bakal diantepkeun.\nRujukan\nTutumbu luar\nTempo ogé\n #</pre>",
        "searchbutton": "Paluruh",
        "go": "Jung",
        "searcharticle": "Jung",
        "edit-local": "Edit déskripsi lokal",
        "create": "Jieun",
        "create-local": "Tambah déskripsi lokal",
-       "editthispage": "Édit kaca ieu",
-       "create-this-page": "Jieun kaca ieu",
-       "delete": "Hapus",
-       "deletethispage": "Hapus kaca ieu",
-       "undeletethispage": "Bolaykeun ngahapus ieu kaca",
-       "undelete_short": "Bolaykeun ngahapus {{PLURAL:$1|hiji éditan|$1 éditan}}",
-       "viewdeleted_short": "Témbongkeun {{PLURAL:$1|hiji éditan nu dihapus|$1 éditan nu dihapus}}",
+       "editthispage": "Édit ieu kaca",
+       "create-this-page": "Jieun ieu kaca",
+       "delete": "Pupus",
+       "deletethispage": "Pupus ieu kaca",
+       "undeletethispage": "Tong jadi mupus ieu kaca",
+       "undelete_short": "Tong jadi mupus {{PLURAL:$1|hiji éditan|$1 éditan}}",
+       "viewdeleted_short": "Témbongkeun {{PLURAL:$1|hiji éditan nu dipupus|$1 éditan nu dipupus}}",
        "protect": "Konci",
        "protect_change": "robah",
-       "protectthispage": "Konci kaca ieu",
+       "protectthispage": "Konci ieu kaca",
        "unprotect": "Robah protéksi",
        "unprotectthispage": "Robah protéksi ieu kaca",
        "newpage": "Kaca anyar",
-       "talkpage": "Sawalakeun kaca ieu",
-       "talkpagelinktext": "Obrolan",
+       "talkpage": "Sawalakeun ieu kaca",
+       "talkpagelinktext": "obrolan",
        "specialpage": "Kaca Husus",
        "personaltools": "Parabot pribadi",
-       "articlepage": "Témbongkeun kaca eusi",
+       "articlepage": "Témbongkeun eusi kaca",
        "talk": "Sawala",
        "views": "Témbongan",
        "toolbox": "Parabot",
        "tool-link-emailuser": "Kirim surélék ka ieu {{GENDER:$1|pamaké}}",
        "userpage": "Témbongkeun kaca pamaké",
        "projectpage": "Témbongkeun kaca proyék",
-       "imagepage": "Tempo kaca gambar",
+       "imagepage": "Tempo kaca berkas",
        "mediawikipage": "Témbongkeun kaca talatah",
        "templatepage": "Témbongkeun kaca citakan",
        "viewhelppage": "Témbongkeun kaca pitulung",
        "categorypage": "Tempo kaca kategori",
        "viewtalkpage": "Témbongkeun sawala",
        "otherlanguages": "Dina séjén basa",
-       "redirectedfrom": "(dipindahkeun ti $1)",
+       "redirectedfrom": "(dialihkeun ti $1)",
        "redirectpagesub": "Kaca alihan",
        "redirectto": "Alihkeun ka:",
-       "lastmodifiedat": "Kaca ieu panungtungan dirobah $2, $1.",
+       "lastmodifiedat": "Kaca ieu panungtungan diédit $1, jam $2.",
        "viewcount": "Kaca ieu geus dibuka {{PLURAL:$1|sakali|$1 kali}}.<br />",
        "protectedpage": "Kaca nu dikonci",
        "jumpto": "Luncat ka:",
        "jumptonavigation": "pituduh",
        "jumptosearch": "paluruh",
-       "view-pool-error": "Punten, serverna keur pinuh.\nLoba teuing nu nyoba muka ieu kaca.\nMangga cobian sanés waktos.\n\n$1",
-       "generic-pool-error": "Hampura, serverna keur pinuh.\nLoba teuing nu nyoba muka ieu sumberdaya.\nAntosan sakedap, engké cobaan deui.",
+       "view-pool-error": "Punten, serverna keur pinuh ayeuna mah.\nLoba teuing nu nyoba muka ieu kaca.\nMangga tunguan heula méméh anjeun nyobaan deui muka ieu kaca.\n\n$1",
+       "generic-pool-error": "Hampura, serverna keur pinuh ayeuna mah.\nLoba teuing nu nyoba muka ieu sumberdaya.\nTunguan heula méméh anjeun nyobaan deui muka ieu sumberdaya.",
        "pool-timeout": "Béakeun waktu nungguan konci",
        "pool-queuefull": "Antrian geus pinuh",
-       "pool-errorunknown": "Éror teu dipikawanoh",
-       "pool-servererror": "Palayanan ''pool counter'' teu disadiakeun ($1).",
+       "pool-errorunknown": "Éror teu dipikanyaho",
+       "pool-servererror": "Layanan ''pool counter'' teu sayaga ($1).",
        "poolcounter-usage-error": "Galat pamakéan: $1",
        "aboutsite": "Ngeunaan {{SITENAME}}",
        "aboutpage": "Project:Ngeunaan",
        "privacypage": "Project:Kawijakan privasi",
        "badaccess": "Kasalahan widi",
        "badaccess-group0": "Anjeun teu wenang ngalaksanakeun peta nu dipundut.",
-       "badaccess-groups": "Peta nu dipundut ngan bisa laksana pikeun pamaké ti salah sahiji {{PLURAL:$2|gorombolan|salah sahiji gorombolan}}: $1.",
+       "badaccess-groups": "Tarékah nu dipundut kur bisa laksana ajang pamaké ti {{PLURAL:$2|gorombolan|salah sahiji gorombolan}}: $1.",
        "versionrequired": "Butuh MediaWiki vérsi $1",
        "versionrequiredtext": "Butuh MediaWiki vérsi $1 pikeun migunakeun ieu kaca. Mangga tingal [[Special:Version|kaca vérsi]]",
        "ok": "Heug",
        "retrievedfrom": "Dicomot ti \"$1\"",
-       "youhavenewmessages": "Anjeun boga $1 ($2).",
-       "youhavenewmessagesfromusers": "{{PLURAL:$4|Anjeun boga}} $1 ti {{PLURAL:$3|pamaké séjén|$3 pamaké}} ($2).",
-       "youhavenewmessagesmanyusers": "Anjeun boga $1 ti pamaké lian ($2).",
-       "newmessageslinkplural": "{{PLURAL:$1|obrolan anyar|obrolan anyar}}",
+       "youhavenewmessages": "{{PLURAL:$3|Anjeun meunang}} $1 ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Anjeun meunang}} $1 ti {{PLURAL:$3|pamaké séjén|$3 pamaké}} ($2).",
+       "youhavenewmessagesmanyusers": "Anjeun meunang $1 ti pamaké lian ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|hiji talatah anyar|999=talatah anyar}}",
        "newmessagesdifflinkplural": "{{PLURAL:$1|parobahan|999=parobahan}} panungtung",
-       "youhavenewmessagesmulti": "Anjeun boga talatah anyar di $1",
+       "youhavenewmessagesmulti": "Anjeun meunang talatah anyar di $1",
        "editsection": "édit",
        "editold": "édit",
        "viewsourceold": "tempo sumber",
        "editlink": "édit",
        "viewsourcelink": "témbongkeun sumber",
        "editsectionhint": "Édit bab: $1",
-       "toc": "Daptar eusi",
+       "toc": "Eusi",
        "showtoc": "témbongkeun",
        "hidetoc": "sumputkeun",
        "collapsible-collapse": "Tilepkeun",
        "actionthrottled": "Peta diwates",
        "actionthrottledtext": "Salaku tetengger anti-spam, anjeun teu diwenangkeun loba kitu peta dina jangka waktu anu sakitu heureutna. Mangga lajengkeun deui sanggeus sababaraha menit ka payun.",
        "protectedpagetext": "Ieu kaca dijaga tina éditan atawa peta lianna.",
-       "viewsourcetext": "Anjeun bisa némbongkeun sarta nyalin sumber ieu kaca:",
+       "viewsourcetext": "Anjeun bisa nempo sarta néplak sumber ieu kaca.",
        "viewyourtext": "Anjeun bisa némbongkeun sarta nyalin sumber '''éditan anjeun''' ka ieu kaca:",
        "protectedinterface": "Ieu kaca nyadiakeun téks antarmuka pikeun sopwér di ieu wiki, ku kkituna dikonci pikeun nyingkahan \nanu ngaruksak.\nPikeun nambahkeun atawa ngarobah tarjamahan pikeun sakabéh wiki, buka [https://translatewiki.net/ translatewiki.net], proyék lokalisasi MediaWiki.",
        "editinginterface": "<strong>Awas:</strong> Anjeun keur ngédit kaca nu dipaké pikeun nyadiakeun téks antarmuka pikeun sopwérna.\nParobahan kana ieu kaca bakal mangaruhan pidangan antarmuka pikeun pamaké séjén di ieu wiki.",
        "password-change-forbidden": "Anjeun teu bisa ngarobah kecap sandi dina ieu wiki.",
        "externaldberror": "Aya kasalahan dina pangkalan data oténtikasi luar, atawa anjeun mémang teu diwenangkeun pikeun ngaropéa akun luar anjeun.",
        "login": "Asup log",
+       "login-security": "Buktikeun idéntitas anjeun",
        "nav-login-createaccount": "Nyieun akun/asup log",
        "logout": "Kaluar log",
        "userlogout": "Kaluar log",
        "changepassword-success": "Kecap sandi Anjeun geus laksana dirobah!",
        "changepassword-throttled": "Anjeun geus loba teuing nyobaan asup log.\nTungguan $1 méméh nyobaan deui.",
        "botpasswords": "Kecap sandi bot",
+       "botpasswords-disabled": "Kecap sandi bot dipareuman.",
+       "botpasswords-no-central-id": "Pikeun migunakeun kecap sandi bot, anjeun kudu asup log ka akun museur heula.",
+       "botpasswords-existing": "Kecap sandi bot sayaga",
+       "botpasswords-createnew": "Jieun kecap sandi bot anyar",
+       "botpasswords-editexisting": "Édit kecap sandi bot nu sayaga",
        "botpasswords-label-appid": "Ngaran bot:",
        "botpasswords-label-create": "Jieun",
        "botpasswords-label-update": "Anyarkeun",
        "botpasswords-label-cancel": "Bolay",
        "botpasswords-label-delete": "Pupus",
        "botpasswords-label-resetpassword": "Balikeun deui kecap sandi",
+       "botpasswords-label-grants": "Aksés nu dibikeun:",
        "botpasswords-label-grants-column": "Diwidian",
+       "botpasswords-bad-appid": "Ngaran bot \"$1\" teu sah.",
+       "botpasswords-created-title": "Kecap sandi bot dijieun",
        "botpasswords-updated-title": "Kecap sandi bot dianyarkeun",
        "botpasswords-deleted-title": "Kecap sandi bot dihapus",
        "resetpass_forbidden": "Sandi henteu bisa dirobah",
        "passwordreset-emailtext-user": "Pamaké $1 di {{SITENAME}} ménta nyetél ulang sandi anjeun di {{SITENAME}} ($4). {{PLURAL:$3|Akun}} di handap tumali jeung alamat surélék ieu:\n\n$2\n\n{{PLURAL:$3|Ieu sandi saheulaanan}} bakal kadaluwarsa dina témpo {{PLURAL:$5|sapoé|$5 poé}}.\nAnjeun kudu asup sarta milih sandi anyar ayeuna. Lamun henteu rumasa nyieun ieu pamundut atawa lamun geus inget sandi asli sarta moal ngarobah deui, ieu talatah teu kudu dipaliré.",
        "passwordreset-emailelement": "Sandiasma: \n$1\n\nSandi saheulaanan: \n$2",
        "passwordreset-emailsentemail": "Mun ieu alamat surélék patalian jeung akun anjeun, mangka surélék pikeun nyetél ulang kecap sandi bakal dikirim.",
+       "passwordreset-nocaller": "Panggero kudu dibikeun",
+       "passwordreset-nosuchcaller": "Panggero can aya: $1",
+       "passwordreset-invalidemail": "Alamat surélék teu sah",
        "changeemail": "Ganti alamat surélék",
        "changeemail-header": "Ganti alamat surélék akun",
        "changeemail-no-info": "Anjeun kudu asup log pikeun bisa muka ieu kaca sacara langsung.",
        "changeemail-password": "Kecap sandi {{SITENAME}} Anjeun:",
        "changeemail-submit": "Ganti surélék",
        "changeemail-throttled": "Anjeun loba teuing gagal asup log.\nTungguan $1 saméméh nyobaan deui.",
+       "changeemail-nochange": "Pék asupkeun alamat surélék anyar anu béda.",
        "resettokens": "Rését token",
        "resettokens-text": "Anjeun bisa ngarését token sangkan bisa muka sababaraha data-data pribadi anu tumali jeung akun anjeun di dieu.\n\nAnjeun kudu ngarését lamun kungsi teu kahaja ngabéjaan anu séjén atawa lamun aya anu nyusup kana akun anjeun.",
        "resettokens-no-tokens": "Taya token pikeun dirését.",
        "resettokens-tokens": "Token:",
        "resettokens-token-label": "$1 (ajén ayeuna: $2)",
        "resettokens-watchlist-token": "Token pikeun asupan raramat (Atom/RSS) [[Special:Watchlist|parobahan kana kaca-kaca anu diponcorong]]",
+       "resettokens-done": "Reset token.",
        "resettokens-resetbutton": "Setél token anu dipilih",
        "bold_sample": "Téks kandel",
        "bold_tip": "Téks kandel",
        "sig_tip": "Paraf anjeun katut cap titimangsa",
        "hr_tip": "Garis horisontal",
        "summary": "Ringkesan:",
-       "subject": "Jejer/Judul:",
+       "subject": "Subyék:",
        "minoredit": "Ieu éditan minor",
        "watchthis": "Awaskeun kaca ieu",
        "savearticle": "Simpen",
        "selfredirect": "<strong>Awas:</strong> Anjeun ngalihkeun ieu kaca ka asalna.\nAnjeun sigana salah ngasupkeun tujul alihan, atawa ngédit kaca anu salah.\nUpama anjeun ngaklik deui \"{{int:savearticle}}\", alihanana bakal angger dijieun.",
        "missingcommenttext": "Mangga tulis koméntar di handapeun ieu.",
        "missingcommentheader": "<strong>Pépéling</strong>: Anjeun can ngeusian judul pikeun ieu koméntar.\nMun anjeun ngaklik deui \"{{int:savearticle}}\", éditan anjeun bakal disimpen tanpa koméntar.",
-       "summary-preview": "Ringkesan pramidang:",
-       "subject-preview": "Sawangan subyek/tajuk:",
+       "summary-preview": "Pramidang tingkesan édit:",
+       "subject-preview": "Pramidang subyék:",
        "previewerrortext": "Aya éror nalika nyobaan nyawang robahan anjeun.",
        "blockedtitle": "Pamaké dipeungpeuk",
        "blockedtext": "'''Ngaran pamaké atawa alamat IP anjeun dipeungpeuk.'''\n\nDipeungpeuk ku $1.\nAlesanana ''$2''.\n\n* Mimiti dipeungpeuk : $8\n* dipeungpeuk kadaluarsa dina: $6\n* Sasaran nudipeungpeuk : $7\n\nAnjeun bisa nepungan $1 atawa salasahiji [[{{MediaWiki:Grouppage-sysop}}|kuncén]] séjén pikeun nyawalakeun hal ieu.\n'''Catet''': yén anjeun teu bisa maké fungsi \"surélékan pamaké ieu\" mun anjeun teu ngadaptarkeun alamat surélék nu sah kana [[Special:Preferences|préferénsi pamaké]] anjeun.\n\nAlamat IP anjeun $3 jeung ID na #$5.\nLampirkeun informasi ieu dina unggal ''query'' anjeun.",
        "continue-editing": "Miang ka bagian ngédit",
        "previewconflict": "Sawangan ieu mangrupa eunteung pikeun téks na rohangan ngédit sakumaha bakal katémbong mun ku anjeun disimpen.",
        "session_fail_preview": "'''Punten! Kami teu bisa ngolah éditan anjeun alatan leungitna data rintakan. Mangga cobian deui. Mun tetep teu bisa, cobi kaluar log lajeng lebet deui.'''",
-       "session_fail_preview_html": "'''Punten! Kami teu bisa ngolah éditan anjeun sabab leungitna data rintakan.'''\n\n''Kusabab {{SITENAME}} ngawenangkeun dipakéna HTML atah, pramidangna disumputkeun pikeun nyegah panarajang JavaScript.''\n\n'''Mun ieu éditan bener, mangga cobian deui. Mun tetep teu metu, cobi [[Special:UserLogout|kaluar log]] heula, lajeng lebet deui.'''",
+       "session_fail_preview_html": "Hampura! Kami teu bisa ngolah éditan anjeun lantaran leungitna data rintakan.\n\n<em>Kusabab {{SITENAME}} ngawenangkeun dipakéna HTML atah, pramidangna disumputkeun pikeun nyegah panarajang JavaScript.''</em>\n\n<strong>Mun ieu éditan bener, mangga cobian deui. Mun tetep teu metu, coba [[Special:UserLogout|kaluar log]] heula, terus asup deui.</strong>",
        "token_suffix_mismatch": "'''Éditan anjeun ditolak sabab aplikasi klien Anjeun ngarobah karakter tanda baca dina éditan. Éditan kasebut ditolak keur nyegah kasalahan dina artikel téks. Hal ieu kadang-kadang kajadian lamun Anjeun maké proksi anonim basis web nu masalah.'''",
        "edit_form_incomplete": "'''Sawatara bagian tina wangun éditan teu nepi ka sérver; pariksa deui naha éditan Anjeun tetep gembleng sarta cobaan deui.'''",
        "editing": "Ngédit $1",
        "yourdiff": "Béda",
        "copyrightwarning": "Perhatikeun yén sadaya kontribusi ka MediaWiki dianggap medal dina panangtayungan lisénsi $2 (tempo $1 pikeun jéntréna). Mun anjeun teu miharep tulisan anjeun dirobah sarta disebarkeun deui, ulah dilebetkeun ka dieu.<br />\nAnjeun ogé jangji yén tulisan ieu dijieun ku sorangan, atawa disalin ti ''domain'' umum atawa sumberdaya bébas séjénna. '''ULAH NGASUPKEUN KARYA NU MIBANDA HAK CIPTA TANPA IDIN!'''",
        "copyrightwarning2": "Catet yén sadaya kontribusi ka {{SITENAME}} bisa diédit, dirobah, atawa dihapus ku kontributor séjén. Mun anjeun teu miharep tulisan anjeun dirobah, ulah ngintunkeun ka dieu.<br />\nAnjeun ogé mastikeun yén ieu téh pituin tulisan anjeun, atawa salinan ti domain umum atawa sumberdaya bébas séjénna (tempo $1 pikeun écésna).\n'''ULAH NGINTUNKEUN KARYA NU MIBANDA HAK CIPTA TANPA WIDI!'''",
+       "editpage-cannot-use-custom-model": "Modél kontén ieu kaca teu bisa dirobah.",
        "longpageerror": "<strong>Éror: téks anu dikirimkeun panjangna {{PLURAL:$1|hiji kilobit|$1 kilobit}}, leuwih ti maksimum {{PLURAL:$2|hiji kilobit|$2 kilobit}}.</strong>\nTeu bisa disimpen.",
        "readonlywarning": "<strong>Awas: pangkalan data dikonci pikeun diropéa, anjeun moal bisa nyimpen éditan anjeun ayeuna.</strong>\nMun perlu, simpen heula téksna kana berkas téks pikeun diasupkeun deui séjén mangsa.\n\nKuncén anu ngonci pangkalan data méré katerangan: $1",
        "protectedpagewarning": "'''AWAS: ieu kaca dikonci sarta ngan bisa dirobah ku pamaké nu statusna kuncén.'''\nÉntri log panungtungan ditémbongkeun di handap:",
        "edit-conflict": "Éditan bantrok",
        "edit-no-change": "Éditan anjeun teu diwaro, kusabab taya nu robah dina tulisanana.",
        "postedit-confirmation-created": "Kaca geus dijieun.",
+       "postedit-confirmation-restored": "Kaca geus dibalikkeun deui.",
        "postedit-confirmation-saved": "Éditan anjeun tos disimpen.",
        "edit-already-exists": "Teu bisa nyieun kaca anyar.\nArtikelna geus aya.",
        "defaultmessagetext": "Téks ti dituna",
        "invalid-content-data": "Data eusi henteu valid",
        "content-not-allowed-here": "Eusi \"$1\" teu diijinan di kaca [[$2]]",
        "editwarning-warning": "Ninggalkeun ieu kaca bakal ngaleungitkeun parobahan anu tas dijieun.\nUpama anjeun geus asup log, anjeun bisa numpurkeun ieu talatah dina bagian \"{{int:prefs-editing}}\" préferénsi anjeun.",
+       "editpage-invalidcontentmodel-title": "Modél kontén teu dirojong",
        "editpage-notsupportedcontentformat-title": "Format eusi teu dirojong",
        "editpage-notsupportedcontentformat-text": "Format eusi $1 teu dirojong ku modél eusi $2.",
        "content-model-wikitext": "wikitéks",
        "expansion-depth-exceeded-category": "Kaca-kaca anu jero ékspansina leuwih ti wates",
        "expansion-depth-exceeded-category-desc": "Kacana ngaleuwihan wates jero ékspansina.",
        "expansion-depth-exceeded-warning": "Kaca ngaleuwihan jero ékspansi",
+       "parser-unstrip-loop-warning": "Luncatan buni kanyahoan",
+       "parser-unstrip-recursion-limit": "Wates rékursi buni kaleuwihi ($1)",
+       "converter-manual-rule-error": "Kasalahan kanyahoan dina aturan tarjamahan basa manual",
        "undo-success": "Éditan ieu bisa dibolaykeun. Mangga pariksa babandingan di handap pikeun mastikeun mémang anjeun miharep éta parobahan. Mun geus yakin, mangga simpen parobahanana pikeun ngabolaykeun éditan.",
        "undo-failure": "Éditan teu bisa dibolaykeun alatan kaselang ku éditan séjén.",
        "undo-norev": "Éditan ieu henteu bisa bolaykeun alatan kaca henteu kapanggih atawa geus dihapus.",
+       "undo-nochange": "Éditan nu patingpucunghul geus teu bisa dibolaykeun",
        "undo-summary": "←Ngabolaykeun révisi $1 ku [[Special:Contributions/$2|$2]] ([[User talk:$2|Obrolan]])",
        "undo-summary-username-hidden": "Bolaykeun révisi $1 ku pamaké nyumput",
        "cantcreateaccount-text": "Nyieun akun ti ieu alamat IP ('''$1''') dipeungpeuk ku [[User:$3|$3]].\n\nAlesana $3 cenah ''$2''.",
        "page_first": "mimiti",
        "page_last": "tung-tung",
        "histlegend": "Pilihan béda: tandaan wadah buleud vérsina pikeun ngabandingkeun sarta pencét énter atawa tombol di handap.<br />\nKaterangan: (kiw) = bédana jeung vérsi kiwari,\n(ahir) = bédana jeung vérsi nu harita, m = éditan minor.",
-       "history-fieldset-title": "Sungsi jujutan",
-       "history-show-deleted": "Ukur nu dihapus",
+       "history-fieldset-title": "Paluruh vérsi heubeul",
+       "history-show-deleted": "Ukur ngahapus révisi",
        "histfirst": "pangheubeulna",
        "histlast": "panganyarna",
        "historysize": "($1 {{PLURAL:$1|bit|bit}})",
        "history-feed-title": "Sajarah révisi",
        "history-feed-description": "Sajarah révisi kaca ieu di wiki",
        "history-feed-item-nocomment": "$1 dina $2",
-       "history-feed-empty": "Kaca nu dipundut teu kapanggih.\nBisa jadi geus dihapus ti wiki atawa diganti ngaranna.\nCobaan [[Special:Search|sungsi di wiki]] pikeun kaca-kaca nu sarimbag.",
+       "history-feed-empty": "Kaca nu dipundut teu kapanggih.\nMeureun geus dihapus ti wiki atawa diganti ngaranna.\nCoba [[Special:Search|paluruh di wiki]] pikeun kaca-kaca anyar nu luyu.",
        "history-edit-tags": "Édit tag révisi anu dipilih",
        "rev-deleted-comment": "(rangkuman éditan dihapus)",
        "rev-deleted-user": "(ngaran pamaké geus dihapus)",
        "revdelete-legend": "Setél réstriksi révisi:",
        "revdelete-hide-text": "Téks révisi",
        "revdelete-hide-image": "Sumputkeun eusi gambar",
-       "revdelete-hide-name": "Sumputkeun lampah sarta udagan",
-       "revdelete-hide-comment": "Sumputkeun koméntar ngédit",
-       "revdelete-hide-user": "Sumputkeun ngaran pamaké/IP éditor",
+       "revdelete-hide-name": "Sumputkeun udagan sarta paraméter",
+       "revdelete-hide-comment": "Tingkesan ngédit",
+       "revdelete-hide-user": "Sandiasma/alamat IP éditor",
        "revdelete-hide-restricted": "Sumputkeun data boh ti kuncén atawa nu séjénna",
        "revdelete-radio-same": "(ulah dirobah)",
        "revdelete-radio-set": "Nyumput",
        "revdelete-unsuppress": "Hapus watesan kana révisi anu geus dipulangkeun",
        "revdelete-log": "Alesan:",
        "revdelete-submit": "Larapkeun kana {{PLURAL:$1|révisi|révisi}} nu dipilih",
-       "revdelete-success": "Visibilitas révisi geus dimutahirkeun.",
+       "revdelete-success": "Visibilitas révisi dianyarkeun.",
        "revdelete-failure": "'''Visibilitas révisi teu bisa diapdét:'''\n$1",
-       "logdelete-success": "Log pangatur nyumputkeun junun dilarapkeun.",
+       "logdelete-success": "Visibilitas log dilarapkeun.",
        "logdelete-failure": "'''Visibilitas log teu bisa disét:'''\n$1",
        "revdel-restore": "robah panémbong",
        "pagehist": "Sajarah kaca",
        "revdelete-hide-current": "Éror nyumputkeun anu titimangsana $2, $1: ieu téh révisi kiwari.\nTeu bisa disumputkeun.",
        "revdelete-show-no-access": "Éror némbongkeun anu titimangsana $2, $1: geus ditandaan \"diwates\".\nAnjeun teu diwenangkeun asup.",
        "revdelete-modify-no-access": "Éror ngarobah anu titimangsana $2, $1: geus ditandaan \"diwates\".\nAnjeun teu diwenangkeun asup.",
-       "revdelete-modify-missing": "Éror ngarobah anu IDna $2, $1: leungit ti pangkalan data!",
+       "revdelete-modify-missing": "Kasalahan ngaropéa ID $1: Horéng leungit ti pangkalan data!",
+       "revdelete-no-change": "<strong>Mangkahadé:</strong>Item tanggal $2, $1 geus mibanda  pangaturan visibilitas nu dipundut.",
        "revdelete-reason-dropdown": "*Alesan ngahapus umumna\n** Ngarumpak hakcipta\n** Émbaran pribadi anu teu perlu\n** Émbaranana bisa jadi pitnah",
        "revdelete-otherreason": "Alesan lianna:",
        "revdelete-reasonotherlist": "Alesan séjén",
        "mergehistory-empty": "Euweuh révisi nu bisa digabungkeun.",
        "mergehistory-done": "$3 {{PLURAL:$3|révisi|révisi}} tina $1 parantos digabung ka [[:$2]].",
        "mergehistory-fail": "Jujutan teu bisa digabungkeun! Mangga pariiksa deui paraméter kaca jeung titimangsana.",
+       "mergehistory-fail-bad-timestamp": "Stémpel waktu teu sah.",
+       "mergehistory-fail-invalid-source": "Kaca sumber teu sah.",
+       "mergehistory-fail-invalid-dest": "Kaca tujuan teu sah.",
        "mergehistory-no-source": "Sumber kaca $1 teu aya.",
        "mergehistory-no-destination": "Kaca nu dituju ($1) teu aya.",
        "mergehistory-invalid-source": "Kaca sumber kudu sohéh judulna.",
        "search-interwiki-caption": "Proyék sawargi",
        "search-interwiki-default": "Hasil ti $1:",
        "search-interwiki-more": "(saterusna)",
+       "search-interwiki-more-results": "hasil lianna",
        "search-relatedarticle": "Patula-patali",
        "searchrelated": "patula-patali",
        "searchall": "sadayana",
        "prefs-watchlist": "Awaskeuneun",
        "prefs-editwatchlist": "Ropéa awaskeuneun",
        "prefs-editwatchlist-label": "Ropéa éntri anu aya dina awaskeuneun:",
+       "prefs-editwatchlist-clear": "Bersihan aawaseun anjeun",
        "prefs-watchlist-days": "Jumlah poé anu ditémbongkeun dina daptar awaskeuneun:",
        "prefs-watchlist-days-max": "Panglilana $1 {{PLURAL:$1|poé|poé}}",
        "prefs-watchlist-edits": "Jumlah parobahan maksimum nu ditémbongkeun dina daptar panjang awaskeuneun:",
        "prefs-watchlist-edits-max": "Panglobana: 1000",
+       "prefs-watchlist-token": "Token awaskeuneun:",
        "prefs-misc": "Pangaturan rupa-rupa",
        "prefs-resetpass": "Ganti sandi",
-       "prefs-changeemail": "Ganti alamat surélék",
+       "prefs-changeemail": "Ganti atawa pupus alamat surélék",
        "prefs-setemail": "Asupkeun alamat surélék",
        "prefs-email": "Pilihan surélék",
        "prefs-rendering": "Pidangan",
        "youremail": "Surélék:",
        "username": "{{GENDER:$1|Sandiasma}}:",
        "prefs-memberingroups": "{{GENDER:$2|Anggota}} {{PLURAL:$1|kelompok|kelompok}}:",
+       "group-membership-link-with-expiry": "$1 (nepi ka $2)",
        "prefs-registration": "Waktu daptar:",
        "yourrealname": "Ngaran anjeun*",
        "yourlanguage": "Basa antarbeungeut",
        "userrights": "Manajemén hak pamaké",
        "userrights-lookup-user": "Atur gorombolan pamaké",
        "userrights-user-editname": "Asupkeun sandiasma:",
-       "editusergroup": "Édit Golongan Pamaké",
+       "editusergroup": "Muat gorombolan pamaké",
        "editinguser": "Ngarobah hak kontributor '''[[User:$1|$1]]''' $2",
        "userrights-editusergroup": "Édit gorombolan pamaké",
        "saveusergroups": "Simpen Grup Pamaké",
        "userrights-nodatabase": "Pangkalan data $1 euweuh atawa henteu lokal.",
        "userrights-changeable-col": "Jumplukan anu bisa Anjeun robah",
        "userrights-unchangeable-col": "Jumplukan anu teu bisa Anjeun robah",
+       "userrights-expiry-current": "Kadaluwarsa $1",
+       "userrights-expiry-none": "Teu kadaluwarsa",
+       "userrights-expiry": "Kadaluwarsa:",
+       "userrights-expiry-othertime": "Séjén waktu:",
        "group": "Gorombolan:",
        "group-user": "Pamaké",
        "group-autoconfirmed": "Pamaké anu otomatis dikonfirmasi",
        "group-bot": "Bot",
        "group-sysop": "Kuncén",
        "group-bureaucrat": "Birokrat",
-       "group-suppress": "Oversights",
+       "group-suppress": "Paneueul",
        "group-all": "(sadayana)",
        "group-user-member": "{{GENDER:$1|kontributor}}",
        "group-autoconfirmed-member": "{{GENDER:$1|kontributor anu otomatis dikonfirmasi}}",
        "group-bot-member": "{{GENDER:$1|bot}}",
        "group-sysop-member": "{{GENDER:$1|kuncén}}",
        "group-bureaucrat-member": "{{GENDER:$1|birokrat}}",
-       "group-suppress-member": "{{GENDER:$1|pangawas}}",
+       "group-suppress-member": "{{GENDER:$1|paneueul}}",
        "grouppage-user": "{{ns:project}}:Pamaké",
        "grouppage-autoconfirmed": "{{ns:project}}:Pamaké anu otomatis dikonfirmasi",
        "grouppage-bot": "{{ns:project}}:Bot",
        "grouppage-sysop": "{{ns:project}}:Kuncén",
        "grouppage-bureaucrat": "{{ns:project}}:Birokrat",
-       "grouppage-suppress": "{{ns:project}}:Oversight",
+       "grouppage-suppress": "{{ns:project}}:Paneueul",
        "right-read": "Maca kaca",
        "right-edit": "Ngédit kaca",
        "right-createpage": "Nyieun kaca anyar (nu lain kaca obrolan)",
        "right-userrights-interwiki": "Ngédit hak kontributor di wiki lianna",
        "right-siteadmin": "Ngonci jeung muka konci databés",
        "right-sendemail": "Kirim surélék ka pamaké séjén",
+       "grant-generic": "\"$1\" buntel hak aksés",
+       "grant-group-page-interaction": "Interaksi jeung kaca",
+       "grant-group-file-interaction": "Interaksi jeung média",
+       "grant-group-watchlist-interaction": "Interaksi jeung aawaseun anjeun",
        "grant-group-email": "Kirim surélék",
+       "grant-group-private-information": "Aksés data pribadi ngeunaan anjeun",
+       "grant-group-other": "Lalampahan macem-macem",
+       "grant-blockusers": "Peungpeuk sarta teu meungpeuk pamaké",
+       "grant-createaccount": "Jieun akun",
+       "grant-createeditmovepage": "Jieun, édit, jeung alihkeun kaca",
+       "grant-delete": "Pupus kaca, révisi, jeung éntri log",
+       "grant-editmycssjs": "Édit CSS/JavaScript pamaké anjeun",
+       "grant-editmyoptions": "Édit préférénsi pamaké anjeun",
+       "grant-editmywatchlist": "Édit awaskeuneun anjeun",
+       "grant-editpage": "Édit kaca nu nyangkaruk",
+       "grant-editprotected": "Édit kaca nu dikonci",
+       "grant-highvolume": "Éditan nu rohaka",
+       "grant-oversight": "Sumputkeun pamaké jeung révisi neken",
+       "grant-patrol": "Aawas parobahan kaca",
+       "grant-privateinfo": "Info aksés pribadi",
+       "grant-protect": "Konci sarta buka konci kaca",
+       "grant-rollback": "Balikkeun parobahan kaca",
+       "grant-sendemail": "Kirim surélék ka pamaké séjén",
+       "grant-uploadeditmovefile": "Unjal, ganti, jeung alihkeun berkas",
        "grant-uploadfile": "Unjal berkas anyar",
        "grant-basic": "Aksés dasar",
+       "grant-viewdeleted": "Tempo berkas jeung kaca nu dihapus",
+       "grant-viewmywatchlist": "Tempo aawaseun anjeun",
        "newuserlogpage": "Log akun anyar",
        "newuserlogpagetext": "Di handap ieu béréndélan log pamaké anyar.",
        "rightslog": "Log hak pamaké",
        "action-upload_by_url": "ngamuat ieu berkas ti URL",
        "action-writeapi": "maké API",
        "action-delete": "ngahapus ieu kaca",
-       "action-deleterevision": "ngahapus ieu révisi",
+       "action-deleterevision": "mupus révisi",
+       "action-deletelogentry": "pupus éntri log",
        "action-deletedhistory": "nempo jujutan anu geus dihapus ti ieu kaca",
        "action-browsearchive": "milari kaca nu geus dihapus",
        "action-undelete": "ngabolaykeun hapusan ieu kaca",
        "action-editmywatchlist": "robah awaskeuneun anjeun",
        "action-viewmyprivateinfo": "tempo émbaran pribadi anjeun",
        "action-editmyprivateinfo": "robah émbaran pribadi anjeun",
+       "action-purge": "hapus sindangan ieu kaca",
        "nchanges": "$1 {{PLURAL:$1|parobahan|parobahan}}",
        "enhancedrc-history": "jujutan",
        "recentchanges": "Anyar robah",
        "rcfilters-search-placeholder": "Sarinh parobahan panganyarna (langlang atawa mimitian ngetik)",
        "rcfilters-invalid-filter": "Panyaringan teu sah",
        "rcfilters-filterlist-title": "Saringan",
+       "rcfilters-filterlist-whatsthis": "Naon ieu téh?",
+       "rcfilters-highlightbutton-title": "Hasil sorotan",
+       "rcfilters-highlightmenu-title": "Pilih warna",
+       "rcfilters-highlightmenu-help": "Pilih warna pikeun nyorot ieu properti",
+       "rcfilters-filterlist-noresults": "Taya saringan nu kapanggih",
        "rcfilters-filtergroup-registration": "Padaptaran pamaké",
        "rcfilters-filter-registered-label": "Kadaptar",
        "rcfilters-filter-registered-description": "Éditor asup log",
        "rcfilters-filter-unregistered-label": "Teu kadaptar",
        "rcfilters-filter-unregistered-description": "Éditor nu teu asup log.",
-       "rcfilters-filter-editsbyself-label": "Éditan anjeun",
-       "rcfilters-filter-editsbyself-description": "Éditan ku anjeun.",
+       "rcfilters-filter-editsbyself-label": "Éditan meunang anjeun",
+       "rcfilters-filter-editsbyself-description": "Kontribusi anjeun.",
        "rcfilters-filter-editsbyother-label": "Éditan ku batur",
-       "rcfilters-filter-editsbyother-description": "Éditan dijieun ku pamaké sején (lain anjeun).",
+       "rcfilters-filter-editsbyother-description": "Sakumna éditan iwal nu kuring.",
        "rcfilters-filtergroup-userExpLevel": "Undakan mahér (pikeun pamaké kadaptar hungkul)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Padatang anyar",
        "rcfilters-filter-user-experience-level-learner-label": "Palajar",
        "rcfilters-filter-user-experience-level-experienced-label": "Pamaké pangpangalaman",
        "rcfilters-filter-user-experience-level-experienced-description": "Leuwih ti 30 poé tina aktivitas jeung 500 éditan.",
+       "rcfilters-filtergroup-automated": "Kontribusi otomatis",
        "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Éditan dipigawé ku parabot otomatis.",
        "rcfilters-filter-humans-label": "Jalma (lain bot)",
+       "rcfilters-filter-humans-description": "Éditan dipigawé ku éditor jalma.",
+       "rcfilters-filtergroup-reviewstatus": "Status ulasan",
        "rcfilters-filter-patrolled-label": "Diaawas",
+       "rcfilters-filter-patrolled-description": "Éditan ditandaan geus diaawas.",
        "rcfilters-filter-unpatrolled-label": "Teu kaawaskeun",
        "rcfilters-filter-unpatrolled-description": "Éditan teu ditandaan geus diawaskeun.",
        "rcfilters-filtergroup-significance": "Kapentingan",
        "rcfilters-filter-minor-label": "Éditan minor",
+       "rcfilters-filter-major-label": "Lain éditan minor",
+       "rcfilters-filter-major-description": "Éditan teu ditandaan minangka minor.",
+       "rcfilters-filtergroup-changetype": "Jinis parobahan",
        "rcfilters-filter-pageedits-label": "Éditan kaca",
        "rcfilters-filter-newpages-label": "Panyieunan kaca",
+       "rcfilters-filter-newpages-description": "Éditan nu nyieun kaca anyar.",
+       "rcfilters-filter-categorization-label": "Parobahan kategori",
+       "rcfilters-filter-logactions-label": "Tarékah kacatet",
        "rcnotefrom": "Di handap ieu parobahan saprak <b>$2</b> (nu ditémbongkeun nepi ka <b>$1</b>).",
+       "rclistfromreset": "Rését pilihan kaping",
        "rclistfrom": "Témbongkeun nu anyar robah nepi ka $3 $2",
        "rcshowhideminor": "$1 éditan minor",
        "rcshowhideminor-show": "Témbongkeun",
        "rcshowhidemine": "$1 éditan kuring",
        "rcshowhidemine-show": "Témbongkeun",
        "rcshowhidemine-hide": "Sumputkeun",
+       "rcshowhidecategorization": "$1 kategorisasi kaca",
+       "rcshowhidecategorization-show": "Témbongkeun",
+       "rcshowhidecategorization-hide": "Sumputkeun",
        "rclinks": "Témbongkeun $1 parobahan panungtung ti $2 poé ka tukang",
        "diff": "béda",
        "hist": "juj",
        "newpageletter": "A",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|ngawaskeun|ngawaskeun}}]",
-       "rc_categories": "Watesan nepi ka kategori (dipisah ku \"|\")",
-       "rc_categories_any": "Naon bae",
+       "rc_categories": "Watesan nepi ka kategori (dipisah ku \"|\"):",
+       "rc_categories_any": "Unggal nu kapilih",
        "rc-change-size-new": "$1 {{PLURAL:$1|bit|bit}} sanggeus robah",
        "newsectionsummary": "/* $1 */ bagean anyar",
-       "rc-enhanced-expand": "Témbongkeun rincian (butuh JavaScript)",
+       "rc-enhanced-expand": "Témbongkeun rincian",
        "rc-enhanced-hide": "Sumputkeun rincian",
        "rc-old-title": "Mimitina dijieun salaku \"$1\"",
        "recentchangeslinked": "Parobahan nu patali",
        "recentchangeslinked-summary": "Ieu kaca husus ngabéréndélkeun parobahan anyar anu numbu ti kaca husus (atawa uesi katagori husus). Kaca anu [[Special:Watchlist|diawaskeun]] némbongan '''kandel'''.",
        "recentchangeslinked-page": "Ngaran kaca:",
        "recentchangeslinked-to": "Témbongkeun parobahan ka kaca-kaca nu ditumbukeun ka kaca nu dimaksud",
+       "recentchanges-page-added-to-category": "[[:$1]] ditambahkeun kana kategori",
+       "recentchanges-page-removed-from-category": "[[:$1]] dipupus tina kategori",
+       "autochange-username": "Parobahan otomatis MédiaWiki",
        "upload": "Unjal berkas",
        "uploadbtn": "Unjal berkas",
        "reuploaddesc": "Balik ka formulir muatan.",
+       "upload-tryagain": "Kirim paropéaan pedaran berkas",
        "uploadnologin": "Can asup log",
        "uploadnologintext": "Mangga $1 pikeun ngunggah berkas.",
        "upload_directory_read_only": "Diréktori muatan ($1) teu bisa ditulis ku server ramat.",
        "filetype-banned": "Jenis berkas ieu dipahing.",
        "verification-error": "Ieu berkas teu lulus vérifikasi.",
        "illegal-filename": "Ngaran berkas dipahing.",
+       "unknown-error": "Aya kasalahan anu teu dikanyahoankeun.",
        "tmp-create-error": "Teu bisa nyieun berkas sementara.",
        "tmp-write-error": "Éror nulis berkas sementara.",
        "large-file": "Hadéna mah koropak nu dimuat téh teu leuwih ti $1 bit; ieu koropak gedéna $2 bit.",
        "largefileserver": "Ieu koropak badag teuing, ngaleuwihan wates nu diwenangkeun ku server.",
        "emptyfile": "Koropak nu dimuatkeun ku anjeun jigana kosong. Hal ieu bisa jadi alatan sarupaning ''typo'' na ngaran koropakna. Mangga parios deui yén anjeun leres-leres hoyong ngamuat koropak éta.",
        "windows-nonascii-filename": "Ieu wiki teu ngarojong ngaran berkas anu maké aksara husus.",
-       "fileexists": "Koropak nu ngaranna kieu geus aya, mangga parios <strong>[[:$1]]</strong> mun anjeun teu yakin rék ngaganti.\n[[$1|thumb]]",
+       "fileexists": "Berkas nu ngaranna kieu geus aya, mangga parios <strong>[[:$1]]</strong> mun {{GENDER:|anjeun}} teu yakin rék ngaganti.\n[[$1|thumb]]",
        "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]]",
        "copyuploaddisabled": "Unggahan dumasar URL ditumpurkeun.",
        "uploaddisabledtext": "Fungsi ngamuat koropak ditumpurkeun.",
        "uploadscripted": "Koropak ieu ngandung kode HTML atawa skrip nu bisa dibaca ngaco ku panyungsi ramat (''web browser'').",
+       "uploadinvalidxml": "XML na berkas nu diunjal teu bisa didadarkeun.",
        "uploadvirus": "Koropakna ngandung virus! Katrangan: $1",
        "upload-source": "Koropak sumber",
        "sourcefilename": "Ngaran koropak sumber:",
        "upload-misc-error": "Kasalahan muat anu teu kanyahoan",
        "upload-http-error": "Aya galat HTTP: $1",
        "upload-dialog-title": "Unjal berkas",
+       "upload-dialog-button-cancel": "Bolay",
+       "upload-dialog-button-back": "Balik deui",
+       "upload-dialog-button-done": "Anggeus",
+       "upload-dialog-button-save": "Simpen",
+       "upload-dialog-button-upload": "Unjal",
+       "upload-form-label-infoform-title": "Wincikan",
+       "upload-form-label-infoform-name": "Ngaran",
+       "upload-form-label-infoform-description": "Pedaran",
+       "upload-form-label-usage-title": "Pamakéan",
+       "upload-form-label-usage-filename": "Ngaran berkas",
+       "upload-form-label-own-work": "Ieu mah karya kuring sorangan",
+       "upload-form-label-infoform-categories": "Kategori",
+       "upload-form-label-infoform-date": "Ping",
+       "backend-fail-stream": "Teu bisa malidkeun berkas \"$1\"",
        "backend-fail-backup": "Teu bisa nyadangkeun berkas \"$1\".",
        "backend-fail-notexists": "Berkas $1 euweuh.",
        "backend-fail-notsame": "Berkas anu teu-identik geus aya di $1.",
        "lockmanager-fail-db-release": "Teu bisa ngaleupaskeun konci dina databés $1.",
        "lockmanager-fail-svr-release": "Teu bisa ngaleupaskeun konci dina server $1.",
        "zip-wrong-format": "Berkas anu dipilih lain berkas ZIP.",
+       "uploadstash": "Unjal engkeunan",
+       "uploadstash-clear": "Bersihan berkas engkeunan",
+       "uploadstash-nofiles": "Anjeun teu boga berkas engkeunan.",
+       "uploadstash-errclear": "Mersihan berkas nu garagal.",
+       "uploadstash-refresh": "Nyegerken deui daptar berkas",
+       "uploadstash-thumbnail": "tempo miniatur",
        "img-auth-accessdenied": "Aksés ditolak",
        "img-auth-nofile": "Berkas \"$1\" henteu aya.",
+       "img-auth-streaming": "Palidan \"$1\".",
        "img-auth-noread": "Pamaké teu boga kawenangan maca \"$1\".",
        "http-invalid-url": "URL teu bener: $1",
        "http-invalid-scheme": "URL anu skémana \"$1\" teu karojong",
+       "http-read-error": "Kasalahan maca HTTP.",
+       "http-timed-out": "Pamundutan HTTP béakeun waktu.",
+       "http-curl-error": "Kasalahan keur nyokot URL: $1",
        "upload-curl-error6": "URL teu kahontal",
        "upload-curl-error28": "Seep waktos kanggo muatkeun",
        "license": "Lisénsi:",
        "upload_source_file": " (koropak dina komputer salira)",
        "listfiles-delete": "hapus",
        "listfiles-summary": "Ieu kaca husus némbongkeun sakabéh berkas anu geus diunggah.",
-       "listfiles_search_for": "Sungsi ngaran média:",
+       "listfiles_search_for": "Paluruh ngaran média:",
+       "listfiles-userdoesnotexist": "Akun pamaké \"$1\" teu kadaptar.",
        "imgfile": "Berkas",
        "listfiles": "Daptar gambar",
+       "listfiles_thumb": "Miniatur",
        "listfiles_date": "Titimangsa",
        "listfiles_name": "Ngaran",
        "listfiles_user": "Pamaké",
        "listfiles-latestversion-yes": "Enya",
        "listfiles-latestversion-no": "Henteu",
        "file-anchor-link": "Gambar",
-       "filehist": "Sajarah gambar",
+       "filehist": "Jujutan berkas",
        "filehist-help": "Klik dina titimangsa pikeun nempo koropak nu aya dina mangsa éta.",
        "filehist-deleteall": "hapus kabéh",
        "filehist-deleteone": "hapus",
        "filehist-datetime": "Titimangsa",
        "filehist-thumb": "Miniatur",
        "filehist-thumbtext": "'Thumbnail' pikeun vérsi mangsa $1",
+       "filehist-nothumb": "Taya miniatur",
        "filehist-user": "Kontributor",
        "filehist-dimensions": "Ukuran",
        "filehist-filesize": "Ukuran koropak",
        "nolinkstoimage": "Teu aya kaca anu nutumbu ka ieu berkas.",
        "sharedupload": "Ieu koropak téh ti $1 nu bisa jadi dipaké ku proyék-proyék lianna.",
        "sharedupload-desc-here": "Ieu berkas asalna ti $1 anu bisa jadi dipaké ku proyék séjén. \nPedaran ti [$2 kaca pedaranana] dipidangkeun di handap.",
+       "filepage-nofile": "Taya berkas nu ngaranna kieu.",
        "uploadnewversion-linktext": "ngamuatkeun vérsi anyar koropak ieu",
        "shared-repo-from": "ti $1",
        "upload-disallowed-here": "Anjeun teu bisa nimpah ieu berkas.",
        "filedelete-reason-dropdown": "*Alesan nu ilahar\n** Ngarumpak hak cipta\n** Koropak geus aya",
        "filedelete-edit-reasonlist": "Alesan ngahapus éditan",
        "filedelete-maintenance-title": "Henteu bisa ngahapus berkas",
-       "mimesearch": "Sungsi MIME",
+       "mimesearch": "Pamaluruhan MIME",
        "mimesearch-summary": "Ieu kaca bisa dipaké nyaring koropak dumasar tipeu MIME-na. Asupan: contenttype/subtype, contona <code>image/jpeg</code>.",
        "mimetype": "Tipeu MIME:",
        "download": "pulut",
        "unwatchedpages": "Kaca nu teu diawaskeun",
        "listredirects": "Daptar alihan",
+       "listduplicatedfiles": "Daptar berkas duplikat.",
        "unusedtemplates": "Citakan nu teu kapaké",
        "unusedtemplatestext": "Ieu kaca ngabéréndélkeun sakabéh kaca dina rohang ngaran {{ns:template}} anu teu diwengku ku kaca séjén.\nSaméméh ngahapus, pariksa heula bisi aya tumbu ka ieu citakan.",
        "unusedtemplateswlh": "tutumbu lianna",
        "randompage": "Kaca acak",
        "randompage-nopages": "Euweuh kaca dina ieu spasi ngaran \"$1\".",
        "randomincategory-category": "Kategori:",
+       "randomincategory-legend": "Kaca acak dina kategori",
+       "randomincategory-submit": "Jung",
        "randomredirect": "Alihan acak",
        "randomredirect-nopages": "Euweuh alihan dina ieu spasi ngaran \"$1\".",
        "statistics": "Statistik",
        "statistics-users": "[[Special:ListUsers|Kontributor]] kadaptar",
        "statistics-users-active": "Pamaké getol",
        "statistics-users-active-desc": "Kontributor nu ngoprék salila {{PLURAL:$1|poé|$1 poé}} panungtung",
+       "pageswithprop": "Kaca ku kaca properti",
+       "pageswithprop-prop": "Ngarab properti:",
        "pageswithprop-submit": "Jung",
        "doubleredirects": "Alihan ganda",
        "doubleredirectstext": "Ieu kaca ngabéréndélkeun kaca-kaca alihan ka kaca alihan lianna. Unggal baris ngandung tutumbu ka alihan kahiji jeung kadua, ogé tujul alihan kadua anu biasana tujul kaca anu \"bener\", anu sakuduna dituju ku alihan kahiji. Ëntri nu <del>dicorét</del> geus diropéa.",
        "unusedimages": "Berkas nu teu kaparaké",
        "wantedcategories": "Kategori nu dipikabutuh",
        "wantedpages": "Kaca nu dipikabutuh",
+       "wantedpages-badtitle": "Judul teu sah dina kumpulan hasil: $1",
        "wantedfiles": "Berkas nu dipikabutuh",
        "wantedtemplates": "Citakan nu dipikabutuh",
        "mostlinked": "Nu panglobana numbu ka kaca séjén",
        "mostimages": "Berkas anu panglobana ditumbukeun",
        "mostrevisions": "Artikel nu pangmindengna dirévisi",
        "prefixindex": "Kabeh kaca maké awalan",
+       "prefixindex-submit": "Témbongkeun",
        "shortpages": "Kaca-kaca parondok",
        "longpages": "Kaca-kaca paranjang",
        "deadendpages": "Kaca buntu",
        "deadendpagestext": "Kaca-kaca di handap ieu teu numbu ka kaca séjén di {{SITENAME}}:",
        "protectedpages": "Kaca-kaca nu dikonci",
        "protectedpages-indef": "Ngan pikeun panangtayungan kalawan waktu nuteu kawates",
+       "protectedpages-noredirect": "Sumputkeun pangalihan",
        "protectedpagesempty": "Dina danget ieu, teu aya kaca nu dikonci dumasar kana ieu paraméter.",
        "protectedpages-timestamp": "Cap titimangsa",
        "protectedpages-page": "Kaca",
        "protectedpages-expiry": "Kadaluwarsa",
+       "protectedpages-performer": "Nangtayungan pamaké",
        "protectedpages-params": "Paraméter protéksi",
        "protectedpages-reason": "Alesan",
+       "protectedpages-submit": "Kaca pidangan",
        "protectedpages-unknown-timestamp": "Teu kanyahoan",
        "protectedpages-unknown-performer": "Pamaké henteu dipikawanoh",
        "protectedtitles": "Judul nu dikonci",
        "protectedtitlesempty": "Dina danget ieu, euweuh judul nu keur dikonci tina paraméter-paraméter éta.",
+       "protectedtitles-submit": "Judul pidangan",
        "listusers": "Daptar pamaké",
        "listusers-editsonly": "Témbongkeun ukur kontributor anu ngédit",
        "listusers-creationsort": "Éntépkeun dumasar titimangsa dijieun",
+       "listusers-desc": "Runtuykeun mudun",
        "usereditcount": "$1 {{PLURAL:$1|édit|édit}}",
        "usercreated": "{{GENDER:$3|Dijieun}} ping $1 tabuh $2",
        "newpages": "Kaca anyar",
+       "newpages-submit": "Témbongkeun",
        "newpages-username": "Sandiasma:",
        "ancientpages": "Kaca pangheubeulna",
        "move": "Pindahkeun",
        "nopagetext": "Kaca anu Anjeun maksud henteu kapanggih.",
        "pager-newer-n": "{{PLURAL:$1|leuwih anyar 1|leuwih anyar $1}}",
        "pager-older-n": "{{PLURAL:$1|leuwih heubeul 1|leuwih heubeul $1}}",
-       "suppress": "Oversight",
+       "suppress": "Neueul",
        "querypage-disabled": "Ieu kaca husus ditumpurkeun ku alesan kinerja.",
+       "apihelp": "Pitulung API",
+       "apihelp-no-such-module": "Modul \"$1\" teu kapanggih.",
+       "apisandbox": "Kotrétan API",
+       "apisandbox-fullscreen": "Mekarkeun panél",
+       "apisandbox-unfullscreen": "Témbongkeun kaca",
+       "apisandbox-submit": "Jieun pundutan",
+       "apisandbox-reset": "Bersihan",
+       "apisandbox-retry": "Cobaan deui",
+       "apisandbox-loading": "Muatkeun info pikeun modul API \"$1\"...",
+       "apisandbox-helpurls": "Tutumbu pitulung",
+       "apisandbox-examples": "Conto",
+       "apisandbox-dynamic-parameters-add-label": "Tambah paraméter:",
+       "apisandbox-dynamic-parameters-add-placeholder": "Ngaran paraméter",
+       "apisandbox-deprecated-parameters": "Paraméter basi",
+       "apisandbox-fetch-token": "Eusi token kalayan otomatis",
+       "apisandbox-submit-invalid-fields-title": "Sawatara kolom teu sah",
+       "apisandbox-results": "Hasil",
+       "apisandbox-sending-request": "Ngirim pundutan API...",
+       "apisandbox-loading-results": "Nampa hasil API...",
+       "apisandbox-request-selectformat-label": "Témbongkeun pundutan data minangka:",
+       "apisandbox-request-url-label": "URL pundutan:",
+       "apisandbox-request-json-label": "Pundut JSON:",
+       "apisandbox-continue": "Tuluykeun",
+       "apisandbox-continue-clear": "Bersihan",
+       "apisandbox-multivalue-all-values": "$1 (Kabéh ajén)",
        "booksources": "Sumber pustaka",
-       "booksources-search-legend": "Sungsi sumber buku",
+       "booksources-search-legend": "Paluruh sumber buku",
        "booksources-search": "Paluruh",
        "booksources-text": "Di handap ieu ngabéréndélkeun tutumbu ka loka-loka nu ngical buku, boh nu anyar atawa loakan, nu sugan uninga kana buku anu nuju dipilari:",
        "booksources-invalid-isbn": "Sigana ISBN-na teu bener; pariksa deui bisi aya salah téplak ti sumber aslina.",
-       "specialloguserlabel": "Pamaké:",
-       "speciallogtitlelabel": "Sasaran (judul atawa pamaké):",
+       "specialloguserlabel": "Palaku:",
+       "speciallogtitlelabel": "Sasaran (judul atawa {{ns:user}}:sandiasma pikeun pamaké):",
        "log": "Log",
+       "logeventslist-submit": "Témbongkeun",
        "all-logs-page": "Sakabéh log umum",
        "alllogstext": "Béréndélan sakabéh log nu aya di {{SITENAME}}.\nBisa dipondokkeun ku cara milih tipe log, ngaran pamaké, atawa kaca nu dimaksud.",
        "logempty": "Taya item nu cocog dina log.",
        "log-title-wildcard": "Téangan judul nu dimimitian ku tulisan ieu",
+       "checkbox-select": "Pilih: $1",
+       "checkbox-all": "Sakumna",
+       "checkbox-none": "Kosong",
+       "checkbox-invert": "Balikkeun",
        "allpages": "Sadaya kaca",
        "nextpage": "Kaca salajengna ($1)",
        "prevpage": "Kaca saméméhna ($1)",
        "allpagesprefix": "Pintonkeun kaca dimimitian ku:",
        "allpagesbadtitle": "Judul kaca nu dibikeun teu bener atawa mibanda awalan antarbasa atawa antarwiki, nu ngandung karakter nu teu bisa dipaké dina judul.",
        "allpages-bad-ns": "{{SITENAME}} teu boga spasi ngaran \"$1\".",
+       "allpages-hide-redirects": "Sumputkeun pangalihan",
+       "cachedspecial-refresh-now": "Tempo nu panganyarna.",
        "categories": "Kategori",
+       "categories-submit": "Témbongkeun",
        "categoriespagetext": "{{PLURAL:$1|Kategori|Kategori}} ngandung kaca atawa média.\n[[Special:UnusedCategories|Kategori nu teu kapaké]] henteu ditémbongkeun di dieu.\nBaca ogé [[Special:WantedCategories|kategori nu dipikabutuh]].",
        "categoriesfrom": "Tembongkeun kategori-kategori dimimitian ku:",
        "deletedcontributions": "Kontribusi nu dihapus",
        "deletedcontributions-title": "Kontribusi nu dihapus",
        "sp-deletedcontributions-contribs": "kontribusi",
-       "linksearch": "Tumbu kaluar",
-       "linksearch-pat": "Pola sungsi:",
+       "linksearch": "Pamaluruhan tutumbu luar",
+       "linksearch-pat": "Pola pamaluruhan:",
        "linksearch-ns": "Spasi ngaran:",
-       "linksearch-ok": "Sungsi",
+       "linksearch-ok": "Paluruh",
        "linksearch-text": "''Wildcard'' sarupaning \"*.wikipedia.org\" bisa dipaké.<br />Protokol nu dirojong: $1",
        "linksearch-line": "$1 ditumbu ti $2",
        "linksearch-error": "''Wildcard'' ngan bisa némbongan dina awal ngaran indung (''host'').",
        "listgrouprights-removegroup-self": "Piceun {{PLURAL:$2|grup|grups}} ti akun sorangan: $1",
        "listgrouprights-addgroup-self-all": "Tambahkeun sakabéh grup ka akun sorangan",
        "listgrouprights-removegroup-self-all": "Piceun sakabéh grup ti akun sorangan",
+       "listgrants": "Idin",
+       "listgrants-grant": "Idin",
+       "listgrants-rights": "Hak",
+       "trackingcategories": "Kategori palacak",
+       "trackingcategories-msg": "Kategori palacak",
+       "trackingcategories-name": "Ngaran talatah",
+       "trackingcategories-desc": "Kritéria inklusi kategori",
+       "trackingcategories-nodesc": "Taya pedaran nu sayaga",
+       "trackingcategories-disabled": "Kategori dipareuman",
        "mailnologin": "Euweuh alamat ngirim",
        "mailnologintext": "Anjeun kudu '''[[Special:UserLogin|asup log]]''' sarta boga alamat surélék nu sah na [[Special:Preferences|préferénsi]] anjeun sangkan bisa nyurélékan pamaké séjén.",
        "emailuser": "Surélékan pamaké ieu",
+       "emailuser-title-target": "Kirim surélék ka ieu {{GENDER:$1|pamaké}}",
+       "emailuser-title-notarget": "Surélék pamaké",
        "emailpagetext": "Anjeun bisa maké formulir di handap pikeun ngirim surélék ka ieu pamaké.\nAlamat surélék nu diasupkeun kana [[Special:Preferences|préferénsi pamaké anjeun]] bakal katémbong salaku alamat \"Ti\" dina surélékna, sahingga nu dituju bisa males langsung.",
        "defemailsubject": "Surélék {{SITENAME}} ti pamaké \"$1\"",
        "usermaildisabled": "Surélék kontributor ditumpurkeun",
        "emailsenttext": "Surélék anjeun geus dikirim.",
        "emailuserfooter": "Ieu surélék dikirim ku $1 ka $2 migunakeun fungsi \"Surélékan pamaké ieu\" di {{SITENAME}}.",
        "usermessage-summary": "Ninggalkeun talatah sistem.",
+       "usermessage-editor": "Talatah sistim",
        "watchlist": "Awaskeuneun",
        "mywatchlist": "Awaskeuneun",
        "watchlistfor2": "Pikeun $1 $2",
        "nowatchlist": "Anjeun teu boga awaskeuneun.",
        "watchlistanontext": "Mangga asup log pikeun nempo atawa ngarobah béréndélan awaskeuneun anjeun.",
        "watchnologin": "Can asup log",
+       "addwatch": "Tambahkeun ka aawaseun",
        "addedwatchtext": "Kaca \"[[:$1]]\" geus ditambahkeun ka [[Special:Watchlist|awaskeuneun]] anjeun.\nJaga, parobahan na kaca ieu katut kaca obrolanana bakal dibéréndélkeun di dinya, sarta kacana bakal katémbong '''dikandelan''' dina kaca [[Special:RecentChanges|Nu anyar robah]] sangkan leuwih gampang ngawaskeunana.\n\n<p>Mun jaga anjeun moal deui ngawaskeun parobahan na kaca éta, klik tumbu \"Eureun ngawaskeun\" na lajursisi.",
        "removewatch": "Piceun tina béréndélan awaskeuneun",
        "removedwatchtext": "Kaca \"[[:$1]]\" geus dikaluarkeun tina [[Special:Watchlist|daptar awaskeuneun]] anjeun.",
        "wlheader-showupdated": "Kaca nu robah ti panungtungan anjeun sindang ditémbongkeun kalawan '''kandel'''",
        "wlnote": "Di handap ieu mangrupa $1 {{PLURAL:$1|robahan|robahan}} ahir salila '''$2''' jam.",
        "wlshowlast": "Témbongkeun $1 jam $2 poé  ahir",
+       "watchlist-hide": "Sumputkeun",
+       "watchlist-submit": "Témbongkeun",
+       "wlshowtime": "Periodeu waktu ajang dipidangkeun:",
+       "wlshowhideminor": "éditan minor",
+       "wlshowhidebots": "bot",
+       "wlshowhideliu": "pamaké kadaptar",
+       "wlshowhideanons": "pamaké anonim",
+       "wlshowhidepatr": "éditan karoris",
+       "wlshowhidemine": "éditan kuring",
        "wlshowhidecategorization": "kategorisasi kaca",
        "watchlist-options": "Pilihan awaskeuneun",
        "watching": "Ngawaskeun...",
        "enotif_reset": "Tandaan sadaya kaca nu geus dilongok",
        "enotif_impersonal_salutation": "Pamaké {{SITENAME}}",
        "enotif_subject_deleted": "Kaca {{SITENAME}} $1 geus {{GENDER:$2|dihapus}} ku $2",
-       "enotif_lastvisited": "Tempo $1 pikeun sadaya parobahan ti saprak anjeun ninggalkeun ieu kaca.",
-       "enotif_lastdiff": "Buka $1 pikeun nempo ieu parobahan.",
+       "enotif_lastvisited": "Pikeun sakumna parobahan ti saprak jebulan panungtung, tempo $1",
+       "enotif_lastdiff": "Pikeun nempo parobahan, ilikan $1",
        "enotif_anon_editor": "pamaké anonim $1",
        "enotif_body": "Sadérék $WATCHINGUSERNAME,\n\nKaca $PAGETITLE na {{SITENAME}} geus $CHANGEDORCREATED tanggal $PAGEEDITDATE ku $PAGEEDITOR. Mangga tingal {{SERVER}}{{localurl:$PAGETITLE}} pikeun vérsi kiwari.\n\n$NEWPAGE\n\nRingkesan éditor: $PAGESUMMARY $PAGEMINOREDIT\n\nKontak éditor:\nsurat {{SERVER}}{{localurl:Husus:Emailuser|target=$PAGEEDITOR}}\nwiki {{SERVER}}{{localurl:Pamaké:$PAGEEDITOR}}\n\nMun anjeun teu sindang deui ka ieu kaca, parobahan salajengna moal diémbarkeun. Anjeun bisa ogé nyetél deui umbul-umbul pikeun sadaya kaca nu aya na daptar awaseun anjeun.\n\n             Sistim émbaran {{SITENAME}} pikeun anjeun\n\n--\nPikeun ngarobah setélan dabtar awaseun anjeun, sindang ka {{SERVER}}{{localurl:Husus:Watchlist|edit=yes}}\n\nAsupan jeung bantuan salajengna:\n$HELPPAGE",
        "created": "geus dijieun",
        "delete-confirm": "Hapus \"$1\"",
        "delete-legend": "Hapus",
        "historywarning": "'''Awas:''' kaca nu rék dihapus mibanda jujutan kira $1  {{PLURAL:$1|révisi|révisi}}:",
+       "historyaction-submit": "Témbongkeun",
        "confirmdeletetext": "Anjeun rék ngahapus hiji kaca atawa gambar katut jujutanana tina pangkalan data, mangga yakinkeun yén anjeun mémang niat midamel ieu, yén anjeun ngartos kana sagala konsékuénsina, sarta yén anjeun ngalakukeun ieu saluyu jeung [[{{MediaWiki:Policy-url}}|kawijakan {{SITENAME}}]].",
        "actioncomplete": "Tarékah geus hasil",
        "actionfailed": "Tarékah gagal",
        "rollbacklink": "balikkeun",
        "rollbacklinkcount": "balikkeun $1 {{PLURAL:$1|éditan}}",
        "rollbackfailed": "Gagal malikkeun",
+       "rollback-missingrevision": "Teu bisa muatkeun révisi data.",
        "cantrollback": "Éditan teu bisa dibalikkeun; kontribusi panungtung ngarupakeun hiji-hijina panulis kaca ieu.",
        "alreadyrolled": "Teu bisa mulangkeun édit ahir [[$1]] ku [[User:$2|$2]] ([[User talk:$2|Obrolan]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); geus aya nu ngédit atawa mulangkeun kacana.\n\nÉdit ahir ku [[User:$3|$3]] ([[User talk:$3|Obrolan]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Komentar ngéditna: <em>$1</em>.",
        "revertpage": "Malikkeun éditan $2, diganti deui ka vérsi ahir ku $1",
        "rollback-success": "Mulangkeun éditan $1; balik deui ka vérsi panungtung ku $2.",
+       "sessionfailure-title": "Kagagalan sési",
        "sessionfailure": "Sigana aya masalah jeung termin log anjeun; peta ieu geus dibolaykeun salaku pépéling pikeun ngalawan ayana pangbajak. Mangga pencét \"back\" jeung muat ulang ti kaca asal anjeun, lajeng cobaan deui.",
+       "changecontentmodel-legend": "Robah modél kontén",
+       "changecontentmodel-title-label": "Judul kaca",
+       "changecontentmodel-model-label": "Modél kontén anyar",
+       "changecontentmodel-reason-label": "Alesan:",
+       "changecontentmodel-submit": "Parobahan",
+       "changecontentmodel-success-title": "Modél ieu kontén geus dirobah",
+       "changecontentmodel-emptymodels-title": "Taya modél kontén nu sayaga",
+       "log-name-contentmodel": "Log parobahan modél kontén",
+       "logentry-contentmodel-change-revertlink": "balikkeun",
+       "logentry-contentmodel-change-revert": "balikkeun",
        "protectlogpage": "Log_koncian",
        "protectlogtext": "Di handap ieu mangrupa daptar koncian kaca. Tempo [[Special:ProtectedPages|kaca nu dikonci]] pikeun iber leuwih lengkep.",
        "protectedarticle": "ngonci $1",
        "modifiedarticleprotection": "hambalan koncian \"[[$1]]\" geus dirobah",
-       "unprotectedarticle": "muka konci $1",
+       "unprotectedarticle": "muka konci tina \"[[$1]]\"",
+       "protectedarticle-comment": "{{GENDER:$2|Nangtayungan}} \"[[$1]]\"",
        "protect-title": "Ngonci \"$1\"",
        "prot_1movedto2": "mindahkeun [[$1]] ka [[$2]]",
+       "protect-norestrictiontypes-title": "Kaca nu teu karaksa",
        "protect-legend": "Konfirmasi ngonci",
        "protectcomment": "Alesan:",
        "protectexpiry": "Kadaluwarsa",
        "protect-locked-access": "Akun anjeun teu wenang ngarobah hambalan pangonci kaca.\nSetélan kiwari pikeun kaca <strong>$1</strong>:",
        "protect-cascadeon": "Ieu kaca dikonci sabab kaasup {{PLURAL:$1|kaca nu|kaca-kaca nu}} ngajalankeun pangonci ngaruntuy. Anjeun bisa ngarobah hambalan koncian ieu kaca, tapi ieu moal mangaruhan pangonci ngaruntuyna.",
        "protect-default": "Bisa ku sakabeh pamaké",
-       "protect-fallback": "Kudu aya kawenangan \"$1\"",
+       "protect-fallback": "Ngan pikeun pamaké kalawan idin \"$1\"",
        "protect-level-autoconfirmed": "Peungpeuk pamaké anyar jeung nu teu daptar",
        "protect-level-sysop": "Ngan bisa ku kuncén",
        "protect-summary-cascade": "ngaruntuykeun",
        "undeletepagetitle": "'''Béréndélan révisi [[:$1]]''' anu dihapus.",
        "viewdeletedpage": "Témbongkeun kaca nu dihapus",
        "undeletepagetext": "{{PLURAL:$1|Kaca di handap ieu|Aya $1 kaca}}  geus dihapus tapi masih kénéh aya na arsip sarta bisa disimpen deui. Arsip aya kalana dibersihan.",
-       "undeleterevisions": "$1 {{PLURAL:$1|révisi|révisi}} diarsipkeun",
+       "undelete-fieldset-title": "Malikkeun révisi",
+       "undeleterevisions": "$1 {{PLURAL:$1|révisi}} dipupus",
        "undeletehistory": "Mun anjeun nyimpen deui kacana, sadaya révisi bakal disimpen deui dina jujutan.\nMun aya kaca anyar nu ngaranna sarua dijieun deui satutasna dihapus, révisi nu disimpen tadi bakal némbongan salaku jujutan nu ti heula, sarta révisi kiwari kaca nu hirup moal otomatis kaganti.",
        "undeletehistorynoadmin": "Artikel ieu geus dihapus.\nAlesanana bisa dibaca dina katrangan di handap, katut saha waé nu geus ngédit ieu artikel saméméh dihapus.\nTéks aktual révisi nu geus dihapus ieu ngan bisa dibuka ku kuncén.",
        "undelete-revision": "Révisi nu dihapus ti $1 (dina $5, $4) ku $3:",
        "undeletebtn": "Simpen deui!",
        "undeletelink": "tempo/pulangkeun",
        "undeleteviewlink": "tempo",
+       "undeleteinvert": "Balikkeun pilihan",
        "undeletecomment": "Alesan:",
        "cannotundelete": "Gagal ngabolaykeun hapusan; sigana kapiheulaan ngabolaykeun hapusan ku nu séjén.",
        "undeletedpage": "'''$1 hasil dibalikeun'''\n\nTempo [[Special:Log/delete|log hapusan]] keur data ngahapus jeung malikeun.",
        "undelete-header": "Tempo [[Special:Log/delete|log hapusan]] pikeun béréndélan kaca nu anyar dihapus.",
+       "undelete-search-title": "Paluruh kaca kahapus",
        "undelete-search-box": "Téang kaca nu dihapus",
        "undelete-search-prefix": "Témbongkeun kaca dimimitian ku",
        "undelete-search-submit": "Téang",
        "undelete-bad-store-key": "Hanteu bisa ngabolaykeun hapusan révisi berkas titimangsa $1: Berkas leungit méméh dihapus.",
        "undelete-cleanup-error": "Éror ngahapus berkas arsip \"$1\" anu teu kapaké.",
        "undelete-missing-filearchive": "Hanteu bisa mulangkeun arsip berkas ID $1 kusabab teu kapanggih dina pangkalan data. Bisa jadi éta koropak bolay dihapus.",
+       "undelete-error": "Kasalahan malikkeun kaca",
        "undelete-error-short": "Éror ngabolaykeun hapusan: $1",
        "undelete-error-long": "Aya éror nalika ngabolaykeun hapusan:\n\n$1",
        "undelete-show-file-submit": "Enya",
        "sp-contributions-search": "Paluruh kontribusi",
        "sp-contributions-username": "Alamat IP atawa sandiasma:",
        "sp-contributions-toponly": "Témbongkeun éditan anu révisi panungtung wungkul",
+       "sp-contributions-hideminor": "Sumputkeun éditan minor",
        "sp-contributions-submit": "Paluruh",
        "whatlinkshere": "Anu nutumbu ka dieu",
        "whatlinkshere-title": "Kaca anu nutumbu ka \"$1\"",
        "whatlinkshere-hidelinks": "$1 tutumbu",
        "whatlinkshere-hideimages": "$1 tutumbu berkas",
        "whatlinkshere-filters": "Saringan",
+       "whatlinkshere-submit": "Jung",
+       "autoblockid": "Otomatis peungpeuk #$1",
        "block": "Peungpeuk kontributor",
        "unblock": "Buka peungpeuk kontributor",
-       "blockip": "Peungpeuk pamaké",
+       "blockip": "Peungpeuk {{GENDER:$1|pamaké}}",
        "blockip-legend": "Peungpeuk pamaké",
        "blockiptext": "Paké formulir di handap pikeun meungpeuk aksés nulis ti alamat IP atawa ngaran pamaké husus. Ieu sakuduna ditujukeun pikeun nyegah vandalisme, sarta saluyu jeung [[{{MediaWiki:Policy-url}}|kawijakan]]. Eusi alesan nu jéntré (misal, ngarujuk kaca tinangtu nu geus diruksak).",
        "ipaddressorusername": "Alamat IP atawa sandiasma:",
        "ipboptions": "2 jam:2 hours,sapoé:1 day,3 poé:3 days,saminggu:1 week,2 minggu:2 weeks,sabulan:1 month,3 bulan:3 months,6 bulan:6 months,sataun:1 year,tanpa wates:infinite",
        "ipbhidename": "Sumputkeun ngaran pamaké tina éditan jeung daptar pamaké",
        "ipbwatchuser": "Awaskeun kaca pamaké jeung kaca obrolan pamaké ieu",
+       "ipb-confirm": "Konfirmasi peungpeuk",
        "badipaddress": "Alamat IP teu sah",
        "blockipsuccesssub": "Meungpeuk geus hasil",
        "blockipsuccesstext": "\"$1\" dipeungpeuk.\n<br />Tempo [[Special:BlockList|daptar peungpeuk IP]] pikeun nempoan deui peungpeuk.",
        "ipb-unblock": "Nyabut peungpeuk pamaké atawa alamat IP",
        "ipb-blocklist": "Tempo peungpeuk nu diteurapkeun",
        "ipb-blocklist-contribs": "Ilubiung $1",
+       "ipb-blocklist-duration-left": "Nyésa $1",
        "unblockip": "Buka peungpeuk pamaké",
        "unblockiptext": "Paké formulir di handap pikeun mulangkeun aksés nulis ka alamat IP atawa ngaran pamaké nu saméméhna dipeungpeuk.",
        "ipusubmit": "Buka peungpeuk pikeun pamaké ieu",
        "unblocked-range": "$1 geus teu dipeungpeuk",
        "unblocked-id": "peungpeuk $1 geus dicabut",
        "blocklist": "Kontributor nu dipeungpeuk",
+       "autoblocklist": "Otomatis peungpeuk",
+       "autoblocklist-submit": "Paluruh",
+       "autoblocklist-legend": "Daptar otomatis peungpeuk",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Otomatis peungpeuk}} lokal",
        "ipblocklist": "Pamaké nu dipeungpeuk",
        "ipblocklist-legend": "Téang pamaké nu dipeungpeuk",
+       "blocklist-userblocks": "Sumputkeun peungpeukan akun",
+       "blocklist-tempblocks": "Sumputkeun peungpeukan saheulaanan",
        "blocklist-timestamp": "Cap titimangsa",
+       "blocklist-target": "Udagan",
+       "blocklist-expiry": "Kadaluwarsa",
        "blocklist-by": "Kuncén nu meungpeuk",
+       "blocklist-params": "Paraméter peungpeukan",
        "blocklist-reason": "Alesan",
        "ipblocklist-submit": "Téang",
        "ipblocklist-localblock": "Blok lokal",
+       "ipblocklist-otherblocks": "{{PLURAL:$1|Peungpeukan}} lian",
        "infiniteblock": "tanpa wates",
        "expiringblock": "kadaluwarsa $1 jam $2",
        "anononlyblock": "ngan nu teu daptar",
        "unlockdbsuccesssub": "Konci pangkalan data geus dibuka",
        "lockdbsuccesstext": "pangkalan data dikonci.\n<br />Ulah poho muka konci mun geus bérés diropéa.",
        "unlockdbsuccesstext": "pangkalan data geus teu dikonci.",
+       "databaselocked": "Basis data geus kakonci.",
        "databasenotlocked": "Gudang data teu kakonci.",
        "move-page": "Pindahkeun $1",
        "move-page-legend": "Pindahkeun kaca",
        "movenologintext": "Anjeun kudu jadi pamaké nu kadaptar tur [[Special:UserLogin|asup log]] pikeun mindahkeun kaca.",
        "movenotallowed": "Anjeung teu boga kawenangan mindahkeun kaca.",
        "movenotallowedfile": "Anjeung teu boga kawenangan mindahkeun kaca.",
-       "newtitle": "Ka judul anyar",
+       "newtitle": "Judul anyar:",
        "move-watch": "Awaskeuneun kaca ieu",
        "movepagebtn": "Pindahkeun kaca",
        "pagemovedsub": "Mindahkeun geus hasil!",
        "movepage-moved": "'''\"$1\" geus dipindahkeun ka \"$2\"'''",
+       "movepage-moved-redirect": "Alihan geus dijieunkeun.",
        "articleexists": "Kaca nu ngaranna kitu geus aya, atawa ngaran nu dipilih ku anjeun teu sah. Mangga pilih ngaran séjén.",
        "cantmove-titleprotected": "Anjeun teu bisa mindahkeun kaca ka dieu, sabab éta judul dikonci",
        "movetalk": "Mun bisa, kaca \"obrolan\" ogé pindahkeun.",
        "imagetypemismatch": "Éksténsi berkas anyar teu cocog jeung tipena",
        "imageinvalidfilename": "Ngaran berkas tujuan teu sah",
        "fix-double-redirects": "Hadéan sakabéh alihan ganda nu mungkin kajadian",
+       "move-leave-redirect": "Tinggalkeun alihan di tukang",
        "protectedpagemovewarning": "'''Awas:''' ieu kaca geus dikonci sarta ngan bisa dipindahkeun ku pamaké nu boga kawenangan kuncén.\nPikeun rujukan, éntri log panungtung dipidangkeun di handap:",
        "semiprotectedpagemovewarning": "'''Awas:''' ieu kaca geus dikonci sarta ukur bisa dipindahkeun ku pamaké nu geus asup log.\nPikeun rujukan, éntri log panungtung dipidangkeun di handap:",
        "export": "Ékspor kaca",
        "exporttext": "Anjeun bisa ngékspor téks sarta jujutan éditan ti kaca tinangtu atawa ti sababaraha kaca nu ngagunduk na sababaraha XML; ieu salajengna tiasa diimpor ka wiki séjén nu ngajalankeun software MediaWiki, ditransformasikeun, atawa ukur disimpen pikeun kaperluan anjeun pribadi.",
+       "exportall": "Ékspor sakumna kaca",
        "exportcuronly": "Asupkeun ukur révisi kiwari, teu sakabéh jujutan",
        "exportnohistory": "----\n'''Catetan:''' Ngékspor sakabéh jujutan éditan kaca ngaliwatan form ieu geus henteu diaktifkeun alatan alesan performance.",
        "export-submit": "Ékspor",
        "export-addns": "Tambahkeun",
        "export-download": "Simpen salaku berkas",
        "export-templates": "Kaasup citakan",
+       "export-manual": "Tambahkeun kaca manual:",
        "allmessages": "Talatah sistim",
        "allmessagesname": "Ngaran",
        "allmessagesdefault": "Téks ti dituna",
        "allmessagestext": "Ieu mangrupa daptar talatah sistim nu aya na spasi ngaran MediaWiki:.",
        "allmessagesnotsupportedDB": "Kaca ieu teu dirojong sabab '''$wgUseDatabaseMessages''' pareum.",
        "allmessages-filter-legend": "Ayakan",
+       "allmessages-filter-unmodified": "Teu diropéa",
        "allmessages-filter-all": "Kabéh",
+       "allmessages-filter-modified": "Diropéa",
        "allmessages-prefix": "Saring dumasar awalan:",
        "allmessages-language": "Basa:",
        "allmessages-filter-submit": "Jung",
+       "allmessages-filter-translate": "Tarjamahkeun",
        "thumbnail-more": "Gedéan",
        "filemissing": "Berkas leungit",
        "thumbnail_error": "Kasalahan sawaktu nyieun gambar leutik (thumbnail): $1",
        "xml-error-string": "$1 dina baris $2, kolom $3 (bit $4): $5",
        "import-upload": "Ngamuat data XML",
        "import-invalid-interwiki": "Teu bisa ngimpor ti wiki nu dipilih.",
+       "import-rootpage-invalid": "Kaca turunan nu dibikeun judulna salah.",
        "importlogpage": "Log impor",
        "importlogpagetext": "Impor administratif kaca-kaca ti wiki séjén katut jujutanana.",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|vérsi heubeul}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|vérsi heubel}} ti $2",
        "javascripttest": "Nguji JavaScript",
+       "javascripttest-pagetext-unknownaction": "Tarékah \"$1\" teu dipikanyaho.",
        "tooltip-pt-userpage": "Kaca {{GENDER:|pamaké anjeun}}",
        "tooltip-pt-anonuserpage": "Kaca pamaké pikeun IP nu ku anjeun keur diédit",
        "tooltip-pt-mytalk": "Kaca obrolan {{GENDER:|anjeun}}",
        "tooltip-pt-watchlist": "Daptar kaca nu diawaskeun ku anjeun parobahanana.",
        "tooltip-pt-mycontris": "Béréndélan kontribusi {{GENDER:|anjeun}}",
        "tooltip-pt-login": "Leuwih hadé asup log, sok sanajan teu wajib",
+       "tooltip-pt-login-private": "Anjeun perlu asup log pikeun migunakeun ieu wiki",
        "tooltip-pt-logout": "Kaluar log",
        "tooltip-pt-createaccount": "Najan henteu kudu, Anjeun leuwih hadé nyieun akun sarta asup log",
        "tooltip-ca-talk": "Sawala ngeunaan eusi kaca",
        "tooltip-ca-viewsource": "Kaca ieu dikonci, tapi anjeun masih bisa muka sumberna.",
        "tooltip-ca-history": "Vérsi heubeul ieu kaca",
        "tooltip-ca-protect": "Konci kaca ieu",
+       "tooltip-ca-unprotect": "Robah protéksi ieu kaca",
        "tooltip-ca-delete": "Hapus kaca ieu",
        "tooltip-ca-undelete": "Simpen deui éditan kaca ieu nu geus dijieun saméméh dihapus",
        "tooltip-ca-move": "Pindahkeun kaca ieu",
        "tooltip-feed-rss": "Asupan RSS pikeun kaca ieu",
        "tooltip-feed-atom": "Asupan atom pikeun kaca ieu",
        "tooltip-t-contributions": "Béréndélan kontribusi ti {{GENDER:$1|ieu pamaké}}",
-       "tooltip-t-emailuser": "Kirim surélék ka ieu kontributor",
+       "tooltip-t-emailuser": "Kirim surélék ka {{GENDER:$1|ieu kontributor}}",
        "tooltip-t-upload": "Unjal berkas",
        "tooltip-t-specialpages": "Daptar sadaya kaca husus",
        "tooltip-t-print": "Vérsi citakeun ieu kaca",
        "tooltip-ca-nstab-category": "Témbongkeun kaca kategori",
        "tooltip-minoredit": "Tandaan ieu salaku éditan minor",
        "tooltip-save": "Simpen parobahan anjeun",
+       "tooltip-publish": "Pedalkeun parobahan anjeun",
        "tooltip-preview": "Tempo parobahanana, lamun geus bener pék simpen!",
        "tooltip-diff": "Témbongkeun parobahan mana nu geus dijieun.",
        "tooltip-compareselectedversions": "Tempo béda antara dua vérsi kaca ieu nu dipilih.",
        "tooltip-watch": "Tambahkeun kaca ieu kana awaskeuneun kuring",
+       "tooltip-watchlistedit-normal-submit": "Pupus judul",
+       "tooltip-watchlistedit-raw-submit": "Anyarkeun aawaseun",
        "tooltip-upload": "Prung unjalkeun",
        "tooltip-rollback": "Mulangkeun éditan ka panulis panungtung dina sakali klik",
        "tooltip-undo": "\"Bolay\" malikkeun ieu éditan sarta muka kotak édit dina modeu pramidang.\nCara kieu bisa nambahkeun alesan dina ringkesanana.",
        "common.js": "/* JavaScript nu aya didieu di angé ku kabeh ''skin'' */",
        "anonymous": "{{PLURAL:$1|Pamaké|Pamaké-pamaké}} anonim di {{SITENAME}}",
        "siteuser": "Pamaké $1 {{SITENAME}}",
-       "lastmodifiedatby": "Kaca ieu panungtungan dirobah $2, $1 ku $3.",
+       "anonuser": "Pamaké anonim {{SITENAME}} $1",
+       "lastmodifiedatby": "Kaca ieu panungtungan diédit $2, $1 ku $3.",
        "othercontribs": "Dumasar karya $1.",
        "others": "Séjénna",
        "siteusers": "{{PLURAL:$2|Pamaké|Pamaké-pamaké}} {{SITENAME}} $1",
        "pageinfo-header-basic": "Émbaran dasar",
        "pageinfo-header-edits": "Jujutan édit",
        "pageinfo-header-restrictions": "Protéksi kaca",
-       "pageinfo-watchers": "Jumlah nu ngawaskeun",
+       "pageinfo-header-properties": "Properti kaca",
+       "pageinfo-display-title": "Judul pidangan",
+       "pageinfo-article-id": "ID kaca",
+       "pageinfo-language": "Basa eusi kaca",
+       "pageinfo-language-change": "robah",
+       "pageinfo-content-model": "Modél kontén kaca",
+       "pageinfo-content-model-change": "robah",
+       "pageinfo-robot-policy": "Pangindékan ku robot",
+       "pageinfo-robot-index": "Digaékeun",
+       "pageinfo-robot-noindex": "Dicaram",
+       "pageinfo-watchers": "Jumlah paroris kaca",
+       "pageinfo-firstuser": "Panyieun kaca",
+       "pageinfo-lastuser": "Pangédit panungtung",
        "pageinfo-edits": "Jumlah éditan",
        "pageinfo-authors": "Jumlah kontributor nu béda",
        "pageinfo-toolboxlink": "Émbaran kaca",
+       "pageinfo-redirectsto": "Alihkeun ka",
+       "pageinfo-redirectsto-info": "info",
        "pageinfo-contentpage-yes": "Enya",
        "pageinfo-protect-cascading-yes": "Enya",
+       "pageinfo-category-info": "Info kategori",
+       "pageinfo-category-total": "Jumlah anggahota",
+       "pageinfo-category-pages": "Jumlah kaca",
+       "pageinfo-category-subcats": "Jumlah subkategori",
+       "pageinfo-category-files": "Jumlah berkas",
+       "pageinfo-user-id": "ID pamaké",
        "markaspatrolleddiff": "Tandaan salaku geus diriksa",
        "markaspatrolledtext": "Tandaan artikel ieu salaku geus diriksa",
        "markedaspatrolled": "Tandaan salaku geus diriksa",
        "patrol-log-page": "Log patroli",
        "patrol-log-header": "Ieu minangka log pikeun révisi nu geus diroris.",
        "log-show-hide-patrol": "$1 log rorisan",
+       "log-show-hide-tag": "log tag $1",
+       "confirm-markpatrolled-button": "Heug",
        "deletedrevision": "Révisi heubeul nu dihapus $1",
        "filedeleteerror-short": "Éror nalika ngahapus koropak $1",
        "filedeleteerror-long": "Aya kasalahan sawaktu ngahapus koropak:\n\n$1",
        "previousdiff": "← Éditan saméméhna",
        "nextdiff": "Éditan salajengna →",
        "imagemaxsize": "Watesan gambar na kaca dadaran gambar nepi ka:",
+       "thumbsize": "Ukuran miniatur:",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|kaca|kaca}}",
        "file-info": "ukuran koropak: $1, tipeu MIME: $2",
        "file-info-size": "$1 × $2 piksel, ukuran koropak: $3, tipeu MIME: $4",
        "file-info-size-pages": "$1 × $2 pixel, ukuran berkas: $3, tipeu MIME: $4, $5 {{PLURAL:$5|kaca|kaca}}",
        "file-nohires": "Euweuh résolusi nu leuwih luhur.",
        "svg-long-desc": "Koropak SVG, nominalna $1 × $2 piksel, ukuranana $3",
+       "svg-long-desc-animated": "Berkas SVG animasi, biasana $1 x $2 piksel, ukuran gambar: $3",
+       "svg-long-error": "Berkas SVG teu sah: $1",
        "show-big-image": "Berkas asli",
        "show-big-image-preview": "Ukuran ieu pramidang: $1.",
        "show-big-image-other": "{{PLURAL:$2|Resolusi}} lianna: $1.",
        "show-big-image-size": "$1 × $2 pixel",
+       "file-info-gif-looped": "nguriling",
+       "file-info-gif-frames": "$1 {{PLURAL:$1|bingkéy}}",
+       "file-info-png-looped": "kuriling",
+       "file-info-png-repeat": "dipaénkeun $1 {{PLURAL:$1|kali}}",
+       "file-info-png-frames": "$1 {{PLURAL:$1|bingkéy}}",
        "newimages": "Galeri gambar anyar",
        "imagelisttext": "Di handap ieu daptar '''$1''' {{PLURAL:$1|gambar|gambar}} nu disusun $2.",
        "newimages-summary": "Ieu kaca husus ngabéréndélkeun koropak nu alanyar dimuat.",
+       "newimages-legend": "Saringan",
        "newimages-label": "Ngaran berkas (atawa sawaréh tina ngaranna):",
+       "newimages-user": "Alamat IP atawa sandiasma",
        "noimages": "Taya nanaon.",
-       "ilsubmit": "Sungsi",
+       "gallery-slideshow-toggle": "''Toggle'' miniatur",
+       "ilsubmit": "Paluruh",
        "bydate": "dumasar titimangsa",
        "sp-newimages-showfrom": "Témbongkeun gambar anyar ti $2, $1",
+       "seconds": "{{PLURAL:$1|sadetik|$1 detik}}",
+       "minutes": "{{PLURAL:$1|$1 menit}}",
+       "hours": "{{PLURAL:$1|$1 jam}}",
+       "days": "{{PLURAL:$1|$1 poé}}",
+       "weeks": "{{PLURAL:$1|$1 minggu}}",
+       "months": "{{PLURAL:$1|$1 bulan}}",
+       "years": "{{PLURAL:$1|$1 taun}}",
+       "ago": "$1 ka tukang",
+       "just-now": "cik kénéh",
+       "hours-ago": "$1 {{PLURAL:$1|jam}} ka tukang",
+       "minutes-ago": "$1 {{PLURAL:$1|menit}} ka tukang",
+       "seconds-ago": "$1 {{PLURAL:$1|detik}} ka tukang",
+       "monday-at": "Senén jam $1",
+       "tuesday-at": "Salasa jam $1",
+       "wednesday-at": "Rebo jam $1",
+       "thursday-at": "Kemis jam $1",
+       "friday-at": "Jumaah jam $1",
+       "saturday-at": "Saptu jam $1",
        "sunday-at": "Minggu jam $1",
+       "yesterday-at": "Kamari jam $1",
        "bad_image_list": "Formatna kieu:\n\nNgan daptar butiran (baris anu dimimitian ku tanda *) anu diitung. \nTutumbu kahiji dina hiji baris dianggap numbu ka berkas anu goréng. \nTutumbu sanggeusna dina baris anu sarua dianggap bener, nyaéta artikel anu midangkeun éta berkas.",
        "metadata": "Métadata",
        "metadata-help": "Ieu koropak ngandung émbaran tambahan, nu sigana asalna tina kaméra digital atawa paminday nu dipaké pikeun ngadigitalkeunana. Mun ieu koropak geus dirobah tina bentuk aslina, datana bisa jadi teu bener.",
        "metadata-fields": "Widang métadata gambar nu dibéréndélkeun di handap bakal dipidangkeun dina kaca gambar mun tabél métadata disumputkeun.\nNu séjénna bakal disumputkeun sakumaha asalna.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "Lega",
        "exif-imagelength": "Luhur",
+       "exif-bitspersample": "Bit per komponén",
        "exif-compression": "Skéma komprési",
        "exif-photometricinterpretation": "Komposisi piksel",
        "exif-orientation": "Oriéntasi",
        "exif-fnumber": "Nomer F",
        "exif-exposureprogram": "Program pajanan",
        "exif-spectralsensitivity": "Sénsitivitas spéktral",
-       "exif-brightnessvalue": "Lenglang",
+       "exif-isospeedratings": "Réting gagancangan ISO",
+       "exif-shutterspeedvalue": "Gagancangan rana APEX",
+       "exif-aperturevalue": "Bukaan APEX",
+       "exif-brightnessvalue": "Cacaangan APEX",
        "exif-exposurebiasvalue": "Bias pajanan",
+       "exif-maxaperturevalue": "Bukaan taneuh maksimum",
        "exif-subjectdistance": "Jarak subjék",
+       "exif-meteringmode": "Modeu pangukuran",
        "exif-lightsource": "Sumber cahya",
+       "exif-flash": "Buricak",
        "exif-focallength": "Panjang fokus lénsa",
+       "exif-subjectarea": "Aréa subyék",
+       "exif-flashenergy": "Énérgi burinyay",
        "exif-focalplanexresolution": "Résolusi X datar fokus",
        "exif-focalplaneyresolution": "Résolusi Y datar fokus",
        "exif-focalplaneresolutionunit": "Unit résolusi datar fokus",
        "exif-subjectlocation": "Perenah subjék",
+       "exif-exposureindex": "Indéks pajanan",
+       "exif-sensingmethod": "Metodeu panginderaan",
        "exif-filesource": "Sumber berkas",
        "exif-scenetype": "Tipe adegan",
+       "exif-customrendered": "Prosés jijieunan gambar",
        "exif-exposuremode": "Modeu pajanan",
+       "exif-whitebalance": "Kasaimbangan bodas",
        "exif-digitalzoomratio": "Rasio zum digital",
        "exif-focallengthin35mmfilm": "Panjang fokus dina film 35 mm",
        "exif-contrast": "Kontras",
        "exif-datetimeexpires": "Ulah dipaké sanggeus",
        "exif-datetimereleased": "Dirilis ping",
        "exif-originaltransmissionref": "Kodeu lokasi transmisi asli",
+       "exif-identifier": "Pawanoh",
        "exif-lens": "Lénsa nu dipaké",
        "exif-serialnumber": "Nomer séri kaméra",
        "exif-cameraownername": "Nu boga kaméra",
        "exif-personinimage": "Jalma nu digambarkeun",
        "exif-originalimageheight": "Jangkung gambar saméméh diteukteuk",
        "exif-originalimagewidth": "Lébar gambar saméméh diteukteuk",
+       "exif-compression-1": "Teu kakompres",
+       "exif-copyrighted-true": "Mihak cipta",
        "exif-copyrighted-false": "Domain publik",
        "exif-unknowndate": "Titimangsa teu kanyahoan",
        "exif-orientation-1": "Normal",
        "exif-lightsource-19": "Cahya baku C",
        "exif-lightsource-24": "Tungsten studio ISO",
        "exif-lightsource-255": "Sumber cahya séjén",
+       "exif-flash-fired-1": "Buricak hurung",
+       "exif-flash-mode-3": "modeu otomatis",
        "exif-focalplaneresolutionunit-2": "inci",
+       "exif-sensingmethod-1": "Teu kadéfinisi",
        "exif-scenetype-1": "Gambar poto langsung",
        "exif-customrendered-0": "Prosés normal",
        "exif-customrendered-1": "Prosés biasa",
        "exif-iimcategory-edu": "Atikan",
        "exif-iimcategory-evn": "Lingkungan",
        "exif-iimcategory-hth": "Kawaluyaan",
+       "exif-iimcategory-lab": "Katanagakerjaan",
+       "exif-iimcategory-lif": "Gaya hirup jeung rékréasi",
        "exif-iimcategory-pol": "Politik",
        "exif-iimcategory-rel": "Ageman jeung kayakinan",
+       "exif-iimcategory-sci": "Sayen jeung téknologi",
        "exif-iimcategory-soi": "Isu sosial",
        "exif-iimcategory-spo": "Olahraga",
        "exif-iimcategory-wea": "Cuaca",
        "exif-urgency-normal": "Normal ($1)",
+       "exif-urgency-low": "Landeuh ($1)",
+       "exif-urgency-high": "Luhur ($1)",
        "namespacesall": "kabéh",
        "monthsall": "kabéh",
        "confirmemail": "Konfirmasi alamat surélék",
        "deletedwhileediting": "'''Awas''': ieu kaca geus dihapus nalika anjeun mitembeyan ngédit!",
        "confirmrecreate": "Pamaké [[User:$1|$1]] ([[User talk:$1|ngobrol]]) geus ngahapus artikel ieu nalika anjeun ngédit kalawan alesan:\n: ''$2''\nmangga pastikeun yén anjeun rék nyieun deui artikel ieu.",
        "recreate": "Jieun deui",
+       "confirm-purge-title": "Hapus sindangan ieu",
        "confirm_purge_button": "Heug",
        "confirm-purge-top": "Hapus sindangan kaca ieu?",
+       "confirm-watch-button": "Heug",
+       "confirm-unwatch-button": "Heug",
+       "confirm-unwatch-top": "Pupus ieu kaca tina aawaseun anjeun?",
+       "confirm-rollback-button": "Heug",
+       "quotation-marks": "\"$1\"",
        "imgmultipageprev": "&larr; kaca saacana",
        "imgmultipagenext": "kaca salajengna →",
        "imgmultigo": "Téang!",
        "imgmultigoto": "Jung ka kaca $1",
+       "img-lang-default": "(basa default)",
+       "img-lang-go": "Jung",
        "ascending_abbrev": "naék",
        "descending_abbrev": "turun",
        "table_pager_next": "Kaca salajengna",
        "table_pager_first": "Kaca mimiti",
        "table_pager_last": "Kaca tung-tung",
        "table_pager_limit": "Pidangkeun $1 éntri pér halaman",
+       "table_pager_limit_label": "Item per kaca:",
        "table_pager_limit_submit": "Téang",
        "table_pager_empty": "Nyamos",
        "autosumm-blank": "Ngosongkeun eusi kaca",
        "autosumm-replace": "Ngaganti kaca ku '$1'",
        "autoredircomment": "Mindahkeun ka [[$1]]",
        "autosumm-new": "Nyieun kaca anyar  $1",
+       "autosumm-newblank": "Nyieun kaca kosong",
        "lag-warn-normal": "Parobahan nu leuwih anyar ti $1 {{PLURAL:$1|detik|detik}} moal ditémbongkeun dina ieu béréndélan.",
        "lag-warn-high": "Kusabab kasibukan lag server pangkalan data, parobahan nu leuwih anyar $1 {{PLURAL:$1|detik|detik}} moal ditémbongkeun dina ieu béréndélan.",
        "watchlistedit-normal-title": "Édit daptar awaskeuneun",
        "watchlistedit-raw-done": "Daptar awaskeuneun geus diropéa.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 judul geus|$1 judul geus}} ditambahkeun:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 judul geus|$1 judul geus}} dikaluarkeun:",
+       "watchlistedit-clear-title": "Bersihan aawaseun",
+       "watchlistedit-clear-legend": "Bersihan aawaseun",
+       "watchlistedit-clear-titles": "Judul:",
        "watchlisttools-view": "Témbongkeun parobahan nu patali",
        "watchlisttools-edit": "Témbongkeun sarta édit béréndélan awaskeuneun",
        "watchlisttools-raw": "Robah béréndélan awaskeuneun",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|obrolan]])",
+       "timezone-local": "Lokal",
        "duplicate-defaultsort": "'''Awas''': Konci runtuyan asal \"$2\" ngalindih konci runtuyan asal \"$1\" anu saméméhna.",
        "version": "Vérsi",
        "version-extensions": "Éksténsi nu diinstal",
+       "version-skins": "Kalakop nu diinstal",
        "version-specialpages": "Kaca husus",
        "version-parserhooks": "Kait parser",
        "version-variables": "Variabel",
        "version-hook-subscribedby": "Didaptarkeun ku",
        "version-version": "($1)",
        "version-license": "Lisénsi MediaWiki",
+       "version-ext-license": "Lisénsi",
+       "version-ext-colheader-name": "Éksténsi",
+       "version-skin-colheader-name": "Kalakop",
+       "version-ext-colheader-version": "Vérsi",
+       "version-ext-colheader-license": "Lisénsi",
+       "version-ext-colheader-description": "Pedaran",
+       "version-ext-colheader-credits": "Pangarang",
+       "version-license-title": "Lisénsi pikeun $1",
+       "version-credits-title": "Krédit pikeun $1",
+       "version-poweredby-others": "séjénna",
        "version-poweredby-translators": "darmamurcaya translatewiki.net",
        "version-software": "Sopwér nu geus diinstal",
        "version-software-product": "Produk",
        "version-software-version": "Vérsi",
-       "fileduplicatesearch": "Sungsi gambar duplikat",
+       "version-entrypoints-header-url": "URL",
+       "version-libraries": "Pabukon kapasang",
+       "version-libraries-library": "Pabukon",
+       "version-libraries-version": "Vérsi",
+       "version-libraries-license": "Lisénsi",
+       "version-libraries-description": "Pedaran",
+       "version-libraries-authors": "Pangarang",
+       "redirect-submit": "Jung",
+       "redirect-lookup": "Ilikan:",
+       "redirect-value": "Ajén:",
+       "redirect-user": "ID pamaké",
+       "redirect-page": "ID kaca",
+       "redirect-revision": "Révisi kaca",
+       "redirect-file": "Ngaran berkas",
+       "redirect-logid": "ID log",
+       "redirect-not-exists": "Ajén teu kapanggih",
+       "fileduplicatesearch": "Paluruh gambar duplikat",
        "fileduplicatesearch-filename": "Ngaran koropak:",
-       "fileduplicatesearch-submit": "Sungsi",
+       "fileduplicatesearch-submit": "Paluruh",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Ukuran koropak: $3<br />Tipeu MIME: $4",
        "fileduplicatesearch-result-1": "Koropak \"$1\" teu boga duplikat idéntik.",
        "fileduplicatesearch-result-n": "Koropak \"$1\" mibanda {{PLURAL:$2|1 duplikat idéntik|$2 duplikat idéntik}}.",
        "specialpages": "Kaca husus",
+       "specialpages-note-top": "Kamandang",
        "specialpages-note": "* Kaca husus normal.\n* <span class=\"mw-specialpagerestricted\">Kaca husus diwates.</span>",
        "specialpages-group-maintenance": "Laporan pigawéeun",
        "specialpages-group-other": "Kaca husus lainna",
        "specialpages-group-wiki": "Data jeung parabot",
        "specialpages-group-redirects": "Alihan kaca husus",
        "specialpages-group-spam": "Parabot Spam",
+       "specialpages-group-developer": "Parabot pangembang",
        "blankpage": "Kaca kosong",
        "intentionallyblankpage": "Ieu kaca ngahaja dikosongkeun.",
        "external_image_whitelist": " #Antepkeun ieu baris sakumaha ayana<pre>\n#Paké fragmén éxprési régulér (ukur bagian anu aya di antara //) di handap\n#Ieu fragmén bakal dicocogkeun jeung URL gambar-gambar éksternal\n#Fragmén anu cocog bakal dipidangkeun minangka gambar, lamun henteu nu katémbong ukur tutumbuna #Baris nu dimimitian ku # bakal dianggap koméntar\n#Ieu teu ngabédakeun gedé leutikna aksara\n#Teundeun sakabéh fragmén éxprési régulér luhureun ieu baris. Antepkeun ieu baris sakumaha ayana</pre>",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag}}]]: $2)",
        "tags-title": "Tag",
        "tags-tag": "Ngaran tag",
+       "tags-source-header": "Sumber",
+       "tags-active-header": "Hurung?",
+       "tags-actions-header": "Tarékah",
+       "tags-active-yes": "Enya",
+       "tags-active-no": "Teu",
        "tags-edit": "édit",
+       "tags-activate": "hurungkeun",
+       "tags-deactivate": "pareuman",
        "tags-hitcount": "$1 {{PLURAL:$1|parobahan|parobahan}}",
+       "tags-create-heading": "Nyieun tag anyar",
+       "tags-create-tag-name": "Ngaran tag:",
+       "tags-create-reason": "Alesan:",
+       "tags-create-submit": "Jieun",
+       "tags-delete-title": "Pupus tag",
+       "tags-delete-reason": "Alesan:",
+       "tags-activate-title": "Hurungkeun tag",
+       "tags-activate-reason": "Alesan:",
+       "tags-activate-submit": "Hurungkeun",
+       "tags-deactivate-title": "Pareuman tag",
+       "tags-deactivate-reason": "Alesan:",
+       "tags-deactivate-submit": "Pareuman",
+       "tags-edit-title": "Édit tag",
+       "tags-edit-existing-tags-none": "<em>Taya</em>",
+       "tags-edit-new-tags": "Tag anyar:",
+       "tags-edit-reason": "Alesan:",
        "comparepages": "Bandinkeun kaca",
        "compare-page1": "Kaca 1",
        "compare-page2": "Kaca 2",
        "htmlform-submit": "Kirim",
        "htmlform-reset": "Bolaykeun parobahan",
        "htmlform-selectorother-other": "Lianna",
+       "htmlform-no": "Henteu",
+       "htmlform-yes": "Enya",
+       "htmlform-chosen-placeholder": "Pilih opsi",
+       "htmlform-cloner-delete": "Pupus",
+       "htmlform-date-placeholder": "TTTT-BB-HH",
+       "htmlform-time-placeholder": "JJ:MM:DD",
+       "htmlform-datetime-placeholder": "TTTT-BB-HH JJ:MM:DD",
+       "htmlform-title-not-exists": "$1 euweuh.",
+       "htmlform-user-not-exists": "<strong>$1</strong> taya.",
        "logentry-delete-delete": "$1 {{GENDER:$2|ngahapus}} kaca $3",
        "logentry-delete-restore": "$1 {{GENDER:$2|dibalikkeun}} kaca $3 ($4)",
        "logentry-delete-restore-nocount": "$1 {{GENDER:$2|dibalikkeun}} kaca $3",
        "restore-count-revisions": "$1 {{PLURAL:$1|1 révisi|$1 révisi}}",
        "restore-count-files": "{{PLURAL:$1|1 berkas|$1 berkas}}",
+       "revdelete-content-hid": "kontén disumputkeun",
+       "revdelete-summary-hid": "tingkesan édit disumputkeun",
+       "revdelete-uname-hid": "sandiasma disumputkeun",
+       "revdelete-content-unhid": "kontén teu disumputkeun",
+       "revdelete-summary-unhid": "tingkesan édit teu disumputkeun",
+       "revdelete-uname-unhid": "sandiasma teu disumputkeun",
        "revdelete-restricted": "akses geus dibatesan ukur keur kuncén",
        "revdelete-unrestricted": "Watesan akses kuncén dihapuskeun",
+       "logentry-import-upload": "$1 {{GENDER:$2|ngimpor}} $3 ku pangunjalan berkas",
        "logentry-move-move": "$1 {{GENDER:$2|mindahkeun}} kaca $3 ka $4",
        "logentry-newusers-create": "Akun pamaké $1 geus {{GENDER:$2|dijieun}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|ngamuat}} $3",
        "rightsnone": "(euweuh)",
+       "feedback-back": "Balik deui",
        "feedback-cancel": "Bolay",
+       "feedback-close": "Anggeus",
+       "feedback-error2": "Kasalahan: Édit gagal",
        "feedback-message": "Surat:",
        "feedback-subject": "Ngeunaan:",
-       "searchsuggest-search": "Sungsi di {{SITENAME}}",
+       "feedback-submit": "Kirim",
+       "feedback-thanks-title": "Hatur nuhun!",
+       "feedback-useragent": "Agén pamaké:",
+       "searchsuggest-search": "Paluruh {{SITENAME}}",
        "searchsuggest-containing": "ngandung...",
        "duration-seconds": "$1 {{PLURAL:$1|detik|detik}}",
        "duration-minutes": "$1 {{PLURAL:$1|menit|menit}}",
        "expand_templates_xml_output": "Output XML",
        "expand_templates_ok": "Heug",
        "expand_templates_preview": "Pramidang",
+       "pagelang-name": "Kaca",
+       "pagelang-language": "Basa",
+       "pagelang-select-lang": "Pilih basa",
+       "pagelang-reason": "Alesan",
+       "pagelang-submit": "Kirim",
+       "pagelang-nonexistent-page": "Kaca $1 euweuh.",
+       "mediastatistics": "Statistik média",
+       "mediastatistics-table-mimetype": "Tipeu MIME",
+       "mediastatistics-table-count": "Jumlah berkas",
+       "mediastatistics-table-totalbytes": "Ukuran gabungan",
+       "mediastatistics-header-unknown": "Teu dipikanyaho",
+       "mediastatistics-header-bitmap": "Gambar bitmap",
+       "mediastatistics-header-drawing": "Ngagambar (Gambar véktor)",
+       "mediastatistics-header-audio": "Audio",
+       "mediastatistics-header-video": "Vidio",
+       "mediastatistics-header-multimedia": "Média beunghar",
+       "mediastatistics-header-text": "Tékstual",
+       "mediastatistics-header-total": "Sakumna berkas",
        "special-characters-group-latin": "Latin",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-symbols": "Lambang",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Khmer",
+       "log-action-filter-all": "Sakumna",
+       "log-action-filter-block-block": "Peungpeuk",
        "gotointerwiki": "Ninggalkeun{{SITENAME}}",
        "gotointerwiki-invalid": "Judul spésipik henteu valid"
 }
index 18c08a9..fd14f6d 100644 (file)
        "redirectedfrom": "(Omdirigerad från $1)",
        "redirectpagesub": "Omdirigeringssida",
        "redirectto": "Omdirigering till:",
-       "lastmodifiedat": "Sidan ändrades senast den $1 kl. $2.",
+       "lastmodifiedat": "Sidan redigerades senast den $1 kl. $2.",
        "viewcount": "Den här sidan har visats {{PLURAL:$1|en gång|$1 gånger}}.",
        "protectedpage": "Skrivskyddad sida",
        "jumpto": "Hoppa till:",
index 8e2ea17..452e901 100644 (file)
        "tagline": "จาก {{SITENAME}}",
        "help": "วิธีใช้",
        "search": "ค้นหา",
+       "search-ignored-headings": " #<!-- leave this line exactly as it is --> <pre>\n# อธิบายหัวข้อที่จะละเว้นในการค้นหา\n# การเปลี่ยนแปลงนี้จะมีผลเมื่อหน้าหัวเรื่องถูกจัดทำดัชนี\n# บังคับให้จัดทำดัชนีหน้าใหม่ด้วยการแก้ไขที่ว่างเปล่า\n# ไวยากรณ์เป็นดังนี้:\n#   * ทุกๆ บรรทัดที่ขึ้นต้นด้วย \"#\" จะเป็นคำอธิบายจนถึงจุดสิ้นสุดของบรรทัด\n#   * บรรทัดที่ไม่ใช่บรรทัดว่างจะเป็นบรรทัดแรกที่คุณต้องการละเลย รวมทั้งการใช้อักษรตัวพิมพ์ใหญ่และทุกๆ อย่างด้วย\nReferences\nExternal links\nSee also\n #</pre> <!-- leave this line exactly as it is -->",
        "searchbutton": "ค้นหา",
        "go": "ไป",
        "searcharticle": "ไป",
        "history": "ประวัติหน้า",
        "history_short": "ประวัติ",
        "history_small": "ประวัติ",
-       "updatedmarker": "à¸\96ูà¸\81à¸\9bรัà¸\9aà¸\95ัà¹\89à¸\87à¹\81à¸\95à¹\88à¸\81ารà¹\80ยีà¹\88ยมà¸\8aมà¸\84รัà¹\89à¸\87สุà¸\94à¸\97à¹\89ายของฉัน",
+       "updatedmarker": "à¸\96ูà¸\81à¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\95ัà¹\89à¸\87à¹\81à¸\95à¹\88à¸\81ารà¹\80ยีà¹\88ยมà¸\8aมà¸\84รัà¹\89à¸\87ลà¹\88าสุà¸\94ของฉัน",
        "printableversion": "รุ่นพร้อมพิมพ์",
        "permalink": "ลิงก์ถาวร",
        "print": "พิมพ์",
        "redirectedfrom": "(เปลี่ยนทางจาก $1)",
        "redirectpagesub": "หน้าเปลี่ยนทาง",
        "redirectto": "เปลี่ยนทางไป:",
-       "lastmodifiedat": "à¸\94ัà¸\94à¹\81à¸\9bรหà¸\99à¹\89าà¸\99ีà¹\89ล่าสุดเมื่อวันที่ $1 เวลา $2",
+       "lastmodifiedat": "หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81à¹\81à¸\81à¹\89à¹\84à¸\82ล่าสุดเมื่อวันที่ $1 เวลา $2",
        "viewcount": "มีการเข้าถึงหน้านี้ $1 ครั้ง",
        "protectedpage": "หน้าถูกป้องกัน",
        "jumpto": "ข้ามไป:",
        "botpasswords-label-delete": "ลบ",
        "botpasswords-label-resetpassword": "ตั้งรหัสผ่านใหม่",
        "botpasswords-label-grants": "การอนุญาตที่นำไปใช้ได้:",
+       "botpasswords-help-grants": "การอนุญาตจะอนุญาตให้เข้าถึงสิทธิ์ต่างๆ ที่บัญชีผู้ใช้ปัจจุบันมีอยู่ การเปิดใช้งานการอนุญาตที่นี่ไม่ใช่การอนุญาตการเข้าถึงที่บัญชีผู้ใช้ของคุณไม่มี สำหรับข้อมูลเพิ่มเติม โปรดดูที่ [[Special:ListGrants|ตารางการอนุญาต]]",
        "botpasswords-label-grants-column": "อนุญาตแล้ว",
        "botpasswords-bad-appid": "ชื่อบอต \"$1\" ไม่ถูกต้อง",
        "botpasswords-insert-failed": "การเพิ่มชื่อบอต \"$1\" ล้มเหลว คุณได้เพิ่มมันไว้แล้วหรือเปล่า?",
        "botpasswords-updated-body": "รหัสผานบอตสำหรับชื่อบอต \"$1\" ของผู้ใช้ \"$2\" ถูกอัปเดตแล้ว",
        "botpasswords-deleted-title": "ลบรหัสผ่านบอตแล้ว",
        "botpasswords-deleted-body": "รหัสผ่านบอตสำหรับชื่อบอต \"$1\" ของผู้ใช้ชื่อ \"$2\" ถูกลบออกแล้ว",
+       "botpasswords-newpassword": "รหัสผ่านใหม่ที่จะใช้กับ <strong>$1</strong> คือ <strong>$2</strong> <em>โปรดเก็บบันทึกข้อมูลนี้ไว้ เพื่อให้สามารถนำไปใช้อ้างอิงในภายหลังได้</em> <br> (ในกรณีที่เป็นบอตเก่าซึ่งต้องใช้ชื่อล็อกอินเหมือนกับชื่อผู้ใช้ โปรดใช้ <strong>$3</strong> เป็นชื่อผู้ใช้และ <strong>$4</strong> เป็นรหัสผ่าน)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider ไม่พร้อมใช้งาน",
        "botpasswords-restriction-failed": "ข้อจำกัดของรหัสผ่านบอตห้ามไม่ให้ล็อกอินครั้งนี้",
        "botpasswords-invalid-name": "ชื่อผู้ใช้ที่ระบุไม่มีเครื่องหมายคั่นในรหัสผ่านบอต (\"$1\")",
        "botpasswords-not-exist": "ผู้ใช้ \"$1\" ไม่มีรหัสผ่านบอต \"$2\".",
        "resetpass_forbidden": "ไม่สามารถเปลี่ยนรหัสผ่านได้",
        "resetpass_forbidden-reason": "ไม่สามารถเปลี่ยนรหัสผ่านได้: $1",
-       "resetpass-no-info": "คุณต้องล็อกอินเพื่อเข้าถึงหน้านี้โดยตรง",
+       "resetpass-no-info": "à¸\84ุà¸\93à¸\88ำà¹\80à¸\9bà¹\87à¸\99à¸\95à¹\89อà¸\87ลà¹\87อà¸\81อิà¸\99à¹\80à¸\9eืà¹\88อà¹\80à¸\82à¹\89าà¸\96ึà¸\87หà¸\99à¹\89าà¸\99ีà¹\89à¹\82à¸\94ยà¸\95รà¸\87",
        "resetpass-submit-loggedin": "เปลี่ยนรหัสผ่าน",
        "resetpass-submit-cancel": "ยกเลิก",
        "resetpass-wrong-oldpass": "รหัสผ่านชั่วคราวหรือปัจจุบันไม่ถูกต้อง\nคุณอาจเปลี่ยนรหัสผ่านของคุณสำเร็จแล้ว หรือขอรหัสผ่านชั่วคราวใหม่แล้ว",
        "resettokens-tokens": "โทเค็น:",
        "resettokens-token-label": "$1 (ค่าปัจจุบัน: $2)",
        "resettokens-watchlist-token": "โทเค็นสำหรับเว็บฟีด (Atom/RSS) ของ[[Special:Watchlist|การเปลี่ยนแปลงแก่หน้าในรายการเฝ้าดูของคุณ]]",
-       "resettokens-done": "ตั้งโทเค็นใหม่แล้ว",
+       "resettokens-done": "à¸\95ัà¹\89à¸\87à¸\84à¹\88าà¹\82à¸\97à¹\80à¸\84à¹\87à¸\99à¹\83หมà¹\88à¹\81ลà¹\89ว",
        "resettokens-resetbutton": "ตั้งโทเค็นที่เลือกใหม่",
        "bold_sample": "ข้อความตัวหนา",
        "bold_tip": "ทำตัวหนา",
        "youremail": "อีเมล:",
        "username": "{{GENDER:$1|ชื่อผู้ใช้}}:",
        "prefs-memberingroups": "{{GENDER:$2|สมาชิก}}ใน{{PLURAL:$1|กลุ่ม|กลุ่ม}}:",
+       "group-membership-link-with-expiry": "$1 (จนกระทั่ง $2)",
        "prefs-registration": "เวลาลงทะเบียน:",
        "yourrealname": "ชื่อจริง:",
        "yourlanguage": "ภาษา:",
index 30cc60b..0cb9dc5 100644 (file)
@@ -93,7 +93,8 @@
                        "By erdo can",
                        "1917 Ekim Devrimi",
                        "Asmen",
-                       "Stephanecbisson"
+                       "Stephanecbisson",
+                       "Alerque"
                ]
        },
        "tog-underline": "Bağlantıların altını çizme:",
        "redirectedfrom": "($1 sayfasından yönlendirildi)",
        "redirectpagesub": "Yönlendirme sayfası",
        "redirectto": "Şuraya yönlendir:",
-       "lastmodifiedat": "Bu sayfa son olarak $1 tarihinde ve $2 saatinde güncellenmiştir.",
+       "lastmodifiedat": "Bu sayfa son olarak $1 tarihinde ve $2 saatinde düzenlenmiştir.",
        "viewcount": "Bu sayfaya {{PLURAL:$1|bir|$1}} defa erişilmiş.",
        "protectedpage": "Korumalı sayfa",
        "jumpto": "Şuraya atla:",
        "disclaimerpage": "Project:Genel sorumluluk reddi",
        "edithelp": "Düzenleme yardımı",
        "helppage-top-gethelp": "Yardım",
-       "mainpage": "Ana Sayfa",
-       "mainpage-description": "Ana sayfa",
+       "mainpage": "Anasayfa",
+       "mainpage-description": "Anasayfa",
        "policy-url": "Project:Politika",
        "portal": "Topluluk portali",
        "portal-url": "Project:Topluluk portali",
        "nstab-template": "Şablon",
        "nstab-help": "Yardım sayfası",
        "nstab-category": "Kategori",
-       "mainpage-nstab": "Ana sayfa",
+       "mainpage-nstab": "Anasayfa",
        "nosuchaction": "Böyle bir eylem yok",
        "nosuchactiontext": "URL tarafından tanımlanan eylem geçersiz.\nURL'yi yanlış yazmış olabilir, ya da doğru olmayan bir bağlantıyı takip etmiş olabilirsiniz.\nBu, {{SITENAME}} sitesindeki bir hatayı da belirtebilir.",
        "nosuchspecialpage": "Böyle bir özel sayfa yok",
        "userrights-nodatabase": "$1 veritabanı mevcut veya bölgesel değil",
        "userrights-changeable-col": "Değiştirebildiğiniz gruplar",
        "userrights-unchangeable-col": "Değiştiremediğiniz gruplar",
+       "userrights-expiry-current": "$2 günü saat $3 itibarıyla sona eriyor",
+       "userrights-expiry-none": "Süresiz",
+       "userrights-expiry": "Bitiş:",
+       "userrights-expiry-existing": "Mevcut bitiş süresi: $2 $3",
+       "userrights-expiry-othertime": "Diğer süre:",
+       "userrights-expiry-options": "1 gün:1 day,1 hafta:1 week,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 yıl:1 year",
+       "userrights-expiry-in-past": "\"$1\" grubunun bitiş süresi geçmişte.",
        "userrights-conflict": "Kullanıcı hakları değişikliklerinde çakışma! Lütfen değişikliklerinizi gözden geçirin ve onaylayın.",
        "group": "Grup:",
        "group-user": "Kullanıcılar",
        "rcfilters-filter-unregistered-label": "Kayıtsız",
        "rcfilters-filter-unregistered-description": "Oturum açmamış editörler.",
        "rcfilters-filtergroup-authorship": "Düzenleme sahipliği",
-       "rcfilters-filter-editsbyself-label": "Kendi düzenlemeleriniz",
-       "rcfilters-filter-editsbyself-description": "Sizin düzenlemeleriniz.",
+       "rcfilters-filter-editsbyself-label": "Senin değişiklikleriniz",
+       "rcfilters-filter-editsbyself-description": "Kendi katkılarınız.",
        "rcfilters-filter-editsbyother-label": "Başkalarının düzenlemeleri",
-       "rcfilters-filter-editsbyother-description": "Başka kullanıcılar tarafından oluşturulan düzenlemeler (sizin değil).",
+       "rcfilters-filter-editsbyother-description": "Kendi düzenlemeleriniz hariç bütün düzenlemeler.",
        "rcfilters-filtergroup-userExpLevel": "Deneyim düzeyi (yalnızca kayıtlı kullanıcılar için)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Bu süzgeç etkin değildir, çünkü yalnızca kayıtlı kullanıcıları bulmaktadır, yani \"Kayıtsız\" süzgeci etkisini ortadan kaldırmaktadır.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"Kayıtsız\" süzgeci bir veya daha fazla Deneyim süzgeciyle çakışmaktadır. Deneyim süzgeçleri yalnızca kayıtlı kullanıcıları bulmaktadır. Çakışan süzgeçler yukarıda etkin değil şeklinde işaretlenmiştir.",
        "rcshowhidecategorization": "sayfa kategorizasyonunu $1",
        "rcshowhidecategorization-show": "göster",
        "rcshowhidecategorization-hide": "gizle",
-       "rclinks": "Son $2 günde yapılan son $1 değişikliği göster;",
+       "rclinks": "Son $2 günde yapılan son $1 değişikliği göster",
        "diff": "fark",
        "hist": "geçmiş",
        "hide": "gizle",
        "listgrouprights-namespaceprotection-namespace": "Ad alanı",
        "listgrouprights-namespaceprotection-restrictedto": "Kullanıcının değişiklik yapmasına izin veren hak(lar)",
        "listgrants-rights": "Haklar",
-       "trackingcategories": "Eşleşen kategoriler",
+       "trackingcategories": "Takip kategorileri",
        "trackingcategories-summary": "Bu sayfa MediaWiki yazılımı tarafından otomatik olarak doldurulan takip kategorilerini listelemektedir. {{ns:8}} ad alanındaki ilgili sistem mesajları değiştirilerek isimleri düzenlenebilir.",
        "trackingcategories-msg": "İzleme kategorisi",
        "trackingcategories-name": "Mesaj Duvarı",
        "tooltip-search": "{{SITENAME}} içinde ara",
        "tooltip-search-go": "Eğer varsa, aynı isimli sayfaya gidin",
        "tooltip-search-fulltext": "Sayfalarda bu metni ara",
-       "tooltip-p-logo": "Ana sayfayı ziyaret edin",
+       "tooltip-p-logo": "Anasayfayı ziyaret edin",
        "tooltip-n-mainpage": "Ana sayfaya git",
-       "tooltip-n-mainpage-description": "Ana sayfaya git",
+       "tooltip-n-mainpage-description": "Anasayfayı ziyaret et",
        "tooltip-n-portal": "Proje hakkında, neler yapabilirsiniz, ne nerdedir",
        "tooltip-n-currentevents": "Güncel olaylarla ilgili son bilgiler",
        "tooltip-n-recentchanges": "Vikide yapılmış son değişikliklerin listesi",
        "confirmrecreate-noreason": "[[User:$1|$1]] ([[User talk:$1|mesaj]]) adlı kullanıcı, siz değişiklik yapmaya başladıktan sonra bu sayfayı sildi. Lütfen bu sayfayı gerçekten yeniden oluşturmak istediğinizi onaylayın.",
        "recreate": "Canlandır",
        "unit-pixel": "px",
+       "confirm-purge-title": "Bu sayfayı temizle",
        "confirm_purge_button": "Tamam",
        "confirm-purge-top": "Sayfa önbelleği temizlensin mi?",
        "confirm-purge-bottom": "Sayfa temizleme işlemi önbelleğin temizlenmesini sağlar ve güncel sürümü görünmeye zorlar.",
        "logentry-newusers-newusers": "Kullanıcı hesabı $1 {{GENDER:$2|oluşturuldu}}",
        "logentry-newusers-create": "Kullanıcı hesabı $1 {{GENDER:$2|oluşturuldu}}",
        "logentry-newusers-create2": "$3 kullanıcı hesabı $1 tarafından {{GENDER:$2|oluşturuldu}}",
-       "logentry-newusers-byemail": "$3 kullanıcı hesabı $1 tarafından {{GENDER:$2|oluşturuldu}} ve şifre e-posta ile gönderildi",
+       "logentry-newusers-byemail": "$3 kullanıcı hesabı $1 tarafından {{GENDER:$2|oluşturuldu}} ve parola e-posta ile gönderildi",
        "logentry-newusers-autocreate": "$1 kullanıcı hesabı otomatik olarak {{GENDER:$2|oluşturuldu}}",
-       "logentry-protect-unprotect": "$1, $3 sayfasının korumasını {{GENDER:$2|kaldırdı}}",
+       "logentry-protect-move_prot": "$1, koruma ayarlarını $4 adlı sayfadan $3 adlı sayfaya {{GENDER:$2|taşıdı}}",
+       "logentry-protect-unprotect": "$1, $3 adlı sayfanın korumasını {{GENDER:$2|kaldırdı}}",
+       "logentry-protect-protect": "$1, $3 adlı sayfayı {{GENDER:$2|korumaya aldı}} $4",
+       "logentry-protect-protect-cascade": "$1, $3 adlı sayfayı {{GENDER:$2|korumaya aldı}} $4 [kademeli]",
+       "logentry-protect-modify": "$1, $3 adlı sayfa için koruma düzeyini {{GENDER:$2|değiştirdi}} $4",
+       "logentry-protect-modify-cascade": "$1, $3 adlı sayfa için koruma düzeyini {{GENDER:$2|değiştirdi}} $4 [kademeli]",
        "logentry-rights-rights": "$1, $3 için grup üyeliğini $4 iken $5 olarak {{GENDER:$2|değiştirdi}}",
        "logentry-rights-rights-legacy": "$1, $3 için grup üyeliğini {{GENDER:$2|değiştirdi}}",
        "logentry-rights-autopromote": "$1, $4 iken $5 olarak otomatik {{GENDER:$2|terfi edildi}}",
        "logentry-tag-update-revision": "$1, $3 sayfasının $4 numaralı sürümündeki etiketleri  {{GENDER:$2|güncelledi}}. Eklenen {{PLURAL:$7|etiket|etiket}}: $6; kaldırılan {{PLURAL:$9|etiket|etiket}}: $8",
        "logentry-tag-update-logentry": "$1, $3 sayfasının $5 numaralı günlük kaydındaki etiketleri {{GENDER:$2|güncelledi}}. Eklenen {{PLURAL:$7|etiket|etiket}}: $6; kaldırılan {{PLURAL:$9|etiket|etiket}}: $8",
        "rightsnone": "(hiçbiri)",
+       "rightslogentry-temporary-group": "$1 ($3 günü $4 saatine kadar geçici)",
        "feedback-adding": "Sayfaya geribildirim ekleniyor...",
        "feedback-back": "Geri",
        "feedback-bugcheck": "Harika! Sadece [bilinen $1 hatalarından] olmadığını kontrol et.",
        "randomrootpage": "Rastgele kök sayfası",
        "log-action-filter-block": "Blok türü:",
        "log-action-filter-delete": "Silme türü:",
+       "log-action-filter-newusers": "Hesap oluşturma türü:",
        "log-action-filter-patrol": "Devriye türü:",
        "log-action-filter-protect": "Koruma tipi:",
        "log-action-filter-rights": "Hak türü seçimi:",
index 4a08678..484ffc8 100644 (file)
        "rcfilters-filter-unregistered-label": "未注册",
        "rcfilters-filter-unregistered-description": "未登录的编辑者。",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "该过滤器与以下体验{{PLURAL:$2|过滤器}}相冲突,而它只{{PLURAL:$2|寻找}}注册用户:$1",
-       "rcfilters-filtergroup-authorship": "编辑的作者",
-       "rcfilters-filter-editsbyself-label": "您自己的编辑",
-       "rcfilters-filter-editsbyself-description": "由您编辑。",
-       "rcfilters-filter-editsbyother-label": "由其他人编辑",
-       "rcfilters-filter-editsbyother-description": "由其他用户(而不是您)创建的编辑。",
+       "rcfilters-filtergroup-authorship": "贡献的作者",
+       "rcfilters-filter-editsbyself-label": "您的更改",
+       "rcfilters-filter-editsbyself-description": "您自己的贡献。",
+       "rcfilters-filter-editsbyother-label": "他人更改",
+       "rcfilters-filter-editsbyother-description": "除了您的更改以外的所有更改。",
        "rcfilters-filtergroup-userExpLevel": "体验水平(仅限注册用户)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "体验过滤器只寻找注册用户,因此该过滤器与“未注册”过滤器相冲突。",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "“未注册”过滤器与一个或更多体验过滤器相冲突,而它只寻找注册用户。冲突过滤器已在上方激活过滤器区域中被标记。",
        "rcfilters-filtergroup-automated": "自动化贡献者",
        "rcfilters-filter-bots-label": "机器人",
        "rcfilters-filter-bots-description": "由自动化工具做出的编辑。",
-       "rcfilters-filter-humans-label": "人类(不是机器人)",
+       "rcfilters-filter-humans-label": "人类(机器人)",
        "rcfilters-filter-humans-description": "由人类编辑者做出的编辑。",
        "rcfilters-filtergroup-reviewstatus": "巡查状态",
        "rcfilters-filter-patrolled-label": "已巡查",
        "rcfilters-filter-newpages-description": "做出新页面的编辑。",
        "rcfilters-filter-categorization-label": "分类更改",
        "rcfilters-filter-categorization-description": "从分类中添加或移除页面的记录。",
-       "rcfilters-filter-logactions-label": "记录的操作",
+       "rcfilters-filter-logactions-label": "日志操作",
        "rcfilters-filter-logactions-description": "管理操作、账户创建、页面删除、上传....",
        "rcfilters-hideminor-conflicts-typeofchange-global": "“小编辑”过滤器与一个或多个更改类型过滤器冲突,因为其中某种更改类型不可指定为“小编辑”。冲突过滤器已在上方活跃过滤器中被标记。",
        "rcfilters-hideminor-conflicts-typeofchange": "某种更改类型不可指定为“小编辑”,因此该过滤器与以下更改类型过滤器相冲突:$1",
        "enotif_body_intro_moved": "{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|移动}},请浏览<$3>查看当前版本。",
        "enotif_body_intro_restored": "{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|还原}},请浏览$3查看当前版本。",
        "enotif_body_intro_changed": "{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|更改}},请浏览 $3 查看当前版本。",
-       "enotif_lastvisited": "请æµ\8fè§\88 $1 æ\9f¥ç\9c\8bå\9c¨ä½ ä¸\8a次访é\97®å\90\8eç\9a\84æ\89\80æ\9c\89æ\9b´æ\94¹ã\80\82",
-       "enotif_lastdiff": "请æµ\8fè§\88 $1 æ\9f¥ç\9c\8b该æ\9b´æ\94¹ã\80\82",
+       "enotif_lastvisited": "è¦\81æ\9f¥ç\9c\8bæ\82¨ä¸\8a次访é\97®ä»¥æ\9d¥ç\9a\84æ\89\80æ\9c\89æ\9b´æ\94¹ï¼\8c请å\8f\82è§\81$1",
+       "enotif_lastdiff": "è¦\81æµ\8fè§\88此次æ\9b´æ\94¹ï¼\8c请å\8f\82è§\81$1",
        "enotif_anon_editor": "匿名用户$1",
        "enotif_body": "亲爱的$WATCHINGUSERNAME:\n\n您好!\n$PAGEINTRO$NEWPAGE\n\n编辑摘要:$PAGESUMMARY $PAGEMINOREDIT\n\n可通过以下方式联系编辑者:\n电子邮件:$PAGEEDITOR_EMAIL\n用户页面:$PAGEEDITOR_WIKI\n\n在您登录并访问该页面之前,我们不会发送新增更改的通知。您也可以重设您的监视列表中所有监视页面的通知标志。\n\n{{SITENAME}}通知系统\n\n--\n更改邮件通知设置:\n{{canonicalurl:{{#special:Preferences}}}}\n更改监视列表设置:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n从监视列表中删除该页面:\n$UNWATCHURL\n反馈与其他帮助:\n$HELPPAGE",
        "created": "创建",
index 516e9ed..d2b4d8b 100644 (file)
        "redirectedfrom": "(已重新導向自 $1)",
        "redirectpagesub": "重新導向頁面",
        "redirectto": "重新導向至:",
-       "lastmodifiedat": "此頁面最後修改於 $1 $2。",
+       "lastmodifiedat": "此頁面最後編輯於 $1 $2。",
        "viewcount": "此頁面已被存取過 {{PLURAL:$1|$1 次}}。",
        "protectedpage": "受保護頁面",
        "jumpto": "前往:",
        "rcfilters-filter-newpages-description": "建立新頁面的編輯。",
        "rcfilters-filter-categorization-label": "分類變更",
        "rcfilters-filter-categorization-description": "已加入到分類或從分類中移除的頁面記錄。",
-       "rcfilters-filter-logactions-label": "已記錄的動作",
+       "rcfilters-filter-logactions-label": "日誌動作",
        "rcfilters-filter-logactions-description": "管理動作、帳號建立、頁面刪除、上傳....",
        "rcfilters-hideminor-conflicts-typeofchange-global": "\"次要編輯\" 過濾條件與一個或多個變更類型過濾條件衝突,因為某些變更類型無法指定為 \"次要\"。衝突的過濾條件已在上方使用的過濾條件區域中標示。",
        "rcfilters-hideminor-conflicts-typeofchange": "某些變更類型無法指定為 \"次要\",所以此過濾條件與以下變更類型的過濾條件衝突:$1",
index 160f57d..60e08cc 100644 (file)
@@ -217,8 +217,8 @@ $magicWords = [
        'img_framed'                => [ '1', 'gerahmt', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'rahmenlos', 'frameless' ],
        'img_lang'                  => [ '1', 'sprache=$1', 'lang=$1' ],
-       'img_page'                  => [ '1', 'seite=$1', 'seite_$1', 'page=$1', 'page $1' ],
-       'img_upright'               => [ '1', 'hochkant', 'hochkant=$1', 'hochkant_$1', 'upright', 'upright=$1', 'upright $1' ],
+       'img_page'                  => [ '1', 'seite=$1', 'seite $1', 'seite_$1', 'page=$1', 'page $1' ],
+       'img_upright'               => [ '1', 'hochkant', 'hochkant=$1', 'hochkant $1', 'hochkant_$1', 'upright', 'upright=$1', 'upright $1' ],
        'img_border'                => [ '1', 'rand', 'border' ],
        'img_baseline'              => [ '1', 'grundlinie', 'baseline' ],
        'img_sub'                   => [ '1', 'tief', 'tiefgestellt', 'sub' ],
diff --git a/languages/messages/MessagesDin.php b/languages/messages/MessagesDin.php
new file mode 100644 (file)
index 0000000..8b3d09d
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+/** Dinka (Thuɔŋjäŋ)
+ *
+ * To improve a translation please visit https://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ */
+
+$namespaceNames = [
+       NS_MEDIA            => 'Ciɛl',
+       NS_SPECIAL          => 'Këcëweek',
+       NS_TALK             => 'Jam',
+       NS_USER             => 'Dulooi',
+       NS_USER_TALK        => 'Jam_kekë_dulooi',
+       NS_PROJECT_TALK     => 'Jam_wɛ̈t_ë_$1',
+       NS_FILE             => 'Apamduööt',
+       NS_FILE_TALK        => 'Jam_wɛ̈t_ë_apamduööt',
+       NS_MEDIAWIKI        => 'MediaWiki',
+       NS_MEDIAWIKI_TALK   => 'Jam_wɛ̈t_ë_MediaWiki',
+       NS_TEMPLATE         => 'Macuëc',
+       NS_TEMPLATE_TALK    => 'Jam_wɛ̈t_ë_macuëc',
+       NS_HELP             => 'Kuɔny',
+       NS_HELP_TALK        => 'Jam_wɛ̈t_ë_kuɔny',
+       NS_CATEGORY         => 'Bekätakthook',
+       NS_CATEGORY_TALK    => 'Jam_wɛ̈t_ë_bekätakthook',
+];
+
+$linkTrail = '/^([äëɛɛ̈éɣïŋöɔɔ̈óa-z]+)(.*)$/sDu';
index 480d94f..d851e1c 100644 (file)
@@ -51,6 +51,7 @@
  * @author Дар'я Козлова
  * @author Максим Підліснюк
  * @author Тест
+ * @author Eugene Gvozdetsky
  */
 
 $separatorTransformTable = [
@@ -102,6 +103,11 @@ $namespaceAliases = [
        'Обсуждение_изображения' => NS_FILE_TALK,
 ];
 
+$namespaceGenderAliases = [
+       NS_USER      => [ 'male' => 'Користувач', 'female' => 'Користувачка' ],
+       NS_USER_TALK => [ 'male' => 'Обговорення_користувача', 'female' => 'Обговорення_користувачки' ],
+];
+
 $dateFormats = [
        'mdy time' => 'H:i',
        'mdy date' => 'xg j, Y',
index c021abd..27da9de 100644 (file)
@@ -5,3 +5,6 @@ To get somehow accurate result, you might want to bound the PHP process
 to a specific CPU with `taskset` and raise its priority with `nice`. Example:
 
  $ taskset 1 nice -n-10 php bench_wfIsWindows.php
+
+australia-untidy.html.gz contains representative input text for
+benchmarkTidy.php. It needs to be decompressed before use.
diff --git a/maintenance/benchmarks/australia-untidy.html.gz b/maintenance/benchmarks/australia-untidy.html.gz
new file mode 100644 (file)
index 0000000..148481d
Binary files /dev/null and b/maintenance/benchmarks/australia-untidy.html.gz differ
diff --git a/maintenance/benchmarks/benchmarkTidy.php b/maintenance/benchmarks/benchmarkTidy.php
new file mode 100644 (file)
index 0000000..1479174
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+
+require __DIR__ . '/../Maintenance.php';
+
+class BenchmarkTidy extends Maintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->addOption( 'file', 'A filename which contains the input text', true, true );
+               $this->addOption( 'driver', 'The Tidy driver name, or false to use the configured instance',
+                       false,  true );
+               $this->addOption( 'tidy-config', 'JSON encoded value for the tidy configuration array',
+                       false, true );
+       }
+
+       public function execute() {
+               $html = file_get_contents( $this->getOption( 'file' ) );
+               if ( $html === false ) {
+                       $this->error( "Unable to open input file", 1 );
+               }
+               if ( $this->hasOption( 'driver' ) || $this->hasOption( 'tidy-config' ) ) {
+                       $config = json_decode( $this->getOption( 'tidy-config', '{}' ), true );
+                       if ( !is_array( $config ) ) {
+                               $this->error( "Invalid JSON tidy config", 1 );
+                       }
+                       $config += [ 'driver' => $this->getOption( 'driver', 'RemexHtml' ) ];
+                       $driver = MWTidy::factory( $config );
+               } else {
+                       $driver = MWTidy::singleton();
+                       if ( !$driver ) {
+                               $this->error( "Tidy disabled or not installed", 1 );
+                       }
+               }
+
+               $this->benchmark( $driver, $html );
+       }
+
+       private function benchmark( $driver, $html ) {
+               global $wgContLang;
+
+               $times = [];
+               $innerCount = 10;
+               $outerCount = 10;
+               for ( $j = 1; $j <= $outerCount; $j++ ) {
+                       $t = microtime( true );
+                       for ( $i = 0; $i < $innerCount; $i++ ) {
+                               $driver->tidy( $html );
+                               print $wgContLang->formatSize( memory_get_usage( true ) ) . "\n";
+                       }
+                       $t = ( ( microtime( true ) - $t ) / $innerCount ) * 1000;
+                       $times[] = $t;
+                       print "Run $j: $t\n";
+               }
+               print "\n";
+
+               sort( $times, SORT_NUMERIC );
+               $n = $outerCount;
+               $min = $times[0];
+               $max = end( $times );
+               if ( $n % 2 ) {
+                       $median = $times[ ( $n - 1 ) / 2 ];
+               } else {
+                       $median = ( $times[$n / 2] + $times[$n / 2 - 1] ) / 2;
+               }
+               $mean = array_sum( $times ) / $n;
+
+               print "Minimum: $min ms\n";
+               print "Median: $median ms\n";
+               print "Mean: $mean ms\n";
+               print "Maximum: $max ms\n";
+               print "Memory usage: " .
+                       $wgContLang->formatSize( memory_get_usage( true ) ) . "\n";
+               print "Peak memory usage: " .
+                       $wgContLang->formatSize( memory_get_peak_usage( true ) ) . "\n";
+       }
+}
+
+$maintClass = 'BenchmarkTidy';
+require RUN_MAINTENANCE_IF_MAIN;
diff --git a/maintenance/cleanupInvalidDbKeys.php b/maintenance/cleanupInvalidDbKeys.php
new file mode 100644 (file)
index 0000000..423686e
--- /dev/null
@@ -0,0 +1,310 @@
+<?php
+/**
+ * Cleans up invalid titles in various tables.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+
+require_once __DIR__ . '/Maintenance.php';
+
+/**
+ * Maintenance script that cleans up invalid titles in various tables.
+ *
+ * @since 1.29
+ * @ingroup Maintenance
+ */
+class CleanupInvalidDbKeys extends Maintenance {
+       /** @var array List of tables to clean up, and the field prefix for that table */
+       protected static $tables = [
+               // Data tables
+               [ 'page', 'page' ],
+               [ 'redirect', 'rd', 'idField' => 'rd_from' ],
+               [ 'archive', 'ar' ],
+               [ 'logging', 'log' ],
+               [ 'protected_titles', 'pt', 'idField' => 0 ],
+               [ 'category', 'cat', 'nsField' => 14 ],
+               [ 'recentchanges', 'rc' ],
+               [ 'watchlist', 'wl' ],
+               // The querycache tables' qc(c)_title and qcc_titletwo may contain titles,
+               // but also usernames or other things like that, so we leave them alone
+
+               // Links tables
+               [ 'pagelinks', 'pl', 'idField' => 'pl_from' ],
+               [ 'templatelinks', 'tl', 'idField' => 'tl_from' ],
+               [ 'categorylinks', 'cl', 'idField' => 'cl_from', 'nsField' => 14, 'titleField' => 'cl_to' ],
+       ];
+
+       public function __construct() {
+               parent::__construct();
+               $this->addDescription( <<<'TEXT'
+This script cleans up the title fields in various tables to remove entries that
+will be rejected by the constructor of TitleValue.  This constructor throws an
+exception when invalid data is encountered, which will not normally occur on
+regular page views, but can happen on query special pages.
+
+The script targets titles matching the regular expression /^_|[ \r\n\t]|_$/.
+Because any foreign key relationships involving these titles will already be
+broken, the titles are corrected to a valid version or the rows are deleted
+entirely, depending on the table.
+
+Key progress output is printed to STDERR, while a full log of all entries that
+are deleted is sent to STDOUT. You are strongly advised to capture STDOUT into
+a file.
+TEXT
+               );
+               $this->addOption( 'fix', 'Actually clean up invalid titles. If this parameter is ' .
+                       'not specified, the script will report invalid titles but not clean them up.',
+                       false, false );
+               $this->addOption( 'table', 'The table(s) to process. This option can be specified ' .
+                       'more than once (e.g. -t category -t watchlist). If not specified, all available ' .
+                       'tables will be processed. Available tables are: ' .
+                       implode( ', ', array_column( static::$tables, 0 ) ), false, true, 't', true );
+
+               $this->setBatchSize( 500 );
+       }
+
+       public function execute() {
+               $tablesToProcess = $this->getOption( 'table' );
+               foreach ( static::$tables as $tableParams ) {
+                       if ( !$tablesToProcess || in_array( $tableParams[0], $tablesToProcess ) ) {
+                               $this->cleanupTable( $tableParams );
+                       }
+               }
+
+               $this->output( 'Done! Cleaned up invalid DB keys on ' . wfWikiID() . "!\n" );
+       }
+
+       /**
+        * Prints text to STDOUT, and STDERR if STDOUT was redirected to a file.
+        * Used for progress reporting.
+        *
+        * @param string $str Text to write to both places
+        * @param string|null $channel Ignored
+        */
+       protected function output( $str, $channel = null ) {
+               // Make it easier to find progress lines in the STDOUT log
+               if ( trim( $str ) ) {
+                       fwrite( STDOUT, '*** ' );
+               }
+               fwrite( STDERR, $str );
+       }
+
+       /**
+        * Prints text to STDOUT. Used for logging output.
+        *
+        * @param string $str Text to write
+        */
+       protected function writeToReport( $str ) {
+               fwrite( STDOUT, $str );
+       }
+
+       /**
+        * Identifies, and optionally cleans up, invalid titles.
+        *
+        * @param array $tableParams A child array of self::$tables
+        */
+       protected function cleanupTable( $tableParams ) {
+               $table = $tableParams[0];
+               $prefix = $tableParams[1];
+               $idField = isset( $tableParams['idField'] ) ?
+                       $tableParams['idField'] :
+                       "{$prefix}_id";
+               $nsField = isset( $tableParams['nsField'] ) ?
+                       $tableParams['nsField'] :
+                       "{$prefix}_namespace";
+               $titleField = isset( $tableParams['titleField'] ) ?
+                       $tableParams['titleField'] :
+                       "{$prefix}_title";
+
+               $this->output( "Looking for invalid $titleField entries in $table...\n" );
+
+               // Do all the select queries on the replicas, as they are slow (they use
+               // unanchored LIKEs). Naturally this could cause problems if rows are
+               // modified after selecting and before deleting/updating, but working on
+               // the hypothesis that invalid rows will be old and in all likelihood
+               // unreferenced, we should be fine to do it like this.
+               $dbr = $this->getDB( DB_REPLICA, 'vslow' );
+
+               // Find all TitleValue-invalid titles.
+               $percent = $dbr->anyString(); // DBMS-agnostic equivalent of '%' LIKE wildcard
+               $res = $dbr->select(
+                       $table,
+                       [
+                               'id' => $idField,
+                               'ns' => $nsField,
+                               'title' => $titleField,
+                       ],
+                       // The REGEXP operator is not cross-DBMS, so we have to use lots of LIKEs
+                       [ $dbr->makeList( [
+                               $titleField . $dbr->buildLike( $percent, ' ', $percent ),
+                               $titleField . $dbr->buildLike( $percent, '\r', $percent ),
+                               $titleField . $dbr->buildLike( $percent, '\n', $percent ),
+                               $titleField . $dbr->buildLike( $percent, '\t', $percent ),
+                               $titleField . $dbr->buildLike( '_', $percent ),
+                               $titleField . $dbr->buildLike( $percent, '_' ),
+                       ], LIST_OR ) ],
+                       __METHOD__,
+                       [ 'LIMIT' => $this->mBatchSize ]
+               );
+
+               $this->output( "Number of invalid rows: " . $res->numRows() . "\n" );
+               if ( !$res->numRows() ) {
+                       $this->output( "\n" );
+                       return;
+               }
+
+               // Write a table of titles to the report file. Also keep a list of the found
+               // IDs, as we might need it later for DB updates
+               $this->writeToReport( sprintf( "%10s |  ns | dbkey\n", $idField ) );
+               $ids = [];
+               foreach ( $res as $row ) {
+                       $this->writeToReport( sprintf( "%10d | %3d | %s\n", $row->id, $row->ns, $row->title ) );
+                       $ids[] = $row->id;
+               }
+
+               // If we're doing a dry run, output the new titles we would use for the UPDATE
+               // queries (if relevant), and finish
+               if ( !$this->hasOption( 'fix' ) ) {
+                       if ( $table === 'logging' || $table === 'archive' ) {
+                               $this->writeToReport( "The following updates would be run with the --fix flag:\n" );
+                               foreach ( $res as $row ) {
+                                       $newTitle = self::makeValidTitle( $row->title );
+                                       $this->writeToReport(
+                                               "$idField={$row->id}: update '{$row->title}' to '$newTitle'\n" );
+                               }
+                       }
+
+                       if ( $table !== 'page' && $table !== 'redirect' ) {
+                               $this->output( "Run with --fix to clean up these rows\n" );
+                       }
+                       $this->output( "\n" );
+                       return;
+               }
+
+               // Fix the bad data, using different logic for the various tables
+               $dbw = $this->getDB( DB_MASTER );
+               switch ( $table ) {
+                       case 'page':
+                       case 'redirect':
+                               // This shouldn't happen on production wikis, and we already have a script
+                               // to handle 'page' rows anyway, so just notify the user and let them decide
+                               // what to do next.
+                               $this->output( <<<TEXT
+IMPORTANT: This script does not fix invalid entries in the $table table.
+Consider repairing these rows, and rows in related tables, by hand.
+You may like to run, or borrow logic from, the cleanupTitles.php script.
+
+TEXT
+                               );
+                               break;
+
+                       case 'archive':
+                       case 'logging':
+                               // Rename the title to a corrected equivalent. Any foreign key relationships
+                               // to the page_title field are already broken, so this will just make sure
+                               // users can still access the log entries/deleted revisions from the interface
+                               // using a valid page title.
+                               $this->output(
+                                       "Updating these rows, setting $titleField to the closest valid DB key...\n" );
+                               $affectedRowCount = 0;
+                               foreach ( $res as $row ) {
+                                       $newTitle = self::makeValidTitle( $row->title );
+                                       $this->writeToReport(
+                                               "$idField={$row->id}: updating '{$row->title}' to '$newTitle'\n" );
+
+                                       $dbw->update( $table,
+                                               [ $titleField => $newTitle ],
+                                               [ $idField => $row->id ],
+                                               __METHOD__ );
+                                       $affectedRowCount += $dbw->affectedRows();
+                               }
+                               wfWaitForSlaves();
+                               $this->output( "Updated $affectedRowCount rows on $table.\n" );
+
+                               break;
+
+                       case 'recentchanges':
+                       case 'watchlist':
+                       case 'category':
+                               // Since these broken titles can't exist, there's really nothing to watch,
+                               // nothing can be categorised in them, and they can't have been changed
+                               // recently, so we can just remove these rows.
+                               $this->output( "Deleting invalid $table rows...\n" );
+                               $dbw->delete( $table, [ $idField => $ids ], __METHOD__ );
+                               wfWaitForSlaves();
+                               $this->output( 'Deleted ' . $dbw->affectedRows() . " rows from $table.\n" );
+                               break;
+
+                       case 'protected_titles':
+                               // Since these broken titles can't exist, there's really nothing to protect,
+                               // so we can just remove these rows. Made more complicated by this table
+                               // not having an ID field
+                               $this->output( "Deleting invalid $table rows...\n" );
+                               $affectedRowCount = 0;
+                               foreach ( $res as $row ) {
+                                       $dbw->delete( $table,
+                                               [ $nsField => $row->ns, $titleField => $row->title ],
+                                               __METHOD__ );
+                                       $affectedRowCount += $dbw->affectedRows();
+                               }
+                               wfWaitForSlaves();
+                               $this->output( "Deleted $affectedRowCount rows from $table.\n" );
+                               break;
+
+                       case 'pagelinks':
+                       case 'templatelinks':
+                       case 'categorylinks':
+                               // Update links tables for each page where these bogus links are supposedly
+                               // located. If the invalid rows don't go away after these jobs go through,
+                               // they're probably being added by a buggy hook.
+                               $this->output( "Queueing link update jobs for the pages in $idField...\n" );
+                               foreach ( $res as $row ) {
+                                       $wp = WikiPage::newFromID( $row->id );
+                                       if ( $wp ) {
+                                               RefreshLinks::fixLinksFromArticle( $row->id );
+                                       } else {
+                                               // This link entry points to a nonexistent page, so just get rid of it
+                                               $dbw->delete( $table,
+                                                       [ $idField => $row->id, $nsField => $row->ns, $titleField => $row->title ],
+                                                       __METHOD__ );
+                                       }
+                               }
+                               wfWaitForSlaves();
+                               $this->output( "Link update jobs have been added to the job queue.\n" );
+                               break;
+               }
+
+               $this->output( "\n" );
+               return;
+       }
+
+       /**
+        * Fix possible validation issues in the given title (DB key).
+        *
+        * @param string $invalidTitle
+        * @return string
+        */
+       protected static function makeValidTitle( $invalidTitle ) {
+               return strtr( trim( $invalidTitle, '_' ),
+                       [ ' ' => '_', "\r" => '', "\n" => '', "\t" => '_' ] );
+       }
+}
+
+$maintClass = 'CleanupInvalidDbKeys';
+require_once RUN_MAINTENANCE_IF_MAIN;
index d98e5cd..ee8bdd6 100644 (file)
@@ -30,6 +30,9 @@
  * @ingroup Maintenance
  */
 
+use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\Logger\ConsoleSpi;
+
 $optionsWithArgs = [ 'd' ];
 
 require_once __DIR__ . "/commandLine.inc";
@@ -37,7 +40,7 @@ require_once __DIR__ . "/commandLine.inc";
 if ( isset( $options['d'] ) ) {
        $d = $options['d'];
        if ( $d > 0 ) {
-               $wgDebugLogFile = '/dev/stdout';
+               LoggerFactory::registerProvider( new ConsoleSpi );
        }
        if ( $d > 1 ) {
                $lb = wfGetLB();
index 47ef804..5df5b54 100644 (file)
@@ -34,6 +34,9 @@
  * @author Gergő Tisza <tgr.huwiki@gmail.com>
  */
 
+use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\Logger\ConsoleSpi;
+
 require_once __DIR__ . '/Maintenance.php';
 
 /**
@@ -46,8 +49,8 @@ class MediaWikiShell extends Maintenance {
                parent::__construct();
                $this->addOption( 'd',
                        'For back compatibility with eval.php. ' .
-                       '0 send debug to stdout. ' .
-                       'With 1 additionally initialize database with debugging ',
+                       '1 send debug to stderr. ' .
+                       'With 2 additionally initialize database with debugging ',
                        false, true
                );
        }
@@ -77,11 +80,9 @@ class MediaWikiShell extends Maintenance {
         * For back compatibility with eval.php
         */
        protected function setupLegacy() {
-               global $wgDebugLogFile;
-
                $d = intval( $this->getOption( 'd' ) );
                if ( $d > 0 ) {
-                       $wgDebugLogFile = 'php://stdout';
+                       LoggerFactory::registerProvider( new ConsoleSpi );
                }
                if ( $d > 1 ) {
                        # Set DBO_DEBUG (equivalent of $wgDebugDumpSql)
index 8f59690..d4147f4 100644 (file)
@@ -311,9 +311,21 @@ CREATE TABLE /*_*/page (
   page_lang varbinary(35) DEFAULT NULL
 ) /*$wgDBTableOptions*/;
 
+-- The title index. Care must be taken to always specify a namespace when
+-- by title, so that the index is used. Even listing all known namespaces
+-- with IN() is better than omitting page_namespace from the WHERE clause.
 CREATE UNIQUE INDEX /*i*/name_title ON /*_*/page (page_namespace,page_title);
+
+-- The index for Special:Random
 CREATE INDEX /*i*/page_random ON /*_*/page (page_random);
+
+-- Questionable utility, used by ProofreadPage, possibly DynamicPageList.
+-- ApiQueryAllPages unconditionally filters on namespace and so hopefully does
+-- not use it.
 CREATE INDEX /*i*/page_len ON /*_*/page (page_len);
+
+-- The index for Special:Shortpages and Special:Longpages. Also SiteStats::articles()
+-- in 'comma' counting mode, MessageCache::loadFromDB().
 CREATE INDEX /*i*/page_redirect_namespace_len ON /*_*/page (page_is_redirect, page_namespace, page_len);
 
 --
@@ -375,11 +387,27 @@ CREATE TABLE /*_*/revision (
 ) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
 -- In case tables are created as MyISAM, use row hints for MySQL <5.0 to avoid 4GB limit
 
+-- The index is proposed for removal, do not use it in new code: T163532.
+-- Used for ordering revisions within a page by rev_id, which is usually
+-- incorrect, since rev_timestamp is normally the correct order. It can also
+-- be used by dumpBackup.php, if a page and rev_id range is specified.
 CREATE INDEX /*i*/rev_page_id ON /*_*/revision (rev_page, rev_id);
+
+-- Used by ApiQueryAllRevisions
 CREATE INDEX /*i*/rev_timestamp ON /*_*/revision (rev_timestamp);
+
+-- History index
 CREATE INDEX /*i*/page_timestamp ON /*_*/revision (rev_page,rev_timestamp);
+
+-- Logged-in user contributions index
 CREATE INDEX /*i*/user_timestamp ON /*_*/revision (rev_user,rev_timestamp);
+
+-- Anonymous user countributions index
 CREATE INDEX /*i*/usertext_timestamp ON /*_*/revision (rev_user_text,rev_timestamp);
+
+-- Credits index. This is scanned in order to compile credits lists for pages,
+-- in ApiQueryContributors. Also for ApiQueryRevisions if rvuser is specified
+-- and is a logged-in user.
 CREATE INDEX /*i*/page_user_timestamp ON /*_*/revision (rev_page,rev_user,rev_timestamp);
 
 --
@@ -499,8 +527,14 @@ CREATE TABLE /*_*/archive (
   ar_content_format varbinary(64) DEFAULT NULL
 ) /*$wgDBTableOptions*/;
 
+-- Index for Special:Undelete to page through deleted revisions
 CREATE INDEX /*i*/name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp);
+
+-- Index for Special:DeletedContributions
 CREATE INDEX /*i*/ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp);
+
+-- Index for linking archive rows with tables that normally link with revision
+-- rows, such as change_tag.
 CREATE INDEX /*i*/ar_revid ON /*_*/archive (ar_rev_id);
 
 
@@ -521,8 +555,13 @@ CREATE TABLE /*_*/pagelinks (
   pl_title varchar(255) binary NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
+-- Forward index, for page edit, save
 CREATE UNIQUE INDEX /*i*/pl_from ON /*_*/pagelinks (pl_from,pl_namespace,pl_title);
+
+-- Reverse index, for Special:Whatlinkshere
 CREATE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from);
+
+-- Index for Special:Whatlinkshere with namespace filter
 CREATE INDEX /*i*/pl_backlinks_namespace ON /*_*/pagelinks (pl_from_namespace,pl_namespace,pl_title,pl_from);
 
 
@@ -543,8 +582,13 @@ CREATE TABLE /*_*/templatelinks (
   tl_title varchar(255) binary NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
+-- Forward index, for page edit, save
 CREATE UNIQUE INDEX /*i*/tl_from ON /*_*/templatelinks (tl_from,tl_namespace,tl_title);
+
+-- Reverse index, for Special:Whatlinkshere
 CREATE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from);
+
+-- Index for Special:Whatlinkshere with namespace filter
 CREATE INDEX /*i*/tl_backlinks_namespace ON /*_*/templatelinks (tl_from_namespace,tl_namespace,tl_title,tl_from);
 
 
@@ -565,8 +609,13 @@ CREATE TABLE /*_*/imagelinks (
   il_to varchar(255) binary NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
+-- Forward index, for cache invalidation on file update, etc.
 CREATE UNIQUE INDEX /*i*/il_from ON /*_*/imagelinks (il_from,il_to);
+
+-- Reverse index, for Special:Whatlinkshere and file description page local usage
 CREATE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from);
+
+-- Index for Special:Whatlinkshere with namespace filter
 CREATE INDEX /*i*/il_backlinks_namespace ON /*_*/imagelinks (il_from_namespace,il_to,il_from);
 
 
@@ -690,9 +739,16 @@ CREATE TABLE /*_*/externallinks (
   el_index_60 varbinary(60) NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
+-- Forward index, for page edit, save
 CREATE INDEX /*i*/el_from ON /*_*/externallinks (el_from, el_to(40));
+
+-- Index for Special:LinkSearch exact search
 CREATE INDEX /*i*/el_to ON /*_*/externallinks (el_to(60), el_from);
+
+-- For Special:LinkSearch wildcard search
 CREATE INDEX /*i*/el_index ON /*_*/externallinks (el_index(60));
+
+-- For Special:LinkSearch wildcard search with efficient paging by el_id
 CREATE INDEX /*i*/el_index_60 ON /*_*/externallinks (el_index_60, el_id);
 CREATE INDEX /*i*/el_from_index_60 ON /*_*/externallinks (el_from, el_index_60, el_id);
 
@@ -710,7 +766,10 @@ CREATE TABLE /*_*/langlinks (
   ll_title varchar(255) binary NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
+-- Forward index, for page edit, save, ApiQueryLanglinks
 CREATE UNIQUE INDEX /*i*/ll_from ON /*_*/langlinks (ll_from, ll_lang);
+
+-- Index for ApiQueryLangbacklinks
 CREATE INDEX /*i*/ll_lang ON /*_*/langlinks (ll_lang, ll_title);
 
 
@@ -728,8 +787,13 @@ CREATE TABLE /*_*/iwlinks (
   iwl_title varchar(255) binary NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
+-- Forward index, for page edit, save, ApiQueryIWLinks
 CREATE UNIQUE INDEX /*i*/iwl_from ON /*_*/iwlinks (iwl_from, iwl_prefix, iwl_title);
+
+-- Index for ApiQueryIWBacklinks
 CREATE INDEX /*i*/iwl_prefix_title_from ON /*_*/iwlinks (iwl_prefix, iwl_title, iwl_from);
+
+-- Index for ApiQueryIWLinks
 CREATE INDEX /*i*/iwl_prefix_from_title ON /*_*/iwlinks (iwl_prefix, iwl_from, iwl_title);
 
 
@@ -841,10 +905,19 @@ CREATE TABLE /*_*/ipblocks (
 -- Any new options which prevent collisions should be included
 CREATE UNIQUE INDEX /*i*/ipb_address ON /*_*/ipblocks (ipb_address(255), ipb_user, ipb_auto, ipb_anon_only);
 
+-- For querying whether a logged-in user is blocked
 CREATE INDEX /*i*/ipb_user ON /*_*/ipblocks (ipb_user);
+
+-- For querying whether an IP address is in any range
 CREATE INDEX /*i*/ipb_range ON /*_*/ipblocks (ipb_range_start(8), ipb_range_end(8));
+
+-- Index for Special:BlockList
 CREATE INDEX /*i*/ipb_timestamp ON /*_*/ipblocks (ipb_timestamp);
+
+-- Index for table pruning
 CREATE INDEX /*i*/ipb_expiry ON /*_*/ipblocks (ipb_expiry);
+
+-- Index for removing autoblocks when a parent block is removed
 CREATE INDEX /*i*/ipb_parent_block_id ON /*_*/ipblocks (ipb_parent_block_id);
 
 
@@ -1144,13 +1217,29 @@ CREATE TABLE /*_*/recentchanges (
   rc_params blob NULL
 ) /*$wgDBTableOptions*/;
 
+-- Special:Recentchanges
 CREATE INDEX /*i*/rc_timestamp ON /*_*/recentchanges (rc_timestamp);
+
+-- Special:Watchlist
 CREATE INDEX /*i*/rc_namespace_title ON /*_*/recentchanges (rc_namespace, rc_title);
+
+-- Special:Recentchangeslinked when finding changes in pages linked from a page
 CREATE INDEX /*i*/rc_cur_id ON /*_*/recentchanges (rc_cur_id);
+
+-- Special:Newpages
 CREATE INDEX /*i*/new_name_timestamp ON /*_*/recentchanges (rc_new,rc_namespace,rc_timestamp);
+
+-- Blank unless $wgPutIPinRC=true (false at WMF), possibly used by extensions,
+-- but mostly replaced by CheckUser.
 CREATE INDEX /*i*/rc_ip ON /*_*/recentchanges (rc_ip);
+
+-- Probably intended for Special:NewPages namespace filter
 CREATE INDEX /*i*/rc_ns_usertext ON /*_*/recentchanges (rc_namespace, rc_user_text);
+
+-- SiteStats active user count, Special:ActiveUsers, Special:NewPages user filter
 CREATE INDEX /*i*/rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp);
+
+-- ApiQueryRecentChanges (T140108)
 CREATE INDEX /*i*/rc_name_type_patrolled_timestamp ON /*_*/recentchanges (rc_namespace, rc_type, rc_patrolled, rc_timestamp);
 
 
@@ -1172,8 +1261,13 @@ CREATE TABLE /*_*/watchlist (
 
 ) /*$wgDBTableOptions*/;
 
+-- Special:Watchlist
 CREATE UNIQUE INDEX /*i*/wl_user ON /*_*/watchlist (wl_user, wl_namespace, wl_title);
+
+-- Special:Movepage (WatchedItemStore::duplicateEntry)
 CREATE INDEX /*i*/namespace_title ON /*_*/watchlist (wl_namespace, wl_title);
+
+-- ApiQueryWatchlistRaw changed filter
 CREATE INDEX /*i*/wl_user_notificationtimestamp ON /*_*/watchlist (wl_user, wl_notificationtimestamp);
 
 
@@ -1307,14 +1401,32 @@ CREATE TABLE /*_*/logging (
   log_deleted tinyint unsigned NOT NULL default 0
 ) /*$wgDBTableOptions*/;
 
+-- Special:Log type filter
 CREATE INDEX /*i*/type_time ON /*_*/logging (log_type, log_timestamp);
+
+-- Special:Log performer filter
 CREATE INDEX /*i*/user_time ON /*_*/logging (log_user, log_timestamp);
+
+-- Special:Log title filter, log extract
 CREATE INDEX /*i*/page_time ON /*_*/logging (log_namespace, log_title, log_timestamp);
+
+-- Special:Log unfiltered
 CREATE INDEX /*i*/times ON /*_*/logging (log_timestamp);
+
+-- Special:Log filter by performer and type
 CREATE INDEX /*i*/log_user_type_time ON /*_*/logging (log_user, log_type, log_timestamp);
+
+-- Apparently just used for a few maintenance pages (findMissingFiles.php, Flow).
+-- Could be removed?
 CREATE INDEX /*i*/log_page_id_time ON /*_*/logging (log_page,log_timestamp);
+
+-- Special:Log action filter
 CREATE INDEX /*i*/type_action ON /*_*/logging (log_type, log_action, log_timestamp);
+
+-- Special:Log filter by type and anonymous performer
 CREATE INDEX /*i*/log_user_text_type_time ON /*_*/logging (log_user_text, log_type, log_timestamp);
+
+-- Special:Log filter by anonymous performer
 CREATE INDEX /*i*/log_user_text_time ON /*_*/logging (log_user_text, log_timestamp);
 
 
index 71a5f61..eabe42f 100644 (file)
@@ -1351,7 +1351,6 @@ return [
                'dependencies' => [
                        'mediawiki.api',
                        'mediawiki.api.user',
-                       'mediawiki.cookie',
                        'mediawiki.storage',
                        'user.options',
                        'user.tokens',
@@ -1491,14 +1490,12 @@ return [
                'targets' => [ 'desktop', 'mobile' ]
        ],
        'mediawiki.action.view.postEdit' => [
-               'templates' => [
-                       'postEdit.html' => 'resources/src/mediawiki.action/templates/postEdit.html',
-               ],
                'scripts' => 'resources/src/mediawiki.action/mediawiki.action.view.postEdit.js',
-               'styles' => 'resources/src/mediawiki.action/mediawiki.action.view.postEdit.css',
+               'styles' => 'resources/src/mediawiki.action/mediawiki.action.view.postEdit.less',
                'dependencies' => [
                        'mediawiki.cookie',
-                       'mediawiki.jqueryMsg'
+                       'mediawiki.jqueryMsg',
+                       'mediawiki.notification'
                ],
                'messages' => [
                        'postedit-confirmation-created',
@@ -1742,6 +1739,7 @@ return [
        'mediawiki.rcfilters.filters.dm' => [
                'scripts' => [
                        'resources/src/mediawiki.rcfilters/mw.rcfilters.js',
+                       'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js',
                        'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js',
                        'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js',
                        'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js',
@@ -1757,11 +1755,13 @@ return [
                'scripts' => [
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CheckboxInputWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js',
+                       'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ItemMenuOptionWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuOptionWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuSectionOptionWidget.js',
+                       'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.TagItemWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagItemWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuHeaderWidget.js',
-                       'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.js',
+                       'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FloatingMenuSelectWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js',
@@ -1776,11 +1776,12 @@ return [
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.Overlay.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagMultiselectWidget.less',
+                       'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ItemMenuOptionWidget.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuOptionWidget.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuSectionOptionWidget.less',
-                       'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagItemWidget.less',
+                       'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.TagItemWidget.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuHeaderWidget.less',
-                       'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.less',
+                       'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FloatingMenuSelectWidget.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterWrapperWidget.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ChangesListWrapperWidget.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.HighlightColorPickerWidget.less',
@@ -1896,7 +1897,6 @@ return [
        ],
        'mediawiki.special.block' => [
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.block.js',
-               'styles' => 'resources/src/mediawiki.special/mediawiki.special.block.css',
                'dependencies' => [
                        'mediawiki.util',
                        'mediawiki.htmlform',
@@ -2383,6 +2383,18 @@ return [
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
+       'mediawiki.widgets.SelectWithInputWidget' => [
+               'scripts' => 'resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.js',
+               'dependencies' => [
+                       'mediawiki.widgets.SelectWithInputWidget.styles',
+                       'oojs-ui-widgets',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+       'mediawiki.widgets.SelectWithInputWidget.styles' => [
+               'styles' => 'resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.base.css',
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
        'mediawiki.widgets.MediaSearch' => [
                'scripts' => [
                        'resources/src/mediawiki.widgets/MediaSearch/mw.widgets.APIResultsProvider.js',
index 9d3b926..87b7c2b 100644 (file)
@@ -4,11 +4,12 @@
                        "Milicevic01",
                        "Nikola Smolenski",
                        "Милан Јелисавчић",
-                       "Zoranzoki21"
+                       "Zoranzoki21",
+                       "Obsuser"
                ]
        },
-       "ooui-outline-control-move-down": "Премести ставку на доле",
-       "ooui-outline-control-move-up": "Премести ставку на горе",
+       "ooui-outline-control-move-down": "Премести ставку надоле",
+       "ooui-outline-control-move-up": "Премести ставку нагоре",
        "ooui-outline-control-remove": "Уклони ставку",
        "ooui-toolbar-more": "Више",
        "ooui-toolgroup-expand": "Више",
index ef48f5b..bb0f603 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:49Z
+ * Date: 2017-04-26T01:05:10Z
  */
 ( function ( OO ) {
 
index 29b0874..cecff46 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:54Z
+ * Date: 2017-04-26T01:05:15Z
  */
 .oo-ui-element-hidden {
   display: none !important;
@@ -1332,6 +1332,9 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
   margin-right: 0;
 }
 .oo-ui-progressBarWidget {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   max-width: 50em;
   background-color: #fff;
   border: 1px solid #ccc;
index a994e00..393ff59 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:54Z
+ * Date: 2017-04-26T01:05:15Z
  */
 .oo-ui-element-hidden {
   display: none !important;
   opacity: 0.51;
 }
 .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  min-height: 2.5em;
   border-radius: 2px;
-  padding: 0.625em 0.9375em 0.546875em;
+  padding-left: 0.9375em;
+  padding-right: 0.9375em;
 }
 .oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button {
+  padding-top: 2.34375em;
+  padding-bottom: 0;
   padding-left: 2.03125em;
 }
 .oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
   left: 0.46875em;
 }
 .oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
+  padding-top: 2.34375em;
   padding-right: 2.03125em;
+  padding-bottom: 0;
 }
 .oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
   right: 1.015625em;
 .oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-iconElement > .oo-ui-buttonElement-button {
   padding-right: 2.5em;
 }
+.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button {
+  padding-top: 0.625em;
+  padding-bottom: 0.546875em;
+}
 .oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
   background-color: #c8ccd1;
   color: #fff;
   outline: 0;
 }
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
-  color: #d33;
+  color: #d73333;
 }
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover {
   background-color: #fff;
@@ -1536,7 +1544,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
 .oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
   opacity: 0.51;
 }
-.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label {
+.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label {
   color: #72777d;
   text-shadow: 0 1px 1px #fff;
 }
@@ -1546,6 +1554,8 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
 }
 .oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
   left: 0.46875em;
+}
+.oo-ui-textInputWidget.oo-ui-iconElement textarea + .oo-ui-iconElement-icon {
   max-height: 2.5em;
 }
 .oo-ui-textInputWidget.oo-ui-indicatorElement input,
@@ -1836,6 +1846,9 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
   margin-right: 0;
 }
 .oo-ui-progressBarWidget {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   max-width: 50em;
   background-color: #fff;
   border: 1px solid #a2a9b1;
index c00d9a7..cab24e4 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:49Z
+ * Date: 2017-04-26T01:05:10Z
  */
 ( function ( OO ) {
 
@@ -584,6 +584,7 @@ OO.ui.Element = function OoUiElement( config ) {
 
        // Properties
        this.$ = $;
+       this.elementId = null;
        this.visible = true;
        this.data = config.data;
        this.$element = config.$element ||
@@ -595,7 +596,7 @@ OO.ui.Element = function OoUiElement( config ) {
                this.$element.addClass( config.classes.join( ' ' ) );
        }
        if ( config.id ) {
-               this.$element.attr( 'id', config.id );
+               this.setElementId( config.id );
        }
        if ( config.text ) {
                this.$element.text( config.text );
@@ -1375,6 +1376,31 @@ OO.ui.Element.prototype.setData = function ( data ) {
        return this;
 };
 
+/**
+ * Set the element has an 'id' attribute.
+ *
+ * @param {string} id
+ * @chainable
+ */
+OO.ui.Element.prototype.setElementId = function ( id ) {
+       this.elementId = id;
+       this.$element.attr( 'id', id );
+       return this;
+};
+
+/**
+ * Ensure that the element has an 'id' attribute, setting it to an unique value if it's missing,
+ * and return its value.
+ *
+ * @return {string}
+ */
+OO.ui.Element.prototype.getElementId = function () {
+       if ( this.elementId === null ) {
+               this.setElementId( OO.ui.generateElementId() );
+       }
+       return this.elementId;
+};
+
 /**
  * Check if element supports one or more methods.
  *
@@ -5320,6 +5346,7 @@ OO.ui.mixin.PopupElement.prototype.getPopup = function () {
  * @cfg {jQuery} [$overlay] Render the popup into a separate layer. This configuration is useful in cases where
  *  the expanded popup is larger than its containing `<div>`. The specified overlay layer is usually on top of the
  *  containing `<div>` and has a larger area. By default, the popup uses relative positioning.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  */
 OO.ui.PopupButtonWidget = function OoUiPopupButtonWidget( config ) {
        // Parent constructor
@@ -5764,6 +5791,7 @@ OO.ui.SelectWidget = function OoUiSelectWidget( config ) {
        this.$element
                .addClass( 'oo-ui-selectWidget oo-ui-selectWidget-depressed' )
                .attr( 'role', 'listbox' );
+       this.setFocusOwner( this.$element );
        if ( Array.isArray( config.items ) ) {
                this.addItems( config.items );
        }
@@ -5856,7 +5884,7 @@ OO.ui.SelectWidget.prototype.onFocus = function ( event ) {
        }
 
        if ( event.target !== this.$element[ 0 ] ) {
-               this.$element.focus();
+               this.$focusOwner.focus();
        }
 };
 
@@ -6270,6 +6298,11 @@ OO.ui.SelectWidget.prototype.highlightItem = function ( item ) {
                }
        }
        if ( changed ) {
+               if ( item ) {
+                       this.$focusOwner.attr( 'aria-activedescendant', item.getElementId() );
+               } else {
+                       this.$focusOwner.removeAttr( 'aria-activedescendant' );
+               }
                this.emit( 'highlight', item );
        }
 
@@ -6368,6 +6401,13 @@ OO.ui.SelectWidget.prototype.selectItem = function ( item ) {
                }
        }
        if ( changed ) {
+               if ( item && !item.constructor.static.highlightable ) {
+                       if ( item ) {
+                               this.$focusOwner.attr( 'aria-activedescendant', item.getElementId() );
+                       } else {
+                               this.$focusOwner.removeAttr( 'aria-activedescendant' );
+                       }
+               }
                this.emit( 'select', item );
        }
 
@@ -6544,6 +6584,18 @@ OO.ui.SelectWidget.prototype.clearItems = function () {
        return this;
 };
 
+/**
+ * Set the DOM element which has focus while the user is interacting with this SelectWidget.
+ *
+ * Currently this is just used to set `aria-activedescendant` on it.
+ *
+ * @protected
+ * @param {jQuery} $focusOwner
+ */
+OO.ui.SelectWidget.prototype.setFocusOwner = function ( $focusOwner ) {
+       this.$focusOwner = $focusOwner;
+};
+
 /**
  * DecoratedOptionWidgets are {@link OO.ui.OptionWidget options} that can be configured
  * with an {@link OO.ui.mixin.IconElement icon} and/or {@link OO.ui.mixin.IndicatorElement indicator}.
@@ -6618,9 +6670,7 @@ OO.ui.MenuOptionWidget = function OoUiMenuOptionWidget( config ) {
        OO.ui.MenuOptionWidget.parent.call( this, config );
 
        // Initialization
-       this.$element
-               .attr( 'role', 'menuitem' )
-               .addClass( 'oo-ui-menuOptionWidget' );
+       this.$element.addClass( 'oo-ui-menuOptionWidget' );
 };
 
 /* Setup */
@@ -6765,9 +6815,10 @@ OO.ui.MenuSelectWidget = function OoUiMenuSelectWidget( config ) {
        this.highlightOnFilter = !!config.highlightOnFilter;
 
        // Initialization
-       this.$element
-               .addClass( 'oo-ui-menuSelectWidget' )
-               .attr( 'role', 'menu' );
+       this.$element.addClass( 'oo-ui-menuSelectWidget' );
+       if ( config.widget ) {
+               this.setFocusOwner( config.widget.$tabIndexed );
+       }
 
        // Initially hidden - using #toggle may cause errors if subclasses override toggle with methods
        // that reference properties not initialized at that time of parent class construction
@@ -7023,6 +7074,7 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
                        this.toggleClipping( true );
 
                        if ( this.getSelectedItem() ) {
+                               this.$focusOwner.attr( 'aria-activedescendant', this.getSelectedItem().getElementId() );
                                this.getSelectedItem().scrollElementIntoView( { duration: 0 } );
                        }
 
@@ -7031,6 +7083,7 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
                                this.getElementDocument().addEventListener( 'mousedown', this.onDocumentMouseDownHandler, true );
                        }
                } else {
+                       this.$focusOwner.removeAttr( 'aria-activedescendant' );
                        this.unbindKeyDownListener();
                        this.unbindKeyPressListener();
                        this.getElementDocument().removeEventListener( 'mousedown', this.onDocumentMouseDownHandler, true );
@@ -7095,6 +7148,7 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
  * @cfg {jQuery} [$overlay] Render the menu into a separate layer. This configuration is useful in cases where
  *  the expanded menu is larger than its containing `<div>`. The specified overlay layer is usually on top of the
  *  containing `<div>` and has a larger area. By default, the menu uses relative positioning.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  */
 OO.ui.DropdownWidget = function OoUiDropdownWidget( config ) {
        // Configuration initialization
@@ -7136,6 +7190,11 @@ OO.ui.DropdownWidget = function OoUiDropdownWidget( config ) {
        // Initialization
        this.$handle
                .addClass( 'oo-ui-dropdownWidget-handle' )
+               .attr( {
+                       role: 'combobox',
+                       'aria-owns': this.menu.getElementId(),
+                       'aria-autocomplete': 'list'
+               } )
                .append( this.$icon, this.$label, this.$indicator );
        this.$element
                .addClass( 'oo-ui-dropdownWidget' )
@@ -10291,6 +10350,7 @@ OO.ui.SearchInputWidget.prototype.setReadOnly = function ( state ) {
  * @cfg {jQuery} [$overlay] Render the menu into a separate layer. This configuration is useful in cases where
  *  the expanded menu is larger than its containing `<div>`. The specified overlay layer is usually on top of the
  *  containing `<div>` and has a larger area. By default, the menu uses relative positioning.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  */
 OO.ui.ComboBoxInputWidget = function OoUiComboBoxInputWidget( config ) {
        // Configuration initialization
@@ -10343,6 +10403,7 @@ OO.ui.ComboBoxInputWidget = function OoUiComboBoxInputWidget( config ) {
        // Initialization
        this.$input.attr( {
                role: 'combobox',
+               'aria-owns': this.menu.getElementId(),
                'aria-autocomplete': 'list'
        } );
        // Do not override options set via config.menu.items
@@ -10521,6 +10582,7 @@ OO.ui.ComboBoxInputWidget.prototype.setOptions = function ( options ) {
  *  in the upper-right corner of the rendered field; clicking it will display the text in a popup.
  *  For important messages, you are advised to use `notices`, as they are always shown.
  * @cfg {jQuery} [$overlay] Passed to OO.ui.PopupButtonWidget for help popup, if `help` is given.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  *
  * @throws {Error} An error is thrown if no widget is specified
  */
@@ -10885,6 +10947,7 @@ OO.inheritClass( OO.ui.ActionFieldLayout, OO.ui.FieldLayout );
  *  in the upper-right corner of the rendered field; clicking it will display the text in a popup.
  *  For important messages, you are advised to use `notices`, as they are always shown.
  * @cfg {jQuery} [$overlay] Passed to OO.ui.PopupButtonWidget for help popup, if `help` is given.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  */
 OO.ui.FieldsetLayout = function OoUiFieldsetLayout( config ) {
        // Configuration initialization
index 60c67b6..726248c 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:49Z
+ * Date: 2017-04-26T01:05:10Z
  */
 ( function ( OO ) {
 
index 53c5bf3..0bc7c94 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:54Z
+ * Date: 2017-04-26T01:05:15Z
  */
 .oo-ui-popupTool .oo-ui-popupWidget-popup,
 .oo-ui-popupTool .oo-ui-popupWidget-anchor {
index a82a8b2..f046fa5 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:54Z
+ * Date: 2017-04-26T01:05:15Z
  */
 .oo-ui-tool.oo-ui-widget-enabled {
   -webkit-transition: background-color 100ms;
index 9ef478b..97c99ef 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:49Z
+ * Date: 2017-04-26T01:05:10Z
  */
 ( function ( OO ) {
 
index dc149fb..77b6b81 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:54Z
+ * Date: 2017-04-26T01:05:15Z
  */
 .oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ).oo-ui-widget {
   cursor: move;
 }
 .oo-ui-tabOptionWidget {
   display: inline-block;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   vertical-align: bottom;
-  padding: 0.5em 1em;
   margin: 0.5em 0 0 0.75em;
-  border: 1px solid transparent;
-  border-bottom: 0;
+  border-color: transparent;
+  border-style: solid;
+  border-width: 1px 1px 0 1px;
   border-top-left-radius: 0.5em;
   border-top-right-radius: 0.5em;
+  padding: 0.5em 1em;
 }
-.oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-  padding-right: 1.5em;
-}
-.oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  opacity: 0.5;
-}
-.oo-ui-selectWidget-pressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-pressed {
-  background-color: transparent;
+.oo-ui-tabOptionWidget.oo-ui-optionWidget-selected {
+  background-color: #fff;
+  border-color: #ddd;
 }
 .oo-ui-tabOptionWidget.oo-ui-widget-enabled:hover {
   background-color: rgba(255, 255, 255, 0.2);
   background-color: #fff;
   border-color: #ddd;
 }
-.oo-ui-selectWidget-pressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-selectWidget-depressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-tabOptionWidget.oo-ui-optionWidget-selected:hover {
+.oo-ui-tabOptionWidget.oo-ui-widget-enabled.oo-ui-optionWidget-selected:hover {
   background-color: #fff;
-  border-color: #ddd;
 }
 .oo-ui-tagMultiselectWidget {
   display: inline-block;
   max-width: 50em;
 }
 .oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget,
-.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget {
+.oo-ui-numberInputWidget-buttoned .oo-ui-inputWidget-input {
   display: table-cell;
   height: 100%;
 }
-.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget input {
-  height: 100%;
-}
 .oo-ui-numberInputWidget-field {
   display: table;
   table-layout: fixed;
   border-bottom-left-radius: 0;
   border-left-width: 0;
 }
-.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget input {
+.oo-ui-numberInputWidget-buttoned .oo-ui-inputWidget-input {
   border-radius: 0;
 }
index 9b06573..d83f97f 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:54Z
+ * Date: 2017-04-26T01:05:15Z
  */
 .oo-ui-draggableElement {
   padding: 1.0546875em 0.9375em 0.9375em;
 }
 .oo-ui-tabOptionWidget {
   display: inline-block;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   vertical-align: bottom;
   color: #222;
-  margin: 0.5em 0 0 0.75em;
-  border: 1px solid transparent;
-  border-bottom: 0;
+  margin: 0.46875em 0 0 0.46875em;
+  border-color: transparent;
+  border-style: solid;
+  border-width: 1px 1px 0 1px;
   border-top-left-radius: 2px;
   border-top-right-radius: 2px;
-  padding: 0.35em 1em;
+  padding: 0.625em 1.015625em 0.546875em;
   font-weight: bold;
+  line-height: 1;
   -webkit-transition: background-color 100ms, color 100ms;
   -moz-transition: background-color 100ms, color 100ms;
   transition: background-color 100ms, color 100ms;
 }
+.oo-ui-tabOptionWidget.oo-ui-optionWidget-selected {
+  background-color: #fff;
+  color: #000;
+}
+.oo-ui-tabOptionWidget .oo-ui-labelElement-label {
+  line-height: 1.172em;
+}
 .oo-ui-tabOptionWidget.oo-ui-widget-enabled:hover {
   background-color: rgba(255, 255, 255, 0.3);
 }
 .oo-ui-tabOptionWidget.oo-ui-widget-enabled:active {
   background-color: rgba(255, 255, 255, 0.8);
 }
-.oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-  padding-right: 1.5em;
-}
-.oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  opacity: 0.5;
-}
-.oo-ui-selectWidget-pressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-selectWidget-depressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-tabOptionWidget.oo-ui-optionWidget-selected:hover {
+.oo-ui-tabOptionWidget.oo-ui-widget-enabled.oo-ui-optionWidget-selected:hover {
   background-color: #fff;
-  color: #000;
 }
 .oo-ui-tagMultiselectWidget {
   display: inline-block;
   border-bottom-left-radius: 0;
   border-bottom-right-radius: 0;
 }
-.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined .oo-ui-tagMultiselectWidget-handle .oo-ui-tagItemWidget.oo-ui-widget-enabled {
+.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined .oo-ui-tagItemWidget.oo-ui-widget-enabled {
   background-color: #fff;
 }
 .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined .oo-ui-inputWidget-input {
   overflow: hidden;
   cursor: text;
 }
-.oo-ui-tagItemWidget.oo-ui-flaggedElement-invalid {
-  border-color: #d33;
-}
-.oo-ui-tagItemWidget.oo-ui-flaggedElement-invalid:hover {
-  border-color: #d33;
-}
-.oo-ui-tagItemWidget.oo-ui-flaggedElement-invalid:focus {
-  border-color: #d33;
-  box-shadow: inset 0 0 0 1px #d33;
-}
 .oo-ui-tagItemWidget.oo-ui-widget-enabled {
   background-color: #f8f9fa;
   color: #222;
   box-shadow: inset 0 0 0 1px #36c;
   outline: 0;
 }
+.oo-ui-tagItemWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid {
+  border-color: #d33;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid:hover {
+  border-color: #d33;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid:focus {
+  border-color: #d33;
+  box-shadow: inset 0 0 0 1px #d33;
+}
 .oo-ui-tagItemWidget.oo-ui-widget-enabled > .oo-ui-buttonElement {
   display: block;
   position: absolute;
   overflow-y: auto;
 }
 .oo-ui-searchWidget-query {
-  height: 4em;
-  padding: 0 1em;
-  border-bottom: 1px solid #a2a9b1;
+  height: 4.375em;
+  padding: 0 1.25em;
+  border-bottom: 1px solid #c8ccd1;
+  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
 }
 .oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  margin: 0.75em 0;
+  margin: 0.9375em 0;
 }
 .oo-ui-searchWidget-results {
-  top: 4em;
-  padding: 1em;
+  top: 4.375em;
+  padding: 1.25em;
   line-height: 0;
 }
 .oo-ui-numberInputWidget {
   max-width: 50em;
 }
 .oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget,
-.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget {
+.oo-ui-numberInputWidget-buttoned .oo-ui-inputWidget-input {
   display: table-cell;
   height: 100%;
 }
-.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget input {
-  height: 100%;
-}
 .oo-ui-numberInputWidget-field {
   display: table;
   table-layout: fixed;
   padding-left: 0;
   padding-right: 0;
 }
-.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget input {
+.oo-ui-numberInputWidget-buttoned .oo-ui-inputWidget-input {
   border-radius: 0;
 }
 .oo-ui-numberInputWidget-minusButton.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
index a2e6e34..58ff9e5 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:49Z
+ * Date: 2017-04-26T01:05:10Z
  */
 ( function ( OO ) {
 
@@ -628,7 +628,8 @@ OO.ui.mixin.RequestManager.prototype.getRequestCacheDataFromResponse = null;
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$overlay] Overlay for the lookup menu; defaults to relative positioning
+ * @cfg {jQuery} [$overlay] Overlay for the lookup menu; defaults to relative positioning.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  * @cfg {jQuery} [$container=this.$element] The container element. The lookup menu is rendered beneath the specified element.
  * @cfg {boolean} [allowSuggestionsWhenEmpty=false] Request and display a lookup menu when the text input is empty.
  *  By default, the lookup menu is not generated and displayed until the user begins to type.
@@ -669,6 +670,11 @@ OO.ui.mixin.LookupElement = function OoUiMixinLookupElement( config ) {
        } );
 
        // Initialization
+       this.$input.attr( {
+               role: 'combobox',
+               'aria-owns': this.lookupMenu.getElementId(),
+               'aria-autocomplete': 'list'
+       } );
        this.$element.addClass( 'oo-ui-lookupElement' );
        this.lookupMenu.$element.addClass( 'oo-ui-lookupElement-menu' );
        this.$overlay.append( this.lookupMenu.$element );
@@ -3701,6 +3707,7 @@ OO.ui.CapsuleItemWidget.prototype.focus = function () {
  *  its containing `<div>`. The specified overlay layer is usually on top of
  *  the containing `<div>` and has a larger area. By default, the menu uses
  *  relative positioning.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  */
 OO.ui.CapsuleMultiselectWidget = function OoUiCapsuleMultiselectWidget( config ) {
        var $tabFocus;
@@ -3795,6 +3802,7 @@ OO.ui.CapsuleMultiselectWidget = function OoUiCapsuleMultiselectWidget( config )
                this.$input.prop( 'disabled', this.isDisabled() );
                this.$input.attr( {
                        role: 'combobox',
+                       'aria-owns': this.menu.getElementId(),
                        'aria-autocomplete': 'list'
                } );
        }
@@ -5512,7 +5520,8 @@ OO.ui.TagMultiselectWidget.prototype.isValid = function () {
  * @mixins OO.ui.mixin.PopupElement
  *
  * @param {Object} config Configuration object
- * @cfg {jQuery} [$overlay] An overlay for the popup
+ * @cfg {jQuery} [$overlay] An overlay for the popup.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  * @cfg {Object} [popup] Configuration options for the popup
  * @cfg {OO.ui.InputWidget} [popupInput] An input widget inside the popup that will be
  *  focused when the popup is opened and will be used as replacement for the
@@ -5566,6 +5575,7 @@ OO.ui.PopupTagMultiselectWidget = function OoUiPopupTagMultiselectWidget( config
        }
 
        // Events
+       this.on( 'resize', this.popup.updateDimensions.bind( this.popup ) );
        this.popup.connect( this, { toggle: 'onPopupToggle' } );
        this.$tabIndexed
                .on( 'focus', this.focus.bind( this ) );
@@ -5675,7 +5685,8 @@ OO.ui.PopupTagMultiselectWidget.prototype.addTagByPopupValue = function ( data,
  * @constructor
  * @param {Object} [config] Configuration object
  * @cfg {Object} [menu] Configuration object for the menu widget
- * @cfg {jQuery} [$overlay] An overlay for the menu
+ * @cfg {jQuery} [$overlay] An overlay for the menu.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: …, label: … }`
  */
 OO.ui.MenuTagMultiselectWidget = function OoUiMenuTagMultiselectWidget( config ) {
@@ -6546,14 +6557,13 @@ OO.ui.SearchWidget.prototype.getResults = function () {
  *     $( 'body' ).append( numberInput.$element );
  *
  * @class
- * @extends OO.ui.Widget
+ * @extends OO.ui.TextInputWidget
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object} [input] Configuration options to pass to the {@link OO.ui.TextInputWidget text input widget}.
  * @cfg {Object} [minusButton] Configuration options to pass to the {@link OO.ui.ButtonWidget decrementing button widget}.
  * @cfg {Object} [plusButton] Configuration options to pass to the {@link OO.ui.ButtonWidget incrementing button widget}.
- * @cfg {boolean} [isInteger=false] Whether the field accepts only integer values.
+ * @cfg {boolean} [allowInteger=false] Whether the field accepts only integer values.
  * @cfg {number} [min=-Infinity] Minimum allowed value
  * @cfg {number} [max=Infinity] Maximum allowed value
  * @cfg {number} [step=1] Delta when using the buttons or up/down arrow keys
@@ -6561,6 +6571,9 @@ OO.ui.SearchWidget.prototype.getResults = function () {
  * @cfg {boolean} [showButtons=true] Whether to show the plus and minus buttons.
  */
 OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
+       var $field = $( '<div>' )
+               .addClass( 'oo-ui-numberInputWidget-field' );
+
        // Configuration initialization
        config = $.extend( {
                isInteger: false,
@@ -6571,17 +6584,15 @@ OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
                showButtons: true
        }, config );
 
+       // For backward compatibility
+       $.extend( config, config.input );
+       this.input = this;
+
        // Parent constructor
-       OO.ui.NumberInputWidget.parent.call( this, config );
+       OO.ui.NumberInputWidget.parent.call( this, $.extend( config, {
+               type: 'number'
+       } ) );
 
-       // Properties
-       this.input = new OO.ui.TextInputWidget( $.extend(
-               {
-                       disabled: this.isDisabled(),
-                       type: 'number'
-               },
-               config.input
-       ) );
        if ( config.showButtons ) {
                this.minusButton = new OO.ui.ButtonWidget( $.extend(
                        {
@@ -6604,11 +6615,7 @@ OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
        }
 
        // Events
-       this.input.connect( this, {
-               change: this.emit.bind( this, 'change' ),
-               enter: this.emit.bind( this, 'enter' )
-       } );
-       this.input.$input.on( {
+       this.$input.on( {
                keydown: this.onKeyDown.bind( this ),
                'wheel mousewheel DOMMouseScroll': this.onWheel.bind( this )
        } );
@@ -6621,40 +6628,31 @@ OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
                } );
        }
 
-       // Initialization
-       this.setIsInteger( !!config.isInteger );
-       this.setRange( config.min, config.max );
-       this.setStep( config.step, config.pageStep );
-
-       this.$field = $( '<div>' ).addClass( 'oo-ui-numberInputWidget-field' )
-               .append( this.input.$element );
-       this.$element.addClass( 'oo-ui-numberInputWidget' ).append( this.$field );
+       // Build the field
+       $field.append( this.$input );
        if ( config.showButtons ) {
-               this.$field
+               $field
                        .prepend( this.minusButton.$element )
                        .append( this.plusButton.$element );
-               this.$element.addClass( 'oo-ui-numberInputWidget-buttoned' );
        }
-       this.input.setValidation( this.validateNumber.bind( this ) );
-};
-
-/* Setup */
 
-OO.inheritClass( OO.ui.NumberInputWidget, OO.ui.Widget );
+       // Initialization
+       this.setAllowInteger( config.isInteger || config.allowInteger );
+       this.setRange( config.min, config.max );
+       this.setStep( config.step, config.pageStep );
+       // Set the validation method after we set isInteger and range
+       // so that it doesn't immediately call setValidityFlag
+       this.setValidation( this.validateNumber.bind( this ) );
 
-/* Events */
+       this.$element
+               .addClass( 'oo-ui-numberInputWidget' )
+               .toggleClass( 'oo-ui-numberInputWidget-buttoned', config.showButtons )
+               .append( $field );
+};
 
-/**
- * A `change` event is emitted when the value of the input changes.
- *
- * @event change
- */
+/* Setup */
 
-/**
- * An `enter` event is emitted when the user presses 'enter' inside the text box.
- *
- * @event enter
- */
+OO.inheritClass( OO.ui.NumberInputWidget, OO.ui.TextInputWidget );
 
 /* Methods */
 
@@ -6663,19 +6661,23 @@ OO.inheritClass( OO.ui.NumberInputWidget, OO.ui.Widget );
  *
  * @param {boolean} flag
  */
-OO.ui.NumberInputWidget.prototype.setIsInteger = function ( flag ) {
+OO.ui.NumberInputWidget.prototype.setAllowInteger = function ( flag ) {
        this.isInteger = !!flag;
-       this.input.setValidityFlag();
+       this.setValidityFlag();
 };
+// Backward compatibility
+OO.ui.NumberInputWidget.prototype.setIsInteger = OO.ui.NumberInputWidget.prototype.setAllowInteger;
 
 /**
  * Get whether only integers are allowed
  *
  * @return {boolean} Flag value
  */
-OO.ui.NumberInputWidget.prototype.getIsInteger = function () {
+OO.ui.NumberInputWidget.prototype.getAllowInteger = function () {
        return this.isInteger;
 };
+// Backward compatibility
+OO.ui.NumberInputWidget.prototype.getIsInteger = OO.ui.NumberInputWidget.prototype.getAllowInteger;
 
 /**
  * Set the range of allowed values
@@ -6689,7 +6691,7 @@ OO.ui.NumberInputWidget.prototype.setRange = function ( min, max ) {
        }
        this.min = min;
        this.max = max;
-       this.input.setValidityFlag();
+       this.setValidityFlag();
 };
 
 /**
@@ -6729,31 +6731,13 @@ OO.ui.NumberInputWidget.prototype.getStep = function () {
        return [ this.step, this.pageStep ];
 };
 
-/**
- * Get the current value of the widget
- *
- * @return {string}
- */
-OO.ui.NumberInputWidget.prototype.getValue = function () {
-       return this.input.getValue();
-};
-
 /**
  * Get the current value of the widget as a number
  *
  * @return {number} May be NaN, or an invalid number
  */
 OO.ui.NumberInputWidget.prototype.getNumericValue = function () {
-       return +this.input.getValue();
-};
-
-/**
- * Set the value of the widget
- *
- * @param {string} value Invalid values are allowed
- */
-OO.ui.NumberInputWidget.prototype.setValue = function ( value ) {
-       this.input.setValue( value );
+       return +this.getValue();
 };
 
 /**
@@ -6783,7 +6767,6 @@ OO.ui.NumberInputWidget.prototype.adjustValue = function ( delta ) {
                this.setValue( n );
        }
 };
-
 /**
  * Validate input
  *
@@ -6793,6 +6776,10 @@ OO.ui.NumberInputWidget.prototype.adjustValue = function ( delta ) {
  */
 OO.ui.NumberInputWidget.prototype.validateNumber = function ( value ) {
        var n = +value;
+       if ( value === '' ) {
+               return !this.isRequired();
+       }
+
        if ( isNaN( n ) || !isFinite( n ) ) {
                return false;
        }
@@ -6827,7 +6814,7 @@ OO.ui.NumberInputWidget.prototype.onButtonClick = function ( dir ) {
 OO.ui.NumberInputWidget.prototype.onWheel = function ( event ) {
        var delta = 0;
 
-       if ( !this.isDisabled() && this.input.$input.is( ':focus' ) ) {
+       if ( !this.isDisabled() && this.$input.is( ':focus' ) ) {
                // Standard 'wheel' event
                if ( event.originalEvent.deltaMode !== undefined ) {
                        this.sawWheelEvent = true;
@@ -6892,9 +6879,6 @@ OO.ui.NumberInputWidget.prototype.setDisabled = function ( disabled ) {
        // Parent method
        OO.ui.NumberInputWidget.parent.prototype.setDisabled.call( this, disabled );
 
-       if ( this.input ) {
-               this.input.setDisabled( this.isDisabled() );
-       }
        if ( this.minusButton ) {
                this.minusButton.setDisabled( this.isDisabled() );
        }
index c9c4c1b..422dbd2 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:54Z
+ * Date: 2017-04-26T01:05:15Z
  */
 .oo-ui-actionWidget.oo-ui-pendingElement-pending {
   background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
   left: 0;
   right: 0;
   bottom: 0;
-  z-index: 2;
+  z-index: 4;
   overflow-x: hidden;
   overflow-y: auto;
 }
index f6828e2..8a69c0f 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:54Z
+ * Date: 2017-04-26T01:05:15Z
  */
 .oo-ui-window {
   background: transparent;
   left: 0;
   right: 0;
   bottom: 0;
-  z-index: 2;
+  z-index: 4;
   overflow-x: hidden;
   overflow-y: auto;
 }
index c955919..5a06841 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.1
+ * OOjs UI v0.21.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-18T23:32:49Z
+ * Date: 2017-04-26T01:05:10Z
  */
 ( function ( OO ) {
 
@@ -1636,6 +1636,26 @@ OO.ui.Window = function OoUiWindow( config ) {
        this.manager = null;
        this.size = config.size || this.constructor.static.size;
        this.$frame = $( '<div>' );
+       /**
+        * Overlay element to use for the `$overlay` configuration option of widgets that support it.
+        * Things put inside of it are overlaid on top of the window and are not bound to its dimensions.
+        * See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
+        *
+        *     MyDialog.prototype.initialize = function () {
+        *       ...
+        *       var popupButton = new OO.ui.PopupButtonWidget( {
+        *         $overlay: this.$overlay,
+        *         label: 'Popup button',
+        *         popup: {
+        *           $content: $( '<p>Popup contents.</p><p>Popup contents.</p><p>Popup contents.</p>' ),
+        *           padded: true
+        *         }
+        *       } );
+        *       ...
+        *     };
+        *
+        * @property {jQuery}
+        */
        this.$overlay = $( '<div>' );
        this.$content = $( '<div>' );
 
@@ -2492,21 +2512,15 @@ OO.ui.Dialog.prototype.getTeardownProcess = function ( data ) {
  * @inheritdoc
  */
 OO.ui.Dialog.prototype.initialize = function () {
-       var titleId;
-
        // Parent method
        OO.ui.Dialog.parent.prototype.initialize.call( this );
 
-       titleId = OO.ui.generateElementId();
-
        // Properties
-       this.title = new OO.ui.LabelWidget( {
-               id: titleId
-       } );
+       this.title = new OO.ui.LabelWidget();
 
        // Initialization
        this.$content.addClass( 'oo-ui-dialog-content' );
-       this.$element.attr( 'aria-labelledby', titleId );
+       this.$element.attr( 'aria-labelledby', this.title.getElementId() );
        this.setPendingElement( this.$head );
 };
 
index 3064b42..e00298f 100644 (file)
@@ -1,41 +1,37 @@
 /**
  * @class jQuery.plugin.getAttrs
  */
+( function ( $ ) {
+       function serializeControls( controls ) {
+               var i,
+                       data = {},
+                       len = controls.length;
 
-function serializeControls( controls ) {
-       var i,
-               data = {},
-               len = controls.length;
+               for ( i = 0; i < len; i++ ) {
+                       data[ controls[ i ].name ] = controls[ i ].value;
+               }
 
-       for ( i = 0; i < len; i++ ) {
-               data[ controls[ i ].name ] = controls[ i ].value;
+               return data;
        }
 
-       return data;
-}
+       /**
+        * Get the attributes of an element directy as a plain object.
+        *
+        * If there is more than one element in the collection, similar to most other jQuery getter methods,
+        * this will use the first element in the collection.
+        *
+        * @return {Object}
+        */
+       $.fn.getAttrs = function () {
+               return serializeControls( this[ 0 ].attributes );
+       };
 
-/**
- * Get the attributes of an element directy as a plain object.
- *
- * If there is more than one element in the collection, similar to most other jQuery getter methods,
- * this will use the first element in the collection.
- *
- * @return {Object}
- */
-jQuery.fn.getAttrs = function () {
-       return serializeControls( this[ 0 ].attributes );
-};
-
-/**
- * Get form data as a plain object mapping form control names to their values.
- *
- * @return {Object}
- */
-jQuery.fn.serializeObject = function () {
-       return serializeControls( this.serializeArray() );
-};
-
-/**
- * @class jQuery
- * @mixins jQuery.plugin.getAttrs
- */
+       /**
+        * Get form data as a plain object mapping form control names to their values.
+        *
+        * @return {Object}
+        */
+       $.fn.serializeObject = function () {
+               return serializeControls( this.serializeArray() );
+       };
+}( jQuery ) );
index f84c091..8d019e5 100644 (file)
 
                // We allow a trailing percent sign, which we just strip. This works fine
                // if percents and regular numbers aren't being mixed.
-               ts.numberRegex = new RegExp( '^(' + '[-+\u2212]?[0-9][0-9,]*(\\.[0-9,]*)?(E[-+\u2212]?[0-9][0-9,]*)?' + // Fortran-style scientific
-               '|' + '[-+\u2212]?' + digitClass + '+[\\s\\xa0]*%?' + // Generic localised
-               ')$', 'i' );
+               ts.numberRegex = new RegExp(
+                       '^(' +
+                               '[-+\u2212]?[0-9][0-9,]*(\\.[0-9,]*)?(E[-+\u2212]?[0-9][0-9,]*)?' + // Fortran-style scientific
+                               '|' +
+                               '[-+\u2212]?' + digitClass + '+[\\s\\xa0]*%?' + // Generic localised
+                       ')$',
+                       'i'
+               );
        }
 
        function buildDateTable() {
                ts.dateRegex[ 0 ] = new RegExp( /^\s*(\d{1,2})[\,\.\-\/'\s]{1,2}(\d{1,2})[\,\.\-\/'\s]{1,2}(\d{2,4})\s*?/i );
 
                // Written Month name, dmy
-               ts.dateRegex[ 1 ] = new RegExp( '^\\s*(\\d{1,2})[\\,\\.\\-\\/\'\\s]+(' + regex + ')' + '[\\,\\.\\-\\/\'\\s]+(\\d{2,4})\\s*$', 'i' );
+               ts.dateRegex[ 1 ] = new RegExp(
+                       '^\\s*(\\d{1,2})[\\,\\.\\-\\/\'\\s]+(' +
+                               regex +
+                       ')' +
+                       '[\\,\\.\\-\\/\'\\s]+(\\d{2,4})\\s*$',
+                       'i'
+               );
 
                // Written Month name, mdy
-               ts.dateRegex[ 2 ] = new RegExp( '^\\s*(' + regex + ')' + '[\\,\\.\\-\\/\'\\s]+(\\d{1,2})[\\,\\.\\-\\/\'\\s]+(\\d{2,4})\\s*$', 'i' );
+               ts.dateRegex[ 2 ] = new RegExp(
+                       '^\\s*(' + regex + ')' +
+                       '[\\,\\.\\-\\/\'\\s]+(\\d{1,2})[\\,\\.\\-\\/\'\\s]+(\\d{2,4})\\s*$',
+                       'i'
+               );
 
        }
 
diff --git a/resources/src/mediawiki.action/mediawiki.action.view.postEdit.css b/resources/src/mediawiki.action/mediawiki.action.view.postEdit.css
deleted file mode 100644 (file)
index a5ca65e..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-.postedit-container {
-       margin: 0 auto;
-       position: fixed;
-       top: 0;
-       height: 0;
-       left: 50%;
-       z-index: 1000;
-       font-size: 13px;
-}
-
-.postedit-container:hover {
-       cursor: pointer;
-}
-
-.postedit {
-       position: relative;
-       top: 0.6em;
-       left: -50%;
-       padding: 0.6em 3.6em 0.6em 1.1em;
-       line-height: 1.5625em;
-       color: #626465;
-       background-color: #f4f4f4;
-       border: 1px solid #dcd9d9;
-       text-shadow: 0 0.0625em 0 rgba( 255, 255, 255, 0.5 );
-       border-radius: 5px;
-       box-shadow: 0 2px 5px 0 #ccc;
-       -webkit-transition: all 0.25s ease-in-out;
-       -moz-transition: all 0.25s ease-in-out;
-       -ms-transition: all 0.25s ease-in-out;
-       -o-transition: all 0.25s ease-in-out;
-       transition: all 0.25s ease-in-out;
-}
-
-.skin-monobook .postedit {
-       top: 6em !important; /* stylelint-disable-line declaration-no-important */
-}
-
-.postedit-faded {
-       opacity: 0;
-}
-
-.postedit-icon {
-       padding-left: 41px; /* 25 + 8 + 8 */
-       /* like min-height, but old IE compatible and keeps text vertically aligned, too */
-       line-height: 25px;
-       background-repeat: no-repeat;
-       background-position: 8px 50%;
-}
-
-.postedit-icon-checkmark {
-       /* @embed */
-       background-image: url( images/green-checkmark.png );
-       background-position: left;
-}
-
-.postedit-close {
-       position: absolute;
-       padding: 0 0.8em;
-       right: 0;
-       top: 0;
-       font-size: 1.25em;
-       font-weight: bold;
-       line-height: 2.3em;
-       color: #000;
-       text-shadow: 0 0.0625em 0 #fff;
-       text-decoration: none;
-       opacity: 0.2;
-       filter: alpha( opacity=20 );
-}
-
-.postedit-close:hover {
-       color: #000;
-       text-decoration: none;
-       opacity: 0.4;
-       filter: alpha( opacity=40 );
-}
index 5dfdede..87572ec 100644 (file)
         * @member mw.hook
         */
 
-       var config = mw.config.get( [ 'wgAction', 'wgCurRevisionId' ] ),
+       var cookieVal,
+               config = mw.config.get( [ 'wgAction', 'wgCurRevisionId' ] ),
                // This should match EditPage::POST_EDIT_COOKIE_KEY_PREFIX:
-               cookieKey = 'PostEditRevision' + config.wgCurRevisionId,
-               cookieVal, $div, id;
-
-       function removeConfirmation() {
-               $div.remove();
-               mw.hook( 'postEdit.afterRemoval' ).fire();
-       }
-
-       function fadeOutConfirmation() {
-               clearTimeout( id );
-               $div.find( '.postedit' ).addClass( 'postedit postedit-faded' );
-               setTimeout( removeConfirmation, 500 );
-
-               return false;
-       }
+               cookieKey = 'PostEditRevision' + config.wgCurRevisionId;
 
        function showConfirmation( data ) {
+               var $container, $popup, $content, timeoutId;
+
+               function fadeOutConfirmation() {
+                       $popup.addClass( 'postedit-faded' );
+                       setTimeout( function () {
+                               $container.remove();
+                               mw.hook( 'postEdit.afterRemoval' ).fire();
+                       }, 250 );
+               }
+
                data = data || {};
+
                if ( data.message === undefined ) {
                        data.message = $.parseHTML( mw.message( 'postedit-confirmation-saved', data.user || mw.user ).escaped() );
                }
 
-               $div = mw.template.get( 'mediawiki.action.view.postEdit', 'postEdit.html' ).render();
-
+               $content = $( '<div>' ).addClass( 'postedit-icon postedit-icon-checkmark postedit-content' );
                if ( typeof data.message === 'string' ) {
-                       $div.find( '.postedit-content' ).text( data.message );
+                       $content.text( data.message );
                } else if ( typeof data.message === 'object' ) {
-                       $div.find( '.postedit-content' ).append( data.message );
+                       $content.append( data.message );
                }
 
-               $div
-                       .click( fadeOutConfirmation )
-                       .prependTo( 'body' );
+               $popup = $( '<div>' ).addClass( 'postedit mw-notification' ).append(
+                       $content,
+                       $( '<a>' ).addClass( 'postedit-close' ).attr( 'href', '#' ).text( '×' )
+               ).on( 'click', function ( e ) {
+                       e.preventDefault();
+                       clearTimeout( timeoutId );
+                       fadeOutConfirmation();
+               } );
+
+               $container = $( '<div>' ).addClass( 'postedit-container' ).append( $popup );
+               timeoutId = setTimeout( fadeOutConfirmation, 3000 );
 
-               id = setTimeout( fadeOutConfirmation, 3000 );
+               $( 'body' ).prepend( $container );
        }
 
        mw.hook( 'postEdit' ).add( showConfirmation );
diff --git a/resources/src/mediawiki.action/mediawiki.action.view.postEdit.less b/resources/src/mediawiki.action/mediawiki.action.view.postEdit.less
new file mode 100644 (file)
index 0000000..8094559
--- /dev/null
@@ -0,0 +1,71 @@
+@import 'mediawiki.mixins';
+
+.postedit-container {
+       margin: 0 auto;
+       position: fixed;
+       top: 0;
+       height: 0;
+       left: 50%;
+       z-index: 1000;
+       font-size: 13px;
+
+       &:hover {
+               cursor: pointer;
+       }
+}
+
+.postedit {
+       position: relative;
+       top: 0.6em;
+       left: -50%;
+       line-height: 1.35;
+       opacity: 1;
+       .transition( opacity 250ms );
+
+       &.mw-notification {
+               padding-right: 3em;
+       }
+}
+
+// TODO: Move to monobook skin
+.skin-monobook .postedit {
+       top: 6em !important; /* stylelint-disable-line declaration-no-important */
+}
+
+.postedit-faded {
+       opacity: 0;
+}
+
+.postedit-icon {
+       padding-left: 41px; /* 25 + 8 + 8 */
+       /* like min-height, but old IE compatible and keeps text vertically aligned, too */
+       line-height: 25px;
+       background-repeat: no-repeat;
+       background-position: 8px 50%;
+}
+
+.postedit-icon-checkmark {
+       /* @embed */
+       background-image: url( images/green-checkmark.png );
+       background-position: left;
+}
+
+.postedit-close {
+       position: absolute;
+       padding: 0 0.8em;
+       right: 0;
+       top: 0;
+       font-size: 1.25em;
+       font-weight: bold;
+       line-height: 2.3em;
+       color: #000;
+       text-shadow: 0 0.0625em 0 #fff;
+       text-decoration: none;
+       opacity: 0.2;
+
+       .postedit:hover & {
+               color: #000;
+               text-decoration: none;
+               opacity: 0.4;
+       }
+}
diff --git a/resources/src/mediawiki.action/templates/postEdit.html b/resources/src/mediawiki.action/templates/postEdit.html
deleted file mode 100644 (file)
index dbb482a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<div class="postedit-container">
-       <div class="postedit">
-               <div class="postedit-icon postedit-icon-checkmark postedit-content"></div>
-               <a href="#" class="postedit-close">&times;</a>
-       </div>
-</div>
index 2933827..7ce06be 100644 (file)
@@ -73,7 +73,7 @@
                                }
                        }
                },
-               "…", "‘", "’", "“", "”", "°", "′", "″", "≈", "≠", "≤", "≥", "±",
+               "…", "‘", "’", "“", "”", "°", "%", "‰", "′", "″", "≈", "≠", "≤", "≥", "±",
                {
                        "label": "−",
                        "titleMsg": "special-characters-title-minus",
index 3ec544c..ca7c4e6 100644 (file)
         * @return {boolean} All items are selected
         */
        mw.rcfilters.dm.FilterGroup.prototype.areAllSelected = function () {
-               return this.getItems().every( function ( filterItem ) {
-                       return filterItem.isSelected();
+               var selected = [],
+                       unselected = [];
+
+               this.getItems().forEach( function ( filterItem ) {
+                       if ( filterItem.isSelected() ) {
+                               selected.push( filterItem );
+                       } else {
+                               unselected.push( filterItem );
+                       }
+               } );
+
+               if ( unselected.length === 0 ) {
+                       return true;
+               }
+
+               // check if every unselected is a subset of a selected
+               return unselected.every( function ( unselectedFilterItem ) {
+                       return selected.some( function ( selectedFilterItem ) {
+                               return selectedFilterItem.existsInSubset( unselectedFilterItem.getName() );
+                       } );
                } );
        };
 
index 221d2a5..4e2079d 100644 (file)
@@ -2,36 +2,28 @@
        /**
         * Filter item model
         *
-        * @mixins OO.EventEmitter
+        * @extends mw.rcfilters.dm.ItemModel
         *
         * @constructor
         * @param {string} param Filter param name
         * @param {mw.rcfilters.dm.FilterGroup} groupModel Filter group model
         * @param {Object} config Configuration object
-        * @cfg {string} [group] The group this item belongs to
-        * @cfg {string} [label] The label for the filter
-        * @cfg {string} [description] The description of the filter
-        * @cfg {boolean} [active=true] The filter is active and affecting the result
         * @cfg {string[]} [excludes=[]] A list of filter names this filter, if
         *  selected, makes inactive.
-        * @cfg {boolean} [selected] The item is selected
         * @cfg {string[]} [subset] Defining the names of filters that are a subset of this filter
         * @cfg {Object} [conflicts] Defines the conflicts for this filter
-        * @cfg {string} [cssClass] The class identifying the results that match this filter
         */
        mw.rcfilters.dm.FilterItem = function MwRcfiltersDmFilterItem( param, groupModel, config ) {
                config = config || {};
 
-               // Mixin constructor
-               OO.EventEmitter.call( this );
-
-               this.param = param;
                this.groupModel = groupModel;
-               this.name = this.groupModel.getNamePrefix() + param;
 
-               this.label = config.label || this.name;
-               this.description = config.description;
-               this.selected = !!config.selected;
+               // Parent
+               mw.rcfilters.dm.FilterItem.parent.call( this, param, $.extend( {
+                       namePrefix: this.groupModel.getNamePrefix()
+               }, config ) );
+               // Mixin constructor
+               OO.EventEmitter.call( this );
 
                // Interaction definitions
                this.subset = config.subset || [];
                this.included = false;
                this.conflicted = false;
                this.fullyCovered = false;
-
-               // Highlight
-               this.cssClass = config.cssClass;
-               this.highlightColor = null;
-               this.highlightEnabled = false;
        };
 
        /* Initialization */
 
-       OO.initClass( mw.rcfilters.dm.FilterItem );
-       OO.mixinClass( mw.rcfilters.dm.FilterItem, OO.EventEmitter );
-
-       /* Events */
-
-       /**
-        * @event update
-        *
-        * The state of this filter has changed
-        */
+       OO.inheritClass( mw.rcfilters.dm.FilterItem, mw.rcfilters.dm.ItemModel );
 
        /* Methods */
 
                };
        };
 
-       /**
-        * Get the name of this filter
-        *
-        * @return {string} Filter name
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getName = function () {
-               return this.name;
-       };
-
-       /**
-        * Get the param name or value of this filter
-        *
-        * @return {string} Filter param name
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getParamName = function () {
-               return this.param;
-       };
-
        /**
         * Get the message for the display area for the currently active conflict
         *
+        * @private
         * @return {string} Conflict result message key
         */
        mw.rcfilters.dm.FilterItem.prototype.getCurrentConflictResultMessage = function () {
        /**
         * Get the details of the active conflict on this filter
         *
+        * @private
         * @param {Object} conflicts Conflicts to examine
         * @param {string} [key='contextDescription'] Message key
         * @return {Object} Object with conflict message and conflict items
        };
 
        /**
-        * Get the message representing the state of this model.
-        *
-        * @return {string} State message
+        * @inheritdoc
         */
        mw.rcfilters.dm.FilterItem.prototype.getStateMessage = function () {
                var messageKey, details, superset,
                return this.groupModel.getName();
        };
 
-       /**
-        * Get the label of this filter
-        *
-        * @return {string} Filter label
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getLabel = function () {
-               return this.label;
-       };
-
-       /**
-        * Get the description of this filter
-        *
-        * @return {string} Filter description
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getDescription = function () {
-               return this.description;
-       };
-
-       /**
-        * Get the default value of this filter
-        *
-        * @return {boolean} Filter default
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getDefault = function () {
-               return this.default;
-       };
-
        /**
         * Get filter subset
         * This is a list of filter names that are defined to be included
                return this.superset;
        };
 
-       /**
-        * Get the selected state of this filter
-        *
-        * @return {boolean} Filter is selected
-        */
-       mw.rcfilters.dm.FilterItem.prototype.isSelected = function () {
-               return this.selected;
-       };
-
        /**
         * Check whether the filter is currently in a conflict state
         *
                }
        };
 
-       /**
-        * Toggle the selected state of the item
-        *
-        * @param {boolean} [isSelected] Filter is selected
-        * @fires update
-        */
-       mw.rcfilters.dm.FilterItem.prototype.toggleSelected = function ( isSelected ) {
-               isSelected = isSelected === undefined ? !this.selected : isSelected;
-
-               if ( this.selected !== isSelected ) {
-                       this.selected = isSelected;
-                       this.emit( 'update' );
-               }
-       };
-
        /**
         * Toggle the fully covered state of the item
         *
                        this.emit( 'update' );
                }
        };
-
-       /**
-        * Set the highlight color
-        *
-        * @param {string|null} highlightColor
-        */
-       mw.rcfilters.dm.FilterItem.prototype.setHighlightColor = function ( highlightColor ) {
-               if ( this.highlightColor !== highlightColor ) {
-                       this.highlightColor = highlightColor;
-                       this.emit( 'update' );
-               }
-       };
-
-       /**
-        * Clear the highlight color
-        */
-       mw.rcfilters.dm.FilterItem.prototype.clearHighlightColor = function () {
-               this.setHighlightColor( null );
-       };
-
-       /**
-        * Get the highlight color, or null if none is configured
-        *
-        * @return {string|null}
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getHighlightColor = function () {
-               return this.highlightColor;
-       };
-
-       /**
-        * Get the CSS class that matches changes that fit this filter
-        * or null if none is configured
-        *
-        * @return {string|null}
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getCssClass = function () {
-               return this.cssClass;
-       };
-
-       /**
-        * Toggle the highlight feature on and off for this filter.
-        * It only works if highlight is supported for this filter.
-        *
-        * @param {boolean} enable Highlight should be enabled
-        */
-       mw.rcfilters.dm.FilterItem.prototype.toggleHighlight = function ( enable ) {
-               enable = enable === undefined ? !this.highlightEnabled : enable;
-
-               if ( !this.isHighlightSupported() ) {
-                       return;
-               }
-
-               if ( enable === this.highlightEnabled ) {
-                       return;
-               }
-
-               this.highlightEnabled = enable;
-               this.emit( 'update' );
-       };
-
-       /**
-        * Check if the highlight feature is currently enabled for this filter
-        *
-        * @return {boolean}
-        */
-       mw.rcfilters.dm.FilterItem.prototype.isHighlightEnabled = function () {
-               return !!this.highlightEnabled;
-       };
-
-       /**
-        * Check if the highlight feature is supported for this filter
-        *
-        * @return {boolean}
-        */
-       mw.rcfilters.dm.FilterItem.prototype.isHighlightSupported = function () {
-               return !!this.getCssClass();
-       };
-
-       /**
-        * Check if the filter is currently highlighted
-        *
-        * @return {boolean}
-        */
-       mw.rcfilters.dm.FilterItem.prototype.isHighlighted = function () {
-               return this.isHighlightEnabled() && !!this.getHighlightColor();
-       };
 }( mediaWiki ) );
diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js
new file mode 100644 (file)
index 0000000..675fcc7
--- /dev/null
@@ -0,0 +1,257 @@
+( function ( mw ) {
+       /**
+        * RCFilter base item model
+        *
+        * @mixins OO.EventEmitter
+        *
+        * @constructor
+        * @param {string} param Filter param name
+        * @param {Object} config Configuration object
+        * @cfg {string} [label] The label for the filter
+        * @cfg {string} [description] The description of the filter
+        * @cfg {boolean} [active=true] The filter is active and affecting the result
+        * @cfg {boolean} [selected] The item is selected
+        * @cfg {boolean} [inverted] The item is inverted, meaning the search is excluding
+        *  this parameter.
+        * @cfg {string} [namePrefix='item_'] A prefix to add to the param name to act as a unique
+        *  identifier
+        * @cfg {string} [cssClass] The class identifying the results that match this filter
+        */
+       mw.rcfilters.dm.ItemModel = function MwRcfiltersDmItemModel( param, config ) {
+               config = config || {};
+
+               // Mixin constructor
+               OO.EventEmitter.call( this );
+
+               this.param = param;
+               this.namePrefix = config.namePrefix || 'item_';
+               this.name = this.namePrefix + param;
+
+               this.label = config.label || this.name;
+               this.description = config.description;
+               this.selected = !!config.selected;
+
+               this.inverted = !!config.inverted;
+
+               // Highlight
+               this.cssClass = config.cssClass;
+               this.highlightColor = null;
+               this.highlightEnabled = false;
+       };
+
+       /* Initialization */
+
+       OO.initClass( mw.rcfilters.dm.ItemModel );
+       OO.mixinClass( mw.rcfilters.dm.ItemModel, OO.EventEmitter );
+
+       /* Events */
+
+       /**
+        * @event update
+        *
+        * The state of this filter has changed
+        */
+
+       /* Methods */
+
+       /**
+        * Return the representation of the state of this item.
+        *
+        * @return {Object} State of the object
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getState = function () {
+               return {
+                       selected: this.isSelected(),
+                       inverted: this.isInverted()
+               };
+       };
+
+       /**
+        * Get the name of this filter
+        *
+        * @return {string} Filter name
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getName = function () {
+               return this.name;
+       };
+
+       /**
+        * Get the param name or value of this filter
+        *
+        * @return {string} Filter param name
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getParamName = function () {
+               return this.param;
+       };
+
+       /**
+        * Get the message representing the state of this model.
+        *
+        * @return {string} State message
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getStateMessage = function () {
+               // Display description
+               return this.getDescription();
+       };
+
+       /**
+        * Get the label of this filter
+        *
+        * @return {string} Filter label
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getLabel = function () {
+               return this.label;
+       };
+
+       /**
+        * Get the description of this filter
+        *
+        * @return {string} Filter description
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getDescription = function () {
+               return this.description;
+       };
+
+       /**
+        * Get the default value of this filter
+        *
+        * @return {boolean} Filter default
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getDefault = function () {
+               return this.default;
+       };
+
+       /**
+        * Get the selected state of this filter
+        *
+        * @return {boolean} Filter is selected
+        */
+       mw.rcfilters.dm.ItemModel.prototype.isSelected = function () {
+               return this.selected;
+       };
+
+       /**
+        * Toggle the selected state of the item
+        *
+        * @param {boolean} [isSelected] Filter is selected
+        * @fires update
+        */
+       mw.rcfilters.dm.ItemModel.prototype.toggleSelected = function ( isSelected ) {
+               isSelected = isSelected === undefined ? !this.selected : isSelected;
+
+               if ( this.selected !== isSelected ) {
+                       this.selected = isSelected;
+                       this.emit( 'update' );
+               }
+       };
+
+       /**
+        * Get the inverted state of this item
+        *
+        * @return {boolean} Item is inverted
+        */
+       mw.rcfilters.dm.ItemModel.prototype.isInverted = function () {
+               return this.inverted;
+       };
+
+       /**
+        * Toggle the inverted state of the item
+        *
+        * @param {boolean} [isInverted] Item is inverted
+        * @fires update
+        */
+       mw.rcfilters.dm.ItemModel.prototype.toggleInverted = function ( isInverted ) {
+               isInverted = isInverted === undefined ? !this.inverted : isInverted;
+
+               if ( this.inverted !== isInverted ) {
+                       this.inverted = isInverted;
+                       this.emit( 'update' );
+               }
+       };
+
+       /**
+        * Set the highlight color
+        *
+        * @param {string|null} highlightColor
+        */
+       mw.rcfilters.dm.ItemModel.prototype.setHighlightColor = function ( highlightColor ) {
+               if ( this.highlightColor !== highlightColor ) {
+                       this.highlightColor = highlightColor;
+                       this.emit( 'update' );
+               }
+       };
+
+       /**
+        * Clear the highlight color
+        */
+       mw.rcfilters.dm.ItemModel.prototype.clearHighlightColor = function () {
+               this.setHighlightColor( null );
+       };
+
+       /**
+        * Get the highlight color, or null if none is configured
+        *
+        * @return {string|null}
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getHighlightColor = function () {
+               return this.highlightColor;
+       };
+
+       /**
+        * Get the CSS class that matches changes that fit this filter
+        * or null if none is configured
+        *
+        * @return {string|null}
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getCssClass = function () {
+               return this.cssClass;
+       };
+
+       /**
+        * Toggle the highlight feature on and off for this filter.
+        * It only works if highlight is supported for this filter.
+        *
+        * @param {boolean} enable Highlight should be enabled
+        */
+       mw.rcfilters.dm.ItemModel.prototype.toggleHighlight = function ( enable ) {
+               enable = enable === undefined ? !this.highlightEnabled : enable;
+
+               if ( !this.isHighlightSupported() ) {
+                       return;
+               }
+
+               if ( enable === this.highlightEnabled ) {
+                       return;
+               }
+
+               this.highlightEnabled = enable;
+               this.emit( 'update' );
+       };
+
+       /**
+        * Check if the highlight feature is currently enabled for this filter
+        *
+        * @return {boolean}
+        */
+       mw.rcfilters.dm.ItemModel.prototype.isHighlightEnabled = function () {
+               return !!this.highlightEnabled;
+       };
+
+       /**
+        * Check if the highlight feature is supported for this filter
+        *
+        * @return {boolean}
+        */
+       mw.rcfilters.dm.ItemModel.prototype.isHighlightSupported = function () {
+               return !!this.getCssClass();
+       };
+
+       /**
+        * Check if the filter is currently highlighted
+        *
+        * @return {boolean}
+        */
+       mw.rcfilters.dm.ItemModel.prototype.isHighlighted = function () {
+               return this.isHighlightEnabled() && !!this.getHighlightColor();
+       };
+}( mediaWiki ) );
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.less
deleted file mode 100644 (file)
index 7602465..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-@import 'mediawiki.mixins';
-
-.mw-rcfilters-ui-filterFloatingMenuSelectWidget {
-       z-index: auto;
-       max-width: 650px;
-
-       &.oo-ui-menuSelectWidget-invisible {
-               display: block;
-       }
-
-       &-noresults {
-               display: none;
-               padding: 0.5em;
-               color: #666;
-
-               .oo-ui-menuSelectWidget-invisible & {
-                       display: inline-block;
-               }
-       }
-
-       &-body {
-               max-height: 70vh;
-       }
-
-       &-footer {
-               background-color: #f8f9fa;
-               text-align: right;
-               padding: 0.5em;
-       }
-}
index 9d78f85..78ea014 100644 (file)
@@ -1,59 +1,11 @@
 @import 'mediawiki.mixins';
 
 .mw-rcfilters-ui-filterMenuOptionWidget {
-       padding: 0 0.5em;
-       .box-sizing( border-box );
-
-       &:not( :last-child ) {
-               border-bottom: solid 1px #eaecf0; // Base 80 AAA
-       }
-
-       &:hover {
-               background-color: #fbfbfb;
-       }
-
-       .mw-rcfilters-ui-table {
-               padding-top: 0.5em;
-       }
-
-       &-muted {
+       &.oo-ui-flaggedElement-muted {
                background-color: #f8f9fa; // Base90 AAA
-               .mw-rcfilters-ui-filterMenuOptionWidget-label-title,
-               .mw-rcfilters-ui-filterMenuOptionWidget-label-desc {
+               .mw-rcfilters-ui-itemMenuOptionWidget-label-title,
+               .mw-rcfilters-ui-itemMenuOptionWidget-label-desc {
                        color: #54595d; // Base20 AAA
                }
        }
-
-       &.oo-ui-optionWidget-selected {
-               background-color: #eaf3ff; // Accent90 AAA
-       }
-
-       &-label {
-               &-title {
-                       font-weight: bold;
-                       font-size: 1.15em;
-                       color: #222;
-               }
-               &-desc {
-                       color: #464a4f;
-                       white-space: normal;
-               }
-       }
-
-       &-filterCheckbox {
-               .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline {
-                       // Override margin-top and -bottom rules from FieldLayout
-                       margin: 0 !important; /* stylelint-disable-line declaration-no-important */
-               }
-
-               .oo-ui-checkboxInputWidget {
-                       // Workaround for IE11 rendering issues. T162098
-                       display: block;
-               }
-       }
-
-       &-highlightButton {
-               width: 4em;
-               padding-left: 1em;
-       }
 }
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagItemWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagItemWidget.less
deleted file mode 100644 (file)
index c82903e..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-@import 'mw.rcfilters.mixins';
-
-.mw-rcfilters-ui-filterTagItemWidget {
-       background-color: #fff;
-       border-color: #979797;
-       color: #222;
-
-       // Background and color of the capsule widget need a bit
-       // more specificity to override ooui internals
-       &-muted.oo-ui-tagItemWidget.oo-ui-widget-enabled {
-               // Muted state
-               background-color: #eaecf0;
-               border-color: #c8ccd1;
-
-               .oo-ui-labelElement-label {
-                       color: #72777d;
-               }
-               .oo-ui-buttonWidget {
-                       opacity: @muted-opacity;
-               }
-       }
-
-       &-conflicted.oo-ui-tagItemWidget.oo-ui-widget-enabled {
-               background-color: #fee7e6; // Red90 AAA
-               border-color: #b32424; // Red30 AAA
-
-               .oo-ui-labelElement-label {
-                       color: #b32424;
-               }
-               .oo-ui-buttonWidget {
-                       opacity: @muted-opacity;
-               }
-       }
-
-       &-selected.oo-ui-tagItemWidget.oo-ui-widget-enabled {
-               background-color: #eaf3ff;
-               border-color: #36c;
-       }
-
-       &-popup-content {
-               padding: 0.5em;
-               color: #54595d;
-       }
-
-       &.oo-ui-labelElement .oo-ui-labelElement-label {
-               vertical-align: middle;
-               cursor: pointer;
-       }
-
-       &-highlight {
-               display: none;
-               margin-right: 0.5em;
-               height: 100%;
-               width: 10px;
-
-               &-highlighted {
-                       display: inline-block;
-               }
-
-               &:before {
-                       content: '';
-                       position: absolute;
-                       display: block;
-                       top: 50%;
-               }
-
-               &[data-color='c1']:before {
-                       .mw-rcfilters-mixin-circle( @highlight-c1, 10px, ~'-5px 0.5em 0 0' );
-               }
-
-               &[data-color='c2']:before {
-                       .mw-rcfilters-mixin-circle( @highlight-c2, 10px, ~'-5px 0.5em 0 0' );
-               }
-
-               &[data-color='c3']:before {
-                       .mw-rcfilters-mixin-circle( @highlight-c3, 10px, ~'-5px 0.5em 0 0' );
-               }
-
-               &[data-color='c4']:before {
-                       .mw-rcfilters-mixin-circle( @highlight-c4, 10px, ~'-5px 0.5em 0 0' );
-               }
-
-               &[data-color='c5']:before {
-                       .mw-rcfilters-mixin-circle( @highlight-c5, 10px, ~'-5px 0.5em 0 0' );
-               }
-       }
-}
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FloatingMenuSelectWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FloatingMenuSelectWidget.less
new file mode 100644 (file)
index 0000000..67823c9
--- /dev/null
@@ -0,0 +1,30 @@
+@import 'mediawiki.mixins';
+
+.mw-rcfilters-ui-floatingMenuSelectWidget {
+       z-index: auto;
+       max-width: 650px;
+
+       &.oo-ui-menuSelectWidget-invisible {
+               display: block;
+       }
+
+       &-noresults {
+               display: none;
+               padding: 0.5em;
+               color: #666;
+
+               .oo-ui-menuSelectWidget-invisible & {
+                       display: inline-block;
+               }
+       }
+
+       &-body {
+               max-height: 70vh;
+       }
+
+       &-footer {
+               background-color: #f8f9fa;
+               text-align: right;
+               padding: 0.5em;
+       }
+}
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ItemMenuOptionWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ItemMenuOptionWidget.less
new file mode 100644 (file)
index 0000000..44c5529
--- /dev/null
@@ -0,0 +1,51 @@
+@import 'mediawiki.mixins';
+
+.mw-rcfilters-ui-itemMenuOptionWidget {
+       padding: 0 0.5em;
+       .box-sizing( border-box );
+
+       &:not( :last-child ) {
+               border-bottom: solid 1px #eaecf0; // Base 80 AAA
+       }
+
+       &:hover {
+               background-color: #fbfbfb;
+       }
+
+       .mw-rcfilters-ui-table {
+               padding-top: 0.5em;
+       }
+
+       &.oo-ui-optionWidget-selected {
+               background-color: #eaf3ff; // Accent90 AAA
+       }
+
+       &-label {
+               &-title {
+                       font-weight: bold;
+                       font-size: 1.15em;
+                       color: #222;
+               }
+               &-desc {
+                       color: #464a4f;
+                       white-space: normal;
+               }
+       }
+
+       &-itemCheckbox {
+               .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline {
+                       // Override margin-top and -bottom rules from FieldLayout
+                       margin: 0 !important; /* stylelint-disable-line declaration-no-important */
+               }
+
+               .oo-ui-checkboxInputWidget {
+                       // Workaround for IE11 rendering issues. T162098
+                       display: block;
+               }
+       }
+
+       &-highlightButton {
+               width: 4em;
+               padding-left: 1em;
+       }
+}
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.TagItemWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.TagItemWidget.less
new file mode 100644 (file)
index 0000000..4805f64
--- /dev/null
@@ -0,0 +1,80 @@
+@import 'mw.rcfilters.mixins';
+
+.mw-rcfilters-ui-tagItemWidget {
+       // Background and color of the capsule widget need a bit
+       // more specificity to override ooui internals
+       &.oo-ui-flaggedElement-muted.oo-ui-tagItemWidget.oo-ui-widget-enabled {
+               // Muted state
+               background-color: #eaecf0;
+               border-color: #c8ccd1;
+
+               .oo-ui-labelElement-label {
+                       color: #72777d;
+               }
+               .oo-ui-buttonWidget {
+                       opacity: @muted-opacity;
+               }
+       }
+
+       &.oo-ui-flaggedElement-invalid.oo-ui-tagItemWidget.oo-ui-widget-enabled {
+               .oo-ui-labelElement-label {
+                       color: #b32424;
+               }
+       }
+
+       // OOUI classes require super-specificity in order to override
+       // the white background
+       // The specificity is fixed in the patch: https://gerrit.wikimedia.org/r/#/c/349525/
+       // and will be available in the next OOUI release.
+       .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined .oo-ui-tagMultiselectWidget-handle &-selected.oo-ui-tagItemWidget.oo-ui-widget-enabled {
+               background-color: #eaf3ff;
+               border-color: #36c;
+       }
+
+       &-popup-content {
+               padding: 0.5em;
+               color: #54595d;
+       }
+
+       &.oo-ui-labelElement .oo-ui-labelElement-label {
+               cursor: pointer;
+       }
+
+       &-highlight {
+               display: none;
+               margin-right: 0.5em;
+               height: 100%;
+               width: 10px;
+
+               &-highlighted {
+                       display: inline-block;
+               }
+
+               &:before {
+                       content: '';
+                       position: absolute;
+                       display: block;
+                       top: 50%;
+               }
+
+               &[data-color='c1']:before {
+                       .mw-rcfilters-mixin-circle( @highlight-c1, 10px, ~'-5px 0.5em 0 0' );
+               }
+
+               &[data-color='c2']:before {
+                       .mw-rcfilters-mixin-circle( @highlight-c2, 10px, ~'-5px 0.5em 0 0' );
+               }
+
+               &[data-color='c3']:before {
+                       .mw-rcfilters-mixin-circle( @highlight-c3, 10px, ~'-5px 0.5em 0 0' );
+               }
+
+               &[data-color='c4']:before {
+                       .mw-rcfilters-mixin-circle( @highlight-c4, 10px, ~'-5px 0.5em 0 0' );
+               }
+
+               &[data-color='c5']:before {
+                       .mw-rcfilters-mixin-circle( @highlight-c5, 10px, ~'-5px 0.5em 0 0' );
+               }
+       }
+}
diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.js
deleted file mode 100644 (file)
index 748eea8..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-( function ( mw ) {
-       /**
-        * A floating menu widget for the filter list
-        *
-        * @extends OO.ui.FloatingMenuSelectWidget
-        *
-        * @constructor
-        * @param {mw.rcfilters.Controller} controller Controller
-        * @param {mw.rcfilters.dm.FiltersViewModel} model View model
-        * @param {Object} [config] Configuration object
-        * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
-        * @cfg {jQuery} [$footer] An optional footer for the menu
-        */
-       mw.rcfilters.ui.FilterFloatingMenuSelectWidget = function MwRcfiltersUiFilterFloatingMenuSelectWidget( controller, model, config ) {
-               var header;
-
-               config = config || {};
-
-               this.controller = controller;
-               this.model = model;
-
-               this.inputValue = '';
-               this.$overlay = config.$overlay || this.$element;
-               this.$footer = config.$footer;
-               this.$body = $( '<div>' )
-                               .addClass( 'mw-rcfilters-ui-filterFloatingMenuSelectWidget-body' );
-
-               // Parent
-               mw.rcfilters.ui.FilterFloatingMenuSelectWidget.parent.call( this, $.extend( {
-                       $autoCloseIgnore: this.$overlay,
-                       width: 650
-               }, config ) );
-               this.setGroupElement(
-                       $( '<div>' )
-                               .addClass( 'mw-rcfilters-ui-filterFloatingMenuSelectWidget-group' )
-               );
-               this.setClippableElement( this.$body );
-               this.setClippableContainer( this.$element );
-
-               header = new mw.rcfilters.ui.FilterMenuHeaderWidget(
-                       this.controller,
-                       this.model,
-                       {
-                               $overlay: this.$overlay
-                       }
-               );
-
-               this.noResults = new OO.ui.LabelWidget( {
-                       label: mw.msg( 'rcfilters-filterlist-noresults' ),
-                       classes: [ 'mw-rcfilters-ui-filterFloatingMenuSelectWidget-noresults' ]
-               } );
-
-               this.$element
-                       .addClass( 'mw-rcfilters-ui-filterFloatingMenuSelectWidget' )
-                       .append(
-                               this.$body
-                                       .append( header.$element, this.$group, this.noResults.$element )
-                       );
-
-               if ( this.$footer ) {
-                       this.$element.append(
-                               this.$footer
-                                       .addClass( 'mw-rcfilters-ui-filterFloatingMenuSelectWidget-footer' )
-                       );
-               }
-       };
-
-       /* Initialize */
-
-       OO.inheritClass( mw.rcfilters.ui.FilterFloatingMenuSelectWidget, OO.ui.FloatingMenuSelectWidget );
-
-       /* Events */
-
-       /**
-        * @event itemVisibilityChange
-        *
-        * Item visibility has changed
-        */
-
-       /* Methods */
-
-       /**
-        * @fires itemVisibilityChange
-        * @inheritdoc
-        */
-       mw.rcfilters.ui.FilterFloatingMenuSelectWidget.prototype.updateItemVisibility = function () {
-               var i,
-                       itemWasHighlighted = false,
-                       inputVal = this.$input.val(),
-                       items = this.getItems();
-
-               // Since the method hides/shows items, we don't want to
-               // call it unless the input actually changed
-               if ( this.inputValue !== inputVal ) {
-                       // Parent method
-                       mw.rcfilters.ui.FilterFloatingMenuSelectWidget.parent.prototype.updateItemVisibility.call( this );
-
-                       if ( inputVal !== '' ) {
-                               // Highlight the first item in the list
-                               for ( i = 0; i < items.length; i++ ) {
-                                       if (
-                                               !( items[ i ] instanceof OO.ui.MenuSectionOptionWidget ) &&
-                                               items[ i ].isVisible()
-                                       ) {
-                                               itemWasHighlighted = true;
-                                               this.highlightItem( items[ i ] );
-                                               break;
-                                       }
-                               }
-                       }
-
-                       if ( !itemWasHighlighted ) {
-                               this.highlightItem( null );
-                       }
-
-                       // Cache value
-                       this.inputValue = inputVal;
-
-                       this.emit( 'itemVisibilityChange' );
-               }
-       };
-
-       /**
-        * Override the item matcher to use the model's match process
-        *
-        * @inheritdoc
-        */
-       mw.rcfilters.ui.FilterFloatingMenuSelectWidget.prototype.getItemMatcher = function ( s ) {
-               var results = this.model.findMatches( s, true );
-
-               return function ( item ) {
-                       return results.indexOf( item.getModel() ) > -1;
-               };
-       };
-
-       /**
-        * Scroll to the top of the menu
-        */
-       mw.rcfilters.ui.FilterFloatingMenuSelectWidget.prototype.scrollToTop = function () {
-               this.$body.scrollTop( 0 );
-       };
-}( mediaWiki ) );
index bda537f..d235c39 100644 (file)
@@ -2,7 +2,7 @@
        /**
         * A widget representing a single toggle filter
         *
-        * @extends OO.ui.MenuOptionWidget
+        * @extends mw.rcfilters.ui.ItemMenuOptionWidget
         *
         * @constructor
         * @param {mw.rcfilters.Controller} controller RCFilters controller
         * @param {Object} config Configuration object
         */
        mw.rcfilters.ui.FilterMenuOptionWidget = function MwRcfiltersUiFilterMenuOptionWidget( controller, model, config ) {
-               var layout,
-                       $label = $( '<div>' )
-                               .addClass( 'mw-rcfilters-ui-filterMenuOptionWidget-label' );
-
                config = config || {};
 
                this.controller = controller;
                this.model = model;
 
                // Parent
-               mw.rcfilters.ui.FilterMenuOptionWidget.parent.call( this, $.extend( {
-                       // Override the 'check' icon that OOUI defines
-                       icon: '',
-                       data: this.model.getName(),
-                       label: this.model.getLabel()
-               }, config ) );
-
-               this.checkboxWidget = new mw.rcfilters.ui.CheckboxInputWidget( {
-                       value: this.model.getName(),
-                       selected: this.model.isSelected()
-               } );
-
-               $label.append(
-                       $( '<div>' )
-                               .addClass( 'mw-rcfilters-ui-filterMenuOptionWidget-label-title' )
-                               .append( this.$label )
-               );
-               if ( this.model.getDescription() ) {
-                       $label.append(
-                               $( '<div>' )
-                                       .addClass( 'mw-rcfilters-ui-filterMenuOptionWidget-label-desc' )
-                                       .text( this.model.getDescription() )
-                       );
-               }
-
-               this.highlightButton = new mw.rcfilters.ui.FilterItemHighlightButton(
-                       this.controller,
-                       this.model,
-                       {
-                               $overlay: config.$overlay || this.$element,
-                               title: mw.msg( 'rcfilters-highlightmenu-help' )
-                       }
-               );
-               this.highlightButton.toggle( this.model.isHighlightEnabled() );
+               mw.rcfilters.ui.FilterMenuOptionWidget.parent.call( this, controller, model, config );
 
-               layout = new OO.ui.FieldLayout( this.checkboxWidget, {
-                       label: $label,
-                       align: 'inline'
-               } );
                // Event
-               this.model.connect( this, { update: 'onModelUpdate' } );
                this.model.getGroupModel().connect( this, { update: 'onGroupModelUpdate' } );
-               // HACK: Prevent defaults on 'click' for the label so it
-               // doesn't steal the focus away from the input. This means
-               // we can continue arrow-movement after we click the label
-               // and is consistent with the checkbox *itself* also preventing
-               // defaults on 'click' as well.
-               layout.$label.on( 'click', false );
 
                this.$element
-                       .addClass( 'mw-rcfilters-ui-filterMenuOptionWidget' )
-                       .append(
-                               $( '<div>' )
-                                       .addClass( 'mw-rcfilters-ui-table' )
-                                       .append(
-                                               $( '<div>' )
-                                                       .addClass( 'mw-rcfilters-ui-row' )
-                                                       .append(
-                                                               $( '<div>' )
-                                                                       .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-filterMenuOptionWidget-filterCheckbox' )
-                                                                       .append( layout.$element ),
-                                                               $( '<div>' )
-                                                                       .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-filterMenuOptionWidget-highlightButton' )
-                                                                       .append( this.highlightButton.$element )
-                                                       )
-                                       )
-                       );
+                       .addClass( 'mw-rcfilters-ui-filterMenuOptionWidget' );
        };
 
        /* Initialization */
-
-       OO.inheritClass( mw.rcfilters.ui.FilterMenuOptionWidget, OO.ui.MenuOptionWidget );
+       OO.inheritClass( mw.rcfilters.ui.FilterMenuOptionWidget, mw.rcfilters.ui.ItemMenuOptionWidget );
 
        /* Static properties */
 
        /* Methods */
 
        /**
-        * Respond to item model update event
+        * @inheritdoc
         */
        mw.rcfilters.ui.FilterMenuOptionWidget.prototype.onModelUpdate = function () {
-               this.checkboxWidget.setSelected( this.model.isSelected() );
+               // Parent
+               mw.rcfilters.ui.FilterMenuOptionWidget.parent.prototype.onModelUpdate.call( this );
 
                this.setCurrentMuteState();
        };
        };
 
        /**
-        * Set the current mute state for this item
+        * Set the current muted view of the widget based on its state
         */
        mw.rcfilters.ui.FilterMenuOptionWidget.prototype.setCurrentMuteState = function () {
-               this.$element.toggleClass(
-                       'mw-rcfilters-ui-filterMenuOptionWidget-muted',
-                       this.model.isConflicted() ||
-                       (
-                               // Item is also muted when any of the items in its group is active
-                               this.model.getGroupModel().isActive() &&
-                               // But it isn't selected
-                               !this.model.isSelected() &&
-                               // And also not included
-                               !this.model.isIncluded()
+               this.setFlags( {
+                       muted: (
+                               this.model.isConflicted() ||
+                               (
+                                       // Item is also muted when any of the items in its group is active
+                                       this.model.getGroupModel().isActive() &&
+                                       // But it isn't selected
+                                       !this.model.isSelected() &&
+                                       // And also not included
+                                       !this.model.isIncluded()
+                               )
                        )
-               );
-
-               this.highlightButton.toggle( this.model.isHighlightEnabled() );
-       };
-
-       /**
-        * Get the name of this filter
-        *
-        * @return {string} Filter name
-        */
-       mw.rcfilters.ui.FilterMenuOptionWidget.prototype.getName = function () {
-               return this.model.getName();
-       };
-
-       mw.rcfilters.ui.FilterMenuOptionWidget.prototype.getModel = function () {
-               return this.model;
+               } );
        };
-
 }( mediaWiki ) );
index f79e013..8a36eb4 100644 (file)
-( function ( mw, $ ) {
+( function ( mw ) {
        /**
         * Extend OOUI's FilterTagItemWidget to also display a popup on hover.
         *
         * @class
-        * @extends OO.ui.FilterTagItemWidget
-        * @mixins OO.ui.mixin.PopupElement
+        * @extends mw.rcfilters.ui.TagItemWidget
         *
         * @constructor
         * @param {mw.rcfilters.Controller} controller
         * @param {mw.rcfilters.dm.FilterItem} model Item model
         * @param {Object} config Configuration object
-        * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
         */
        mw.rcfilters.ui.FilterTagItemWidget = function MwRcfiltersUiFilterTagItemWidget( controller, model, config ) {
-               // Configuration initialization
                config = config || {};
 
-               this.controller = controller;
-               this.model = model;
-               this.selected = false;
+               mw.rcfilters.ui.FilterTagItemWidget.parent.call( this, controller, model, config );
 
-               mw.rcfilters.ui.FilterTagItemWidget.parent.call( this, $.extend( {
-                       data: this.model.getName(),
-                       label: this.model.getLabel()
-               }, config ) );
-
-               this.$overlay = config.$overlay || this.$element;
-               this.popupLabel = new OO.ui.LabelWidget();
-
-               // Mixin constructors
-               OO.ui.mixin.PopupElement.call( this, $.extend( {
-                       popup: {
-                               padded: false,
-                               align: 'center',
-                               position: 'above',
-                               $content: $( '<div>' )
-                                       .addClass( 'mw-rcfilters-ui-filterTagItemWidget-popup-content' )
-                                       .append( this.popupLabel.$element ),
-                               $floatableContainer: this.$element,
-                               classes: [ 'mw-rcfilters-ui-filterTagItemWidget-popup' ]
-                       }
-               }, config ) );
-
-               this.positioned = false;
-               this.popupTimeoutShow = null;
-               this.popupTimeoutHide = null;
-
-               this.$highlight = $( '<div>' )
-                       .addClass( 'mw-rcfilters-ui-filterTagItemWidget-highlight' );
-
-               // Events
-               this.model.connect( this, { update: 'onModelUpdate' } );
-
-               // Initialization
-               this.$overlay.append( this.popup.$element );
                this.$element
-                       .prepend( this.$highlight )
-                       .attr( 'aria-haspopup', 'true' )
-                       .on( 'mouseenter', this.onMouseEnter.bind( this ) )
-                       .on( 'mouseleave', this.onMouseLeave.bind( this ) );
-
-               this.setCurrentMuteState();
-               this.setHighlightColor();
+                       .addClass( 'mw-rcfilters-ui-filterTagItemWidget' );
        };
 
        /* Initialization */
 
-       OO.inheritClass( mw.rcfilters.ui.FilterTagItemWidget, OO.ui.TagItemWidget );
-       OO.mixinClass( mw.rcfilters.ui.FilterTagItemWidget, OO.ui.mixin.PopupElement );
+       OO.inheritClass( mw.rcfilters.ui.FilterTagItemWidget, mw.rcfilters.ui.TagItemWidget );
 
        /* Methods */
 
        /**
-        * Respond to model update event
-        */
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.onModelUpdate = function () {
-               this.setCurrentMuteState();
-
-               this.setHighlightColor();
-       };
-
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.setHighlightColor = function () {
-               var selectedColor = this.model.isHighlightEnabled() ? this.model.getHighlightColor() : null;
-
-               this.$highlight
-                       .attr( 'data-color', selectedColor )
-                       .toggleClass(
-                               'mw-rcfilters-ui-filterTagItemWidget-highlight-highlighted',
-                               !!selectedColor
-                       );
-       };
-
-       /**
-        * Set the current mute state for this item
+        * @inheritdoc
         */
        mw.rcfilters.ui.FilterTagItemWidget.prototype.setCurrentMuteState = function () {
-               this.$element
-                       .toggleClass(
-                               'mw-rcfilters-ui-filterTagItemWidget-muted',
+               this.setFlags( {
+                       muted: (
                                !this.model.isSelected() ||
                                this.model.isIncluded() ||
                                this.model.isFullyCovered()
-                       )
-                       .toggleClass(
-                               'mw-rcfilters-ui-filterTagItemWidget-conflicted',
-                               this.model.isSelected() && this.model.isConflicted()
-                       );
-       };
-
-       /**
-        * Respond to mouse enter event
-        */
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.onMouseEnter = function () {
-               var labelText = this.model.getStateMessage();
-
-               if ( labelText ) {
-                       this.popupLabel.setLabel( labelText );
-
-                       if ( !this.positioned ) {
-                               // Recalculate anchor position to be center of the capsule item
-                               this.popup.$anchor.css( 'margin-left', ( this.$element.width() / 2 ) );
-                               this.positioned = true;
-                       }
-
-                       // Set timeout for the popup to show
-                       this.popupTimeoutShow = setTimeout( function () {
-                               this.popup.toggle( true );
-                       }.bind( this ), 500 );
-
-                       // Cancel the hide timeout
-                       clearTimeout( this.popupTimeoutHide );
-                       this.popupTimeoutHide = null;
-               }
-       };
-
-       /**
-        * Respond to mouse leave event
-        */
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.onMouseLeave = function () {
-               this.popupTimeoutHide = setTimeout( function () {
-                       this.popup.toggle( false );
-               }.bind( this ), 250 );
-
-               // Clear the show timeout
-               clearTimeout( this.popupTimeoutShow );
-               this.popupTimeoutShow = null;
-       };
-
-       /**
-        * Set selected state on this widget
-        *
-        * @param {boolean} [isSelected] Widget is selected
-        */
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.toggleSelected = function ( isSelected ) {
-               isSelected = isSelected !== undefined ? isSelected : !this.selected;
-
-               if ( this.selected !== isSelected ) {
-                       this.selected = isSelected;
-
-                       this.$element.toggleClass( 'mw-rcfilters-ui-filterTagItemWidget-selected', this.selected );
-               }
-       };
-
-       /**
-        * Get the selected state of this widget
-        *
-        * @return {boolean} Tag is selected
-        */
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.isSelected = function () {
-               return this.selected;
-       };
-
-       /**
-        * Get item name
-        *
-        * @return {string} Filter name
-        */
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.getName = function () {
-               return this.model.getName();
-       };
-
-       /**
-        * Remove and destroy external elements of this widget
-        */
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.destroy = function () {
-               // Destroy the popup
-               this.popup.$element.detach();
-
-               // Disconnect events
-               this.model.disconnect( this );
-               this.closeButton.disconnect( this );
+                       ),
+                       invalid: this.model.isSelected() && this.model.isConflicted()
+               } );
        };
 }( mediaWiki, jQuery ) );
index 6fd3585..c52ca1f 100644 (file)
@@ -2,7 +2,7 @@
        /**
         * List displaying all filter groups
         *
-        * @extends OO.ui.Widget
+        * @extends OO.ui.MenuTagMultiselectWidget
         * @mixins OO.ui.mixin.PendingElement
         *
         * @constructor
@@ -76,7 +76,6 @@
                        itemUpdate: 'onModelItemUpdate',
                        highlightChange: 'onModelHighlightChange'
                } );
-               this.menu.connect( this, { toggle: 'onMenuToggle' } );
 
                // Build the content
                $contentWrapper.append(
         * @param {boolean} isVisible Menu is visible
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onMenuToggle = function ( isVisible ) {
+               // Parent
+               mw.rcfilters.ui.FilterTagMultiselectWidget.parent.prototype.onMenuToggle.call( this );
+
                if ( isVisible ) {
-                       mw.hook( 'RcFilters.popup.open' ).fire( this.getMenu().getSelectedItem() );
+                       mw.hook( 'RcFilters.popup.open' ).fire();
 
                        if ( !this.getMenu().getSelectedItem() ) {
                                // If there are no selected items, scroll menu to top
                        }
                } else {
                        // Clear selection
-                       this.getMenu().selectItem( null );
                        this.selectTag( null );
                }
        };
         * @inheritdoc
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.createMenuWidget = function ( menuConfig ) {
-               return new mw.rcfilters.ui.FilterFloatingMenuSelectWidget(
+               return new mw.rcfilters.ui.FloatingMenuSelectWidget(
                        this.controller,
                        this.model,
                        $.extend( {
diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FloatingMenuSelectWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FloatingMenuSelectWidget.js
new file mode 100644 (file)
index 0000000..d98ef2d
--- /dev/null
@@ -0,0 +1,143 @@
+( function ( mw ) {
+       /**
+        * A floating menu widget for the filter list
+        *
+        * @extends OO.ui.FloatingMenuSelectWidget
+        *
+        * @constructor
+        * @param {mw.rcfilters.Controller} controller Controller
+        * @param {mw.rcfilters.dm.FiltersViewModel} model View model
+        * @param {Object} [config] Configuration object
+        * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
+        * @cfg {jQuery} [$footer] An optional footer for the menu
+        */
+       mw.rcfilters.ui.FloatingMenuSelectWidget = function MwRcfiltersUiFloatingMenuSelectWidget( controller, model, config ) {
+               var header;
+
+               config = config || {};
+
+               this.controller = controller;
+               this.model = model;
+
+               this.inputValue = '';
+               this.$overlay = config.$overlay || this.$element;
+               this.$footer = config.$footer;
+               this.$body = $( '<div>' )
+                               .addClass( 'mw-rcfilters-ui-floatingMenuSelectWidget-body' );
+
+               // Parent
+               mw.rcfilters.ui.FloatingMenuSelectWidget.parent.call( this, $.extend( {
+                       $autoCloseIgnore: this.$overlay,
+                       width: 650
+               }, config ) );
+               this.setGroupElement(
+                       $( '<div>' )
+                               .addClass( 'mw-rcfilters-ui-floatingMenuSelectWidget-group' )
+               );
+               this.setClippableElement( this.$body );
+               this.setClippableContainer( this.$element );
+
+               header = new mw.rcfilters.ui.FilterMenuHeaderWidget(
+                       this.controller,
+                       this.model,
+                       {
+                               $overlay: this.$overlay
+                       }
+               );
+
+               this.noResults = new OO.ui.LabelWidget( {
+                       label: mw.msg( 'rcfilters-filterlist-noresults' ),
+                       classes: [ 'mw-rcfilters-ui-floatingMenuSelectWidget-noresults' ]
+               } );
+
+               this.$element
+                       .addClass( 'mw-rcfilters-ui-floatingMenuSelectWidget' )
+                       .append( header.$element )
+                       .append(
+                               this.$body
+                                       .append( this.$group, this.noResults.$element )
+                       );
+
+               if ( this.$footer ) {
+                       this.$element.append(
+                               this.$footer
+                                       .addClass( 'mw-rcfilters-ui-floatingMenuSelectWidget-footer' )
+                       );
+               }
+       };
+
+       /* Initialize */
+
+       OO.inheritClass( mw.rcfilters.ui.FloatingMenuSelectWidget, OO.ui.FloatingMenuSelectWidget );
+
+       /* Events */
+
+       /**
+        * @event itemVisibilityChange
+        *
+        * Item visibility has changed
+        */
+
+       /* Methods */
+
+       /**
+        * @fires itemVisibilityChange
+        * @inheritdoc
+        */
+       mw.rcfilters.ui.FloatingMenuSelectWidget.prototype.updateItemVisibility = function () {
+               var i,
+                       itemWasHighlighted = false,
+                       inputVal = this.$input.val(),
+                       items = this.getItems();
+
+               // Since the method hides/shows items, we don't want to
+               // call it unless the input actually changed
+               if ( this.inputValue !== inputVal ) {
+                       // Parent method
+                       mw.rcfilters.ui.FloatingMenuSelectWidget.parent.prototype.updateItemVisibility.call( this );
+
+                       if ( inputVal !== '' ) {
+                               // Highlight the first item in the list
+                               for ( i = 0; i < items.length; i++ ) {
+                                       if (
+                                               !( items[ i ] instanceof OO.ui.MenuSectionOptionWidget ) &&
+                                               items[ i ].isVisible()
+                                       ) {
+                                               itemWasHighlighted = true;
+                                               this.highlightItem( items[ i ] );
+                                               break;
+                                       }
+                               }
+                       }
+
+                       if ( !itemWasHighlighted ) {
+                               this.highlightItem( null );
+                       }
+
+                       // Cache value
+                       this.inputValue = inputVal;
+
+                       this.emit( 'itemVisibilityChange' );
+               }
+       };
+
+       /**
+        * Override the item matcher to use the model's match process
+        *
+        * @inheritdoc
+        */
+       mw.rcfilters.ui.FloatingMenuSelectWidget.prototype.getItemMatcher = function ( s ) {
+               var results = this.model.findMatches( s, true );
+
+               return function ( item ) {
+                       return results.indexOf( item.getModel() ) > -1;
+               };
+       };
+
+       /**
+        * Scroll to the top of the menu
+        */
+       mw.rcfilters.ui.FloatingMenuSelectWidget.prototype.scrollToTop = function () {
+               this.$body.scrollTop( 0 );
+       };
+}( mediaWiki ) );
diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ItemMenuOptionWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ItemMenuOptionWidget.js
new file mode 100644 (file)
index 0000000..a88d119
--- /dev/null
@@ -0,0 +1,125 @@
+( function ( mw ) {
+       /**
+        * A widget representing a base toggle item
+        *
+        * @extends OO.ui.MenuOptionWidget
+        *
+        * @constructor
+        * @param {mw.rcfilters.Controller} controller RCFilters controller
+        * @param {mw.rcfilters.dm.ItemModel} model Item model
+        * @param {Object} config Configuration object
+        */
+       mw.rcfilters.ui.ItemMenuOptionWidget = function MwRcfiltersUiItemMenuOptionWidget( controller, model, config ) {
+               var layout,
+                       $label = $( '<div>' )
+                               .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget-label' );
+
+               config = config || {};
+
+               this.controller = controller;
+               this.model = model;
+
+               // Parent
+               mw.rcfilters.ui.ItemMenuOptionWidget.parent.call( this, $.extend( {
+                       // Override the 'check' icon that OOUI defines
+                       icon: '',
+                       data: this.model.getName(),
+                       label: this.model.getLabel()
+               }, config ) );
+
+               this.checkboxWidget = new mw.rcfilters.ui.CheckboxInputWidget( {
+                       value: this.model.getName(),
+                       selected: this.model.isSelected()
+               } );
+
+               $label.append(
+                       $( '<div>' )
+                               .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget-label-title' )
+                               .append( this.$label )
+               );
+               if ( this.model.getDescription() ) {
+                       $label.append(
+                               $( '<div>' )
+                                       .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget-label-desc' )
+                                       .text( this.model.getDescription() )
+                       );
+               }
+
+               this.highlightButton = new mw.rcfilters.ui.FilterItemHighlightButton(
+                       this.controller,
+                       this.model,
+                       {
+                               $overlay: config.$overlay || this.$element,
+                               title: mw.msg( 'rcfilters-highlightmenu-help' )
+                       }
+               );
+               this.highlightButton.toggle( this.model.isHighlightEnabled() );
+
+               layout = new OO.ui.FieldLayout( this.checkboxWidget, {
+                       label: $label,
+                       align: 'inline'
+               } );
+
+               // Events
+               this.model.connect( this, { update: 'onModelUpdate' } );
+               // HACK: Prevent defaults on 'click' for the label so it
+               // doesn't steal the focus away from the input. This means
+               // we can continue arrow-movement after we click the label
+               // and is consistent with the checkbox *itself* also preventing
+               // defaults on 'click' as well.
+               layout.$label.on( 'click', false );
+
+               this.$element
+                       .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget' )
+                       .append(
+                               $( '<div>' )
+                                       .addClass( 'mw-rcfilters-ui-table' )
+                                       .append(
+                                               $( '<div>' )
+                                                       .addClass( 'mw-rcfilters-ui-row' )
+                                                       .append(
+                                                               $( '<div>' )
+                                                                       .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-itemMenuOptionWidget-itemCheckbox' )
+                                                                       .append( layout.$element ),
+                                                               $( '<div>' )
+                                                                       .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-itemMenuOptionWidget-highlightButton' )
+                                                                       .append( this.highlightButton.$element )
+                                                       )
+                                       )
+                       );
+       };
+
+       /* Initialization */
+
+       OO.inheritClass( mw.rcfilters.ui.ItemMenuOptionWidget, OO.ui.MenuOptionWidget );
+
+       /* Static properties */
+
+       // We do our own scrolling to top
+       mw.rcfilters.ui.ItemMenuOptionWidget.static.scrollIntoViewOnSelect = false;
+
+       /* Methods */
+
+       /**
+        * Respond to item model update event
+        */
+       mw.rcfilters.ui.ItemMenuOptionWidget.prototype.onModelUpdate = function () {
+               this.checkboxWidget.setSelected( this.model.isSelected() );
+
+               this.highlightButton.toggle( this.model.isHighlightEnabled() );
+       };
+
+       /**
+        * Get the name of this filter
+        *
+        * @return {string} Filter name
+        */
+       mw.rcfilters.ui.ItemMenuOptionWidget.prototype.getName = function () {
+               return this.model.getName();
+       };
+
+       mw.rcfilters.ui.ItemMenuOptionWidget.prototype.getModel = function () {
+               return this.model;
+       };
+
+}( mediaWiki ) );
diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.TagItemWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.TagItemWidget.js
new file mode 100644 (file)
index 0000000..637dbdc
--- /dev/null
@@ -0,0 +1,183 @@
+( function ( mw, $ ) {
+       /**
+        * Extend OOUI's TagItemWidget to also display a popup on hover.
+        *
+        * @class
+        * @extends OO.ui.TagItemWidget
+        * @mixins OO.ui.mixin.PopupElement
+        *
+        * @constructor
+        * @param {mw.rcfilters.Controller} controller
+        * @param {mw.rcfilters.dm.FilterItem} model Item model
+        * @param {Object} config Configuration object
+        * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
+        */
+       mw.rcfilters.ui.TagItemWidget = function MwRcfiltersUiTagItemWidget( controller, model, config ) {
+               // Configuration initialization
+               config = config || {};
+
+               this.controller = controller;
+               this.model = model;
+               this.selected = false;
+
+               mw.rcfilters.ui.TagItemWidget.parent.call( this, $.extend( {
+                       data: this.model.getName(),
+                       label: this.model.getLabel()
+               }, config ) );
+
+               this.$overlay = config.$overlay || this.$element;
+               this.popupLabel = new OO.ui.LabelWidget();
+
+               // Mixin constructors
+               OO.ui.mixin.PopupElement.call( this, $.extend( {
+                       popup: {
+                               padded: false,
+                               align: 'center',
+                               position: 'above',
+                               $content: $( '<div>' )
+                                       .addClass( 'mw-rcfilters-ui-tagItemWidget-popup-content' )
+                                       .append( this.popupLabel.$element ),
+                               $floatableContainer: this.$element,
+                               classes: [ 'mw-rcfilters-ui-tagItemWidget-popup' ]
+                       }
+               }, config ) );
+
+               this.positioned = false;
+               this.popupTimeoutShow = null;
+               this.popupTimeoutHide = null;
+
+               this.$highlight = $( '<div>' )
+                       .addClass( 'mw-rcfilters-ui-tagItemWidget-highlight' );
+
+               // Events
+               this.model.connect( this, { update: 'onModelUpdate' } );
+
+               // Initialization
+               this.$overlay.append( this.popup.$element );
+               this.$element
+                       .addClass( 'mw-rcfilters-ui-tagItemWidget' )
+                       .prepend( this.$highlight )
+                       .attr( 'aria-haspopup', 'true' )
+                       .on( 'mouseenter', this.onMouseEnter.bind( this ) )
+                       .on( 'mouseleave', this.onMouseLeave.bind( this ) );
+
+               this.setCurrentMuteState();
+               this.setHighlightColor();
+       };
+
+       /* Initialization */
+
+       OO.inheritClass( mw.rcfilters.ui.TagItemWidget, OO.ui.TagItemWidget );
+       OO.mixinClass( mw.rcfilters.ui.TagItemWidget, OO.ui.mixin.PopupElement );
+
+       /* Methods */
+
+       /**
+        * Respond to model update event
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.onModelUpdate = function () {
+               this.setCurrentMuteState();
+
+               this.setHighlightColor();
+       };
+
+       mw.rcfilters.ui.TagItemWidget.prototype.setHighlightColor = function () {
+               var selectedColor = this.model.isHighlightEnabled() ? this.model.getHighlightColor() : null;
+
+               this.$highlight
+                       .attr( 'data-color', selectedColor )
+                       .toggleClass(
+                               'mw-rcfilters-ui-tagItemWidget-highlight-highlighted',
+                               !!selectedColor
+                       );
+       };
+
+       /**
+        * Set the current mute state for this item
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.setCurrentMuteState = function () {};
+
+       /**
+        * Respond to mouse enter event
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.onMouseEnter = function () {
+               var labelText = this.model.getStateMessage();
+
+               if ( labelText ) {
+                       this.popupLabel.setLabel( labelText );
+
+                       if ( !this.positioned ) {
+                               // Recalculate anchor position to be center of the capsule item
+                               this.popup.$anchor.css( 'margin-left', ( this.$element.width() / 2 ) );
+                               this.positioned = true;
+                       }
+
+                       // Set timeout for the popup to show
+                       this.popupTimeoutShow = setTimeout( function () {
+                               this.popup.toggle( true );
+                       }.bind( this ), 500 );
+
+                       // Cancel the hide timeout
+                       clearTimeout( this.popupTimeoutHide );
+                       this.popupTimeoutHide = null;
+               }
+       };
+
+       /**
+        * Respond to mouse leave event
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.onMouseLeave = function () {
+               this.popupTimeoutHide = setTimeout( function () {
+                       this.popup.toggle( false );
+               }.bind( this ), 250 );
+
+               // Clear the show timeout
+               clearTimeout( this.popupTimeoutShow );
+               this.popupTimeoutShow = null;
+       };
+
+       /**
+        * Set selected state on this widget
+        *
+        * @param {boolean} [isSelected] Widget is selected
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.toggleSelected = function ( isSelected ) {
+               isSelected = isSelected !== undefined ? isSelected : !this.selected;
+
+               if ( this.selected !== isSelected ) {
+                       this.selected = isSelected;
+
+                       this.$element.toggleClass( 'mw-rcfilters-ui-tagItemWidget-selected', this.selected );
+               }
+       };
+
+       /**
+        * Get the selected state of this widget
+        *
+        * @return {boolean} Tag is selected
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.isSelected = function () {
+               return this.selected;
+       };
+
+       /**
+        * Get item name
+        *
+        * @return {string} Filter name
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.getName = function () {
+               return this.model.getName();
+       };
+
+       /**
+        * Remove and destroy external elements of this widget
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.destroy = function () {
+               // Destroy the popup
+               this.popup.$element.detach();
+
+               // Disconnect events
+               this.model.disconnect( this );
+               this.closeButton.disconnect( this );
+       };
+}( mediaWiki, jQuery ) );
index a49cfeb..737ef5f 100644 (file)
@@ -1,2 +1,4 @@
-var Router = require( 'oojs-router' );
-module.exports = new Router();
+( function () {
+       var Router = require( 'oojs-router' );
+       module.exports = new Router();
+}() );
index b09986f..7a7df7a 100644 (file)
@@ -128,31 +128,33 @@ figure[typeof~='mw:Audio/Frame'] {
        margin: 0.5em 0 1.3em 1.4em;
        clear: right;
        float: right;
-}
 
-figure[typeof~='mw:Image/Thumb'] > *:first-child > img,
-figure[typeof~='mw:Video/Thumb'] > *:first-child > video,
-figure[typeof~='mw:Audio/Thumb'] > *:first-child > video,
-figure[typeof~='mw:Image/Frame'] > *:first-child > img,
-figure[typeof~='mw:Video/Frame'] > *:first-child > video,
-figure[typeof~='mw:Audio/Frame'] > *:first-child > video {
-       border: 1px solid #c8ccd1;
-       margin: 3px;
-       background: #fff;
+       > *:first-child {
+               > img,
+               > video {
+                       border: 1px solid #c8ccd1;
+                       margin: 3px;
+                       background: #fff;
+               }
+       }
 }
 
 /* Same as img.thumbborder in content.css */
-.mw-image-border > *:first-child > img,
-.mw-image-border > *:first-child > video {
-       border: 1px solid #eaecf0;
+.mw-image-border > *:first-child {
+       > img,
+       > video {
+               border: 1px solid #eaecf0;
+       }
 }
 
 /* Hide the caption for frameless and plain floated images */
-figure[typeof~='mw:Image/Frameless'] > figcaption,
-figure[typeof~='mw:Video/Frameless'] > figcaption,
-figure[typeof~='mw:Audio/Frameless'] > figcaption,
-figure[typeof~='mw:Image'] > figcaption,
-figure[typeof~='mw:Video'] > figcaption,
-figure[typeof~='mw:Audio'] > figcaption {
-       display: none;
+figure[typeof~='mw:Image/Frameless'],
+figure[typeof~='mw:Video/Frameless'],
+figure[typeof~='mw:Audio/Frameless'],
+figure[typeof~='mw:Image'],
+figure[typeof~='mw:Video'],
+figure[typeof~='mw:Audio'] {
+       > figcaption {
+               display: none;
+       }
 }
diff --git a/resources/src/mediawiki.special/mediawiki.special.block.css b/resources/src/mediawiki.special/mediawiki.special.block.css
deleted file mode 100644 (file)
index ae557b4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/*!
- * Styling for Special:Block
- */
-
-label[for='mw-input-wpConfirm'] {
-       font-weight: bold;
-}
-
-tr.mw-block-hideuser {
-       font-weight: bold;
-}
index 3ad8005..36dfee6 100644 (file)
@@ -35,6 +35,14 @@ p.mw-ipb-conveniencelinks {
        text-align: right;
 }
 
+label[for='mw-input-wpConfirm'] {
+       font-weight: bold;
+}
+
+tr.mw-block-hideuser {
+       font-weight: bold;
+}
+
 /* Special:BlockList */
 table.mw-blocklist span.mw-usertoollinks,
 span.mw-blocklist-actions {
@@ -116,3 +124,7 @@ table.mw-userrights-groups * td,
 table.mw-userrights-groups * th {
        padding-right: 1.5em;
 }
+
+table.mw-userrights-groups * th {
+       text-align: left;
+}
index 2a93e58..7e42886 100644 (file)
@@ -10,7 +10,7 @@
                var resultOutput = '', i, result, imageCaption, imageThumbnailSrc;
 
                for ( i = 0; i < results.length; i++ ) {
-                       result = results[ i ],
+                       result = results[ i ];
                        imageCaption = mw.html.element( 'span', { 'class': 'iw-result__mini-gallery__caption' }, result.title );
                        imageThumbnailSrc = ( result.thumbnail ) ? result.thumbnail.source : '';
                        resultOutput += '<div class="iw-result__mini-gallery">' +
index 2af8b2f..576aa4e 100644 (file)
        mw.log.deprecate( window, 'insertTags', toolbar.insertTags, 'Use mw.toolbar.insertTags instead.' );
 
        // For backwards compatibility. Used to be called from EditPage.php, maybe other places as well.
-       mw.log.deprecate( toolbar, 'init', $.noop );
+       toolbar.init = $.noop;
 
        // Expose API publicly
-       mw.toolbar = toolbar;
+       // @deprecated since MW 1.30
+       mw.log.deprecate( mw, 'toolbar', toolbar );
 
        $( function () {
                var i, button;
index 877edba..0346cc1 100644 (file)
                        config.shortMonthNames = {};
                        $.each( config.fullMonthNames, function ( k, v ) {
                                config.shortMonthNames[ k ] = v.substr( 0, 3 );
-                       }.bind( this ) );
+                       } );
                }
                if ( config.shortDayNames && !config.dayLetters ) {
                        config.dayLetters = [];
                        $.each( config.shortDayNames, function ( k, v ) {
                                config.dayLetters[ k ] = v.substr( 0, 1 );
-                       }.bind( this ) );
+                       } );
                }
                if ( config.fullDayNames && !config.dayLetters ) {
                        config.dayLetters = [];
                        $.each( config.fullDayNames, function ( k, v ) {
                                config.dayLetters[ k ] = v.substr( 0, 1 );
-                       }.bind( this ) );
+                       } );
                }
                if ( config.fullDayNames && !config.shortDayNames ) {
                        config.shortDayNames = {};
                        $.each( config.fullDayNames, function ( k, v ) {
                                config.shortDayNames[ k ] = v.substr( 0, 3 );
-                       }.bind( this ) );
+                       } );
                }
                config = $.extend( {
                        fullMonthNames: this.constructor.static.fullMonthNames,
index 57a3d9c..c5a2dd4 100644 (file)
                        }
                        setTimeout( function () {
                                $bodyWrapper.addClass( 'mw-widget-calendarWidget-body-wrapper-fade-' + fade );
-                       }.bind( this ), 0 );
+                       } );
                } else {
                        this.$oldBody.replaceWith( this.$body );
                }
index dd2ce2a..50a84f8 100644 (file)
                } );
                this.$handle.on( {
                        click: this.onClick.bind( this ),
-                       keypress: this.onKeyPress.bind( this )
+                       keypress: this.onKeyPress.bind( this ),
+                       focus: this.activate.bind( this )
                } );
 
                // Initialization
diff --git a/resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.base.css b/resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.base.css
new file mode 100644 (file)
index 0000000..8c495a5
--- /dev/null
@@ -0,0 +1,20 @@
+/*!
+ * MediaWiki Widgets - base SelectWithInput styles.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+.mw-widget-selectWithInputWidget .oo-ui-dropdownInputWidget,
+.mw-widget-selectWithInputWidget .oo-ui-textInputWidget {
+       display: inline-block;
+}
+
+.mw-widget-selectWithInputWidget .oo-ui-dropdownInputWidget {
+       max-width: 20em;
+       margin-right: 0.5em;
+}
+
+.mw-widget-selectWithInputWidget .oo-ui-textInputWidget {
+       max-width: 29.5em;
+}
diff --git a/resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.js b/resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.js
new file mode 100644 (file)
index 0000000..8c60ecf
--- /dev/null
@@ -0,0 +1,135 @@
+/*!
+ * MediaWiki Widgets - SelectWithInputWidget class.
+ *
+ * @copyright 2011-2017 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+( function ( $, mw ) {
+
+       /**
+        * Select with input widget. Displays an OO.ui.TextInputWidget along with
+        * an OO.ui.DropdownInputWidget.
+        * TODO Explain the OTHER option
+        *
+        *     mw.loader.using( 'mediawiki.widgets.SelectWithInputWidget', function () {
+        *       var swi = new mw.widgets.SelectWithInputWidget( {
+        *         or: true,
+        *         dropdowninput: {
+        *           options: [
+        *             { data: 'other', label: 'Other' },
+        *             { data: 'a', label: 'First' },
+        *             { data: 'b', label: 'Second' },
+        *             { data: 'c', label: 'Third' }
+        *           ]
+        *         },
+        *         textinput: {
+        *         }
+        *       } );
+        *
+        *       $( 'body' ).append( swi.$element );
+        *     } );
+        *
+        * @class mw.widgets.SelectWithInputWidget
+        * @extends OO.ui.Widget
+        *
+        * @constructor
+        * @param {Object} [config] Configuration options
+        * @cfg {Object} [dropdowninput] Config for the dropdown
+        * @cfg {Object} [textinput] Config for the text input
+        * @cfg {boolean} [or=false] Config for whether the widget is dropdown AND input
+        *                           or dropdown OR input
+        */
+       mw.widgets.SelectWithInputWidget = function MwWidgetsSelectWithInputWidget( config ) {
+               // Config initialization
+               config = $.extend( { or: false }, config );
+
+               // Properties
+               this.textinput = new OO.ui.TextInputWidget( config.textinput );
+               this.dropdowninput = new OO.ui.DropdownInputWidget( config.dropdowninput );
+
+               if ( config.or === true ) {
+                       this.dropdowninput.on( 'change', this.onChange.bind( this ) );
+                       this.onChange();
+               }
+
+               // Parent constructor
+               mw.widgets.SelectWithInputWidget.parent.call( this, config );
+
+               // Initialization
+               this.$element
+                       .addClass( 'mw-widget-selectWithInputWidget' )
+                       .append(
+                               this.dropdowninput.$element,
+                               this.textinput.$element
+                       );
+       };
+
+       /* Setup */
+       OO.inheritClass( mw.widgets.SelectWithInputWidget, OO.ui.Widget );
+
+       /* Static Methods */
+
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.SelectWithInputWidget.static.reusePreInfuseDOM = function ( node, config ) {
+               config = mw.widgets.SelectWithInputWidget.parent.static.reusePreInfuseDOM( node, config );
+               config.dropdowninput = OO.ui.DropdownInputWidget.static.reusePreInfuseDOM(
+                       $( node ).find( '.oo-ui-dropdownInputWidget' ),
+                       config.dropdowninput
+               );
+               config.textinput = OO.ui.TextInputWidget.static.reusePreInfuseDOM(
+                       $( node ).find( '.oo-ui-textInputWidget' ),
+                       config.textinput
+               );
+               return config;
+       };
+
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.SelectWithInputWidget.static.gatherPreInfuseState = function ( node, config ) {
+               var state = mw.widgets.SelectWithInputWidget.parent.static.gatherPreInfuseState( node, config );
+               state.dropdowninput = OO.ui.DropdownInputWidget.static.gatherPreInfuseState(
+                       $( node ).find( '.oo-ui-dropdownInputWidget' ),
+                       config.dropdowninput
+               );
+               state.textinput = OO.ui.TextInputWidget.static.gatherPreInfuseState(
+                       $( node ).find( '.oo-ui-textInputWidget' ),
+                       config.textinput
+               );
+               return state;
+       };
+
+       /* Methods */
+
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.SelectWithInputWidget.prototype.restorePreInfuseState = function ( state ) {
+               mw.widgets.SelectWithInputWidget.parent.prototype.restorePreInfuseState.call( this, state );
+               this.dropdowninput.restorePreInfuseState( state.dropdowninput );
+               this.textinput.restorePreInfuseState( state.textinput );
+       };
+
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.SelectWithInputWidget.prototype.setDisabled = function ( disabled ) {
+               mw.widgets.SelectWithInputWidget.parent.prototype.setDisabled.call( this, disabled );
+               this.textinput.setDisabled( disabled );
+               this.dropdowninput.setDisabled( disabled );
+       };
+
+       /**
+        * Handle change events on the DropdownInput
+        *
+        * @param {string|undefined} value
+        * @private
+        */
+       mw.widgets.SelectWithInputWidget.prototype.onChange = function ( value ) {
+               value = value || this.dropdowninput.getValue();
+               this.textinput.$element.toggle( value === 'other' );
+       };
+
+}( jQuery, mediaWiki ) );
index 0c9ea97..4fedbea 100644 (file)
@@ -66,8 +66,6 @@
                 * assigned to either the A or B buckets. If the experiment were disabled,
                 * then the user would always be assigned to the control bucket.
                 *
-                * This function is based on the deprecated `mw.user.bucket` function.
-                *
                 * @param {Object} experiment
                 * @param {string} experiment.name The name of the experiment
                 * @param {boolean} experiment.enabled Whether or not the experiment is
index d1fa84a..65e9e41 100644 (file)
                        return mw.user.getName() || mw.user.sessionId();
                },
 
-               /**
-                * Get the user's bucket (place them in one if not done already)
-                *
-                *     mw.user.bucket( 'test', {
-                *         buckets: { ignored: 50, control: 25, test: 25 },
-                *         version: 1,
-                *         expires: 7
-                *     } );
-                *
-                * @deprecated since 1.23
-                * @param {string} key Name of bucket
-                * @param {Object} options Bucket configuration options
-                * @param {Object} options.buckets List of bucket-name/relative-probability pairs (required,
-                *  must have at least one pair)
-                * @param {number} [options.version=0] Version of bucket test, changing this forces
-                *  rebucketing
-                * @param {number} [options.expires=30] Length of time (in days) until the user gets
-                *  rebucketed
-                * @return {string} Bucket name - the randomly chosen key of the `options.buckets` object
-                */
-               bucket: function ( key, options ) {
-                       var cookie, parts, version, bucket,
-                               range, k, rand, total;
-
-                       options = $.extend( {
-                               buckets: {},
-                               version: 0,
-                               expires: 30
-                       }, options || {} );
-
-                       cookie = mw.cookie.get( 'mwuser-bucket:' + key );
-
-                       // Bucket information is stored as 2 integers, together as version:bucket like: "1:2"
-                       if ( typeof cookie === 'string' && cookie.length > 2 && cookie.indexOf( ':' ) !== -1 ) {
-                               parts = cookie.split( ':' );
-                               if ( parts.length > 1 && Number( parts[ 0 ] ) === options.version ) {
-                                       version = Number( parts[ 0 ] );
-                                       bucket = String( parts[ 1 ] );
-                               }
-                       }
-
-                       if ( bucket === undefined ) {
-                               if ( !$.isPlainObject( options.buckets ) ) {
-                                       throw new Error( 'Invalid bucket. Object expected for options.buckets.' );
-                               }
-
-                               version = Number( options.version );
-
-                               // Find range
-                               range = 0;
-                               for ( k in options.buckets ) {
-                                       range += options.buckets[ k ];
-                               }
-
-                               // Select random value within range
-                               rand = Math.random() * range;
-
-                               // Determine which bucket the value landed in
-                               total = 0;
-                               for ( k in options.buckets ) {
-                                       bucket = k;
-                                       total += options.buckets[ k ];
-                                       if ( total >= rand ) {
-                                               break;
-                                       }
-                               }
-
-                               mw.cookie.set(
-                                       'mwuser-bucket:' + key,
-                                       version + ':' + bucket,
-                                       { expires: Number( options.expires ) * 86400 }
-                               );
-                       }
-
-                       return bucket;
-               },
-
                /**
                 * Get the current user's groups
                 *
index 67e2ebb..a9c0942 100644 (file)
                        block = allowBlock ? '(?:\\/(?:12[0-8]|1[01][0-9]|[1-9]?\\d))?' : '';
                        RE_IPV6_ADD =
                                '(?:' + // starts with "::" (including "::")
-                               ':(?::|(?::' + '[0-9A-Fa-f]{1,4}' + '){1,7})' +
-                               '|' + // ends with "::" (except "::")
-                               '[0-9A-Fa-f]{1,4}' + '(?::' + '[0-9A-Fa-f]{1,4}' + '){0,6}::' +
-                               '|' + // contains no "::"
-                               '[0-9A-Fa-f]{1,4}' + '(?::' + '[0-9A-Fa-f]{1,4}' + '){7}' +
+                                       ':(?::|(?::' +
+                                               '[0-9A-Fa-f]{1,4}' +
+                                       '){1,7})' +
+                                       '|' + // ends with "::" (except "::")
+                                       '[0-9A-Fa-f]{1,4}' +
+                                       '(?::' +
+                                               '[0-9A-Fa-f]{1,4}' +
+                                       '){0,6}::' +
+                                       '|' + // contains no "::"
+                                       '[0-9A-Fa-f]{1,4}' +
+                                       '(?::' +
+                                               '[0-9A-Fa-f]{1,4}' +
+                                       '){7}' +
                                ')';
 
                        if ( new RegExp( '^' + RE_IPV6_ADD + block + '$' ).test( address ) ) {
                        }
 
                        // contains one "::" in the middle (single '::' check below)
-                       RE_IPV6_ADD = '[0-9A-Fa-f]{1,4}' + '(?:::?' + '[0-9A-Fa-f]{1,4}' + '){1,6}';
+                       RE_IPV6_ADD =
+                               '[0-9A-Fa-f]{1,4}' +
+                               '(?:::?' +
+                                       '[0-9A-Fa-f]{1,4}' +
+                               '){1,6}';
 
                        return (
                                new RegExp( '^' + RE_IPV6_ADD + block + '$' ).test( address ) &&
index e0df772..d672d76 100644 (file)
@@ -5,21 +5,19 @@
  * - Beware: Do not call mwNow before the isCompatible() check.
  */
 
-/* global mw, $VARS, $CODE */
-
-var mwPerformance = ( window.performance && performance.mark ) ? performance : {
-               mark: function () {}
-       },
-       // Define now() here to ensure valid comparison with mediaWikiLoadEnd (T153819).
-       mwNow = ( function () {
-               var perf = window.performance,
-                       navStart = perf && perf.timing && perf.timing.navigationStart;
-               return navStart && typeof perf.now === 'function' ?
-                       function () { return navStart + perf.now(); } :
-                       function () { return Date.now(); };
-       }() ),
-       // eslint-disable-next-line no-unused-vars
-       mediaWikiLoadStart;
+/* global mw, mwPerformance, mwNow, isCompatible, $VARS, $CODE */
+
+window.mwPerformance = ( window.performance && performance.mark ) ? performance : {
+       mark: function () {}
+};
+// Define now() here to ensure valid comparison with mediaWikiLoadEnd (T153819).
+window.mwNow = ( function () {
+       var perf = window.performance,
+               navStart = perf && perf.timing && perf.timing.navigationStart;
+       return navStart && typeof perf.now === 'function' ?
+               function () { return navStart + perf.now(); } :
+               function () { return Date.now(); };
+}() );
 
 /**
  * See <https://www.mediawiki.org/wiki/Compatibility#Browsers>
@@ -62,7 +60,7 @@ var mwPerformance = ( window.performance && performance.mark ) ? performance : {
  * @param {string} [str] User agent, defaults to navigator.userAgent
  * @return {boolean} User agent is compatible with MediaWiki JS
  */
-function isCompatible( str ) {
+window.isCompatible = function ( str ) {
        var ua = str || navigator.userAgent;
        return !!(
                // http://caniuse.com/#feat=es5
@@ -92,7 +90,7 @@ function isCompatible( str ) {
                        ua.match( /PlayStation/i )
                )
        );
-}
+};
 
 // Conditional script injection
 ( function () {
@@ -152,7 +150,7 @@ function isCompatible( str ) {
                };
        }
 
-       mediaWikiLoadStart = mwNow();
+       window.mediaWikiLoadStart = mwNow();
        mwPerformance.mark( 'mwLoadStart' );
 
        script = document.createElement( 'script' );
diff --git a/tests/phpunit/includes/config/EtcdConfigTest.php b/tests/phpunit/includes/config/EtcdConfigTest.php
new file mode 100644 (file)
index 0000000..763bfa8
--- /dev/null
@@ -0,0 +1,362 @@
+<?php
+
+class EtcConfigTest extends PHPUnit_Framework_TestCase {
+
+       private function createConfigMock( array $options = [] ) {
+               return $this->getMockBuilder( EtcdConfig::class )
+                       ->setConstructorArgs( [ $options + [
+                               'host' => 'etcd-tcp.example.net',
+                               'directory' => '/',
+                               'timeout' => 0.1,
+                       ] ] )
+                       ->setMethods( [ 'fetchAllFromEtcd' ] )
+                       ->getMock();
+       }
+
+       private function createSimpleConfigMock( array $config ) {
+               $mock = $this->createConfigMock();
+               $mock->expects( $this->once() )->method( 'fetchAllFromEtcd' )
+                       ->willReturn( [
+                               $config,
+                               null, // error
+                               false // retry?
+                       ] );
+               return $mock;
+       }
+
+       /**
+        * @covers EtcdConfig::has
+        */
+       public function testHasKnown() {
+               $config = $this->createSimpleConfigMock( [
+                       'known' => 'value'
+               ] );
+               $this->assertSame( true, $config->has( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::__construct
+        * @covers EtcdConfig::get
+        */
+       public function testGetKnown() {
+               $config = $this->createSimpleConfigMock( [
+                       'known' => 'value'
+               ] );
+               $this->assertSame( 'value', $config->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::has
+        */
+       public function testHasUnknown() {
+               $config = $this->createSimpleConfigMock( [
+                       'known' => 'value'
+               ] );
+               $this->assertSame( false, $config->has( 'unknown' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::get
+        */
+       public function testGetUnknown() {
+               $config = $this->createSimpleConfigMock( [
+                       'known' => 'value'
+               ] );
+               $this->setExpectedException( ConfigException::class );
+               $config->get( 'unknown' );
+       }
+
+       /**
+        * @covers EtcdConfig::__construct
+        */
+       public function testConstructCacheObj() {
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get' ] )
+                       ->getMock();
+               $cache->expects( $this->once() )->method( 'get' )
+                       ->willReturn( [
+                               'config' => [ 'known' => 'from-cache' ],
+                               'expires' => INF,
+                       ] );
+               $config = $this->createConfigMock( [ 'cache' => $cache ] );
+
+               $this->assertSame( 'from-cache', $config->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::__construct
+        */
+       public function testConstructCacheSpec() {
+               $config = $this->createConfigMock( [ 'cache' => [
+                       'class' =>  HashBagOStuff::class
+               ] ] );
+               $config->expects( $this->once() )->method( 'fetchAllFromEtcd' )
+                       ->willReturn( [
+                               [ 'known' => 'from-fetch' ],
+                               null, // error
+                               false // retry?
+                       ] );
+
+               $this->assertSame( 'from-fetch', $config->get( 'known' ) );
+       }
+
+       /**
+        * Test matrix
+        *
+        * - [x] Cache miss
+        *       Result: Fetched value
+        *       > cache miss | gets lock | backend succeeds
+        *
+        * - [x] Cache miss with backend error
+        *       Result: ConfigException
+        *       > cache miss | gets lock | backend error (no retry)
+        *
+        * - [x] Cache hit after retry
+        *       Result: Cached value (populated by process holding lock)
+        *       > cache miss | no lock | cache retry
+        *
+        * - [x] Cache hit
+        *       Result: Cached value
+        *       > cache hit
+        *
+        * - [x] Process cache hit
+        *       Result: Cached value
+        *       > process cache hit
+        *
+        * - [x] Cache expired
+        *       Result: Fetched value
+        *       > cache expired | gets lock | backend succeeds
+        *
+        * - [x] Cache expired with backend failure
+        *       Result: Cached value (stale)
+        *       > cache expired | gets lock | backend fails (allows retry)
+        *
+        * - [x] Cache expired and no lock
+        *       Result: Cached value (stale)
+        *       > cache expired | no lock
+        *
+        * Other notable scenarios:
+        *
+        * - [ ] Cache miss with backend retry
+        *       Result: Fetched value
+        *       > cache expired | gets lock | backend failure (allows retry)
+        */
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheMiss() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               // .. misses cache
+               $cache->expects( $this->once() )->method( 'get' )
+                       ->willReturn( false );
+               // .. gets lock
+               $cache->expects( $this->once() )->method( 'lock' )
+                       ->willReturn( true );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->once() )->method( 'fetchAllFromEtcd' )
+                       ->willReturn( [ [ 'known' => 'from-fetch' ], null, false ] );
+
+               $this->assertSame( 'from-fetch', $mock->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheMissBackendError() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               // .. misses cache
+               $cache->expects( $this->once() )->method( 'get' )
+                       ->willReturn( false );
+               // .. gets lock
+               $cache->expects( $this->once() )->method( 'lock' )
+                       ->willReturn( true );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->once() )->method( 'fetchAllFromEtcd' )
+                       ->willReturn( [ null, 'Fake error', false ] );
+
+               $this->setExpectedException( ConfigException::class );
+               $mock->get( 'key' );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheMissWithoutLock() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               $cache->expects( $this->exactly( 2 ) )->method( 'get' )
+                       ->will( $this->onConsecutiveCalls(
+                               // .. misses cache first time
+                               false,
+                               // .. hits cache on retry
+                               [
+                                       'config' => [ 'known' => 'from-cache' ],
+                                       'expires' => INF,
+                               ]
+                       ) );
+               // .. misses lock
+               $cache->expects( $this->once() )->method( 'lock' )
+                       ->willReturn( false );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->never() )->method( 'fetchAllFromEtcd' );
+
+               $this->assertSame( 'from-cache', $mock->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheHit() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               $cache->expects( $this->once() )->method( 'get' )
+                       // .. hits cache
+                       ->willReturn( [
+                               'config' => [ 'known' => 'from-cache' ],
+                               'expires' => INF,
+                       ] );
+               $cache->expects( $this->never() )->method( 'lock' );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->never() )->method( 'fetchAllFromEtcd' );
+
+               $this->assertSame( 'from-cache', $mock->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadProcessCacheHit() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               $cache->expects( $this->once() )->method( 'get' )
+                       // .. hits cache
+                       ->willReturn( [
+                               'config' => [ 'known' => 'from-cache' ],
+                               'expires' => INF,
+                       ] );
+               $cache->expects( $this->never() )->method( 'lock' );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->never() )->method( 'fetchAllFromEtcd' );
+
+               $this->assertSame( 'from-cache', $mock->get( 'known' ), 'Cache hit' );
+               $this->assertSame( 'from-cache', $mock->get( 'known' ), 'Process cache hit' );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheExpiredLockFetchSucceeded() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               $cache->expects( $this->once() )->method( 'get' )->willReturn(
+                       // .. stale cache
+                       [
+                               'config' => [ 'known' => 'from-cache-expired' ],
+                               'expires' => -INF,
+                       ]
+               );
+               // .. gets lock
+               $cache->expects( $this->once() )->method( 'lock' )
+                       ->willReturn( true );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->once() )->method( 'fetchAllFromEtcd' )
+                       ->willReturn( [ [ 'known' => 'from-fetch' ], null, false ] );
+
+               $this->assertSame( 'from-fetch', $mock->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheExpiredLockFetchFails() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               $cache->expects( $this->once() )->method( 'get' )->willReturn(
+                       // .. stale cache
+                       [
+                               'config' => [ 'known' => 'from-cache-expired' ],
+                               'expires' => -INF,
+                       ]
+               );
+               // .. gets lock
+               $cache->expects( $this->once() )->method( 'lock' )
+                       ->willReturn( true );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->once() )->method( 'fetchAllFromEtcd' )
+                       ->willReturn( [ null, 'Fake failure', true ] );
+
+               $this->assertSame( 'from-cache-expired', $mock->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheExpiredNoLock() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               $cache->expects( $this->once() )->method( 'get' )
+                       // .. hits cache (expired value)
+                       ->willReturn( [
+                               'config' => [ 'known' => 'from-cache-expired' ],
+                               'expires' => -INF,
+                       ] );
+               // .. misses lock
+               $cache->expects( $this->once() )->method( 'lock' )
+                       ->willReturn( false );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->never() )->method( 'fetchAllFromEtcd' );
+
+               $this->assertSame( 'from-cache-expired', $mock->get( 'known' ) );
+       }
+}
index 57754bc..b6088ff 100644 (file)
@@ -660,19 +660,31 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                return [
                        [
                                'text',
-                               "LIKE 'text'"
+                               "LIKE 'text' ESCAPE '`'"
                        ],
                        [
                                [ 'text', new LikeMatch( '%' ) ],
-                               "LIKE 'text%'"
+                               "LIKE 'text%' ESCAPE '`'"
                        ],
                        [
                                [ 'text', new LikeMatch( '%' ), 'text2' ],
-                               "LIKE 'text%text2'"
+                               "LIKE 'text%text2' ESCAPE '`'"
                        ],
                        [
                                [ 'text', new LikeMatch( '_' ) ],
-                               "LIKE 'text_'"
+                               "LIKE 'text_' ESCAPE '`'"
+                       ],
+                       [
+                               'more_text',
+                               "LIKE 'more`_text' ESCAPE '`'"
+                       ],
+                       [
+                               [ 'C:\\Windows\\', new LikeMatch( '%' ) ],
+                               "LIKE 'C:\\Windows\\%' ESCAPE '`'"
+                       ],
+                       [
+                               [ 'accent`_test`', new LikeMatch( '%' ) ],
+                               "LIKE 'accent```_test``%' ESCAPE '`'"
                        ],
                ];
        }
index db6d002..48310a9 100644 (file)
@@ -133,18 +133,18 @@ class ClassicInterwikiLookupTest extends MediaWikiTestCase {
                // NOTE: CDB setup is expensive, so we only do
                //  it once and run all the tests in one go.
 
-               $dewiki = [
-                       'iw_prefix' => 'de',
-                       'iw_url' => 'http://de.wikipedia.org/wiki/',
-                       'iw_local' => 1
-               ];
-
                $zzwiki = [
                        'iw_prefix' => 'zz',
                        'iw_url' => 'http://zzwiki.org/wiki/',
                        'iw_local' => 0
                ];
 
+               $dewiki = [
+                       'iw_prefix' => 'de',
+                       'iw_url' => 'http://de.wikipedia.org/wiki/',
+                       'iw_local' => 1
+               ];
+
                $cdbFile = $this->populateCDB(
                        'en',
                        [ $dewiki ],
@@ -160,7 +160,7 @@ class ClassicInterwikiLookupTest extends MediaWikiTestCase {
                );
 
                $this->assertEquals(
-                       [ $dewiki, $zzwiki ],
+                       [ $zzwiki, $dewiki ],
                        $lookup->getAllPrefixes(),
                        'getAllPrefixes()'
                );
@@ -185,17 +185,16 @@ class ClassicInterwikiLookupTest extends MediaWikiTestCase {
        }
 
        public function testArrayStorage() {
-               $dewiki = [
-                       'iw_prefix' => 'de',
-                       'iw_url' => 'http://de.wikipedia.org/wiki/',
-                       'iw_local' => 1
-               ];
-
                $zzwiki = [
                        'iw_prefix' => 'zz',
                        'iw_url' => 'http://zzwiki.org/wiki/',
                        'iw_local' => 0
                ];
+               $dewiki = [
+                       'iw_prefix' => 'de',
+                       'iw_url' => 'http://de.wikipedia.org/wiki/',
+                       'iw_local' => 1
+               ];
 
                $hash = $this->populateHash(
                        'en',
@@ -212,7 +211,7 @@ class ClassicInterwikiLookupTest extends MediaWikiTestCase {
                );
 
                $this->assertEquals(
-                       [ $dewiki, $zzwiki ],
+                       [ $zzwiki, $dewiki ],
                        $lookup->getAllPrefixes(),
                        'getAllPrefixes()'
                );
@@ -233,4 +232,42 @@ class ClassicInterwikiLookupTest extends MediaWikiTestCase {
                $this->assertSame( false, $interwiki->isLocal(), 'isLocal' );
        }
 
+       public function testGetAllPrefixes() {
+               $zz = [
+                       'iw_prefix' => 'zz',
+                       'iw_url' => 'https://azz.example.org/',
+                       'iw_local' => 1
+               ];
+               $de = [
+                       'iw_prefix' => 'de',
+                       'iw_url' => 'https://de.example.org/',
+                       'iw_local' => 1
+               ];
+               $azz = [
+                       'iw_prefix' => 'azz',
+                       'iw_url' => 'https://azz.example.org/',
+                       'iw_local' => 1
+               ];
+
+               $hash = $this->populateHash(
+                       'en',
+                       [],
+                       [ $zz, $de, $azz ]
+               );
+               $lookup = new \MediaWiki\Interwiki\ClassicInterwikiLookup(
+                       Language::factory( 'en' ),
+                       WANObjectCache::newEmpty(),
+                       60 * 60,
+                       $hash,
+                       3,
+                       'en'
+               );
+
+               $this->assertEquals(
+                       [ $zz, $de, $azz ],
+                       $lookup->getAllPrefixes(),
+                       'getAllPrefixes() - preserves order'
+               );
+       }
+
 }
index b1ad77a..22b1304 100644 (file)
@@ -119,146 +119,4 @@ class InterwikiTest extends MediaWikiTestCase {
                $this->assertNotSame( $interwiki, $interwikiLookup->fetch( 'de' ), 'invalidate cache' );
        }
 
-       /**
-        * @param string $thisSite
-        * @param string[] $local
-        * @param string[] $global
-        *
-        * @return string[]
-        */
-       private function populateHash( $thisSite, $local, $global ) {
-               $hash = [];
-               $hash[ '__sites:' . wfWikiID() ] = $thisSite;
-
-               $globals = [];
-               $locals = [];
-
-               foreach ( $local as $row ) {
-                       $prefix = $row['iw_prefix'];
-                       $data = $row['iw_local'] . ' ' . $row['iw_url'];
-                       $locals[] = $prefix;
-                       $hash[ "_{$thisSite}:{$prefix}" ] = $data;
-               }
-
-               foreach ( $global as $row ) {
-                       $prefix = $row['iw_prefix'];
-                       $data = $row['iw_local'] . ' ' . $row['iw_url'];
-                       $globals[] = $prefix;
-                       $hash[ "__global:{$prefix}" ] = $data;
-               }
-
-               $hash[ '__list:__global' ] = implode( ' ', $globals );
-               $hash[ '__list:_' . $thisSite ] = implode( ' ', $locals );
-
-               return $hash;
-       }
-
-       private function populateCDB( $thisSite, $local, $global ) {
-               $cdbFile = tempnam( wfTempDir(), 'MW-ClassicInterwikiLookupTest-' ) . '.cdb';
-               $cdb = CdbWriter::open( $cdbFile );
-
-               $hash = $this->populateHash( $thisSite, $local, $global );
-
-               foreach ( $hash as $key => $value ) {
-                       $cdb->set( $key, $value );
-               }
-
-               $cdb->close();
-               return $cdbFile;
-       }
-
-       public function testCDBStorage() {
-               // NOTE: CDB setup is expensive, so we only do
-               //  it once and run all the tests in one go.
-
-               $dewiki = [
-                       'iw_prefix' => 'de',
-                       'iw_url' => 'http://de.wikipedia.org/wiki/',
-                       'iw_local' => 1
-               ];
-
-               $zzwiki = [
-                       'iw_prefix' => 'zz',
-                       'iw_url' => 'http://zzwiki.org/wiki/',
-                       'iw_local' => 0
-               ];
-
-               $cdbFile = $this->populateCDB(
-                       'en',
-                       [ $dewiki ],
-                       [ $zzwiki ]
-               );
-
-               $this->setWgInterwikiCache( $cdbFile );
-
-               $interwikiLookup = MediaWikiServices::getInstance()->getInterwikiLookup();
-               $this->assertEquals(
-                       [ $dewiki, $zzwiki ],
-                       $interwikiLookup->getAllPrefixes(),
-                       'getAllPrefixes()'
-               );
-
-               $this->assertTrue( $interwikiLookup->isValidInterwiki( 'de' ), 'known prefix is valid' );
-               $this->assertTrue( $interwikiLookup->isValidInterwiki( 'zz' ), 'known prefix is valid' );
-
-               $interwiki = $interwikiLookup->fetch( 'de' );
-               $this->assertInstanceOf( 'Interwiki', $interwiki );
-
-               $this->assertSame( 'http://de.wikipedia.org/wiki/', $interwiki->getURL(), 'getURL' );
-               $this->assertSame( true, $interwiki->isLocal(), 'isLocal' );
-
-               $interwiki = $interwikiLookup->fetch( 'zz' );
-               $this->assertInstanceOf( 'Interwiki', $interwiki );
-
-               $this->assertSame( 'http://zzwiki.org/wiki/', $interwiki->getURL(), 'getURL' );
-               $this->assertSame( false, $interwiki->isLocal(), 'isLocal' );
-
-               // cleanup temp file
-               unlink( $cdbFile );
-       }
-
-       public function testArrayStorage() {
-               $dewiki = [
-                       'iw_prefix' => 'de',
-                       'iw_url' => 'http://de.wikipedia.org/wiki/',
-                       'iw_local' => 1
-               ];
-
-               $zzwiki = [
-                       'iw_prefix' => 'zz',
-                       'iw_url' => 'http://zzwiki.org/wiki/',
-                       'iw_local' => 0
-               ];
-
-               $cdbData = $this->populateHash(
-                       'en',
-                       [ $dewiki ],
-                       [ $zzwiki ]
-               );
-
-               $this->setWgInterwikiCache( $cdbData );
-
-               $interwikiLookup = MediaWikiServices::getInstance()->getInterwikiLookup();
-               $this->assertEquals(
-                       [ $dewiki, $zzwiki ],
-                       $interwikiLookup->getAllPrefixes(),
-                       'getAllPrefixes()'
-               );
-
-               $this->assertTrue( $interwikiLookup->isValidInterwiki( 'de' ), 'known prefix is valid' );
-               $this->assertTrue( $interwikiLookup->isValidInterwiki( 'zz' ), 'known prefix is valid' );
-
-               $interwiki = $interwikiLookup->fetch( 'de' );
-               $this->assertInstanceOf( 'Interwiki', $interwiki );
-
-               $this->assertSame( 'http://de.wikipedia.org/wiki/', $interwiki->getURL(), 'getURL' );
-               $this->assertSame( true, $interwiki->isLocal(), 'isLocal' );
-
-               $interwiki = $interwikiLookup->fetch( 'zz' );
-               $this->assertInstanceOf( 'Interwiki', $interwiki );
-
-               $this->assertSame( 'http://zzwiki.org/wiki/', $interwiki->getURL(), 'getURL' );
-               $this->assertSame( false, $interwiki->isLocal(), 'isLocal' );
-       }
-
 }
index d9538a7..8b20347 100644 (file)
@@ -396,6 +396,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
        }
 
        public function testFilterUserExpLevel() {
+               $now = time();
                $this->setMwGlobals( [
                        'wgLearnerEdits' => 10,
                        'wgLearnerMemberSince' => 4,
@@ -412,12 +413,12 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                        'Learner3' => [ 'edits' => 460, 'days' => 33 ],
                        'Learner4' => [ 'edits' => 525, 'days' => 28 ],
                        'Experienced1' => [ 'edits' => 538, 'days' => 33 ],
-               ] );
+               ], $now );
 
                // newcomers only
                $this->assertArrayEquals(
                        [ 'Newcomer1', 'Newcomer2', 'Newcomer3' ],
-                       $this->fetchUsers( [ 'newcomer' ] )
+                       $this->fetchUsers( [ 'newcomer' ], $now )
                );
 
                // newcomers and learner
@@ -426,7 +427,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                                'Newcomer1', 'Newcomer2', 'Newcomer3',
                                'Learner1', 'Learner2', 'Learner3', 'Learner4',
                        ],
-                       $this->fetchUsers( [ 'newcomer', 'learner' ] )
+                       $this->fetchUsers( [ 'newcomer', 'learner' ], $now )
                );
 
                // newcomers and more learner
@@ -435,19 +436,19 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                                'Newcomer1', 'Newcomer2', 'Newcomer3',
                                'Experienced1',
                        ],
-                       $this->fetchUsers( [ 'newcomer', 'experienced' ] )
+                       $this->fetchUsers( [ 'newcomer', 'experienced' ], $now )
                );
 
                // learner only
                $this->assertArrayEquals(
                        [ 'Learner1', 'Learner2', 'Learner3', 'Learner4' ],
-                       $this->fetchUsers( [ 'learner' ] )
+                       $this->fetchUsers( [ 'learner' ], $now )
                );
 
                // more experienced only
                $this->assertArrayEquals(
                        [ 'Experienced1' ],
-                       $this->fetchUsers( [ 'experienced' ] )
+                       $this->fetchUsers( [ 'experienced' ], $now )
                );
 
                // learner and more experienced
@@ -456,7 +457,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                                'Learner1', 'Learner2', 'Learner3', 'Learner4',
                                'Experienced1',
                        ],
-                       $this->fetchUsers( [ 'learner', 'experienced' ] ),
+                       $this->fetchUsers( [ 'learner', 'experienced' ], $now ),
                        'Learner and more experienced'
                );
 
@@ -469,25 +470,25 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                /*              'Learner1', 'Learner2', 'Learner3', 'Learner4', */
                /*              'Experienced1', */
                /*      ], */
-               /*      $this->fetchUsers( [ 'newcomer', 'learner', 'experienced' ] ) */
+               /*      $this->fetchUsers( [ 'newcomer', 'learner', 'experienced' ], $now ) */
                /* ); */
        }
 
-       private function createUsers( $specs ) {
+       private function createUsers( $specs, $now ) {
                $dbw = wfGetDB( DB_MASTER );
                foreach ( $specs as $name => $spec ) {
                        User::createNew(
                                $name,
                                [
                                        'editcount' => $spec['edits'],
-                                       'registration' => $dbw->timestamp( $this->daysAgo( $spec['days'] ) ),
+                                       'registration' => $dbw->timestamp( $this->daysAgo( $spec['days'], $now ) ),
                                        'email' => 'ut',
                                ]
                        );
                }
        }
 
-       private function fetchUsers( $filters ) {
+       private function fetchUsers( $filters, $now ) {
                $tables = [];
                $conds = [];
                $fields = [];
@@ -507,7 +508,8 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                                &$conds,
                                &$query_options,
                                &$join_conds,
-                               $filters
+                               $filters,
+                               $now
                        ]
                );
 
@@ -525,9 +527,9 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                return $usernames;
        }
 
-       private function daysAgo( $days ) {
+       private function daysAgo( $days, $now ) {
                $secondsPerDay = 86400;
-               return time() - $days * $secondsPerDay;
+               return $now - $days * $secondsPerDay;
        }
 
        public function testGetFilterGroupDefinitionFromLegacyCustomFilters() {
index 776dda1..a596851 100644 (file)
@@ -934,4 +934,50 @@ class UserTest extends MediaWikiTestCase {
 
                $this->assertFalse( $user->getExperienceLevel() );
        }
+
+       public static function provideIsLocallBlockedProxy() {
+               return [
+                       [ '1.2.3.4', '1.2.3.4' ],
+                       [ '1.2.3.4', '1.2.3.0/16' ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideIsLocallBlockedProxy
+        * @covers User::isLocallyBlockedProxy
+        */
+       public function testIsLocallyBlockedProxy( $ip, $blockListEntry ) {
+               $this->setMwGlobals(
+                       'wgProxyList', []
+               );
+               $this->assertFalse( User::isLocallyBlockedProxy( $ip ) );
+
+               $this->setMwGlobals(
+                       'wgProxyList',
+                       [
+                               $blockListEntry
+                       ]
+               );
+               $this->assertTrue( User::isLocallyBlockedProxy( $ip ) );
+
+               $this->setMwGlobals(
+                       'wgProxyList',
+                       [
+                               'test' => $blockListEntry
+                       ]
+               );
+               $this->assertTrue( User::isLocallyBlockedProxy( $ip ) );
+
+               $this->hideDeprecated(
+                       'IP addresses in the keys of $wgProxyList (found the following IP ' .
+                       'addresses in keys: ' . $blockListEntry . ', please move them to values)'
+               );
+               $this->setMwGlobals(
+                       'wgProxyList',
+                       [
+                               $blockListEntry => 'test'
+                       ]
+               );
+               $this->assertTrue( User::isLocallyBlockedProxy( $ip ) );
+       }
 }
index c7b7cc0..5c1be67 100644 (file)
                $input: $( '<input>' ).attr( 'type', 'text' )
                        .byteLimit( 12 ),
                sample: mbSample,
-               expected: '1234567890' + '12'
+               expected: '123456789012'
        } );
 
        byteLimitTest( {
index 1bc4c06..d6fe744 100644 (file)
                        title = mw.Title.newFromImg( { src: thisCase.url } );
 
                        if ( thisCase.nameText !== undefined ) {
-                               prefix = '[' + thisCase.typeOfUrl + ' URL' + '] ';
+                               prefix = '[' + thisCase.typeOfUrl + ' URL] ';
 
                                assert.notStrictEqual( title, null, prefix + 'Parses successfully' );
                                assert.equal( title.getNameText(), thisCase.nameText, prefix + 'Filename matches original' );
index 0e88740..da04c8d 100644 (file)
                var pTestTb, pCustom, vectorTabs, tbRL, cuQuux, $cuQuux, tbMW, $tbMW, tbRLDM, caFoo,
                        addedAfter, tbRLDMnonexistentid, tbRLDMemptyjquery;
 
-               pTestTb = '\
-               <div class="portlet" id="p-test-tb">\
-                       <h3>Toolbox</h3>\
-                       <ul class="body"></ul>\
-               </div>';
-               pCustom = '\
-               <div class="portlet" id="p-test-custom">\
-                       <h3>Views</h3>\
-                       <ul class="body">\
-                               <li id="c-foo"><a href="#">Foo</a></li>\
-                               <li id="c-barmenu">\
-                                       <ul>\
-                                               <li id="c-bar-baz"><a href="#">Baz</a></a>\
-                                       </ul>\
-                               </li>\
-                       </ul>\
-               </div>';
-               vectorTabs = '\
-               <div id="p-test-views" class="vectorTabs">\
-                       <h3>Views</h3>\
-                       <ul></ul>\
-               </div>';
+               pTestTb =
+                       '<div class="portlet" id="p-test-tb">' +
+                               '<h3>Toolbox</h3>' +
+                               '<ul class="body"></ul>' +
+                       '</div>';
+               pCustom =
+                       '<div class="portlet" id="p-test-custom">' +
+                               '<h3>Views</h3>' +
+                               '<ul class="body">' +
+                                       '<li id="c-foo"><a href="#">Foo</a></li>' +
+                                       '<li id="c-barmenu">' +
+                                               '<ul>' +
+                                                       '<li id="c-bar-baz"><a href="#">Baz</a></a>' +
+                                               '</ul>' +
+                                       '</li>' +
+                               '</ul>' +
+                       '</div>';
+               vectorTabs =
+                       '<div id="p-test-views" class="vectorTabs">' +
+                               '<h3>Views</h3>' +
+                               '<ul></ul>' +
+                       '</div>';
 
                $( '#qunit-fixture' ).append( pTestTb, pCustom, vectorTabs );