Merge "Remove PHP < 5.3 support from maintenance/checkSyntax.php"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 16 Feb 2016 23:40:51 +0000 (23:40 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 16 Feb 2016 23:40:51 +0000 (23:40 +0000)
193 files changed:
.jshintrc
INSTALL
RELEASE-NOTES-1.27
autoload.php
docs/hooks.txt
includes/DefaultSettings.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/HttpFunctions.php
includes/OutputPage.php
includes/PageProps.php
includes/Setup.php
includes/Title.php
includes/WebStart.php
includes/actions/HistoryAction.php
includes/actions/InfoAction.php
includes/api/ApiPageSet.php
includes/api/ApiQueryPageProps.php
includes/api/ApiRollback.php
includes/api/ApiUpload.php
includes/api/i18n/en.json
includes/api/i18n/es.json
includes/api/i18n/fi.json
includes/api/i18n/gl.json
includes/api/i18n/he.json
includes/api/i18n/ja.json
includes/api/i18n/nap.json
includes/api/i18n/qqq.json
includes/api/i18n/sk.json [new file with mode: 0644]
includes/cache/LinkBatch.php
includes/cache/LinkCache.php
includes/changes/ChangesList.php
includes/changes/RecentChange.php
includes/changetags/ChangeTags.php
includes/changetags/ChangeTagsLogItem.php
includes/changetags/ChangeTagsRevisionItem.php
includes/db/Database.php
includes/debug/logger/LegacyLogger.php
includes/diff/DifferenceEngine.php
includes/installer/Installer.php
includes/installer/LocalSettingsGenerator.php
includes/installer/i18n/cs.json
includes/installer/i18n/en.json
includes/installer/i18n/fa.json
includes/installer/i18n/fi.json
includes/installer/i18n/he.json
includes/installer/i18n/hu.json
includes/installer/i18n/nap.json
includes/installer/i18n/nb.json
includes/installer/i18n/pl.json
includes/installer/i18n/qqq.json
includes/installer/i18n/sh.json
includes/installer/i18n/tt-cyrl.json
includes/jobqueue/jobs/PublishStashedFileJob.php
includes/json/FormatJson.php
includes/logging/LogEventsList.php
includes/mail/UserMailer.php
includes/page/WikiPage.php
includes/parser/LinkHolderArray.php
includes/parser/Parser.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/revisiondelete/RevDelRevisionItem.php
includes/session/CookieSessionProvider.php
includes/session/MetadataMergeException.php [new file with mode: 0644]
includes/session/Session.php
includes/session/SessionBackend.php
includes/session/SessionManager.php
includes/session/SessionProvider.php
includes/specials/SpecialContributions.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialPageLanguage.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialUserrights.php
includes/user/User.php
languages/i18n/ar.json
languages/i18n/ast.json
languages/i18n/azb.json
languages/i18n/ba.json
languages/i18n/be-tarask.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/cu.json
languages/i18n/de.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/eo.json
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/frr.json
languages/i18n/gd.json
languages/i18n/gl.json
languages/i18n/hak.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hr.json
languages/i18n/hu.json
languages/i18n/hy.json
languages/i18n/id.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/ka.json
languages/i18n/ko.json
languages/i18n/ksh.json
languages/i18n/ku-latn.json
languages/i18n/lb.json
languages/i18n/lrc.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/pl.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sah.json
languages/i18n/sh.json
languages/i18n/sk.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/tcy.json
languages/i18n/tr.json
languages/i18n/tt-cyrl.json
languages/i18n/tyv.json
languages/i18n/uk.json
languages/i18n/vi.json
languages/i18n/war.json
languages/i18n/wuu.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/backup.inc
maintenance/cleanupTitles.php
maintenance/dumpIterator.php
maintenance/dumpTextPass.php
maintenance/findHooks.php
maintenance/importDump.php
maintenance/renderDump.php
maintenance/storage/checkStorage.php
resources/Resources.php
resources/ResourcesOOUI.php
resources/src/mediawiki.legacy/commonPrint.css
resources/src/mediawiki.less/mediawiki.mixins.less
resources/src/mediawiki.skinning/content.css
resources/src/mediawiki/bookletlayout/option2/ccbysa.png [deleted file]
resources/src/mediawiki/bookletlayout/option2/ccbysa.svg [deleted file]
resources/src/mediawiki/bookletlayout/option2/noderiv.png [deleted file]
resources/src/mediawiki/bookletlayout/option2/noderiv.svg [deleted file]
resources/src/mediawiki/bookletlayout/option2/ownwork.png [deleted file]
resources/src/mediawiki/bookletlayout/option2/ownwork.svg [deleted file]
resources/src/mediawiki/bookletlayout/option2/useful.png [deleted file]
resources/src/mediawiki/bookletlayout/option2/useful.svg [deleted file]
resources/src/mediawiki/bookletlayout/option4/camera.png [deleted file]
resources/src/mediawiki/bookletlayout/option4/camera.svg [deleted file]
resources/src/mediawiki/bookletlayout/option4/graphics.png [deleted file]
resources/src/mediawiki/bookletlayout/option4/graphics.svg [deleted file]
resources/src/mediawiki/bookletlayout/option4/guide.html [deleted file]
resources/src/mediawiki/bookletlayout/option4/search-ltr.png [deleted file]
resources/src/mediawiki/bookletlayout/option4/search-ltr.svg [deleted file]
resources/src/mediawiki/bookletlayout/option4/search-rtl.png [deleted file]
resources/src/mediawiki/bookletlayout/option4/search-rtl.svg [deleted file]
resources/src/mediawiki/bookletlayout/option4/website-ltr.png [deleted file]
resources/src/mediawiki/bookletlayout/option4/website-ltr.svg [deleted file]
resources/src/mediawiki/bookletlayout/option4/website-rtl.png [deleted file]
resources/src/mediawiki/bookletlayout/option4/website-rtl.svg [deleted file]
resources/src/mediawiki/mediawiki.ForeignStructuredUpload.BookletLayout.js
resources/src/mediawiki/mediawiki.ForeignStructuredUpload.BookletLayout.less
resources/src/mediawiki/mediawiki.Upload.BookletLayout.css [new file with mode: 0644]
resources/src/mediawiki/mediawiki.Upload.BookletLayout.js
resources/src/mediawiki/mediawiki.Upload.js
resources/src/mediawiki/mediawiki.js
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/PagePropsTest.php
tests/phpunit/includes/session/SessionBackendTest.php
tests/phpunit/includes/session/SessionManagerTest.php
tests/phpunit/includes/session/SessionProviderTest.php
tests/phpunit/includes/session/SessionTest.php
tests/phpunit/includes/session/TestUtils.php
tests/phpunit/structure/AutoLoaderTest.php
tests/phpunit/tests/MediaWikiTestCaseTest.php
tests/qunit/suites/resources/mediawiki/mediawiki.test.js

index 62b9d82..441c4e3 100644 (file)
--- a/.jshintrc
+++ b/.jshintrc
@@ -20,6 +20,8 @@
        "browser": true,
 
        "globals": {
+               "require": false,
+               "module": false,
                "mediaWiki": true,
                "JSON": true,
                "OO": true,
diff --git a/INSTALL b/INSTALL
index 4651a0c..0e8eb92 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -18,8 +18,7 @@ MediaWiki is developed and tested mainly on Unix/Linux platforms, but should
 work on Windows as well.
 
 If your PHP is configured as a CGI plug-in rather than an Apache module you may
-experience problems, as this configuration is not well tested. safe_mode is also
-not tested and unlikely to work.
+experience problems, as this configuration is not well tested.
 
 Support for rendering mathematical formulas requires installing the Math extension,
 see https://www.mediawiki.org/wiki/Extension:Math
index 6e2ca15..3a83b36 100644 (file)
@@ -1,6 +1,3 @@
-Security reminder: If you have PHP's register_globals option set, you must
-turn it off. MediaWiki will not work with it enabled.
-
 == MediaWiki 1.27 ==
 
 THIS IS NOT A RELEASE YET
index d6e4077..83ca3b3 100644 (file)
@@ -54,6 +54,7 @@ $wgAutoloadLocalClasses = array(
        'ApiManageTags' => __DIR__ . '/includes/api/ApiManageTags.php',
        'ApiMergeHistory' => __DIR__ . '/includes/api/ApiMergeHistory.php',
        'ApiMessage' => __DIR__ . '/includes/api/ApiMessage.php',
+       'ApiMessageTrait' => __DIR__ . '/includes/api/ApiMessage.php',
        'ApiModuleManager' => __DIR__ . '/includes/api/ApiModuleManager.php',
        'ApiMove' => __DIR__ . '/includes/api/ApiMove.php',
        'ApiOpenSearch' => __DIR__ . '/includes/api/ApiOpenSearch.php',
@@ -563,7 +564,6 @@ $wgAutoloadLocalClasses = array(
        'IPSet' => __DIR__ . '/includes/compat/IPSetCompat.php',
        'IPTC' => __DIR__ . '/includes/media/IPTC.php',
        'IRCColourfulRCFeedFormatter' => __DIR__ . '/includes/rcfeed/IRCColourfulRCFeedFormatter.php',
-       'LinkTarget' => __DIR__ . '/includes/LinkTarget.php',
        'IcuCollation' => __DIR__ . '/includes/Collation.php',
        'IdentityCollation' => __DIR__ . '/includes/Collation.php',
        'ImageBuilder' => __DIR__ . '/maintenance/rebuildImages.php',
@@ -698,6 +698,7 @@ $wgAutoloadLocalClasses = array(
        'LinkFilter' => __DIR__ . '/includes/LinkFilter.php',
        'LinkHolderArray' => __DIR__ . '/includes/parser/LinkHolderArray.php',
        'LinkSearchPage' => __DIR__ . '/includes/specials/SpecialLinkSearch.php',
+       'LinkTarget' => __DIR__ . '/includes/LinkTarget.php',
        'Linker' => __DIR__ . '/includes/Linker.php',
        'LinksDeletionUpdate' => __DIR__ . '/includes/deferred/LinksDeletionUpdate.php',
        'LinksUpdate' => __DIR__ . '/includes/deferred/LinksUpdate.php',
@@ -796,6 +797,7 @@ $wgAutoloadLocalClasses = array(
        'MediaWiki\\Session\\BotPasswordSessionProvider' => __DIR__ . '/includes/session/BotPasswordSessionProvider.php',
        'MediaWiki\\Session\\CookieSessionProvider' => __DIR__ . '/includes/session/CookieSessionProvider.php',
        'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' => __DIR__ . '/includes/session/ImmutableSessionProviderWithCookie.php',
+       'MediaWiki\\Session\\MetadataMergeException' => __DIR__ . '/includes/session/MetadataMergeException.php',
        'MediaWiki\\Session\\PHPSessionHandler' => __DIR__ . '/includes/session/PHPSessionHandler.php',
        'MediaWiki\\Session\\Session' => __DIR__ . '/includes/session/Session.php',
        'MediaWiki\\Session\\SessionBackend' => __DIR__ . '/includes/session/SessionBackend.php',
index 0fe888f..8822e0c 100644 (file)
@@ -2076,17 +2076,6 @@ $rev: the new revision
 $baseID: the revision ID this was based off, if any
 $user: the editing user
 
-'NormalizeMessageKey': Called before the software gets the text of a message
-(stuff in the MediaWiki: namespace), useful for changing WHAT message gets
-displayed.
-&$key: the message being looked up. Change this to something else to change
-  what message gets displayed (string)
-&$useDB: whether or not to look up the message in the database (bool)
-&$langCode: the language code to get the message for (string) - or -
-  whether to use the content language (true) or site language (false) (bool)
-&$transform: whether or not to expand variables and templates
-  in the message (bool)
-
 'OldChangesListRecentChangesLine': Customize entire recent changes line, or
 return false to omit the line from RecentChanges and Watchlist special pages.
 &$changeslist: The OldChangesList instance.
@@ -3285,6 +3274,8 @@ $user: User whose groups changed
 $added: Groups added
 $removed: Groups removed
 $performer: User who performed the change, false if via autopromotion
+$reason: The reason, if any, given by the user performing the change,
+false if via autopromotion.
 
 'UserIsBlockedFrom': Check if a user is blocked from a specific page (for
 specific block exemptions).
index c886f13..e3c7713 100644 (file)
@@ -535,12 +535,6 @@ $wgUseInstantCommons = false;
  */
 $wgForeignUploadTargets = array();
 
-/**
- * Cross-wiki upload A/B test configuration.
- */
-$wgForeignUploadTestEnabled = false;
-$wgForeignUploadTestDefault = 1;
-
 /**
  * File backend structure configuration.
  *
@@ -1561,7 +1555,6 @@ $wgSMTP = false;
 
 /**
  * Additional email parameters, will be passed as the last argument to mail() call.
- * If using safe_mode this has no effect
  */
 $wgAdditionalMailParams = null;
 
@@ -2309,6 +2302,28 @@ $wgSessionHandler = null;
  */
 $wgPHPSessionHandling = 'enable';
 
+/**
+ * The number of different IPs in the same session within a period of $wgSuspiciousIpExpiry
+ * that should cause warnings to be logged. This is meant more for debugging errors in the
+ * authentication system than for detecting abuse.
+ * @since 1.27
+ */
+$wgSuspiciousIpPerSessionLimit = 2;
+
+/**
+ * Like $wgSuspiciousIpPerSessionLimit but over all requests from the same user within
+ * $wgSuspiciousIpExpiry, whether they are in the same session or not.
+ * @since 1.27
+ */
+$wgSuspiciousIpPerUserLimit = 5;
+
+/**
+ * Time in seconds to remember IPs for, for the purposes of $wgSuspiciousIpPerSessionLimit and
+ * $wgSuspiciousIpPerUserLimit.
+ * @since 1.27
+ */
+$wgSuspiciousIpExpiry = 600;
+
 /**
  * If enabled, will send MemCached debugging information to $wgDebugLogFile
  */
index 914bad4..caeb57c 100644 (file)
@@ -366,7 +366,7 @@ class EditPage {
        public $contentFormat = null;
 
        /** @var null|array */
-       public $changeTags = null;
+       private $changeTags = null;
 
        # Placeholders for text injection by hooks (must be HTML)
        # extensions should take care to _append_ to the present value
@@ -2013,7 +2013,8 @@ class EditPage {
                        $flags,
                        false,
                        $wgUser,
-                       $content->getDefaultFormat()
+                       $content->getDefaultFormat(),
+                       $this->changeTags
                );
 
                if ( !$doEditStatus->isOK() ) {
@@ -2040,17 +2041,6 @@ class EditPage {
 
                $this->updateWatchlist();
 
-               if ( $this->changeTags && isset( $doEditStatus->value['revision'] ) ) {
-                       // If a revision was created, apply any change tags that were requested
-                       $addTags = $this->changeTags;
-                       $revId = $doEditStatus->value['revision']->getId();
-                       // Defer this both for performance and so that addTags() sees the rc_id
-                       // since the recentchange entry addition is deferred first (bug T100248)
-                       DeferredUpdates::addCallableUpdate( function() use ( $addTags, $revId ) {
-                               ChangeTags::addTags( $addTags, null, $revId );
-                       } );
-               }
-
                // If the content model changed, add a log entry
                if ( $changingContentModel ) {
                        $this->addContentModelChangeLogEntry(
index 66201b5..a1ea936 100644 (file)
@@ -34,7 +34,7 @@ use MediaWiki\Session\SessionManager;
 /**
  * Compatibility functions
  *
- * We support PHP 5.3.3 and up.
+ * We support PHP 5.5.9 and up.
  * Re-implementations of newer functions or functions in non-standard
  * PHP extensions may be included here.
  */
@@ -92,19 +92,6 @@ if ( !function_exists( 'mb_strrpos' ) ) {
        }
 }
 
-// gzdecode function only exists in PHP >= 5.4.0
-// http://php.net/gzdecode
-if ( !function_exists( 'gzdecode' ) ) {
-       /**
-        * @codeCoverageIgnore
-        * @param string $data
-        * @return string
-        */
-       function gzdecode( $data ) {
-               return gzinflate( substr( $data, 10, -8 ) );
-       }
-}
-
 // hash_equals function only exists in PHP >= 5.6.0
 // http://php.net/hash_equals
 if ( !function_exists( 'hash_equals' ) ) {
@@ -2379,16 +2366,13 @@ function wfEscapeShellArg( /*...*/ ) {
 /**
  * Check if wfShellExec() is effectively disabled via php.ini config
  *
- * @return bool|string False or one of (safemode,disabled)
+ * @return bool|string False or 'disabled'
  * @since 1.22
  */
 function wfShellExecDisabled() {
        static $disabled = null;
        if ( is_null( $disabled ) ) {
-               if ( wfIniGetBool( 'safe_mode' ) ) {
-                       wfDebug( "wfShellExec can't run in safe_mode, PHP's exec functions are too broken.\n" );
-                       $disabled = 'safemode';
-               } elseif ( !function_exists( 'proc_open' ) ) {
+               if ( !function_exists( 'proc_open' ) ) {
                        wfDebug( "proc_open() is disabled\n" );
                        $disabled = 'disabled';
                } else {
@@ -2429,9 +2413,7 @@ function wfShellExec( $cmd, &$retval = null, $environ = array(),
        $disabled = wfShellExecDisabled();
        if ( $disabled ) {
                $retval = 1;
-               return $disabled == 'safemode' ?
-                       'Unable to run external programs in safe mode.' :
-                       'Unable to run external programs, proc_open() is disabled.';
+               return 'Unable to run external programs, proc_open() is disabled.';
        }
 
        $includeStderr = isset( $options['duplicateStderr'] ) && $options['duplicateStderr'];
@@ -2672,10 +2654,8 @@ function wfInitShellLocale() {
        }
        $done = true;
        global $wgShellLocale;
-       if ( !wfIniGetBool( 'safe_mode' ) ) {
-               putenv( "LC_CTYPE=$wgShellLocale" );
-               setlocale( LC_CTYPE, $wgShellLocale );
-       }
+       putenv( "LC_CTYPE=$wgShellLocale" );
+       setlocale( LC_CTYPE, $wgShellLocale );
 }
 
 /**
index 5ede04f..e1cd5c7 100644 (file)
@@ -95,7 +95,7 @@ class Http {
         * @param string $url
         * @param array $options
         * @param string $caller The method making this request, for profiling
-        * @return string
+        * @return string|bool false on error
         */
        public static function get( $url, $options = array(), $caller = __METHOD__ ) {
                $args = func_get_args();
@@ -118,7 +118,7 @@ class Http {
         * @param string $url
         * @param array $options
         * @param string $caller The method making this request, for profiling
-        * @return string
+        * @return string|bool false on error
         */
        public static function post( $url, $options = array(), $caller = __METHOD__ ) {
                return Http::request( 'POST', $url, $options, $caller );
@@ -131,7 +131,7 @@ class Http {
         * @return bool
         */
        public static function isLocalURL( $url ) {
-               global $wgCommandLineMode, $wgLocalVirtualHosts, $wgConf;
+               global $wgCommandLineMode, $wgLocalVirtualHosts;
 
                if ( $wgCommandLineMode ) {
                        return false;
@@ -156,9 +156,7 @@ class Http {
                                        $domain = $domainPart . '.' . $domain;
                                }
 
-                               if ( in_array( $domain, $wgLocalVirtualHosts )
-                                       || $wgConf->isLocalVHost( $domain )
-                               ) {
+                               if ( in_array( $domain, $wgLocalVirtualHosts ) ) {
                                        return true;
                                }
                        }
@@ -818,7 +816,7 @@ class CurlHttpRequest extends MWHttpRequest {
                        MediaWiki\suppressWarnings();
                        if ( !curl_setopt( $curlHandle, CURLOPT_FOLLOWLOCATION, true ) ) {
                                wfDebug( __METHOD__ . ": Couldn't set CURLOPT_FOLLOWLOCATION. " .
-                                       "Probably safe_mode or open_basedir is set.\n" );
+                                       "Probably open_basedir is set.\n" );
                                // Continue the processing. If it were in curl_setopt_array,
                                // processing would have halted on its entry
                        }
@@ -863,8 +861,8 @@ class CurlHttpRequest extends MWHttpRequest {
                }
 
                if ( version_compare( PHP_VERSION, '5.6.0', '<' ) ) {
-                       if ( strval( ini_get( 'open_basedir' ) ) !== '' || wfIniGetBool( 'safe_mode' ) ) {
-                               wfDebug( "Cannot follow redirects in safe mode\n" );
+                       if ( strval( ini_get( 'open_basedir' ) ) !== '' ) {
+                               wfDebug( "Cannot follow redirects when open_basedir is set\n" );
                                return false;
                        }
                }
index e527001..459fb4d 100644 (file)
@@ -1310,6 +1310,9 @@ class OutputPage extends ContextSource {
                if ( $this->getConfig()->get( 'ContentHandlerUseDB' ) ) {
                        $fields[] = 'page_content_model';
                }
+               if ( $this->getConfig()->get( 'PageLanguageUseDB' ) ) {
+                       $fields[] = 'page_lang';
+               }
 
                $res = $dbr->select( array( 'page', 'page_props' ),
                        $fields,
index 0a3a324..2d6e535 100644 (file)
@@ -58,53 +58,76 @@ class PageProps {
        }
 
        /**
-        * Given one or more Titles and the name of a property, returns an
-        * associative array mapping page ID to property value. Pages in the
-        * provided set of Titles that do not have a value for the given
-        * property will not appear in the returned array. If a single Title
-        * is provided, it does not need to be passed in an array, but an array
-        * will always be returned. An empty array will be returned if no
-        * matching properties were found.
-        *
-        * @param array|Title $titles
-        * @param string $propertyName
+        * Given one or more Titles and one or more names of properties,
+        * returns an associative array mapping page ID to property value.
+        * Pages in the provided set of Titles that do not have a value for
+        * the given properties will not appear in the returned array. If a
+        * single Title is provided, it does not need to be passed in an array,
+        * but an array will always be returned. If a single property name is
+        * provided, it does not need to be passed in an array. In that case,
+        * an associtive array mapping page ID to property value will be
+        * returned; otherwise, an associative array mapping page ID to
+        * an associative array mapping property name to property value will be
+        * returned. An empty array will be returned if no matching properties
+        * were found.
         *
+        * @param Title[]|Title $titles
+        * @param string[]|string $propertyNames
         * @return array associative array mapping page ID to property value
-        *
         */
-       public function getProperty( $titles, $propertyName ) {
+       public function getProperties( $titles, $propertyNames ) {
+               if ( is_array( $propertyNames ) ) {
+                       $gotArray = true;
+               } else {
+                       $propertyNames = array( $propertyNames );
+                       $gotArray = false;
+               }
+
                $values = array();
                $goodIDs = $this->getGoodIDs( $titles );
                $queryIDs = array();
                foreach ( $goodIDs as $pageID ) {
-                       $propertyValue = $this->getCachedProperty( $pageID, $propertyName );
-                       if ( $propertyValue === false ) {
-                               $queryIDs[] = $pageID;
-                       } else {
-                               $values[$pageID] = $propertyValue;
+                       foreach ( $propertyNames as $propertyName ) {
+                               $propertyValue = $this->getCachedProperty( $pageID, $propertyName );
+                               if ( $propertyValue === false ) {
+                                       $queryIDs[] = $pageID;
+                                       break;
+                               } else {
+                                       if ( $gotArray ) {
+                                               $values[$pageID][$propertyName] = $propertyValue;
+                                       } else {
+                                               $values[$pageID] = $propertyValue;
+                                       }
+                               }
                        }
                }
 
-               if ( $queryIDs != array() ) {
+               if ( $queryIDs ) {
                        $dbr = wfGetDB( DB_SLAVE );
                        $result = $dbr->select(
                                'page_props',
                                array(
                                        'pp_page',
+                                       'pp_propname',
                                        'pp_value'
                                ),
                                array(
                                        'pp_page' => $queryIDs,
-                                       'pp_propname' => $propertyName
+                                       'pp_propname' => $propertyNames
                                ),
                                __METHOD__
                        );
 
                        foreach ( $result as $row ) {
                                $pageID = $row->pp_page;
+                               $propertyName = $row->pp_propname;
                                $propertyValue = $row->pp_value;
                                $this->cacheProperty( $pageID, $propertyName, $propertyValue );
-                               $values[$pageID] = $propertyValue;
+                               if ( $gotArray ) {
+                                       $values[$pageID][$propertyName] = $propertyValue;
+                               } else {
+                                       $values[$pageID] = $propertyValue;
+                               }
                        }
                }
 
@@ -121,12 +144,10 @@ class PageProps {
         * will always be returned. An empty array will be returned if no
         * matching properties were found.
         *
-        * @param array|Title $titles
-        *
+        * @param Title[]|Title $titles
         * @return array associative array mapping page ID to property value array
-        *
         */
-       public function getProperties( $titles ) {
+       public function getAllProperties( $titles ) {
                $values = array();
                $goodIDs = $this->getGoodIDs( $titles );
                $queryIDs = array();
@@ -178,10 +199,8 @@ class PageProps {
        }
 
        /**
-        * @param array|Title $titles
-        *
+        * @param Title[]|Title $titles
         * @return array array of good page IDs
-        *
         */
        private function getGoodIDs( $titles ) {
                $result = array();
@@ -206,9 +225,7 @@ class PageProps {
         *
         * @param int $pageID page ID of page being queried
         * @param string $propertyName name of property being queried
-        *
         * @return string|bool property value array or false if not found
-        *
         */
        private function getCachedProperty( $pageID, $propertyName ) {
                if ( $this->cache->has( $pageID, $propertyName, self::CACHE_TTL ) ) {
@@ -227,9 +244,7 @@ class PageProps {
         * Get properties from the cache.
         *
         * @param int $pageID page ID of page being queried
-        *
         * @return string|bool property value array or false if not found
-        *
         */
        private function getCachedProperties( $pageID ) {
                if ( $this->cache->has( 0, $pageID, self::CACHE_TTL ) ) {
@@ -244,7 +259,6 @@ class PageProps {
         * @param int $pageID page ID of page being cached
         * @param string $propertyName name of property being cached
         * @param mixed $propertyValue value of property
-        *
         */
        private function cacheProperty( $pageID, $propertyName, $propertyValue ) {
                $this->cache->set( $pageID, $propertyName, $propertyValue );
@@ -254,8 +268,7 @@ class PageProps {
         * Save properties to the cache.
         *
         * @param int $pageID page ID of page being cached
-        * @param array $pageProperties associative array of page properties to be cached
-        *
+        * @param string[] $pageProperties associative array of page properties to be cached
         */
        private function cacheProperties( $pageID, $pageProperties ) {
                $this->cache->clear( $pageID );
index b9a1c37..3ceb558 100644 (file)
@@ -809,5 +809,10 @@ if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
 wfDebug( "Fully initialised\n" );
 $wgFullyInitialised = true;
 
+// T125455
+if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
+       MediaWiki\Session\SessionManager::singleton()->checkIpLimits();
+}
+
 Profiler::instance()->scopedProfileOut( $ps_extensions );
 Profiler::instance()->scopedProfileOut( $ps_setup );
index 50721af..806def2 100644 (file)
@@ -145,8 +145,9 @@ class Title implements LinkTarget {
        /** @var bool The (string) language code of the page's language and content code. */
        private $mPageLanguage = false;
 
-       /** @var string The page language code from the database */
-       private $mDbPageLanguage = null;
+       /** @var string|boolean|null The page language code from the database, null if not saved in
+        * the database or false if not loaded, yet. */
+       private $mDbPageLanguage = false;
 
        /** @var TitleValue A corresponding TitleValue object */
        private $mTitleValue = null;
@@ -385,7 +386,7 @@ class Title implements LinkTarget {
         * @return array
         */
        protected static function getSelectFields() {
-               global $wgContentHandlerUseDB;
+               global $wgContentHandlerUseDB, $wgPageLanguageUseDB;
 
                $fields = array(
                        'page_namespace', 'page_title', 'page_id',
@@ -396,6 +397,10 @@ class Title implements LinkTarget {
                        $fields[] = 'page_content_model';
                }
 
+               if ( $wgPageLanguageUseDB ) {
+                       $fields[] = 'page_lang';
+               }
+
                return $fields;
        }
 
@@ -1261,6 +1266,7 @@ class Title implements LinkTarget {
         * show "inactive" CSS or JS.
         *
         * @return bool
+        * @todo FIXME: Rename to isSiteConfigPage() and remove deprecated hook
         */
        public function isCssOrJsPage() {
                $isCssOrJsPage = NS_MEDIAWIKI == $this->mNamespace
@@ -1279,6 +1285,7 @@ class Title implements LinkTarget {
        /**
         * Is this a .css or .js subpage of a user page?
         * @return bool
+        * @todo FIXME: Rename to isUserConfigPage()
         */
        public function isCssJsSubpage() {
                return ( NS_USER == $this->mNamespace && $this->isSubpage()
@@ -3301,7 +3308,7 @@ class Title implements LinkTarget {
                $this->mContentModel = false;
                $this->mEstimateRevisions = null;
                $this->mPageLanguage = false;
-               $this->mDbPageLanguage = null;
+               $this->mDbPageLanguage = false;
                $this->mIsBigDeletion = null;
        }
 
@@ -4615,6 +4622,27 @@ class Title implements LinkTarget {
                return $unprefixed;
        }
 
+       /**
+        * Returns the page language code saved in the database, if $wgPageLanguageUseDB is set
+        * to true in LocalSettings.php, otherwise returns false. If there is no language saved in
+        * the db, it will return NULL.
+        *
+        * @return string|null|boolean
+        */
+       private function getDbPageLanguageCode() {
+               global $wgPageLanguageUseDB;
+
+               // check, if the page language could be saved in the database, and if so and
+               // the value is not requested already, lookup the page language using LinkCache
+               if ( $wgPageLanguageUseDB && $this->mDbPageLanguage === false ) {
+                       $linkCache = LinkCache::singleton();
+                       $linkCache->addLinkObj( $this );
+                       $this->mDbPageLanguage = $linkCache->getGoodLinkFieldObj( $this, 'lang' );
+               }
+
+               return $this->mDbPageLanguage;
+       }
+
        /**
         * Get the language in which the content of this page is written in
         * wikitext. Defaults to $wgContLang, but in certain cases it can be
@@ -4631,8 +4659,9 @@ class Title implements LinkTarget {
                }
 
                // Checking if DB language is set
-               if ( $this->mDbPageLanguage ) {
-                       return wfGetLangObj( $this->mDbPageLanguage );
+               $dbPageLanguage = $this->getDbPageLanguageCode();
+               if ( $dbPageLanguage ) {
+                       return wfGetLangObj( $dbPageLanguage );
                }
 
                if ( !$this->mPageLanguage || $this->mPageLanguage[1] !== $wgLanguageCode ) {
index fb6c3e6..7bc3039 100644 (file)
  * @file
  */
 
-# Die if register_globals is enabled (PHP <=5.3)
-# This must be done before any globals are set by the code
-if ( ini_get( 'register_globals' ) ) {
-       die( 'MediaWiki does not support installations where register_globals is enabled. Please see '
-               . '<a href="https://www.mediawiki.org/wiki/register_globals">mediawiki.org</a> '
-               . 'for help on how to disable it.' );
-}
-
-if ( function_exists( 'get_magic_quotes_gpc' ) && get_magic_quotes_gpc() ) {
-       die( 'MediaWiki does not function when magic quotes are enabled. Please see the '
-               . '<a href="https://php.net/manual/security.magicquotes.disabling.php">PHP Manual</a> '
-               . 'for help on how to disable magic quotes.' );
-}
 
 # bug 15461: Make IE8 turn off content sniffing. Everybody else should ignore this
 # We're adding it here so that it's *always* set, even for alternate entry
 # points and when $wgOut gets disabled or overridden.
 header( 'X-Content-Type-Options: nosniff' );
 
-# Approximate $_SERVER['REQUEST_TIME_FLOAT'] for PHP<5.4
-if ( !isset( $_SERVER['REQUEST_TIME_FLOAT'] ) ) {
-       $_SERVER['REQUEST_TIME_FLOAT'] = microtime( true );
-}
-
 /**
  * @var float Request start time as fractional seconds since epoch
  * @deprecated since 1.25; use $_SERVER['REQUEST_TIME_FLOAT'] or
index 43260d0..33a69fb 100644 (file)
@@ -744,7 +744,11 @@ class HistoryPager extends ReverseChronologicalPager {
                }
 
                # Tags
-               list( $tagSummary, $newClasses ) = ChangeTags::formatSummaryRow( $row->ts_tags, 'history' );
+               list( $tagSummary, $newClasses ) = ChangeTags::formatSummaryRow(
+                       $row->ts_tags,
+                       'history',
+                       $this->getContext()
+               );
                $classes = array_merge( $classes, $newClasses );
                if ( $tagSummary !== '' ) {
                        $s2 .= " $tagSummary";
index 6f33db7..4027b35 100644 (file)
@@ -204,7 +204,7 @@ class InfoAction extends FormlessAction {
                $pageCounts = $this->pageCounts( $this->page );
 
                $pageProperties = array();
-               $props = PageProps::getInstance()->getProperties( $title );
+               $props = PageProps::getInstance()->getAllProperties( $title );
                if ( isset( $props[$id] ) ) {
                        $pageProperties = $props[$id];
                }
@@ -410,9 +410,9 @@ class InfoAction extends FormlessAction {
                // Is this page affected by the cascading protection of something which includes it?
                if ( $title->isCascadeProtected() ) {
                        $cascadingFrom = '';
-                       $sources = $title->getCascadeProtectionSources(); // Array deferencing is in PHP 5.4 :(
+                       $sources = $title->getCascadeProtectionSources()[0];
 
-                       foreach ( $sources[0] as $sourceTitle ) {
+                       foreach ( $sources as $sourceTitle ) {
                                $cascadingFrom .= Html::rawElement(
                                        'li', array(), Linker::linkKnown( $sourceTitle ) );
                        }
index c6abf40..cb08ec1 100644 (file)
@@ -305,6 +305,10 @@ class ApiPageSet extends ApiBase {
                        $pageFlds['page_content_model'] = null;
                }
 
+               if ( $this->getConfig()->get( 'PageLanguageUseDB' ) ) {
+                       $pageFlds['page_lang'] = null;
+               }
+
                // only store non-default fields
                $this->mRequestedPageFields = array_diff_key( $this->mRequestedPageFields, $pageFlds );
 
index 1f992f8..ca85fe5 100644 (file)
@@ -40,63 +40,41 @@ class ApiQueryPageProps extends ApiQueryBase {
        public function execute() {
                # Only operate on existing pages
                $pages = $this->getPageSet()->getGoodTitles();
-               if ( !count( $pages ) ) {
-                       # Nothing to do
-                       return;
-               }
 
                $this->params = $this->extractRequestParams();
-
-               $this->addTables( 'page_props' );
-               $this->addFields( array( 'pp_page', 'pp_propname', 'pp_value' ) );
-               $this->addWhereFld( 'pp_page', array_keys( $pages ) );
-
                if ( $this->params['continue'] ) {
-                       $this->addWhere( 'pp_page >=' . intval( $this->params['continue'] ) );
-               }
-
-               if ( $this->params['prop'] ) {
-                       $this->addWhereFld( 'pp_propname', $this->params['prop'] );
+                       $continueValue = intval( $this->params['continue'] );
+                       $this->dieContinueUsageIf( strval( $continueValue ) !== $this->params['continue'] );
+                       $filteredPages = array();
+                       foreach ( $pages as $id => $page ) {
+                               if ( $id >= $continueValue ) {
+                                       $filteredPages[$id] = $page;
+                               }
+                       }
+                       $pages = $filteredPages;
                }
 
-               # Force a sort order to ensure that properties are grouped by page
-               # But only if pp_page is not constant in the WHERE clause.
-               if ( count( $pages ) > 1 ) {
-                       $this->addOption( 'ORDER BY', 'pp_page' );
+               if ( !count( $pages ) ) {
+                       # Nothing to do
+                       return;
                }
 
-               $res = $this->select( __METHOD__ );
-               $currentPage = 0; # Id of the page currently processed
+               $pageProps = PageProps::getInstance();
                $props = array();
                $result = $this->getResult();
+               if ( $this->params['prop'] ) {
+                       $propnames = $this->params['prop'];
+                       $properties = $pageProps->getProperties( $pages, $propnames );
+               } else {
+                       $properties = $pageProps->getAllProperties( $pages );
+               }
 
-               foreach ( $res as $row ) {
-                       if ( $currentPage != $row->pp_page ) {
-                               # Different page than previous row, so add the properties to
-                               # the result and save the new page id
-
-                               if ( $currentPage ) {
-                                       if ( !$this->addPageProps( $result, $currentPage, $props ) ) {
-                                               # addPageProps() indicated that the result did not fit
-                                               # so stop adding data. Reset props so that it doesn't
-                                               # get added again after loop exit
-
-                                               $props = array();
-                                               break;
-                                       }
-
-                                       $props = array();
-                               }
+               ksort( $properties );
 
-                               $currentPage = $row->pp_page;
+               foreach ( $properties as $page => $props ) {
+                       if ( !$this->addPageProps( $result, $page, $props ) ) {
+                               break;
                        }
-
-                       $props[$row->pp_propname] = $row->pp_value;
-               }
-
-               if ( count( $props ) ) {
-                       # Add any remaining properties to the results
-                       $this->addPageProps( $result, $currentPage, $props );
                }
        }
 
index 055c7fe..ab2c4ef 100644 (file)
@@ -75,7 +75,8 @@ class ApiRollback extends ApiBase {
                        $token,
                        $params['markbot'],
                        $details,
-                       $user
+                       $user,
+                       $params['tags']
                );
 
                if ( $retval ) {
@@ -91,10 +92,6 @@ class ApiRollback extends ApiBase {
                // Watch pages
                $this->setWatch( $watch, $titleObj, 'watchrollback' );
 
-               if ( count( $params['tags'] ) ) {
-                       ChangeTags::addTags( $params['tags'], null, intval( $details['newid'] ), null, null );
-               }
-
                $info = array(
                        'title' => $titleObj->getPrefixedText(),
                        'pageid' => intval( $details['current']->getPage() ),
index 82f66a8..d674846 100644 (file)
@@ -703,6 +703,13 @@ class ApiUpload extends ApiBase {
                        $watch = true;
                }
 
+               if ( $this->mParams['tags'] ) {
+                       $status = ChangeTags::canAddTagsAccompanyingChange( $this->mParams['tags'], $this->getUser() );
+                       if ( !$status->isOK() ) {
+                               $this->dieStatus( $status );
+                       }
+               }
+
                // No errors, no warnings: do the upload
                if ( $this->mParams['async'] ) {
                        $progress = UploadBase::getSessionStatus( $this->getUser(), $this->mParams['filekey'] );
@@ -720,6 +727,7 @@ class ApiUpload extends ApiBase {
                                        'filename' => $this->mParams['filename'],
                                        'filekey' => $this->mParams['filekey'],
                                        'comment' => $this->mParams['comment'],
+                                       'tags' => $this->mParams['tags'],
                                        'text' => $this->mParams['text'],
                                        'watch' => $watch,
                                        'session' => $this->getContext()->exportSession()
@@ -730,7 +738,7 @@ class ApiUpload extends ApiBase {
                } else {
                        /** @var $status Status */
                        $status = $this->mUpload->performUpload( $this->mParams['comment'],
-                               $this->mParams['text'], $watch, $this->getUser() );
+                               $this->mParams['text'], $watch, $this->getUser(), $this->mParams['tags'] );
 
                        if ( !$status->isGood() ) {
                                $error = $status->getErrorsArray();
@@ -764,6 +772,10 @@ class ApiUpload extends ApiBase {
                        'comment' => array(
                                ApiBase::PARAM_DFLT => ''
                        ),
+                       'tags' => array(
+                               ApiBase::PARAM_TYPE => 'tags',
+                               ApiBase::PARAM_ISMULTI => true,
+                       ),
                        'text' => array(
                                ApiBase::PARAM_TYPE => 'text',
                        ),
index 4a1f2f1..6ea643a 100644 (file)
        "apihelp-upload-description": "Upload a file, or get the status of pending uploads.\n\nSeveral methods are available:\n* Upload file contents directly, using the <var>$1file</var> parameter.\n* Upload the file in pieces, using the <var>$1filesize</var>, <var>$1chunk</var>, and <var>$1offset</var> parameters.\n* Have the MediaWiki server fetch a file from a URL, using the <var>$1url</var> parameter.\n* Complete an earlier upload that failed due to warnings, using the <var>$1filekey</var> parameter.\nNote that the HTTP POST must be done as a file upload (i.e. using <code>multipart/form-data</code>) when sending the <var>$1file</var>.",
        "apihelp-upload-param-filename": "Target filename.",
        "apihelp-upload-param-comment": "Upload comment. Also used as the initial page text for new files if <var>$1text</var> is not specified.",
+       "apihelp-upload-param-tags": "Change tags to apply to the upload log entry and file page revision.",
        "apihelp-upload-param-text": "Initial page text for new files.",
        "apihelp-upload-param-watch": "Watch the page.",
        "apihelp-upload-param-watchlist": "Unconditionally add or remove the page from the current user's watchlist, use preferences or do not change watch.",
index f517aad..9e60fb9 100644 (file)
@@ -16,7 +16,7 @@
                        "YoViajo"
                ]
        },
-       "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 correos]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API de anuncios]\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ía funcionar, pero la API aún está 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 un encabezado HTTP con la clave \"MediaWiki-API-Error\" y ambos valores, del encabezado y el código de error, se establecerán en el mismo valor. Para más información, véase [[mw:API:Errors_and_warnings|API: Errores y advertencias]].",
+       "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 correos]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API de anuncios]\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ía funcionar, pero la API aún está 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 un encabezado HTTP con la clave \"MediaWiki-API-Error\" y ambos valores, del encabezado y el código de error, se establecerán en 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-param-action": "Qué acción se realizará.",
        "apihelp-main-param-format": "El formato de la salida.",
        "apihelp-main-param-smaxage": "Establece el encabezado <code>s-maxage</code> durante estos segundos. Los errores nunca se almacenan en caché.",
        "apihelp-managetags-example-delete": "Eliminar la etiqueta <kbd>vandlaismo</kbd> con el motivo <kbd>mal deletreado</kbd>",
        "apihelp-managetags-example-activate": "Activar una etiqueta llamada <kbd>spam</kbd> con el motivo <kbd>For use in edit patrolling</kbd>",
        "apihelp-managetags-example-deactivate": "Desactivar una etiqueta llamada <kbd>spam</kbd> con el motivo <kbd>No longer required</kbd>",
+       "apihelp-mergehistory-description": "Fusionar historiales de páginas.",
+       "apihelp-mergehistory-param-reason": "Motivo para la fusión del historial.",
        "apihelp-move-description": "Trasladar una página.",
        "apihelp-move-param-from": "Título de la página a renombrar. No se puede utilizar con <var>$1fromid</var>.",
        "apihelp-move-param-fromid": "ID de la página a renombrar. No se puede utilizar con <var>$1from</var>.",
        "apihelp-query+allrevisions-param-namespace": "Listar solo las páginas en este espacio de nombres.",
        "apihelp-query+allrevisions-example-user": "Listar las últimas 50 contribuciones del usuario <kbd>Example</kbd>.",
        "apihelp-query+allrevisions-example-ns-main": "Listar las primeras 50 revisiones en el espacio de nombres principal.",
-       "apihelp-query+mystashedfiles-param-limit": "Cuántos archivos obtener.",
+       "apihelp-query+mystashedfiles-param-limit": "Cuántos archivos obtener.",
        "apihelp-query+alltransclusions-param-prefix": "Buscar todos los títulos transcluidos que comiencen con este valor.",
        "apihelp-query+alltransclusions-param-prop": "Qué piezas de información incluir:",
        "apihelp-query+alltransclusions-example-unique": "Listar títulos transcluidos de forma única.",
index 42b86d8..265fb66 100644 (file)
@@ -4,13 +4,35 @@
                        "Nike",
                        "MrTapsa",
                        "Pitke",
-                       "Stryn"
+                       "Stryn",
+                       "Jaakkoh"
                ]
        },
        "apihelp-block-description": "Estä käyttäjä.",
        "apihelp-block-param-reason": "Eston syy.",
+       "apihelp-compare-param-fromtitle": "Ensimmäinen vertailtava otsikko.",
+       "apihelp-createaccount-param-name": "Käyttäjätunnus.",
+       "apihelp-createaccount-param-email": "Käyttäjän sähköpostiosoite (valinnainen).",
+       "apihelp-createaccount-param-realname": "Käyttäjän oikea nimi (valinnainen).",
        "apihelp-delete-description": "Poista sivu.",
+       "apihelp-delete-param-watch": "Lisää sivu nykyisen käyttäjän tarkkailulistalle.",
+       "apihelp-edit-description": "Luo ja muokkaa sivuja.",
+       "apihelp-edit-param-text": "Sivun sisältö.",
+       "apihelp-edit-param-minor": "Vähäinen muokkaus.",
+       "apihelp-edit-param-notminor": "Ei-vähäinen muokkaus.",
+       "apihelp-edit-example-edit": "Muokkaa sivua.",
+       "apihelp-emailuser-description": "Lähetä sähköpostia käyttäjälle.",
+       "apihelp-emailuser-param-subject": "Otsikko.",
+       "apihelp-emailuser-param-ccme": "Lähetä kopio tästä viestistä minulle.",
        "apihelp-emailuser-example-email": "Lähetä käyttäjälle <kbd>WikiSysop</kbd> sähköposti, jossa lukee <kbd>Content</kbd>.",
+       "apihelp-expandtemplates-param-title": "Sivun otsikko.",
+       "apihelp-feedrecentchanges-param-limit": "Kerralla näytettävien tulosten enimmäismäärän",
+       "apihelp-feedrecentchanges-param-hideminor": "Piilota vähäiset muokkaukset.",
+       "apihelp-feedrecentchanges-param-hideanons": "Piilota anonyymien käyttäjien tekemät muokkaukset.",
+       "apihelp-feedrecentchanges-param-hideliu": "Piilota rekisteröityneiden käyttäjien tekemät muokkaukset.",
+       "apihelp-filerevert-param-filename": "Kohteen tiedostonimi, ilman \"File:\"-etuliitettä.",
+       "apihelp-filerevert-param-comment": "Lähetä kommentti.",
+       "apihelp-imagerotate-description": "Käännä kuva tai kuvia.",
        "apihelp-query+linkshere-param-show": "Näytä vain kohteet, jotka täyttävät nämä kriteerit:\n;redirect:Näytä vain uudelleenohjaukset.\n;!redirect:Näytä vain ei-uudelleenohjaukset",
        "apihelp-tag-example-rev": "Lisää tunniste <kbd>vandalism</kbd> versioon 123 antamatta perustelua.",
        "apihelp-upload-param-stash": "Mikäli valittu, palvelin säilöö tiedoston väliaikaisesti tallentamisen sijaan."
index 751471d..e66a900 100644 (file)
        "apihelp-managetags-example-delete": "Borrar a etiqueta <kbd>vandalismo</kbd> coa razón <kbd>Erros ortográficos</kbd>",
        "apihelp-managetags-example-activate": "Activar a etiqueta chamada <kbd>spam</kbd> coa razón <kbd>For use in edit patrolling</kbd>",
        "apihelp-managetags-example-deactivate": "Desactivar a etiqueta chamada <kbd>spam</kbd> coa razón <kbd>No longer required</kbd>",
+       "apihelp-mergehistory-description": "Fusionar os historiais das páxinas.",
+       "apihelp-mergehistory-param-from": "Título da páxina desde a que se fusionará o historial. Non pode usarse xunto con <var>$1fromid</var>.",
+       "apihelp-mergehistory-param-fromid": "Identificador da páxina desde a que se fusionará o historial. Non pode usarse xunto con <var>$1from</var>.",
+       "apihelp-mergehistory-param-to": "Título da páxina á que se fusionará o historial. Non pode usarse xunto con <var>$1toid</var>.",
+       "apihelp-mergehistory-param-toid": "Identificador da páxina á que se fusionará o historial. Non pode usarse xunto con <var>$1to</var>.",
+       "apihelp-mergehistory-param-reason": "Razón para a fusión de historiais.",
+       "apihelp-mergehistory-example-merge": "Fusionar o historial enteiro de <kbd>PáxinaVella</kbd> en <kbd>PáxinaNova</kbd>.",
+       "apihelp-mergehistory-example-merge-timestamp": "Fusionar as revisións da páxina <kbd>PáxinaVella</kbd> con data <kbd>2015-12-31T04:37:41Z</kbd> en <kbd>PáxinaNova</kbd>.",
        "apihelp-move-description": "Mover unha páxina.",
        "apihelp-move-param-from": "Título da páxina que quere renomear. Non pode usarse xunto con <var>$1fromid</var>.",
        "apihelp-move-param-fromid": "Identificador da páxina que quere renomear. Non pode usarse xunto con <var>$1from</var>.",
index e18cd60..a759054 100644 (file)
@@ -13,7 +13,7 @@
                        "Macofe"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|תיעוד]]\n* [[mw:API: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, תישלח כותרת HTTP עם המפתח \"MediaWiki-API-Error\" ואז גם הערך של הכותרת וגם קוד השגיאה יוגדרו לאותו ערך. למידע נוסף ר' [[mw:API:Errors_and_warnings|API: שגיאות ואזהרות]].\n\n<strong>בדיקה:</strong> לבדיקה קלה יותר של בקשות ר' [[Special:ApiSandbox]].",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|תיעוד]]\n* [[mw:API: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, תישלח כותרת HTTP עם המפתח \"MediaWiki-API-Error\" ואז גם הערך של הכותרת וגם קוד השגיאה יוגדרו לאותו ערך. למידע נוסף ר' [[mw:API:Errors_and_warnings|API: שגיאות ואזהרות]].\n\n<strong>בדיקה:</strong> לבדיקה קלה יותר של בקשות ר' [[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]] למידע נוסף.",
index 4e94d58..c811f56 100644 (file)
@@ -11,7 +11,7 @@
                        "Macofe"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentation]]\n* [[mw: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/ the mediawiki-api-announce メーリングリスト]に参加してください。\n\n<strong>誤ったリクエスト:</strong> 誤ったリクエストが API に送られた場合、\"MediaWiki-API-Error\" HTTP ヘッダーが送信され、そのヘッダーの値と送り返されるエラーコードは同じ値にセットされます。より詳しい情報は [[mw:API:Errors_and_warnings|API: Errors and warnings]] を参照してください。\n\n<strong>テスト:</strong> API のリクエストのテストは、[[Special:ApiSandbox]]で簡単に行えます。",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|説明文書]]\n* [[mw:API: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/ the mediawiki-api-announce メーリングリスト]に参加してください。\n\n<strong>誤ったリクエスト:</strong> 誤ったリクエストが API に送られた場合、\"MediaWiki-API-Error\" HTTP ヘッダーが送信され、そのヘッダーの値と送り返されるエラーコードは同じ値にセットされます。より詳しい情報は [[mw:API:Errors_and_warnings|API: Errors and warnings]] を参照してください。\n\n<strong>テスト:</strong> API のリクエストのテストは、[[Special:ApiSandbox]]で簡単に行えます。",
        "apihelp-main-param-action": "実行する操作です。",
        "apihelp-main-param-format": "出力する形式です。",
        "apihelp-main-param-smaxage": "<code>s-maxage</code> HTTP キャッシュ コントロール ヘッダー に、この秒数を設定します。エラーがキャッシュされることはありません。",
        "apihelp-managetags-example-delete": "<kbd>vandlaism</kbd> タグを <kbd>Misspelt</kbd> という理由で削除する",
        "apihelp-managetags-example-activate": "<kbd>spam</kbd> という名前のタグを <kbd>For use in edit patrolling</kbd> という理由で有効化する",
        "apihelp-managetags-example-deactivate": "<kbd>No longer required</kbd> という理由でタグ <kbd>spam</kbd> を無効化する",
+       "apihelp-mergehistory-description": "ページの履歴を統合する。",
        "apihelp-move-description": "ページを移動します。",
        "apihelp-move-param-from": "移動するページのページ名です。<var>$1fromid</var> とは同時に使用できません。",
        "apihelp-move-param-fromid": "移動するページのページIDです。<var>$1from</var> とは同時に使用できません。",
index b300f88..1ce88e4 100644 (file)
        "apihelp-block-param-noemail": "Scanza st'utente 'e mannà mmasciate pe' bbìa d' 'o wiki. (Servisse 'o <code>blockemail</code> buono).",
        "apihelp-block-param-hidename": "Annascunne 'o nomme utente d' 'o riggistro 'e blocche (Addimanna 'e premmesse 'e <code>hideuser</code>).",
        "apihelp-block-param-reblock": "Si l'utente è già bluccato, sovrascrive 'o blocco esistente.",
+       "apihelp-block-param-watchuser": "Vide 'a paggena utente o ll'indirizzo IP 'e ll'utente e paggene 'e chiacchiera.",
+       "apihelp-block-example-ip-simple": "Blocca l'indirizzo IP <kbd>192.0.2.5</kbd> pe' tre gghiuorne p' 'o mutivo <kbd>First strike</kbd>.",
+       "apihelp-block-example-user-complex": "Blocca l'utente <kbd>Vandal</kbd> a tiempo indeterminato c' 'o mutivo <kbd>Vandalism</kbd>, nun 'o ffà crià cunte nuove nè mannà mmasciate e-mail.",
+       "apihelp-checktoken-description": "Cuntrolla 'a validità 'e nu token 'a <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-checktoken-param-type": "Tipo 'e token ncurzo 'e test.",
        "apihelp-checktoken-param-token": "Token 'a testà.",
        "apihelp-checktoken-param-maxtokenage": "Massima ammaturità cunzentuta p' 'o token, 'n secunde.",
        "apihelp-createaccount-param-name": "Nomme utente.",
        "apihelp-createaccount-param-password": "Password (sarrà gnurata se mpustato nu <var>$1mailpassword</var>).",
        "apihelp-createaccount-param-domain": "Dumminio pe' ffà autenticaziona 'a fore (opzionale).",
+       "apihelp-createaccount-param-token": "'A criazione 'e token p' 'o cunto se ngarraje dint'a primma richiesta.",
+       "apihelp-createaccount-param-email": "Indirizzo Email 'e ll'utente (opzionale).",
+       "apihelp-createaccount-param-realname": "Nomme overo 'e ll'utente (opzionale).",
+       "apihelp-createaccount-param-mailpassword": "Si mpustato a qualunque valore, na password casuale sarrà mannat'a ll'utente.",
+       "apihelp-createaccount-param-reason": "Raggiona, a facoltativa, d' 'a criaziona 'e nu cunto a mpizzà int' 'e reggistre.",
+       "apihelp-createaccount-param-language": "Codece 'e llengua a mpustà comme predefinita pe' n'utente (opzionale, 'e default fosse 'a lengue d' 'e cuntenute).",
        "apihelp-delete-description": "Scancella 'na paggena.",
        "apihelp-edit-example-edit": "Cagna paggena.",
        "apihelp-emailuser-description": "E-mail a n'utente.",
index df4f881..2108b33 100644 (file)
        "apihelp-upload-description": "{{doc-apihelp-description|upload}}",
        "apihelp-upload-param-filename": "{{doc-apihelp-param|upload|filename}}",
        "apihelp-upload-param-comment": "{{doc-apihelp-param|upload|comment}}",
+       "apihelp-upload-param-tags": "{{doc-apihelp-param|upload|tags}}",
        "apihelp-upload-param-text": "{{doc-apihelp-param|upload|text}}",
        "apihelp-upload-param-watch": "{{doc-apihelp-param|upload|watch}}",
        "apihelp-upload-param-watchlist": "{{doc-apihelp-param|upload|watchlist}}",
diff --git a/includes/api/i18n/sk.json b/includes/api/i18n/sk.json
new file mode 100644 (file)
index 0000000..823e29f
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Teslaton"
+               ]
+       },
+       "apihelp-main-param-format": "Formát výstupu."
+}
index 8f334cc..88d8b5a 100644 (file)
@@ -178,7 +178,7 @@ class LinkBatch {
         * @return bool|ResultWrapper
         */
        public function doQuery() {
-               global $wgContentHandlerUseDB;
+               global $wgContentHandlerUseDB, $wgPageLanguageUseDB;
 
                if ( $this->isEmpty() ) {
                        return false;
@@ -193,6 +193,9 @@ class LinkBatch {
                if ( $wgContentHandlerUseDB ) {
                        $fields[] = 'page_content_model';
                }
+               if ( $wgPageLanguageUseDB ) {
+                       $fields[] = 'page_lang';
+               }
 
                $conds = $this->constructSet( 'page', $dbr );
 
index 5ea926b..f199891 100644 (file)
@@ -150,9 +150,10 @@ class LinkCache {
         * @param int $redir Whether the page is a redirect
         * @param int $revision Latest revision's ID
         * @param string|null $model Latest revision's content model ID
+        * @param string|null $lang Language code of the page, if not the content language
         */
        public function addGoodLinkObj( $id, Title $title, $len = -1, $redir = null,
-               $revision = 0, $model = null
+               $revision = 0, $model = null, $lang = null
        ) {
                $dbkey = $title->getPrefixedDBkey();
                $this->mGoodLinks->set( $dbkey, array(
@@ -161,6 +162,7 @@ class LinkCache {
                        'redirect' => (int)$redir,
                        'revision' => (int)$revision,
                        'model' => $model ? (string)$model : null,
+                       'lang' => $lang ? (string)$lang : null,
                ) );
        }
 
@@ -179,6 +181,7 @@ class LinkCache {
                        'redirect' => intval( $row->page_is_redirect ),
                        'revision' => intval( $row->page_latest ),
                        'model' => !empty( $row->page_content_model ) ? strval( $row->page_content_model ) : null,
+                       'lang' => !empty( $row->page_lang ) ? strval( $row->page_lang ) : null,
                ) );
        }
 
@@ -226,7 +229,7 @@ class LinkCache {
         * @return int Page ID or zero
         */
        public function addLinkObj( Title $nt ) {
-               global $wgContentHandlerUseDB;
+               global $wgContentHandlerUseDB, $wgPageLanguageUseDB;
 
                $key = $nt->getPrefixedDBkey();
                if ( $this->isBadLink( $key ) || $nt->isExternal() ) {
@@ -248,6 +251,9 @@ class LinkCache {
                if ( $wgContentHandlerUseDB ) {
                        $fields[] = 'page_content_model';
                }
+               if ( $wgPageLanguageUseDB ) {
+                       $fields[] = 'page_lang';
+               }
 
                $row = $db->selectRow( 'page', $fields,
                        array( 'page_namespace' => $nt->getNamespace(), 'page_title' => $nt->getDBkey() ),
index 73c7548..1c7d4f0 100644 (file)
@@ -589,7 +589,8 @@ class ChangesList extends ContextSource {
 
                list( $tagSummary, $newClasses ) = ChangeTags::formatSummaryRow(
                        $rc->mAttribs['ts_tags'],
-                       'changeslist'
+                       'changeslist',
+                       $this->getContext()
                );
                $classes = array_merge( $classes, $newClasses );
                $s .= ' ' . $tagSummary;
index 9ae30c0..c33a94b 100644 (file)
@@ -538,11 +538,13 @@ class RecentChange {
         * @param int $newSize
         * @param int $newId
         * @param int $patrol
+        * @param array $tags
         * @return RecentChange
         */
        public static function notifyEdit(
                $timestamp, &$title, $minor, &$user, $comment, $oldId, $lastTimestamp,
-               $bot, $ip = '', $oldSize = 0, $newSize = 0, $newId = 0, $patrol = 0
+               $bot, $ip = '', $oldSize = 0, $newSize = 0, $newId = 0, $patrol = 0,
+               $tags = array()
        ) {
                $rc = new RecentChange;
                $rc->mTitle = $title;
@@ -581,11 +583,15 @@ class RecentChange {
                        'pageStatus' => 'changed'
                );
 
-               DeferredUpdates::addCallableUpdate( function() use ( $rc ) {
+               DeferredUpdates::addCallableUpdate( function() use ( $rc, $tags ) {
                        $rc->save();
                        if ( $rc->mAttribs['rc_patrolled'] ) {
                                PatrolLog::record( $rc, true, $rc->getPerformer() );
                        }
+                       if ( count( $tags ) ) {
+                               ChangeTags::addTags( $tags, $rc->mAttribs['rc_id'],
+                                       $rc->mAttribs['rc_this_oldid'], null, null );
+                       }
                } );
 
                return $rc;
@@ -605,11 +611,12 @@ class RecentChange {
         * @param int $size
         * @param int $newId
         * @param int $patrol
+        * @param array $tags
         * @return RecentChange
         */
        public static function notifyNew(
                $timestamp, &$title, $minor, &$user, $comment, $bot,
-               $ip = '', $size = 0, $newId = 0, $patrol = 0
+               $ip = '', $size = 0, $newId = 0, $patrol = 0, $tags = array()
        ) {
                $rc = new RecentChange;
                $rc->mTitle = $title;
@@ -648,11 +655,15 @@ class RecentChange {
                        'pageStatus' => 'created'
                );
 
-               DeferredUpdates::addCallableUpdate( function() use ( $rc ) {
+               DeferredUpdates::addCallableUpdate( function() use ( $rc, $tags ) {
                        $rc->save();
                        if ( $rc->mAttribs['rc_patrolled'] ) {
                                PatrolLog::record( $rc, true, $rc->getPerformer() );
                        }
+                       if ( count( $tags ) ) {
+                               ChangeTags::addTags( $tags, $rc->mAttribs['rc_id'],
+                                       $rc->mAttribs['rc_this_oldid'], null, null );
+                       }
                } );
 
                return $rc;
index a8c9f7b..305eeab 100644 (file)
@@ -35,16 +35,20 @@ class ChangeTags {
         * @param string $tags Comma-separated list of tags
         * @param string $page A label for the type of action which is being displayed,
         *   for example: 'history', 'contributions' or 'newpages'
+        * @param IContextSource|null $context
+        * @note Even though it takes null as a valid argument, an IContextSource is preferred
+        *       in a new code, as the null value is subject to change in the future
         * @return array Array with two items: (html, classes)
         *   - html: String: HTML for displaying the tags (empty string when param $tags is empty)
         *   - classes: Array of strings: CSS classes used in the generated html, one class for each tag
         */
-       public static function formatSummaryRow( $tags, $page ) {
-               global $wgLang;
-
+       public static function formatSummaryRow( $tags, $page, IContextSource $context = null ) {
                if ( !$tags ) {
                        return array( '', array() );
                }
+               if ( !$context ) {
+                       $context = RequestContext::getMain();
+               }
 
                $classes = array();
 
@@ -71,9 +75,9 @@ class ChangeTags {
                        return array( '', array() );
                }
 
-               $markers = wfMessage( 'tag-list-wrapper' )
+               $markers = $context->msg( 'tag-list-wrapper' )
                        ->numParams( count( $displayTags ) )
-                       ->rawParams( $wgLang->commaList( $displayTags ) )
+                       ->rawParams( $context->getLanguage()->commaList( $displayTags ) )
                        ->parse();
                $markers = Xml::tags( 'span', array( 'class' => 'mw-tag-markers' ), $markers );
 
index 565d159..24bded7 100644 (file)
@@ -91,7 +91,11 @@ class ChangeTagsLogItem extends RevisionItemBase {
                $attribs = array();
                $tags = $this->getTags();
                if ( $tags ) {
-                       list( $tagSummary, $classes ) = ChangeTags::formatSummaryRow( $tags, 'edittags' );
+                       list( $tagSummary, $classes ) = ChangeTags::formatSummaryRow(
+                               $tags,
+                               'edittags',
+                               $this->list->getContext()
+                       );
                        $content .= " $tagSummary";
                        $attribs['class'] = implode( ' ', $classes );
                }
index e90a1b4..37d6a1a 100644 (file)
@@ -49,7 +49,11 @@ class ChangeTagsRevisionItem extends RevisionItem {
                $attribs = array();
                $tags = $this->getTags();
                if ( $tags ) {
-                       list( $tagSummary, $classes ) = ChangeTags::formatSummaryRow( $tags, 'edittags' );
+                       list( $tagSummary, $classes ) = ChangeTags::formatSummaryRow(
+                               $tags,
+                               'edittags',
+                               $this->list->getContext()
+                       );
                        $content .= " $tagSummary";
                        $attribs['class'] = implode( ' ', $classes );
                }
index bd1e375..ef4a7b7 100644 (file)
@@ -2654,7 +2654,10 @@ abstract class DatabaseBase implements IDatabase {
                        if ( !$this->mTrxLevel ) {
                                return; // nothing to do
                        } elseif ( !$this->mTrxAutomatic ) {
-                               wfWarn( "$fname: Flushing an explicit transaction, getting out of sync!" );
+                               throw new DBUnexpectedError(
+                                       $this,
+                                       "$fname: Flushing an explicit transaction, getting out of sync!"
+                               );
                        }
                } else {
                        if ( !$this->mTrxLevel ) {
index 34ea641..23c3102 100644 (file)
@@ -282,13 +282,7 @@ class LegacyLogger extends AbstractLogger {
                        $cachedTimezone = new DateTimeZone( $wgDBerrorLogTZ );
                }
 
-               // Workaround for https://bugs.php.net/bug.php?id=52063
-               // Can be removed when min PHP > 5.3.6
-               if ( $cachedTimezone === null ) {
-                       $d = date_create( 'now' );
-               } else {
-                       $d = date_create( 'now', $cachedTimezone );
-               }
+               $d = date_create( 'now', $cachedTimezone );
                $date = $d->format( 'D M j G:i:s T Y' );
 
                $host = wfHostname();
index d588d51..f59fd61 100644 (file)
@@ -342,7 +342,7 @@ class DifferenceEngine extends ContextSource {
 
                        $ldel = $this->revisionDeleteLink( $this->mOldRev );
                        $oldRevisionHeader = $this->getRevisionHeader( $this->mOldRev, 'complete' );
-                       $oldChangeTags = ChangeTags::formatSummaryRow( $this->mOldTags, 'diff' );
+                       $oldChangeTags = ChangeTags::formatSummaryRow( $this->mOldTags, 'diff', $this->getContext() );
 
                        $oldHeader = '<div id="mw-diff-otitle1"><strong>' . $oldRevisionHeader . '</strong></div>' .
                                '<div id="mw-diff-otitle2">' .
@@ -403,7 +403,7 @@ class DifferenceEngine extends ContextSource {
                }
                $newRevisionHeader = $this->getRevisionHeader( $this->mNewRev, 'complete' ) .
                        ' ' . implode( ' ', $formattedRevisionTools );
-               $newChangeTags = ChangeTags::formatSummaryRow( $this->mNewTags, 'diff' );
+               $newChangeTags = ChangeTags::formatSummaryRow( $this->mNewTags, 'diff', $this->getContext() );
 
                $newHeader = '<div id="mw-diff-ntitle1"><strong>' . $newRevisionHeader . '</strong></div>' .
                        '<div id="mw-diff-ntitle2">' . Linker::revUserTools( $this->mNewRev, !$this->unhide ) .
index 0e8633d..ded45c2 100644 (file)
@@ -116,11 +116,8 @@ abstract class Installer {
         */
        protected $envChecks = array(
                'envCheckDB',
-               'envCheckRegisterGlobals',
                'envCheckBrokenXML',
-               'envCheckMagicQuotes',
                'envCheckMbstring',
-               'envCheckSafeMode',
                'envCheckXML',
                'envCheckPCRE',
                'envCheckMemory',
@@ -196,7 +193,6 @@ abstract class Installer {
        protected $internalDefaults = array(
                '_UserLang' => 'en',
                '_Environment' => false,
-               '_SafeMode' => false,
                '_RaiseMemory' => false,
                '_UpgradeDone' => false,
                '_InstallDone' => false,
@@ -736,20 +732,6 @@ abstract class Installer {
                return true;
        }
 
-       /**
-        * Environment check for register_globals.
-        * Prevent installation if enabled
-        * @return bool
-        */
-       protected function envCheckRegisterGlobals() {
-               if ( wfIniGetBool( 'register_globals' ) ) {
-                       $this->showMessage( 'config-register-globals-error' );
-                       return false;
-               }
-
-               return true;
-       }
-
        /**
         * Some versions of libxml+PHP break < and > encoding horribly
         * @return bool
@@ -765,22 +747,6 @@ abstract class Installer {
                return true;
        }
 
-       /**
-        * Environment check for magic_quotes_(gpc|runtime|sybase).
-        * @return bool
-        */
-       protected function envCheckMagicQuotes() {
-               $status = true;
-               foreach ( array( 'gpc', 'runtime', 'sybase' ) as $magicJunk ) {
-                       if ( wfIniGetBool( "magic_quotes_$magicJunk" ) ) {
-                               $this->showError( "config-magic-quotes-$magicJunk" );
-                               $status = false;
-                       }
-               }
-
-               return $status;
-       }
-
        /**
         * Environment check for mbstring.func_overload.
         * @return bool
@@ -795,19 +761,6 @@ abstract class Installer {
                return true;
        }
 
-       /**
-        * Environment check for safe_mode.
-        * @return bool
-        */
-       protected function envCheckSafeMode() {
-               if ( wfIniGetBool( 'safe_mode' ) ) {
-                       $this->setVar( '_SafeMode', true );
-                       $this->showMessage( 'config-safe-mode' );
-               }
-
-               return true;
-       }
-
        /**
         * Environment check for the XML module.
         * @return bool
index 4f20c70..e054709 100644 (file)
@@ -33,7 +33,6 @@ class LocalSettingsGenerator {
        protected $values = array();
        protected $groupPermissions = array();
        protected $dbSettings = '';
-       protected $safeMode = false;
        protected $IP;
 
        /**
@@ -91,7 +90,6 @@ class LocalSettingsGenerator {
                }
 
                $this->dbSettings = $db->getLocalSettings();
-               $this->safeMode = $installer->getVar( '_SafeMode' );
                $this->values['wgEmergencyContact'] = $this->values['wgPasswordSender'];
        }
 
@@ -248,7 +246,6 @@ class LocalSettingsGenerator {
                        $locale = '';
                }
 
-               $hashedUploads = $this->safeMode ? '' : '#';
                $metaNamespace = '';
                if ( $this->values['wgMetaNamespace'] !== $this->values['wgSitename'] ) {
                        $metaNamespace = "\$wgMetaNamespace = \"{$this->values['wgMetaNamespace']}\";\n";
@@ -380,12 +377,6 @@ ${serverSetting}
 ## available UTF-8 locale
 {$locale}\$wgShellLocale = \"{$this->values['wgShellLocale']}\";
 
-## If you want to use image uploads under safe mode,
-## create the directories images/archive, images/thumb and
-## images/temp, and make them all writable. Then uncomment
-## this, if it's not already uncommented:
-{$hashedUploads}\$wgHashedUploadDirectory = false;
-
 ## Set \$wgCacheDirectory to a writable directory on the web server
 ## to make your wiki go slightly faster. The directory should not
 ## be publically accessible from the web.
index e9ca48b..6265a84 100644 (file)
@@ -16,7 +16,7 @@
        "config-localsettings-upgrade": "Byl nalezen soubor <code>LocalSettings.php</code>.\nPokud chcete stávající instalaci aktualizovat, zadejte hodnotu <code>$wgUpgradeKey</code>, kterou naleznete v souboru <code>LocalSettings.php</code>, do následujícího rámečku.",
        "config-localsettings-cli-upgrade": "Byl detekován soubor <code><code>LocalSettings.php</code></code>\nPro aktualizaci spusťte místo instalace skript <code>update.php</code>.",
        "config-localsettings-key": "Klíč pro aktualizaci:",
-       "config-localsettings-badkey": "Zadaný klíč je nesprávný.",
+       "config-localsettings-badkey": "Zadaný klíč pro aktualizaci je nesprávný.",
        "config-upgrade-key-missing": "Byla detekována existující instalace MediaWiki.\nPokud ji chcete aktualizovat, přidejte následující řádku na konec souboru <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "Existující soubor <code>LocalSettings.php</code> vypadá neúplný.\nNení nastavena proměnná $1.\nUpravte soubor <code>LocalSettings.php</code> tak, aby tuto proměnnou obsahoval, a klikněte na „{{int:Config-continue}}“.",
        "config-localsettings-connection-error": "Při připojování k databázi s využitím nastavení uvedených v <code>LocalSettings.php</code> došlo k chybě. Opravte tato nastavení a zkuste to znovu.\n\n$1",
        "config-no-db": "Nepodařilo se nalézt vhodný databázový ovladač! Musíte nainstalovat databázový ovladač pro PHP.\n{{PLURAL:$2|Je podporován následující typ databáze|Jsou podporovány následující typy databází}}: $1.\n\nPokud jste si PHP přeložili sami, překonfigurujte ho se zapnutým databázovým klientem, například pomocí <code>./configure --with-mysql</code>.\nPokud jste PHP nainstalovali z balíčku Debian či Ubuntu, potřebujete nainstalovat také modul <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Upozornění''': Máte SQLite $1, které je starší než minimálně vyžadovaná verze $2. SQLite nebude dostupné.",
        "config-no-fts3": "'''Upozornění''': SQLite bylo přeloženo bez [//sqlite.org/fts3.html modulu FTS3], funkce pro vyhledávání zde nebudou dostupné.",
-       "config-register-globals-error": "<strong>Chyba: PHP nastavení <code>[http://php.net/register_globals register_globals]</code> je zapnuto. Pro pokračování v instalaci musí být vypnuto.</strong>\nRady, jak toho dosáhnout, najdete na [https://www.mediawiki.org/wiki/Register_globals https://www.mediawiki.org/wiki/register_globals].",
-       "config-magic-quotes-gpc": "<strong>Kritická chyba: Je zapnuto [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc]!</strong>\nToto nastavení nepředvídatelně poškozuje vstupní data.\nMediaWiki nelze nainstalovat ani používat, dokud není toto nastavení vypnuto.",
-       "config-magic-quotes-runtime": "'''Kritická chyba: Je zapnuto [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]!'''\nToto nastavení nepředvídatelně poškozuje vstupní data.\nMediaWiki nelze nainstalovat ani používat, dokud není toto nastavení vypnuto.",
-       "config-magic-quotes-sybase": "'''Kritická chyba: Je zapnuto [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase]!'''\nToto nastavení nepředvídatelně poškozuje vstupní data.\nMediaWiki nelze nainstalovat ani používat, dokud není toto nastavení vypnuto.",
        "config-mbstring": "'''Kritická chyba: Je zapnuto [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]!'''\nToto nastavení způsobuje chyby a může nepředvídatelně poškozovat vstupní data.\nMediaWiki nelze nainstalovat ani používat, dokud není toto nastavení vypnuto.",
-       "config-safe-mode": "'''Upozornění:''' Je aktivní [http://www.php.net/features.safe-mode bezpečný režim] PHP.\nMůže způsobovat potíže, zejména při použití načítání souborů a podpory <code>math</code>.",
        "config-xml-bad": "Chybí XML modul pro PHP.\nMediaWiki potřebuje funkce v tomto modulu a v této konfiguraci nebude fungovat.\nMožná si budete muset nainstalovat RPM balíček php-xml.",
        "config-pcre-old": "'''Kritická chyba:''' Je vyžadováno PCRE verze $1 nebo novější.\nVaše binárka PHP obsahuje PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Více informací.]",
        "config-pcre-no-utf8": "'''Kritická chyba''': PHP modul PCRE byl zřejmě přeložen bez podpory PCRE_UTF8.\nMediaWiki vyžaduje ke správné funkci podporu UTF-8.",
index 8d2040d..ea03831 100644 (file)
        "config-no-db": "Could not find a suitable database driver! You need to install a database driver for PHP.\nThe following database {{PLURAL:$2|type is|types are}} supported: $1.\n\nIf you compiled PHP yourself, reconfigure it with a database client enabled, for example, using <code>./configure --with-mysqli</code>.\nIf you installed PHP from a Debian or Ubuntu package, then you also need to install, for example, the <code>php5-mysql</code> package.",
        "config-outdated-sqlite": "<strong>Warning:</strong> you have SQLite $1, which is lower than minimum required version $2. SQLite will be unavailable.",
        "config-no-fts3": "<strong>Warning:</strong> SQLite is compiled without the [//sqlite.org/fts3.html FTS3 module], search features will be unavailable on this backend.",
-       "config-register-globals-error": "<strong>Error: PHP's <code>[http://php.net/register_globals register_globals]</code> option is enabled.\nIt must be disabled to continue with the installation.</strong>\nSee [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] for help on how to do so.",
-       "config-magic-quotes-gpc": "<strong>Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] is active!</strong>\nThis option corrupts data input unpredictably.\nYou cannot install or use MediaWiki unless this option is disabled.",
-       "config-magic-quotes-runtime": "<strong>Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] is active!'</strong>\nThis option corrupts data input unpredictably.\nYou cannot install or use MediaWiki unless this option is disabled.",
-       "config-magic-quotes-sybase": "<strong>Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] is active!</strong>\nThis option corrupts data input unpredictably.\nYou cannot install or use MediaWiki unless this option is disabled.",
        "config-mbstring": "<strong>Fatal: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] is active!</strong>\nThis option causes errors and may corrupt data unpredictably.\nYou cannot install or use MediaWiki unless this option is disabled.",
-       "config-safe-mode": "<strong>Warning:</strong> PHP's [http://www.php.net/features.safe-mode safe mode] is active.\nIt may cause problems, particularly if using file uploads and <code>math</code> support.",
        "config-xml-bad": "PHP's XML module is missing.\nMediaWiki requires functions in this module and will not work in this configuration.\nYou may need to install the php-xml RPM package.",
        "config-pcre-old": "<strong>Fatal:</strong> PCRE $1 or later is required.\nYour PHP binary is linked with PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE More information].",
        "config-pcre-no-utf8": "<strong>Fatal:</strong> PHP's PCRE module seems to be compiled without PCRE_UTF8 support.\nMediaWiki requires UTF-8 support to function correctly.",
index ee69d6a..b5ed996 100644 (file)
        "config-no-db": "درایور پایگاه اطلاعاتی مناسب پیدا نشد! شما لازم دارید یک درایور پایگاه اطلاعاتی  برای پی‌اچ‌پی نصب کنید.انواع پایگاه اطلاعاتی زیر پشتیبانی شده‌اند:$1.\nاگر شما در گروه اشتراک‌گذاری هستید، از تهیه کنندهٔ گروه خود برای نصب یک درایور پایگاه اطلاعاتی مناسب {{PLURAL:$2|سوأل کنید.|سوأل کنید.}}\nاگر خود، پی‌اچ‌پی را تهیه کرده‌اید، با یک پردازشگر فعال دوباره پیکربندی کنید، برای مثال از <code>./configure --with-mysql</code> استفاده کنید.\nاگر پی‌اچ‌پی را از یک بستهٔ دبیان یا آبونتو نصب کرده‌اید، بنابراین لازم دارید بخش php5-mysql را نصب کنید.",
        "config-outdated-sqlite": "''' هشدار:''' شما اس‌کیولایت $1 دارید، که پایین‌تر از حداقل نسخهٔ $2 مورد نیاز است.اس‌کیولایت در دسترس نخواهد بود.",
        "config-no-fts3": "'''هشدار:''' اس‌کیولایت بدون [//sqlite.org/fts3.html FTS3 module] تهیه شده‌است ، جستجوی ویژگی‌ها در این بخش پیشین در دسترس نخواهد‌بود.",
-       "config-register-globals-error": "<strong>خطا:  پی‌اچ‌پی<code>[http://php.net/register_globals register_globals]</code> گزینه فعال است.\nبرای ادامه نصب باید غیر فعال باشد.</strong>\n[Https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] را برای کمک در مورد نحوه انجام این کار ببینید.",
-       "config-magic-quotes-gpc": "<strong>هشدار مهم: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] فعال شده‌است!</strong>\nاین گزینه اطلاعات داده شده به رایانه را به طور غیر‌قابل پیش‌بینی از بین می‌برد.\nشما نمی‌توانید مدیاویکی را نصب یا استفاده کنید مگر اینکه این گزینه غیر‌فعال باشد.",
-       "config-magic-quotes-runtime": "'''مخرب: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] فعال است.\nاین گزینه اطلاعات داده شده به رایانه را به طور غیر‌قابل پیش‌بینی از بین می‌برد.\nشما نمی‌توانید مدیاویکی را نصب یا استفاده کنید مگر اینکه این گزینه غیر‌فعال باشد.",
-       "config-magic-quotes-sybase": "'''مخرب: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] فعال است.\nاین گزینه اطلاعات داده شده به رایانه را به طور غیر‌قابل پیش‌بینی از بین می‌برد.\nشما نمی‌توانید مدیاویکی را نصب یا استفاده کنید مگر اینکه این گزینه غیر‌فعال باشد.",
        "config-mbstring": "''' مخرب:[http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] فعال است.\nاین گزینه باعث ایجاد خطا می‌شود و ممکن است اطلاعات را به طور غیر‌قابل پیش‌بینی از بین ببرد.\nشما نمی‌توانید مدیاویکی را نصب یا استفاده کنید مگر اینکه این گزینه غیر‌فعال باشد.",
-       "config-safe-mode": "'''هشدار:'''  PHP's [http://www.php.net/features.safe-mode safe mode] فعال است.\nممکن است باعث ایجاد مشکلاتی شود، مخصوصاً اگر از ارسال پرونده استفاده شود و <code>math</code> پشتیبانی شود.",
        "config-xml-bad": "ماژول اکس‌ام‌ال پی‌اچ‌پی کار نمی‌کند.\nمدیاویکی نیازمند عملیاتی در این ماژول است و در این پیکربندی کار نخواهد‌کرد.\nشاید نیاز باشد که بستهٔ نرم افزاریِ آرپی‌ام پی‌اچ‌پی-ایکس‌ام‌ال را نصب کنید.",
        "config-pcre-old": "''' خطای اساسی:'' ' PCRE  $1  یا بعدا مورد نیاز است.\nکد باینری پی‌اچ‌پی‌تان با PCRE  $2 پیوند دارد.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE اطلاعات بیشتر].",
        "config-pcre-no-utf8": "'''مخرب:''' به‌ نظر می‌رسد ماژول پی‌سی‌آرایی پی‌اچ‌پی بدون پشتیبانی پی‌سی‌آرایی_یو‌تی‌اف۸ تهیه شده‌است.\nمدیاویکی برای درست عمل کردن نیازمند پشتیبانی یوتی‌اف-۸ است.",
index 2b897f1..223955d 100644 (file)
@@ -16,7 +16,8 @@
                        "Stryn",
                        "SMAUG",
                        "SuperPete",
-                       "McSalama"
+                       "McSalama",
+                       "Jaakkoh"
                ]
        },
        "config-desc": "MediaWiki-asennin",
@@ -63,7 +64,6 @@
        "config-env-hhvm": "HHVM $1 on asennettu.",
        "config-no-db": "Sopivaa tietokanta-ajuria ei löytynyt! Sinun täytyy asentaa tietokanta-ajurit PHP:lle.\nSeuraavat tietokantatyypit ovat tuettuja: $1.",
        "config-outdated-sqlite": "<strong>Varoitus:</strong> sinulla on käytössä SQLite $1, joke on vanhempi kuin vähintään vaadittava versio $2. SQLite ei ole saatavilla.",
-       "config-safe-mode": "'''Varoitus:''' PHP:n [http://www.php.net/features.safe-mode safe mode] -tila on aktiivinen.\nSe voi aiheuttaa ongelmia erityisesti tiedostojen tallentamisen ja matemaattisten kaavojen kanssa.",
        "config-xml-bad": "PHP:n XML-moduulia ei löydy.\nMediaWiki käyttää tämän moduulin funktioita, eikä toimi tässä kokoonpanossa.\nJos käytät Mandrakea, asenna php-xml paketti.",
        "config-memory-raised": "PHP:n <code>memory_limit</code> on $1, nostetaan arvoon $2.",
        "config-memory-bad": "'''Varoitus:''' PHP:n <code>memory_limit</code> on $1.\nTämä on luultavasti liian alhainen.\nAsennus saattaa epäonnistua!",
        "config-upload-deleted-help": "Valitse hakemisto johon poistetut tiedostot arkistoidaan.\nHakemiston ei tulisi olla käytettävissä internetverkosta.",
        "config-logo": "Logon URL-osoite",
        "config-cc-again": "Valitse uudelleen...",
+       "config-advanced-settings": "Lisäasetukset",
        "config-extensions": "Laajennukset",
        "config-extensions-help": "Yllä luetellut laajennukset löytyvät <code>./extensions</code> hakemistosta.\n\nNe saattavat vaatia lisäasetuksia, mutta voit ottaa ne käyttöön nyt.",
        "config-skins": "Ulkoasut",
index 4e09904..1c9fe79 100644 (file)
@@ -17,7 +17,7 @@
        "config-localsettings-upgrade": "זוהה קובץ <code>LocalSettings.php</code>.\nכדי לשדרג את ההתקנה הזאת, נא להקליד את הערך של <code>$wgUpgradeKey</code> בתיבה להלן.\nאפשר למצוא אותו בקובץ <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "זוהה קובץ <code>LocalSettings.php</code>.\nכדי לשדרג את ההתקנה הזאת, יש להריץ את <code>update.php</code> ולא את התהליך הזה.",
        "config-localsettings-key": "מפתח השדרוג:",
-       "config-localsettings-badkey": "×\94×\9eפת×\97 שהקלדת שגוי.",
+       "config-localsettings-badkey": "×\9eפת×\97 ×\94ש×\93ר×\95×\92 שהקלדת שגוי.",
        "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": "אירעה שגיאה בעת חיבור למסד נתונים עם הגדרות ב־<code>LocalSettings.php</code>. נא לתקן את ההגדרות האלו ולנסות שוב.\n\n$1",
        "config-no-db": "לא נמצא דרייבר מסד נתונים מתאים. יש להתקין דרייבר מסד נתונים ל־PHP.\n{{PLURAL:$2|נתמך הסוג הבא של מסד נתונים|נתמכים הסוגים הבאים של מסדי נתונים}}: $1.\n\nאם קִמפלת את PHP בעצמך, יש להגדיר אותו מחדש ולהפעיל את לקוח מסד נתונים, למשל באמצעות <code dir=\"ltr\">./configure --with-mysqli</code>.\nאם התקנת את PHP מחבילה של דביאן או של אובונטו, יש להתקין, למשל, גם את המודול <code dir=\"ltr\">php5-mysql</code>.",
        "config-outdated-sqlite": "'''אזהרה''': במערכת מתוקן SQLite $1. גרסה זו לא נתמכת ולשימוש ב־SQLite נדרשת גרסה $2 לפחות. SQLlite לא יהיה זמין.",
        "config-no-fts3": "'''אזהרה''': SQLite מקומפל ללא [//sqlite.org/fts3.html מודול FTS]. יכולות חיפוש לא יהיו זמינות בהתקנה הזאת.",
-       "config-register-globals-error": "<strong>שגיאה: האפשרות <code>[http://php.net/register_globals register_globals]</code> של PHP מופעלת.\nצריך לכבות אותה כדי להמשיך בהתקנה.</strong>\nר' [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] להסבר איך לעשות את זה.",
-       "config-magic-quotes-gpc": "<strong>סופני: האפשרות [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] פעילה!</strong>\nהאפשרות הזאת מקלקלת נתוני קלט באופן בלתי־ניתן לחיזוי.\nלא ניתן להתקין את מדיה־ויקי אם האפשרות הזאת אינה כבויה.",
-       "config-magic-quotes-runtime": "<strong>שגיאה סופנית: האפשרות [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] פעילה!</strong>\nהאפשרות הזאת מעוותת את נתוני הקלט באופן בלתי־צפוי.\nלא ניתן להתקין את מדיה־ויקי אלא אם האפשרות הזאת תכובה.",
-       "config-magic-quotes-sybase": "'''שגיאה סופנית''': האפשרות [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] פעילה!'''\nהאפשרות הזאת מעוותת את נתוני הקלט באופן בלתי־צפוי.\nלא ניתן להתקין את מדיה־ויקי או להשתמש בה אלא אם האפשרות הזאת תכובה.",
        "config-mbstring": "'''שגיאה סופנית''': האפשרות [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] פעילה!'''\nהאפשרות הזאת גורמת לשגיאות ומעוותת את נתוני הקלט באופן בלתי־צפוי.\nלא ניתן להתקין את מדיה־ויקי או להשתמש בה אלא אם האפשרות הזאת תכובה.",
-       "config-safe-mode": "'''אזהרה:''' האפשרות [http://www.php.net/features.safe-mode safe mode] של PHP פעילה.\nהיא יכולה לגרום לבעיות, במיוחד אם אתם משתמשים בהעלאת קבצים או ב־<code>math</code>.",
        "config-xml-bad": "מודול XML של PHP חסר.\nמדיה־ויקי דורשת פונקציות של המודול ולא תעבוד עם הגדרות כאלו.\nייתכן שצריך להתקין באמצעות RPM את חבילת php-xml.",
        "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": "'''שגיאה סופנית''': נראה שמודול PCRE של PHP מקומפל ללא תמיכה ב־PCRE_UTF8.\nמדיה־ויקי דורשת תמיכה ב־UTF-8 לפעילות נכונה.",
@@ -78,6 +73,7 @@
        "config-apc": "[http://www.php.net/apc APC] מותקן",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] מותקן",
        "config-no-cache": "'''אזהרה:''' אחת מהתוכנות הבאות לא נמצאה: [http://www.php.net/apc APC]&rlm;, [http://xcache.lighttpd.net/ XCache] או [http://www.iis.net/download/WinCacheForPhp WinCache].\nמטמון עצמים לא מופעל.",
+       "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": "'''אזהרה''': בשרת הווב שלך מופעל [http://modsecurity.org/ mod_security]. אם הוא לא מוגדר טוב, זה יכול לגרום לבעיות במדיה־ויקי ובתכנה אחרת שמאפשרת למשתמשים לשלוח תוכן שרירותי.\nיש לקרוא את [http://modsecurity.org/documentation/ התיעוד של mod_security] או ליצור קשר עם אנשי התמיכה של שירותי האירוח שלכם אם מופיעות לך שגיאות אקראיות.",
        "config-diff3-bad": "GNU diff3 לא נמצא.",
        "config-git": "נמצאה Git, תכנת בקרת התצורה: <code dir=\"ltr\">$1</code>.",
index 2021cfc..3f92528 100644 (file)
@@ -8,7 +8,8 @@
                        "Misibacsi",
                        "Tacsipacsi",
                        "Dorgan",
-                       "Macofe"
+                       "Macofe",
+                       "Máté"
                ]
        },
        "config-desc": "A MediaWiki telepítője",
@@ -17,7 +18,7 @@
        "config-localsettings-upgrade": "Már létezik a <code>LocalSettings.php</code> fájl.\nA telepített szoftver frissítéséhez írd be az alábbi mezőbe a <code>$wgUpgradeKey</code> beállítás értékét, melyet a <code>LocalSettings.php</code> nevű fájlban találhatsz meg.",
        "config-localsettings-cli-upgrade": "A <code>LocalSettings.php</code> fájl megtalálható.\nA telepített rendszer frissítéséhez futtasd az <code>update.php</code>-t.",
        "config-localsettings-key": "Frissítési kulcs:",
-       "config-localsettings-badkey": "A megadott kulcs érvénytelen.",
+       "config-localsettings-badkey": "A megadott frissítési kulcs érvénytelen.",
        "config-upgrade-key-missing": "A telepítő a MediaWiki meglévő példányát észlelte.\nA telepített rendszer frissítéséhez helyezd el az alábbi sort a <code>LocalSettings.php</code> végére:\n\n$1",
        "config-localsettings-incomplete": "A meglévő <code>LocalSettings.php</code> hiányosnak tűnik.\nA(z) $1 változó értéke nincs beállítva.\nMódosítsd a <code>LocalSettings.php</code> fájlt úgy, hogy ez a változó be legyen állítva, majd kattints a „{{int:Config-continue}}” gombra.",
        "config-localsettings-connection-error": "Nem sikerült csatlakozni az adatbázishoz a <code>LocalSettings.php</code>-ben megadott adatokkal. Ellenőrizd a beállításokat, majd próbáld újra.\n\n$1",
        "config-no-db": "Nem sikerült egyetlen használható adatbázis-illesztőprogramot sem találni. Telepítened kell egyet a PHP-hez.\nA következő {{PLURAL:$2|adatbázistípus támogatott|adatbázistípusok támogatottak}}: $1.\n\nHa a PHP-t magad fordítottad, konfiguráld újra úgy, hogy engedélyezve legyen egy adatbáziskliens, pl. a <code>./configure --with-mysql</code> parancs használatával.\nHa a PHP-t Debian vagy Ubuntu csomaggal telepítetted, akkor szükséged lesz például a php5-mysql csomagra is.",
        "config-outdated-sqlite": "<strong>Figyelmeztetés:</strong> SQLite $1 verziód van, ami alacsonyabb a legalább szükséges $2 verziónál. Az SQLite nem lesz elérhető.",
        "config-no-fts3": "'''Figyelmeztetés''': Az SQLite [//sqlite.org/fts3.html FTS3 modul] nélkül lett fordítva, a keresési funkciók nem fognak működni ezen a rendszeren.",
-       "config-magic-quotes-runtime": "'''Kritikus hiba: a [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] aktív!'''\nEz a beállítás kiszámíthatatlan károkat okoz a bevitt adatokban.\nA MediaWiki csak akkor telepíthető, ha ki van kapcsolva.",
-       "config-magic-quotes-sybase": "'''Kritikus hiba: a [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_sybase] aktív!'''\nEz a beállítás kiszámíthatatlan károkat okoz a bevitt adatokban.\nA MediaWiki csak akkor telepíthető, ha ki van kapcsolva.",
        "config-mbstring": "'''Kritikus hiba: az [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime mbstring.func_overload] aktív!'''\nEz a beállítás hibákat okoz és kiszámíthatatlanul károsíthatja bevitt adatokat.\nA MediaWiki csak akkor telepíthető, ha ki van kapcsolva.",
-       "config-safe-mode": "'''Figyelmeztetés:''' A PHP [http://www.php.net/features.safe-mode safe mode]-ja be van kapcsolva.\nProblémákat okozhat, különösen a fájlfeltöltéseknél és a <code>math</code>-támogatás használatánál.",
        "config-xml-bad": "A PHP XML-modulja hiányzik.\nEgyes MediaWiki-funkciók, melyek ezt a modult igénylik, nem fognak működni ilyen konfigurációban.\nSzükséges lehet a php-xml RPM-csomag telepítése.",
        "config-pcre-old": "<strong>Kritikus hiba:</strong> PCRE $1 vagy későbbi szükséges.\nA Te PHP binárisod PCRE $2-vel lett linkelve.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE További információ].",
        "config-pcre-no-utf8": "'''Kritikus hiba''': Úgy tűnik, hogy a PHP PRCE modulja PRCE_UTF8 támogatás nélkül lett fordítva.\nA MediaWikinek UTF-8-támogatásra van szüksége a helyes működéshez.",
index 9b62368..9366983 100644 (file)
@@ -12,7 +12,7 @@
        "config-localsettings-upgrade": "È stato rilevato nu file <code>LocalSettings.php</code>.\nP'agghiurnà sta installazione, pe' piacere nzertàte 'o valore 'e <code>$wgUpgradeKey</code> dint' 'a cascia ccà abbascio.\n'O putite truvà dint'a <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "È stato scummigliato nu file <code>LocalSettings.php</code>.\nPe l'agghiurnà sta installazione, secutate <code>update.php</code>",
        "config-localsettings-key": "Chiave d'agghiurnamiento:",
-       "config-localsettings-badkey": "'A chiave c'avete dato nun è curretta.",
+       "config-localsettings-badkey": "'A chiave 'agghiurnamento c'avite dato nun è curretta.",
        "config-upgrade-key-missing": "S'è scummigliata n'installazione 'e MediaWiki ch'esisteva già.\nPe' ll'agghiurnà, nzertate pe' piacere sta riga ccà abbascio dint' 'a parta vascia d' 'o <code>LocalSettings.php</code> vuosto:\n\n$1",
        "config-localsettings-incomplete": "'O file <code>LocalSettings.php</code> esistente pare ca fosse cumpleto a metà.\n'A variabbele $1 nun è mpustata.\nCagnate <code>LocalSettings.php</code> in modo ca sta variabbele fosse mpustata e facite clic ncopp'a \"{{int:Config-continue}}\".",
        "config-localsettings-connection-error": "S'è truvato n'errore pe' tramente ca se faceva 'a connessione a 'o database ausanno 'e mpustaziune specificate dint'a <code>LocalSettings.php</code>. Pe' piacere curriggite sti mpustaziuni e provate n'ata vota.\n\n$1",
        "config-no-db": "Nun se può truvà nu driver adatto p' 'o database! È necessario installare nu driver p' 'o PHP.\n{{PLURAL:$2|'O furmato suppurtato|'E furmate suppurtate}} 'e database ccà annanze: $1.\n\nSi cumpilate PHP autonomamente, riaccunciatevello attivando nu client database, p'esempio ausannoo <code>./configure --with-mysqli</code>.\nQuanno fosse installato PHP pe' bbìa 'e nu pacchetto Debian o Ubuntu, allora avite 'a installà pure 'o pacchetto <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Attenziò''': tenite 'o SQLite $1 pe' tramente ca ce vulesse 'a verziona $2, SQLite nun sarrà a disposizione.",
        "config-no-fts3": "'''Attenziò''': SQLite è cumpilato senza 'o [//sqlite.org/fts3.html modulo FTS3], 'e funziune 'e p'ascià dinto nun sarranno a disposizione ncopp'a stu backend.",
-       "config-register-globals-error": "<strong>Errore: l'opzione PHP <code>[http://php.net/register_globals register_globals]</code> è apicciata.\nS'avesse 'a stutà pe' cuntinuà c' 'a installazione.</strong>\nVide [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] pe' n'avé n'aiuto ncopp'a comme s'avess'a ffà.",
-       "config-magic-quotes-gpc": "<strong>Fatale: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] è attivo!</strong>\nChest'opzione scassa 'e date d'input 'n modo scanusciuto.\nNun putite installare o utilizzare MediaWiki, si nun stutate st'opzione.",
-       "config-magic-quotes-runtime": "<strong>Fatale: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] è attivo!'</strong>\nSt'opzione scassa 'e date 'e na manera scanusciuta.\nNun se può installà o ausà MediaWiki si nun se stuta st'opzione.",
-       "config-magic-quotes-sybase": "<strong>Fatale: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] è attivo!'</strong>\nSt'opzione scassa 'e date 'e na manera scanusciuta.\nNun se può installà o ausà MediaWiki si nun se stuta st'opzione.",
        "config-mbstring": "<strong>Fatale: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] è attivo!'</strong>\nSt'opzione scassa 'e date 'e na manera scanusciuta.\nNun se può installà o ausà MediaWiki si nun se stuta st'opzione.",
-       "config-safe-mode": "<strong>Warning:</strong> PHP's [http://www.php.net/features.safe-mode safe mode] è attivato.\nPutesse fà cocche probblema, specialmente si state ausanno 'a funziona 'e carrecà file e 'o supporto d' ' e funziune <code>math</code>.",
        "config-xml-bad": "'O modulo XML 'e PHP è mancante.\nA MediaWiki servessero 'e funziune prisente dint'a stu modulo e nun faticarrà c' 'a configurazione 'e mò.\nSi se sta eseguenno Mandrake, installare 'o pacco php-xml RPM.",
        "config-pcre-old": "<strong>Errore fatale:</strong> s'addimanna PCRE  $1 o succiessivo.\n'O file vuosto binario PHP è acucchiato c' 'o PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Cchiù nfurmaziune].",
        "config-pcre-no-utf8": "<strong>Fatale:</strong> 'E module PCRE d' 'o PHP pare ca se so' compilate senza PCRE_UTF8 supporto.\nA MediaWiki serve nu supporto UTF-8 pe' putè funziunà apposto.",
@@ -73,6 +68,7 @@
        "config-apc": "[http://www.php.net/apc APC] è installato",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] è installato",
        "config-no-cache": "'''Attenziò:''' [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache] nun so' state truvate.\n'A funziona caching 'e ll'oggette non è apicciata.",
+       "config-no-cache-apcu": "<strong>Attenziò:</strong> [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache] nun so' state truvate.\n'A funziona caching 'e ll'oggette non è apicciata.",
        "config-mod-security": "<strong>Attenziò:</strong> 'O servitore web vuosto téne [http://modsecurity.org/ mod_security]/mod_security2 appicciato. Ce stanno tante mpustaziune commune ca 'o facessero causà prubbleme a MediaWiki e ll'ati software ca permettessero ll'utente 'e pubbrecà cuntenute.\nSi putite, stutate sta funziona. Sinò, riferite 'a [http://modsecurity.org/documentation/ documentaziona ncopp' 'o mod_security] o cuntattate 'o host vuosto pe' ve dà supporto quanno se scummogliasse cocch'errore.",
        "config-diff3-bad": "GNU diff3 nun truvato.",
        "config-git": "Truvato software 'e cuntrollo d' 'a verziona Git: <code>$1</code>.",
index 6ba3151..51d0afa 100644 (file)
        "config-no-db": "Fant ingen passende databasedriver! Du må installere en databasedriver for PHP.\nFølgende {{PLURAL:$2|databasetype|databasetyper}} støttes: $1\n\nOm du kompilerte PHP selv, rekonfigurer den med en aktivert databaseklient, for eksempel ved å bruke <code>./configure --with-mysql</code>.\nOm du installerte PHP fra en Debian- eller Ubuntu-pakke, må du også installere for eksempel <code>php5-mysql</code>-pakken.",
        "config-outdated-sqlite": "'''Advarsel''': Du har SQLite $1, som er en eldre versjon enn minimumskravet SQLite $2. SQLite vil ikke være tilgjengelig.",
        "config-no-fts3": "'''Advarsel''': SQLite er kompilert uten [//sqlite.org/fts3.html FTS3-modulen], søkefunksjoner vil ikke være tilgjengelig på dette bakstykket.",
-       "config-register-globals-error": "<strong>Feil: PHPs <code>[http://php.net/register_globals register_globals]</code>-valg er aktivt.\nDet må deaktiveres for å kunne fortsette med installeringen.</strong>\nSe [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] for å få hjelp til å gjøre dette.",
-       "config-magic-quotes-gpc": "<strong>Fatalt: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] er aktiv!</strong>\nDette valget kan ødelegge inndata på en uforutsigelig måte.\nDu kan ikke installere eller bruke MediaWiki uten at denne valgmuligheten er slått av.",
-       "config-magic-quotes-runtime": "'''Kritisk: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] er aktiv!'''\nDette alternativet ødelegger inndata på en uforutsigbar måte.\nDu kan ikke installere eller bruke MediaWiki med mindre dette alternativet deaktiveres.",
-       "config-magic-quotes-sybase": "'''Kritisk: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] er aktiv!'''\nDette alternativet ødelegger inndata på en uforutsigbar måte.\nDu kan ikke installere eller bruke MediaWiki med mindre dette alternativet deaktiveres.",
        "config-mbstring": "'''Kritisk: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] er aktiv!'''\nDette alternativet fører til feil og kan ødelegge data på en uforutsigbar måte.\nDu kan ikke installere eller bruke MediaWiki med mindre dette alternativet deaktiveres.",
-       "config-safe-mode": "'''Advarsel:''' PHPs [http://www.php.net/features.safe-mode safe mode] er aktiv.\nDet kan føre til problem, spesielt hvis du bruker støtte for filopplastinger og <code>math</code>.",
        "config-xml-bad": "PHPs XML-modul mangler.\nMediaWiki krever funksjonene i denne modulen og vil ikke virke i denne konfigurasjonen.\nDu må kanskje laste ned php-xml RPM pakken.",
        "config-pcre-old": "'''Alvorlig:''' PCRE $1 eller senere kreves.\nDin PHP-kode er lenket med PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Nærmere informasjon].",
        "config-pcre-no-utf8": "'''Fatal''': PHPs PCRE modul ser ut til å være kompilert uten PCRE_UTF8-støtte.\nMediaWiki krever UTF-8-støtte for å fungere riktig.",
index 8051d35..cd75013 100644 (file)
@@ -29,7 +29,7 @@
        "config-localsettings-upgrade": "Plik <code>LocalSettings.php</code> istnieje.\nAby oprogramowanie zostało zaktualizowane musisz wstawić wartość <code>$wgUpgradeKey</code> w poniższe pole.\nOdnajdziesz ją w <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Wykryto obecność pliku <code>LocalSettings.php</code>.\nAktualizację należy wykonać poprzez uruchomienie <code>update.php</code>",
        "config-localsettings-key": "Klucz aktualizacji:",
-       "config-localsettings-badkey": "Podany klucz jest nieprawidłowy",
+       "config-localsettings-badkey": "Podany klucz aktualizacji jest nieprawidłowy.",
        "config-upgrade-key-missing": "Wykryto zainstalowane wcześniej MediaWiki.\nJeśli chcesz je zaktualizować dodaj na koniec pliku <code>LocalSettings.php</code> poniższą linię tekstu.\n\n$1",
        "config-localsettings-incomplete": "Istniejący plik <code>LocalSettings.php</code> wygląda na niekompletny.\nBrak wartości zmiennej $1.\nZmień plik <code>LocalSettings.php</code>, tak by zawierał deklarację wartości tej zmiennej, a następnie kliknij „{{int:Config-continue}}”.",
        "config-localsettings-connection-error": "Wystąpił błąd podczas łączenia z bazą danych używając ustawień podanych w <code>LocalSettings.php</code>\nNapraw te ustawienia i spróbuj ponownie.\n\n$1",
        "config-no-db": "Nie można odnaleźć właściwego sterownika bazy danych! Musisz zainstalować sterownik bazy danych dla PHP.\nMożna użyć {{PLURAL:$2|następującego typu bazy|następujących typów baz} danych: $1.\n\nJeśli skompilowałeś PHP samodzielnie, skonfiguruj je ponownie z włączonym klientem bazy danych, na przykład za pomocą polecenia <code>./configure --with-mysqli</code>.\nJeśli zainstalowałeś PHP jako pakiet Debiana lub Ubuntu, musisz również zainstalować np. moduł <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Ostrzeżenie''': masz SQLite  $1, która jest niższa od minimalnej wymaganej wersji  $2 . SQLite będzie niedostępne.",
        "config-no-fts3": "'''Uwaga''' – SQLite został skompilowany bez [//sqlite.org/fts3.html modułu FTS3] – funkcje wyszukiwania nie będą dostępne.",
-       "config-register-globals-error": "<strong>Błąd: dyrektywa PHP <code>[http://php.net/register_globals register_globals]</code> jest włączona.\nAby kontynuować instalację musi zostać wyłączona.</strong>\nPrzeczytaj [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals], aby dowiedzieć się, jak to zrobić.",
-       "config-magic-quotes-gpc": "<strong>Błąd krytyczny – dyrektywa [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] jest włączona!</strong>\nTa opcja powoduje nieprzewidywalne uszkodzenia wprowadzanych danych.\nNie możesz instalować lub korzystać z MediaWiki, dopóki ta opcja nie zostanie wyłączona.",
-       "config-magic-quotes-runtime": "'''Błąd krytyczny – włączono [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]!'''\nTa opcja powoduje nieprzewidywalne uszkodzenia wprowadzanych danych.\nZainstalować lub korzystać z MediaWiki można pod warunkiem, że ta opcja jest wyłączona.",
-       "config-magic-quotes-sybase": "'''Błąd krytyczny – włączono [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase]!'''\nTa opcja powoduje nieprzewidywalne uszkodzenia wprowadzanych danych.\nZainstalować lub korzystać z MediaWiki można pod warunkiem, że ta opcja jest wyłączona.",
        "config-mbstring": "'''Błąd krytyczny – włączono [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]!'''\nTa opcja powoduje błędy i może wywołać nieprzewidywalne uszkodzenia wprowadzanych danych.\nZainstalować lub korzystać z MediaWiki można pod warunkiem, że ta opcja jest wyłączona.",
-       "config-safe-mode": "'''Ostrzeżenie''' – uaktywniono [http://www.php.net/features.safe-mode tryb awaryjny] PHP.\nOpcja ta może powodować problemy, szczególnie w przypadku korzystania z przesyłania plików i używania znacznika <code>math</code>.",
        "config-xml-bad": "Brak modułu XML dla PHP.\nMediaWiki wymaga funkcji z tego modułu i nie może działać w tej konfiguracji.\nZainstaluj pakiet RPM php-xml.",
        "config-pcre-old": "<strong>Błąd krytyczny:</strong> Wymagany jest PCRE w wersji $1 lub nowszej.\nTwój plik wykonywalny PHP jest powiązany z wersją PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Więcej informacji].",
        "config-pcre-no-utf8": "'''Błąd krytyczny''' – wydaje się, że moduł PCRE w PHP został skompilowany bez wsparcia dla UTF‐8.\nMediaWiki wymaga wsparcia dla UTF‐8 do prawidłowego działania.",
index 372b228..e20f230 100644 (file)
        "config-no-db": "{{doc-important|Do not translate \"<code>./configure --with-mysqli</code>\" and \"<code>php5-mysql</code>\".}}\nParameters:\n* $1 is comma separated list of database types supported by MediaWiki.\n* $2 is the count of items in $1 - for use in plural.",
        "config-outdated-sqlite": "Used as warning. Parameters:\n* $1 - the version of SQLite that has been installed\n* $2 - minimum version",
        "config-no-fts3": "A \"[[:wikipedia:Front and back ends|backend]]\" is a system or component that ordinary users don't interact with directly and don't need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are \"system\" or \"service\", or (depending on context and language) even leave it untranslated.",
-       "config-register-globals-error": "Error message in the MediaWiki installer environment checks.",
-       "config-magic-quotes-gpc": "{{Related|Config-fatal}}",
-       "config-magic-quotes-runtime": "{{Related|Config-fatal}}",
-       "config-magic-quotes-sybase": "{{Related|Config-fatal}}",
        "config-mbstring": "{{Related|Config-fatal}}",
-       "config-safe-mode": "Status message in the MediaWiki installer environment checks.",
        "config-xml-bad": "Status message in the MediaWiki installer environment checks.",
        "config-pcre-old": "Parameters:\n* $1 - minimum PCRE version number\n* $2 - the installed version of [[wikipedia:PCRE|PCRE]]\n{{Related|Config-fatal}}",
        "config-pcre-no-utf8": "PCRE is a name of a programmers' library for supporting regular expressions. It can probably be translated without change.\n{{Related|Config-fatal}}",
index f6ccb97..0e6ecb9 100644 (file)
@@ -7,6 +7,6 @@
                ]
        },
        "config-admin-password": "Lozinka:",
-       "mainpagetext": "'''MediaWiki softver is uspješno instaliran.'''",
-       "mainpagedocfooter": "Kontaktirajte [//meta.wikimedia.org/wiki/Help:Contents uputstva za korisnike] za informacije o upotrebi wiki programa.\n\n== Početak ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista postavki]\n* [//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]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]"
+       "mainpagetext": "<strong>MediaWiki je uspješno instaliran.</strong>",
+       "mainpagedocfooter": "Za informacije o korištenju wiki softvera konzultirajte [//meta.wikimedia.org/wiki/Help:Contents Vodič za korisnike].\n\n== Uvod u rad ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista konfiguracije postavki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista primatelja izdanja MediaWikija]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Lokalizirajte MediaWiki za svoj jezik]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Saznajte kako se boriti protiv spama na svojem wikiju]"
 }
index 0f62503..aba3d34 100644 (file)
@@ -9,10 +9,66 @@
        "config-desc": "MediaWiki йөкләүче",
        "config-title": "MediaWiki $1 куелышы",
        "config-information": "Мәгълүмат",
+       "config-localsettings-key": "Яңарту ачкычы:",
+       "config-your-language": "Телегез:",
+       "config-wiki-language": "Вики теле:",
        "config-back": "← Артка",
        "config-continue": "Киләсе →",
        "config-page-language": "Тел",
        "config-page-welcome": "MediaWiki проектына рәхим итегез!",
+       "config-page-name": "Исем",
+       "config-page-options": "Көйләнмәләр",
+       "config-page-install": "Урнаштыру",
+       "config-page-complete": "Тәмам!",
+       "config-page-restart": "Урнаштыруны яңадан башлау",
+       "config-page-readme": "Укып чык",
+       "config-page-releasenotes": "Юрама турында мәгълүмат",
+       "config-page-copying": "Лицензия",
+       "config-page-upgradedoc": "Яңарту",
+       "config-page-existingwiki": "Хәзерге вики",
+       "config-restart": "Әйе, яңадан башларга",
+       "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-diff3-bad": "GNU diff3 табылмады.",
+       "config-git": "Git юрамалар идарә итү системасы табылды: <code>$1</code>.",
+       "config-db-type": "Мәгълүмат базасы төре:",
+       "config-db-host": "Мәгълүмат базасы хосты:",
+       "config-db-host-oracle": "TNS мәгълүмат базасы:",
+       "config-db-name-oracle": "Мәгълүмат базасы төзелеше:",
+       "config-db-username": "Мәгълүмат базасын кулланучы исеме:",
+       "config-db-password": "Мәгълүмат базасының серсүзе:",
+       "config-charset-mysql5-binary": "MySQL 4.1/5.0 бинарлы",
+       "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
+       "config-charset-mysql4": "MySQL 4.0 һәм UTF-8 үзара бәйләнешле",
+       "config-db-port": "Мәгълүмат базасы порты:",
+       "config-db-schema": "MediaWiki өчен төзелеш:",
+       "config-mysql-innodb": "InnoDB",
+       "config-mysql-myisam": "MyISAM",
+       "config-mysql-binary": "Икеле",
+       "config-mysql-utf8": "UTF-8",
+       "config-ns-generic": "Проект",
+       "config-ns-other": "Башка (күрсәтегез)",
+       "config-ns-other-default": "MyWiki",
+       "config-admin-password": "Серсүз:",
+       "config-admin-password-confirm": "Серсүзне кабатлагыз:",
+       "config-admin-email": "Электрон почта адресы:",
+       "config-profile-wiki": "Ачык вики",
+       "config-profile-private": "Ябык вики",
+       "config-license": "Автор хокуклары һәм лицензияләр:",
+       "config-license-cc-by-sa": "Creative Commons Attribution Share Alike",
+       "config-license-cc-by": "Creative Commons Attribution",
+       "config-license-cc-by-nc-sa": "Creative Commons Attribution Non-Commercial Share Alike",
+       "config-license-cc-0": "Creative Commons Zero (җәмгыять мирасы)",
+       "config-license-gfdl": "GNU Free Documentation License 1.3 яки яңарагы",
+       "config-license-pd": "Җәмгыять мирасы",
+       "config-logo": "Логотип URL:",
+       "config-cc-again": "Кабат сайлагыз...",
+       "config-extensions": "Киңәйтүләр",
+       "config-skins": "Бизәлеш",
+       "config-install-step-done": "әзер",
+       "config-install-step-failed": "булмады",
+       "config-help": "ярдәм",
        "mainpagetext": "<strong>«MediaWiki» уңышлы куелды.</strong>",
        "mainpagedocfooter": "Бу вики турында мәгълүматны [//meta.wikimedia.org/wiki/Help:Contents биредә] табып була.\n\n== Кайбер файдалы ресурслар ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Көйләнмәләр исемлеге (инг.)];\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki турында еш бирелгән сораулар һәм җаваплар (инг.)];\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki'ның яңа версияләре турында хәбәрләр яздырып алу];\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language].\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]"
 }
index 59166e8..5f8af8b 100644 (file)
@@ -79,7 +79,8 @@ class PublishStashedFileJob extends Job {
                                $this->params['comment'],
                                $this->params['text'],
                                $this->params['watch'],
-                               $user
+                               $user,
+                               isset( $this->params['tags'] ) ? $this->params['tags'] : array()
                        );
                        if ( !$status->isGood() ) {
                                UploadBase::setSessionStatus(
index f85ee92..285f1ec 100644 (file)
@@ -129,11 +129,46 @@ class FormatJson {
                        $pretty = $pretty ? '    ' : false;
                }
 
-               if ( defined( 'JSON_UNESCAPED_UNICODE' ) ) {
-                       return self::encode54( $value, $pretty, $escaping );
+               static $bug66021;
+               if ( $pretty !== false && $bug66021 === null ) {
+                       $bug66021 = json_encode( array(), JSON_PRETTY_PRINT ) !== '[]';
+               }
+
+               // PHP escapes '/' to prevent breaking out of inline script blocks using '</script>',
+               // which is hardly useful when '<' and '>' are escaped (and inadequate), and such
+               // escaping negatively impacts the human readability of URLs and similar strings.
+               $options = JSON_UNESCAPED_SLASHES;
+               $options |= $pretty !== false ? JSON_PRETTY_PRINT : 0;
+               $options |= ( $escaping & self::UTF8_OK ) ? JSON_UNESCAPED_UNICODE : 0;
+               $options |= ( $escaping & self::XMLMETA_OK ) ? 0 : ( JSON_HEX_TAG | JSON_HEX_AMP );
+               $json = json_encode( $value, $options );
+               if ( $json === false ) {
+                       return false;
+               }
+
+               if ( $pretty !== false ) {
+                       // Workaround for <https://bugs.php.net/bug.php?id=66021>
+                       if ( $bug66021 ) {
+                               $json = preg_replace( self::WS_CLEANUP_REGEX, '', $json );
+                       }
+                       if ( $pretty !== '    ' ) {
+                               // Change the four-space indent to a tab indent
+                               $json = str_replace( "\n    ", "\n\t", $json );
+                               while ( strpos( $json, "\t    " ) !== false ) {
+                                       $json = str_replace( "\t    ", "\t\t", $json );
+                               }
+
+                               if ( $pretty !== "\t" ) {
+                                       // Change the tab indent to the provided indent
+                                       $json = str_replace( "\t", $pretty, $json );
+                               }
+                       }
+               }
+               if ( $escaping & self::UTF8_OK ) {
+                       $json = str_replace( self::$badChars, self::$badCharsEscaped, $json );
                }
 
-               return self::encode53( $value, $pretty, $escaping );
+               return $json;
        }
 
        /**
@@ -226,141 +261,6 @@ class FormatJson {
                return Status::newFatal( $msg );
        }
 
-       /**
-        * JSON encoder wrapper for PHP >= 5.4, which supports useful encoding options.
-        *
-        * @param mixed $value
-        * @param string|bool $pretty
-        * @param int $escaping
-        * @return string|false
-        */
-       private static function encode54( $value, $pretty, $escaping ) {
-               static $bug66021;
-               if ( $pretty !== false && $bug66021 === null ) {
-                       $bug66021 = json_encode( array(), JSON_PRETTY_PRINT ) !== '[]';
-               }
-
-               // PHP escapes '/' to prevent breaking out of inline script blocks using '</script>',
-               // which is hardly useful when '<' and '>' are escaped (and inadequate), and such
-               // escaping negatively impacts the human readability of URLs and similar strings.
-               $options = JSON_UNESCAPED_SLASHES;
-               $options |= $pretty !== false ? JSON_PRETTY_PRINT : 0;
-               $options |= ( $escaping & self::UTF8_OK ) ? JSON_UNESCAPED_UNICODE : 0;
-               $options |= ( $escaping & self::XMLMETA_OK ) ? 0 : ( JSON_HEX_TAG | JSON_HEX_AMP );
-               $json = json_encode( $value, $options );
-               if ( $json === false ) {
-                       return false;
-               }
-
-               if ( $pretty !== false ) {
-                       // Workaround for <https://bugs.php.net/bug.php?id=66021>
-                       if ( $bug66021 ) {
-                               $json = preg_replace( self::WS_CLEANUP_REGEX, '', $json );
-                       }
-                       if ( $pretty !== '    ' ) {
-                               // Change the four-space indent to a tab indent
-                               $json = str_replace( "\n    ", "\n\t", $json );
-                               while ( strpos( $json, "\t    " ) !== false ) {
-                                       $json = str_replace( "\t    ", "\t\t", $json );
-                               }
-
-                               if ( $pretty !== "\t" ) {
-                                       // Change the tab indent to the provided indent
-                                       $json = str_replace( "\t", $pretty, $json );
-                               }
-                       }
-               }
-               if ( $escaping & self::UTF8_OK ) {
-                       $json = str_replace( self::$badChars, self::$badCharsEscaped, $json );
-               }
-
-               return $json;
-       }
-
-       /**
-        * JSON encoder wrapper for PHP 5.3, which lacks native support for some encoding options.
-        * Therefore, the missing options are implemented here purely in PHP code.
-        *
-        * @param mixed $value
-        * @param string|bool $pretty
-        * @param int $escaping
-        * @return string|false
-        */
-       private static function encode53( $value, $pretty, $escaping ) {
-               $options = ( $escaping & self::XMLMETA_OK ) ? 0 : ( JSON_HEX_TAG | JSON_HEX_AMP );
-               $json = json_encode( $value, $options );
-               if ( $json === false ) {
-                       return false;
-               }
-
-               // Emulate JSON_UNESCAPED_SLASHES. Because the JSON contains no unescaped slashes
-               // (only escaped slashes), a simple string replacement works fine.
-               $json = str_replace( '\/', '/', $json );
-
-               if ( $escaping & self::UTF8_OK ) {
-                       // JSON hex escape sequences follow the format \uDDDD, where DDDD is four hex digits
-                       // indicating the equivalent UTF-16 code unit's value. To most efficiently unescape
-                       // them, we exploit the JSON extension's built-in decoder.
-                       // * We escape the input a second time, so any such sequence becomes \\uDDDD.
-                       // * To avoid interpreting escape sequences that were in the original input,
-                       //   each double-escaped backslash (\\\\) is replaced with \\\u005c.
-                       // * We strip one of the backslashes from each of the escape sequences to unescape.
-                       // * Then the JSON decoder can perform the actual unescaping.
-                       $json = str_replace( "\\\\\\\\", "\\\\\\u005c", addcslashes( $json, '\"' ) );
-                       $json = json_decode( preg_replace( "/\\\\\\\\u(?!00[0-7])/", "\\\\u", "\"$json\"" ) );
-                       $json = str_replace( self::$badChars, self::$badCharsEscaped, $json );
-               }
-
-               if ( $pretty !== false ) {
-                       return self::prettyPrint( $json, $pretty );
-               }
-
-               return $json;
-       }
-
-       /**
-        * Adds non-significant whitespace to an existing JSON representation of an object.
-        * Only needed for PHP < 5.4, which lacks the JSON_PRETTY_PRINT option.
-        *
-        * @param string $json
-        * @param string $indentString
-        * @return string
-        */
-       private static function prettyPrint( $json, $indentString ) {
-               $buf = '';
-               $indent = 0;
-               $json = strtr( $json, array( '\\\\' => '\\\\', '\"' => "\x01" ) );
-               for ( $i = 0, $n = strlen( $json ); $i < $n; $i += $skip ) {
-                       $skip = 1;
-                       switch ( $json[$i] ) {
-                               case ':':
-                                       $buf .= ': ';
-                                       break;
-                               case '[':
-                               case '{':
-                                       ++$indent;
-                                       // falls through
-                               case ',':
-                                       $buf .= $json[$i] . "\n" . str_repeat( $indentString, $indent );
-                                       break;
-                               case ']':
-                               case '}':
-                                       $buf .= "\n" . str_repeat( $indentString, --$indent ) . $json[$i];
-                                       break;
-                               case '"':
-                                       $skip = strcspn( $json, '"', $i + 1 ) + 2;
-                                       $buf .= substr( $json, $i, $skip );
-                                       break;
-                               default:
-                                       $skip = strcspn( $json, ',]}"', $i + 1 ) + 1;
-                                       $buf .= substr( $json, $i, $skip );
-                       }
-               }
-               $buf = preg_replace( self::WS_CLEANUP_REGEX, '', $buf );
-
-               return str_replace( "\x01", '\"', $buf );
-       }
-
        /**
         * Remove multiline and single line comments from an otherwise valid JSON
         * input string. This can be used as a preprocessor for to allow JSON
index dcd7a45..e93030f 100644 (file)
@@ -331,7 +331,11 @@ class LogEventsList extends ContextSource {
                $del = $this->getShowHideLinks( $row );
 
                // Any tags...
-               list( $tagDisplay, $newClasses ) = ChangeTags::formatSummaryRow( $row->ts_tags, 'logevent' );
+               list( $tagDisplay, $newClasses ) = ChangeTags::formatSummaryRow(
+                       $row->ts_tags,
+                       'logevent',
+                       $this->getContext()
+               );
                $classes = array_merge(
                        array( 'mw-logline-' . $entry->getType() ),
                        $newClasses
index 85595f1..b5a09bd 100644 (file)
@@ -409,20 +409,14 @@ class UserMailer {
                        set_error_handler( 'UserMailer::errorHandler' );
 
                        try {
-                               $safeMode = wfIniGetBool( 'safe_mode' );
-
                                foreach ( $to as $recip ) {
-                                       if ( $safeMode ) {
-                                               $sent = mail( $recip, self::quotedPrintable( $subject ), $body, $headers );
-                                       } else {
-                                               $sent = mail(
-                                                       $recip,
-                                                       self::quotedPrintable( $subject ),
-                                                       $body,
-                                                       $headers,
-                                                       $extraParams
-                                               );
-                                       }
+                                       $sent = mail(
+                                               $recip,
+                                               self::quotedPrintable( $subject ),
+                                               $body,
+                                               $headers,
+                                               $extraParams
+                                       );
                                }
                        } catch ( Exception $e ) {
                                restore_error_handler();
index 74d4904..cfd8d6b 100644 (file)
@@ -1636,6 +1636,9 @@ class WikiPage implements Page, IDBAccessObject {
         * @param User $user The user doing the edit
         * @param string $serialFormat Format for storing the content in the
         *   database.
+        * @param array|null $tags Change tags to apply to this edit
+        * Callers are responsible for permission checks
+        * (with ChangeTags::canAddTagsAccompanyingChange)
         *
         * @throws MWException
         * @return Status Possible errors:
@@ -1657,7 +1660,7 @@ class WikiPage implements Page, IDBAccessObject {
         */
        public function doEditContent(
                Content $content, $summary, $flags = 0, $baseRevId = false,
-               User $user = null, $serialFormat = null
+               User $user = null, $serialFormat = null, $tags = null
        ) {
                global $wgUser, $wgUseAutomaticEditSummaries;
 
@@ -1719,7 +1722,8 @@ class WikiPage implements Page, IDBAccessObject {
                        'oldContent' => $old_content,
                        'oldId' => $this->getLatest(),
                        'oldIsRedirect' => $this->isRedirect(),
-                       'oldCountable' => $this->isCountable()
+                       'oldCountable' => $this->isCountable(),
+                       'tags' => ( $tags !== null ) ? (array)$tags : array()
                );
 
                // Actually create the revision and create/update the page
@@ -1850,7 +1854,8 @@ class WikiPage implements Page, IDBAccessObject {
                                        $oldContent ? $oldContent->getSize() : 0,
                                        $newsize,
                                        $revisionId,
-                                       $patrolled
+                                       $patrolled,
+                                       $meta['tags']
                                );
                        }
 
@@ -1989,7 +1994,8 @@ class WikiPage implements Page, IDBAccessObject {
                                '',
                                $newsize,
                                $revisionId,
-                               $patrolled
+                               $patrolled,
+                               $meta['tags']
                        );
                }
 
@@ -3063,13 +3069,17 @@ class WikiPage implements Page, IDBAccessObject {
         *    success        : 'summary' (str), 'current' (rev), 'target' (rev)
         *
         * @param User $user The user performing the rollback
+        * @param array|null $tags Change tags to apply to the rollback
+        * Callers are responsible for permission checks
+        * (with ChangeTags::canAddTagsAccompanyingChange)
+        *
         * @return array Array of errors, each error formatted as
         *   array(messagekey, param1, param2, ...).
         * On success, the array is empty.  This array can also be passed to
         * OutputPage::showPermissionsErrorPage().
         */
        public function doRollback(
-               $fromP, $summary, $token, $bot, &$resultDetails, User $user
+               $fromP, $summary, $token, $bot, &$resultDetails, User $user, $tags = null
        ) {
                $resultDetails = null;
 
@@ -3091,7 +3101,7 @@ class WikiPage implements Page, IDBAccessObject {
                        return $errors;
                }
 
-               return $this->commitRollback( $fromP, $summary, $bot, $resultDetails, $user );
+               return $this->commitRollback( $fromP, $summary, $bot, $resultDetails, $user, $tags );
        }
 
        /**
@@ -3108,9 +3118,15 @@ class WikiPage implements Page, IDBAccessObject {
         *
         * @param array $resultDetails Contains result-specific array of additional values
         * @param User $guser The user performing the rollback
+        * @param array|null $tags Change tags to apply to the rollback
+        * Callers are responsible for permission checks
+        * (with ChangeTags::canAddTagsAccompanyingChange)
+        *
         * @return array
         */
-       public function commitRollback( $fromP, $summary, $bot, &$resultDetails, User $guser ) {
+       public function commitRollback( $fromP, $summary, $bot,
+               &$resultDetails, User $guser, $tags = null
+       ) {
                global $wgUseRCPatrol, $wgContLang;
 
                $dbw = wfGetDB( DB_MASTER );
@@ -3205,7 +3221,9 @@ class WikiPage implements Page, IDBAccessObject {
                        $summary,
                        $flags,
                        $target->getId(),
-                       $guser
+                       $guser,
+                       null,
+                       $tags
                );
 
                // Set patrolling and bot flag on the edits, which gets rollbacked.
index 7fc9a16..dfc4b53 100644 (file)
@@ -282,7 +282,7 @@ class LinkHolderArray {
                        return;
                }
 
-               global $wgContLang, $wgContentHandlerUseDB;
+               global $wgContLang, $wgContentHandlerUseDB, $wgPageLanguageUseDB;
 
                $colours = array();
                $linkCache = LinkCache::singleton();
@@ -348,6 +348,9 @@ class LinkHolderArray {
                        if ( $wgContentHandlerUseDB ) {
                                $fields[] = 'page_content_model';
                        }
+                       if ( $wgPageLanguageUseDB ) {
+                               $fields[] = 'page_lang';
+                       }
 
                        $res = $dbr->select(
                                'page',
@@ -460,7 +463,7 @@ class LinkHolderArray {
         * @param array $colours
         */
        protected function doVariants( &$colours ) {
-               global $wgContLang, $wgContentHandlerUseDB;
+               global $wgContLang, $wgContentHandlerUseDB, $wgPageLanguageUseDB;
                $linkBatch = new LinkBatch();
                $variantMap = array(); // maps $pdbkey_Variant => $keys (of link holders)
                $output = $this->parent->getOutput();
@@ -555,6 +558,9 @@ class LinkHolderArray {
                        if ( $wgContentHandlerUseDB ) {
                                $fields[] = 'page_content_model';
                        }
+                       if ( $wgPageLanguageUseDB ) {
+                               $fields[] = 'page_lang';
+                       }
 
                        $varRes = $dbr->select( 'page',
                                $fields,
index f947285..bec83e1 100644 (file)
@@ -6408,9 +6408,8 @@ class Parser {
                }
                $this->mInParse = true;
 
-               $that = $this;
-               $recursiveCheck = new ScopedCallback( function() use ( $that ) {
-                       $that->mInParse = false;
+               $recursiveCheck = new ScopedCallback( function() {
+                       $this->mInParse = false;
                } );
 
                return $recursiveCheck;
index 4a68f8e..c9f515e 100644 (file)
@@ -104,8 +104,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        'wgResourceLoaderLegacyModules' => self::getLegacyModules(),
                        'wgForeignUploadTargets' => $conf->get( 'ForeignUploadTargets' ),
                        'wgEnableUploads' => $conf->get( 'EnableUploads' ),
-                       'wgForeignUploadTestEnabled' => $conf->get( 'ForeignUploadTestEnabled' ),
-                       'wgForeignUploadTestDefault' => $conf->get( 'ForeignUploadTestDefault' ),
                );
 
                Hooks::run( 'ResourceLoaderGetConfigVars', array( &$vars ) );
index e52d07c..754e68f 100644 (file)
@@ -164,7 +164,11 @@ class RevDelRevisionItem extends RevDelItem {
                $attribs = array();
                $tags = $this->getTags();
                if ( $tags ) {
-                       list( $tagSummary, $classes ) = ChangeTags::formatSummaryRow( $tags, 'revisiondelete' );
+                       list( $tagSummary, $classes ) = ChangeTags::formatSummaryRow(
+                               $tags,
+                               'revisiondelete',
+                               $this->list->getContext()
+                       );
                        $content .= " $tagSummary";
                        $attribs['class'] = implode( ' ', $classes );
                }
index 3177dc2..f55c589 100644 (file)
@@ -103,15 +103,15 @@ class CookieSessionProvider extends SessionProvider {
        }
 
        public function provideSessionInfo( WebRequest $request ) {
+               $sessionId = $this->getCookie( $request, $this->params['sessionName'], '' );
                $info = array(
-                       'id' => $this->getCookie( $request, $this->params['sessionName'], '' ),
                        'provider' => $this,
                        'forceHTTPS' => $this->getCookie( $request, 'forceHTTPS', '', false )
                );
-               if ( !SessionManager::validateSessionId( $info['id'] ) ) {
-                       unset( $info['id'] );
+               if ( SessionManager::validateSessionId( $sessionId ) ) {
+                       $info['id'] = $sessionId;
+                       $info['persisted'] = true;
                }
-               $info['persisted'] = isset( $info['id'] );
 
                list( $userId, $userName, $token ) = $this->getUserInfoFromCookies( $request );
                if ( $userId !== null ) {
@@ -126,7 +126,7 @@ class CookieSessionProvider extends SessionProvider {
                                $this->logger->warning(
                                        'Session "{session}" requested with mismatched UserID and UserName cookies.',
                                        array(
-                                               'session' => $info['id'],
+                                               'session' => $sessionId,
                                                'mismatch' => array(
                                                        'userid' => $userId,
                                                        'cookie_username' => $userName,
@@ -141,7 +141,7 @@ class CookieSessionProvider extends SessionProvider {
                                        $this->logger->warning(
                                                'Session "{session}" requested with invalid Token cookie.',
                                                array(
-                                                       'session' => $info['id'],
+                                                       'session' => $sessionId,
                                                        'userid' => $userId,
                                                        'username' => $userInfo->getName(),
                                         ) );
diff --git a/includes/session/MetadataMergeException.php b/includes/session/MetadataMergeException.php
new file mode 100644 (file)
index 0000000..9f42c27
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+/**
+ * @section LICENSE
+ * 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 Session
+ */
+
+namespace MediaWiki\Session;
+
+use UnexpectedValueException;
+
+/**
+ * Subclass of UnexpectedValueException that can be annotated with additional
+ * data for debug logging.
+ *
+ * @author Bryan Davis <bd808@wikimedia.org>
+ * @copyright © 2016 Bryan Davis and Wikimedia Foundation.
+ * @since 1.27
+ */
+class MetadataMergeException extends UnexpectedValueException {
+       /** @var array $context */
+       protected $context;
+
+       /**
+        * @param string $message
+        * @param int $code
+        * @param Exception|null $previous
+        * @param array $context Additional context data
+        */
+       public function __construct(
+               $message = '',
+               $code = 0,
+               Exception $previous = null,
+               array $context = []
+       ) {
+               parent::__construct( $message, $code, $previous );
+               $this->context = $context;
+       }
+
+       /**
+        * Get context data.
+        * @return array
+        */
+       public function getContext() {
+               return $this->context;
+       }
+
+       /**
+        * Set context data.
+        * @param array $context
+        */
+       public function setContext( array $context ) {
+               $this->context = $context;
+       }
+}
index 4ad69ae..d654ff1 100644 (file)
@@ -23,6 +23,7 @@
 
 namespace MediaWiki\Session;
 
+use Psr\Log\LoggerInterface;
 use User;
 use WebRequest;
 
@@ -41,24 +42,28 @@ use WebRequest;
  * The Session object also serves as a replacement for PHP's $_SESSION,
  * managing access to per-session data.
  *
- * @todo Once we drop support for PHP 5.3.3, implementing ArrayAccess would be nice.
  * @ingroup Session
  * @since 1.27
  */
-final class Session implements \Countable, \Iterator {
+final class Session implements \Countable, \Iterator, \ArrayAccess {
        /** @var SessionBackend Session backend */
        private $backend;
 
        /** @var int Session index */
        private $index;
 
+       /** @var LoggerInterface */
+       private $logger;
+
        /**
         * @param SessionBackend $backend
         * @param int $index
+        * @param LoggerInterface $logger
         */
-       public function __construct( SessionBackend $backend, $index ) {
+       public function __construct( SessionBackend $backend, $index, LoggerInterface $logger ) {
                $this->backend = $backend;
                $this->index = $index;
+               $this->logger = $logger;
        }
 
        public function __destruct() {
@@ -271,7 +276,7 @@ final class Session implements \Countable, \Iterator {
        /**
         * Fetch a value from the session
         * @param string|int $key
-        * @param mixed $default
+        * @param mixed $default Returned if $this->exists( $key ) would be false
         * @return mixed
         */
        public function get( $key, $default = null ) {
@@ -281,6 +286,7 @@ final class Session implements \Countable, \Iterator {
 
        /**
         * Test if a value exists in the session
+        * @note Unlike isset(), null values are considered to exist.
         * @param string|int $key
         * @return bool
         */
@@ -419,6 +425,39 @@ final class Session implements \Countable, \Iterator {
                return key( $data ) !== null;
        }
 
+       /**
+        * @note Despite the name, this seems to be intended to implement isset()
+        *  rather than array_key_exists(). So do that.
+        */
+       public function offsetExists( $offset ) {
+               $data = &$this->backend->getData();
+               return isset( $data[$offset] );
+       }
+
+       /**
+        * @note This supports indirect modifications but can't mark the session
+        *  dirty when those happen. SessionBackend::save() checks the hash of the
+        *  data to detect such changes.
+        * @note Accessing a nonexistent key via this mechanism causes that key to
+        *  be created with a null value, and does not raise a PHP warning.
+        */
+       public function &offsetGet( $offset ) {
+               $data = &$this->backend->getData();
+               if ( !array_key_exists( $offset, $data ) ) {
+                       $ex = new \Exception( "Undefined index (auto-adds to session with a null value): $offset" );
+                       $this->logger->debug( $ex->getMessage(), array( 'exception' => $ex ) );
+               }
+               return $data[$offset];
+       }
+
+       public function offsetSet( $offset, $value ) {
+               $this->set( $offset, $value );
+       }
+
+       public function offsetUnset( $offset ) {
+               $this->remove( $offset );
+       }
+
        /**@}*/
 
 }
index fe446e3..5cf7869 100644 (file)
@@ -170,7 +170,7 @@ final class SessionBackend {
        public function getSession( WebRequest $request ) {
                $index = ++$this->curIndex;
                $this->requests[$index] = $request;
-               $session = new Session( $this, $index );
+               $session = new Session( $this, $index, $this->logger );
                return $session;
        }
 
index 83c30ab..d3b7a2d 100644 (file)
@@ -24,6 +24,7 @@
 namespace MediaWiki\Session;
 
 use Psr\Log\LoggerInterface;
+use Psr\Log\LogLevel;
 use BagOStuff;
 use CachedBagOStuff;
 use Config;
@@ -744,13 +745,14 @@ final class SessionManager implements SessionManagerInterface {
                                                if ( $newProviderMetadata !== $providerMetadata ) {
                                                        $newParams['metadata'] = $newProviderMetadata;
                                                }
-                                       } catch ( \UnexpectedValueException $ex ) {
+                                       } catch ( MetadataMergeException $ex ) {
                                                $this->logger->warning(
                                                        'Session "{session}": Metadata merge failed: {exception}',
                                                        array(
                                                                'session' => $info,
                                                                'exception' => $ex,
-                                               ) );
+                                                       ) + $ex->getContext()
+                                               );
                                                return false;
                                        }
                                }
@@ -1053,6 +1055,96 @@ final class SessionManager implements SessionManagerInterface {
                self::$globalSessionRequest = null;
        }
 
+       /**
+        * Do a sanity check to make sure the session is not used from many different IP addresses
+        * and store some data for later sanity checks.
+        * FIXME remove this once SessionManager is considered stable
+        * @private For use in Setup.php only
+        * @param Session $session Defaults to the global session.
+        */
+       public function checkIpLimits( Session $session = null ) {
+               $session = $session ?: self::getGlobalSession();
+
+               try {
+                       $ip = $session->getRequest()->getIP();
+               } catch ( \MWException $e ) {
+                       return;
+               }
+               if ( $ip === '127.0.0.1' || \IP::isConfiguredProxy( $ip ) ) {
+                       return;
+               }
+               $now = time();
+
+               // Record (and possibly log) that the IP is using the current session.
+               // Don't touch the stored data unless we are adding a new IP or re-adding an expired one.
+               // This is slightly inaccurate (when an existing IP is seen again, the expiry is not
+               // extended) but that shouldn't make much difference and limits the session write frequency
+               // to # of IPs / $wgSuspiciousIpExpiry.
+               $data = $session->get( 'SessionManager-ip', array() );
+               if (
+                       !isset( $data[$ip] )
+                       || $data[$ip] < $now
+               ) {
+                       $data[$ip] = time() + $this->config->get( 'SuspiciousIpExpiry' );
+                       foreach ( $data as $key => $expires ) {
+                               if ( $expires < $now ) {
+                                       unset( $data[$key] );
+                               }
+                       }
+                       $session->set( 'SessionManager-ip', $data );
+
+                       $logger = \MediaWiki\Logger\LoggerFactory::getInstance( 'session-ip' );
+                       $logLevel = count( $data ) >= $this->config->get( 'SuspiciousIpPerSessionLimit' )
+                               ? LogLevel::WARNING : ( count( $data ) === 1 ? LogLevel::DEBUG : LogLevel::INFO );
+                       $logger->log(
+                               $logLevel,
+                               'Same session used from {count} IPs',
+                               array(
+                                       'count' => count( $data ),
+                                       'ips' => $data,
+                                       'session' => $session->getId(),
+                                       'user' => $session->getUser()->getName(),
+                                       'persistent' => $session->isPersistent(),
+                               )
+                       );
+               }
+
+               // Now do the same thing globally for the current user.
+               // We are using the object cache and assume it is shared between all wikis of a farm,
+               // and further assume that the same name belongs to the same user on all wikis. (It's either
+               // that or a central ID lookup which would mean an extra SQL query on every request.)
+               if ( $session->getUser()->isLoggedIn() ) {
+                       $userKey = 'SessionManager-ip:' . md5( $session->getUser()->getName() );
+                       $data = $this->store->get( $userKey ) ?: array();
+                       if (
+                               !isset( $data[$ip] )
+                               || $data[$ip] < $now
+                       ) {
+                               $data[$ip] = time() + $this->config->get( 'SuspiciousIpExpiry' );
+                               foreach ( $data as $key => $expires ) {
+                                       if ( $expires < $now ) {
+                                               unset( $data[$key] );
+                                       }
+                               }
+                               $this->store->set( $userKey, $data, $this->config->get( 'SuspiciousIpExpiry' ) );
+                               $logger = \MediaWiki\Logger\LoggerFactory::getInstance( 'session-ip' );
+                               $logLevel = count( $data ) >= $this->config->get( 'SuspiciousIpPerUserLimit' )
+                                       ? LogLevel::WARNING : ( count( $data ) === 1 ? LogLevel::DEBUG : LogLevel::INFO );
+                               $logger->log(
+                                       $logLevel,
+                                       'Same user had sessions from {count} IPs',
+                                       array(
+                                               'count' => count( $data ),
+                                               'ips' => $data,
+                                               'session' => $session->getId(),
+                                               'user' => $session->getUser()->getName(),
+                                               'persistent' => $session->isPersistent(),
+                                       )
+                               );
+                       }
+               }
+       }
+
        /**@}*/
 
 }
index 0fd3a71..db6294d 100644 (file)
@@ -186,12 +186,17 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
         * @param array $savedMetadata Saved provider metadata
         * @param array $providedMetadata Provided provider metadata
         * @return array Resulting metadata
-        * @throws \UnexpectedValueException If the metadata cannot be merged
+        * @throws MetadataMergeException If the metadata cannot be merged
         */
        public function mergeMetadata( array $savedMetadata, array $providedMetadata ) {
                foreach ( $providedMetadata as $k => $v ) {
                        if ( array_key_exists( $k, $savedMetadata ) && $savedMetadata[$k] !== $v ) {
-                               throw new \UnexpectedValueException( "Key \"$k\" changed" );
+                               $e = new MetadataMergeException( "Key \"$k\" changed" );
+                               $e->setContext( [
+                                       'old_value' => $savedMetadata[$k],
+                                       'new_value' => $v,
+                               ] );
+                               throw $e;
                        }
                }
                return $providedMetadata;
index 1a1b490..0e3c9aa 100644 (file)
@@ -1128,7 +1128,8 @@ class ContribsPager extends ReverseChronologicalPager {
                        # Tags, if any.
                        list( $tagSummary, $newClasses ) = ChangeTags::formatSummaryRow(
                                $row->ts_tags,
-                               'contributions'
+                               'contributions',
+                               $this->getContext()
                        );
                        $classes = array_merge( $classes, $newClasses );
                        $ret .= " $tagSummary";
index 5d3700d..e24764a 100644 (file)
@@ -359,7 +359,8 @@ class SpecialNewpages extends IncludableSpecialPage {
                if ( isset( $result->ts_tags ) ) {
                        list( $tagDisplay, $newClasses ) = ChangeTags::formatSummaryRow(
                                $result->ts_tags,
-                               'newpages'
+                               'newpages',
+                               $this->getContext()
                        );
                        $classes = array_merge( $classes, $newClasses );
                } else {
index 38093be..20af655 100644 (file)
@@ -122,8 +122,7 @@ class SpecialPageLanguage extends FormSpecialPage {
                }
 
                // Get the default language for the wiki
-               // Returns the default since the page is not loaded from DB
-               $defLang = $title->getPageLanguage()->getCode();
+               $defLang = $this->getConfig()->get( 'LanguageCode' );
 
                $pageId = $title->getArticleID();
 
index 5e08e51..f488d3c 100644 (file)
@@ -1173,7 +1173,7 @@ class SpecialUndelete extends SpecialPage {
                        array( 'ts_rev_id' => $rev->getId() ),
                        __METHOD__
                );
-               $tagSummary = ChangeTags::formatSummaryRow( $tags, 'deleteddiff' );
+               $tagSummary = ChangeTags::formatSummaryRow( $tags, 'deleteddiff', $this->getContext() );
 
                // FIXME This is reimplementing DifferenceEngine#getRevisionHeader
                // and partially #showDiffPage, but worse
@@ -1505,7 +1505,11 @@ class SpecialUndelete extends SpecialPage {
 
                // Tags
                $attribs = array();
-               list( $tagSummary, $classes ) = ChangeTags::formatSummaryRow( $row->ts_tags, 'deletedhistory' );
+               list( $tagSummary, $classes ) = ChangeTags::formatSummaryRow(
+                       $row->ts_tags,
+                       'deletedhistory',
+                       $this->getContext()
+               );
                if ( $classes ) {
                        $attribs['class'] = implode( ' ', $classes );
                }
index 5b3c43e..3ccc797 100644 (file)
@@ -501,11 +501,29 @@ class SpecialUpload extends SpecialPage {
                        $pageText = false;
                }
 
+               $changeTags = $this->getRequest()->getVal( 'wpChangeTags' );
+               if ( is_null( $changeTags ) || $changeTags === '' ) {
+                       $changeTags = array();
+               } else {
+                       $changeTags = array_filter( array_map( 'trim', explode( ',', $changeTags ) ) );
+               }
+
+               if ( $changeTags ) {
+                       $changeTagsStatus = ChangeTags::canAddTagsAccompanyingChange(
+                               $changeTags, $this->getUser() );
+                       if ( !$changeTagsStatus->isOK() ) {
+                               $this->showUploadError( $this->getOutput()->parse( $changeTagsStatus->getWikiText() ) );
+
+                               return;
+                       }
+               }
+
                $status = $this->mUpload->performUpload(
                        $this->mComment,
                        $pageText,
                        $this->mWatchthis,
-                       $this->getUser()
+                       $this->getUser(),
+                       $changeTags
                );
 
                if ( !$status->isGood() ) {
index 05e5229..0273484 100644 (file)
@@ -649,7 +649,7 @@ class LoginForm extends SpecialPage {
                                "allowed account creation w/o throttle\n" );
                } else {
                        if ( ( $wgAccountCreationThrottle && $currentUser->isPingLimitable() ) ) {
-                               $key = wfMemcKey( 'acctcreate', 'ip', $ip );
+                               $key = wfGlobalCacheKey( 'acctcreate', 'ip', $ip );
                                $value = $cache->get( $key );
                                if ( !$value ) {
                                        $cache->set( $key, 0, $cache::TTL_DAY );
@@ -890,7 +890,7 @@ class LoginForm extends SpecialPage {
 
                $throttleCount = 0;
                if ( is_array( $wgPasswordAttemptThrottle ) ) {
-                       $throttleKey = wfMemcKey( 'password-throttle', $wgRequest->getIP(), md5( $username ) );
+                       $throttleKey = wfGlobalCacheKey( 'password-throttle', $wgRequest->getIP(), md5( $username ) );
                        $count = $wgPasswordAttemptThrottle['count'];
                        $period = $wgPasswordAttemptThrottle['seconds'];
 
@@ -917,7 +917,7 @@ class LoginForm extends SpecialPage {
                global $wgRequest;
                $username = trim( $username ); // sanity
 
-               $throttleKey = wfMemcKey( 'password-throttle', $wgRequest->getIP(), md5( $username ) );
+               $throttleKey = wfGlobalCacheKey( 'password-throttle', $wgRequest->getIP(), md5( $username ) );
                ObjectCache::getLocalClusterInstance()->delete( $throttleKey );
        }
 
@@ -1000,7 +1000,7 @@ class LoginForm extends SpecialPage {
 
                                // Reset the throttle
                                $request = $this->getRequest();
-                               $key = wfMemcKey( 'password-throttle', $request->getIP(), md5( $this->mUsername ) );
+                               $key = wfGlobalCacheKey( 'password-throttle', $request->getIP(), md5( $this->mUsername ) );
                                $cache->delete( $key );
 
                                if ( $this->hasSessionCookie() || $this->mSkipCookieCheck ) {
index 7351c33..205b67e 100644 (file)
@@ -292,7 +292,7 @@ class UserrightsPage extends SpecialPage {
                $user->invalidateCache();
 
                // update groups in external authentication database
-               Hooks::run( 'UserGroupsChanged', array( $user, $add, $remove, $this->getUser() ) );
+               Hooks::run( 'UserGroupsChanged', array( $user, $add, $remove, $this->getUser(), $reason ) );
                $wgAuth->updateExternalDBGroups( $user, $add, $remove );
 
                wfDebug( 'oldGroups: ' . print_r( $oldGroups, true ) . "\n" );
index 749ec46..95e5ceb 100644 (file)
@@ -1387,7 +1387,7 @@ class User implements IDBAccessObject {
                        $this->addGroup( $group );
                }
                // update groups in external authentication database
-               Hooks::run( 'UserGroupsChanged', array( $this, $toPromote, array(), false ) );
+               Hooks::run( 'UserGroupsChanged', array( $this, $toPromote, array(), false, false ) );
                $wgAuth->updateExternalDBGroups( $this, $toPromote );
 
                $newGroups = array_merge( $oldGroups, $toPromote ); // all groups
index bcedf4a..7036989 100644 (file)
        "changepassword-throttled": "لديك محاولات تسجيل دخول كثيرة حديثة. من فضلك انتظر $1 قبل المحاولة ثانية.",
        "botpasswords-label-appid": "اسم البوت:",
        "botpasswords-label-create": "أنشأ",
+       "botpasswords-label-update": "حدث",
        "botpasswords-label-cancel": "ألغ",
        "botpasswords-label-delete": "احذف",
        "botpasswords-label-resetpassword": "أعد ضبط كلمة السر",
+       "botpasswords-label-restrictions": "قيود الاستخدام:",
        "resetpass_forbidden": "كلمات السر لا يمكن تغييرها",
        "resetpass-no-info": "يجب أن تكون مسجل الدخول للوصول إلى هذه الصفحة مباشرة.",
        "resetpass-submit-loggedin": "تغيير كلمة السر",
        "right-managechangetags": "إنشاء وحذف [[Special:Tags|الوسوم]] من قاعدة البيانات",
        "right-applychangetags": "تطبيق [[Special:Tags|الوسوم]]  مع التغييرات التي أجريتها.",
        "grant-generic": "\"$1\" حزمة الصلاحيات",
+       "grant-uploadfile": "ارفع ملفات جديدة",
        "newuserlogpage": "سجل إنشاء المستخدمين",
        "newuserlogpagetext": "هذا سجل بعمليات إنشاء المستخدمين.",
        "rightslog": "سجل صلاحيات المستخدمين",
        "upload-dialog-button-done": "تم",
        "upload-dialog-button-save": "احفظ",
        "upload-dialog-button-upload": "رفع",
-       "upload-form-label-select-file": "اختر ملفا",
        "upload-form-label-infoform-title": "التفاصيل",
        "upload-form-label-infoform-name": "الاسم",
        "upload-form-label-infoform-description": "الوصف",
        "foreign-structured-upload-form-label-own-work": "هذا عملي الخاص",
        "foreign-structured-upload-form-label-infoform-categories": "تصنيفات",
        "foreign-structured-upload-form-label-infoform-date": "التاريخ",
-       "foreign-structured-upload-form-3-label-yes": "نعم",
-       "foreign-structured-upload-form-3-label-no": "لا",
        "backend-fail-stream": "لا يمكن عرض الملف $1.",
        "backend-fail-backup": "لا يمكن صنع نسخة أحتياطية للملف $1.",
        "backend-fail-notexists": "الملف $1 غير موجود.",
        "apihelp": "مساعدة API",
        "apihelp-no-such-module": "الوحدة \"$1\" غير موجودة.",
        "apisandbox": "ملعب API",
+       "apisandbox-fullscreen": "وسع اللوحة",
+       "apisandbox-unfullscreen": "أظهر الصفحة",
        "apisandbox-submit": "عمل الطلب",
        "apisandbox-reset": "إفراغ",
        "apisandbox-retry": "أعد المحاولة",
        "ipb-confirm": "أكّد المنع",
        "badipaddress": "عنوان أيبي غير صحيح",
        "blockipsuccesssub": "تم المنع بنجاح",
-       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] ØªÙ\85 {{GENDER:$1|Ù\85Ù\86عÙ\87\85Ù\86عÙ\87ا}}.<br />\nØ£Ù\86ظر [[Special:BlockList|قائمة منع الآيبي]] لمراجعة حالات المنع.",
+       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] ØªÙ\85 {{GENDER:$1|Ù\85Ù\86عÙ\87\85Ù\86عÙ\87ا}}.<br />\nطاÙ\84ع [[Special:BlockList|قائمة منع الآيبي]] لمراجعة حالات المنع.",
        "ipb-blockingself": "أنت على وشك منع نفسك! أمتأكد من رغبتك في القيام بذلك؟",
        "ipb-confirmhideuser": "أنت على وشك منع مستخدم مع تفعيل خيار \"أخف المستخدم\". سوف يخفي هذا الخيار اسم المستخدم من جميل القوائم ومدخلات السجلات. أمتأكد من رغبتك في القيام بذلك؟",
        "ipb-confirmaction": "إن كنت متأكدًا أنك تريد القيام بذلك حقًا، فالرجاء التحقق من حقل \"{{int:ipb-confirm}}\" في الأسفل.",
index e0311dd..1458449 100644 (file)
        "foreign-structured-upload-form-label-own-work-message-shared": "Certifico que tengo los drechos d'autor d'esti ficheru, y aceuto irrevocablemente lliberalu a Wikimedia Commons baxo la llicencia [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0], y aceuto les [https://wikimediafoundation.org/wiki/Terms_of_Use Condiciones d'usu].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Si nun tienes los drechos d'autor d'esti ficheru, o quieres lliberalu baxo una llicencia diferente, considera usar el [https://commons.wikimedia.org/wiki/Special:UploadWizard Asistente de carga en Commons Upload].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Tamién pué interesate usar [[Special:Upload|la páxina de carga de {{SITENAME}}]] si esti ficheru pué xubise allí baxo les sos polítiques.",
-       "foreign-structured-upload-form-2-label-intro": "Gracies por donar una imaxe pa usar en {{SITENAME}}. Sólo tendríes de siguir si la mesma cumple delles condiciones:",
-       "foreign-structured-upload-form-2-label-ownwork": "Tien que ser completamente <strong>la to propia creación</strong>, non alcontrada n'Internet",
-       "foreign-structured-upload-form-2-label-noderiv": "Nun tien de contener <strong>nengún trabayu d'otra persona</strong>, o tar inspiráu por otros",
-       "foreign-structured-upload-form-2-label-useful": "Tien de ser <strong>educativu y útil</strong> pa enseñar a otros",
-       "foreign-structured-upload-form-2-label-ccbysa": "Tien d'<strong>aceutar espublizase pa siempre</strong> n'Internet baxo la llicencia [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Reconocimientu-CompartirIgual 4.0]",
-       "foreign-structured-upload-form-2-label-alternative": "Si nun ye verdadero tolo anterior, inda podríes ser capaz de xubir esti ficheru usando l'[https://commons.wikimedia.org/wiki/Special:UploadWizard Asistente de xubíes de Commons], mentanto tea disponible baxo una llicencia llibre.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Al xubir el ficheru, certifiques que tienes los drechos d'autor d'esti ficheru, y aceutes definitivamente espublizar esti ficheru en Wikimedia Commons baxo la llicencia Creative Commons Reconocimientu-CompartirIgual 4.0, y aceutes les [https://wikimediafoundation.org/wiki/Terms_of_Use Condiciones d'usu].",
-       "foreign-structured-upload-form-3-label-question-website": "¿Descargasti esta imaxe d'un sitiu web, o la alcontrasti con una gueta d'imáxenes?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "¿Creasti esta imaxe (sacasti la semeya, ficisti'l dibuxu, etc.) tu mesmu?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "¿Contien, o ta inspirada por, una obra propiedá d'otra persona, como un logo?",
-       "foreign-structured-upload-form-3-label-yes": "Sí",
-       "foreign-structured-upload-form-3-label-no": "Non",
-       "foreign-structured-upload-form-3-label-alternative": "Por desgracia, nesti casu, esta ferramienta nun tien encontu pa xubir esti ficheru. Índa podríes xubilu usando l'[https://commons.wikimedia.org/wiki/Special:UploadWizard Asistente de xubíes de Commons], mentanto tea disponible baxo una llicencia llibre.",
-       "foreign-structured-upload-form-4-label-good": "Usando esta ferramienta, puedes xubir gráficos educativos creaos por ti y fotografíes que sacaras, que nun contengan obres d'otres persones.",
-       "foreign-structured-upload-form-4-label-bad": "Nun puedes xubir imáxenes atopaes nun motor de gueta o descargaes d'otros sitios web.",
        "backend-fail-stream": "Nun se pudo tresmitir el ficheru $1.",
        "backend-fail-backup": "Nun se pudo facer copia de seguridá del ficheru $1.",
        "backend-fail-notexists": "El ficheru $1 nun esiste.",
index 5da6f7a..dab924e 100644 (file)
        "upload-dialog-button-done": "اولدو",
        "upload-dialog-button-save": "ذخیره ائت",
        "upload-dialog-button-upload": "یوکله",
-       "upload-form-label-select-file": "فایل سئچ",
        "upload-form-label-infoform-title": "جوزئیات",
        "upload-form-label-infoform-name": "آد",
        "upload-form-label-infoform-description": "آچیقلاما",
        "protectedtitles-summary": "بۇ صحیفه، ایندیکی یارانماق‌دان قوْرونان باشلیقلاری لیست ائدیر. ایندیکی قوْرونان موْجود اوْلان صحیفه‌لرین لیستینی گؤرمک اۆچون، [[{{#special:ProtectedPages}}|{{int:protectedpages}}]]-ه باخین.",
        "protectedtitlesempty": "حال-حاضردا، بو پارامئترلری قورونان هئچ بیر موضوع یوخ‌دور.",
        "listusers": "ایشلدن لیستی",
-       "listusers-editsonly": "يالنیز دَییشدیرمه ائدن ایستیفاده‌چیلری گؤستر",
+       "listusers-editsonly": "تکجه دَییشدیرمه ائدن ایشلدنلری گؤستر",
        "listusers-creationsort": "يارانما تاریخینه گؤره سیرالا",
        "listusers-desc": "آزالان سیرادا سیرالا",
        "usereditcount": "$1 {{PLURAL:$1|دَییشدیرمه}}",
        "rollback": "اوولکی نوسخه لر",
        "rollbacklink": "قایتار",
        "rollbacklinkcount": "$1 دییشدیرمه‌نی قایتار",
-       "rollbacklinkcount-morethan": "گیتیرلمه آرتیق $1 {{PLURAL:$1|دییشمک |دییشمک}} دییشدیرمه",
+       "rollbacklinkcount-morethan": "$1-دن چوْخ دییشدیرمه‌نی قایتار",
        "rollbackfailed": "گئری قایتارما اوغورسوزدور",
        "cantrollback": "دییشدیر گئری قایتاریلا بیلمز؛ آخیرینجی دییشدیر صحیفه‌ده اولان یئگانه فالیت‌دیر.",
        "alreadyrolled": "[[User:$2|$2]] ([[User talk:$2|موزاکیره]] {{int:pipe-separator}} [[Special:Contributions/$2| {{int:contribslink}}]]) طرفین‌دن [[:$1]] صحیفه‌سینده ائدیلمیش سون دییشیک‌لیک گئرییه آلینا بیلمیر؛\nباشقا بیری صحیفه‌ده دییشیک‌لیک ائتدی یا دا صحیفنی گئرییه آلدی.\n\nسون دییشیک‌لیگی ائدن: [[User:$3|$3]] ([[User talk:$3|تالک]] {{int:pipe-separator}} [[Special:Contributions/$3| {{int:contribslink}}]] ).",
index 8bc2270..637418e 100644 (file)
        "october-date": "Октябрь $1",
        "november-date": "Ноябрь $1",
        "december-date": "Сентябрь $1",
+       "period-am": "ТК",
+       "period-pm": "ТС",
        "pagecategories": "{{PLURAL:$1|1=Категория|Категориялар}}",
        "category_header": "«$1» категорияһындағы биттәр",
        "subcategories": "Эске категориялар",
        "pool-timeout": "Блоклауҙы көтөү ваҡыты үтте",
        "pool-queuefull": "Һорауҙар сираты тулы",
        "pool-errorunknown": "Билдәһеҙ хата",
+       "pool-servererror": "Пул иҫәпләү хеҙмәте эшләмәй ($1).",
        "poolcounter-usage-error": "$1: ҡулланыу хатаһы",
        "aboutsite": "{{SITENAME}} тураһында",
        "aboutpage": "Project:Тасуирлама",
        "pagetitle": "{{SITENAME}} проектынан",
        "retrievedfrom": "Сығанағы — «$1»",
        "youhavenewmessages": "Яңы $1 бар ($2).",
-       "youhavenewmessagesfromusers": "Һеҙгә {{PLURAL:$3|1=башҡа ҡатнашыусынан|$3 ҡатнашыусынан}} $1 бар ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Һеҙгә}} {{PLURAL:$3|$3 ҡатнашыусыһана}} $1 килде ($2).",
        "youhavenewmessagesmanyusers": "Һеҙгә күп ҡатнашыусынан $1 бар ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|1=яңы хәбәр|яңы хәбәр}}",
-       "newmessagesdifflinkplural": "һуңғы {{PLURAL:$1|1=үҙгәртеү|үҙгәртеү}}",
+       "newmessagesdifflinkplural": "һуңғы {{PLURAL:$1|үҙгәртеү|999=үҙгәртеүҙәр}}",
        "youhavenewmessagesmulti": "Һеҙгә яңы хәбәрҙәр бар: $1",
        "editsection": "үҙгәртергә",
        "editold": "төҙәтеү",
        "readonly_lag": "Өҫтәмә сервер төп сервер менән синхронлашҡанға тиклем мәғлүмәттәр базаһы автоматик рәүештә үҙгәрештәргә ҡаршы ябылған.",
        "internalerror": "Эске хата",
        "internalerror_info": "Эске хата: $1",
+       "internalerror-fatal-exception": "$1 тибындағы төҙәтә алмаҫлыҡ ҡағиҙәнән ситкә тайпылыш",
        "filecopyerror": "«$2» файлына «$1» файлының күсермәһен яһап булмай.",
        "filerenameerror": "«$1» файлының исемен «$2» исеменә алмаштырып булмай.",
        "filedeleteerror": "«$1» файлын юйып булмай.",
        "badtitle": "Ярамаған исем",
        "badtitletext": "Биттең һоратылған исеме дөрөҫ түгел, буш йәки телдәр араһы йәки интервики исеме яңылыш күрһәтелгән. Исемдә тыйылған символдар булыуы ла мөмкин.",
        "title-invalid-empty": "Һоратылған бит башлығы буш йәки исемдәр арауығы була.",
+       "title-invalid-utf8": "Һеҙ эҙләгән биттә  UTF-8 дөрөҫ булмаған символдар теҙмәһе бар.",
        "perfcached": "Был мәғлүмәттәр кэштан алынған, уларҙа һуңғы үҙгәртеүҙәр булмаҫҡа мөмкин. Кэшта иң күбе {{PLURAL:$1|язма}} һаҡлана.",
        "perfcachedts": "Был мәғлүмәттәр кэштан алынған, ул һуңғы тапҡыр $1 яңыртылды.  Кэшта иң күбе  {{PLURAL:$4|язма}} һаҡлана",
        "querypage-no-updates": "Был битте яңыртыу хәҙер тыйылған.\nБында күрһәтелгән мәғлүмәттәр яңыртылмаясаҡ.",
index b4b85e3..5065d6b 100644 (file)
        "botpasswords-updated-body": "Пароль робата «$1» быў пасьпяхова абноўлены.",
        "botpasswords-deleted-title": "Пароль робата выдалены",
        "botpasswords-deleted-body": "Пароль робата «$1» быў выдалены.",
+       "botpasswords-newpassword": "Новы пароль для ўваходу пад <strong>$1</strong> — <strong>$2</strong>. <em>Калі ласка, запішыце яго для далейшага выкарыстаньня.</em>",
        "botpasswords-no-provider": "BotPasswordsSessionProvider недаступны.",
+       "botpasswords-restriction-failed": "Уваход ня выкананы праз абмежаваньні на пароль робата",
        "botpasswords-invalid-name": "Пададзенае імя ўдзельніка ня ўтрымлівае падзяляльнік для паролю робата («$1»).",
+       "botpasswords-not-exist": "Удзельнік «$1» ня мае паролю для робата з назвай «$2».",
        "resetpass_forbidden": "Пароль ня можа быць зьменены",
        "resetpass-no-info": "Для непасрэднага доступу да гэтай старонкі Вам неабходна ўвайсьці ў сыстэму.",
        "resetpass-submit-loggedin": "Зьмяніць пароль",
        "previewnote": "'''Гэта толькі папярэдні прагляд.'''\nВашыя зьмены яшчэ не былі захаваныя!",
        "continue-editing": "Перайсьці да рэдагаваньня",
        "previewconflict": "Гэта папярэдні прагляд тэксту зь верхняга вакна рэдагаваньня, так ён будзе выглядаць, калі Вы вырашыце яго захаваць.",
-       "session_fail_preview": "'''Не атрымалася захаваць Вашую праўку праз тое, што былі страчаныя зьвесткі пра сэсію.\nКалі ласка, паспрабуйце яшчэ раз. Калі памылка ня зьнікне, паспрабуйце [[Special:UserLogout|выйсьці з сыстэмы]] і ўвайсьці ізноў.'''",
-       "session_fail_preview_html": "'''Не атрымалася захаваць Вашую праўку праз тое, што былі страчаныя зьвесткі пра сэсію.'''\n\n''Таму што ў {{GRAMMAR:месны|{{SITENAME}}}} дазволена выкарыстоўваць чысты HTML, папярэдні прагляд быў адключаны для засьцярогі ад атакаў праз JavaScript.''\n\n'''Калі гэта сапраўдная спроба рэдагаваньня, калі ласка, паспрабуйце яшчэ раз. Калі гэта не дапамагае, паспрабуйце [[Special:UserLogout|выйсьці з сыстэмы]] і ўвайсьці ізноў.'''",
+       "session_fail_preview": "Выбачайце! Мы не змаглі апрацаваць вашую праўку праз страту зьвестак сэсіі.\n\nМагчыма, вы выйшлі з сыстэмы. <strong>Калі ласка, праверце, што вы знаходзіцеся ў сыстэме і паспрабуйце яшчэ раз<strong>. Калі не спрацуе, паспрабуйце [[Special:UserLogout|выйсьці]] і ўвайсьці яшчэ раз, а таксама праверце, што ваш браўзэр дазваляе файлы-кукі з гэтага сайту.",
+       "session_fail_preview_html": "Выбачайце! Мы не змаглі апрацаваць вашую праўку праз страту зьвестак сэсіі.\n\n<em>Таму што ў {{GRAMMAR:месны|{{SITENAME}}}} дазволена выкарыстоўваць чысты HTML, папярэдні прагляд быў адключаны для засьцярогі ад атакаў праз JavaScript.</em>\n\n<strong>Калі гэта сапраўдная спроба рэдагаваньня, калі ласка, паспрабуйце яшчэ раз.</strong>\nКалі гэта не дапамагае, паспрабуйце [[Special:UserLogout|выйсьці з сыстэмы]] і ўвайсьці ізноў, а таксама праверце, што ваш браўзер дазваляе кукі-файлы з гэтага сайту.",
        "token_suffix_mismatch": "'''Вашае рэдагаваньне было адхіленае, таму што Ваш кліент ня можа апрацоўваць знакі пунктуацыі ў акне рэдагаваньня.\nРэдагаваньне было скасаванае для таго, каб пазьбегнуць зьнішчэньня тэксту старонкі.\nТакія памылкі здараюцца, калі Вы выкарыстоўваеце ананімны проксі-сэрвэр, які ўтрымлівае памылкі.'''",
        "edit_form_incomplete": "'''Некаторыя часткі формы рэдагаваньня не дасягнулі сэрвэра. Упэўніцеся, што Вашыя рэдагаваньні не пашкоджаныя і паспрабуйце зноў.'''",
        "editing": "Рэдагаваньне: $1",
        "mergehistory-empty": "Няма гісторыі рэдагаваньняў, якую магчыма аб'яднаць.",
        "mergehistory-done": "$3 {{PLURAL:$3|вэрсія|вэрсіі|вэрсіяў}} з $1 пасьпяхова аб’яднаныя ў [[:$2]].",
        "mergehistory-fail": "Не атрымалася аб'яднаць гісторыі старонак. Калі ласка, праверце парамэтры старонкі і часу.",
+       "mergehistory-fail-bad-timestamp": "Няслушная метка часу.",
+       "mergehistory-fail-invalid-source": "Няслушная старонка-крыніца.",
+       "mergehistory-fail-invalid-dest": "Няслушная мэтавая старонка.",
        "mergehistory-fail-toobig": "Немагчыма аб’яднаць гісторыю, бо будзе перавышаны ліміт у $1 {{PLURAL:$1|1=вэрсію|вэрсіі|вэрсіяў}}, якія будуць перанесеныя.",
        "mergehistory-no-source": "Не існуе крынічнай старонкі $1.",
        "mergehistory-no-destination": "Не існуе мэтавай старонкі $1.",
        "upload-dialog-button-done": "Зроблена",
        "upload-dialog-button-save": "Захаваць",
        "upload-dialog-button-upload": "Загрузіць",
-       "upload-form-label-select-file": "Абраць файл",
        "upload-form-label-infoform-title": "Падрабязнасьці",
        "upload-form-label-infoform-name": "Назва",
        "upload-form-label-infoform-name-tooltip": "Унікальнае апісаньне файлу, якое будзе выкарыстоўвацца як яго назва. Вы можаце карыстацца звычайнай мовай з прабеламі. Не дадавайце пашырэньне файлу.",
        "foreign-structured-upload-form-label-own-work-message-shared": "Я пацьвярджаю, што зьяўляюся ўласьнікам аўтарскіх правоў на гэты файл, і згодны незваротна перадаць гэты файл ў Вікісховішча на ўмовах ліцэнзіі [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0], а таксама згодны з [https://wikimediafoundation.org/wiki/Terms_of_Use умовамі выкарыстаньня].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Калі вы не зьяўляецеся ўласьнікам аўтарскіх правоў на гэты файл, або вы жадаеце распаўсюджваць яго пад іншай ліцэнзіяй, можаце скарыстацца [https://commons.wikimedia.org/wiki/Special:UploadWizard Майстарам загрузкі ў Вікісховішча].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Вы таксама можаце скарыстацца [[Special:Upload|старонкай загрузкі {{GRAMMAR:родны|{{SITENAME}}}}]], калі правілы сайту дазваляюць загрузку такога файлу.",
-       "foreign-structured-upload-form-2-label-intro": "Дзякуем за ахвяраваньне выявы, якая будзе выкарыстаная ў {{GRAMMAR:месны|{{SITENAME}}}}. Вам варта працягваць, калі яна адпавядае наступным умовам:",
-       "foreign-structured-upload-form-2-label-ownwork": "Гэта мусіць быць цалкам <strong>вашая ўласная праца</strong>, а ня проста выява з Інтэрнэту",
-       "foreign-structured-upload-form-2-label-noderiv": "Яна <strong>не павінна ўтрымліваць чужой працы</strong> або быць натхнёнай ёю",
-       "foreign-structured-upload-form-2-label-useful": "Яна павінна быць <strong>адукацыйнай і карыснай</strong> для навучаньня іншых",
-       "foreign-structured-upload-form-2-label-ccbysa": "Вы мусіце быць <strong>згодныя апублікаваць яе ў Інтэрнэце назаўсёды</strong> паводле ліцэнзіі [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0]",
-       "foreign-structured-upload-form-2-label-alternative": "Калі ня ўсё з вышэйпералічанага праўда, вы ўсё яшчэ можаце загрузіць гэты файл з дапамогай [https://commons.wikimedia.org/wiki/Special:UploadWizard майстару загрузкі Вікісховішча], калі файл даступны паводле свабоднай ліцэнзіі.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Калі вы загружаеце файл, вы пацьвярджаеце, што валодаеце аўтарскімі правамі на яго, і згодныя незваротна перадаць гэты файл у Вікісховішча паводле ліцэнзіі Creative Commons Attribution-ShareAlike 4.0, а таксама, што вы згодныя з [https://wikimediafoundation.org/wiki/Terms_of_Use умовамі выкарыстаньня].",
-       "foreign-structured-upload-form-3-label-question-website": "Вы спампавалі гэтую выяву зь нейкага сайту або знайшлі яе праз пошук выяваў?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Вы стварылі гэтую выяву (зрабілі фота, накід малюнку і г. д.) самі?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Ці ўтрымлівае яна або яна натхнёная працай, якой валодае нехта іншы, як прыклад, лягатып?",
-       "foreign-structured-upload-form-3-label-yes": "Так",
-       "foreign-structured-upload-form-3-label-no": "Не",
-       "foreign-structured-upload-form-3-label-alternative": "На жаль, у гэтым выпадку інструмэнт не падтрымлівае загрузку такога файлу. Вы ўсё яшчэ можаце загрузіць яго з дапамогай [https://commons.wikimedia.org/wiki/Special:UploadWizard майстару загрузкі Вікісховішча], пры ўмове, што файл даступны паводле вольнай ліцэнзіі.",
-       "foreign-structured-upload-form-4-label-good": "З дапамогай гэтага інструмэнту вы можаце загрузіць адукацыйную графіку, створаную вамі, а таксама зробленыя вамі фотаздымкі, якія ня ўтрымліваюць працы, што належаць некаму іншаму.",
-       "foreign-structured-upload-form-4-label-bad": "Вы ня можаце загружаць выявы, знойдзеныя ў пошукавых сыстэмах або спампаваныя зь іншых сайтаў.",
        "backend-fail-stream": "Немагчыма накіраваць файл $1.",
        "backend-fail-backup": "Немагчыма зрабіць рэзэрвовую копію файла $1.",
        "backend-fail-notexists": "Файл $1 не існуе.",
        "file-info-size": "$1 × $2 {{PLURAL:$2|піксэль|піксэлі|піксэляў}}, памер файла: $3, тып MIME: $4",
        "file-info-size-pages": "$1 × $2 піксэлаў, памер файла: $3, MIME-тып: $4, $5 {{PLURAL:$5|старонка|старонкі|старонак}}",
        "file-nohires": "Няма вэрсіі зь лепшым разрозьненьнем.",
-       "svg-long-desc": "SVG-файл, намінальна $1 × $2 {{PLURAL:$2|піксэл|піксэлы|піксэлаў}}, памер файла: $3.",
+       "svg-long-desc": "SVG-файл, намінальна $1 × $2 {{PLURAL:$2|піксэл|піксэлы|піксэлаў}}, памер файла: $3",
        "svg-long-desc-animated": "Анімаваны SVG-файл, намінальна $1 × $2 {{PLURAL:$2|піксэл|піксэлы|піксэлаў}}, памер файла: $3",
        "svg-long-error": "Няслушны SVG-файл: $1",
        "show-big-image": "Арыгінальны файл",
index 2d06b1e..3ee9c90 100644 (file)
        "upload-dialog-button-done": "Готово",
        "upload-dialog-button-save": "Съхраняване",
        "upload-dialog-button-upload": "Качване",
-       "upload-form-label-select-file": "Избиране на файл",
        "upload-form-label-infoform-title": "Подробности",
        "upload-form-label-infoform-name": "Име",
        "upload-form-label-infoform-name-tooltip": "Уникално описателно заглавие на файла, което ще бъде записано като име на файла. Можете да използвате обикновен текст с разстояние. Не включвайте файловото разширение.",
        "foreign-structured-upload-form-label-infoform-date": "Дата",
        "foreign-structured-upload-form-label-own-work-message-local": "Потвърждавам, че качвам този файл в съответствие с правилата и лицензионната политика на сайта {{SITENAME}}.",
        "foreign-structured-upload-form-label-not-own-work-message-local": "Ако не можете да заредите този файл в съответствие с правилата на сайта {{SITENAME}}, моля, затворете този прозорец и опитайте друг метод.",
-       "foreign-structured-upload-form-3-label-yes": "Да",
-       "foreign-structured-upload-form-3-label-no": "Не",
        "backend-fail-notexists": "Файлът $1 не съществува.",
        "backend-fail-delete": "Файлът $1 не може да бъде изтрит.",
        "backend-fail-alreadyexists": "Файлът $1 вече съществува.",
index 252074a..f1083c6 100644 (file)
        "passwordreset-emailtext-user": "ব্যবহারকারী $1 {{SITENAME}} ($4) সাইটের জন্য আপনার পাসওয়ার্ড বদলের জন্য অনুরোধ করেছে। নিচের ব্যবহারকারী {{PLURAL:$3|অ্যাকাউন্টটি|অ্যাকাউন্টগুলো}}\nএই ই-মেইল ঠিকানার সাথে সংযুক্ত:\n\n$2\n\n{{PLURAL:$3|এই অস্থায়ী পাসওয়ার্ডটি|এই অস্থায়ী পাসওয়ার্ডগুলো}} আগামী {{PLURAL:$5|এক দিন|$5 দিন}} পর মেয়াদোত্তীর্ণ হয়ে যাবে।\nআপনার অবশ্যই লগ-ইন করে একটি নতুন পাসওয়ার্ড পছন্দ করা উচিত। যদি অন্য কেউ এই অনুরোধ করে থাকে,\nঅথবা আপনি যদি পুরোনো পাসওয়ার্ড মনে করতে পারেন, এবং আপনার সেটি পরিবর্তন করার কোনো ইচ্ছা না থাকে, তবে\nআপনি এই বার্তাটি উপেক্ষা করতে পারে, এবং আপনার পুরোনো পাসওয়ার্ড ব্যবহার করা চালিয়ে যেতে পারেন।",
        "passwordreset-emailelement": "ব্যবহারকারী নাম: \n$1\n\nঅস্থায়ী পাসওয়ার্ড: \n$2",
        "passwordreset-emailsentemail": "যদি এই ই-মেইল ঠিকানা আপনার অ্যাকাউন্টের সাথে সংযুক্ত করা থাকে, তাহলে একটি পাসওয়ার্ড বদলের ইমেইল পাঠানো হবে।",
+       "passwordreset-emailsentusername": "যদি এই ব্যবহারকারী নামের সাথে ই-মেইল ঠিকানা সংযুক্ত করা থাকে, তাহলে একটি পাসওয়ার্ড বদলের ইমেইল পাঠানো হবে।",
        "passwordreset-emailsent-capture": "স্মরণ করিয়ে দেয়ার জন্য একটি ইমেইল করা হয়েছে, যা নিচে দেখানো হচ্ছে।",
        "passwordreset-emailerror-capture": "স্মরণ করিয়ে দেয়ার জন্য একটি ইমেইল তৈরী করা হয়েছিল, যা নিচে দেখানো হচ্ছে, তবে $1 {{GENDER:$2|ব্যবহারকারীকে}} এটি পাঠানো যায়নি!",
        "changeemail": "ই-মেইল ঠিকানা পরিবর্তন বা বাতিল",
        "mergehistory-empty": "কোন সংশোধন একত্র করা যাবে না.",
        "mergehistory-done": "$1-এর $3{{PLURAL:$3|টি সংশোধন}} [[:$2]]-এর সাথে একত্রিত করা হয়েছে।",
        "mergehistory-fail": "ইতিহাস একত্র করা গেল না। অনুগ্রহ করে পাতাটি ও সময়ের প্যারামিটারগুলি আবার পরীক্ষা করে দেখুন।",
+       "mergehistory-fail-bad-timestamp": "সময়তারিখ অবৈধ।",
+       "mergehistory-fail-invalid-source": "উত্স পাতা অবৈধ।",
+       "mergehistory-fail-invalid-dest": "গন্তব্য পাতা অবৈধ।",
        "mergehistory-fail-toobig": "ইতিহাস থেকে আগের পাতাগুলো একীকরণ সম্ভব নয়, কারণ এর ফলে সর্বোচ্চ $1 টি {{PLURAL:$1|সংস্করণ}} স্থানান্তরের সীমানা অতিক্রম করবে।",
        "mergehistory-no-source": "$1 বলে কোন উৎস পাতার অস্তিত্ব নেই।",
        "mergehistory-no-destination": "$1 বলে কোন গন্তব্য পাতার অস্তিত্ব নেই।",
        "upload-dialog-button-done": "সম্পন্ন",
        "upload-dialog-button-save": "সংরক্ষণ",
        "upload-dialog-button-upload": "আপলোড",
-       "upload-form-label-select-file": "ফাইল নির্বাচন করুন",
        "upload-form-label-infoform-title": "বিস্তারিত",
        "upload-form-label-infoform-name": "নাম",
        "upload-form-label-infoform-description": "বিবরণ",
        "foreign-structured-upload-form-label-own-work-message-shared": "আমি প্রত্যয়ন করছি যে আমি এই ফাইলের স্বত্তাধিকারী, এবং [https://creativecommons.org/licenses/by-sa/4.0/deed.bn ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন-শেয়ার অ্যালাইক ৪.০] লাইসেন্সের অধীনে এই ফাইলটি উইকিমিডিয়া কমন্সে অপরিবর্তনীয় প্রকাশে সম্মত হচ্ছি, এবং আমি [https://wikimediafoundation.org/wiki/Terms_of_Use ব্যবহারের শর্তাবলীর] সাথে সম্মত।",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "যদি আপনি এই ফাইলের স্বত্তাধিকারী না হন, বা আপনি একটি ভিন্ন লাইসেন্সের আওতায় প্রকাশ করতে ইচ্ছুক থাকেন, তাহলে [https://commons.wikimedia.org/wiki/Special:UploadWizard?uselang=bn কমন্স আপলোড উইজার্ড] ব্যবহার করতে বিবেচনা করুন।",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "এছাড়াও আপনি [[Special:Upload|{{SITENAME}}-এর আপলোডের পাতা]] ব্যবহার করার চেষ্টা করতে পারেন, যদি সাইটটি তাদের নীতিমালার অধীনে এই ফাইল আপলোড করার অনুমতি দেয়।",
-       "foreign-structured-upload-form-2-label-ccbysa": "[https://creativecommons.org/licenses/by-sa/4.0/deed.bn ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন-শেয়ার অ্যালাইক ৪.০] লাইসেন্সের আওতায় এটি ইন্টারনেটে <strong>চিরতরে প্রকাশ করা ঠিক হবে</strong>",
-       "foreign-structured-upload-form-2-label-termsofuse": "ফাইল আপলোড করার দ্বারা, আপনি প্রত্যয়ন করছেন যে আপনি এই ফাইলের স্বত্তাধিকারী, এবং ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন-শেয়ারআলাইক ৪.০ লাইসেন্সের অধীনে এই ফাইলটি উইকিমিডিয়া কমন্সে অপরিবর্তনীয় প্রকাশে সম্মত হচ্ছেন, এবং আপনি [https://wikimediafoundation.org/wiki/Terms_of_Use ব্যবহারের শর্তাবলীর] সাথে সম্মত।",
-       "foreign-structured-upload-form-3-label-question-website": "আপনি কি একটি ওয়েবসাইট থেকে এই ছবি ডাউনলোড করেছেন, বা একটি চিত্র অনুসন্ধান থেকে এটি পেয়েছেন?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "আপনি কি নিজে এই ছবিটি (তোলা ছবি, অঙ্কন, স্কেচ, ইত্যাদি) তৈরি করেছেন?",
-       "foreign-structured-upload-form-3-label-yes": "হ্যাঁ",
-       "foreign-structured-upload-form-3-label-no": "না",
        "backend-fail-stream": "\"$1\" ফাইলের স্ট্রিম দেখানো যাচ্ছে না।",
        "backend-fail-backup": "\"$1\" ফাইলের ব্যাকআপ তৈরী সম্ভব নয়।",
        "backend-fail-notexists": "\"$1\" নামের কোনো ফাইল নেই।",
        "apihelp-no-such-module": "মডিউল \"$1\" পাওয়া যায়নি।",
        "apisandbox": "এপিআই খেলাঘর",
        "apisandbox-api-disabled": "এপিআই এই সাইটে নিষ্ক্রিয় করা আছে।",
+       "apisandbox-fullscreen": "প্যানেল সম্প্রসারণ করুন",
+       "apisandbox-unfullscreen": "পাতা দেখাও",
        "apisandbox-submit": "অনুরোধ রাখুন",
        "apisandbox-reset": "পরিস্কার",
        "apisandbox-retry": "পুনঃচেষ্টা করুন",
        "apisandbox-examples": "উদাহরণ",
+       "apisandbox-dynamic-parameters-add-label": "প্যারামিটার যোগ করুন:",
+       "apisandbox-dynamic-parameters-add-placeholder": "প্যারামিটারের নাম",
        "apisandbox-results": "ফলাফল",
+       "apisandbox-request-url-label": "অনুরোধের URL:",
        "apisandbox-request-time": "অনুরোধের সময়: {{PLURAL:$1|$1 মি.সে.}}",
        "booksources": "বইয়ের উৎস",
        "booksources-search-legend": "বইয়ের উৎসের জন্য অনুসন্ধান করা হোক",
index 9862680..40204f2 100644 (file)
        "changepassword-success": "S'ha canviat la vostra contrasenya amb èxit!",
        "changepassword-throttled": "Heu realitzat massa intents d'inici de sessió.\nEspereu $1 abans de tornar-ho a provar.",
        "botpasswords": "Contrasenyes de bot",
+       "botpasswords-disabled": "S'han inhabilitat les contrasenyes dels bots",
+       "botpasswords-no-central-id": "Per a utilitzar contrasenyes de bots heu d'haver iniciat una sessió en un compte centralitzat.",
        "botpasswords-label-appid": "Nom del bot:",
        "botpasswords-label-create": "Crea",
        "botpasswords-label-update": "Actualitza",
        "upload-dialog-button-done": "Fet",
        "upload-dialog-button-save": "Desa",
        "upload-dialog-button-upload": "Carrega",
-       "upload-form-label-select-file": "Seleccioneu fitxer",
        "upload-form-label-infoform-title": "Detalls",
        "upload-form-label-infoform-name": "Nom",
        "upload-form-label-infoform-description": "Descripció",
        "foreign-structured-upload-form-label-infoform-date": "Data",
        "foreign-structured-upload-form-label-not-own-work-local-local": "També podeu provar [[Special:Upload|la pàgina de càrrega per defecte]].",
        "foreign-structured-upload-form-label-own-work-message-default": "Entenc que esteu carregant el fitxer en un repositori compartit. Confirmo que ho estic fent seguint les condicions d'ús i les polítiques de llicenciament que s'hi apliquen.",
-       "foreign-structured-upload-form-3-label-yes": "Sí",
-       "foreign-structured-upload-form-3-label-no": "No",
        "backend-fail-stream": "No s'ha pogut transmetre el fitxer $1.",
        "backend-fail-backup": "No s'ha pogut fer una còpia de seguretat del fitxer $1.",
        "backend-fail-notexists": "El fitxer $1 no existeix.",
        "mediastatistics-header-text": "Textual",
        "mediastatistics-header-executable": "Executables",
        "mediastatistics-header-archive": "Formats comprimits",
+       "mediastatistics-header-total": "Tots els fitxers",
        "json-warn-trailing-comma": "$1 al final {{PLURAL:$1|coma ha estat eliminada|comes han estat eliminades}} de JSON",
        "json-error-unknown": "S'ha produït un error amb el JSON. Error: $1",
        "json-error-depth": "S'ha superat la profunditat màxima de pila",
        "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
        "mw-widgets-titleinput-description-new-page": "la pàgina no existeix encara",
        "mw-widgets-titleinput-description-redirect": "redirigeix a $1",
-       "api-error-blacklisted": "Trieu un títol diferent, més descriptiu."
+       "api-error-blacklisted": "Trieu un títol diferent, més descriptiu.",
+       "sessionprovider-generic": "$1 sessions",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "sessions basades en galetes",
+       "sessionprovider-nocookies": "Pot ser que les galetes estiguin inhabilitades. Assegureu-vos que teniu les galetes habilitades i inicieu de nou."
 }
index c03e20b..29af2c2 100644 (file)
        "copyrightpage": "{{ns:project}}:Авторан бакъонаш",
        "currentevents": "ХӀинцалера хилларш",
        "currentevents-url": "Project:ХӀинцалера хилларш",
-       "disclaimers": "Ð\91еÑ\85к тӀецалацар",
-       "disclaimerpage": "Project:Ð\91еÑ\85к тӀецалацар",
+       "disclaimers": "Ð\96оÑ\8cпалла тӀецалацар",
+       "disclaimerpage": "Project:Ð\96оÑ\8cпалла тӀецалацар",
        "edithelp": "ГӀо оцу тадарна",
        "helppage-top-gethelp": "ГӀо",
        "mainpage": "Коьрта агӀо",
        "rcshowhidemine": "$1 айхьа нисдинарш",
        "rcshowhidemine-show": "Гайта",
        "rcshowhidemine-hide": "Къайладаха",
-       "rcshowhidecategorization": "$1 Ð°Ð³Ó\80онийн ÐºÐ°Ñ\82егоÑ\80еÑ\88",
+       "rcshowhidecategorization": "$1 ÐºÐ°Ñ\82егоÑ\80еÑ\88 Ñ\82Ó\80еÑ\82оÑ\85аÑ\80",
        "rcshowhidecategorization-show": "Гайта",
        "rcshowhidecategorization-hide": "Къайлаяккха",
        "rclinks": "Гайта тӀаьххьарлерачу $2 дийнахь бина болу $1 хийцамаш\n<br />$3",
        "watchthisupload": "Латайе хӀара файл тергаме могӀам юкъахь",
        "filewasdeleted": "Иштта цӀе йолуш файл хьалха чуяьккхина хила, амма дӀаяьккхина. Дехар до, юху чуяккхале $1 хьажа.",
        "filename-bad-prefix": "Чуйоккхучу файлан цӀе йолалуш ю «'''$1'''» и сурт доккхучу хӀумнан кепан цӀе хилла мега. Дехар до, хьаржа файлан йогӀуш йолу цӀе.",
-       "filename-prefix-blacklist": "#<!-- битийша хlара могlа ша мабарра --> <pre>\n# Бухасиз шолгlа:\n#  * Массо, саболчунтlийра йуьлалуш ерш «#» хуьлу хетаме дерг (могlа чекх балац)\n#  * Хlора баьсса боцу могlа — хlман цlе лораш йу, терахьца сурт доккхучо луш ма хиллар\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # ишта цхьаболу лера гlирс а\nIMG # еригге\nJD # Jenoptik\nMGP # Pentax\nPICT # тайп тайпан\n #</pre> <!-- битийша хlара могlа ша мабарра -->",
+       "filename-prefix-blacklist": "#<!-- битийша хӀара могӀа ша мабарра --> <pre>\n# Бухасиз шолгӀа:\n#  * Массо, саболчунтӀийра йуьлалуш ерш «#» хуьлу хетаме дерг (могӀа чекх балац)\n#  * ХӀора баьсса боцу могӀа — хьан цӀе лораш ю, терахьца сурт доккхучо луш ма хиллар\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # ишта цхьаболу лера гӀирс а\nIMG # ерриге\nJD # Jenoptik\nMGP # Pentax\nPICT # тайп тайпан\n #</pre> <!-- битийша хӀара могӀа ша мабарра -->",
        "upload-proto-error": "Нийса йоцу протокол",
        "upload-file-error": "Чоьхьара гӀалат",
        "upload-misc-error": "Чуяккхаран цадевза гӀалат",
        "upload-dialog-button-done": "Кийчча ю",
        "upload-dialog-button-save": "Ӏалашъян",
        "upload-dialog-button-upload": "Чуяккха",
-       "upload-form-label-select-file": "Харжа файл",
        "upload-form-label-infoform-title": "Мадарра",
        "upload-form-label-infoform-name": "ЦӀе",
        "upload-form-label-infoform-description": "Цуьнах лаьцна",
        "foreign-structured-upload-form-label-own-work-message-shared": "Аса со хӀокху файлан авторан бакъонаш долахь ерг хилар бакъдо, цундела хӀара файл [https://creativecommons.org/licenses/by-sa/4.0/deed.ru Creative Commons Attribution-ShareAlike 4.0] лицензица Викигуламан чуяккха бакъо ю, цул совнах [https://wikimediafoundation.org/wiki/ хӀокху хьолаца лело] а мега.",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "ХӀокху файлан авторан бакъонаш хьай яцахь, я хьайна кхечу лицензица яржо лууш делахь хьажа [https://commons.wikimedia.org/wiki/Special:UploadWizard Викигуламера чуяхаран говзанча] лелон тароне.",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "ХӀара файл {{SITENAME}} сайтан бакъонашца чуйоккхила делахь, хьайн таро ю [[Special:Upload|хӀара агӀо]] лелаян.",
-       "foreign-structured-upload-form-3-label-yes": "ХӀаъ",
-       "foreign-structured-upload-form-3-label-no": "ХӀахӀа",
        "backend-fail-stream": "ДӀаяккха цатарло файл «$1».",
        "backend-fail-backup": "Таро яц файлан $1 тӀаьхьалонан копиян.",
        "backend-fail-notexists": "Файл $1 яц.",
        "wlshowhideanons": "ЦӀе хьулйина декъашхой",
        "wlshowhidepatr": "хьажжина нисдарш",
        "wlshowhidemine": "Сан нисдарш",
+       "wlshowhidecategorization": "категореш тӀетохар",
        "watchlist-options": "Тергаме могlаман гlирс нисбар",
        "watching": "Тергаме мlогаман юкъаяккха…",
        "unwatching": "Тергаме могӀанан чура дӀаяккхар…",
        "protect-fallback": "Бакъо оьшу «$1»",
        "protect-level-autoconfirmed": "Магийна авто-тӀелаьцна болу декъашхошна",
        "protect-level-sysop": "Магийна куьйгалхошна",
-       "protect-summary-cascade": "чахчареца",
+       "protect-summary-cascade": "каскадан",
        "protect-expiring": "чакхйолу $1 (UTC)",
        "protect-expiring-local": "чекхйолу $1",
        "protect-expiry-indefinite": "хан чаккхе йоцуш",
        "exif-licenseurl": "Авторийн лицензин URL",
        "exif-morepermissionsurl": "Альтернативан лицензин хаам",
        "exif-pngfilecomment": "PNG-файлан билгалдаккхар",
-       "exif-disclaimer": "Ð\91еÑ\85к тӀецалацар",
+       "exif-disclaimer": "Ð\96оÑ\8cпалла тӀецалацар",
        "exif-contentwarning": "Чулацамах лаьцна дӀахьедар",
        "exif-giffilecomment": "GIF-файлан билгалдаккхар",
        "exif-intellectualgenre": "ХӀуман тайп",
        "logentry-newusers-create2": "$1 {{GENDER:$2|кхоьллина}} декъашхочун дӀаяздапр $3",
        "logentry-newusers-byemail": "$1 {{GENDER:$2|кхоьллина}} декъашхочун дӀаяздар $3 пароль электронан поште яхьийтина",
        "logentry-newusers-autocreate": "Автоматически кхоьллина {{GENDER:$2|декъашхочун}} $1 дӀаяздар",
+       "logentry-protect-modify": "$1 {{GENDER:$2|хийцина}} ларяран барам $3 $4",
+       "logentry-protect-modify-cascade": "$1 {{GENDER:$2|хийцина}} ларяран барам $3 $4 [каскадан]",
        "logentry-rights-rights": "$1 {{GENDER:$2|хийцина}} $3 бакъо $4 → $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|хийцина}} хӏокхуна $3 бакъо",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|вара|яра}} автоматически {{GENDER:$2|сихьа ваьлла|сихьа яьлла}} $4 $5 чу",
index 7d4dd42..70fbb4b 100644 (file)
@@ -84,7 +84,7 @@
        "category-empty": "''сѥи катигорїи нꙑнѣ страницѧ и дѣлъ нѣстъ''",
        "hidden-categories": "{{PLURAL:$1|съкрꙑта катигорїꙗ|съкрꙑти катигорїи|съкрꙑтꙑ катигорїѩ}}",
        "hidden-category-category": "съкрꙑтꙑ катигорїѩ",
-       "category-subcat-count": "{{PLURAL:$2|Сѥи катигорїи тъкъмо сꙗ подъкатигорїꙗ ѥстъ|Сѥи катигорїи {{PLURAL:$1|ѥдина подъкатигорїꙗ ѥстъ|2 подъкатигорїи ѥстє|$1 подъкатигорїѩ сѫтъ}} · а вьсѩ жє подъкатигорїѩ число $2 ѥстъ}}",
+       "category-subcat-count": "{{PLURAL:$2|1=Сѥи катигорїи тъкъмо сꙗ подъкатигорїꙗ ѥстъ|Сѥи катигорїи {{PLURAL:$1|1=ѥдина подъкатигорїꙗ ѥстъ|2 подъкатигорїи ѥстє|$1 подъкатигорїѩ сѫтъ}} · а вьсѩ жє подъкатигорїѩ число $2 ѥстъ}}",
        "listingcontinuesabbrev": "· вѧщє",
        "about": "опьсаниѥ",
        "article": "члѣнъ",
        "wantedtemplates": "ноуждьни обраꙁьци",
        "shortpages": "кратъкꙑ страницѧ",
        "longpages": "дльгꙑ страницѧ",
+       "protectedpages": "ꙁабранѥнꙑ страницѧ",
        "protectedpages-reason": "какъ съмꙑслъ",
+       "protectedtitles": "ꙁабранѥнꙑ имєна",
        "listusers": "польꙃєватєлъ каталогъ",
        "usereditcount": "$1 {{PLURAL:$1|мѣна|мѣнꙑ|мѣнъ}}",
        "usercreated": "{{GENDER:$3|сътворилъ|сътворила}} мѣсто $1 въ $2",
        "fileduplicatesearch-submit": "ищи",
        "specialpages": "нарочьнꙑ страницѧ",
        "specialpages-group-other": "инꙑ нарочьнꙑ страницѧ",
+       "specialpages-group-login": "въниждєниѥ и сътворѥниѥ мѣстъ",
        "tag-filter": "[[Special:Tags|мѣтъць]] сито :",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|мѣтъка|мѣтъцѣ|мѣтъци}}]]: $2)",
        "tags-active-yes": "да",
index 4b698e3..1f669ee 100644 (file)
        "changepassword-success": "Dein Passwort wurde erfolgreich geändert!",
        "changepassword-throttled": "Du hast kürzlich zu viele Anmeldeversuche unternommen.\nBitte warte $1, bevor du es erneut versuchst.",
        "botpasswords": "Botpasswörter",
-       "botpasswords-summary": "<em>Botpasswörter</em> erlauben Zugriff auf ein Benutzerkonto über die API, ohne die Hauptanmeldeinformationen des Benutzerkontos zu verwenden. Die verfügbaren Benutzerrechte bei der Anmeldung mit einem Botpasswort können beschränkt sein.\n\nWenn du nicht weist, warum du dies tun möchtest, solltest du dies wahrscheinlich nicht tun. Niemand soll dich jemals bitten, ein Passwort zu erzeugen und es an ihn zu übergeben.",
+       "botpasswords-summary": "<em>Botpasswörter</em> erlauben Zugriff auf ein Benutzerkonto über die API, ohne die Hauptanmeldeinformationen des Benutzerkontos zu verwenden. Die verfügbaren Benutzerrechte bei der Anmeldung mit einem Botpasswort können beschränkt sein.\n\nWenn du nicht weist, warum du ein Passwort erstellen sollst, tu es nicht. Du solltest ein Passwort nicht für einen anderen erzeugen und es an ihn übergeben.",
        "botpasswords-disabled": "Botpasswörter sind deaktiviert.",
        "botpasswords-no-central-id": "Um Botpasswörter zu verwenden, musst du bei einem zentralisierten Benutzerkonto angemeldet sein.",
        "botpasswords-existing": "Vorhandene Botpasswörter",
        "upload-dialog-button-done": "Schließen",
        "upload-dialog-button-save": "Speichern",
        "upload-dialog-button-upload": "Hochladen",
-       "upload-form-label-select-file": "Datei auswählen",
        "upload-form-label-infoform-title": "Einzelheiten",
        "upload-form-label-infoform-name": "Name",
        "upload-form-label-infoform-name-tooltip": "Ein eindeutiger erklärender Titel für die Datei, die als Dateiname angeboten wird. Du musst reine Sprache mit Leerzeichen verwenden. Nicht die Dateierweiterung einschließen.",
        "foreign-structured-upload-form-label-own-work-message-shared": "Ich bestätige, dass ich das Urheberrecht für diese Datei besitze und stimme unwiderruflich der Veröffentlichung dieser Datei auf Wikimedia Commons unter der Lizenz [https://creativecommons.org/licenses/by-sa/4.0/deed.de „Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International“] sowie den [https://wikimediafoundation.org/wiki/Terms_of_Use/de Nutzungsbedingungen] zu.",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Falls du nicht das Urheberrecht für diese Datei besitzt oder du diese Datei unter einer anderen Lizenz veröffentlichen möchtest, ziehe [https://commons.wikimedia.org/wiki/Special:UploadWizard den Hochladeassistenten auf Wikimedia Commons] in Erwägung.",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Du kannst auch [[Special:Upload|die Hochladeseite auf {{SITENAME}}]] ausprobieren, falls die Website das Hochladen dieser Datei unter ihren Richtlinien erlaubt.",
-       "foreign-structured-upload-form-2-label-intro": "Vielen Dank für das Spenden eines Bildes zur Verwendung auf {{SITENAME}}. Du solltest nur fortfahren, wenn es mehrere Bedingungen erfüllt:",
-       "foreign-structured-upload-form-2-label-ownwork": "Es muss vollständig <strong>deine eigene Schöpfung</strong> sein, nicht nur aus dem Internet genommen",
-       "foreign-structured-upload-form-2-label-noderiv": "Es darf <strong>kein Werk eines anderen</strong> enthalten oder von diesem inspiriert sein",
-       "foreign-structured-upload-form-2-label-useful": "Es soll <strong>lehrreich und nützlich</strong> für andere sein",
-       "foreign-structured-upload-form-2-label-ccbysa": "Es muss <strong>in Ordnung sein, um es für immer</strong> im Internet unter der Lizenz [https://creativecommons.org/licenses/by-sa/4.0/deed.de „Creative Commons – Namensnennung – Weitergabe unter gleichen Bedingungen 4.0“] zu veröffentlichen",
-       "foreign-structured-upload-form-2-label-alternative": "Falls nicht alle der obigen Antworten wahr sind, kannst du diese Datei mithilfe des [https://commons.wikimedia.org/wiki/Special:UploadWizard Hochladeassistenten auf Commons] hochladen, solange sie unter einer freien Lizenz verfügbar ist.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Durch das Hochladen der Datei bestätigst du, dass du das Urheberrecht an dieser Datei besitzt und stimmst der unwiderruflichen Veröffentlichung der Datei auf Wikimedia Commons unter der Lizenz „Creative Commons – Namensnennung – Weitergabe unter gleichen Bedingungen 4.0“ und den [https://wikimediafoundation.org/wiki/Terms_of_Use/de Nutzungsbedingungen] zu.",
-       "foreign-structured-upload-form-3-label-question-website": "Hast du dieses Bild von einer Website heruntergeladen oder es auf einer Bildersuche gefunden?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Hast du dieses Bild (das Foto, die Zeichnung etc.) selbst erstellt?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Enthält es oder wurde es inspiriert von einem Werk eines anderen, wie ein Logo?",
-       "foreign-structured-upload-form-3-label-yes": "Ja",
-       "foreign-structured-upload-form-3-label-no": "Nein",
-       "foreign-structured-upload-form-3-label-alternative": "Leider unterstützt dieses Werkzeug in diesem Fall nicht das Hochladen dieser Datei. Du kannst sie mithilfe des [https://commons.wikimedia.org/wiki/Special:UploadWizard Hochladeassistenten auf Commons] hochladen, solange sie unter einer freien Lizenz verfügbar ist.",
-       "foreign-structured-upload-form-4-label-good": "Mit diesem Werkzeug kannst du lehrreiche Grafiken hochladen, die du erstellt hast und Fotos, die du aufgenommen hast, die keine Werke von anderen enthalten.",
-       "foreign-structured-upload-form-4-label-bad": "Du kannst keine Bilder hochladen, die du auf einer Suchmaschine gefunden oder von anderen Websites heruntergeladen hast",
        "backend-fail-stream": "Die Datei $1 konnte nicht übertragen werden.",
        "backend-fail-backup": "Die Datei $1 konnte nicht gesichert werden.",
        "backend-fail-notexists": "Die Datei $1 ist nicht vorhanden.",
index 34bf9aa..5c75776 100644 (file)
        "upload-dialog-button-done": "Ολοκληρώθηκε",
        "upload-dialog-button-save": "Αποθήκευση",
        "upload-dialog-button-upload": "Ανέβασμα",
-       "upload-form-label-select-file": "Επιλογή αρχείου",
        "upload-form-label-infoform-title": "Λεπτομέρειες",
        "upload-form-label-infoform-name": "Όνομα",
        "upload-form-label-infoform-description": "Περιγραφή",
        "foreign-structured-upload-form-label-own-work-message-shared": "Δηλώνω ότι κατέχω τα πνευματικά δικαιώματα για αυτό το αρχείο, και συμφωνώ αμετάκλητα στην απελευθέρωση  αυτού του  αρχείου στο Wikimedia Commons με άδεια  [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0], και συμφωνώ με την [https://wikimediafoundation.org/wiki/Terms_of_Use Όρους Χρήσης].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Αν δεν κατέχει τα πνευματικά δικαιώματα για αυτό το αρχείο, ή επιθυμείτε να το δημοσιεύσετε υπό μια διαφορετική άδεια χρήσης, μπορείτε να χρησιμοποιήσετε τον [https://commons.wikimedia.org/wiki/Special:UploadWizard Οδηγό Ανεβάσματος των Wikimedia Commons].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Επίσης, μπορεί να θέλετε να δοκιμάσετε να χρησιμοποιήσετε  το [[Special:Upload|τη σελίδα ανεβάσματος για το {{SITENAME}}]], αν αυτό το αρχείο μπορεί να φορτωθεί σύμφωνα με  τις πολιτικές τους.",
-       "foreign-structured-upload-form-2-label-intro": "Σας ευχαριστούμε για τη δωρεά μιας εικόνας που θα χρησιμοποιηθεί στο {{SITENAME}}. Θα πρέπει να συνεχίσετε  μόνο εφόσον πληροί μια σειρά  προϋποθέσεων:",
-       "foreign-structured-upload-form-2-label-ownwork": "Πρέπει να είναι εξ ολοκλήρου <strong>δική σας δημιουργία</strong>, όχι απλά παρμένο από το Internet",
-       "foreign-structured-upload-form-2-label-noderiv": "Δεν πρέπει να  περιέχει <strong>κανένα έργο από οποιονδήποτε άλλον</strong>, ή με έμπνευση από αλλού",
-       "foreign-structured-upload-form-2-label-useful": "Θα πρέπει να είναι <strong>εκπαιδευτικό και χρήσιμο</strong> για διδασκαλία άλλων",
-       "foreign-structured-upload-form-2-label-ccbysa": "Πρέπει να είναι <strong>ΕΝΤΑΞΕΙ για δημοσίευση για πάντα</strong> στο Διαδίκτυο υπό τους όρους της [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0] άδειας",
-       "foreign-structured-upload-form-2-label-alternative": "Εάν όλα τα παραπάνω δεν είναι αλήθεια, μπορείτε ακόμα να είστε σε θέση να ανεβάσετε αυτό το αρχείο χρησιμοποιώντας τον [https://commons.wikimedia.org/wiki/Special:UploadWizard Οδηγό Ανεβάσματος] στα Wikimedia Commons, αρκεί να είναι διαθέσιμο υπό μια ελεύθερη άδεια χρήσης.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Με το ανέβασμα του αρχείου, επιβεβαιώνετε ότι έχετε τα πνευματικά δικαιώματα για αυτό το αρχείο, και συμφωνείτε αμετάκλητα για την δημοσίευση αυτού του αρχείου στα Wikimedia Commons υπό την άδεια Creative Commons Attribution-ShareAlike 4.0, και συμφωνείτε με τους [https://wikimediafoundation.org/wiki/Terms_of_Use Όρους Χρήσης].",
-       "foreign-structured-upload-form-3-label-question-website": "Μήπως κατεβάσατε αυτή την εικόνα από μια ιστοσελίδα, ή την πήραμε μετά από αναζήτηση εικόνων;",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Δημιουργήσατε αυτή την εικόνα (τραβήξατε φωτογραφία, κάνατε ένα σκίτσο κ.τ.λ.) μόνος σας;",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Περιέχει, ή είναι εμπνευσμένο από έργο που ανήκει σε κάποιον άλλο, όπως ένα λογότυπο;",
-       "foreign-structured-upload-form-3-label-yes": "Ναι",
-       "foreign-structured-upload-form-3-label-no": "Όχι",
-       "foreign-structured-upload-form-3-label-alternative": "Δυστυχώς, σε αυτή την περίπτωση, αυτό το εργαλείο δεν υποστηρίζει το ανέβασμα αυτού του αρχείου. Μπορείτε ακόμα να είστε  σε θέση να το ανεβάσετε χρησιμοποιώντας τον [https://commons.wikimedia.org/wiki/Special:UploadWizard Οδηγός Ανεβάσματος] στα Wikimedia Commons, αρκεί να είναι διαθέσιμο υπό μια ελεύθερη άδεια χρήσης.",
-       "foreign-structured-upload-form-4-label-good": "Χρησιμοποιώντας αυτό το εργαλείο, μπορείτε να ανεβάσετε εκπαιδευτικά διαγράμματα που έχετε δημιουργήσει και φωτογραφίες, που δεν περιέχουν έργο που ανήκει σε κάποιον άλλο.",
-       "foreign-structured-upload-form-4-label-bad": "Δεν μπορείτε να ανεβάσετε εικόνες που βρέθηκαν σε μια μηχανή αναζήτησης ή που έχετε κατεβάσει από άλλες ιστοσελίδες.",
        "backend-fail-stream": "Αδύνατη η μετάδοση του αρχείου $1.",
        "backend-fail-backup": "Αδύνατη η δημιουργία αντίγραφου ασφαλείας του αρχείου $1.",
        "backend-fail-notexists": "Το αρχείο $1 δεν υπάρχει.",
index f220040..5e9b186 100644 (file)
        "upload-dialog-button-done": "Done",
        "upload-dialog-button-save": "Save",
        "upload-dialog-button-upload": "Upload",
-       "upload-form-label-select-file": "Select file",
        "upload-form-label-infoform-title": "Details",
        "upload-form-label-infoform-name": "Name",
        "upload-form-label-infoform-name-tooltip": "A unique descriptive title for the file, which will serve as a filename. You may use plain language with spaces. Do not include the file extension.",
        "foreign-structured-upload-form-label-own-work-message-shared": "I attest that I own the copyright on this file, and agree to irrevocably release this file to Wikimedia Commons under the [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0] license, and I agree to the [https://wikimediafoundation.org/wiki/Terms_of_Use Terms of Use].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "If you do not own the copyright on this file, or you wish to release it under a different license, consider using the [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Upload Wizard].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "You may also want to try using [[Special:Upload|the upload page on {{SITENAME}}]], if the site allows the upload of this file under their policies.",
-       "foreign-structured-upload-form-2-label-intro": "Thank you for donating an image to be used on {{SITENAME}}. You should only continue if it meets several conditions:",
-       "foreign-structured-upload-form-2-label-ownwork": "It must be entirely <strong>your own creation</strong>, not just taken from the Internet",
-       "foreign-structured-upload-form-2-label-noderiv": "It has to contain <strong>no work by anyone else</strong>, or inspired by them",
-       "foreign-structured-upload-form-2-label-useful": "It should be <strong>educational and useful</strong> for teaching others",
-       "foreign-structured-upload-form-2-label-ccbysa": "It must be <strong>OK to publish forever</strong> on the Internet under the [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0] license",
-       "foreign-structured-upload-form-2-label-alternative": "If not all of the above are true, you may still be able to upload this file using the [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Upload Wizard], as long as it's available under a free license.",
-       "foreign-structured-upload-form-2-label-termsofuse": "By uploading the file, you attest that you own the copyright on this file, and agree to irrevocably release this file to Wikimedia Commons under the Creative Commons Attribution-ShareAlike 4.0 license, and you agree to the [https://wikimediafoundation.org/wiki/Terms_of_Use Terms of Use].",
-       "foreign-structured-upload-form-3-label-question-website": "Did you download this image from a website, or get it from an image search?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Did you create this image (take the photo, sketch the drawing, etc.) yourself?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Does it contain, or is it inspired by, work owned by anyone else, like a logo?",
-       "foreign-structured-upload-form-3-label-yes": "Yes",
-       "foreign-structured-upload-form-3-label-no": "No",
-       "foreign-structured-upload-form-3-label-alternative": "Unfortunately, in this case, this tool does not support uploading this file. You may still be able to upload it using the [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Upload Wizard], as long as it's available under a free license.",
-       "foreign-structured-upload-form-4-label-good": "Using this tool, you can upload educational graphics you've created and photographs you've taken, that don't contain work owned by someone else.",
-       "foreign-structured-upload-form-4-label-bad": "You can not upload images found on a search engine or downloaded from other websites.",
        "backend-fail-stream": "Could not stream file \"$1\".",
        "backend-fail-backup": "Could not backup file \"$1\".",
        "backend-fail-notexists": "The file $1 does not exist.",
index f214c12..d257f96 100644 (file)
        "resetpass_submit": "Fari pasvorton kaj ensaluti",
        "changepassword-success": "Via pasvorto estis sukcese ŝanĝita!",
        "changepassword-throttled": "Vi tro ofte provis ensaluti al ĉi tiu konto.\nBonvolu atendi $1 antaŭ ol reprovi.",
+       "botpasswords-label-create": "Krei",
+       "botpasswords-label-update": "Ĝisdatigi",
+       "botpasswords-label-cancel": "Nuligi",
+       "botpasswords-label-delete": "Forigi",
+       "botpasswords-label-resetpassword": "Rekomencigi la pasvorton",
        "resetpass_forbidden": "Pasvortoj ne estas ŝanĝeblaj",
        "resetpass-no-info": "Vi devas ensaluti por atingi ĉi tiun paĝon rekte.",
        "resetpass-submit-loggedin": "Ŝanĝi pasvorton",
        "upload-dialog-button-done": "Farite",
        "upload-dialog-button-save": "Konservi",
        "upload-dialog-button-upload": "Alŝuti",
-       "upload-form-label-select-file": "Elekti dosieron",
        "upload-form-label-infoform-title": "Detaloj",
        "upload-form-label-infoform-name": "Nomo",
        "upload-form-label-infoform-description": "Priskribo",
        "foreign-structured-upload-form-label-own-work": "Tio estas mia propra laboro",
        "foreign-structured-upload-form-label-infoform-categories": "Kategorioj",
        "foreign-structured-upload-form-label-infoform-date": "Dato",
-       "foreign-structured-upload-form-3-label-yes": "Jes",
-       "foreign-structured-upload-form-3-label-no": "Ne",
        "backend-fail-stream": "Ne povis fluigi dosieron $1.",
        "backend-fail-backup": "Ne povis enarkivigi dosieron $1.",
        "backend-fail-notexists": "La dosiero $1 ne ekzistas.",
index 4ecff59..a8f7c5d 100644 (file)
        "mergehistory-empty": "No hay revisiones fusionables.",
        "mergehistory-done": "Se {{PLURAL:$3|fusionó una revisión|fusionaron $3 revisiones}} de $1 en [[:$2]].",
        "mergehistory-fail": "No se puede realizar la fusión de historiales, por favor revisa la página y los parámetros de tiempo.",
+       "mergehistory-fail-invalid-source": "La página de origen no es válida.",
+       "mergehistory-fail-invalid-dest": "La página de destino no es válida.",
+       "mergehistory-fail-permission": "Permisos insuficientes para fusionar el historial.",
+       "mergehistory-fail-self-merge": "Las páginas de origen y destino son la misma.",
        "mergehistory-fail-toobig": "No se puede fusionar el historial ya que más del límite de $1 {{PLURAL:$1|revisión|revisiones}} se moverían.",
        "mergehistory-no-source": "La página origen $1 no existe.",
        "mergehistory-no-destination": "La página destino $1 no existe.",
        "upload-dialog-button-done": "Hecho",
        "upload-dialog-button-save": "Guardar",
        "upload-dialog-button-upload": "Subir",
-       "upload-form-label-select-file": "Seleccionar archivo",
        "upload-form-label-infoform-title": "Detalles",
        "upload-form-label-infoform-name": "Nombre",
        "upload-form-label-infoform-name-tooltip": "Un título único descriptivo para el archivo, que servirá como un nombre de archivo. Puedes usar un lenguaje claro con espacios. No incluyas la extensión del archivo.",
        "foreign-structured-upload-form-label-own-work-message-shared": "Doy fe que soy dueño de los derechos de autor de este archivo, y acepto irrevocablemente liberar este archivo a Wikimedia Commons bajo la licencia [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0], y acepto los [https://wikimediafoundation.org/wiki/Terms_of_Use Términos de Uso].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Si no es dueño de los derechos de autor de este archivo, o desea publicarlo bajo una licencia diferentes, considere usar el [https://commons.wikimedia.org/wiki/Special:UploadWizard Asistente de Carga de Commons].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Puede que también quiera usar  [[Special:Upload|la página de carga {{SITENAME}}]], si el sitio permite la subida de este archivo bajo sus políticas.",
-       "foreign-structured-upload-form-2-label-intro": "Gracias por donar una imagen para ser usada en {{SITENAME}}. Sólo debería continuar si se cumpñen varias condiciones:",
-       "foreign-structured-upload-form-2-label-ownwork": "Debe ser completamente <strong>su creación propia</strong>, no solamente tomada de Internet",
-       "foreign-structured-upload-form-2-label-noderiv": "No tiene que contener <strong>trabajo de alguien más</strong>, o inspirado por otros",
-       "foreign-structured-upload-form-2-label-useful": "Debe ser <strong>educativo y útil</strong> para enseñarle a otros",
-       "foreign-structured-upload-form-2-label-ccbysa": "Debe estar <strong>aceptado para publicarse por siempre</strong> en Internet bajo la licencia [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0]",
-       "foreign-structured-upload-form-2-label-alternative": "Si no todos los criterios de arriba son ciertos, aún puede ser capaz de subir este archivo usando el[https://commons.wikimedia.org/wiki/Special:UploadWizard Asistente de Carga de Commons], mientras esté disponible bajo una licencia libre.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Al subir el archivo, das fe de que eres dueño de los derechos de autor en este archivo, y aceptas irrevocablemente liberar este archivo a Wikimedia Commons bajo la licencia Creative Commons Attribution-ShareAlike 4.0, y aceptas los [https://wikimediafoundation.org/wiki/Terms_of_Use Términos de uso].",
-       "foreign-structured-upload-form-3-label-question-website": "¿Has descargado esta imagen de un sitio web, o la has obtenido de una búsqueda de imágenes?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "¿Creó esta imagen (tomó la foto, hizo el dibujo, etc) usted mismo?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "¿Contiene, o está inspirada por, trabajo de propiedad de cualquier otra persona, como un logotipo?",
-       "foreign-structured-upload-form-3-label-yes": "Sí",
-       "foreign-structured-upload-form-3-label-no": "No",
-       "foreign-structured-upload-form-3-label-alternative": "Desafortunadamente, en este caso, esta herramienta no admite la subida de este archivo. Pero lo puedes hacer usando el [https://commons.wikimedia.org/wiki/Special:UploadWizard Asistente de subidas de Commons], mientras esté disponible bajo una licencia libre.",
-       "foreign-structured-upload-form-4-label-good": "Usando esta herramienta, puedes subir gráficos educativos que hayas creado y fotografías que hayas tomado, que no contengan trabajo de alguien más.",
-       "foreign-structured-upload-form-4-label-bad": "No puedes subir imágenes encontradas en un motor de búsqueda o descargadas de otros sitios web.",
        "backend-fail-stream": "No se pudo transmitir el archivo «$1».",
        "backend-fail-backup": "No se pudo hacer copia de seguridad del archivo «$1».",
        "backend-fail-notexists": "El archivo  $1  no existe.",
        "apisandbox-dynamic-parameters": "Parámetros adicionales",
        "apisandbox-dynamic-parameters-add-label": "Añadir parámetro:",
        "apisandbox-dynamic-parameters-add-placeholder": "Nombre del parámetro",
-       "apisandbox-deprecated-parameters": "Parámetros obsoletos",
+       "apisandbox-deprecated-parameters": "Parámetros desaconsejados",
        "apisandbox-submit-invalid-fields-title": "Algunos campos no son válidos",
        "apisandbox-results": "Resultados",
-       "apisandbox-sending-request": "Enviando pedido API...",
-       "apisandbox-loading-results": "Recibiendo resultados API...",
+       "apisandbox-sending-request": "Enviando pedido a la API...",
+       "apisandbox-loading-results": "Recibiendo resultados de la API...",
        "apisandbox-request-url-label": "URL solicitante:",
-       "apisandbox-request-time": "Tiempo de solicitud: $1",
+       "apisandbox-request-time": "Tiempo de solicitud: {{PLURAL:$1|$1 ms}}",
        "booksources": "Fuentes de libros",
        "booksources-search-legend": "Buscar fuentes de libros",
        "booksources-search": "Buscar",
        "hidden-category-category-desc": "La categoría contiene <code><nowiki>__HIDDENCAT__</nowiki></code> en su página de contenido, lo que evita que aparezca en el cuadro de enlaces de categorías en las páginas, de forma predeterminada.",
        "trackingcategories-nodesc": "No hay descripción disponible.",
        "trackingcategories-disabled": "La categoría está desactivada",
-       "mailnologin": "Ninguna dirección de envio",
+       "mailnologin": "Ninguna dirección de envío",
        "mailnologintext": "Debes [[Special:UserLogin|iniciar sesión]] y tener una dirección electrónica válida en tus [[Special:Preferences|preferencias]] para enviar un correo electrónico a otros usuarios.",
        "emailuser": "Enviar un mensaje de correo a {{GENDER:{{BASEPAGENAME}}|este usuario|esta usuaria}}",
        "emailuser-title-target": "Enviar un mensaje a {{GENDER:$1|este usuario|esta usuaria}}",
index c1a0fcc..30f40b1 100644 (file)
@@ -26,7 +26,8 @@
                        "Roland",
                        "Postituvi",
                        "Purodha",
-                       "Macofe"
+                       "Macofe",
+                       "Adeliine"
                ]
        },
        "tog-underline": "Linkide allakriipsutus:",
        "upload-dialog-button-done": "Valmis",
        "upload-dialog-button-save": "Salvesta",
        "upload-dialog-button-upload": "Laadi üles",
-       "upload-form-label-select-file": "Faili valimine",
        "upload-form-label-infoform-title": "Üksikasjad",
        "upload-form-label-infoform-name": "Pealkiri",
        "upload-form-label-infoform-description": "Kirjeldus",
        "unwatchthispage": "Ära jälgi",
        "notanarticle": "Pole sisulehekülg",
        "notvisiblerev": "Viimane teise kasutaja redaktsioon on kustutatud",
-       "watchlist-details": "Jälgimisloendis on {{PLURAL:$1|üks lehekülg|$1 lehekülge}}. Arutelulehekülgi pole eraldi välja toodud.",
+       "watchlist-details": "Jälgimisloendis on {{PLURAL:$1|üks lehekülg|$1 lehekülge}} (lisaks vastavad arutelulehed).",
        "wlheader-enotif": "E-posti teel teavitamine on lubatud.",
        "wlheader-showupdated": "Leheküljed, mida on muudetud peale sinu viimast külastust, on '''rasvases kirjas'''.",
        "wlnote": "Allpool on {{PLURAL:$1|viimane muudatus|viimased <strong>$1</strong> muudatust}} viimase {{PLURAL:$2|tunni|<strong>$2</strong> tunni}} jooksul seisuga $3, kell $4.",
index 7446bfa..7c33712 100644 (file)
        "resetpass_submit": "Pasahitza definitu eta saioa hasi",
        "changepassword-success": "Zure pasahitza ondo aldatu da!",
        "changepassword-throttled": "Saioa hasteko saiakera gehiegi egin berri dituzu.\nBerriro saiatu aurretik $1 itxoin, mesedez.",
+       "botpasswords-label-appid": "Bot izena:",
        "botpasswords-label-create": "Sortu",
        "botpasswords-label-update": "Eguneratu",
        "botpasswords-label-cancel": "Utzi",
        "upload-dialog-button-done": "Egina",
        "upload-dialog-button-save": "Gorde",
        "upload-dialog-button-upload": "Igo",
-       "upload-form-label-select-file": "Fitxategia Aukeratu",
        "upload-form-label-infoform-title": "Xehetasunak",
        "upload-form-label-infoform-name": "Izena",
        "upload-form-label-infoform-description": "Deskribapena",
        "foreign-structured-upload-form-label-own-work": "Hau neure lana da",
        "foreign-structured-upload-form-label-infoform-categories": "Kategoriak",
        "foreign-structured-upload-form-label-infoform-date": "Data",
-       "foreign-structured-upload-form-3-label-yes": "Bai",
-       "foreign-structured-upload-form-3-label-no": "Ez",
        "backend-fail-stream": "Ezin izan da \"$1\" fitxategiaren stream egin.",
        "backend-fail-backup": "Ezin izan da \"$1\" fitxategiaren backup egin.",
        "backend-fail-notexists": "$1 fitxategia ez da existitzen.",
index 6adc790..0ef38b6 100644 (file)
        "upload-dialog-button-done": "انجام شد",
        "upload-dialog-button-save": "ذخیره",
        "upload-dialog-button-upload": "بارگذاری",
-       "upload-form-label-select-file": "یک فایل انتخاب کنید",
        "upload-form-label-infoform-title": "جزئیات",
        "upload-form-label-infoform-name": "نام",
        "upload-form-label-infoform-name-tooltip": "یک عنوان توضیحی برای پرونده که به عنوان نام پرونده استفاده می‌شود. ممکن است از زبان ساده همرا با فاصله استفاده شود. شامل پسوند پرونده نباشد.",
        "foreign-structured-upload-form-label-own-work-message-shared": "تصدیق می‌کنم که مالک حق تکثیر این پرونده هستم و موافق اشتراک‌گذاری آن تحت مجوز [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0] هستم و موافق [https://wikimediafoundation.org/wiki/Terms_of_Use سیاست نحوهٔ استفاده] هستم.",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "اگر مالک حق تکثیر این پرونده نیستید یا قصد بارگذاری تحت مجوز دیگری دارید، از [https://commons.wikimedia.org/wiki/Special:UploadWizard جادوگر بارگذاری ویکی‌انبار] استفاده کنید.",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "در صورتی که سایت امکان بارگذاری پرونده را تحت سیاست‌ها بارگذاری می‌دهد ممکن است بخواهید از [[Special:Upload|پنجرهٔ بارگذاری در {{SITENAME}}]] استفاده کنید.",
-       "foreign-structured-upload-form-2-label-intro": "از این که تصویری را واگذار می‌کنید تا در {{SITENAME}} استفاده شود متشکریم. شما باید این کار را تنها در صورتی انجام دهید که چندین شرط برقرار باشد:",
-       "foreign-structured-upload-form-2-label-ownwork": "باید تماماً <strong>کار خود شما </strong> باشد، نه این که از اینترنت برداشته باشید",
-       "foreign-structured-upload-form-2-label-noderiv": "باید حاوی چیزی که <strong>دیگران خلق کرده باشند نباشد<strong>، و یا متاثر از اثر کسی دیگر نباشد",
-       "foreign-structured-upload-form-2-label-useful": "این باید <strong>مفید و دانشورانه</strong> برای تدریس به دیگران باشد.",
-       "foreign-structured-upload-form-2-label-ccbysa": "باید <strong>بشود برای همیشه</strong> آن را در اینترنت با مجوز [https://creativecommons.org/licenses/by-sa/4.0/ عامه خلاق با ذکر صاحب اثر و نشر بدون تغییر نسخه ۴٫۰] منتشر کرد",
-       "foreign-structured-upload-form-2-label-alternative": "اگر تمام شرایط بالا برقرار نیست، شما ممکن است کماکان بتوانید آن را از طریق [https://commons.wikimedia.org/wiki/Special:UploadWizard جادوگر بارگذاری ویکی‌انبار] بارگذاری کنید، به شرط آن که تحت یک مجوز آزاد باشد.",
-       "foreign-structured-upload-form-2-label-termsofuse": "با بارگذاری پرونده، شما تایید می‌کنید که صاحب حق تکثیر این پرونده هستید، و قبول می‌کنید که حقوق آن را طبق مجوز عامه خلاق با ذکر صاحب اثر و نشر بدون تغییر نسخه  ۴٫۰ و به صورت غیر قابل برگشت به ویکی‌انبار ببخشید، و نیز [https://wikimediafoundation.org/wiki/Terms_of_Use قوانین استفاده] ویکی‌مدیا را می‌پذیرید.",
-       "foreign-structured-upload-form-3-label-question-website": "آیا شما این تصویر را از یک وب‌سایت دانلود کرده‌اید یا از یک سرویس جستجوی تصویر استفاده کردید؟",
-       "foreign-structured-upload-form-3-label-question-ownwork": "آیا این تصویر را خودتان تولید کردید؟ (عکس گرفتن، طراحی با دست و غیره)",
-       "foreign-structured-upload-form-3-label-question-noderiv": "آیا این اثر متعلق یا مشتق شده از اثر فرد دیگری است مانند نشان؟",
-       "foreign-structured-upload-form-3-label-yes": "بله",
-       "foreign-structured-upload-form-3-label-no": "خیر",
-       "foreign-structured-upload-form-3-label-alternative": "متاسفانه در این شرایط این ابزار از بارگذاری این پرونده پشتیبانی نمی‌کند.  شما ممکن است کماکان بتوانید آن را از طریق [https://commons.wikimedia.org/wiki/Special:UploadWizard جادوگر بارگذاری ویکی‌انبار] بارگذاری کنید، به شرط آن که تحت یک مجوز آزاد باشد.",
-       "foreign-structured-upload-form-4-label-good": "با استفاده از این ابزار شما می‌توانید تصاویر آموزشی که خود ساخته‌اید یا خودتان عکاسی کرده‌اید را بارگذاری کنید، مادامی که حاوی اثری که دیگری تولید کرده نباشند.",
-       "foreign-structured-upload-form-4-label-bad": "شما نمی‌توانید تصویر بدست آمده از جستجو در موتورهای جستجو یا متعلق به سایر وب‌گاه‌ها را بارگذاری کنید.",
        "backend-fail-stream": "نمی‌توان پروندهٔ $1 را ارسال کرد.",
        "backend-fail-backup": "نمی‌توان نسخهٔ پشتیبان برای پروندهٔ $1 ایجاد کرد.",
        "backend-fail-notexists": "پروندهٔ $1 وجود ندارد.",
        "apihelp": "راهنمای API",
        "apihelp-no-such-module": "پودمان \" $1 \" یافت نشد.",
        "apisandbox": "گودال ماسه‌بازی رابط برنامه‌نویسی",
+       "apisandbox-jsonly": "برای استفاده از صفحهٔ تمرین API به جاوااسکریپت نیاز دارید.",
        "apisandbox-api-disabled": "رابط برنامه‌نویسی در این تارنما غیرفعال شده‌است.",
        "apisandbox-intro": "از این صفحه برای آزمایش <strong>خدمات وب API مدیاویکی</strong> استفاده کنید.\nبرای جزئیات بیشتر دربارهٔ نحوهٔ استفاده از API به [[mw:API:Main page|مستندات API]] رجوع کنید. مثال: [//www.mediawiki.org/wiki/API#A_simple_example دریافت محتوای صفحهٔ اصلی]. برای دیدن مثال‌های بیشتر عملکردی را انتخاب کنید.",
        "apisandbox-fullscreen": "گسترش پنل",
+       "apisandbox-fullscreen-tooltip": "بازکردن صفحهٔ تمرین برای پر کردن پنجرهٔ مرورگر.",
        "apisandbox-unfullscreen": "نمایش صفحه",
+       "apisandbox-unfullscreen-tooltip": "بستن پانل تمرین، در نتیجه پیوندهای هدایت مدیاویکی در دسترس هستند.",
        "apisandbox-submit": "ایجاد درخواست",
        "apisandbox-reset": "پاک‌کردن",
        "apisandbox-retry": "تلاش مجدد",
+       "apisandbox-loading": "بارگیری اطلاعات برای ماژول \"$1\" ...",
+       "apisandbox-load-error": "در زمان بارگیری اطلاعات برای ماژول \"$1\" خطایی رخ داده‌است: $2",
+       "apisandbox-no-parameters": "این ماژول API پارامتری ندارد.",
        "apisandbox-helpurls": "پیوندهای راهنمایی",
        "apisandbox-examples": "مثال‌ها",
        "apisandbox-dynamic-parameters": "پارامترهای بیشتر",
        "apisandbox-dynamic-parameters-add-label": "افزودن پارامتر:",
        "apisandbox-dynamic-parameters-add-placeholder": "نام پارامتر",
+       "apisandbox-dynamic-error-exists": "پارامتری به نام \"$1\"هم اکنون وجود دارد.",
        "apisandbox-deprecated-parameters": "پارامتر های نامناسب",
+       "apisandbox-fetch-token": "پرکردن خودکار توکن",
+       "apisandbox-submit-invalid-fields-title": "بعضی از بخش‌ها نامعتبر هستند.",
        "apisandbox-submit-invalid-fields-message": "لطفا موارد مشخص شده را اصلاح کرده و دوباره امتحان کنید.",
        "apisandbox-results": "نتیجه‌ها",
        "apisandbox-sending-request": "ارسال درخواست ای‌پی‌آی...",
        "apisandbox-loading-results": "دریافت درخواست‌های ای‌پی‌آی...",
+       "apisandbox-results-error": "در زمان بارگیری پاسخ کوئری API خطایی رخ داده‌است: $1.",
        "apisandbox-request-url-label": "درخواست آدرس:",
        "apisandbox-request-time": "زمان درخواست: {{PLURAL:$1|$1 ms}}",
+       "apisandbox-results-fixtoken": "توکن را اصلاح کنید و از نو ارسال کنید",
+       "apisandbox-results-fixtoken-fail": "خطا در دریافت توکن \"$1\"",
+       "apisandbox-alert-page": "بخش‌ها در این صفحه معتبر نیستند.",
+       "apisandbox-alert-field": "مقدار این بخش معتبر نیست.",
        "booksources": "منابع کتاب",
        "booksources-search-legend": "جستجوی منابع کتاب",
        "booksources-isbn": "شابک:",
index 3e3a3dc..5d5dd0c 100644 (file)
        "upload-dialog-button-done": "Valmis",
        "upload-dialog-button-save": "Tallenna",
        "upload-dialog-button-upload": "Tallenna",
-       "upload-form-label-select-file": "Valitse tiedosto",
        "upload-form-label-infoform-title": "Yksityiskohdat",
        "upload-form-label-infoform-name": "Nimi",
        "upload-form-label-infoform-description": "Kuvaus",
        "foreign-structured-upload-form-label-own-work-message-shared": "Vakuutan, että minä omistan tämän tiedoston tekijänoikeudet, ja sitoudun siihen, että luovutan peruuttamattomasti tämän tiedoston kohteeseen Wikimedia Commons niillä ehdoilla, jotka liittyvät lisenssiin [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0]. Sitoudun myös noudattamaan [https://wikimediafoundation.org/wiki/Terms_of_Use käyttöehtoja].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Jos sinulla ei ole tähän tiedostoon tekijänoikeutta tai jos haluat luovuttaa tiedoston käyttäen jotain toista lisenssiä, voit käyttää erityistä [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Upload Wizard] -toimintoa.",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Voit myös kokeilla [[Special:Upload|tallennussivua sivustolla {{SITENAME}}]]. Saattaa olla, että sivusto antaa tallentaa tämän tiedoston sinne siellä voimassa olevien käytäntöjen mukaisesti.",
-       "foreign-structured-upload-form-3-label-yes": "Kyllä",
-       "foreign-structured-upload-form-3-label-no": "Ei",
        "backend-fail-stream": "Tiedoston $1 virtauttaminen epäonnistui.",
        "backend-fail-backup": "Tiedostoa $1 ei voitu varmuuskopioida.",
        "backend-fail-notexists": "Tiedostoa $1 ei ole olemassa.",
        "checkbox-select": "Valitse: $1",
        "checkbox-all": "Kaikki",
        "checkbox-none": "Ei mitään",
-       "checkbox-invert": "Päinvastoin",
+       "checkbox-invert": "Käännä valinta",
        "allpages": "Kaikki sivut",
        "nextpage": "Seuraava sivu ($1)",
        "prevpage": "Edellinen sivu ($1)",
        "listgrouprights-namespaceprotection-namespace": "Nimiavaruus",
        "listgrouprights-namespaceprotection-restrictedto": "Käyttäjän muokkausoikeudet",
        "listgrants": "Toimintaoikeudet",
-       "listgrants-grant": "Toimintaoikeus",
-       "listgrants-rights": "Oikeudet",
+       "listgrants-grant": "Toimintaoikeus (grant)",
+       "listgrants-rights": "Oikeudet (rights)",
        "trackingcategories": "Tarkkailuluokat",
        "trackingcategories-summary": "Tällä sivulla on luettelo sellaisista ongelmia havaitsevista luokista (tarkkailuluokat), joiden sisällön koostaa automaattisesti MediaWiki-ohjelmisto. Luokkien nimiä voi vaihtaa muuttamalla asianomaista järjestelmäviestiä nimiavaruudessa {{ns:8}}.",
        "trackingcategories-msg": "Tarkkailuluokka",
        "import-nonewrevisions": "Ei tuotu yhtään versiota, koska kaikki versiot ovat jo täällä tai ne on ohitettu virheiden vuoksi.",
        "xml-error-string": "$1 rivillä $2, sarakkeessa $3 (tavu $4): $5",
        "import-upload": "Tallenna XML-tiedosto",
-       "import-token-mismatch": "Istuntotiedot ovat kadonneet. Yritä uudelleen.",
+       "import-token-mismatch": "Istuntotietojen katoaminen.\n\nSaatat olla kirjautunut ulos. <strong>Ole hyvä ja varmista, että olet edelleen kirjautunut sisään, ja yritä sitten uudestaan.</strong>\nJos ei vieläkään onnistu, yritä [[Special:UserLogout|kirjautua ulos]] ja sitten takaisin sisään, ja tarkista, että selaimesi sallii evästeet tältä sivustolta.",
        "import-invalid-interwiki": "Määritellystä wikistä ei voi tuoda.",
        "import-error-edit": "Sivua $1 ei tuotu, koska sinulla ei ole oikeutta muokata sitä.",
        "import-error-create": "Sivua $1 ei tuotu, koska sinulla ei ole oikeutta luoda sitä.",
        "expand_templates_generate_xml": "Näytä XML-jäsennyspuu",
        "expand_templates_generate_rawhtml": "Näytä raaka HTML",
        "expand_templates_preview": "Esikatselu",
-       "expand_templates_preview_fail_html": "<em>Koska sivustolla {{SITENAME}} on käytössä puhdas HTML-koodi ja koska istunnon tiedot ovat kadonneet, esikatselu on piilotettu JavaScript-hyökkäyksien torjumiseksi.</em>\n\n<strong>Jos olet oikealla asialla, yritä uudestaan.</strong>\nJos esikatselu ei vieläkään toimi, kokeile [[Special:UserLogout|kirjautua ulos]] ja sen jälkeen kirjaudu uudestaan sisään.",
+       "expand_templates_preview_fail_html": "<em>Koska sivustolla {{SITENAME}} on käytössä puhdas HTML-koodi ja koska istunnon tiedot ovat kadonneet, esikatselu on piilotettu JavaScript-hyökkäyksien torjumiseksi.</em>\n\n<strong>Jos olet oikealla asialla, yritä uudestaan.</strong>\nJos esikatselu ei vieläkään toimi, yritä [[Special:UserLogout|kirjautua ulos]] ja sitten kirjautua uudestaan sisään. Tarkista myös, että selaimesi sallii evästeet tältä sivustolta.",
        "expand_templates_preview_fail_html_anon": "<em>Koska sivustolla {{SITENAME}} on käytössä puhdas HTML-koodi ja koska et ole kirjautunut sisään, esikatselu on piilotettu JavaScript-hyökkäyksien torjumiseksi.</em>\n\n<strong>Jos olet oikealla asialla, [[Special:UserLogin|kirjaudu sisään]] ja yritä uudestaan.</strong>",
        "expand_templates_input_missing": "Sinun on annettava edes jotakin tekstiä syötteeksi.",
-       "pagelanguage": "Vaihda sivun kieltä",
+       "pagelanguage": "Sivun kielen vaihto",
        "pagelang-name": "Sivu",
        "pagelang-language": "Kieli",
        "pagelang-use-default": "Käytä oletuskieltä",
        "mw-widgets-titleinput-description-new-page": "sivua ei ole olemassa vielä",
        "mw-widgets-titleinput-description-redirect": "ohjaus kohteeseen $1",
        "api-error-blacklisted": "Valitse toinen, kuvaava nimi.",
+       "sessionmanager-tie": "!!FYZZ!!Cannot combine multiple request authentication types: $1.",
        "sessionprovider-generic": "$1 istuntoa",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "istuntoja, joissa on evästeet käytössä",
        "sessionprovider-nocookies": "Evästeet on voitu poistaa käytöstä. Varmista, että sinulla on evästeet käytössä ja yritä sitten uudelleen.",
index e7ac70b..a884eb0 100644 (file)
        "badaccess-group0": "Vous n’avez pas les droits suffisants pour réaliser l’action demandée.",
        "badaccess-groups": "L’action que vous essayez de réaliser n’est permise qu’aux utilisateurs {{PLURAL:$2|du groupe|d'un des groupes}} : $1.",
        "versionrequired": "Version $1 de MediaWiki nécessaire",
-       "versionrequiredtext": "La version $1 de MediaWiki est nécessaire pour utiliser cette page. Consultez [[Special:Version|la page des versions]].",
+       "versionrequiredtext": "La version $1 de MediaWiki est nécessaire pour utiliser cette page.\nConsultez [[Special:Version|la page des versions]].",
        "ok": "Valider",
        "pagetitle": "$1 — {{SITENAME}}",
        "retrievedfrom": "Récupérée de « $1 »",
        "upload-dialog-button-done": "Fait",
        "upload-dialog-button-save": "Enregistrer",
        "upload-dialog-button-upload": "Téléverser",
-       "upload-form-label-select-file": "Sélectionner un fichier",
        "upload-form-label-infoform-title": "Détails",
        "upload-form-label-infoform-name": "Nom",
        "upload-form-label-infoform-name-tooltip": "Un titre descriptif unique pour le fichier, qui servira comme nom de fichier. Vous pouvez utiliser du langage courant avec des espaces. Ne pas inclure l’extension du fichier.",
        "foreign-structured-upload-form-label-own-work-message-shared": "Je certifie être le détenteur des droits d’auteur sur ce fichier, j’accepte de publier ce fichier sur Wikimedia Commons en le plaçant irrévocablement sous licence [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0] et j’accepte les [https://wikimediafoundation.org/wiki/Terms_of_Use conditions d’utilisation].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Si vous n’êtes pas le détenteur des droits d’auteur sur ce fichier ou que vous voulez le publier sous une licence différente, vous pouvez utiliser l’[https://commons.wikimedia.org/wiki/Special:UploadWizard assistant d’import].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Vous pouvez également essayer d’utiliser [[Special:Upload|la page de téléversement de {{SITENAME}}]], si les règles du site autorisent le téléversement du fichier.",
-       "foreign-structured-upload-form-2-label-intro": "Merci de faire don d’une image pour l’utiliser sur {{SITENAME}}. Ne continuez que si elle répond aux conditions suivantes :",
-       "foreign-structured-upload-form-2-label-ownwork": "Elle doit avoir été intégralement <strong>créée par vous</strong>, et pas simplement prise sur Internet.",
-       "foreign-structured-upload-form-2-label-noderiv": "Elle ne doit <strong>pas contenir d’œuvre créée par une autre personne</strong> ni être inspirée d’une telle œuvre.",
-       "foreign-structured-upload-form-2-label-useful": "Elle doit être <strong>éducative et utile</strong> pour instruire les lecteurs",
-       "foreign-structured-upload-form-2-label-ccbysa": "Vous devez accepter de la <strong>publier de façon irrévocable</strong> sur Internet selon les termes de la licence [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0]",
-       "foreign-structured-upload-form-2-label-alternative": "Si l’une de ces conditions n’est pas remplie, il est possible que vous puissiez tout de même importer l’image en utilisant l’[https://commons.wikimedia.org/wiki/Special:UploadWizard Assistant d’import de Commons], pourvu qu’elle soit disponible sous licence libre.",
-       "foreign-structured-upload-form-2-label-termsofuse": "En important ce fichier, vous certifiez détenir les droits d’auteur sur ce fichier, vous acceptez de publier irrévocablement ce fichier sur Wikimedia Commons selon les termes de la licence Creative Commons Attribution-ShareAlike 4.0 et vous acceptez les [https://wikimediafoundation.org/wiki/Terms_of_Use conditions d’utilisation].",
-       "foreign-structured-upload-form-3-label-question-website": "Avez-vous téléchargé cette image depuis un site web, ou l’avez-vous obtenue en faisant une recherche d’images ?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Avez-vous créé cette image (pris la photo, fait vous-même le dessin, etc.) ?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Contient-elle ou est-elle inspirée de l’œuvre d’une autre personne, par exemple un logo ?",
-       "foreign-structured-upload-form-3-label-yes": "Oui",
-       "foreign-structured-upload-form-3-label-no": "Non",
-       "foreign-structured-upload-form-3-label-alternative": "Malheureusement, dans ce cas, cet outil ne permet pas d’importer ce fichier. Il est possible que vous puissiez l’importer en utilisant l’[https://commons.wikimedia.org/wiki/Special:UploadWizard Assistant d’import de Commons], pourvu qu’il soit disponible sous licence libre.",
-       "foreign-structured-upload-form-4-label-good": "À l’aide de cet outil, vous pouvez importer des images éducatives que vous avez créées et des photographies que vous avez prises, pourvu qu’elles ne contiennent pas d’œuvres appartenant à d’autres personnes.",
-       "foreign-structured-upload-form-4-label-bad": "Vous ne pouvez pas importer des images trouvées sur un moteur de recherche ou téléchargées sur d’autres sites.",
        "backend-fail-stream": "Impossible de lire le fichier $1.",
        "backend-fail-backup": "Impossible de sauvegarder le fichier $1.",
        "backend-fail-notexists": "Le fichier $1 n’existe pas.",
index 1484ab3..f48ddca 100644 (file)
        "upload-dialog-button-done": "Klaar",
        "upload-dialog-button-save": "Seekre",
        "upload-dialog-button-upload": "Huuchschüür",
-       "upload-form-label-select-file": "Datei ütjschük",
        "upload-form-label-infoform-title": "Enkelthaiden",
        "upload-form-label-infoform-name": "Nööm",
        "upload-form-label-infoform-description": "Beskriiwang",
index 2a4e4a0..8364baa 100644 (file)
@@ -75,7 +75,7 @@
        "fri": "Dih",
        "sat": "DiS",
        "january": "dhen Fhaoilleach",
-       "february": "dhen Ghearrain",
+       "february": "dhen Ghearran",
        "march": "dhen Mhàrt",
        "april": "dhen Ghiblean",
        "may_long": "dhen Chèitean",
@@ -87,7 +87,7 @@
        "november": "dhen t-Samhain",
        "december": "dhen Dùbhlachd",
        "january-gen": "dhen Fhaoilleach",
-       "february-gen": "dhen Ghearrain",
+       "february-gen": "dhen Ghearran",
        "march-gen": "dhen Mhàrt",
        "april-gen": "dhen Ghiblean",
        "may-gen": "dhen Chèitean",
        "version-hook-subscribedby": "'Ga fho-sgrìobhadh le",
        "version-version": "($1)",
        "version-no-ext-name": "[gun ainm]",
-       "version-svn-revision": "r$1",
        "version-license": "Ceadachas MediaWiki",
        "version-ext-license": "Ceadachas",
        "version-ext-colheader-name": "Leudachan",
index 560e734..81c3986 100644 (file)
        "previewnote": "'''Lembre que esta é só unha vista previa e que aínda non gardou os seus cambios!'''",
        "continue-editing": "Ir ata a caixa de edición",
        "previewconflict": "Esta vista previa mostra o texto na área superior tal e como aparecerá se escolle gardar.",
-       "session_fail_preview": "'''O sistema non pode procesar a súa edición porque se perderon os datos de inicio da sesión.\nPor favor, inténteo de novo.\nSe segue sen funcionar, probe a [[Special:UserLogout|saír do sistema]] e volver entrar.'''",
-       "session_fail_preview_html": "'''O sistema non pode procesar a súa edición porque se perderon os datos de inicio da sesión.'''\n\n''Dado que {{SITENAME}} ten activado o HTML simple, agóchase a vista previa como precaución contra ataques mediante JavaScript.''\n\n'''Se este é un intento de facer unha edición lexítima, por favor, inténteo de novo.\nSe segue sen funcionar, probe a [[Special:UserLogout|saír do sistema]] e volver entrar.'''",
+       "session_fail_preview": "Sentímolo! Non podemos procesar a súa edición porque se perderon os datos de inicio da sesión.\n\nA súa sesión pode que fose pechada. <strong> Por favor, verifique se aínda está conectado e probe de novo</strong>. En caso de que siga sen funcionar, intente [[Special:UserLogout|saír]] e volver a entrar na súa conta, e verifique que o seu navegador permite o uso de \"cookies\" neste sitio.",
+       "session_fail_preview_html": "Sentímolo! Non foi posible procesar a edición debido á pérdida de datos da súa sesión.\n\n<em>Como a wiki {{SITENAME}} posibilita o uso de HTML puro, a vista previa está oculta por precaución contra ataques con JavaScript.</em>\n\n<strong>Se este é un intento lexítimo de edición probe de novo, por favor</strong>. \nEn caso de que continúe sen funcionar, intente [[Special:UserLogout|saír]] e volver a entrar na súa conta, e verifique se o seu navegador permite o uso de ''cookies'' deste sitio.",
        "token_suffix_mismatch": "'''Rexeitouse a súa edición porque o seu cliente confundiu os signos de puntuación na edición.'''\nRexeitouse a edición para evitar que se corrompa o texto do artigo.\nIsto pode acontecer porque estea a empregar un servizo de proxy anónimo defectuoso baseado na web.",
        "edit_form_incomplete": "'''Algunhas partes do formulario de edición non chegaron ao servidor; comprobe que a súa modificación está intacta e inténteo de novo.'''",
        "editing": "Editando \"$1\"",
        "mergehistory-empty": "Non hai revisións que se poidan fusionar.",
        "mergehistory-done": "$3 {{PLURAL:$3|revisión|revisións}} de $1 {{PLURAL:$3|fusionouse|fusionáronse}} sen problemas con [[:$2]].",
        "mergehistory-fail": "Non se puido fusionar o historial; comprobe outra vez os parámetros de páxina e data.",
+       "mergehistory-fail-bad-timestamp": "O selo de tempo é incorrecto.",
+       "mergehistory-fail-invalid-source": "A páxina de orixe é incorrecta.",
+       "mergehistory-fail-invalid-dest": "A páxina destino é incorrecta.",
+       "mergehistory-fail-no-change": "A fusión de históricos non fusionou ningunha revisión. Por favor, verifique os parámetros de páxina e tempo.",
+       "mergehistory-fail-permission": "Permisos insuficientes para fusionar os historiais.",
+       "mergehistory-fail-self-merge": "A páxina fonte e destino son a mesma.",
+       "mergehistory-fail-timestamps-overlap": "As revisións fonte sobreescriben ou veñen despois das revisións de destino.",
        "mergehistory-fail-toobig": "Non se puido fusionar o historial, xa que supón trasladar máis revisións que o límite de $1 {{PLURAL:$1|revisión|revisións}}.",
        "mergehistory-no-source": "Non existe a páxina de orixe \"$1\".",
        "mergehistory-no-destination": "Non existe a páxina de destino \"$1\".",
        "upload-dialog-button-done": "Feito",
        "upload-dialog-button-save": "Gardar",
        "upload-dialog-button-upload": "Subir",
-       "upload-form-label-select-file": "Seleccionar un ficheiro",
        "upload-form-label-infoform-title": "Detalles",
        "upload-form-label-infoform-name": "Nome",
        "upload-form-label-infoform-name-tooltip": "Un título único descritivo para o ficheiro, que servirá como un nome de ficheiro. Pode usar unha linguaxe clara con espazos. Non inclúa a extensión do ficheiro.",
        "foreign-structured-upload-form-label-own-work-message-shared": "Certifico que son o propietario dos dereitos de autor deste ficheiro, e que concordo a liberar irrevocablemente este ficheiro a Wikimedia Commons baixo a licenza [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0], e que concordo cos [https://wikimediafoundation.org/wiki/Terms_of_Use Termos de uso].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Se non posúe os dereitos de autor deste ficheiro, ou quere liberalo baixo unha licenza diferente, considere usar o [https://commons.wikimedia.org/wiki/Special:UploadWizard Asistente de subas de Commons].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Tamén pode interesarlle usar [[Special:Upload|a páxina de carga en {{SITENAME}}]], se o sitio permite a suba deste ficheiro nas súas políticas.",
-       "foreign-structured-upload-form-2-label-intro": "Grazas por doar unha imaxe para ser usada en {{SITENAME}}. Só debería continuar se se cumpren varias condicións:",
-       "foreign-structured-upload-form-2-label-ownwork": "Debe ser completamente <strong>creada por vostede</strong>, non só tomada de Internet",
-       "foreign-structured-upload-form-2-label-noderiv": "Non ten que conter <strong>traballo creado por outra persoa</strong>, nin estar  inspirado por outras obras",
-       "foreign-structured-upload-form-2-label-useful": "Debe ser <strong>educativo e útil</strong> para ensinar a outros",
-       "foreign-structured-upload-form-2-label-ccbysa": "Debe aceptar a <strong>publicación de forma irrevogable</strong> en Internet baixo a licenza [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0]",
-       "foreign-structured-upload-form-2-label-alternative": "Se non todos os criterios de arriba son certos, aínda pode subir este ficheiro usando o [https://commons.wikimedia.org/wiki/Special:UploadWizard Asistente de subas de Commons], mentres estea dispoñible baixo unha licenza libre.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Ó subir o ficheiro, vostede da fe de que é o dono dos dereitos de autor neste ficheiro, e acepta irrevogablemente liberar este ficheiro a Wikimedia Commons baixo a licenza Creative Commons Attribution-ShareAlike 4.0, e acepta os [https://wikimediafoundation.org/wiki/Terms_of_Use Termos de Uso].",
-       "foreign-structured-upload-form-3-label-question-website": "Descargou esta imaxe dun sitio web, ou obtívoa dunha busca de imaxes?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Creou esta imaxe (tomou a foto, fixo o debuxo, etc) vostede mesmo?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Contén, ou está inspirada por, traballo propiedade de calquera outra persoa, como un logotipo?",
-       "foreign-structured-upload-form-3-label-yes": "Si",
-       "foreign-structured-upload-form-3-label-no": "Non",
-       "foreign-structured-upload-form-3-label-alternative": "Desafortunadamente, neste caso, esta ferramenta non é compatible para subir este ficheiro. Aínda pode ser capaz de subir este ficheiro usando o [https://commons.wikimedia.org/wiki/Special:UploadWizard Asistente de subas de Commons], mentres estea dispoñible baixo unha licenza libre.",
-       "foreign-structured-upload-form-4-label-good": "Ó usar esta ferramenta, pode subir gráficos educativos que crease e fotografías que fixese, que non conteñan traballo de ninguén máis.",
-       "foreign-structured-upload-form-4-label-bad": "Non pode subir imaxes atopadas nun motor de buscas ou descargadas doutros sitios web.",
        "backend-fail-stream": "Non se puido transmitir o ficheiro \"$1\".",
        "backend-fail-backup": "Non se puido facer unha copia de seguridade do ficheiro \"$1\".",
        "backend-fail-notexists": "O ficheiro \"$1\" non existe.",
        "import-nonewrevisions": "Non se importou ningunha revisión (xa estaban todas presentes ou saltáronse por erros).",
        "xml-error-string": "$1 na liña $2, columna $3 (byte $4): $5",
        "import-upload": "Cargar datos XML",
-       "import-token-mismatch": "Perdéronse os datos da sesión. Por favor, inténteo de novo.",
+       "import-token-mismatch": "Perda de datos da sesión.\n\nA súa sesión puido ser pechada. <strong>Por favor, verifique se aínda está conectado e probe de novo</strong>. \nEn caso de que continúe sen funcionar, intente [[Special:UserLogout|saír]] e volver a entrar na súa conta, e verifique se o seu navegador permite o uso de ''cookies'' deste sitio.",
        "import-invalid-interwiki": "Non se pode importar desde o wiki escificado.",
        "import-error-edit": "Non foi posible importar a páxina \"$1\" porque non ten os permisos necesarios para editala.",
        "import-error-create": "Non foi posible importar a páxina \"$1\" porque non ten os permisos necesarios para creala.",
        "expand_templates_generate_xml": "Mostrar a árbore de análise XML",
        "expand_templates_generate_rawhtml": "Mostrar o HTML en bruto",
        "expand_templates_preview": "Vista previa",
-       "expand_templates_preview_fail_html": "<em>Dado que o código HTML puro está activado en {{SITENAME}} e produciuse unha perda dos datos da sesión, a vista previa está oculta como precaución contra ataques mediante código JavaScript.</em>\n\n<strong>Se este é un intento lexítimo de acceso á vista previa, inténteo de novo.</strong>\nSe segue sen funcionar, probe a [[Special:UserLogout|saír]] e volver a entrar coa súa conta.",
+       "expand_templates_preview_fail_html": "<em>Dado que o código HTML puro está activado en {{SITENAME}} e produciuse unha perda dos datos da sesión, a vista previa está oculta como precaución contra ataques mediante código JavaScript.</em>\n\n<strong>Se este é un intento lexítimo de acceso á vista previa, inténteo de novo.</strong>\nSe segue sen funcionar, probe a [[Special:UserLogout|saír]] e volver a entrar coa súa conta, e revise que o seu navegador permite o uso de \"cookies\" deste sitio.",
        "expand_templates_preview_fail_html_anon": "<em>Dado que o código HTML puro está activado en {{SITENAME}} e produciuse unha perda dos datos da sesión, a vista previa está oculta como precaución contra ataques mediante código JavaScript.</em>\n\n<strong>Se este é un intento lexítimo de acceso á vista previa, probe a [[Special:UserLogout|saír]] e volver a entrar coa súa conta.</strong>",
        "expand_templates_input_missing": "Necesita proporcionar polo menos algún texto de entrada.",
        "pagelanguage": "Cambiar a lingua da páxina",
index ca39584..b45fd6b 100644 (file)
@@ -12,7 +12,8 @@
                        "아라",
                        "Mywood",
                        "Impersonator 1",
-                       "LNDDYL"
+                       "LNDDYL",
+                       "唐吉訶德的侍從"
                ]
        },
        "tog-underline": "鏈接加底線:",
        "editfont-monospace": "等距字型",
        "editfont-sansserif": "無襯線字型",
        "editfont-serif": "襯線字型",
-       "sunday": "星期日",
-       "monday": "星期一",
-       "tuesday": "星期二",
-       "wednesday": "星期三",
-       "thursday": "星期四",
-       "friday": "星期五",
-       "saturday": "星期六",
+       "sunday": "禮拜日",
+       "monday": "禮拜一",
+       "tuesday": "禮拜二",
+       "wednesday": "禮拜三",
+       "thursday": "禮拜四",
+       "friday": "禮拜五",
+       "saturday": "禮拜六",
        "sun": "日",
        "mon": "一",
        "tue": "二",
index c66a611..d86192e 100644 (file)
        "upload-dialog-button-done": "בוצע",
        "upload-dialog-button-save": "שמירה",
        "upload-dialog-button-upload": "העלאה",
-       "upload-form-label-select-file": "בחירת קובץ",
        "upload-form-label-infoform-title": "פרטים",
        "upload-form-label-infoform-name": "שם",
        "upload-form-label-infoform-name-tooltip": "כותרת המהווה תיאור ייחודי לקובץ, שתשמש כשם הקובץ. ניתן להשתמש בשפה טבעית עם רווחים. אין לכלול סיומת קובץ.",
        "foreign-structured-upload-form-label-own-work-message-shared": "אני מאשר שאני מחזיק בזכויות היוצרים על הקובץ הזה, ואני מסכים לשחרר אותו באופן בלתי הפיך עבור ויקישיתוף תחת רישיון [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0], ומסכים ל[https://wikimediafoundation.org/wiki/Terms_of_Use תנאי השימוש].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "אם זכויות היוצרים על הקובץ הזה אינן בבעלותך, או שברצונך לשחרר אותו תחת רישיון אחר, באפשרותך להשתמש ב[https://commons.wikimedia.org/wiki/Special:UploadWizard אשף ההעלאה לוויקישיתוף].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "באפשרותך לנסות להשתמש ב[[Special:Upload|דף העלאת הקבצים ב{{grammar:תחילית|{{SITENAME}}}}]], אם ניתן להעלות את הקובץ הזה לשם לפי מדיניות האתר.",
-       "foreign-structured-upload-form-2-label-intro": "תודה על כך שתרמת תמונה לשימוש ב{{grammar:תחילית|{{SITENAME}}}}. מותר להמשיך אך ורק אם התמונה מקיימת מספר תנאים:",
-       "foreign-structured-upload-form-2-label-ownwork": "התמונה וכל חלקיה חייבים להיות <strong>יצירה שלך</strong>, ולא תמונה שנלקחה מהאינטרנט",
-       "foreign-structured-upload-form-2-label-noderiv": "התמונה חייבת <strong>לא לכלול עבודה של אחרים</strong>, ולא לקבל השראה מהם",
-       "foreign-structured-upload-form-2-label-useful": "התמונה חייבת להיות <strong>חינוכית ושימושית</strong> ללימוד אחרים",
-       "foreign-structured-upload-form-2-label-ccbysa": "התמונה חייבת להיות <strong>מותרת לפרסום לנצח</strong> באינטרנט תחת תנאי רישיון [https://creativecommons.org/licenses/by-sa/4.0/ ייחוס־שיתוף זהה 4.0 של Creative Commons]",
-       "foreign-structured-upload-form-2-label-alternative": "אם לא כל התנאים המפורטים לעיל מתקיימים, ייתכן שיהיה באפשרותך להעלות את הקובץ באמצעות [https://commons.wikimedia.org/wiki/Special:UploadWizard אשף העלאת הקבצים של ויקישיתוף], אם הוא זמין ברישיון חופשי.",
-       "foreign-structured-upload-form-2-label-termsofuse": "בהעלאת הקובץ, אתה מאשר שאתה מחזיק בזכויות היוצרים על הקובץ הזה, מסכים לשחרר אותו באופן בלתי הפיך עבור ויקישיתוף תחת רישיון [https://creativecommons.org/licenses/by-sa/4.0/ ייחוס־שיתוף זהה 4.0 של Creative Commons], ומסכים ל[https://wikimediafoundation.org/wiki/Terms_of_Use תנאי השימוש].",
-       "foreign-structured-upload-form-3-label-question-website": "האם הורדת את התמונה הזאת מאתר אינטרנט, או השגת אותה באמצעות חיפוש תמונות?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "האם יצרת את התמונה הזאת (צילמת את התמונה, ציירת את הציור, וכו') בעצמך?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "האם הוא מכיל עבודה שבבעלות אחרים (כגון לוגו), או קיבל השראה מעבודה כזו?",
-       "foreign-structured-upload-form-3-label-yes": "כן",
-       "foreign-structured-upload-form-3-label-no": "לא",
-       "foreign-structured-upload-form-3-label-alternative": "מצטערים, במקרה זה, הכלי הזה אינו תומך בהעלאת הקובץ. ייתכן שיהיה באפשרותך להעלות את הקובץ באמצעות [https://commons.wikimedia.org/wiki/Special:UploadWizard אשף העלאת הקבצים של ויקישיתוף], אם הוא זמין ברישיון חופשי.",
-       "foreign-structured-upload-form-4-label-good": "בעזרת הכלי הזה, באפשרותך להעלות איורים חינוכיים שיצרת ותמונות שצילמת, אם אינם מכילים עבודה בבעלות אחרים.",
-       "foreign-structured-upload-form-4-label-bad": "לא ניתן להעלות תמונות שנמצאו במנועי חיפוש או הורדו מאתרי אינטרנט אחרים.",
        "backend-fail-stream": "לא הייתה אפשרות להזרים את הקובץ \"$1\".",
        "backend-fail-backup": "לא הייתה אפשרות לגבות את הקובץ \"$1\".",
        "backend-fail-notexists": "הקובץ \"$1\" אינו קיים.",
        "apisandbox-jsonly": "דרוש JavaScript כדי להשתמש בארגז החול של ה־API.",
        "apisandbox-api-disabled": "API אינו פעיל באתר הזה.",
        "apisandbox-intro": "השתמשו בדף הזה כדי להתנסות בשימוש ב<strong>שירות ה־API המבוסס Web של מדיה־ויקי</strong>.\nעיינו ב[[mw:API:Main page|תיעוד של ה־API]] (באנגלית) למידע נוסף של שימוש ב־API. למשל: [//www.mediawiki.org/wiki/API#A_simple_example איך לקבל את התוכן של העמוד הראשי]. בחרו באחת הפעולות (actions) לדוגמאות נוספות.\n\nשימו לב שאף שמדובר ב\"ארגז חול\", פעולות שנעשות כאן עשויות לשנות את התוכן של אתר הוויקי.",
-       "apisandbox-fullscreen": "×\94ר×\97×\91ת ×\94פ×\90× ×\9c",
-       "apisandbox-fullscreen-tooltip": "×\94ר×\97×\91ת ×\94פ×\90× ×\9c של ארגז החול כך שימלא את חלון הדפדפן.",
+       "apisandbox-fullscreen": "×\94ר×\97×\91ת ×\94×\97×\9c×\95× ×\99ת",
+       "apisandbox-fullscreen-tooltip": "×\94ר×\97×\91ת ×\94×\97×\9c×\95× ×\99ת של ארגז החול כך שימלא את חלון הדפדפן.",
        "apisandbox-unfullscreen": "הצגת הדף",
-       "apisandbox-unfullscreen-tooltip": "×\94ק×\98נת ×\94פ×\90× ×\9c של ארגז החול, כך שקישורי הניווט של מדיה־ויקי יהיו זמינים לשימוש.",
-       "apisandbox-submit": "×\91×\99צ×\95×¢ ×©×\90×\99×\9cתה",
+       "apisandbox-unfullscreen-tooltip": "×\94ק×\98נת ×\94×\97×\9c×\95× ×\99ת של ארגז החול, כך שקישורי הניווט של מדיה־ויקי יהיו זמינים לשימוש.",
+       "apisandbox-submit": "×\91×\99צ×\95×¢ ×\91קשה",
        "apisandbox-reset": "ניקוי",
        "apisandbox-retry": "ניסיון נוסף",
        "apisandbox-loading": "המידע עבור מודול ה־API‏ \"$1\" בטעינה...",
index 5f2f664..9d85e4b 100644 (file)
        "upload-dialog-button-done": "पूर्ण हुआ",
        "upload-dialog-button-save": "सहेजें",
        "upload-dialog-button-upload": "डालें",
-       "upload-form-label-select-file": "फ़ाइल चुनें",
        "upload-form-label-infoform-title": "विवरण",
        "upload-form-label-infoform-name": "नाम",
        "upload-form-label-infoform-description": "विवरण",
        "foreign-structured-upload-form-label-own-work-message-shared": "कम से कम इस फ़ाइल का प्रतिकृति अधिकार मेरे पास है और यह [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0] के अंतर्गत है, व [https://wikimediafoundation.org/wiki/Terms_of_Use विकि उपयोग की शर्तों] का भी पालन करता है।",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "यदि आपके पास इस फ़ाइल का प्रतिकृति अधिकार नहीं है और आप इसे किसी और अधिकार के तहत प्रदर्शित करना चाहते हैं तो आप [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Upload Wizard] का उपयोग करें।",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "यदि आप चाहें तो आप [[Special:Upload|{{SITENAME}} के पृष्ठ]] पर फ़ाइल डाल सकते हैं, यदि यह फ़ाइल वहाँ के नियम के अंतर्गत हो तो।",
-       "foreign-structured-upload-form-3-label-question-website": "क्या आपने यह छवि किसी जालस्थल (वेबसाइट) से ली है, या छवि खोज के द्वारा प्राप्त की है?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "क्या आपने इस छवि का निर्माण (आपके द्वारा खिचा हुआ, चित्रकारी, आदि) किया है?",
-       "foreign-structured-upload-form-3-label-yes": "हाँ",
-       "foreign-structured-upload-form-3-label-no": "नहीं",
        "backend-fail-stream": "फ़ाइल $1 स्ट्रीम नहीं हो पाई।",
        "backend-fail-backup": "फ़ाइल $1 बैकअप नहीं हो पाई।",
        "backend-fail-notexists": "फ़ाइल $1 मौजूद नहीं है।",
index a3dbd5c..16dccb2 100644 (file)
        "rcshowhidemine-show": "prikaži",
        "rcshowhidemine-hide": "sakrij",
        "rcshowhidecategorization": "$1 kategorizaciju stranica",
-       "rcshowhidecategorization-show": "Prikaži",
+       "rcshowhidecategorization-show": "prikaži",
        "rcshowhidecategorization-hide": "Sakrij",
        "rclinks": "Prikaži posljednjih $1 promjena {{PLURAL:$2|prethodni dan|u posljednja $2 dana|u posljednjih $2 dana}}<br />$3",
        "diff": "razl",
        "upload-dialog-button-done": "Gotovo",
        "upload-dialog-button-save": "Spremi",
        "upload-dialog-button-upload": "Postavi",
-       "upload-form-label-select-file": "Odaberi datoteku",
        "upload-form-label-infoform-title": "Detalji",
        "upload-form-label-infoform-name": "Ime",
        "upload-form-label-infoform-description": "Opis",
        "foreign-structured-upload-form-label-own-work-message-shared": "Potvrđujem da posjedujem autorska prava ove datoteke i slažem se da je nepozivo postavljam na Zajednički poslužitelj pod licencijom  [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0], i pristajem na [https://wikimediafoundation.org/wiki/Terms_of_Use Uvjete uporabe].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Ako ne posjedujete autorska prava za ovu datoteku, ili je želite objaviti pod drugom licencijom, razmislite o uporabi [https://commons.wikimedia.org/wiki/Special:UploadWizard Čarobnjaka za postavljanje] na Zajedničkom poslužitelju.",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Možete pokušati [[Special:Upload|postaviti datoteku na projektu {{SITENAME}}]], pod uvjetom da je dopušteno postavljanje ove datoteke, sukladno pravilima projekta.",
-       "foreign-structured-upload-form-3-label-yes": "Da",
        "backend-fail-stream": "Ne mogu prikazati datoteku $1.",
        "backend-fail-backup": "Izrada sigurnosne kopije datoteke \"$1\" nije uspjela.",
        "backend-fail-notexists": "Datoteka $1 ne postoji.",
index b4a6817..5e7313f 100644 (file)
        "botpasswords-bad-appid": "A(z) „$1” botnév érvénytelen.",
        "botpasswords-insert-failed": "A(z) „$1” botnév hozzáadása sikertelen. Nem lehet, hogy már hozzá lett adva?",
        "botpasswords-created-title": "Botjelszó létrehozva",
+       "botpasswords-created-body": "Bot jelszó \"$1\" sikeresen létrehozva.",
        "botpasswords-updated-title": "Botjelszó frissítve",
+       "botpasswords-updated-body": "Bot jelszó \"$1\" frissítése sikerült.",
        "botpasswords-deleted-title": "Botjelszó törölve",
+       "botpasswords-deleted-body": "Bot jelszó \"$1\" törölve.",
        "botpasswords-no-provider": "A BotPasswordsSessionProvider nem áll rendelkezésre.",
        "resetpass_forbidden": "A jelszavak nem változtathatók meg",
        "resetpass-no-info": "Be kell jelentkezned, hogy közvetlenül elérd ezt a lapot.",
        "previewnote": "'''Ne feledd, hogy ez csak egy előnézet.''' A változtatásaid még nincsenek elmentve!",
        "continue-editing": "Szerkesztés folytatása",
        "previewconflict": "Ez az előnézet a felső szerkesztődobozban levő szöveg mentés utáni megfelelőjét mutatja.",
-       "session_fail_preview": "<strong>Az elveszett munkamenetadatok miatt sajnos nem tudtuk feldolgozni a szerkesztésedet.</strong>\nKérjük, próbálkozz újra!\nAmennyiben továbbra sem sikerül, próbálj meg [[Special:UserLogout|kijelentkezni]], majd ismét bejelentkezni!",
-       "session_fail_preview_html": "'''Az elveszett munkamenetadatok miatt nem tudtuk feldolgozni a szerkesztésedet.'''\n\n''Mivel a wikiben engedélyezett a nyers HTML-kód használata, az előnézet el van rejtve a JavaScript-alapú támadások megakadályozása céljából.''\n\n'''Ha ez egy normális szerkesztési kísérlet, akkor próbálkozz újra. Amennyiben továbbra sem sikerül, próbálj meg [[Special:UserLogout|kijelentkezni]], majd ismét bejelentkezni!''' (a változtatásaidat mentsd el magadnak, különben elvesznek!)",
+       "session_fail_preview": "Az elveszett munkamenetadatok miatt sajnos nem tudtuk feldolgozni a szerkesztésedet.\nLehet, hogy ki vagy jelentkezve. <strong>Kérjük, győződj meg róla, hogy még mindig be vagy jelentkezve, majd próbálkozz újra!</strong>\nAmennyiben továbbra sem sikerül, próbálj meg [[Special:UserLogout|kijelentkezni]], majd ismét bejelentkezni, és ellenőrizd, hogy a böngésződ elfogad sütiket erről az oldalról!",
+       "session_fail_preview_html": "<strong>Az elveszett munkamenetadatok miatt nem tudtuk feldolgozni a szerkesztésedet.</strong>\n\n<em>Mivel a wikiben engedélyezett a nyers HTML-kód használata, az előnézet el van rejtve a JavaScript-alapú támadások megakadályozása céljából.</em>\n\n<strong>Ha ez egy normális szerkesztési kísérlet, akkor próbálkozz újra.</strong>\nAmennyiben továbbra sem sikerül, próbálj meg [[Special:UserLogout|kijelentkezni]], majd ismét bejelentkezni, és ellenőrizd, hogy a böngésződ elfogad sütiket erről az oldalról!",
        "token_suffix_mismatch": "<strong>A szerkesztésedet elutasítottuk, mert a kliensprogramod megváltoztatta a központozó karaktereket\na szerkesztési tokenben.</strong>\nA szerkesztés azért lett visszautasítva, hogy megelőzzük a lap szövegének sérülését.\nEz a probléma akkor fordulhat elő, ha hibás web-alapú proxyszolgáltatást használsz.",
        "edit_form_incomplete": "'''A szerkesztési űrlap egyes részei nem érkeztek meg a szerverre; ellenőrizd, hogy a szerkesztés sértetlen-e, majd próbáld újra.'''",
        "editing": "$1 szerkesztése",
        "permissionserrors": "Engedélyezési hiba",
        "permissionserrorstext": "A művelet elvégzése nem engedélyezett a számodra, a következő {{PLURAL:$1|ok|okok}} miatt:",
        "permissionserrorstext-withaction": "Nincs jogosultságod a következő művelet elvégzéséhez: $2, a következő {{PLURAL:$1|ok|okok}} miatt:",
+       "contentmodelediterror": "Nem szerkesztheted ezt a változatot, mert a tartalommodellje <code>$1</code>, ami eltér a jelenlegitől (<code>$2</code>).",
        "recreate-moveddeleted-warn": "'''Figyelem! Olyan lapot készülsz létrehozni, amit már legalább egyszer töröltek.'''\n\nMielőtt létrehoznád, nézd meg, miért törölték a lap korábbi tartalmát, és győződj meg róla, hogy a törlés indoka érvényes-e még. A törlési és átnevezési naplókban az érintett lapról az alábbi bejegyzések szerepelnek:",
        "moveddeleted-notice": "Az oldal korábban törölve lett.\nA lap törlési és átnevezési naplója alább olvasható.",
        "moveddeleted-notice-recent": "Sajnáljuk, az oldalt nemrég törölték (az elmúlt 24 órában).\nA részletekért lásd lentebb a törlési és átnevezési naplót.",
        "mergehistory-empty": "Nincs egyesíthető változás.",
        "mergehistory-done": "$1 $3 változata sikeresen egyesítve lett a(z) [[:$2]] lappal.",
        "mergehistory-fail": "Nem sikerült a laptörténetek egyesítése. Kérlek, ellenőrizd újra az oldalt és a megadott időparamétereket.",
+       "mergehistory-fail-bad-timestamp": "Érvénytelen időbélyeg.",
+       "mergehistory-fail-invalid-source": "Érvénytelen forráslap.",
+       "mergehistory-fail-invalid-dest": "Érvénytelen céllap.",
+       "mergehistory-fail-self-merge": "A forrás- és céllap megegyezik.",
        "mergehistory-fail-toobig": "Nem lehetséges a laptörténetek egyesítése, mivel több mint $1 {{PLURAL:$1|változást}} kellene áthelyezni.",
        "mergehistory-no-source": "Nem létezik forráslap $1 néven.",
        "mergehistory-no-destination": "Nem létezik céllap $1 néven.",
        "showingresultsinrange": "Lent <strong>$1</strong> találat látható ($2–$3.)",
        "search-showingresults": "{{PLURAL:$4|<strong>$1.</strong> a(z) <strong>$3</strong> találatból|<strong>$1–$2.</strong> a(z) <strong>$3</strong> találatból}}",
        "search-nonefound": "Nincs egyezés a megadott szöveggel.",
+       "search-nonefound-thiswiki": "Nincs egyezés a megadott szöveggel ezen a wikin.",
        "powersearch-legend": "Részletes keresés",
        "powersearch-ns": "Névterek:",
        "powersearch-togglelabel": "Megjelölés:",
        "prefs-help-recentchangescount": "Ez vonatkozik a friss változtatásokra, laptörténetekre és naplókra is.",
        "prefs-help-watchlist-token2": "Ez a titkos kulcs a figyelőlistádhoz.\nAki ismeri, meg tudja nézni, milyen lapokat figyelsz, úgyhogy ne oszdd meg másokkal.\n[[Special:ResetTokens|Kattints ide, ha meg akarod változtatni]].",
        "savedprefs": "Az új beállításaid érvénybe léptek.",
+       "savedrights": "$1 felhasználói jogai el lettek mentve.",
        "timezonelegend": "Időzóna:",
        "localtime": "Helyi idő:",
        "timezoneuseserverdefault": "Az alapértelmezett beállítás használata ($1)",
        "right-editusercssjs": "más felhasználók CSS és JS fájljainak szerkesztése",
        "right-editusercss": "más felhasználók CSS fájljainak szerkesztése",
        "right-edituserjs": "más felhasználók JS fájljainak szerkesztése",
-       "right-editmyusercss": "saját szerkesztői CSS-fájlok szerkesztése",
+       "right-editmyusercss": "Saját szerkesztői CSS-fájlok szerkesztése",
        "right-editmyuserjs": "saját szerkesztői JavaScript-fájlok szerkesztése",
        "right-viewmywatchlist": "saját figyelőlista megtekintése",
        "right-editmywatchlist": "saját figyelőlista szerkesztése; bizonyos műveletek képesek lapok figyelőlistához adására ezen jog nélkül is",
        "right-applychangetags": "[[Special:Tags|címkék]] alkalmazása a változakra",
        "right-changetags": "egyedi lapváltozatokon és naplóbejegyzéseken tetszőleges [[Special:Tags|címkék]] hozzáadása és törlése",
        "grant-generic": "„$1” jogosultságcsomag",
+       "grant-group-page-interaction": "interakció lapokkal",
+       "grant-group-file-interaction": "interakció médiával",
+       "grant-group-watchlist-interaction": "interakció a figyelőlistáddal",
        "grant-group-email": "E-mail küldése",
        "grant-group-high-volume": "Nagy mennyiségű szerkesztés végrehajtása",
        "grant-group-customization": "Személyre szabás és beállítások",
        "rcshowhidemine": "saját szerkesztések $1",
        "rcshowhidemine-show": "megjelenítése",
        "rcshowhidemine-hide": "elrejtése",
+       "rcshowhidecategorization": "lapok kategorizálásának $1",
+       "rcshowhidecategorization-show": "megjelenítése",
+       "rcshowhidecategorization-hide": "elrejtése",
        "rclinks": "Az elmúlt $2 nap utolsó $1 változtatása legyen látható<br />$3",
        "diff": "eltér",
        "hist": "történet",
        "newpageletter": "Ú",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[Jelenleg {{PLURAL:$1|egy|$1}} felhasználó figyeli]",
-       "rc_categories": "Szűkítés kategóriákra („|” jellel válaszd el őket)",
+       "rc_categories": "Szűkítés kategóriákra („|” jellel válaszd el őket):",
        "rc_categories_any": "Választottak közül bármelyik",
        "rc-change-size-new": "$1 bájt módosítás után",
        "newsectionsummary": "/* $1 */ (új szakasz)",
        "upload-options": "Feltöltési beállítások",
        "watchthisupload": "Fájl figyelése",
        "filewasdeleted": "Korábban valaki már feltöltött ilyen néven egy fájlt, amelyet később töröltünk. Ellenőrizd a $1 bejegyzését, nehogy újra feltöltsd ugyanezt a fájlt.",
+       "filename-thumb-name": "Ez bélyegkép-fájlnévnek tűnik. Ne tölts vissza bélyegképeket ugyanarra a wikire. Ha nem erről van szó, akkor javítsd ki a fájlnevet informatívabbra, ami nem tartalmazza a bélyegkép-előtagot.",
        "filename-bad-prefix": "Annak a fájlnak a neve, amelyet fel akarsz tölteni '''„$1”''' karakterekkel kezdődik. Ilyeneket általában a digitális kamerák adnak a fájloknak, automatikusan, azonban ezek nem írják le annak tartalmát. Válassz egy leíró nevet!",
        "filename-prefix-blacklist": " #<!-- ezt a sort hagyd így --> <pre>\n#A szintaktika a következő:\n#   * Minden a „#” karaktertől a sor végéig megjegyzésnek számít\n#   * Minden nemüres sor egy, a digitális fényképezőképek által fájlok neveként használt előtag\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # néhány mobiltelefon\nIMG # általános\nJD # Jenoptik\nMGP # Pentax\nPICT # ált.\n #</pre> <!-- ezt a sort hagyd így -->",
        "upload-proto-error": "Hibás protokoll",
        "upload-dialog-button-done": "Kész",
        "upload-dialog-button-save": "Mentés",
        "upload-dialog-button-upload": "Feltöltés",
-       "upload-form-label-select-file": "Fájl kiválasztása",
        "upload-form-label-infoform-title": "Részletek",
        "upload-form-label-infoform-name": "Név",
+       "upload-form-label-infoform-name-tooltip": "Egy egyedi, leíró cím a fájlnak, ami fájlnévként fog szolgálni. Egyszerű nyelvezetet használhatsz szóközökkel. Ne tedd bele a kiterjesztést.",
        "upload-form-label-infoform-description": "Leírás",
+       "upload-form-label-infoform-description-tooltip": "Röviden írj le minden említésre méltót a műről.\nFénykép esetén említsd meg a főbb látható dolgokat, a készítés alkalmát vagy helyszínét.",
        "upload-form-label-usage-title": "Használat",
        "upload-form-label-usage-filename": "Fájlnév",
        "foreign-structured-upload-form-label-own-work": "Ez a saját munkám",
        "foreign-structured-upload-form-label-infoform-categories": "Kategóriák",
        "foreign-structured-upload-form-label-infoform-date": "Dátum",
+       "foreign-structured-upload-form-label-own-work-message-local": "Kijelentem, hogy a fájlt a(z) {{SITENAME}} következő felhasználási feltételei és licencirányelvei alapján töltöm fel.",
+       "foreign-structured-upload-form-label-not-own-work-message-local": "Ha nem tudod feltölteni a fájlt a(z) {{SITENAME}} irányelvei értelmében, zárd be ezt a panelt és próbálkozz egy másik módszerrel.",
        "foreign-structured-upload-form-label-not-own-work-local-local": "Az [[Special:Upload|alapértelmezett feltöltőoldalt]] is kipróbálhatod.",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Te magad hoztad lére ezt a képet (te fényképezted, rajzoltad stb.)?",
-       "foreign-structured-upload-form-3-label-yes": "Igen",
-       "foreign-structured-upload-form-3-label-no": "Nem",
+       "foreign-structured-upload-form-label-own-work-message-default": "Megértettem, hogy a megosztott tárhelyre töltöm fel a fájlt. Kijelentem, hogy az ottani felhasználási feltételek és licencirányelvek szerint teszem ezt.",
+       "foreign-structured-upload-form-label-not-own-work-message-default": "Ha nem tudod feltölteni a fájlt a megosztott tárhely irányelvei értelmében, zárd be ezt a panelt és próbálkozz egy másik módszerrel.",
+       "foreign-structured-upload-form-label-not-own-work-local-default": "Megpróbálhatod használni [[Special:Upload|a(z) {{SITENAME}} feltöltési lapját]] is, ha ezt a fájlt fel lehet tölteni az itteni irányelvek szerint.",
+       "foreign-structured-upload-form-label-own-work-message-shared": "Igazolom, hogy én birtoklom a fájl szerzői jogait, és egyetértek azzal, hogy visszavonhatatlanul közzéteszem a fájlt a Wikimédia Commonson a [https://creativecommons.org/licenses/by-sa/4.0/deed.hu Creative Commons Nevezd meg! – Így add tovább! 4.0] licenc alatt, és egyetértek a [https://wikimediafoundation.org/wiki/Terms_of_Use felhasználási feltételekkel].",
+       "foreign-structured-upload-form-label-not-own-work-message-shared": "Ha nem birtoklod a fájl szerzői jogait vagy más licenc alatt szeretnéd közzétenni, fontold meg a [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Feltöltésvarázslójának] használatát.",
+       "foreign-structured-upload-form-label-not-own-work-local-shared": "Megpróbálhatod használni [[Special:Upload|a(z) {{SITENAME}} feltöltési lapját]] is, ha ezt a fájlt fel lehet tölteni az itteni irányelvek szerint.",
        "backend-fail-stream": "Nem sikerült sugározni ezt a fájlt: $1.",
        "backend-fail-backup": "Nem lehet elmenteni ezt a fájlt: $1.",
        "backend-fail-notexists": "Ez a fájl nem létezik: $1 .",
        "mostrevisions": "Legtöbbet szerkesztett lapok",
        "prefixindex": "Keresés előtag szerint",
        "prefixindex-namespace": "Összes lap adott előtaggal ($1 névtér)",
+       "prefixindex-submit": "Mutat",
        "prefixindex-strip": "Előtag eltüntetése a listában",
        "shortpages": "Rövid lapok",
        "longpages": "Hosszú lapok",
        "protectedpages-performer": "A levédést végrehajtó szerkesztő",
        "protectedpages-params": "A védelem paraméterei",
        "protectedpages-reason": "Indoklás",
+       "protectedpages-submit": "Lapok mutatása",
        "protectedpages-unknown-timestamp": "Ismeretlen",
        "protectedpages-unknown-performer": "Ismeretlen felhasználó",
        "protectedtitles": "Létrehozás ellen védett lapok",
        "protectedtitles-summary": "Az alábbi speciális lap listázza azokat a nem létező címeket, melyeket létrehozás ellen védtek le az adminisztrátorok, ellentétben azokkal a [[{{#special:ProtectedPages}}|létező lapokkal]], melyeket módosítás ellen védtek le.",
        "protectedtitlesempty": "Jelenleg nincsenek ilyen típusú védett lapok.",
+       "protectedtitles-submit": "Leírások mutatása",
        "listusers": "Szerkesztők",
        "listusers-editsonly": "Csak a szerkesztéssel rendelkező szerkesztők mutatása",
        "listusers-creationsort": "Rendezés létrehozási dátum szerint",
        "usereditcount": "{{PLURAL:$1|egy|$1}} szerkesztés",
        "usercreated": "{{GENDER:$3|Létrehozva}} $1, $2-kor",
        "newpages": "Új lapok",
+       "newpages-submit": "Mutat",
        "newpages-username": "Felhasználói név:",
        "ancientpages": "Régóta nem változott szócikkek",
        "move": "Átnevezés",
        "apisandbox-dynamic-parameters-add-placeholder": "Paraméter neve",
        "apisandbox-dynamic-error-exists": "A(z) „$1” nevű paraméter már létezik.",
        "apisandbox-deprecated-parameters": "Elavult paraméterek",
+       "apisandbox-submit-invalid-fields-title": "Egyes mezők érvénytelenek",
+       "apisandbox-submit-invalid-fields-message": "Javítsd ki a jelzett mezőket, és próbáld újra.",
        "apisandbox-results": "Eredmények",
+       "apisandbox-sending-request": "API-kérés küldése…",
+       "apisandbox-loading-results": "API-válaszok fogadása…",
        "apisandbox-request-url-label": "Kérő URL:",
-       "apisandbox-request-time": "Kérés ideje: $1",
+       "apisandbox-request-time": "Kérés hossza: $1 ms",
        "booksources": "Könyvforrások",
        "booksources-search-legend": "Könyvforrások keresése",
        "booksources-search": "Keresés",
        "specialloguserlabel": "Szerkesztő:",
        "speciallogtitlelabel": "Cél (cím vagy felhasználó):",
        "log": "Rendszernaplók",
+       "logeventslist-submit": "Mutat",
        "all-logs-page": "Minden nyilvános napló",
        "alllogstext": "A(z) {{SITENAME}} naplóinak összesített listája.\nA naplótípus, a felhasználónév (kis- és nagybetűérzékeny) vagy az érintett lap kiválasztásával (ez is kis- és nagybetűérzékeny) szűkítheted a találatok listáját.",
        "logempty": "Nincs illeszkedő naplóbejegyzés.",
        "log-title-wildcard": "Így kezdődő címek keresése",
        "showhideselectedlogentries": "Kijelölt napló bejegyzések megjelenítése/elrejtése",
        "log-edit-tags": "Kiválasztott napló címkék szerkesztése",
+       "checkbox-select": "Kiválasztás: $1",
+       "checkbox-all": "Mind",
+       "checkbox-none": "Nincs",
+       "checkbox-invert": "Megfordítás",
        "allpages": "Az összes lap listája",
        "nextpage": "Következő lap ($1)",
        "prevpage": "Előző lap ($1)",
        "cachedspecial-viewing-cached-ts": "Az oldal tárolt változatát látod, ami eltérhet az aktuálistól.",
        "cachedspecial-refresh-now": "A legfrissebb változat megjelenítése.",
        "categories": "Kategóriák",
+       "categories-submit": "Mutat",
        "categoriespagetext": "A következő {{PLURAL:$1|kategória tartalmaz|kategóriák tartalmaznak}} lapokat vagy fájlokat.\nA [[Special:UnusedCategories|nem használt kategóriák]] nem jelennek meg.\nLásd még a [[Special:WantedCategories|keresett kategóriák]] listáját.",
        "categoriesfrom": "Kategóriák listázása a következő névtől kezdve:",
        "special-categories-sort-count": "rendezés elemszám szerint",
        "wlshowhidebots": "botok",
        "wlshowhideliu": "bejelentkezett felhasználók",
        "wlshowhideanons": "névtelen felhasználók",
+       "wlshowhidepatr": "ellenőrzött szerkesztések",
        "wlshowhidemine": "saját szerkesztéseim",
-       "wlshowhidecategorization": "kategóriaváltozások",
+       "wlshowhidecategorization": "oldal kategorizálása",
        "watchlist-options": "A figyelőlista beállításai",
        "watching": "Figyelés...",
        "unwatching": "Figyelés befejezése...",
        "delete-confirm": "$1 törlése",
        "delete-legend": "Törlés",
        "historywarning": "<strong>Figyelem:</strong> a lapnak, amit törölni készülsz, $1 változattal rendelkező laptörténete van:",
+       "historyaction-submit": "Mutat",
        "confirmdeletetext": "Egy lapot vagy fájlt készülsz törölni a teljes laptörténetével együtt.\nKérjük, erősítsd meg, hogy valóban ezt szeretnéd tenni, átlátod a következményeit, és hogy a műveletet a [[{{MediaWiki:Policy-url}}|törlési irányelvekkel]] összhangban végzed.",
        "actioncomplete": "Művelet végrehajtva",
        "actionfailed": "A művelet nem sikerült",
        "export-download": "A fájlban történő mentés felkínálása",
        "export-templates": "Sablonok hozzáadása",
        "export-pagelinks": "Hivatkozott lapok hozzáadása, eddig a szintig:",
+       "export-manual": "Oldalak hozzáadása kézzel:",
        "allmessages": "Rendszerüzenetek",
        "allmessagesname": "Név",
        "allmessagesdefault": "Alapértelmezett szöveg",
        "newimages-legend": "Fájlnév",
        "newimages-label": "Fájlnév (vagy annak részlete):",
        "newimages-showbots": "Botos feltöltések mutatása",
+       "newimages-hidepatrolled": "Ellenőrzött szerkesztések elrejtése",
        "noimages": "Nem tekinthető meg semmi.",
        "ilsubmit": "Keresés",
        "bydate": "dátum szerint",
        "exif-compression-4": "CCITT Group 4 fax kódolás",
        "exif-copyrighted-true": "Szerzői jog által védett",
        "exif-copyrighted-false": "Szerzői jogi állapot nincs beállítva",
+       "exif-photometricinterpretation-1": "Fekete és fehér (Fekete 0)",
        "exif-unknowndate": "Ismeretlen dátum",
        "exif-orientation-1": "Normál",
        "exif-orientation-2": "Vízszintesen tükrözött",
        "watchlisttools-edit": "A figyelőlista megtekintése és szerkesztése",
        "watchlisttools-raw": "A nyers figyelőlista szerkesztése",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|vita]])",
+       "timezone-local": "Helyi",
        "duplicate-defaultsort": "Figyelem: a(z) „$2” rendezőkulcs felülírja a korábbit („$1”).",
        "duplicate-displaytitle": "<strong>Figyelmeztetés:</strong> A lapcímváltoztató (<tt>DISPLAYTITLE</tt>) „$2” felülírja a korábbi „$1”-t.",
        "invalid-indicator-name": "<strong>Hiba:</strong> A lapstátuszjelző <code>name</code> attribútuma nem lehet üres.",
index 4128cc0..e68c47a 100644 (file)
                        "GeoO",
                        "Դավիթ Սարոյան",
                        "Beko",
-                       "Vahe Gharakhanyan"
+                       "Vahe Gharakhanyan",
+                       "Aram1985"
                ]
        },
        "tog-underline": "ընդգծել հղումները՝",
        "tog-hideminor": "Թաքցնել չնչին խմբագրումները վերջին փոփոխությունների ցանկից",
        "tog-hidepatrolled": "Թաքցնել պարեկված խմբագրումները վերջին փոփոխությունների ցանկից",
        "tog-newpageshidepatrolled": "Թաքցնել պարեկված էջերը նոր էջերի ցանկից",
+       "tog-hidecategorization": "Թաքցնել էջերի կատեգորիզացիան",
        "tog-extendwatchlist": "Ընդարձակել հսկացանկը՝ ցույց տալով բոլոր փոփոխությունները, այլ ոչ միայն վերջինները",
        "tog-usenewrc": "Խմբավորել փոփոխությունները վերջին փոփոխություններում և հսկացանկում (պահանջում է JavaScript)",
        "tog-numberheadings": "Ինքնաթվագրել վերնագրերը",
        "tog-watchdefault": "Ավելացնել իմ խմբագրած էջերը և նիշքերը իմ հսկացանկում",
        "tog-watchmoves": "Ավելացնել իմ վերնավանած էջերը և նիշքերը իմ հսկացանկում",
        "tog-watchdeletion": "Ավելացնել իմ ջնջած էջերը և նիշքերը իմ հսկացանկում",
+       "tog-watchrollback": "Իմ հետ շրջած էջերն ավելացնել իմ հսկացանկում",
        "tog-minordefault": "Բոլոր խմբագրումները լռելյայն կերպով նշել որպես չնչին",
        "tog-previewontop": "Ցույց տալ նախադիտումը խմբագրման դաշտից առաջ",
        "tog-previewonfirst": "Ցուցադրել նախադիտումը մինչև առաջին խմբագրումը",
-       "tog-enotifwatchlistpages": "էլ-փոստով տեղեկացնել հսկվող էջերում փոփոխությունների մասին",
+       "tog-enotifwatchlistpages": "էլ-փոստով տեղեկացնել հսկվող էջերում կամ նիշքերում փոփոխությունների մասին",
        "tog-enotifusertalkpages": "էլ-փոստով տեղեկացնել իմ քննարկման էջի փոփոխության մասին",
        "tog-enotifminoredits": "էլ-փոստով տեղեկացնել նաև էջերի չնչին խմբագրումների մասին",
        "tog-enotifrevealaddr": "Ցույց տալ իմ էլ-փոստի հասցեն ծանուցման նամակներում",
        "tog-shownumberswatching": "Ցույց տալ հսկող մասնակիցների թիվը",
        "tog-oldsig": "Ընթացիկ ստորագրությունը՝",
        "tog-fancysig": "Ստորագրությունը վիքիտեքստի տեսքով (առանց ավտոմատ հղման)",
-       "tog-uselivepreview": "Օգտագործել անմիջական նախադիտում, առանց էջը վերբեռնելու",
+       "tog-uselivepreview": "Օգտագործել անմիջական նախադիտում",
        "tog-forceeditsummary": "Նախազգուշացնել խմբագրման ամփոփումը դատարկ թողնելու դեպքում",
        "tog-watchlisthideown": "Թաքցնել իմ խմբագրումները հսկացանկից",
        "tog-watchlisthidebots": "Թաքցնել բոտերի խմբագրումները հսկացանկից",
        "tog-watchlisthideminor": "Թաքցնել չնչին խմբագրումները հսկացանկից",
        "tog-watchlisthideliu": "Թաքցնել մուտք գործած մասնակիցների խմբագրումները հսկացանկից",
+       "tog-watchlistreloadautomatically": "Ֆիլտրի ամեն փոփոխության դեպքում ինքնաշխատ կերպով վերբեռնել հսկացանկը (անհրաժեշտ է JavaScript)",
        "tog-watchlisthideanons": "Թաքցնել անանուն մասնակիցների խմբագրումները հսկացանկից",
        "tog-watchlisthidepatrolled": "Թաքցնել պարեկված խմբագրումները հսկացանկից",
-       "tog-ccmeonemails": "Ուղարկել ինձ իմ կողմից մյուս մասնակիցներին ուղարկված նամակների պատճեններ",
+       "tog-watchlisthidecategorization": "Թաքցնել էջերի կատեգորիզացիան",
+       "tog-ccmeonemails": "Ուղարկել ինձ մյուս մասնակիցներին ուղարկված իմ նամակների պատճենները",
        "tog-diffonly": "Չցուցադրել էջի պարունակությունը տարբերությունների ներքևից",
        "tog-showhiddencats": "Ցուցադրել թաքնված կատեգորիաները",
        "tog-norollbackdiff": "Չցուցադրել տարբերությունները հետ գլորելուց հետո",
        "october-gen": "Հոկտեմբերի",
        "november-gen": "Նոյեմբերի",
        "december-gen": "Դեկտեմբերի",
-       "jan": "Õ°Õ¸Ö\82Õ¶Õ¾",
-       "feb": "փետ",
-       "mar": "Õ´Õ¡Ö\80",
-       "apr": "ապր",
-       "may": "Õ´Õ¡Õµ",
-       "jun": "Õ°Õ¸Ö\82Õ¶",
-       "jul": "Õ°Õ¸Ö\82Õ¬",
-       "aug": "օգո",
-       "sep": "սեպ",
-       "oct": "հոկ",
-       "nov": "նոյ",
-       "dec": "դեկ",
+       "jan": "Õ\80Õ¸Ö\82Õ¶Õ¾.",
+       "feb": "Փետրվ.",
+       "mar": "Õ\84Ö\80Õ¿",
+       "apr": "Ապր.",
+       "may": "Õ\84Õ¡Õµ.",
+       "jun": "Õ\80Õ¸Ö\82Õ¶.",
+       "jul": "Õ\80Õ¸Ö\82Õ¬.",
+       "aug": "օգոստ.",
+       "sep": "սեպտ.",
+       "oct": "հոկտ.",
+       "nov": "նոյ.",
+       "dec": "դեկտ.",
        "january-date": "Հունվարի $1",
        "february-date": "Փետրվարի $1",
        "march-date": "Մարտի $1",
        "category-file-count-limited": "Այս կատեգորիան պարունակում է հետևյալ {{PLURAL:$1|նիշքը|$1 նիշքերը}}։",
        "listingcontinuesabbrev": "շարունակ.",
        "index-category": "Ինդեքսավորված էջեր",
-       "noindex-category": "Ինդեքսավորված էջեր չկան",
+       "noindex-category": "Չինդեքսավորված էջեր",
        "broken-file-category": "Կոտրված ֆայլի հղումով էջեր",
        "about": "Նախագծի մասին",
        "article": "Հոդված",
-       "newwindow": "(Õ¢Õ¡Ö\81Õ¾Õ¥Õ¬Õ¸Ö\82 Õ§ Õ¶Õ¸Ö\80 ÕºÕ¡Õ¿Õ¸Ö\82Õ°Õ¡Õ¶Õ« Õ´Õ¥Õ»)",
-       "cancel": "Բեկանել",
+       "newwindow": "(Õ¢Õ¡Ö\81Õ¾Õ¸Ö\82Õ´ Õ§ Õ¶Õ¸Ö\80 ÕºÕ¡Õ¿Õ¸Ö\82Õ°Õ¡Õ¶Õ¸Ö\82Õ´)",
+       "cancel": "Չեղարկել",
        "moredotdotdot": "Ավելին...",
-       "morenotlisted": "Ô±ÕµÕ½ Ö\81Õ¡Õ¶Õ¯Õ¨ Õ¬Õ«Õ¡Ö\80ÕªÕ¥Ö\84 չէ։",
-       "mypage": "Ô»Õ´ Õ§Õ»Õ¨",
+       "morenotlisted": "Ô±ÕµÕ½ Ö\81Õ¡Õ¶Õ¯Õ¶ Õ¡Õ¾Õ¡Ö\80Õ¿Õ¸Ö\82Õ¶ չէ։",
+       "mypage": "Ô·Õ»",
        "mytalk": "Քննարկում",
        "anontalk": "Քննարկում այս IP-հասցեի համար",
        "navigation": "Շրջել կայքում",
        "and": "&#32;և",
        "qbfind": "Գտնել",
-       "qbbrowse": "Ô¹Õ¥Ö\80Õ©ել",
+       "qbbrowse": "Ô´Õ«Õ¿Õ¡Ö\80Õ¯ել",
        "qbedit": "Խմբագրել",
        "qbpageoptions": "Այս էջը",
        "qbmyoptions": "Իմ էջերը",
        "actions": "Գործողություններ",
        "namespaces": "Անվանատարածքներ",
        "variants": "Տարբերակներ",
-       "navigation-heading": "Õ\86Õ¡Õ¾Õ«Õ£Õ¡Ö\81Õ«Õ¸ն ցանկ",
+       "navigation-heading": "Õ\86Õ¡Õ¾Õ¡Ö\80Õ¯Õ´Õ¡ն ցանկ",
        "errorpagetitle": "Սխալ",
-       "returnto": "Վերադառնալ $1։",
+       "returnto": "Վերադարձ դեպի $1։",
        "tagline": "{{SITENAME}}-ից",
        "help": "Օգնություն",
        "search": "Որոնում",
        "view": "Դիտել",
        "view-foreign": "Նայել $1-ում",
        "edit": "Խմբագրել",
-       "edit-local": "Ô½Õ´Õ¢Õ¡Õ£Ö\80Õ¥Õ¬ Õ¿Õ¥Õ²Õ¡Õ¯Õ¡ն նկարագրությունը",
+       "edit-local": "Ô½Õ´Õ¢Õ¡Õ£Ö\80Õ¥Õ¬ Õ¿Õ¥Õ²Õ¡ÕµÕ«ն նկարագրությունը",
        "create": "Ստեղծել",
        "create-local": "Ավելացնել տեղային նկարագիր",
        "editthispage": "Խմբագրել այս էջը",
        "protect": "Պաշտպանել",
        "protect_change": "փոխել",
        "protectthispage": "Պաշտպանել այս էջը",
-       "unprotect": "Õ\93Õ¸Õ­Õ¥Õ¬ ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ¸Ö\82Õ´ը",
-       "unprotectthispage": "Õ\93Õ¸Õ­Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ« ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ¸Ö\82Õ´ը",
+       "unprotect": "Õ\93Õ¸Õ­Õ¥Õ¬ ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ¸Ö\82Õ©ÕµÕ¸Ö\82Õ¶ը",
+       "unprotectthispage": "Õ\93Õ¸Õ­Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ« ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ¸Ö\82Õ©ÕµÕ¸Ö\82Õ¶ը",
        "newpage": "Նոր էջ",
        "talkpage": "Քննարկել այս էջը",
        "talkpagelinktext": "Քննարկում",
-       "specialpage": "Õ\8dÕºÕ¡Õ½Õ¡Ö\80Õ¯Õ¸Õ² էջ",
+       "specialpage": "Õ\80Õ¡Õ¿Õ¸Ö\82Õ¯ էջ",
        "personaltools": "Անձնական գործիքներ",
-       "articlepage": "Ô´Õ«Õ¿Õ¥Õ¬ Õ°Õ¸Õ¤Õ¾Õ¡Õ®ը",
+       "articlepage": "Ô´Õ«Õ¿Õ¥Õ¬ Õ§Õ»Õ« ÕºÕ¡Ö\80Õ¸Ö\82Õ¶Õ¡Õ¯Õ¸Ö\82Õ©ÕµÕ¸Ö\82Õ¶ը",
        "talk": "Քննարկում",
        "views": "Դիտումները",
        "toolbox": "Գործիքներ",
        "userpage": "Դիտել մասնակցի էջը",
        "projectpage": "Դիտել նախագծի էջը",
        "imagepage": "Դիտել նիշքի էջը",
-       "mediawikipage": "Ô´Õ«Õ¿Õ¥Õ¬ Õ¸Ö\82Õ²Õ¥Ö\80Õ±Õ« էջը",
+       "mediawikipage": "Ô´Õ«Õ¿Õ¥Õ¬ Õ°Õ¡Õ²Õ¸Ö\80Õ¤Õ¡Õ£Ö\80Õ¸Ö\82Õ©ÕµÕ¡Õ¶ էջը",
        "templatepage": "Դիտել կաղապարի էջը",
        "viewhelppage": "Դիտել օգնության էջը",
        "categorypage": "Դիտել կատեգորիայի էջը",
        "otherlanguages": "Այլ լեզուներով",
        "redirectedfrom": "(Վերահղված է $1ից)",
        "redirectpagesub": "Վերահղման էջ",
-       "redirectto": "Վերահղել դեպի՝",
-       "lastmodifiedat": "Այս էջը վերջին անգամ փոփոխվել է ժամը $2-ին, $1 թվին։",
+       "redirectto": "Վերահղել դեպի",
+       "lastmodifiedat": "Այս էջը վերջին անգամ փոփոխվել է $1 թվականի ժամը $2-ին:",
        "viewcount": "Այս էջին դիմել են {{PLURAL:$1|մեկ անգամ|$1 անգամ}}։",
        "protectedpage": "Պաշտպանված էջ",
-       "jumpto": "Անցնել՝",
+       "jumpto": "Անցնել դեպի",
        "jumptonavigation": "նավարկություն",
        "jumptosearch": "որոնում",
-       "view-pool-error": "Õ\86Õ¥Ö\80Õ¥Ö\81Õ¥Ö\84Õ\9d Õ½Õ¥Ö\80Õ¾Õ¥Ö\80Õ¶Õ¥Ö\80Õ¨ Õ£Õ¥Ö\80Õ¢Õ¥Õ¼Õ¶Õ¾Õ¡Õ® Õ¥Õ¶ Õ¡ÕµÕ½ ÕºÕ¡Õ°Õ«Õ¶Ö\89\nÕ\89Õ¡Ö\83Õ«Ö\81 Õ·Õ¡Õ¿ Ö\85Õ£Õ¿Õ¾Õ¸Õ²Õ¶Õ¥Ö\80 Ö\83Õ¸Ö\80Õ±Õ¸Ö\82Õ´ Õ¥Õ¶ Õ¤Õ«Õ¿Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ¨Ö\89\nÔ½Õ¶Õ¤Ö\80Õ¸Ö\82Õ´ Õ¥Õ¶Ö\84 Õ½ÕºÕ¡Õ½Õ¥Õ¬ Õ¸Ö\80Õ¸Õ· ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯ Õ§Õ»Õ¨ Õ¤Õ«Õ¿Õ¥Õ¬Õ¸Ö\82 Õ¯Ö\80Õ¯Õ«Õ¶ Õ°Õ¡ÕµÖ\81Õ¸Ö\82Õ´ Õ¡Õ¶Õ¥Õ¬Õ¸Ö\82Ö\81 Õ¡Õ¼Õ¡Õ»։\n\n$1",
-       "generic-pool-error": "Ներեցեք՝ սերվերները գերբեռնված են այս պահին։\nՉափից շատ օգտվողներ փորձում են դիտել այս էջը։\nԽնդրում ենք սպասել որոշ ժամանակ էջը դիտելու կրկին հայցում անելուց առաջ։",
+       "view-pool-error": "Õ\86Õ¥Ö\80Õ¥Ö\81Õ¥Ö\84Õ\9d Õ½Õ¥Ö\80Õ¾Õ¥Ö\80Õ¶Õ¥Ö\80Õ¨ Õ£Õ¥Ö\80Õ¢Õ¥Õ¼Õ¶Õ¾Õ¡Õ® Õ¥Õ¶ Õ¡ÕµÕ½ ÕºÕ¡Õ°Õ«Õ¶Ö\89\nÕ\87Õ¡Õ¿ Ö\85Õ£Õ¿Õ¾Õ¸Õ²Õ¶Õ¥Ö\80 Ö\83Õ¸Ö\80Õ±Õ¸Ö\82Õ´ Õ¥Õ¶ Õ¤Õ«Õ¿Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ¨Ö\89\nÔ½Õ¶Õ¤Ö\80Õ¸Ö\82Õ´ Õ¥Õ¶Ö\84 Õ½ÕºÕ¡Õ½Õ¥Õ¬ Õ¸Ö\80Õ¸Õ· ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯ Õ§Õ» Õ¯Ö\80Õ¯Õ«Õ¶ Õ´Õ¸Ö\82Õ¿Ö\84 Õ£Õ¸Ö\80Õ®Õ¥Õ¬Õ¸Ö\82 Õ°Õ¡Õ´Õ¡Ö\80։\n\n$1",
+       "generic-pool-error": "Ներեցեք, սերվերները գերբեռնված են այս պահին։\nՇատ օգտվողներ փորձում են դիտել այս էջը։\nԽնդրում ենք սպասել որոշ ժամանակ էջը կրկին դիտելու համար։",
        "pool-errorunknown": "Անհայտ սխալ",
        "aboutsite": "{{grammar:genitive|{{SITENAME}}}} մասին",
        "aboutpage": "Project:Էությունը",
index 7f3277f..c2d5f7d 100644 (file)
        "botpasswords-label-delete": "Hapus",
        "botpasswords-label-resetpassword": "Setel ulang kata sandi",
        "botpasswords-label-grants": "Akses yang dapat diberikan:",
+       "botpasswords-label-restrictions": "Batasan penggunaan:",
+       "botpasswords-label-grants-column": "Izin diberikan",
+       "botpasswords-bad-appid": "Nama bot \"$1\" tidak valid.",
+       "botpasswords-insert-failed": "Gagal menambah nama bot \"$1\". Apakah sudah ditambahkan sebelum ini?",
+       "botpasswords-update-failed": "Gagal memperbarui nama bot \"$1\". Apakah sebelumnya sudah pernah dihapus?",
+       "botpasswords-created-title": "Kata sandi bot dibuat",
+       "botpasswords-created-body": "Kata sandi bot \"$1\" sukses dibuat.",
+       "botpasswords-updated-title": "Kata sandi bot diperbarui",
+       "botpasswords-updated-body": "Kata sandi bot \"$1\" sukses diperbarui.",
+       "botpasswords-deleted-title": "Kata sandi bot dihapus",
+       "botpasswords-deleted-body": "Kata sandi bot \"$1\" telah dihapus.",
+       "botpasswords-newpassword": "Kata sandi baru untuk masuk log dengan '''$1''' adalah '''$2'''. ''Mohon simpan untuk referensi di kemudian hari.''",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider tidak tersedia.",
+       "botpasswords-restriction-failed": "Batasan kata sandi menghalangi masuk log ini.",
+       "botpasswords-invalid-name": "Nama pengguna yang diberikan tidak mengandung pemisah kata sandi bot (\"$1\").",
+       "botpasswords-not-exist": "Pengguna \"$1\" tidak memiliki kata sandi bot bernama \"$2\".",
        "resetpass_forbidden": "Kata sandi tidak dapat diubah",
        "resetpass-no-info": "Anda harus masuk log untuk mengakses halaman ini secara langsung.",
        "resetpass-submit-loggedin": "Ganti kata sandi",
        "passwordreset-emailtext-ip": "Seseorang (mungkin Anda, dari alamat IP $1) meminta pengingat\ndetail akun untuk {{SITENAME}} ($4). {{PLURAL:$3|Akun|Akun-akun}} berikut\nterkait dengan alamat surel ini:\n\n$2\n\n{{PLURAL:$3|Sandi sementara}} berikut akan kedaluwarsa dalam {{PLURAL:$5|$5 hari}}.\nAnda harus masuk dan memilih sandi baru sekarang. Jika orang lain membuat\npermintaan ini atau jika Anda ingat sandi asli dan tidak lagi\ningin mengubahnya, Anda dapat mengabaikan pesan ini dan terus menggunakan sandi lama.",
        "passwordreset-emailtext-user": "Seseorang (mungkin Anda, dari alamat IP $1) meminta pengingat detail akun untuk {{SITENAME}} ($4).\n{{PLURAL:$3|Akun|Akun-akun}} berikut terkait dengan alamat surel ini:\n\n$2\n\n{{PLURAL:$3|Sandi sementara}} berikut akan kedaluwarsa dalam {{PLURAL:$5|$5 hari}}.\nAnda harus masuk dan memilih sandi baru sekarang. Jika orang lain membuat\npermintaan ini atau jika Anda ingat sandi asli dan tidak lagi\ningin mengubahnya, Anda dapat mengabaikan pesan ini dan terus menggunakan sandi lama.",
        "passwordreset-emailelement": "Nama pengguna: \n$1\n\nSandi sementara: \n$2",
-       "passwordreset-emailsentemail": "Surel setel ulang kata sandi telah dikirimkan.",
+       "passwordreset-emailsentemail": "Jika alamat surel ini berkaitan dengan akun Anda, maka surel untuk menyetel ulang kata sandi akan dikirim.",
+       "passwordreset-emailsentusername": "Jika ada alamat surel yang berkaitan dengan nama pengguna ini, maka surel untuk menyetel ulang kata sandi akan dikirim.",
        "passwordreset-emailsent-capture": "Surel setel ulang kata sandi telah dikirim, yang ditampilkan di bawah.",
        "passwordreset-emailerror-capture": "Surel setel ulang kata sandi telah dibuat, yang ditampilkan di bawah, namun pengiriman pada {{GENDER:$2|pengguna}} gagal: $1",
-       "changeemail": "Ubah alamat surel",
-       "changeemail-header": "Ubah alamat surel akun",
+       "changeemail": "Ubah atau hapus alamat surel",
+       "changeemail-header": "Lengkapi formulir ini untuk mengubah alamat surel Anda. Jika Anda ingin menghapus seluruh alamat surel yang berkaitan dengan akun Anda, kosongkan alamat surel ketika mengirim formulir.",
+       "changeemail-passwordrequired": "Anda diharuskan memasukkan kata sandi untuk mengonfirmasikan perubahan ini.",
        "changeemail-no-info": "Anda harus masuk log untuk mengakses halaman ini secara langsung.",
        "changeemail-oldemail": "Alamat surel saat ini:",
        "changeemail-newemail": "Alamat surel baru:",
+       "changeemail-newemail-help": "Kolom ini harus dikosongkan jika Anda ingin menghapus alamat surel. Anda nanti tidak dapat menyetel ulang kata sandi yang terlupa dan tidak akan menerima surel dari wiki ini jika alamat surel dihapus.",
        "changeemail-none": "(tidak ada)",
        "changeemail-password": "Sandi {{SITENAME}} Anda:",
        "changeemail-submit": "Ubah surel",
        "changeemail-throttled": "Anda sudah terlalu banyak mencoba masuk log.\nSilakan menunggu $1 sebelum mencoba lagi.",
+       "changeemail-nochange": "Masukkan alamat surel yang berbeda.",
        "resettokens": "Ubah token",
        "resettokens-text": "Anda dapat me-reset Token yang memungkinkan akses ke data pribadi tertentu yang terkait dengan akun Anda di sini.\n\nAnda harus melakukannya jika Anda secara tidak sengaja berbagi dengan seseorang atau jika akun Anda telah disusupi.",
        "resettokens-no-tokens": "Tidak ada token untuk di-reset.",
        "sig_tip": "Tanda tangan Anda dengan tanda waktu",
        "hr_tip": "Garis horisontal",
        "summary": "Ringkasan:",
-       "subject": "Subjek/judul:",
+       "subject": "Subjek:",
        "minoredit": "Ini adalah suntingan kecil.",
        "watchthis": "Pantau halaman ini",
        "savearticle": "Simpan halaman",
        "missingsummary": "'''Peringatan:''' Anda tidak memasukkan ringkasan penyuntingan. Jika Anda kembali menekan tombol Simpan, suntingan Anda akan disimpan tanpa ringkasan penyuntingan.",
        "selfredirect": "<strong>Peringatan:</strong> Anda mengalihkan halaman ini kembali ke halaman semula.\nAnda bisa jadi telah memberikan tujuan pengalihan yang salah, atau telah menyunting halaman yang salah.\nJika Anda mengeklik \"{{int:savearticle}}\" sekali lagi, halaman pengalihan akan dibuat.",
        "missingcommenttext": "Harap masukkan komentar di bawah ini.",
-       "missingcommentheader": "''Peringatan:''' Anda belum memberikan subjek atau judul untuk komentar Anda. Jika Anda kembali menekan \"{{int:savearticle}}\", suntingan Anda akan disimpan tanpa komentar tersebut.",
+       "missingcommentheader": "'''Peringatan:''' Anda belum memberikan subjek atau judul untuk komentar Anda. Jika Anda kembali menekan \"{{int:savearticle}}\", suntingan Anda akan disimpan tanpa komentar tersebut.",
        "summary-preview": "Pratayang ringkasan:",
-       "subject-preview": "Pratayang subyek/tajuk:",
+       "subject-preview": "Pratayang subjek:",
        "previewerrortext": "Kesalahan terjadi saat mencoba memperlihatkan pratayang perubahan Anda.",
        "blockedtitle": "Pengguna diblokir",
        "blockedtext": "'''Nama pengguna atau alamat IP Anda telah diblokir.'''\n\nBlokir dilakukan oleh $1.\nAlasan yang diberikan adalah ''$2''.\n\n* Diblokir sejak: $8\n* Blokir kedaluwarsa pada: $6\n* Sasaran pemblokiran: $7\n\nAnda dapat menghubungi $1 atau [[{{MediaWiki:Grouppage-sysop}}|pengurus lainnya]] untuk membicarakan hal ini.\n\nAnda tidak dapat menggunakan fitur 'Kirim surel ke pengguna ini' kecuali Anda telah memasukkan alamat surel yang sah di [[Special:Preferences|preferensi akun]] dan Anda tidak diblokir untuk menggunakannya.\n\nAlamat IP Anda adalah $3, dan ID pemblokiran adalah $5.\nTolong sertakan salah satu atau kedua informasi ini pada setiap pertanyaan yang Anda buat.",
        "previewnote": "'''Ingatlah bahwa ini hanya pratayang.'''\nPerubahan Anda belum disimpan!",
        "continue-editing": "Lanjutkan penyuntingan",
        "previewconflict": "Pratayang ini mencerminkan teks pada bagian atas kotak suntingan teks sebagaimana akan terlihat bila Anda menyimpannya.",
-       "session_fail_preview": "'''Maaf, kami tidak dapat mengolah suntingan Anda akibat terhapusnya data sesi.\nSilakan coba sekali lagi.\nJika masih tidak berhasil, cobalah [[Special:UserLogout|keluar lo]]g dan masuk log kembali.'''",
-       "session_fail_preview_html": "'''Kami tidak dapat memproses suntingan Anda karena hilangnya data sesi.'''\n\n''Karena {{SITENAME}} mengizinkan penggunaan HTML mentah, pratayang telah disembunyikan sebagai pencegahan terhadap serangan JavaScript.''\n\n'''Jika ini merupakan upaya suntingan yang sahih, silakan coba lagi.\nJika masih tetap tidak berhasil, cobalah [[Special:UserLogout|keluar log]] dan masuk kembali.'''",
+       "session_fail_preview": "Maaf, kami tidak dapat mengolah suntingan Anda akibat terhapusnya data sesi.\n\nAnda mungkin telah keluar log. '''Mohon periksa apakah Anda masih mauk log dan coba sekali lagi.'''\nJika masih tidak berhasil, cobalah [[Special:UserLogout|keluar lo]]g dan masuk log kembali, dan periksa bahwa peramban web Anda mengizinkan penyimpanan kuki dari situs ini.",
+       "session_fail_preview_html": "Kami tidak dapat memproses suntingan Anda karena hilangnya data sesi.\n\n''Karena {{SITENAME}} mengizinkan penggunaan HTML mentah, pratayang telah disembunyikan sebagai pencegahan terhadap serangan JavaScript.''\n\n'''Jika ini merupakan upaya suntingan yang sahih, silakan coba lagi.'''\nJika masih tetap tidak berhasil, cobalah [[Special:UserLogout|keluar log]] dan masuk kembali, dan periksa apakah peramban web Anda mengizinkan penyimpanan kuki dari situs ini.",
        "token_suffix_mismatch": "'''Suntingan Anda ditolak karena aplikasi klien Anda mengubah karakter tanda baca pada suntingan.'''\nSuntingan tersebut ditolak untuk mencegah kesalahan pada teks halaman.\nHal ini kadang terjadi jika Anda menggunakan layanan proxy anonim berbasis web yang bermasalah.",
        "edit_form_incomplete": "'''Beberapa bagian dari formulir suntingan tidak mencapai server; periksa ulang apakah suntingan Anda tetap utuh dan coba lagi.'''",
        "editing": "Menyunting $1",
        "yourdiff": "Perbedaan",
        "copyrightwarning": "Perhatikan bahwa semua kontribusi terhadap {{SITENAME}} dianggap dilisensikan sesuai dengan $2 (lihat $1 untuk informasi lebih lanjut). Jika Anda tidak ingin tulisan Anda disunting dan disebarkan ke halaman web yang lain, jangan kirimkan ke sini.<br />Anda juga berjanji bahwa ini adalah hasil karya Anda sendiri, atau disalin dari sumber milik umum atau sumber bebas yang lain. '''JANGAN KIRIMKAN KARYA YANG DILINDUNGI HAK CIPTA TANPA IZIN!'''",
        "copyrightwarning2": "Perhatikan bahwa semua kontribusi terhadap {{SITENAME}} dapat disunting, diubah, atau dihapus oleh penyumbang lainnya. Jika Anda tidak ingin tulisan Anda disunting orang lain, jangan kirimkan ke sini.<br />Anda juga berjanji bahwa ini adalah hasil karya Anda sendiri, atau disalin dari sumber milik umum atau sumber bebas yang lain (lihat $1 untuk informasi lebih lanjut). '''JANGAN KIRIMKAN KARYA YANG DILINDUNGI HAK CIPTA TANPA IZIN!'''",
+       "editpage-cannot-use-custom-model": "Model konten halaman ini tidak bisa diubah.",
        "longpageerror": "'''KESALAHAN: Teks yang Anda kirimkan sebesar $1 kilobita, yang berarti lebih besar daripada jumlah maksimum $2 kilobita. Teks tidak dapat disimpan.'''",
-       "readonlywarning": "'''PERINGATAN: Basis data sedang dikunci karena pemeliharaan, sehingga saat ini Anda tidak dapat menyimpan hasil suntingan Anda.'''\nAnda mungkin perlu menyalin teks suntingan Anda ini dan menyimpannya ke sebuah berkas teks dan memuatkannya lagi kemudian.\n\nPengurus yang mengunci basis data memberikan penjelasan berikut: $1",
+       "readonlywarning": "'''Peringatan: Basis data sedang dikunci karena pemeliharaan, sehingga saat ini Anda tidak dapat menyimpan hasil suntingan Anda.'''\nAnda mungkin perlu menyalin teks suntingan Anda ini dan menyimpannya ke sebuah berkas teks dan memuatkannya lagi kemudian.\n\nPengurus yang mengunci basis data memberikan penjelasan berikut: $1",
        "protectedpagewarning": "'''Peringatan: Halaman ini sedang dilindungi sehingga hanya pengguna dengan hak akses pengurus yang dapat menyuntingnya.'''\nEntri catatan terakhir disediakan di bawah untuk referensi:",
        "semiprotectedpagewarning": "'''Catatan:''' Halaman ini sedang dilindungi, sehingga hanya pengguna terdaftar yang bisa menyuntingnya.\nEntri catatan terakhir disediakan di bawah untuk referensi:",
-       "cascadeprotectedwarning": "'''PERINGATAN:''' Halaman ini sedang dilindungi sehingga hanya pengguna dengan hak akses pengurus saja yang dapat menyuntingnya karena disertakan dalam {{PLURAL:$1|halaman|halaman-halaman}} berikut yang telah dilindungi dengan opsi 'pelindungan runtun':",
+       "cascadeprotectedwarning": "'''Peringatan:''' Halaman ini sedang dilindungi sehingga hanya pengguna dengan hak akses pengurus saja yang dapat menyuntingnya karena disertakan dalam {{PLURAL:$1|halaman|halaman-halaman}} berikut yang telah dilindungi dengan opsi 'pelindungan runtun':",
        "titleprotectedwarning": "'''Peringatan: Halaman ini telah dilindungi sehingga diperlukan [[Special:ListGroupRights|hak khusus]] untuk membuatnya.'''\nEntri catatan terakhir disediakan di bawah untuk referensi:",
        "templatesused": "{{PLURAL:$1|Templat|Templat}} yang digunakan di halaman ini:",
        "templatesusedpreview": "{{PLURAL:$1|Templat|Templat}} yang digunakan di pratayang ini:",
        "permissionserrors": "Kesalahan Hak Akses",
        "permissionserrorstext": "Anda tak memiliki hak untuk melakukan hal itu karena {{PLURAL:$1|alasan|alasan-alasan}} berikut:",
        "permissionserrorstext-withaction": "Anda tidak memiliki hak akses untuk $2, karena {{PLURAL:$1|alasan|alasan}} berikut:",
+       "contentmodelediterror": "Anda tidak dapat menyunting revisi ini karena isi kontennya adalah <code>$1</code>, yang berbeda dari model isi terkini dari halaman <code>$2</code>.",
        "recreate-moveddeleted-warn": "'''Peringatan: Anda membuat ulang suatu halaman yang sudah pernah dihapus.'''\n\nHarap pertimbangkan apakah layak untuk melanjutkan suntingan Anda.\nBerikut adalah log penghapusan dan pemindahan dari halaman ini:",
        "moveddeleted-notice": "Halaman ini telah dihapus.\nSebagai referensi, berikut adalah log penghapusan dan pemindahan halaman ini.",
        "moveddeleted-notice-recent": "Maaf, halaman ini telah dihapus (dalam 24 jam ini). Sebagai referensi, berikut adalah log penghapusan atau pemindahan halaman ini.",
        "content-model-css": "CSS",
        "content-json-empty-object": "Objek kosong",
        "content-json-empty-array": "Larik kosong",
+       "duplicate-args-warning": "<strong>Peringatan:</strong> [[:$1]] memanggil [[:$2]] dengan nilai lebih dari satu untuk parameter \"$3\". Hanya nilai terakhir yang tersedia yang akan digunakan.",
        "duplicate-args-category": "Halaman dengan argumen ganda di pemanggilan templat",
        "duplicate-args-category-desc": "Halaman ini berisi pemanggilan templat yang menggunakan argumen ganda, seperti <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> atau <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "Peringatan: Halaman ini mengandung terlalu banyak panggilan fungsi parser.\n\nSaat ini terdapat {{PLURAL:$1|$1 panggilan|$1 panggilan}}, seharusnya kurang dari $2 {{PLURAL:$2|panggilan|panggilan}}.",
        "rev-showdeleted": "tampilkan",
        "revisiondelete": "Hapus/batal hapus revisi",
        "revdelete-nooldid-title": "Target revisi tak ditemukan",
-       "revdelete-nooldid-text": "Anda belum memberikan target revisi untuk menjalankan fungsi ini.",
+       "revdelete-nooldid-text": "Anda belum memberikan revisi tujuan yang akan menjalankan fungsi ini, atau revisi yang diberikan tidak tersedia, atau Anda mencoba menyembunyikan revisi terkini.",
        "revdelete-no-file": "Berkas yang dituju tidak ditemukan.",
        "revdelete-show-file-confirm": "Apakah Anda yakin ingin melihat revisi yang telah dihapus dari berkas \"<nowiki>$1</nowiki>\" per $3, $2?",
        "revdelete-show-file-submit": "Ya",
        "mergehistory-empty": "Tidak ada revisi yang dapat digabung.",
        "mergehistory-done": "$3 {{PLURAL:$3|revisi|revisi}} dari $1 berhasil digabungkan ke [[:$2]].",
        "mergehistory-fail": "Tidak dapat melakukan penggabungan, harap periksa kembali halaman dan parameter waktu.",
+       "mergehistory-fail-bad-timestamp": "Stempel waktu tidak valid.",
+       "mergehistory-fail-invalid-source": "Halaman asal tidak valid.",
+       "mergehistory-fail-invalid-dest": "Halaman tujuan tidak valid.",
+       "mergehistory-fail-no-change": "Penggabungan sejarah tidak berhasil menggabungkan revisi apa pun. Mohon periksa kembali parameter halaman dan waktu.",
+       "mergehistory-fail-permission": "Izin penggabungan sejarah halaman tidak mencukupi.",
+       "mergehistory-fail-self-merge": "Halaman asal dan tujuan sama.",
+       "mergehistory-fail-timestamps-overlap": "Revisi asal tumpang tindih atau lebih baru dari revisi tujuan.",
        "mergehistory-fail-toobig": "Tidak dapat melakukan penggabungan sebagai lebih dari batas dari $1 {{PLURAL:$1|revisi|revisi}} akan dipindahkan.",
        "mergehistory-no-source": "Halaman sumber $1 tidak ada.",
        "mergehistory-no-destination": "Halaman tujuan $1 tidak ada.",
        "showingresultsinrange": "Menampilkan sampai dengan {{PLURAL:$1|<strong>1</strong> hasil|<strong>$1</strong> hasil}} dalam rentang #<strong>$2</strong> sampai #<strong>$3</strong>.",
        "search-showingresults": "{{PLURAL:$4|Hasil <strong>$1</strong> dari <strong>$3</strong>|Hasil <strong>$1 - $2</strong> dari <strong>$3</strong>}}",
        "search-nonefound": "Tidak ada hasil yang sesuai dengan kriteria.",
+       "search-nonefound-thiswiki": "Tidak ada hasil yang sesuai dengan permintaan di situs ini.",
        "powersearch-legend": "Pencarian lanjut",
        "powersearch-ns": "Mencari di ruang nama:",
        "powersearch-togglelabel": "Pilih:",
        "prefs-watchlist-token": "Token pantauan:",
        "prefs-misc": "Lain-lain",
        "prefs-resetpass": "Ganti kata sandi",
-       "prefs-changeemail": "Ubah surel",
+       "prefs-changeemail": "Ubah atau hapus alamat surel",
        "prefs-setemail": "Atur alamat surel",
        "prefs-email": "Opsi surel",
        "prefs-rendering": "Tampilan",
        "rows": "Baris:",
        "columns": "Kolom:",
        "searchresultshead": "Cari",
-       "stub-threshold": "Ambang batas untuk format <a href=\"#\" class=\"stub\">pranala rintisan</a>:",
+       "stub-threshold": "Ambang batas untuk format pranala rintisan ($1):",
+       "stub-threshold-sample-link": "contoh",
        "stub-threshold-disabled": "Dinonaktifkan",
        "recentchangesdays": "Jumlah hari yang ditampilkan di perubahan terbaru:",
        "recentchangesdays-max": "(maksimum $1 {{PLURAL:$1|hari|hari}})",
        "prefs-help-recentchangescount": "Opsi ini berlaku untuk perubahan terbaru, versi terdahulu halaman, dan log.",
        "prefs-help-watchlist-token2": "Ini adalah kunci rahasia (token) ke web feed dari daftar pantauan Anda.\nSiapa saja yang tahu akan dapat melihat daftar pantauan Anda, jadi jangan dibagikan.\n[[Special:ResetTokens|Klik di sini jika Anda perlu menyetel ulang]].",
        "savedprefs": "Preferensi Anda telah disimpan",
+       "savedrights": "Hak pengguna {{GENDER:$1|$1}} telah disimpan.",
        "timezonelegend": "Zona waktu:",
        "localtime": "Waktu setempat:",
        "timezoneuseserverdefault": "Gunakan bawaan wiki ($1)",
        "badsig": "Tanda tangan mentah tak sah; periksa tag HTML.",
        "badsiglength": "Tanda tangan Anda terlalu panjang.\nJangan lebih dari $1 {{PLURAL:$1|karakter|karakter}}.",
        "yourgender": "Jenis kelamin:",
-       "gender-unknown": "Tak dinyatakan",
+       "gender-unknown": "Ketika menyebut Anda, perangkat lunak akan menggunakan kata-kata yang netral ketika diperlukan",
        "gender-male": "Laki-laki",
        "gender-female": "Perempuan",
        "prefs-help-gender": "Opsional: digunakan untuk perbaikan penyebutan jenis kelamin oleh perangkat lunak. \nInformasi ini akan terbuka untuk umum.",
        "userrights": "Manajemen hak pengguna",
        "userrights-lookup-user": "Mengatur kelompok pengguna",
        "userrights-user-editname": "Masukkan nama pengguna:",
-       "editusergroup": "Sunting kelompok pengguna",
-       "editinguser": "Mengganti hak akses pengguna '''[[User:$1|$1]]''' $2",
+       "editusergroup": "Sunting kelompok {{GENDER:$1|pengguna}}",
+       "editinguser": "Mengubah hak pengguna untuk {{GENDER:$1|pengguna}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Sunting kelompok pengguna",
-       "saveusergroups": "Simpan kelompok pengguna",
+       "saveusergroups": "Simpan kelompok {{GENDER:$1|pengguna}}",
        "userrights-groupsmember": "Anggota dari:",
        "userrights-groupsmember-auto": "Anggota implisit dari:",
        "userrights-groupsmember-type": "$1",
        "grouppage-bot": "{{ns:project}}:Bot",
        "grouppage-sysop": "{{ns:project}}:Pengurus",
        "grouppage-bureaucrat": "{{ns:project}}:Birokrat",
-       "grouppage-suppress": "{{ns:project}}:Pengawas",
+       "grouppage-suppress": "{{ns:project}}:Peredam",
        "right-read": "Membaca halaman",
        "right-edit": "Menyunting halaman",
        "right-createpage": "Membuat halaman baru (yang bukan halaman pembicaraan)",
        "right-createtalk": "Membuat halaman pembicaraan",
        "right-createaccount": "Membuat akun baru",
+       "right-autocreateaccount": "Masuk log otomatis dengan akun pengguna luar",
        "right-minoredit": "Menandai suntingan sebagai minor",
        "right-move": "Memindahkan halaman",
        "right-move-subpages": "Memindahkan halaman dengan seluruh subhalamannya",
        "right-sendemail": "Mengirim surel ke pengguna lain",
        "right-passwordreset": "Lihat surel pengaturulangan kata sandi",
        "right-managechangetags": "Membuat dan menghapus [[Special:Tags|tag]] dari basis data",
+       "right-applychangetags": "Terapkan [[Special:Tags|tags]] bersamaan dengan perubahan pengguna",
        "grant-generic": "\"$1\" bundel hak akses",
        "grant-group-page-interaction": "Berinteraksi dengan halaman",
        "grant-group-file-interaction": "Berinteraksi dengan media",
        "grant-group-email": "Mengirim surel",
        "grant-group-high-volume": "Melakukan aktivitas yang amat banyak",
        "grant-group-customization": "Kustomisasi dan preferensi",
-       "grant-group-administration": "Lakukan tindakan administratif",
+       "grant-group-administration": "Melakukan tindakan administratif",
        "grant-group-other": "Aktivitas lain-lain",
        "grant-blockusers": "Blokir dan buka pemblokiran pengguna",
        "grant-createaccount": "Buat akun",
        "grant-delete": "Menghapus halaman, revisi, dan log entri",
        "grant-editinterface": "Menyunting ruang nama MediaWiki dan CSS/JavaScript pengguna",
        "grant-editmycssjs": "Menyunting halaman CSS/JavaScript Anda",
-       "grant-editmyoptions": "Menyunting preferensi Anda",
+       "grant-editmyoptions": "Menyunting preferensi pengguna Anda",
        "grant-editmywatchlist": "Menyunting daftar pantauan Anda",
        "grant-editpage": "Menyunting halaman yang ada",
        "grant-editprotected": "Menyunting halaman yang dilindungi",
-       "grant-highvolume": "Amat sering menyunting",
+       "grant-highvolume": "Penyuntingan dengan volume tinggi",
        "grant-oversight": "Sembunyikan pengguna dan revisinya",
        "grant-patrol": "Tandai halaman terpatroli",
        "grant-protect": "Melindungi dan membuka perlindungan halaman",
-       "grant-rollback": "Membalikkan halamn",
-       "grant-sendemail": "Mengirim surel pada pengguna lain",
+       "grant-rollback": "Membalikkan perubahan pada halaman",
+       "grant-sendemail": "Mengirim surel kepada pengguna lain",
        "grant-uploadeditmovefile": "Mengunggah, mengganti, dan memindahkan berkas",
        "grant-uploadfile": "Mengunggah berkas baru",
-       "grant-viewdeleted": "Melihat informasi halaman yang dihapus",
+       "grant-basic": "Akses dasar",
+       "grant-viewdeleted": "Melihat halaman dan berkas yang dihapus",
        "grant-viewmywatchlist": "Melihat daftar pantauan Anda",
        "newuserlogpage": "Log pengguna baru",
        "newuserlogpagetext": "Di bawah ini adalah log pendaftaran pengguna baru",
        "action-createpage": "membuat halaman baru",
        "action-createtalk": "membuat halaman pembicaraan baru",
        "action-createaccount": "membuat akun pengguna ini",
+       "action-autocreateaccount": "buat otomatis akun pengguna luar",
        "action-history": "lihat riwayat halaman ini",
        "action-minoredit": "menandai sebagai suntingan kecil",
        "action-move": "memindahkan halaman ini",
        "action-editmyprivateinfo": "sunting informasi pribadi Anda",
        "action-editcontentmodel": "mengedit model konten sebuah halaman",
        "action-managechangetags": "Membuat dan menghapus tag dari basis data",
+       "action-applychangetags": "terapkan tag bersamaan dengan perubahan Anda",
+       "action-changetags": "menambah dan menghapus tag semaunya pada revisi individu dan entri log",
        "nchanges": "$1 {{PLURAL:$1|perubahan|perubahan}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|sejak kunjungan terakhir}}",
        "enhancedrc-history": "riwayat",
        "recentchanges-label-plusminus": "Perubahan ukuran halaman dalam bita",
        "recentchanges-legend-heading": "'''Keterangan:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lihat pula [[Special:NewPages|daftar halaman baru]])",
+       "recentchanges-submit": "Tampilkan",
        "rcnotefrom": "Di bawah ini adalah {{PLURAL:$5|perubahan}} sejak <strong>$3, $4</strong> (ditampilkan sampai <strong>$1</strong> perubahan).",
        "rclistfrom": "Perlihatkan perubahan terbaru sejak $3 $2",
        "rcshowhideminor": "$1 suntingan kecil",
        "rcshowhidemine": "$1 suntingan saya",
        "rcshowhidemine-show": "Tampilkan",
        "rcshowhidemine-hide": "Sembunyikan",
+       "rcshowhidecategorization": "$1 kategorisasi halaman",
        "rcshowhidecategorization-show": "Tampilkan",
        "rcshowhidecategorization-hide": "Sembunyikan",
        "rclinks": "Perlihatkan $1 perubahan terbaru dalam $2 hari terakhir<br />$3",
        "boteditletter": "b",
        "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|pemantau|pemantau}}]",
-       "rc_categories": "Batasi sampai kategori (dipisah dengan \"|\")",
-       "rc_categories_any": "Apa pun",
+       "rc_categories": "Batasi sampai kategori (dipisah dengan \"|\"):",
+       "rc_categories_any": "Setiap yang terpilih",
        "rc-change-size": "$1",
        "rc-change-size-new": "$1 {{PLURAL:$1|bita}} setelah perubahan",
        "newsectionsummary": "/* $1 */ bagian baru",
        "recentchangeslinked-summary": "Ini adalah daftar perubahan pada halaman yang terkait ke halaman yang spesifik (atau bagian dari kategori yang spesifik).\nHalaman pada [[Special:Watchlist|daftar pantauan Anda]] terlihat <strong>dicetak tebal</strong>.",
        "recentchangeslinked-page": "Nama halaman:",
        "recentchangeslinked-to": "Perlihatkan perubahan dari halaman-halaman yang terhubung dengan halaman yang disajikan",
+       "recentchanges-page-added-to-category": "[[:$1]] ditambahkan pada kategori",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] dan {{PLURAL:$2|satu halaman|$2 halaman-halaman}} lagi halaman ditambahkan pada kategori",
+       "recentchanges-page-removed-from-category": "[[:$1]] dihapus dari kategori",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] dan {{PLURAL:$2|satu halaman|$2 halaman-halaman}} lagi halaman dihapus dari kategori",
+       "autochange-username": "Perubahan otomatis MediaWiki",
        "upload": "Pengunggahan berkas",
        "uploadbtn": "Muatkan berkas",
        "reuploaddesc": "Kembali ke formulir pemuatan",
        "uploaddisabledtext": "Pemuatan berkas tidak diizinkan.",
        "php-uploaddisabledtext": "Pemuatan berkas dimatikan di PHP. Silakan cek pengaturan file_uploads.",
        "uploadscripted": "Berkas ini mengandung HTML atau kode yang dapat diinterpretasikan dengan keliru oleh penjelajah web.",
+       "upload-scripted-pi-callback": "Tidak dapat mengunggah berkas yang mengandung arahan pengolahan hamparan XML.",
+       "uploaded-script-svg": "Terdapat elemen terskrip \"$1\" dalam berkas SVG yang diunggah.",
+       "uploaded-hostile-svg": "Terdapat CSS yang tidak aman dalam elemen gaya berkas SVG yang diunggah.",
+       "uploaded-event-handler-on-svg": "Penetapan atribut <i>event-handler</i> $1=\"$2\" tidak diizinkan dalam berkas SVG.",
        "uploadscriptednamespace": "Berkas SVG ini memuat ruang nama ilegal \"$1\"",
        "uploadinvalidxml": "XML dalam berkas yang diunggah tidak bisa diuraikan.",
        "uploadvirus": "Berkas tersebut mengandung virus! Rincian: $1",
        "upload-dialog-button-done": "Selesai",
        "upload-dialog-button-save": "Simpan",
        "upload-dialog-button-upload": "Unggah",
-       "upload-form-label-select-file": "Pilih berkas",
        "upload-form-label-infoform-title": "Rincian",
        "upload-form-label-infoform-name": "Nama",
        "upload-form-label-infoform-name-tooltip": "Judul singkat yang unik untuk berkas, yang akan menjadi nama berkas. Anda dapat gunakan bahasa yang sederhana berikut spasi. Jangan menyertakan ekstensi berkas.",
        "mostrevisions": "Halaman dengan perubahan terbanyak",
        "prefixindex": "Semua halaman dengan awalan (Indeks awalan)",
        "prefixindex-namespace": "Semua halaman dengan awalan (ruang nama $1)",
+       "prefixindex-submit": "Tampilkan",
        "prefixindex-strip": "Strip awalan dalam daftar",
        "shortpages": "Halaman pendek",
        "longpages": "Halaman panjang",
        "protectedpages-performer": "Melindungi pengguna",
        "protectedpages-params": "Parameter perlindungan",
        "protectedpages-reason": "Alasan",
+       "protectedpages-submit": "Halaman tampilan",
        "protectedpages-unknown-timestamp": "Tidak diketahui",
        "protectedpages-unknown-performer": "Pengguna yang tidak diketahui",
        "protectedtitles": "Judul yang dilindungi",
        "protectedtitles-summary": "Halaman ini mendaftarkan judul-judul yang saat ini dilindungi dari pembuatan. Untuk daftar halaman yang sudah ada dan dilindungi, lihat [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
        "protectedtitlesempty": "Tidak ada judul yang dilindungi.",
+       "protectedtitles-submit": "Judul tampilan",
        "listusers": "Daftar pengguna",
        "listusers-editsonly": "Tampilkan hanya pengguna yang memiliki kontribusi",
        "listusers-creationsort": "Urutkan menurut tanggal pendaftaran",
        "usereditcount": "$1 {{PLURAL:$1|suntingan|suntingan}}",
        "usercreated": "{{GENDER:$3|Dibuat}} pada $1 pukul $2",
        "newpages": "Halaman baru",
+       "newpages-submit": "Tampilkan",
        "newpages-username": "Nama pengguna:",
        "ancientpages": "Halaman terlama",
        "move": "Pindahkan",
        "nopagetext": "Halaman yang Anda tuju tidak ditemukan.",
        "pager-newer-n": "{{PLURAL:$1|1 lebih baru|$1 lebih baru}}",
        "pager-older-n": "{{PLURAL:$1|$1 lebih lama}}",
-       "suppress": "Pengawas",
+       "suppress": "Sembunyikan",
        "querypage-disabled": "Halaman istimewa ini dinonaktifkan demi alasan kinerja.",
        "apihelp": "Bantuan API",
        "apihelp-no-such-module": "Modul \"$1\" tidak ditemukan.",
        "apisandbox": "Bak pasir API",
+       "apisandbox-jsonly": "JavaScript dibutuhkan untuk menggunakan kotak pasir API.",
        "apisandbox-api-disabled": "API dinonaktifkan pada situs ini.",
-       "apisandbox-intro": "Gunakan halaman ini untuk bereksperimen dengan '''API layanan web MediaWiki'''.\nLihat [//www.mediawiki.org/wiki/API:Main_page dokumentasi API] untuk perincian lanjut penggunaan API. Contoh: [//www.mediawiki.org/wiki/API#A_simple_example dapatkan konten Halaman Utama]. Pilih tindakan untuk melihat contoh lain.\n\nPerhatikan bahwa, meskipun ini adalah bak pasir, tindakan yang Anda lakukan pada halaman ini dapat mengubah wiki.",
+       "apisandbox-intro": "Gunakan halaman ini untuk bereksperimen dengan '''API layanan web MediaWiki'''.\nLihat [//www.mediawiki.org/wiki/API:Main_page dokumentasi API] untuk perincian lanjut penggunaan API. Contoh: [//www.mediawiki.org/wiki/API#A_simple_example dapatkan konten Halaman Utama]. Pilih sebuah tindakan untuk melihat contoh lain.\n\nPerhatikan bahwa, meskipun ini adalah bak pasir, tindakan yang Anda lakukan pada halaman ini dapat mengubah wiki.",
+       "apisandbox-fullscreen": "Kembangkan panel",
+       "apisandbox-fullscreen-tooltip": "Kembangkan panel kotak pasir untuk mengisi jendela peramban.",
+       "apisandbox-unfullscreen": "Tampilkan halaman",
+       "apisandbox-unfullscreen-tooltip": "Ciutkan panel kotak pasir, sehingga pranala navigasi MediaWiki dapat tersedia.",
        "apisandbox-submit": "Kirim permintaan",
        "apisandbox-reset": "Kosongkan",
+       "apisandbox-retry": "Coba lagi",
+       "apisandbox-loading": "Memuat informasi modul API \"$1\"...",
+       "apisandbox-load-error": "Sebuah galat terjadi ketika memuat informasi modul API \"$1\": $2",
+       "apisandbox-no-parameters": "Modul API ini tidak memiliki parameter.",
+       "apisandbox-helpurls": "Pranala bantuan",
        "apisandbox-examples": "Contoh",
+       "apisandbox-dynamic-parameters": "Parameter tambahan",
+       "apisandbox-dynamic-parameters-add-label": "Tambah parameter:",
+       "apisandbox-dynamic-parameters-add-placeholder": "Nama parameter",
+       "apisandbox-dynamic-error-exists": "Parameter bernama \"$1\" telah tersedia.",
+       "apisandbox-deprecated-parameters": "Parameter usang",
+       "apisandbox-fetch-token": "Isi token dengan otomatis",
+       "apisandbox-submit-invalid-fields-title": "Beberapa kolom tidak valid",
+       "apisandbox-submit-invalid-fields-message": "Silakan perbaiki kolom yang ditandai dan coba kembali.",
        "apisandbox-results": "Hasil",
+       "apisandbox-sending-request": "Mengirim permintaan API...",
+       "apisandbox-loading-results": "Menerima hasil API...",
+       "apisandbox-results-error": "Sebuah galat terjadi ketika memuat permintaan respon API: $1.",
        "apisandbox-request-url-label": "URL Permintaan:",
-       "apisandbox-request-time": "Lama permintaan: $1",
+       "apisandbox-request-time": "Lama permintaan: {{PLURAL:$1|$1 ms}}",
+       "apisandbox-results-fixtoken": "Perbaiki token dan kirim kembali",
+       "apisandbox-results-fixtoken-fail": "Gagal mendapatkan token \"$1\".",
+       "apisandbox-alert-page": "Kolom dalam halaman ini tidak valid.",
+       "apisandbox-alert-field": "Nilai dalam kolom ini tidak valid.",
        "booksources": "Sumber buku",
        "booksources-search-legend": "Cari di sumber buku",
        "booksources-isbn": "ISBN:",
        "specialloguserlabel": "Pengguna:",
        "speciallogtitlelabel": "Target (judul atau{{ns:pengguna}}:nama pengguna untuk pengguna)",
        "log": "Catatan (Log)",
+       "logeventslist-submit": "Tampilkan",
        "all-logs-page": "Semua log publik",
        "alllogstext": "Gabungan tampilan semua log yang tersedia di {{SITENAME}}.\nAnda dapat melakukan pembatasan tampilan dengan memilih jenis log, nama pengguna (sensitif kapitalisasi), atau judul halaman (juga sensitif kapitalisasi).",
        "logempty": "Tidak ditemukan entri log yang sesuai.",
        "log-title-wildcard": "Cari judul yang diawali dengan teks tersebut",
        "showhideselectedlogentries": "Tampilkan/sembunyikan entri log terpilih",
        "log-edit-tags": "Sunting tag dari entri log yang terpilih",
+       "checkbox-select": "Pilih: $1",
+       "checkbox-all": "Semua",
+       "checkbox-none": "Tidak ada",
+       "checkbox-invert": "Balikkan",
        "allpages": "Daftar halaman",
        "nextpage": "Halaman selanjutnya ($1)",
        "prevpage": "Halaman sebelumnya ($1)",
        "cachedspecial-viewing-cached-ts": "Anda melihat versi tembolok halaman ini, yang mungkin tidak akan benar-benar aktual.",
        "cachedspecial-refresh-now": "Lihat versi terbaru.",
        "categories": "Daftar kategori",
+       "categories-submit": "Tampilkan",
        "categoriespagetext": "{{PLURAL:$1|Kategori berikut|Kategori-kategori berikut}} memiliki isi halaman atau media.\n[[Special:UnusedCategories|Kategori yang tak digunakan]] tidak ditampilkan di sini.\nLihat pula [[Special:WantedCategories|kategori yang diinginkan]].",
        "categoriesfrom": "Tampilkan kategori-kategori dimulai dengan:",
        "special-categories-sort-count": "urutkan menurut jumlah",
        "activeusers-hidebots": "Sembunyikan bot",
        "activeusers-hidesysops": "Sembunyikan pengurus",
        "activeusers-noresult": "Pengguna tidak ditemukan.",
+       "activeusers-submit": "Tampilkan pengguna aktif",
        "listgrouprights": "Daftar hak kelompok",
        "listgrouprights-summary": "Berikut adalah daftar kelompok pengguna yang terdapat di wiki ini, dengan daftar hak akses mereka masing-masing. Informasi lebih lanjut mengenai hak masing-masing dapat ditemukan di [[{{MediaWiki:Listgrouprights-helppage}}|halaman bantuan hak pengguna]].",
        "listgrouprights-key": "* <span class=\"listgrouprights-granted\">Hak yang diberikan</span>\n* <span class=\"listgrouprights-revoked\">Hak yang dicabut</span>",
        "listgrouprights-namespaceprotection-header": "Batasan ruang nama",
        "listgrouprights-namespaceprotection-namespace": "Ruang nama",
        "listgrouprights-namespaceprotection-restrictedto": "Hak yang mengizinkan pengguna untuk menyunting",
+       "listgrants": "Izin",
        "listgrants-grant": "Izin",
        "listgrants-rights": "Hak",
        "trackingcategories": "Kategori pelacak",
        "wlheader-showupdated": "Halaman-halaman yang telah berubah sejak kunjungan terakhir Anda ditampilkan dengan '''huruf tebal'''.",
        "wlnote": "Di bawah ini adalah {{PLURAL:$1|perubahan|<strong>$1</strong> perubahan}} terakhir dalam {{PLURAL:$2|jam|<strong>$2</strong> jam}}, per $3, $4.",
        "wlshowlast": "Tampilkan $1 jam $2 hari terakhir",
-       "wlshowtime": "Tampilkan hingga:",
+       "watchlist-hide": "Sembunyikan",
+       "watchlist-submit": "Tampilkan",
+       "wlshowtime": "Periode waktu untuk ditampilkan:",
        "wlshowhideminor": "suntingan kecil",
        "wlshowhidebots": "bot",
        "wlshowhideliu": "pengguna terdaftar",
        "wlshowhideanons": "pengguna anonim",
        "wlshowhidepatr": "suntingan terpatroli",
        "wlshowhidemine": "suntingan saya",
+       "wlshowhidecategorization": "kategorisasi halaman",
        "watchlist-options": "Opsi daftar pantauan",
        "watching": "Memantau...",
        "unwatching": "Menghilangkan pemantauan...",
        "deletepage": "Hapus halaman",
        "confirm": "Konfirmasi",
        "excontent": "isi sebelumnya: '$1'",
-       "excontentauthor": "isinya hanya berupa: '$1' (dan satu-satunya penyumbang adalah '[[Special:Contributions/$2|$2]]')",
+       "excontentauthor": "isinya hanya berupa: \"$1\", dan satu-satunya penyumbang adalah \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|bicara]])",
        "exbeforeblank": "isi sebelum dikosongkan: '$1'",
        "delete-confirm": "Hapus \"$1\"",
        "delete-legend": "Hapus",
        "historywarning": "<strong>Peringatan:</strong> Laman yang akan Anda hapus memiliki riwayat dengan $1 perubahan:",
+       "historyaction-submit": "Tampilkan",
        "confirmdeletetext": "Anda akan menghapus halaman atau berkas ini secara permanen berikut semua sejarahnya dari basis data. Pastikan bahwa Anda memang ingin melakukannya, mengetahui segala akibatnya, dan apa yang Anda lakukan ini adalah sejalan dengan [[{{MediaWiki:Policy-url}}|kebijakan {{SITENAME}}]].",
        "actioncomplete": "Proses selesai",
        "actionfailed": "Eksekusi gagal",
        "rollback-success": "Pembatalan suntingan oleh $1; dibatalkan ke versi terakhir oleh $2.",
        "sessionfailure-title": "Kegagalan sesi",
        "sessionfailure": "Sepertinya ada masalah dengan sesi log Anda; log Anda telah dibatalkan untuk mencegah pembajakan. Silakan tekan tombol \"kembali\" dan muat kembali halaman sebelum Anda masuk, lalu coba lagi.",
+       "changecontentmodel": "Ubah model isi sebuah halaman",
+       "changecontentmodel-legend": "Ubah model isi",
        "changecontentmodel-title-label": "Judul halaman",
        "changecontentmodel-model-label": "Model konten baru",
        "changecontentmodel-reason-label": "Alasan:",
        "changecontentmodel-success-title": "Model konten ini telah diubah",
        "changecontentmodel-success-text": "Jenis konten [[:$1]] telah diubah",
+       "changecontentmodel-cannot-convert": "Isi pada [[:$1]] tidak dapat ditukar kepada jenis $2.",
+       "changecontentmodel-nodirectediting": "Model isi $1 tidak mendukung suntingan langsung",
+       "log-name-contentmodel": "Log perubahan model konten",
+       "log-description-contentmodel": "Peristiwa terkait model konten sebuah halaman",
+       "logentry-contentmodel-change": "$1 {{GENDER:$2|mengubah}} model konten halaman $3 dari \"$4\" ke \"$5\"",
        "logentry-contentmodel-change-revertlink": "batalkan",
        "logentry-contentmodel-change-revert": "batalkan",
        "protectlogpage": "Log pelindungan",
        "undeletepagetext": "{{PLURAL:$1|Halaman berikut|Sejumlah $1 halaman}} telah dihapus tapi masih ada di dalam arsip dan dapat dikembalikan. Arsip tersebut mungkin akan dibersihkan secara berkala.",
        "undelete-fieldset-title": "Mengembalikan revisi",
        "undeleteextrahelp": "Untuk mengembalikan seluruh versi terdahulu halaman, biarkan semua kotak cek tidak terpilih dan klik '''''{{int:undeletebtn}}'''''.\nUntuk melakukan pengembalian selektif, cek kotak revisi yang sesuai dengan revisi yang ingin dikembalikan, dan klik '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|revisi|revisi}} diarsipkan",
+       "undeleterevisions": "$1 {{PLURAL:$1|revisi|revisi}} dihapus",
        "undeletehistory": "Jika Anda mengembalikan halaman tersebut, semua revisi juga akan dikembalikan ke dalam daftar versi terdahulu halaman.\nJika sebuah halaman baru dengan nama yang sama telah dibuat sejak penghapusan, revisi-revisi yang dikembalikan tersebut akan ditampilkan dalam daftar versi terdahulu.",
        "undeleterevdel": "Pembatalan penghapusan tidak akan dilakukan jika hal tersebut akan mengakibatkan revisi terkini halaman terhapus sebagian. Pada kondisi tersebut, Anda harus menghilangkan cek atau menghilangkan penyembunyian revisi yang dihapus terakhir. Revisi berkas yang tidak dapat Anda lihat tidak akan dipulihkan.",
        "undeletehistorynoadmin": "Halaman ini telah dihapus.\nAlasan penghapusan diberikan pada ringkasan di bawah ini, berikut rincian pengguna yang telah melakukan penyuntingan pada halaman ini sebelum dihapus. Isi terakhir dari revisi yang telah dihapus ini hanya tersedia untuk pengurus.",
        "contributions": "Kontribusi {{GENDER:$1|pengguna}}",
        "contributions-title": "Kontribusi pengguna untuk $1",
        "mycontris": "Kontribusi",
+       "anoncontribs": "Kontribusi",
        "contribsub2": "Untuk {{GENDER:$3|$1}} ($2)",
        "contributions-userdoesnotexist": "Pengguna \"$1\" tidak terdaftar.",
        "nocontribs": "Tidak ada perubahan yang sesuai dengan kriteria tersebut.",
        "whatlinkshere-hidelinks": "$1 pranala",
        "whatlinkshere-hideimages": "$1 pranala berkas",
        "whatlinkshere-filters": "Penyaring",
+       "whatlinkshere-submit": "Tuju ke",
        "autoblockid": "Blokir otomatis #$1",
        "block": "Blokir pengguna",
        "unblock": "Buka blokir pengguna",
        "block-log-flags-hiddenname": "nama pengguna tersembunyi",
        "range_block_disabled": "Kemampuan pengurus dalam membuat blokir blok IP dimatikan.",
        "ipb_expiry_invalid": "Waktu kedaluwarsa tidak sah.",
+       "ipb_expiry_old": "Waktu kedaluwarsa adalah pada masa lampau.",
        "ipb_expiry_temp": "Pemblokiran atas nama pengguna yang disembunyikan harus permanen.",
        "ipb_hide_invalid": "Tak dapat menutup akun ini; akun tersebut memiliki {{PLURAL:$1|satu suntingan|$1 suntingan}}.",
        "ipb_already_blocked": "\"$1\" telah diblokir.",
        "lockedbyandtime": "(oleh $1 pada $2 $3)",
        "move-page": "Pindahkan $1",
        "move-page-legend": "Pindahkan halaman",
-       "movepagetext": "Menggunakan formulir di bawah ini akan mengubah nama suatu halaman dan memindahkan semua data sejarah ke nama baru.\nJudul lama akan menjadi halaman pengalihan ke judul baru.\nAnda dapat memperbarui pengalihan yang menuju ke judul asli secara otomatis.\nJika Anda memilih tidak, pastikan untuk memeriksa\n[[Special:DoubleRedirects|pengalihan ganda]] atau [[Special:BrokenRedirects|pengalihan rusak]].\nAnda bertanggung jawab untuk memastikan bahwa pranala terhubung ke tempat seharusnya.\n\nPerhatikan bahwa halaman '''tidak''' akan dipindah apabila telah ada halaman pada judul yang baru, kecuali bila halaman peralihan dan tidak mempunyai sejarah penyuntingan. \nIni berarti Anda dapat mengubah kembali nama halaman seperti semula apabila Anda membuat kesalahan, dan Anda tidak dapat menimpa halaman yang telah ada.\n\n'''Peringatan:'''\nIni dapat mengakibatkan perubahan drastis dan tak terduga bagi halaman yang populer; pastikan Anda mengerti konsekuensinya sebelum melanjutkan.",
-       "movepagetext-noredirectfixer": "Formulir di bawah ini digunakan untuk mengubah nama suatu halaman dan memindahkan semua data sejarah ke nama baru.\nJudul yang lama akan menjadi halaman peralihan menuju judul yang baru.\nPastikan untuk memeriksa pengalihan [[Special:DoubleRedirects|ganda]] atau [[Special:BrokenRedirects|rusak]].\nAnda bertanggung jawab untuk memastikan bahwa pranala terus menyambung ke halaman yang seharusnya.\n\nPerhatikan bahwa halaman '''tidak''' akan dipindah apabila telah ada halaman yang menggunakan judul yang baru, kecuali bila halaman tersebut kosong atau merupakan halaman peralihan dan tidak mempunyai sejarah penyuntingan.\nIni berarti Anda dapat mengubah nama halaman kembali seperti semula apabila Anda membuat kesalahan, dan Anda tidak dapat menimpa halaman yang telah ada.\n\n'''Peringatan:'''\nHal ini dapat mengakibatkan perubahan yang tak terduga dan drastis bagi halaman yang populer;\nPastikan Anda mengerti konsekuensi dari perbuatan ini sebelum melanjutkan.",
-       "movepagetalktext": "Halaman pembicaraan yang berkaitan juga akan dipindahkan secara otomatis '''kecuali apabila:'''\n\n*Sebuah halaman pembicaraan yang tidak kosong telah ada di bawah judul baru, atau\n*Anda tidak memberi tanda cek pada kotak di bawah ini\n\nDalam kasus tersebut, apabila diinginkan, Anda dapat memindahkan atau menggabungkan halaman secara manual.",
+       "movepagetext": "Menggunakan formulir di bawah ini akan mengubah nama suatu halaman dan memindahkan semua data sejarah ke nama baru.\nJudul lama akan menjadi halaman pengalihan ke judul baru.\nAnda dapat memperbarui pengalihan yang menuju ke judul asli secara otomatis.\nJika Anda memilih tidak, pastikan untuk memeriksa\n[[Special:DoubleRedirects|pengalihan ganda]] atau [[Special:BrokenRedirects|pengalihan rusak]].\nAnda bertanggung jawab untuk memastikan bahwa pranala terhubung ke tempat seharusnya.\n\nPerhatikan bahwa halaman '''tidak''' akan dipindah apabila telah ada halaman pada judul yang baru, kecuali bila halaman peralihan dan tidak mempunyai sejarah penyuntingan. \nIni berarti Anda dapat mengubah kembali nama halaman seperti semula apabila Anda membuat kesalahan, dan Anda tidak dapat menimpa halaman yang telah ada.\n\n'''Catatan:'''\nIni dapat mengakibatkan perubahan drastis dan tak terduga bagi halaman yang populer; pastikan Anda mengerti konsekuensinya sebelum melanjutkan.",
+       "movepagetext-noredirectfixer": "Formulir di bawah ini digunakan untuk mengubah nama suatu halaman dan memindahkan semua data sejarah ke nama baru.\nJudul yang lama akan menjadi halaman peralihan menuju judul yang baru.\nPastikan untuk memeriksa pengalihan [[Special:DoubleRedirects|ganda]] atau [[Special:BrokenRedirects|rusak]].\nAnda bertanggung jawab untuk memastikan bahwa pranala terus menyambung ke halaman yang seharusnya.\n\nPerhatikan bahwa halaman '''tidak''' akan dipindah apabila telah ada halaman yang menggunakan judul yang baru, kecuali bila halaman tersebut kosong atau merupakan halaman peralihan dan tidak mempunyai sejarah penyuntingan.\nIni berarti Anda dapat mengubah nama halaman kembali seperti semula apabila Anda membuat kesalahan, dan Anda tidak dapat menimpa halaman yang telah ada.\n\n'''Catatan:'''\nHal ini dapat mengakibatkan perubahan yang tak terduga dan drastis bagi halaman yang populer;\nPastikan Anda mengerti konsekuensi dari perbuatan ini sebelum melanjutkan.",
+       "movepagetalktext": "Jika Anda memberikan ceklis pada kotak ini, halaman pembicaraan yang berkaitan juga akan dipindahkan secara otomatis kecuali sebuah halaman pembicaraan yang tidak kosong telah ada di bawah judul baru.\n\nDalam kasus tersebut, apabila diinginkan, Anda dapat memindahkan atau menggabungkan halaman secara manual.",
        "moveuserpage-warning": "'''Peringatan:''' Anda tengah memindahkan halaman pengguna. Perlu diketahui bahwa hanya halaman yang akan dipindahkan namun pengguna ''tidak akan'' berganti nama.",
        "movecategorypage-warning": "<strong>Peringatan:</strong> Anda akan memindahkan halaman kategori. Perlu diketahui bahwa hanya halaman yang akan dipindahkan dan setiap halaman dalam kategori lama <em>tidak</em> akan dikategorikan ulang ke yang baru.",
        "movenologintext": "Anda harus menjadi pengguna terdaftar dan telah [[Special:UserLogin|masuk log]] untuk dapat memindahkan suatu halaman.",
        "movenosubpage": "Halaman ini tak memiliki subhalaman.",
        "movereason": "Alasan:",
        "revertmove": "batalkan",
-       "delete_and_move_text": "==Penghapusan diperlukan==\nHalaman yang dituju, \"[[:$1]]\", telah mempunyai isi. Apakah Anda hendak menghapusnya untuk memberikan ruang bagi pemindahan?",
+       "delete_and_move_text": "Halaman yang dituju, \"[[:$1]]\", telah berisi.\nApakah Anda ingin menghapusnya untuk memberikan ruang bagi pemindahan?",
        "delete_and_move_confirm": "Ya, hapus halaman tersebut",
        "delete_and_move_reason": "Dihapus untuk mengantisipasikan pemindahan halaman dari \"[[$1]]\"",
        "selfmove": "Pemindahan halaman tidak dapat dilakukan karena judul sumber dan judul tujuan sama.",
        "move-leave-redirect": "Buat pengalihan ke judul baru",
        "protectedpagemovewarning": "'''Peringatan''': Halaman ini telah dikunci sehingga hanya pengguna dengan hak akses pengurus yang bisa memindahkannya.\nEntri catatan terakhir disediakan di bawah untuk referensi:",
        "semiprotectedpagemovewarning": "'''Catatan:''' Halaman ini telah dikunci sehingga hanya pengguna terdaftar yang dapat memindahkannya.\nEntri catatan terakhir disediakan di bawah untuk referensi:",
-       "move-over-sharedrepo": "== Berkas sudah ada ==\n\n[[:$1]] sudah ada pada penyimpanan bersama. Memindahkan berkas ke judul ini akan menimpa berkas bersama.",
+       "move-over-sharedrepo": "[[:$1]] sudah tersedia pada penyimpanan bersama. Memindahkan berkas ke judul ini akan menimpa berkas bersama.",
        "file-exists-sharedrepo": "Nama berkas yang dipilih sudah digunakan pada suatu penyimpanan bersama.\nSilakan pilih nama lain.",
        "export": "Ekspor halaman",
        "exporttext": "Anda dapat mengekspor teks dan sejarah penyuntingan suatu halaman tertentu atau suatu set halaman dalam bentuk XML tertentu.\nHasil ekspor ini selanjutnya dapat diimpor ke wiki lainnya yang menggunakan perangkat lunak MediaWiki, dengan menggunakan fasilitas [[Special:Import|halaman impor]].\n\nUntuk mengekspor halaman, masukkan judul dalam kotak teks di bawah ini, satu judul per baris, dan pilih apakah Anda ingin mengekspor lengkap dengan versi terdahulunya, atau hanya versi terbaru dengan catatan penyuntingan terakhir.\n\nJika Anda hanya ingin mengimpor versi terbaru, Anda melakukannya lebih cepat dengan cara menggunakan pranala khusus, sebagai contoh: [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] untuk mengekspor halaman \"[[{{MediaWiki:Mainpage}}]]\".",
        "export-download": "Tawarkan untuk menyimpan sebagai suatu berkas",
        "export-templates": "Termasuk templat",
        "export-pagelinks": "Sertakan halaman terkait hingga kedalaman:",
+       "export-manual": "Tambahkan halaman secara manual:",
        "allmessages": "Pesan sistem",
        "allmessagesname": "Nama",
        "allmessagesdefault": "Teks baku",
        "import-nonewrevisions": "Tidak ada revisi yang diimpor (semua revisi telah ada atau dilewatkan karena kesalahan).",
        "xml-error-string": "$1 pada baris $2, kolom $3 (bita $4): $5",
        "import-upload": "Memuat data XML",
-       "import-token-mismatch": "Kehilangan data sesi. Silakan mencoba kembali.",
+       "import-token-mismatch": "Kehilangan data sesi.\n\nAnda mungkin telah keluar log. '''Mohon periksa apakah Anda masih masuk log dan coba kembali.'''\nJika masih belum berhasil, coba [[Special:UserLogout|keluar log]] dan masuk log kembali, dan periksa apakah peramban web mengizinkan penyimpanan kuki dari situs ini.",
        "import-invalid-interwiki": "Tidak dapat mengimpor dari wiki tersebut.",
        "import-error-edit": "Halaman \"$1\" tidak diimpor karena Anda tidak diizinkan untuk menyuntingnya.",
        "import-error-create": "Halaman \"$1\" tidak diimpor karena Anda tidak diizinkan untuk membuatnya.",
        "import-error-interwiki": "Halaman \" $1 \" tidak diimpor karena namanya dicadangkan untuk pranala eksternal (interwiki).",
-       "import-error-special": "Halaman \" $1 \" tidak diimpor karena milik ruang nama khusus yang tidak mengizinkan adanya halaman.",
+       "import-error-special": "Halaman \"$1\" tidak diimpor karena milik ruang nama khusus yang tidak mengizinkan adanya halaman.",
        "import-error-invalid": "Halaman \"$1\" tidak diimpor karena namanya tidak valid.",
        "import-error-unserialize": "Revisi  $2  halaman \" $1 \" tidak bisa diurutkan. Revisi dilaporkan untuk menggunakan konten model $3 urutan sebagai $4 .",
        "import-error-bad-location": "Revisi $2 menggunakan konten model $3 tidak dapat disimpan di \"$1\" di wiki ini karena model tidak didukung pada halaman tersebut.",
        "import-rootpage-nosubpage": "Ruang nama \"$1\" di halaman turunan tidak mengizinkan subhalaman.",
        "importlogpage": "Log impor",
        "importlogpagetext": "Di bawah ini adalah log impor administratif dari halaman-halaman, berikut riwayat suntingannya dari wiki lain.",
-       "import-logentry-upload-detail": "$1 {{PLURAL:$1|revisi|revisi}}",
-       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisi}} dari $2",
+       "import-logentry-upload-detail": "$1 {{PLURAL:$1|revisi|revisi}} diimpor",
+       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisi}} diimpor dari $2",
        "javascripttest": "Pengujian JavaScript",
        "javascripttest-pagetext-noframework": "Halaman ini disediakan untuk pengujian JavaScript yang sedang berjalan.",
        "javascripttest-pagetext-unknownframework": "Pengujian kerangka kerja \"$1\" tidak diketahui",
+       "javascripttest-pagetext-unknownaction": "Tindakan \"$1\" tidak dikenali.",
        "javascripttest-pagetext-frameworks": "Silakan pilih satu di antara kerangka kerja pengujian berikut: $1",
        "javascripttest-pagetext-skins": "Pilih kulit yang ingin Anda uji:",
        "javascripttest-qunit-intro": "Lihat [$1 dokumentasi pengujian] di mediawiki.org.",
-       "tooltip-pt-userpage": "Halaman pengguna Anda",
+       "tooltip-pt-userpage": "Halaman {{GENDER:|pengguna Anda}}",
        "tooltip-pt-anonuserpage": "Halaman pengguna IP Anda",
-       "tooltip-pt-mytalk": "Halaman pembicaraan Anda",
+       "tooltip-pt-mytalk": "Halaman {{GENDER:|pembicaraan Anda}}",
        "tooltip-pt-anontalk": "Pembicaraan tentang suntingan dari alamat IP ini",
-       "tooltip-pt-preferences": "Preferensi saya",
+       "tooltip-pt-preferences": "Preferensi {{GENDER:|Anda}}",
        "tooltip-pt-watchlist": "Daftar halaman yang saya pantau.",
-       "tooltip-pt-mycontris": "Daftar kontribusi Anda",
+       "tooltip-pt-mycontris": "Daftar kontribusi {{GENDER:|Anda}}",
+       "tooltip-pt-anoncontribs": "Daftar suntingan yang dibuat dari alamat IP ini",
        "tooltip-pt-login": "Anda disarankan untuk masuk log, meskipun hal itu tidak diwajibkan.",
        "tooltip-pt-logout": "Keluar log",
        "tooltip-pt-createaccount": "Anda dianjurkan untuk membuat akun dan masuk log; meskipun, hal itu tidak diwajibkan",
        "tooltip-t-recentchangeslinked": "Perubahan terbaru halaman-halaman yang memiliki pranala ke halaman ini",
        "tooltip-feed-rss": "Umpan RSS untuk halaman ini",
        "tooltip-feed-atom": "Umpan Atom untuk halaman ini",
-       "tooltip-t-contributions": "Lihat daftar kontribusi pengguna ini",
-       "tooltip-t-emailuser": "Kirimkan surel kepada pengguna ini",
+       "tooltip-t-contributions": "Daftar kontribusi {{GENDER:$1|pengguna ini}}",
+       "tooltip-t-emailuser": "Kirimkan surel kepada {{GENDER:$1|pengguna ini}}",
+       "tooltip-t-info": "Informasi lanjut tentang halaman ini",
        "tooltip-t-upload": "Unggah berkas",
        "tooltip-t-specialpages": "Daftar semua halaman istimewa",
        "tooltip-t-print": "Versi cetak halaman ini",
        "pageinfo-robot-index": "Diperbolehkan",
        "pageinfo-robot-noindex": "Tidak diperbolehkan",
        "pageinfo-watchers": "Jumlah pemantau halaman",
+       "pageinfo-visiting-watchers": "Jumlah pemantau halaman yang mengunjungi suntingan terkini",
        "pageinfo-few-watchers": "Kurang dari $1 {{PLURAL:$1|pengunjung}}",
+       "pageinfo-few-visiting-watchers": "Mungkin ada atau tidak ada pemantau halaman yang mengunjungi suntingan terkini",
        "pageinfo-redirects-name": "Jumah pengalihan ke halaman ini",
        "pageinfo-redirects-value": "$1",
        "pageinfo-subpages-name": "Subhalaman halaman ini",
        "pageinfo-protect-cascading-yes": "Ya",
        "pageinfo-protect-cascading-from": "Perlindungan mulai dari",
        "pageinfo-category-info": "Kategori informasi",
+       "pageinfo-category-total": "Jumlah anggota",
        "pageinfo-category-pages": "Jumlah halaman",
        "pageinfo-category-subcats": "Jumlah subkategori",
        "pageinfo-category-files": "Jumlah berkas",
        "markaspatrolleddiff": "Tandai telah dipatroli",
        "markaspatrolledtext": "Tandai halaman ini telah dipatroli",
+       "markaspatrolledtext-file": "Tandai versi berkas sebagai terpatroli",
        "markedaspatrolled": "Ditandai telah dipatroli",
        "markedaspatrolledtext": "Revisi yang terpilih dari [[:$1]] telah ditandai sebagai terpatroli.",
        "rcpatroldisabled": "Patroli perubahan terbaru dimatikan",
        "patrol-log-page": "Log patroli",
        "patrol-log-header": "Ini adalah log revisi terpatroli.",
        "log-show-hide-patrol": "$1 log patroli",
+       "log-show-hide-tag": "log tag $1",
        "deletedrevision": "Revisi lama yang dihapus $1",
        "filedeleteerror-short": "Kesalahan waktu menghapus berkas: $1",
        "filedeleteerror-long": "Terjadi kesalahan sewaktu menghapus berkas:\n\n$1",
        "svg-long-error": "Berkas SVG tidak sah: $1",
        "show-big-image": "Ukuran asli",
        "show-big-image-preview": "Ukuran pratayang ini: $1.",
+       "show-big-image-preview-differ": "Ukuran pratayang $3 ini dari berkas $2 ini: $1",
        "show-big-image-other": "{{PLURAL:$2|Resolusi}} lain: $1.",
        "show-big-image-size": "$1 × $2 piksel",
        "file-info-gif-looped": "melingkar",
        "newimages-legend": "Penyaring",
        "newimages-label": "Nama berkas (atau sebagian dari nama berkas):",
        "newimages-showbots": "Tampilkan unggahan oleh bot",
+       "newimages-hidepatrolled": "Sembunyikan unggahan yang telah dipatroli",
        "noimages": "Tidak ada yang dilihat.",
        "ilsubmit": "Cari",
        "bydate": "berdasarkan tanggal",
        "exif-compression-34712": "JPEG2000",
        "exif-copyrighted-true": "Berhak cipta",
        "exif-copyrighted-false": "Status hak cipta belum diatur",
+       "exif-photometricinterpretation-1": "Hitam dan putih (Hitam adalah 0)",
        "exif-photometricinterpretation-2": "RGB",
        "exif-photometricinterpretation-6": "YCbCr",
        "exif-unknowndate": "Tanggal tak diketahui",
        "scarytranscludefailed-httpstatus": "[Pengambilan templat $1 gagal: HTTP $2]",
        "scarytranscludetoolong": "[URL terlalu panjang]",
        "deletedwhileediting": "'''Peringatan''': Halaman ini telah dihapus setelah Anda mulai melakukan penyuntingan!",
-       "confirmrecreate": "Pengguna [[User:$1|$1]] ([[User talk:$1|bicara]]) telah menghapus halaman selagi Anda mulai melakukan penyuntingan dengan alasan:\n: ''$2''\nSilakan konfirmasi jika Anda ingin membuat ulang halaman ini.",
-       "confirmrecreate-noreason": "Pengguna [[User:$1|$1]] ([[User talk:$1|bicara]]) telah menghapus halaman ini setelah Anda mulai menyunting. Harap konfirmasikan bahwa Anda ingin membuat ulang halaman ini.",
+       "confirmrecreate": "Pengguna [[User:$1|$1]] ([[User talk:$1|bicara]]) telah {{GENDER:$1|menghapus}} halaman selagi Anda mulai melakukan penyuntingan dengan alasan:\n: ''$2''\nSilakan konfirmasi jika Anda ingin membuat ulang halaman ini.",
+       "confirmrecreate-noreason": "Pengguna [[User:$1|$1]] ([[User talk:$1|bicara]]) telah {{GENDER:$1|menghapus}} halaman ini setelah Anda mulai menyunting. Harap konfirmasikan bahwa Anda ingin membuat ulang halaman ini.",
        "recreate": "Buat ulang",
        "unit-pixel": "px",
        "confirm_purge_button": "OK",
        "hebrew-calendar-m12-gen": "Elul",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|bicara]])",
        "timezone-utc": "UTC",
+       "timezone-local": "Lokal",
        "duplicate-defaultsort": "Peringatan: Kunci pengurutan baku \"$2\" mengabaikan kunci pengurutan baku \"$1\" sebelumnya.",
        "duplicate-displaytitle": "<strong>Peringatan:</strong> Menampilkan judul \"$2\" menimpa judul tampilan \"$1\" sebelumnya.",
+       "invalid-indicator-name": "'''Galat:''' Atribut ''nama'' indikator status halaman tidak boleh kosong.",
        "version": "Versi",
        "version-extensions": "Ekstensi terinstal",
        "version-skins": "Kulit yang diinstal",
        "version-entrypoints-header-url": "URL",
        "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Artikel path]",
        "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Skrip path]",
+       "version-libraries": "perpustakaan yang terpasang",
        "version-libraries-library": "Perpustakaan",
        "version-libraries-version": "Versi",
        "version-libraries-license": "Lisensi",
        "version-libraries-description": "Deskripsi",
        "version-libraries-authors": "Pembuat",
-       "redirect": "Pengalihan berdasarkan ID berkas, pengguna, halaman atau revisi",
+       "redirect": "Pengalihan berdasarkan ID berkas, pengguna, halaman, revisi, atau log",
        "redirect-legend": "Pengalihan ke sebuah berkas atau halaman",
        "redirect-summary": "Halaman istimewa ini beralih ke berkas (sesuai nama berkasnya), halaman (sesuai ID revisinya), atau halaman pengguna (sesuai ID numerik penggunanya). Penggunaan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], atau [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Lanjut",
        "redirect-page": "ID Halaman",
        "redirect-revision": "Revisi halaman",
        "redirect-file": "Nama berkas",
+       "redirect-logid": "ID log",
        "redirect-not-exists": "Nilai tidak ditemukan",
        "fileduplicatesearch": "Pencarian berkas duplikat",
        "fileduplicatesearch-summary": "Pencarian duplikat berkas berdasarkan nilai hash-nya.",
        "tags-actions-header": "Tindakan",
        "tags-active-yes": "Ya",
        "tags-active-no": "Tidak",
+       "tags-source-extension": "Ditetapkan oleh suatu ekstensi",
+       "tags-source-manual": "Digunakan secara manual oleh pengguna dan bot",
        "tags-source-none": "Tidak digunakan lagi",
        "tags-edit": "sunting",
        "tags-delete": "hapus",
        "tags-activate": "aktifkan",
        "tags-deactivate": "nonaktifkan",
        "tags-hitcount": "$1 {{PLURAL:$1|perubahan}}",
+       "tags-manage-no-permission": "Anda tak memiliki hak akses untuk mengatur perubahan tag.",
        "tags-manage-blocked": "Anda tidak dapat mengganti tag ketika sedang diblokir.",
        "tags-create-heading": "Buat sebuah tag baru",
+       "tags-create-explanation": "Secara baku, tag yang baru dibuat akan tersedia untuk digunakan oleh pengguna dan bot.",
+       "tags-create-tag-name": "Nama tag:",
        "tags-create-reason": "Alasan:",
        "tags-create-submit": "Buat",
+       "tags-create-no-name": "Anda harus memberikan nama tag.",
+       "tags-create-invalid-chars": "Nama tag tidak boleh mengandung koma (<code>,</code>) atau garis miring (<code>/</code>).",
+       "tags-create-invalid-title-chars": "Nama tag tidak boleh mengandung karakter yang tidak bisa digunakan dalam judul halaman.",
+       "tags-create-already-exists": "Tag \"$1\" sudah ada.",
        "tags-delete-reason": "Alasan:",
        "tags-activate-reason": "Alasan:",
        "tags-activate-submit": "Aktifkan",
index 56f8168..63d5d27 100644 (file)
        "upload-dialog-button-done": "Lokið",
        "upload-dialog-button-save": "Vista",
        "upload-dialog-button-upload": "Hlaða inn",
-       "upload-form-label-select-file": "Velja skrá",
        "upload-form-label-infoform-title": "Nánar",
        "upload-form-label-infoform-name": "Heiti",
        "upload-form-label-infoform-name-tooltip": "Einstakur og lýsandi titill, sem mun verða skráarnafn. Þú mátt nota einfalt mál með bilum. Ekki hafa með neina skráarendingu.",
        "foreign-structured-upload-form-label-own-work": "Það er mitt eigið verk",
        "foreign-structured-upload-form-label-infoform-categories": "Flokkar",
        "foreign-structured-upload-form-label-infoform-date": "Dagsetning",
-       "foreign-structured-upload-form-3-label-yes": "Já",
-       "foreign-structured-upload-form-3-label-no": "Nei",
        "backend-fail-stream": "Gat ekki streymt skránni „$1“.",
        "backend-fail-backup": "Öryggisafritun skrárinnar $1 mistókst.",
        "backend-fail-notexists": "Skráin $1 er ekki til.",
index 1b4419f..5a0ddc4 100644 (file)
        "upload-dialog-button-done": "Fatto",
        "upload-dialog-button-save": "Salva",
        "upload-dialog-button-upload": "Carica",
-       "upload-form-label-select-file": "Seleziona file",
        "upload-form-label-infoform-title": "Dettagli",
        "upload-form-label-infoform-name": "Nome",
        "upload-form-label-infoform-name-tooltip": "Un titolo breve e distintivo per il file, che verrà utilizzato come suo nome. Puoi usare un linguaggio semplice con spazi. Non includere l'estensione del file.",
        "foreign-structured-upload-form-label-own-work-message-shared": "Attesto che possiedo i diritti d'autore su questo file, e accetto irrevocabilmente il rilascio di questo file su Wikimedia Commons in base alla licenza [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribuzione-Condividi allo stesso modo 4.0], e accetto le [https://wikimediafoundation.org/wiki/Terms_of_Use Condizioni d'uso].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Se non possiedi i diritti d'autore su questo file, o se lo vuoi rilasciare con una licenza diversa, usa il [https://commons.wikimedia.org/wiki/Special:UploadWizard caricamento guidato di Commons].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Puoi anche provare ad usare la [[Special:Upload|pagina di caricamento su {{SITENAME}}]], se il sito consente il caricamento di questo file in base alle sue politiche.",
-       "foreign-structured-upload-form-2-label-intro": "Grazie per aver donato un'immagine da poter usare su {{SITENAME}}. Dovresti continuare solo se soddisfa alcune condizioni:",
-       "foreign-structured-upload-form-2-label-ownwork": "Deve essere interamente <strong>una tua creazione</strong>, non semplicemente prese da Internet",
-       "foreign-structured-upload-form-2-label-noderiv": "Non deve contenere <strong>alcun lavoro da parte di chiunque altro</strong>, o ispirato da alcuno",
-       "foreign-structured-upload-form-2-label-useful": "Dovrebbe essere <strong>educativo e utile</strong> per insegnare agli altri",
-       "foreign-structured-upload-form-2-label-ccbysa": "Devi accettare di <strong>pubblicare irrevocabilmente</strong> su internet in base alla licenza [https://creativecommons.org/licenses/by-sa/4.0/deed.it Creative Commons Attribuzione-Condividi allo stesso modo 4.0]",
-       "foreign-structured-upload-form-2-label-alternative": "Se non tutte le precedenti condizioni sono vere, puoi comunque caricare questo file usando il [https://commons.wikimedia.org/wiki/Special:UploadWizard caricamento guidato su Commons], a patto che sia disponibile con una licenza libera.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Caricando questo file, affermi che possiedi il copyright su questo file, e accetti irrevocabilmente di rilasciare questo file su Wikimedia Commons il base alla licenza Creative Commons Attribuzione-Condividi allo stesso modo 4.0, ed accetti inoltre le [https://wikimediafoundation.org/wiki/Terms_of_Use condizioni d'uso].",
-       "foreign-structured-upload-form-3-label-question-website": "Hai scaricato questa immagine da un sito web, o l'hai presa da un motore di ricerca per immagini?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Hai creato tu questa immagine (scattato la foto, creato il disegno, ecc.)?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Contiene, o è ispirato, da opere di altri, come un logo?",
-       "foreign-structured-upload-form-3-label-yes": "Sì",
-       "foreign-structured-upload-form-3-label-no": "No",
-       "foreign-structured-upload-form-3-label-alternative": "Purtroppo, in questo caso, questo strumento non supporta il caricamento di questo file. Puoi ancora caricarlo usando il [https://commons.wikimedia.org/wiki/Special:UploadWizard caricamento guidato su Commons], a patto che sia disponibile con una licenza libera.",
-       "foreign-structured-upload-form-4-label-good": "Usando questo strumento, puoi caricare grafici educativi che hai creato e fotografie che hai scattato, e che non contengono lavoro di proprietà di qualcun altro.",
-       "foreign-structured-upload-form-4-label-bad": "Non puoi caricare immagini trovate su un motore di ricerca o scaricate da un altro sito web.",
        "backend-fail-stream": "Impossibile trasmettere il file $1.",
        "backend-fail-backup": "Impossibile eseguire il backup del file $1 .",
        "backend-fail-notexists": "Il file $1 non esiste.",
index 7a93646..1615403 100644 (file)
@@ -76,7 +76,7 @@
        "tog-hideminor": "最近の更新に細部の編集を表示しない",
        "tog-hidepatrolled": "最近の更新に巡回済みの編集を表示しない",
        "tog-newpageshidepatrolled": "新しいページの一覧に、巡回済みのページを表示しない",
-       "tog-hidecategorization": "ページのカテゴリを表示しない",
+       "tog-hidecategorization": "ページのカテゴリ追加・除去を表示しない",
        "tog-extendwatchlist": "ウォッチリストを拡張し、最新のものだけではなくすべての変更を表示",
        "tog-usenewrc": "最近の更新とウォッチリストで、複数の変更をページごとにまとめる",
        "tog-numberheadings": "見出しに番号を自動的に振る",
        "tog-watchlistreloadautomatically": "フィルタが変更されるたびに、ウォッチリストを自動的に再読み込みする (JavaScript が必要)",
        "tog-watchlisthideanons": "匿名利用者による編集をウォッチリストに表示しない",
        "tog-watchlisthidepatrolled": "巡回済みの編集をウォッチリストに表示しない",
-       "tog-watchlisthidecategorization": "ページのカテゴリを表示しない",
+       "tog-watchlisthidecategorization": "ページのカテゴリ追加・除去を表示しない",
        "tog-ccmeonemails": "他の利用者に送信したメールの控えを自分にも送信",
        "tog-diffonly": "差分の下にページ内容を表示しない",
        "tog-showhiddencats": "隠しカテゴリを表示",
        "rcshowhidemine": "自分の編集を$1",
        "rcshowhidemine-show": "表示",
        "rcshowhidemine-hide": "非表示",
-       "rcshowhidecategorization": "ã\83\9aã\83¼ã\82¸ã\81®ã\82«ã\83\86ã\82´ã\83©ã\82¤ã\82ºを$1",
+       "rcshowhidecategorization": "ã\83\9aã\83¼ã\82¸ã\81®ã\82«ã\83\86ã\82´ã\83ªã\83¼è¿½å\8a ã\83»é\99¤å\8e»を$1",
        "rcshowhidecategorization-show": "表示",
        "rcshowhidecategorization-hide": "非表示",
        "rclinks": "最近 $2 日間の更新を最大 $1 件表示<br />$3",
        "upload-dialog-button-done": "完了",
        "upload-dialog-button-save": "保存",
        "upload-dialog-button-upload": "アップロード",
-       "upload-form-label-select-file": "ファイル選択",
        "upload-form-label-infoform-title": "詳細",
        "upload-form-label-infoform-name": "名前",
        "upload-form-label-infoform-name-tooltip": "ファイル固有の説明的な表題。ファイル名として使われます。平易な言葉を使い、空白を入れることができます。拡張子は含めないでください。",
        "foreign-structured-upload-form-label-own-work-message-shared": "私は、このファイルの著作権を所有していることを宣誓し、取消し不能な形で  [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0] ライセンスのもとでウィキメディア・コモンズに、このファイルを解放することに同意します。そして私は、  [https://wikimediafoundation.org/wiki/Terms_of_Use Terms of Use] に同意します。",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "このファイルの著作権を所有していない場合、または別のライセンスの下でそれをリリースしたい場合には、 [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Upload Wizard] を使用することを検討してください。",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "もしサイトが、それらの方針の下にて、このファイルのアップロードを許可している場合は、[[Special:Upload|{{SITENAME}}上でのアップロードページ]]の利用も検討できます。",
-       "foreign-structured-upload-form-3-label-yes": "はい",
-       "foreign-structured-upload-form-3-label-no": "いいえ",
        "backend-fail-stream": "ファイル $1 をストリームできませんでした。",
        "backend-fail-backup": "ファイル $1 をバックアップできませんでした。",
        "backend-fail-notexists": "ファイル $1 は存在しません。",
        "apisandbox": "APIサンドボックス",
        "apisandbox-api-disabled": "このウェブサイトでは、API は無効になっています。",
        "apisandbox-intro": "このページでは、<strong>MediaWiki ウェブサービス API</strong> を試用できます。\nAPI の使用方法の詳細は[[mw:API:Main page|API のドキュメント]]をご覧ください。例: [//www.mediawiki.org/wiki/API#A_simple_example Main Pageの内容を取得]。操作を選択すると他の例を閲覧できます。\n\nこれはサンドボックスですが、このページで実行した操作によってウィキが変更される場合があることにご注意ください。",
+       "apisandbox-fullscreen": "パネルを展開",
        "apisandbox-unfullscreen": "ページを表示",
        "apisandbox-submit": "リクエストする",
        "apisandbox-reset": "消去",
        "wlshowhideanons": "IP利用者",
        "wlshowhidepatr": "巡回された編集",
        "wlshowhidemine": "自分の編集",
-       "wlshowhidecategorization": "ã\83\9aã\83¼ã\82¸ã\81®ã\82«ã\83\86ã\82´ã\83©ã\82¤ã\82º",
+       "wlshowhidecategorization": "ã\83\9aã\83¼ã\82¸ã\81®ã\82«ã\83\86ã\82´ã\83ªã\83¼è¿½å\8a ã\83»é\99¤å\8e»",
        "watchlist-options": "ウォッチリストのオプション",
        "watching": "ウォッチリストに追加中...",
        "unwatching": "ウォッチリストから除去中...",
index ff3d3cc..bcff5d2 100644 (file)
        "previewnote": "'''დაიმახსოვრეთ, ეს მხოლოდ წინასწარი გადახედვაა.'''\nთქვენი ცვლილებები ჯერ არ შენახულა!",
        "continue-editing": "რედაქტირებაზე გადასვლა",
        "previewconflict": "შავი ნიმუში უჩვენებს ტექსტს ზედა რედაქტირების ფანჯარაში, როგორც ის გამოჩნდება თუ თქვენ მას შეინახავთ.",
-       "session_fail_preview": "'''უკაცრავად! ვერ შევძელით თქვენი რედაქტირების შენახვა სესიის მონაცემთა დაკარგვის გამო.\nგთხოვთ ისევ სცადოთ.\nთუ პრობლემა განმეორდა, სცადეთ [[Special:UserLogout|სისტემიდან გასვლა]] და ხელახლა შემოსვლა.'''",
-       "session_fail_preview_html": "'''სამწუხაროდ, ჩვენ ვერ განვახორციელეთ თქვენი რედაქტირება სესიის მონაცემთა დაკარგვის გამო.'''\n\n''რადგანაც ამ ვიკის აქვს დაუმუშავებელი HTML ჩართული, წინასწარი გადახედვა დამალულია ჯავასკრიპტის შეტევის საწინააღმდეგოდ სიფრთხილის მიზნით.''\n\n'''თუ ეს მიღებული რედაქტირების მცდელობა იყო, გთხოვთ ისევ სცადოთ. თუ იგი კვლავ არ მუშაობს, სცადეთ თავიდან [[Special:UserLogout/დარეგისტრირებ]]ა (შესვლა)'''",
+       "session_fail_preview": "უკაცრავად! ვერ შევძელით თქვენი რედაქტირების შენახვა სესიის მონაცემთა დაკარგვის გამო.\n\nშესაძლოა თქვენ სისტემიდან გამოვარდით. <strong>გთხოვთ დაადასტურეთ რომ კვლავ სისტემაში ხართ და სცადეთ კიდევ ერთხელ</strong>.\nთუ პრობლემა განმეორდება, გთხოვთ [[Special:UserLogout|გადით სისტემიდან]] და კვლავ შემოდით, ასევე დარწმუნდით, რომ თქვენი ბრაუზერი იძლევა ამ საიტიდან ქუქის გამოყენების უფლებას.",
+       "session_fail_preview_html": "უკაცრავად, ჩვენ ვერ განვახორციელეთ თქვენი რედაქტირება სესიის მონაცემთა დაკარგვის გამო.\n\n<em>რადგანაც {{SITENAME}}-ს აქვს დაუმუშავებელი HTML ჩართული, წინასწარი გადახედვა დამალულია ჯავასკრიპტის შეტევის საწინააღმდეგოდ სიფრთხილის მიზნით.</em>\n\n<strong>თუ ეს რედაქტირების მცდელობა იყო, გთხოვთ ისევ სცადოთ.</strong> თუ პრობლემა განმეორდება, [[Special:UserLogout|გადით სისტემიდან]] და კვლავ შემოდით, ასევე დარწმუნდით, რომ თქვენი ბრაუზერი იძლევა ამ საიტიდან ქუქის გამოყენების უფლებას.",
        "token_suffix_mismatch": "'''თქვენი შესწორება გაუქმდა რადგანაც პროგრამა არასწორედ აღიქვამს პუნქტუაციის ნიშნებს რედაქტირების ფანჯარაში. შესწრება გაუქმდა სტატიის არ გაფუჭების მიზნით. შესაძლოა ეს გამოწვეულია გაფუჭებული ვებ პროქსის გამოყენებით.'''",
        "edit_form_incomplete": "'''რედაქტირებების ნაწილმა სერვერამდე ვერ მიაღწია; გთხოვთ, შეამოწმეთ თქვენი რედაქტირებების სრულყოფილება და სცადეთ განმეორებით.'''",
        "editing": "რედაქტირება: $1",
        "mergehistory-empty": "რაიმე ცვლილების შერწყმა შეუძლებელია.",
        "mergehistory-done": "$3 {{PLURAL:$3|შესწორება|შესწორებები}} $1-დან წარმატებით {{PLURAL:$3|შეერწყა|შეერწყა}} [[:$2]]-ს.",
        "mergehistory-fail": "ვერ მოხერხდა გვერდების ისტორიის გაერთიანება, გთხოვთ შეამოწმოთ გვერდის პაარამეტრები და დრო.",
+       "mergehistory-fail-bad-timestamp": "მიმდევრობა არასწორია.",
+       "mergehistory-fail-invalid-source": "წყაროს გვერდი არასწორია.",
+       "mergehistory-fail-invalid-dest": "დანიშნულების გვერდი არასწორია.",
+       "mergehistory-fail-no-change": "ისტორიის გაერთიანებას ცვლილებები არ გაუერთიანებია. გთხოვთ კვლავ შეამოწმოთ გვერდი და დროის პარამეტრები.",
+       "mergehistory-fail-permission": "არ გაქვთ საკმარისი ნებართვა ისტორიის გასაერთიანებლად.",
+       "mergehistory-fail-self-merge": "წყაროსი და დანიშნულების გვერდები ერთიდაიგივეა.",
        "mergehistory-fail-toobig": "არ ხერხდება ისტორიების შერწყმა, რამეთუ აუცილებელია დაშვებული ლიმიტის მეტი ნაწილის გადატანა $1 ვერსიაში.",
        "mergehistory-no-source": "დანიშნულების გვერდი $1 არ არსებობს.",
        "mergehistory-no-destination": "დანიშნულების გვერდი $1 არ არსებობს.",
        "group": "ჯგუფი:",
        "group-user": "მომხმარებლები",
        "group-autoconfirmed": "ავტომატურად დადასტურებული მომხმარებლები",
-       "group-bot": "á\83 á\83\9dá\83\91á\83\9dá\83¢á\83\94á\83\91á\83\98",
+       "group-bot": "ბოტები",
        "group-sysop": "ადმინისტრატორები",
        "group-bureaucrat": "ბიუროკრატები",
        "group-suppress": "რევიზორები",
        "group-sysop-member": "{{GENDER:$1|ადმინისტრატორი}}",
        "group-bureaucrat-member": "{{GENDER:$1|ბიუროკრატი}}",
        "group-suppress-member": "{{GENDER:$1|რევიზორები}}",
-       "grouppage-user": "{{ns:project}}:á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\94á\83\9aი",
+       "grouppage-user": "{{ns:project}}:á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\94á\83\91ი",
        "grouppage-autoconfirmed": "{{ns:project}}:ავტომატურად დადასტურებული მომხმარებლები",
-       "grouppage-bot": "{{ns:project}}:á\83 á\83\9dá\83\91á\83\9dá\83¢á\83\94á\83\91á\83\98",
+       "grouppage-bot": "{{ns:project}}:ბოტები",
        "grouppage-sysop": "{{ns:project}}:ადმინისტრატორები",
        "grouppage-bureaucrat": "{{ns:project}}:ბიუროკრატები",
        "grouppage-suppress": "{{ns:project}}:რევიზორები",
        "right-undelete": "გვერდის აღდგენა",
        "right-suppressrevision": "გვერდების დამალული ვერსიების ხილვა, დამალვა და აღდგენა ყველა მომხმარებლისგან",
        "right-viewsuppressed": "ვერსიის ხილვა, რომელიც დამალულია ყველა მომხმარებლისათვის",
-       "right-suppressionlog": "á\83\99á\83\94á\83 á\83«á\83\9d ჟურნალების ნახვა",
+       "right-suppressionlog": "á\83\9eá\83\98á\83 á\83\90á\83\93á\83£á\83\9aá\83\98 ჟურნალების ნახვა",
        "right-block": "სხვა მომხმარებლების მიერ რედაქტირების აკრძალვა",
        "right-blockemail": "ელ ფოსტის გაგზავნის აკრძალვა",
        "right-hideuser": "მომხმარებლის სახელის დაბლოკვა და მისი დამალვა საზოგადოებისგან",
        "filename-tooshort": "ფაილის სახელი ზედმეტად მოკლეა",
        "filetype-banned": "ფაილის ეს ტიპი აკრძალულია",
        "verification-error": "ამ ფაილმა არ გაიარა შემოწმების პროცედურა.",
-       "hookaborted": "á\83\97á\83¥á\83\95á\83\94á\83\9c á\83\9bá\83\98á\83\94á\83  á\83¨á\83\94á\83\9bá\83\9dá\83\97á\83\90á\83\95á\83\90á\83\96á\83\94á\83\91á\83£á\83\9aá\83\98 á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\90 á\83\9bá\83\9dá\83\98á\83\9cá\83\98á\83¨á\83\9cá\83\90 á\83\92á\83\90á\83¤á\83\90á\83 á\83\97á\83\9dá\83\94á\83\91á\83\98á\83¡ á\83\93á\83\9dá\83\99á\83£á\83\9bá\83\94á\83\9cá\83¢á\83\90á\83ªá\83\98á\83\90á\83¨á\83\98.",
+       "hookaborted": "á\83\97á\83¥á\83\95á\83\94á\83\9c á\83\9bá\83\98á\83\94á\83  á\83¨á\83\94á\83\9bá\83\9dá\83\97á\83\90á\83\95á\83\90á\83\96á\83\94á\83\91á\83£á\83\9aá\83\98 á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\90 á\83\92á\83\90á\83£á\83¥á\83\9bá\83\93á\83\90 á\83\92á\83\90á\83¤á\83\90á\83 á\83\97á\83\9dá\83\94á\83\91á\83\98á\83¡ á\83\9bá\83\98á\83\94á\83 .",
        "illegal-filename": "ფაილის ეს სახელი აკრძალულია.",
        "overwrite": "არსებული ფაილის შეცვლა მიუღებელია.",
        "unknown-error": "აღმოჩენილია უცნობი შეცდომა.",
        "php-uploaddisabledtext": "ფაილების ატვირთვა შეჩერებულია PHP-ით. გთხოვთ შეამოწმოთ file_uploads-ის მნიშვნელობა.",
        "uploadscripted": "ფაილი შეიცავს HTML-კოდს, ან სკრიპტს, რომელიც ბროუზერმა შეიძლება არასწორედ გაანალიზოს.",
        "upload-scripted-pi-callback": "შეუძლებელია ფაილის ატვირთვა, რომელიც XML-stylesheet წარმოქმნის ინსტრუქციას შეიცავს.",
+       "uploaded-script-svg": "ნაპოვნია \"$1\" ელემენტი ატვირთულ SVG ფაილში.",
        "uploaded-hostile-svg": "ატვირთულ SVG-ფაილის style ელემენტში ნაპოვნია საფრთხის შემცვლელი CSS-ის კოდი.",
+       "uploaded-href-unsafe-target-svg": "ნაპოვნია href საშიშ მონაცემში: URI <code>&lt;$1 $2=\"$3\"&gt;</code> ატვირთულ SVG ფაილში.",
+       "uploaded-setting-href-svg": "დაბლოკილია \"set\" ტეგის გამოყენების ფუნქცია \"href\" ატრიბუტის დასამატებლად \"მშობელ\" ელემენტში.",
+       "uploaded-image-filter-svg": "ნაპოვნია სურათის ფილტრი URL-ით: <code>&lt;$1 $2=\"$3\"&gt;</code> ატვირთულ SVG ფაილში.",
        "uploadscriptednamespace": "ეს SVG ფაილი შეიცავს სახელთა არაკორექტულ სივრცეს \"$1\".",
        "uploadinvalidxml": "XML ჩატვირთულ ფაილში არ შეიძლება იყოს ანალიზირებული",
        "uploadvirus": "ფაილი ვირუსს შეიცავს! დეტალები: $1",
        "upload-dialog-button-done": "შესრულდა",
        "upload-dialog-button-save": "შენახვა",
        "upload-dialog-button-upload": "ატვირთვა",
-       "upload-form-label-select-file": "ფაილის არჩევა",
        "upload-form-label-infoform-title": "დეტალები",
        "upload-form-label-infoform-name": "სახელი",
        "upload-form-label-infoform-description": "აღწერა",
        "foreign-structured-upload-form-label-not-own-work-message-default": "თუ ვერ ტვირთავთ ამ ფაილს {{SITENAME}}-ის წესების დაცვით, გთხოვთ დახურეთ ეს ფანჯარა და სცადეთ სხვა მეთოდი.",
        "foreign-structured-upload-form-label-not-own-work-local-default": "შეგიძლიათ ასევე სცადოთ [[Special:Upload|ატვირთვის გვერდი {{SITENAME}}-ზე]], თუ ამ ფაილის ატვირთვა დაშვებულია მათი პოლიტიკის მიხედვით.",
        "foreign-structured-upload-form-label-own-work-message-shared": "მე ვადასტურებ, რომ ამ ფაილზე საავტორო უფლებების მფლობელი ვარ და ვთანხმდები ამ ფაილის შეუქცევადად განთავსებაზე ვიკისაწყობში [https://creativecommons.org/licenses/by-sa/4.0/deed.ka Creative Commons Attribution-ShareAlike 4.0] ლიცენზიით, აგრეთვე ვეთანხმები [https://wikimediafoundation.org/wiki/Terms_of_Use გამოყენების წესებს].",
-       "foreign-structured-upload-form-2-label-intro": "მადლობას გიხდით სურათის შემოტანისთვის {{SITENAME}}-ზე გამოსაყენებლად. გააგრძელეთ მხოლოდ მაშინ თუ ის აკმაკოყილებს რამდენიმე კრიტერიუმს:",
-       "foreign-structured-upload-form-2-label-ownwork": "ის აუცილებლად უნდა იყოს <strong>თქვენი შემოქმედება</strong> და არა ინტერნეტიდან აღებული.",
-       "foreign-structured-upload-form-2-label-noderiv": "<strong>არ უნდა შეიცავდეს</strong> სხვის ნამუშევარს, ასევე არ უნდა იგრძნობოდეს სხვისი ნამუშევრის გავლენა",
-       "foreign-structured-upload-form-2-label-useful": "უნდა იყოს სხვებისთვის <strong>საგანმანათლებლო და სასარგებლო</strong>",
-       "foreign-structured-upload-form-2-label-ccbysa": "მისი ატვირთვა ინტერნეტში <strong>დასაშვები</strong> უნდა იყოს [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0] ლიცენზიით",
-       "foreign-structured-upload-form-2-label-alternative": "თუ ყველა ჩამოთვლილი პირობა არ სრულდება, თქვენ მაინც შეიძლება შეძლოთ ფაილის ატვირთვა [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Upload Wizard]-ით, თუ მასზე ვრცელდება თავისუფალი ლიცენზია.",
-       "foreign-structured-upload-form-3-label-question-website": "ეს სურათი ვებ-გვერდიდან გადმოწერეთ თუ სურათების ძებნით მიაკვლიეთ მას?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "თავად შექმნეთ ეს სურათი (გადაიღეთ ფოტო, დახატეთ და ა.შ.)?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "შეიცავს ის ან დაფუძნებულია სხვის ნამუშევარზე, მაგალითად ლოგოზე?",
-       "foreign-structured-upload-form-3-label-yes": "დიახ",
-       "foreign-structured-upload-form-3-label-no": "არა",
+       "foreign-structured-upload-form-label-not-own-work-local-shared": "შეგიძლიათ ასევე სცადოთ [[Special:Upload|ატვირთვის გვერდი {{SITENAME}}-ზე]], თუ ამ ფაილის ატვირთვა დაშვებულია მათი პოლიტიკის შესაბამისად.",
        "backend-fail-stream": "ფაილი $1 ტრანსლირება ვერ მოხერხდა.",
        "backend-fail-backup": "ფაილი $1 სარეზერვო ასლის გაკეთება ვერ მოხერხდა.",
        "backend-fail-notexists": "ფაილი $1 არ არსებობს.",
        "apisandbox-fullscreen": "პანელის გაშლა",
        "apisandbox-fullscreen-tooltip": "პანელის გაშლა ისე, რომ ბრაუზერის მთელი ფანფარა დაიკავოს.",
        "apisandbox-unfullscreen": "გვერდის ჩვენება",
+       "apisandbox-unfullscreen-tooltip": "შეამცირე სავარჯიშოს პანელი, რათა გამოჩნდეს მედიავიკის სანავიგაციო ბმულები.",
        "apisandbox-submit": "მოთხოვნის გაკეთება",
        "apisandbox-reset": "წაშლა",
        "apisandbox-retry": "ხელახლა ცდა",
+       "apisandbox-loading": "API მოდულ \"$1\"-ზე ინფორმაცია იტვირთება...",
+       "apisandbox-load-error": "API-ის მოდულ \"$1\"-ზე ინფორმაციის ჩატვირთვისას მოხდა შეცდომა: $2",
        "apisandbox-no-parameters": "API მოდულს არ აქვს პარამეტრები.",
        "apisandbox-helpurls": "დახმარების ბმულები",
        "apisandbox-examples": "მაგალითები",
        "apisandbox-dynamic-parameters-add-label": "პარამეტრის დამატება:",
        "apisandbox-dynamic-parameters-add-placeholder": "პარამეტრის სახელი",
        "apisandbox-dynamic-error-exists": "პარამეტრი \"$1\" სახელით უკვე არსებობს.",
+       "apisandbox-deprecated-parameters": "შემცირებული პარამეტრები",
+       "apisandbox-fetch-token": "ტოკენის ავტომატური შევსება",
+       "apisandbox-submit-invalid-fields-title": "ზოგიერთი ველი არ აკმაყოფილებს კრიტერიუმებს",
        "apisandbox-submit-invalid-fields-message": "გთხოვთ, შეასწორეთ მონიშნული ველები და თავიდან სცადეთ.",
        "apisandbox-results": "შედეგები",
        "apisandbox-sending-request": "API მოთხოვნის გაგზავნა...",
        "apisandbox-loading-results": "API შედეგების მიღება...",
        "apisandbox-request-url-label": "მოთხოვნის URL:",
        "apisandbox-request-time": "თხოვნის დრო: $1მწ",
+       "apisandbox-results-fixtoken": "ტოკენის შესწორება და თავიდან გაგზავნა",
        "apisandbox-results-fixtoken-fail": "ვერ მოხერხდა $1 ტოკენის მოძიება.",
        "apisandbox-alert-page": "ველები ამ გვერდზე არ არის ვალიდური",
        "apisandbox-alert-field": "ამ ველის მნიშვნელობა არ არის ვალიდური",
        "changecontentmodel-success-title": "შინაარსის მოდელი შეიცვალა",
        "changecontentmodel-success-text": "[[:$1]]-ის კონტენტის ტიპი შეიცვალა.",
        "changecontentmodel-cannot-convert": "[[:$1]]-ის შინაარსის $2-ის ტიპზე კონვერტაცია შეუძლებელია.",
+       "changecontentmodel-nodirectediting": "$1 შინაარსის მოდელს არ აქვს პირდაპირი რედაქტირების მხარდაჭერა",
+       "log-name-contentmodel": "შინაარსის მოდელის შეცვლის ჟურნალი",
+       "log-description-contentmodel": "გვერდის შინაარსის მოდელთან დაკავშირებული მოვლენები",
+       "logentry-contentmodel-change": "$1-მა {{GENDER:$2|შეცვალა}} $3-ის გვერდის შინაარსის მოდელი \"$4\"-დან \"$5\"-ზე",
        "logentry-contentmodel-change-revertlink": "დაბრუნება",
        "logentry-contentmodel-change-revert": "დაბრუნება",
        "protectlogpage": "დაცვის ისტორია",
        "import-nonewrevisions": "ყველა რედაქცია იმპორტირებული იქნა.",
        "xml-error-string": "$1 ხაზში $2, პოზიციის $3 (ბაიტი $4): $5",
        "import-upload": "XML მონაცემების ატვირთვა",
-       "import-token-mismatch": "á\83¡á\83\94á\83\90á\83\9cá\83¡á\83\98á\83¡ á\83\9bá\83\9dá\83\9cá\83\90á\83ªá\83\94á\83\9bá\83\94á\83\91á\83\98 á\83\93á\83\90á\83\98á\83\99á\83\90á\83 á\83\92á\83\90. á\83\99á\83\98á\83\93á\83\94á\83\95 á\83\94á\83 á\83\97á\83®á\83\94á\83\9a á\83¡á\83ªá\83\90á\83\93á\83\94á\83\97!",
+       "import-token-mismatch": "á\83¡á\83\94á\83¡á\83\98á\83\98á\83¡ á\83\9bá\83\9dá\83\9cá\83\90á\83ªá\83\94á\83\9bá\83\94á\83\91á\83\98 á\83\93á\83\90á\83\98á\83\99á\83\90á\83 á\83\92á\83\90.\n\ná\83¨á\83\94á\83¡á\83\90á\83«á\83\9aá\83\9dá\83\90 á\83\97á\83¥á\83\95á\83\94á\83\9c á\83¡á\83\98á\83¡á\83¢á\83\94á\83\9bá\83\98á\83\93á\83\90á\83\9c á\83\92á\83\90á\83\9bá\83\9dá\83\95á\83\90á\83 á\83\93á\83\98á\83\97. <strong>á\83\92á\83\97á\83®á\83\9dá\83\95á\83\97 á\83\93á\83\90á\83\90á\83\93á\83\90á\83¡á\83¢á\83£á\83 á\83\94á\83\97 á\83 á\83\9dá\83\9b á\83\99á\83\95á\83\9aá\83\90á\83\95 á\83¡á\83\98á\83¡á\83¢á\83\94á\83\9bá\83\90á\83¨á\83\98 á\83®á\83\90á\83 á\83\97 á\83\93á\83\90 á\83¡á\83ªá\83\90á\83\93á\83\94á\83\97 á\83\99á\83\98á\83\93á\83\94á\83\95 á\83\94á\83 á\83\97á\83®á\83\94á\83\9a</strong>.\ná\83\97á\83£ á\83\9eá\83 á\83\9dá\83\91á\83\9aá\83\94á\83\9bá\83\90 á\83\92á\83\90á\83\9cá\83\9bá\83\94á\83\9dá\83 á\83\93á\83\94á\83\91á\83\90, á\83\92á\83\97á\83®á\83\9dá\83\95á\83\97 [[Special:UserLogout|á\83\92á\83\90á\83\93á\83\98á\83\97 á\83¡á\83\98á\83¡á\83¢á\83\94á\83\9bá\83\98á\83\93á\83\90á\83\9c]] á\83\93á\83\90 á\83\99á\83\95á\83\9aá\83\90á\83\95 á\83¨á\83\94á\83\9bá\83\9dá\83\93á\83\98á\83\97, á\83\90á\83¡á\83\94á\83\95á\83\94 á\83\93á\83\90á\83 á\83¬á\83\9bá\83£á\83\9cá\83\93á\83\98á\83\97, á\83 á\83\9dá\83\9b á\83\97á\83¥á\83\95á\83\94á\83\9cá\83\98 á\83\91á\83 á\83\90á\83£á\83\96á\83\94á\83 á\83\98 á\83\98á\83«á\83\9aá\83\94á\83\95á\83\90 á\83\90á\83\9b á\83¡á\83\90á\83\98á\83¢á\83\98á\83\93á\83\90á\83\9c á\83¥á\83£á\83¥á\83\98á\83¡ á\83\92á\83\90á\83\9bá\83\9dá\83§á\83\94á\83\9cá\83\94á\83\91á\83\98á\83¡ á\83£á\83¤á\83\9aá\83\94á\83\91á\83\90á\83¡.",
        "import-invalid-interwiki": "შეუძლებელია იმპორტირება მოცემული ვიკიდან.",
        "import-error-edit": "გვერდი „$1“ იმპორტირება არ მოხდა, რადგან თქვენ არ გაქვთ მისი რედაქტირების უფლება.",
        "import-error-create": "გვერდი „$1“ იმპორტირება არ მოხდა, რადგან თქვენ არ გაქვთ მისი შექმნის უფლება.",
        "pageinfo-watchers": "გვერდის დამკვირვებელთა რაოდენობა",
        "pageinfo-visiting-watchers": "გვერდის მნახველთა სია, რომლებიც ესტუმრნენ უკანასკნელ ცვლილებებს",
        "pageinfo-few-watchers": "სულ მცირე $1 {{PLURAL:$1|დამკვირვებელი|დამკვირვებელი}}",
+       "pageinfo-few-visiting-watchers": "შესაძლოა არის ან არ არის მომხმარებელი, რომელიც აკონტროლებს ბოლო ცვლილებებს",
        "pageinfo-redirects-name": "გადამისამართებების რაოდენობა ამ გვერდზე",
        "pageinfo-redirects-value": "$1",
        "pageinfo-subpages-name": "ამ გვერდის ქვეგვერდები",
        "tags-deactivate": "დეაქტივაცია",
        "tags-hitcount": "$1 ცვლილება",
        "tags-manage-no-permission": "თქვენ არ გაქვთ შეცვლილი დასათაურების მართვის უფლება",
+       "tags-manage-blocked": "თქვენ ვერ შეძლებთ ცვლილებების ტეგების მართვას სანამ დაბლოკილი ხართ.",
        "tags-create-heading": "ახალი ტეგის შექმნა",
        "tags-create-explanation": "კვლავ შექმნილი ტეგები ნაგულისხმევად იქნება შექმნილი და იქნება ხელმისაწვდომი მომხმარებლებისა და ბოტებისათვის",
        "tags-create-tag-name": "ტეგის სახელი:",
        "tags-apply-not-allowed-one": "დასათაურება «$1» ავტომატურად არ შეიძლება იქნას მიღებული.",
        "tags-apply-not-allowed-multi": "შემდეგი {{PLURAL:$2|ტეგი|ტეგები}} არ შეიძლება იყოს ხელით მიღებული: $1",
        "tags-update-no-permission": "თქვენ არ გაქვთ ტეგების დამატების ან შეცვლის უფლება ცალკეული ვერსიების ცვლილებებიდან ან ჟურნალების ჩანაწერებიდან",
+       "tags-update-blocked": "თქვენ ვერ შეძლებთ ცვლილებების ტეგების დამატებას ან წაშლას სანამ დაბლოკილი ხართ.",
        "tags-update-add-not-allowed-one": "ტეგი \"$1\" არ შეიძლება იყოს დამატებული მანუალურად",
        "tags-update-add-not-allowed-multi": "შემდეგი {{PLURAL:$2|ტეგი|ტეგები}} არ შეიძლება დამატებული იყოს ხელით: $1",
        "tags-update-remove-not-allowed-one": "დასათაურება \"$1\" არ შეიძლება იყოს წაშლილი",
        "expand_templates_generate_xml": "XML-ის ხის გარჩევის ჩვენება",
        "expand_templates_generate_rawhtml": "HTML ჩვენება",
        "expand_templates_preview": "წინა",
-       "expand_templates_preview_fail_html": "რადგან translatewiki.net-ზე ჩართული დაუმუშავებელი HTML-ის  მონაცემთა სესიის დაკარვა მოხდა, წინასწარი გადახედვა დამალულია უსაფრთხოების მიზნით, JavaScript-შეტევების საწინააღმდეგოდ.  \n\nთუ ეს იყო წინასწარი გადახედვის სწორი ცდა, გთხოვთ, კიდევ ერთხელ სცადეთ. თუკი თქვენ ისევ და ისევ არ გამოგდით, სცადეთ [[Special:UserLogout|სამუშაო სეანსის დასრულება]] და ხელახალი ავტორიზება.",
+       "expand_templates_preview_fail_html": "<em>რადგან {{SITENAME}}-ზე ჩართული დაუმუშავებელი HTML-ის  მონაცემთა სესიის დაკარვა მოხდა, წინასწარი გადახედვა დამალულია უსაფრთხოების მიზნით, JavaScript-შეტევების საწინააღმდეგოდ. </em> \n\n<strong>თუ ეს იყო წინასწარი გადახედვის სწორი ცდა, გთხოვთ, კიდევ ერთხელ სცადეთ.</strong> თუკი პრობლემა განმეორდება, [[Special:UserLogout|გადით სისტემიდან]] და კვლავ შემოდით, ასევე დარწმუნდით, რომ თქვენი ბრაუზერი იძლევა ამ საიტიდან ქუქის გამოყენების უფლებას.",
        "expand_templates_preview_fail_html_anon": "რადგან translatewiki.net-ზე ჩართული დაუმუშავებელი HTML და თქვენ არ გაქვთ გავლილი ავტორიზაცია, წინასწარი გადახედვა დამალულია უსაფრთხოების მიზნით, JavaScript-შეტევების საწინააღმდეგოდ.  \n\nთუ ეს იყო წინასწარი გადახედვის სწორი ცდა, გთხოვთ, [[Special:UserLogin|შედით]] და ხელმეორედ სცადეთ.",
        "expand_templates_input_missing": "თქვენ უნდა შეიყვანოთ მცირე ტექსტი მაინც.",
        "pagelanguage": "გვერდის ენის შეცვლა",
        "api-error-blacklisted": "გთხოვთ, აირჩიეთ სხვა, აღწერილობითი სათაური.",
        "sessionprovider-generic": "$1 სესიები",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "cookie-სთან დაკავშირებული სესიები",
+       "sessionprovider-nocookies": "შესაძლოა ქუქები გათიშულია. გთხოვთ ჩართეთ და სცადეთ განმეორებით.",
        "randomrootpage": "შემთხვევითი ძირეული გვერდი"
 }
index 45a62d6..4cf2d2c 100644 (file)
@@ -92,6 +92,7 @@
        "tog-watchlisthidebots": "주시문서 목록에서 봇 편집을 숨기기",
        "tog-watchlisthideminor": "주시문서 목록에서 사소한 편집을 숨기기",
        "tog-watchlisthideliu": "주시문서 목록에서 로그인한 사용자의 편집을 숨기기",
+       "tog-watchlistreloadautomatically": "필터가 수정될 때마다 주시문서 목록 자동으로 새로 고치기 (자바스크립트 필요)",
        "tog-watchlisthideanons": "주시문서 목록에서 익명 사용자의 편집을 숨기기",
        "tog-watchlisthidepatrolled": "주시문서 목록에서 점검한 편집을 숨기기",
        "tog-watchlisthidecategorization": "페이지 종류 숨기기",
        "virus-scanfailed": "검사 실패 (코드 $1)",
        "virus-unknownscanner": "알 수 없는 안티 바이러스:",
        "logouttext": "<strong>이제 로그아웃했습니다.</strong>\n\n브라우저 캐시를 지울 때까지 일부 문서에서 아직 로그인이 되어 있는 것처럼 보일 수 있음에 유의하세요.",
+       "cannotlogoutnow-title": "지금 로그아웃 할 수 없습니다",
+       "cannotlogoutnow-text": "$1 사용 중에는 로그아웃이 불가능합니다.",
        "welcomeuser": "$1님, 환영합니다!",
        "welcomecreation-msg": "계정이 만들어졌습니다.\n[[Special:Preferences|{{SITENAME}} 사용자 환경 설정]]을 바꿀 수 있습니다.",
        "yourname": "사용자 이름:",
        "remembermypassword": "이 브라우저에서 로그인 상태를 저장하기 (최대 $1{{PLURAL:$1|일}})",
        "userlogin-remembermypassword": "로그인 상태를 유지하기",
        "userlogin-signwithsecure": "보안 연결 사용",
+       "cannotloginnow-title": "지금 로그인 할 수 없습니다.",
+       "cannotloginnow-text": "$1 사용 중에는 로그인이 불가능합니다.",
        "yourdomainname": "도메인 이름:",
        "password-change-forbidden": "이 위키에서 비밀번호를 바꿀 수 없습니다.",
        "externaldberror": "바깥 인증 데이터베이스에 오류가 있거나 바깥 계정을 새로 고칠 권한이 없습니다.",
        "wrongpasswordempty": "비밀번호를 입력하지 않았습니다.\n다시 시도하세요.",
        "passwordtooshort": "비밀번호는 {{PLURAL:$1|$1 글자}} 이상이어야 합니다.",
        "passwordtoolong": "비밀번호는 {{PLURAL:$1|1자|$1자}}보다 길어서는 안 됩니다.",
+       "passwordtoopopular": "자주 사용되는 비밀번호는 쓸 수 없습니다. 더 고유한 비밀번호를 선택하세요.",
        "password-name-match": "비밀번호는 사용자 계정 이름과 반드시 달라야 합니다.",
        "password-login-forbidden": "이 사용자 계정 이름과 비밀번호는 사용할 수 없습니다.",
        "mailmypassword": "비밀번호 재설정",
        "resetpass_submit": "비밀번호를 설정하고 로그인하기",
        "changepassword-success": "비밀번호가 성공적으로 바뀌었습니다!",
        "changepassword-throttled": "최근 너무 많이 로그인을 시도했습니다.\n$1 뒤에 다시 시도하세요.",
+       "botpasswords": "봇 비밀번호",
        "resetpass_forbidden": "비밀번호를 바꿀 수 없습니다",
        "resetpass-no-info": "이 특수 문서에 직접 접근하려면 반드시 로그인해야 합니다.",
        "resetpass-submit-loggedin": "비밀번호 바꾸기",
        "showpreview": "미리 보기",
        "showdiff": "차이 보기",
        "blankarticle": "<strong>경고:</strong> 만들려는 문서가 비어 있습니다.\n\"{{int:savearticle}}\"을 다시 클릭하면, 문서에 내용이 없이 만들어집니다.",
-       "anoneditwarning": "<strong>경고:</strong> 로그인하고 있지 않습니다. 편집하면 당신의 IP 주소가 공개적으로 보여집니다. <strong>[$1 로그인]</strong>하거나 <strong>[$2 계정을 만들면]</strong>, 당신의 편집에 다른 이익과 함께, 사용자 이름이 표시됩니다.",
+       "anoneditwarning": "<strong>경고:</strong> 로그인을 하고 있지 않습니다. 편집을 하게 되면 IP 주소가 공개적으로 보여집니다. <strong>[$1 로그인]</strong>하거나 <strong>[$2 계정을 생성하면]</strong>, 편집 시에 다른 이점과 함께 사용자 이름이 표시됩니다.",
        "anonpreviewwarning": "<em>로그인하고 있지 않습니다. 문서를 저장하면 당신의 IP 주소가 문서의 편집 역사에 남게 됩니다.</em>",
        "missingsummary": "'''알림:''' 편집 요약을 적지 않았습니다.\n이대로 \"{{int:savearticle}}\"을 클릭하면 편집 요약 없이 저장됩니다.",
        "selfredirect": "<strong>경고:</strong> 자기 자신으로 문서를 넘겨주고 있습니다.\n넘겨줄 대상을 잘못 입력했거나, 잘못된 문서를 편집하고 있을 수 있습니다.\n\"{{int:savearticle}}\"을 입력하면, 넘겨주기 문서가 생성될 것입니다.",
        "recentchanges-submit": "보기",
        "rcnotefrom": "아래는 <strong>$3, $4</strong>부터 시작하는 {{PLURAL:$5|바뀜이 있습니다}}. (최대 <strong>$1</strong>개가 보여집니다)",
        "rclistfrom": "$3 $2부터 시작하는 새로 바뀐 문서 보기",
-       "rcshowhideminor": "사소한 편집 $1",
+       "rcshowhideminor": "사소한 편집 $1",
        "rcshowhideminor-show": "보이기",
        "rcshowhideminor-hide": "숨기기",
-       "rcshowhidebots": "봇 $1",
+       "rcshowhidebots": "봇 $1",
        "rcshowhidebots-show": "보이기",
        "rcshowhidebots-hide": "숨기기",
-       "rcshowhideliu": "등록된 사용자 $1",
+       "rcshowhideliu": "등록된 사용자 $1",
        "rcshowhideliu-show": "보이기",
        "rcshowhideliu-hide": "숨기기",
        "rcshowhideanons": "익명 사용자를 $1",
        "rcshowhidepatr": "점검한 편집을 $1",
        "rcshowhidepatr-show": "보이기",
        "rcshowhidepatr-hide": "숨기기",
-       "rcshowhidemine": "내 편집 $1",
+       "rcshowhidemine": "내 편집 $1",
        "rcshowhidemine-show": "보이기",
        "rcshowhidemine-hide": "숨기기",
-       "rcshowhidecategorization": "$1 문서 분류",
+       "rcshowhidecategorization": "문서 분류 $1",
        "rcshowhidecategorization-show": "보이기",
        "rcshowhidecategorization-hide": "숨기기",
        "rclinks": "최근 $2일간의 $1개 바뀐 문서 보기<br />$3",
        "upload-dialog-button-done": "완료",
        "upload-dialog-button-save": "저장",
        "upload-dialog-button-upload": "올리기",
-       "upload-form-label-select-file": "파일을 선택해주세요.",
        "upload-form-label-infoform-title": "자세한 사항",
        "upload-form-label-infoform-name": "이름",
        "upload-form-label-infoform-description": "설명",
        "foreign-structured-upload-form-label-infoform-categories": "분류",
        "foreign-structured-upload-form-label-infoform-date": "날짜",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "이 파일의 저작권을 소유하지 않거나 다른 라이선스로 배포하고 싶다면 [https://commons.wikimedia.org/wiki/Special:UploadWizard 공용 파일 올리기 마법사]를 이용해 보세요.",
-       "foreign-structured-upload-form-3-label-yes": "예",
-       "foreign-structured-upload-form-3-label-no": "아니오",
        "backend-fail-stream": "\"$1\" 파일을 스트림할 수 없습니다.",
        "backend-fail-backup": "\"$1\" 파일을 백업할 수 없습니다.",
        "backend-fail-notexists": "$1 파일이 존재하지 않습니다.",
        "apisandbox": "API 실험실",
        "apisandbox-api-disabled": "이 사이트에서는 API가 꺼져 있습니다.",
        "apisandbox-intro": "'''미디어위키 웹 서비스 API'''를 시험해보려면 이 페이지를 이용해보세요. API 용법에 대해서는 [//www.mediawiki.org/wiki/API:Main_page API 문서]을 참고하십시오. 예: [//www.mediawiki.org/wiki/API#A_simple_example 대문의 내용 요청하기]. 더 많은 예를 보려면 액션을 선택하세요.\n\n여기가 연습장이라도 이 페이지에서 실행하는 동작때문에 위키를 변경할 수도 있다는 점에 유의하십시오.",
+       "apisandbox-unfullscreen": "페이지 보기",
        "apisandbox-submit": "요청하기",
        "apisandbox-reset": "지우기",
+       "apisandbox-retry": "재시도",
+       "apisandbox-helpurls": "도움 링크들",
        "apisandbox-examples": "예시",
        "apisandbox-results": "결과",
        "apisandbox-request-url-label": "요청 URL:",
        "log-title-wildcard": "다음 글로 시작하는 제목 검색",
        "showhideselectedlogentries": "선택한 기록 항목 보이기/숨기기",
        "log-edit-tags": "선택한 기록 항목의 태그를 편집",
+       "checkbox-select": "선택: $1",
+       "checkbox-all": "모두",
+       "checkbox-none": "모두 제외",
+       "checkbox-invert": "선택 반전",
        "allpages": "모든 문서 목록",
        "nextpage": "다음 문서 ($1)",
        "prevpage": "이전 문서 ($1)",
index d941bea..b2bdd0b 100644 (file)
        "uploaded-script-svg": "Mer han e verbodde Skrepp_Elemänd en dä huhjelahde <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Dattei jefonge: „$1“",
        "uploaded-hostile-svg": "Mer han onseescher <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Cascading Style Sheet\">CSS</i>-Befähle en enem „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">style</code>“-Ellemänt vun dä huhjelahde <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Dattei jefonge.",
        "uploaded-event-handler-on-svg": "Projramme för Ä'eijschneße ze behanndelle „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">&lt;$1=\"$2\"&gt;</code>“ ennzesäze es en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Datteije verbodde.",
+       "uploaded-href-attribute-svg": "En <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Datteije darrev övver <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">href</code> blohß op <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Transfer Protocol\">HTTP://</i> udder <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Transfer Protocol Secure - HTTP övver SSL - HTTP övver TSL\">HTTPS://</i> verlenk wähde. Heh es ävver <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code> dren.",
        "uploaded-href-unsafe-target-svg": "Mer han ene „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">href</code>“-Befähl obb e onseescher Zihl „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code>“ en dä huhjelahde <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Dattei jefonge.",
        "uploaded-animate-svg": "Mer han dä Befähl „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">animate</code>“ en dä huhjelahde \n<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Dattei jefonge, dä ene „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">href</code>“-Befähl verändere künnt övver de „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">from</code>“-Eijeschaff „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code>“.",
        "uploaded-setting-event-handler-svg": "Ed es verbodde, Projramme för Ä'eijschneße ze behanndelle ennzesäze, un de Datteije, di dat donn, wähde jeschpächt. Mer han „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code>“ en dä huhjelahde <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Dattei jefonge.",
        "upload-dialog-button-done": "Jedonn",
        "upload-dialog-button-save": "Faßhalde",
        "upload-dialog-button-upload": "Lohß Jonn!",
-       "upload-form-label-select-file": "De ußjesöhk Dattei",
        "upload-form-label-infoform-title": "Eijnzelheijte",
        "upload-form-label-infoform-name": "Nahme",
        "upload-form-label-infoform-description": "Äkliehrong",
index 092734f..5303796 100644 (file)
        "upload-dialog-button-done": "Çêbû",
        "upload-dialog-button-save": "Tomar bike",
        "upload-dialog-button-upload": "Bar bike",
-       "upload-form-label-select-file": "Dosyeyê hilbijêre",
        "upload-form-label-infoform-title": "Detay",
        "upload-form-label-infoform-name": "Nav",
        "upload-form-label-infoform-description": "Danasîn",
        "databasenotlocked": "Danegeh ne girtî ye.",
        "move-page": "$1 bigerîne",
        "move-page-legend": "Vê rûpelê bigerîne",
+       "movepagetext": "Bi bikaranîna formê li jêr tu dikarî navê rûpelekê biguherînî, û dikarî hemû dîroka wê bibî rûpela bi navê nû.\nSernavê kevn dê wek beralîkirineke ber bi sernavê nû ve bê xuyakirin.\nTu dikarî beralîkirinên ku nîşanî rûpela orjînal didin, bidî sererastkirin.Ji bîr neke ku tu divê piştre [[Special:DoubleRedirects|beralîkirinên dubare]] an jî [[Special:BrokenRedirects|xirabûyî]] kontrol bikî. Tu ji bo nîşandana girêdanê ber bi armanca rast ve berpirsiyar î.\n\nBizanibe navê rûpelekê dê <strong>neyê</strong> guherandin heke ku rûpeleke nû bi vî navî hebe; lê heke ew rûpela nû bi wî navî beralîkirinek be û dîroka wê tune be, dê nav bê guherandin. Ev tê wê wateyê ku tu dikarî guherandina nav bizîvirînî pêş gava te çewtiyek kiribe.Lê tu nikarî li ser rûpeleka heye binivîsînî.\n\n<strong>Agahî:</strong>\nDibe ku beralîkirinek bibe sedemê encamên bibandor bo rûpelên ku gelek caran serlêdan lê tên kirin; lewma pêwist e ku tu di derbarê van encaman de agahdar bî, berî ku vî karî bidomînî.",
        "movepagetalktext": "Rûpela '''gotûbêjê''' vê rûpelê wê were, eger hebe, gerandin. Lê ev tişta nameşe, eger\n\n*berê gotûbêjek bi wî navî hebe ya\n*tu tiştekî jêr hilbijêrê.\n\nEger ev mişkla çêbû, tu gireke vê rûpelê bi xwe bigerînê.\n\nXêra xwe navê nû û sedemê navgerandinê binivisîne.",
        "movenologintext": "Tu dive bikarhênereke qeydkirî bî û [[Special:UserLogin|werî nav sîstemê]]\nda bikarî navê wê rûpelê biguherînî.",
        "movenotallowed": "Mafên te bo guherandina navên gotaran tune ye.",
index af139f6..5867da1 100644 (file)
        "upload-dialog-button-done": "Fäerdeg",
        "upload-dialog-button-save": "Späicheren",
        "upload-dialog-button-upload": "Eroplueden",
-       "upload-form-label-select-file": "Fichier eraussichen",
        "upload-form-label-infoform-title": "Detailer",
        "upload-form-label-infoform-name": "Numm",
        "upload-form-label-infoform-description": "Beschreiwung",
        "foreign-structured-upload-form-label-own-work": "Dëst ass mäin eegent Wierk",
        "foreign-structured-upload-form-label-infoform-categories": "Kategorien",
        "foreign-structured-upload-form-label-infoform-date": "Datum",
-       "foreign-structured-upload-form-3-label-question-website": "Hutt Dir dëst Bild vun engem Internetsite erofgelueden, oder beim Sichen no engem Bild fonnt?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Hutt Dir dëst Bild (Foto, Zeechnung, asw.) selwer gemaacht?",
-       "foreign-structured-upload-form-3-label-yes": "Jo",
-       "foreign-structured-upload-form-3-label-no": "Neen",
        "backend-fail-stream": "De Fichier $1 konnt net iwwerdroe ginn.",
        "backend-fail-backup": "De Fichier $1 konnt net geséchert ginn.",
        "backend-fail-notexists": "De Fichier $1 gëtt et net.",
        "unwatchthispage": "Net méi iwwerwaachen",
        "notanarticle": "Keng Säit",
        "notvisiblerev": "Versioun gouf geläscht",
-       "watchlist-details": "{{PLURAL:$1|1 Säit|$1 Säiten}} sinn op ärer Iwwerwaachungsklëscht, d'Diskussiounssäiten net matgezielt.",
+       "watchlist-details": "{{PLURAL:$1|1 Säit|$1 Säite}} sinn op Ärer Iwwerwaachungslëscht, d'Diskussiounssäiten net matgezielt.",
        "wlheader-enotif": "E-Mail-Notifikatioun ass ageschalt.",
        "wlheader-showupdated": "Säiten déi zanter Ärer leschter Visite geännert goufen, si '''fett''' geschriwwen",
        "wlnote": "Hei {{PLURAL:$1|ass déi lescht Ännerung|sinn déi lescht <strong>$1</strong> Ännerunge}} vun {{PLURAL:$2|der leschter Stonn|de leschte(n) <strong>$2</strong> Stonnen}}, Stand: $3 ëm $4 Auer.",
index d79cfe2..93f2e58 100644 (file)
        "watchthisupload": "ای جانیا نه بوینیت",
        "filewasdeleted": "جانیایی وا همی نوم دماتر سوار بیه و نهاش پاکسا بیه\nشما واس $1 نه دما یه که میهایت سوار بکیت بینیتش.",
        "filename-bad-prefix": "نوم جانیایی که سوار می کیت وا شرو '''$1''' موئه که دماون ویجه سی عسگیا ثوت بیه وا دیربین یا دیجیتاله.\nلطفن یه گل نوم بی تر سی جانیا انتخاو بکیت.",
-       "upload-success-subj": "سوار کرد خوش سرانجوم",
-       "upload-success-msg": "سوارکرد شما سی [$2] خوو بی.وه د ایچه هئش:[[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "مشگل د سوارکردن",
-       "upload-failure-msg": "یه گل مشلگل د سوارکردتو سی [$2] بی:$1",
-       "upload-warning-subj": "هشدار سوارکرد",
-       "upload-warning-msg": "د نوم بلگه سوارکرد مشگلی بی [$2]. شما می تونیت د[[Special:Upload/stash/$1|نوم بلگه سوارکرد]] ؤیرئیت تا ای مشگل نه برطرف بکیت.",
        "upload-proto-error": "پروتکل نادروس",
        "upload-proto-error-text": "سوارکرد د د دیرادیر ائتیاج وه تیرنشونیایی داره که وا <code dir=ltr>http://</code> یا <code dir=ltr>ftp://</code> شرو بان.",
        "upload-file-error": "خطا مینونه",
        "upload-dialog-button-done": "أنجوم بییە",
        "upload-dialog-button-save": "ئمایە کئردئن",
        "upload-dialog-button-upload": "سوڤار کئردئن",
-       "upload-form-label-select-file": "ئنتئخاڤ جانیا",
        "upload-form-label-infoform-title": "جوزئیات",
        "upload-form-label-infoform-name": "نوم",
        "upload-form-label-infoform-description": "توضی",
        "wlheader-showupdated": "بلگه یایی که د آخرین کرتی که شما دشو دیئن کردیته آلشت بینه د <strong>توپر</strong>نشون دئه بینه",
        "wlnote": "د هار {{PLURAL:$1|آلشت|<strong>$1</strong> آلشتی}} که د {{PLURAL:$2|ساعت|<strong>$2</strong> ساعت}} دماتر انجوم بیه هیئش، ویرگار آخرین واجوری انجام شده موجود است، ویرگار آخری واجوری: $3، $4",
        "wlshowlast": "آخرین$1 ساعتیا $2و روزیا  نشو بیئه",
-       "watchlistall2": "ھأمە",
        "wlshowtime": "نئشوٙ دأئن د آخأر",
        "wlshowhideminor": "ڤیرایئشتیا فئرە کوچئک",
        "wlshowhidebots": "بوتیا",
        "protect-otherreason-op": "دألیل ھأنی",
        "protect-dropdown": "*دلیلیا جاافتائه سی پر و پیم کاری\n** خراوکاری گپ کلون\n** هرزه نیسی گپ کلون\n** جئن ویرایشتی وه درد نحور\n** بلگه فره تماشاکار دار",
        "protect-edit-reasonlist": "دلیلا پر و پیم بیین ویرایشت",
-       "protect-expiry-options": "1 ساعت:1 ساعت,1 روز:1 روز,1 هفته:1 هفته,2 هفته:2 هفته,1 ما:1 ما,3 ما:3 ما,6 ما:6 ما,1 سال:1 سال,بی حساو:بی حساو",
+       "protect-expiry-options": "۱ ساعأت:1 hour,۱ روٙز:1 day,۱ ھأفتە:1 week,۲ ھأفتە:2 weeks,۱ ما:1 month,۳ ما:3 months,۶ ما:6 months,۱ سال:1 year,بی حئسۉ:infinite",
        "restriction-type": "دسرسی:",
        "restriction-level": "ریتراز محدودیت:",
        "minimum-size": "انازه کمترونه",
        "ipbenableautoblock": "بستن خودانجوم آخری تیرنشون آی پی وه کار گرته بیه وه دس کاریار و تیرنشونیا هنی که که د ونو سی ویرایشت وه سعی می کن.",
        "ipbsubmit": "نهاگری ای کاریار",
        "ipbother": "وخت هنی:",
-       "ipboptions": "2 ساعتیا:2 ساعت,1 رو:1 رو,3 روزا:3 رو,1 هفته:1 هفته,2 هفته یا:2 هفته,1 ما:1 ما,3 ما:3 میا,6 ما:6 مایا,1 سال:1سال,بی حساو:بی حساو",
+       "ipboptions": "۱ ساعأت:1 hour,۱ روٙز:1 day,۱ ھأفتە:1 week,۲ ھأفتە:2 weeks,۱ ما:1 month,۳ ما:3 months,۶ ما:6 months,۱ سال:1 year,بی حئسۉ:infinite",
        "ipbhidename": "نوم کاروری نه سی ویرایشت یا و نوم گه یا قام کو",
        "ipbwatchuser": "پی گری بلگه کاریاری و بلگه چک چنه ای کاریار",
        "ipb-disableusertalk": "نها ای کاریار نه اوسه که میها د بلگه چک چنه ش ویرایشت بکه و وه قلف بیه بئر",
index c37fdd5..a228f8d 100644 (file)
        "previewnote": "'''Chesta è sola n'anteprimma; 'e cagnamiénte â paggena nun songo ancora sarvate!'''",
        "continue-editing": "Trasite int'a l'area 'e modifica",
        "previewconflict": "L'anteprimma currisponne a 'o testo presente dint'a cascia 'e modifica ccà ncoppa e rappresentasse 'a paggena comme cumpare si sciglite 'e Sarvà ind'a stu mumento.",
-       "session_fail_preview": "'''Nun è possibbile prucessà 'o cagnamiento pecché se so' sperdut' 'e date d' 'a sessione.\nProva n'ata vota.\nSi nun funziona ancora, può pruvà 'a te [[Special:UserLogout|n'ascì]] e a trasì n'ata vota.'''",
-       "session_fail_preview_html": "'''Nun è possibbile prucessà 'o cagnamiento pecché se so' sperdut' 'e date d' 'a sessione.\nProva n'ata vota.'''\n''Siccome dint' 'o {{SITENAME}} è abilitato l'uso 'e l'HTML cruro, 'o buttone d'anteprimma nun è abbiàto comme misura 'e sicurezza annanza cocch'attacco JavaScript''\n'''Si chest'era nu tentativo legittimo 'e cagnamiento, prova n'ata vota. Si nun funziona ancora, può pruvà 'a te [[Special:UserLogout|n'ascì]] e a trasì n'ata vota.'''",
+       "session_fail_preview": "Scusate! nun è possibbile prucessà 'o cagnamiento pecché se so' sperdut' 'e date d' 'a sessione.\n\nPuò darse ca d' 'a parta vosta nun eravate trasute.<strong>Pe' piacere cuntrullate ca site ancora dinto e tentate n'ata vota</strong>.\nSi chesto nun funziunasse ancora, tentate a ve [[Special:UserLogout|n'ascì]] e a trasì n'ata vota, e cuntrullate si 'o navigatóre vuosto tenisse 'e cookies appicciàte.",
+       "session_fail_preview_html": "Scusate! Nun è possibbile prucessà 'o cagnamiento pecché se so' sperdut' 'e date d' 'a sessione.\nProva n'ata vota.\n\n<em>Siccome dint' 'o {{SITENAME}} è abilitato l'uso 'e l'HTML cruro, 'o buttone d'anteprimma nun è abbiàto comme misura 'e sicurezza annanza cocch'attacco JavaScript</em>\n\n<strong>Si chest'era nu tentativo legittimo 'e cagnamiento, tentate n'ata vota.</strong>\nSi nun funziunass'ancora, putite pruvà a ve [[Special:UserLogout|n'ascì]] e a trasì n'ata vota, e cuntrullate si 'o navigatóre vuosto premmettesse 'e cookies ca veneno 'a stu sito.",
        "token_suffix_mismatch": "'''Stu cagnamiento nun è stato sarvato pecché 'o client ave mmustato nu sbaglio dint'o scrivere d' 'e carattere d' 'a punteggiatura token. Pe luvà na possibbile corruzione d' 'o testo dint'a paggena, s'è rifiutat' 'a modifeca.\n\nSta situazione se può truvà, quanno staje ausanno nu servizio 'e proxy anonime via web cu d' 'e bug.'''",
        "edit_form_incomplete": "'''Cocche parte d' 'o modulo 'e cagnamiento nun ha arrivato a 'o server; cuntrolla ch' 'e cagnamiente songo intatte e prova n'ata vota.'''",
        "editing": "Cagnamiento 'e $1",
        "mergehistory-empty": "Nun ce stanno virziune pe' putè ffà l'aunione.",
        "mergehistory-done": "{{PLURAL:$3|Na virziona 'e $1 è stata aunita|$3 versiune 'e $1 so' state aunite}} â cronologgia 'e [[:$2]].",
        "mergehistory-fail": "Nun se ponno aunì 'e cronologgie. Pe' piacere cuntrullate n'ata vota 'a paggena e li parametre tempurale.",
+       "mergehistory-fail-bad-timestamp": "'O timestamp nun è buono.",
+       "mergehistory-fail-invalid-source": "'A paggena d'origgene nun è bbona.",
+       "mergehistory-fail-invalid-dest": "'A paggena 'e destinaziona nun è bbona.",
+       "mergehistory-fail-no-change": "L'aunione d' 'e cronologgie nun accucchiaje nisciuna verziona. Cuntrullate n'ata vota 'e paggene e parammetre 'e tiempo.",
+       "mergehistory-fail-permission": "Auturizzaziune nsufficiente pe' puté aunì cronologgìe.",
+       "mergehistory-fail-self-merge": "'E paggene d'origgine e destinaziona songh' 'e stesse.",
+       "mergehistory-fail-timestamps-overlap": "'E verziune d'origgene se mettono una ncuoll'a l'ata o veneno aropp' 'e verziune 'e destinaziona.",
        "mergehistory-fail-toobig": "Nun se può fà l'aunione d' 'a cronologgia cu nu lémmeto 'e n'ati $1 {{PLURAL:$1|revisione|rivisiune}} 'a cagnà posto.",
        "mergehistory-no-source": "'A paggena d'origgine $1 nun esiste.",
        "mergehistory-no-destination": "'A paggena 'e destinazione $1 nun esiste.",
        "upload-dialog-button-done": "Fatto",
        "upload-dialog-button-save": "Sarva",
        "upload-dialog-button-upload": "Carreca",
-       "upload-form-label-select-file": "Sceglie file",
        "upload-form-label-infoform-title": "Dettaglie",
        "upload-form-label-infoform-name": "Nomme",
        "upload-form-label-infoform-name-tooltip": "Nu titolo unico e distintivo p' 'o file, ca serverrà comm'o nomme file. Putite ausà lenguaggio semprice ch' 'e spazi. Nun azzeccà l'estensione d' 'o file.",
        "foreign-structured-upload-form-label-own-work-message-shared": "Faccio attestato ca songo 'o detentore d' 'o copyright 'e stu file, e so' d'accordo 'e lassà irrevocabbelmente stu file a Wikimedia Commons sott'a licienza [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribuziona-SparteEguale 4.0], e so' d'accordo cu sti [https://wikimediafoundation.org/wiki/Terms_of_Use Termene d'Uso].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Si nun tenite 'o copyright 'e stu file, o pure 'o vulite lassà libbero cu n'ata licienza, cunziderate 'ausà 'o [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Upload Wizard].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Putite pure tentà 'e ausà [[Special:Upload|'a paggena 'e carreche 'e {{SITENAME}}]], si stu sito ve premmettesse 'e carrecà llanno pe' bbìa d' 'e pulitiche.",
-       "foreign-structured-upload-form-2-label-intro": "Ve ringraziammo p' 'o dono 'e n'immaggene p' 'a puté ausà dint'a {{SITENAME}}. Avita cuntinuà surtanto si se danno 'e condeziune ccà:",
-       "foreign-structured-upload-form-2-label-ownwork": "Adda essere sana sana <strong>na criaziona propria vosta</strong>, nun fosse na fiurella pigliata 'a ll'Internet",
-       "foreign-structured-upload-form-2-label-noderiv": "<strong>Nun adda mmescà ati fatiche fatte 'a n'ato</strong>, nun adda piglià ispirazione artistica 'e na fatica ca nun fose d' 'a vosta",
-       "foreign-structured-upload-form-2-label-useful": "Adda essere <strong>educazionale e utile</strong> pe' puté mparà ll'ata ggente",
-       "foreign-structured-upload-form-2-label-ccbysa": "Adda essere <strong>OK pe' pubbrecà pe' sempe</strong> ncopp'a ll'Internet sott' 'e condeziune d' 'a licienza [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0]",
-       "foreign-structured-upload-form-2-label-alternative": "Si chiste punte ccà ncoppa nun songo overe, putite ancora carrecà 'o file ausanno [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Upload Wizard], chest'è: si fosse a disposizione sott'a na licienza libbera.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Carrecanno stu file, vuje lassate attestato 'e ricanoscenza ca site 'o possessore d' 'o copyright 'e stu file, e ca site d'accordo senza puté turnà arreto 'e libberà stu file p' 'o fà trasì dint'a Wikimedia Commons sott'a licienza Creative Commons Attribution-ShareAlike 4.0, e che site d'accordo ch' 'e [https://wikimediafoundation.org/wiki/Terms_of_Use Tiérmene d'auso].",
-       "foreign-structured-upload-form-3-label-question-website": "Avite scarrecata st'immaggene 'a nu sito internet o l'avite pigliato 'a na cerca-immaggene?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Avite criato vuje st'immaggene (scattat' 'a foto, criato 'o disegno, etc.) vuje stisso/a?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Cuntene, o s'ispirasse 'a, fatiche c' 'o copyright 'e coccherun'ato, comm'a nu logo?",
-       "foreign-structured-upload-form-3-label-yes": "Sì",
-       "foreign-structured-upload-form-3-label-no": "No",
-       "foreign-structured-upload-form-3-label-alternative": "Spiacente, ind'a sta situaziona, stu strumiento nun ve premmettesse 'e carrecà stu file. Putite tentà ancora 'e carrecà stu file ausanno [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Upload Wizard], si chesto se truvasse libbero sott'a na licienza libbera.",
-       "foreign-structured-upload-form-4-label-good": "Ausanno stu tool, putite carrecà grafiche educazionale c'avite criato vuje stisse, immaggene c'avite pigliato, e ca nun cunteneno fatiche 'a coccherun'ato.",
-       "foreign-structured-upload-form-4-label-bad": "Vuje nun putite carrecà immaggene truvate pe' miez' 'e nu mutor' 'e ricerca o c'avite scarrecat'a n'atu sito.",
        "backend-fail-stream": "Nun se può mannà 'o file \"$1\".",
        "backend-fail-backup": "Nun se può ffà 'o backup d' 'o file \"$1\".",
        "backend-fail-notexists": "'O file $1 nun esiste.",
index 6dab70f..46f849e 100644 (file)
        "upload-dialog-button-done": "Utført",
        "upload-dialog-button-save": "Lagre",
        "upload-dialog-button-upload": "Last opp",
-       "upload-form-label-select-file": "Velg fil",
        "upload-form-label-infoform-title": "Detaljer",
        "upload-form-label-infoform-name": "Navn",
        "upload-form-label-infoform-description": "Beskrivelse",
        "foreign-structured-upload-form-label-own-work-message-shared": "Jeg bekrefter at jeg har opphavsretten til denne filen, samtykker til å ugjenkallelig slippe filen til Wikimedia Commons under lisensen [https://creativecommons.org/licenses/by-sa/4.0/deed.no Creative Commons Navngivelse-DelPåSammeVilkår 4.0], og samtykker til [https://wikimediafoundation.org/wiki/Terms_of_Use bruksvilkårene].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Hvis du ikke sitter på opphavsretten til filen, eller ønsker å slippe den under en annen lisens, prøv [https://commons.wikimedia.org/wiki/Special:UploadWizard Opplastingsveiviseren på Commons].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Du kan eventuelt forsøke [[Special:Upload|den ordinære opplastingssiden på {{SITENAME}}]] hvis filen kan lastes opp under politikken som gjelder der.",
-       "foreign-structured-upload-form-2-label-intro": "Takk for at du donerer et bilde til bruk på {{SITENAME}}. Du kan kun fortsette hvis det oppfyller følgende krav:",
-       "foreign-structured-upload-form-2-label-ownwork": "Det må være <strong>ditt eget verk</strong>, ikke tatt fra internett",
-       "foreign-structured-upload-form-2-label-noderiv": "Det må <strong>ikke inneholde eller være sterkt inspirert av andres verk</strong>",
-       "foreign-structured-upload-form-2-label-useful": "Det bør være <strong>illustrerende og nyttig</strong>",
-       "foreign-structured-upload-form-2-label-ccbysa": "Det må være <strong>OK å publisere for evig tid</strong> på internett under [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0]-lisensen",
-       "foreign-structured-upload-form-2-label-alternative": "Hvis ikke alle kriteriene ovenfor er oppfylt, kan du i stedet laste opp filen med [https://commons.wikimedia.org/wiki/Special:UploadWizard Opplastingsveiviseren på Commons], gitt at filen er tilgjengelig under en fri lisens.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Ved å laste opp filen går du god for at du har opphavsretten til den, du samtykker til å ugjenkallelig slippe filen til Wikimedia Commons under lisensen Creative Commons Navngivelse-DelPåSammeVilkår 4.0, og du samtykker til [https://wikimediafoundation.org/wiki/Terms_of_Use bruksvilkårene].",
-       "foreign-structured-upload-form-3-label-question-website": "Er bildet hentet fra nettside eller fra bildesøk?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Har du laget (fotografert, skisset, tegnet, …) bildet selv?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Inneholder det, eller er det sterkt inspirert av, arbeid som eies av noen andre, som f.eks. en logo?",
-       "foreign-structured-upload-form-3-label-yes": "Ja",
-       "foreign-structured-upload-form-3-label-no": "Nei",
-       "foreign-structured-upload-form-3-label-alternative": "Uheldigvis kan ikke filen lastes opp med dette verktøyet i dette tilfellet. Du kan fremdeles prøve å laste opp filen med [https://commons.wikimedia.org/wiki/Special:UploadWizard opplastingsveiviseren på Commons], så lenge filen er tilgjengelig under en fri lisens.",
-       "foreign-structured-upload-form-4-label-good": "Med dette verktøyet kan du laste opp illustrasjoner du selv har laget selv og fotografier du selv har tatt, som ikke inneholder andres arbeid.",
-       "foreign-structured-upload-form-4-label-bad": "Du kan ikke laste opp bilder du har funnet ved søk på internett eller lastet ned fra andre nettsider.",
        "backend-fail-stream": "Kunne ikke strømme filen $1.",
        "backend-fail-backup": "Kunne ikke sikkerhetskopiere filen $1.",
        "backend-fail-notexists": "Filen $1 finnes ikke.",
index e4f75f9..6174c80 100644 (file)
        "previewnote": "'''Let op: dit is een controlepagina.'''\nUw tekst is niet opgeslagen!",
        "continue-editing": "Naar het bewerkingsvenster gaan",
        "previewconflict": "Deze voorvertoning geeft aan hoe de tekst in het bovenste veld eruit ziet als u deze opslaat.",
-       "session_fail_preview": "'''Uw bewerking is helaas niet opgeslagen omdat de sessiegegevens verloren zijn gegaan.'''\nProbeer het opnieuw.\nAls het dan nog niet lukt, [[Special:UserLogout|meld uzelf dan af]] en vervolgens weer aan.",
-       "session_fail_preview_html": "'''Uw bewerking is niet verwerkt, omdat de sessiegegevens verloren zijn gegaan.'''\n\n''Omdat in {{SITENAME}} ruwe HTML is ingeschakeld, is een voorvertoning niet mogelijk als bescherming tegen aanvallen met JavaScript.''\n\n'''Als dit een legitieme bewerking is, probeer het dan opnieuw.'''\nAls het dan nog niet lukt, [[Special:UserLogout|meld uzelf dan af]] en vervolgens weer aan.",
+       "session_fail_preview": "Uw bewerking is helaas niet opgeslagen omdat de sessiegegevens verloren zijn gegaan.\n\nMogelijk bent u automatisch afgemeld. <strong>Stel vast of u nog bent aangemeld en probeer het opnieuw.</strong>\nAls het dan nog niet lukt, [[Special:UserLogout|meld uzelf dan af]] en vervolgens weer aan, en controleer of uw browser wel cookies van deze site toestaat.",
+       "session_fail_preview_html": "Uw bewerking is niet verwerkt, omdat de sessiegegevens verloren zijn gegaan.\n\n<em>Omdat in {{SITENAME}} ruwe HTML is ingeschakeld, is een voorvertoning niet mogelijk als bescherming tegen aanvallen met JavaScript.</em>\n\n<strong>Als dit een legitieme bewerking is, probeer het dan opnieuw.</strong>\nAls het dan nog niet lukt, [[Special:UserLogout|meld uzelf dan af]] en vervolgens weer aan, en controleer of uw browser wel cookies van deze site toestaat.",
        "token_suffix_mismatch": "'''Uw bewerking is geweigerd, omdat uw browser de leestekens in het bewerkingstoken onjuist heeft behandeld.'''\nDe bewerking is geweigerd om verminking van de paginatekst te voorkomen.\nDit gebeurt soms als er een webgebaseerde proxydienst wordt gebruikt die fouten bevat.",
        "edit_form_incomplete": "'''Sommige onderdelen van het bewerkingsformulier hebben de server niet bereikt. Controleer of uw bewerkingen intact zijn en probeer het opnieuw.'''",
        "editing": "Bewerken van $1",
        "mergehistory-empty": "Er zijn geen versies die samengevoegd kunnen worden.",
        "mergehistory-done": "$3 {{PLURAL:$3|versie|versies}} van $1 {{PLURAL:$3|is|zijn}} samengevoegd naar [[:$2]].",
        "mergehistory-fail": "Kan geen geschiedenis samenvoegen, controleer opnieuw de pagina- en tijdinstellingen.",
+       "mergehistory-fail-bad-timestamp": "Het tijdstempel is ongeldig.",
+       "mergehistory-fail-invalid-source": "De bronpagina is ongeldig.",
+       "mergehistory-fail-invalid-dest": "De doelpagina is ongeldig.",
+       "mergehistory-fail-no-change": "Het samenvoegen van de geschiedenis is mislukt. Controleer de pagina- en tijdinstellingen.",
+       "mergehistory-fail-permission": "Onvoldoende rechten om geschiedenis samen te voegen.",
+       "mergehistory-fail-self-merge": "De bron- en doelpagina's zijn dezelfde.",
+       "mergehistory-fail-timestamps-overlap": "De bronversies overlappen of komen na de versies van de doelpagina.",
        "mergehistory-fail-toobig": "Niet in staat om geschiedenis samen te voegen omdat meer dan de limiet van $1 {{PLURAL:$1|versie wordt|versie worden}} verplaatst.",
        "mergehistory-no-source": "De bronpagina $1 bestaat niet.",
        "mergehistory-no-destination": "De bestemmingspagina $1 bestaat niet.",
        "uploaded-script-svg": "Scriptbaar element \"$1\" in het geüploade SVG-bestand gevonden.",
        "uploaded-hostile-svg": "Onveilige CSS in het \"style\"-element van het geüploade SVG-bestand gevonden.",
        "uploaded-event-handler-on-svg": "Het instellen van de event-handlereigenschappen <code>$1=\"$2\"</code> is niet toegestaan in SVG-bestanden.",
-       "uploaded-href-unsafe-target-svg": "href met onveilig doel <code>&lt;$1 $2=\"$3\"&gt;</code> in het geüploade SVG-bestand gevonden.",
+       "uploaded-href-attribute-svg": "\"href\"-kenmerken in SVG-bestanden zijn alleen toegestaan als koppeling naar http:// of https://. Aangetroffen is  <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "href naar onveilig gegevens: URI-doel <code>&lt;$1 $2=\"$3\"&gt;</code> in het geüploade SVG-bestand gevonden.",
        "uploaded-animate-svg": "\"animate\"-label gevonden in het geüploade svg-bestand die href zou kunnen veranderen, met behulp van het \"from\"-attribuut <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-event-handler-svg": "Het instellen van de event-handlereigenschappen is geblokkeerd, <code>&lt;$1 $2=\"$3\"&gt;</code> gevonden in het geüploade SVG-bestand.",
        "uploaded-setting-href-svg": "Het label \"set\" gebruiken om het attribuut \"href\" toe te voegen aan het ouderelement is niet mogelijk.",
        "upload-dialog-button-done": "Afgerond",
        "upload-dialog-button-save": "Opslaan",
        "upload-dialog-button-upload": "Uploaden",
-       "upload-form-label-select-file": "Selecteer bestand",
        "upload-form-label-infoform-title": "Details",
        "upload-form-label-infoform-name": "Naam",
-       "upload-form-label-infoform-name-tooltip": "Een korte beschrijvende naam voor het bestand, die als de bestandsnaam wordt gebruikt. U kunt platte tekst met spaties gebruiken. Neem de bestandsextensie niet op.",
+       "upload-form-label-infoform-name-tooltip": "Een korte beschrijvende naam voor het bestand, die als de bestandsnaam wordt gebruikt. U kunt tekst met spaties gebruiken. Neem de bestandsextensie niet op.",
        "upload-form-label-infoform-description": "Beschrijving",
        "upload-form-label-infoform-description-tooltip": "Beschrijf kort alles wat voor het werk van belang is.\nBenoem voor een afbeelding de belangrijkste zaken die zijn afgebeeld, alsmede de plaats of de gelegenheid.",
        "upload-form-label-usage-title": "Gebruik",
        "foreign-structured-upload-form-label-own-work-message-shared": "Ik verklaar dat ik de auteursrechten bezit op dit bestand en ik ga onherroepbaar akkoord met het vrijgeven van dit bestand aan Wikimedia Commons onder de licentie [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Naamsvermelding-GelijkDelen 4.0] en ik ga akkoord met de [https://wikimediafoundation.org/wiki/Terms_of_Use Gebruiksvoorwaarden].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Als u geen eigenaar bent van de auteursrechten van dit bestand, of als u het onder een andere licentie wilt vrijgeven, overweeg dan gebruik te maken van de [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Upload Wizard].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "U kunt ook de [[Special:Upload|uploadpagina op {{SITENAME}}]] gebruiken, als de site het uploaden van dit bestand onder hun beleid toestaat.",
-       "foreign-structured-upload-form-2-label-intro": "Fijn dat u een afbeelding wilt doneren voor gebruik op {{SITENAME}}! U kunt alleen verder gaan als uw afbeelding aan een aantal voorwaarden voldoet:",
-       "foreign-structured-upload-form-2-label-ownwork": "Het moet geheel <strong>zelfgemaakt</strong> zijn, niet van het internet gehaald",
-       "foreign-structured-upload-form-2-label-noderiv": "Het moet <strong>geen werk of inspiratie van anderen</strong> bevatten",
-       "foreign-structured-upload-form-2-label-useful": "Het moet <strong>leerzaam en nuttig</strong> zijn",
-       "foreign-structured-upload-form-2-label-ccbysa": "Het moet <strong>voor altijd gepubliceerd mogen worden</strong> op het internet onder de [https://creativecommons.org/licenses/by-sa/4.0/deed.nl Creative Commons Attribution-ShareAlike 4.0]-licentie.",
-       "foreign-structured-upload-form-2-label-alternative": "Als uw afbeelding niet aan al deze voorwaarden voldoet, kunt u hem wellicht alsnog uploaden via de [https://commons.wikimedia.org/wiki/Special:UploadWizard?uselang=nl wizard op Commons], zolang de afbeelding beschikbaar is onder een vrije licentie.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Door dit bestand te uploaden, bevestigt u dat u het auteursrecht hebt op dit bestand, en gaat u ermee akkoord om dit bestand onherroepelijk vrij te geven aan Wikimedia Commons onder de Creative Commons Attribution-ShareAlike 4.0-licentie, en gaat u akkoord met de [https://wikimediafoundation.org/wiki/Terms_of_Use/nl gebruiksvoorwaarden].",
-       "foreign-structured-upload-form-3-label-question-website": "Hebt u deze afbeelding gedownload van een website, of gevonden met een zoekmachine?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Hebt u deze afbeelding zelf gemaakt (zelf een foto genomen, zelf een tekening getekend, o.i.d.)?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Bevat deze afbeelding werk dat eigendom is van iemand anders, zoals een logo, of is het geïnspireerd op werk van anderen?",
-       "foreign-structured-upload-form-3-label-yes": "Ja",
-       "foreign-structured-upload-form-3-label-no": "Nee",
-       "foreign-structured-upload-form-3-label-alternative": "Helaas kunt u dit bestand niet uploaden met deze software. Wellicht kunt u het alsnog uploaden via de [https://commons.wikimedia.org/wiki/Special:UploadWizard?uselang=nl wizard op Commons], zolang het bestand beschikbaar is onder een vrije licentie.",
-       "foreign-structured-upload-form-4-label-good": "Met deze software kunt u educationele afbeeldingen uploaden die u zelf gemaakt hebt, en foto's die u zelf genomen hebt, die geen werk bevatten dat eigendom is van anderen.",
-       "foreign-structured-upload-form-4-label-bad": "U kunt geen afbeeldingen uploaden die u gevonden hebt met een zoekmachine of gedownload hebt van andere websites.",
        "backend-fail-stream": "Het was niet mogelijk het bestand \"$1\" te streamen.",
        "backend-fail-backup": "Het was niet mogelijk een reservekopie van het bestand $1 te maken.",
        "backend-fail-notexists": "Het bestand $1 bestaat niet.",
        "apihelp": "API-hulp",
        "apihelp-no-such-module": "Module \"$1\" niet gevonden.",
        "apisandbox": "API-zandbak",
+       "apisandbox-jsonly": "JavaScript is vereist om de API-zandbak te kunnen gebruiken.",
        "apisandbox-api-disabled": "De API is uitgeschakeld op deze site.",
-       "apisandbox-intro": "Gebruik deze pagina om te experimenteren met de '''MediaWiki-API'''.\nZie de [//www.mediawiki.org/wiki/API:Main_page API-documentatie] voor verdere details over het gebruik van de API. Voorbeeld: [//www.mediawiki.org/wiki/API#A_simple_example hoe de inhoud van een Hoofdpagina ophalen]. Selecteer een handeling om meer voorbeelden te zien.\n\nHoewel dit een testfunctie is, kunnen sommige handelingen toch wijzigingen in de wiki maken.",
+       "apisandbox-intro": "Gebruik deze pagina om te experimenteren met de <strong>MediaWiki-API</strong>.\nZie de [[mw:API:Main page|API-documentatie]] voor verdere details over het gebruik van de API. Voorbeeld: [//www.mediawiki.org/wiki/API#A_simple_example hoe de inhoud van een Hoofdpagina ophalen]. Selecteer een handeling om meer voorbeelden te zien.\n\nHoewel dit een testfunctie is, kunnen sommige handelingen toch wijzigingen in de wiki maken.",
+       "apisandbox-fullscreen": "Paneel uitvouwen",
+       "apisandbox-fullscreen-tooltip": "Het zandbakvenster uitvoeren om het browservenster te vullen.",
+       "apisandbox-unfullscreen": "Pagina weergeven",
+       "apisandbox-unfullscreen-tooltip": "Het zandbakvenster inklappen zodat de navigatie voor MediaWiki weer beschikbaar is.",
        "apisandbox-submit": "Verzoek uitvoeren",
        "apisandbox-reset": "Wissen",
        "apisandbox-retry": "Opnieuw proberen",
+       "apisandbox-loading": "Bezig met laden van gegevens voor API-module \"$1\"...",
        "apisandbox-examples": "Voorbeelden",
        "apisandbox-results": "Resultaten",
        "apisandbox-request-url-label": "Verzoek-URL:",
        "tooltip-minoredit": "Deze wijziging als een kleine wijziging markeren",
        "tooltip-save": "Wijzigingen opslaan",
        "tooltip-preview": "Een voorvertoning maken. Gebruik dit voordat u opslaat!",
-       "tooltip-diff": "Gemaakte wijzigingen bekijken (zoals het in de geschiedenis zal te zien zijn)",
+       "tooltip-diff": "Weergeven welke wijzigingen u aan de tekst hebt gemaakt",
        "tooltip-compareselectedversions": "De verschillen tussen de geselecteerde versies van deze pagina bekijken.",
        "tooltip-watch": "Deze pagina aan uw volglijst toevoegen",
        "tooltip-watchlistedit-normal-submit": "Pagina's verwijderen",
index dc2e686..36c098f 100644 (file)
        "rcshowhidemine": "$1 endringane mine",
        "rcshowhidemine-show": "Vis",
        "rcshowhidemine-hide": "Gøym",
+       "rcshowhidecategorization": "$1 kategorisering av sider",
        "rcshowhidecategorization-show": "Vis",
        "rclinks": "Vis dei siste $1 endringane dei siste $2 dagane<br />$3",
        "diff": "skil",
        "upload-too-many-redirects": "URL-en inneheldt for mange omdirigeringar",
        "upload-http-error": "Ein HTTP-feil oppstod: $1",
        "upload-copy-upload-invalid-domain": "Kopiopplastingar er ikkje tilgjengelege frå dette domenet.",
-       "upload-form-label-select-file": "Vel fil",
        "backend-fail-stream": "Kunne ikkje strøyma fila «$1».",
        "backend-fail-backup": "Kunne ikkje tryggingskopiera fila «$1».",
        "backend-fail-notexists": "Fila $1 finst ikkje.",
index fa6584b..f2e641b 100644 (file)
        "remembermypassword": "Zapamiętaj moje logowanie na tym komputerze (maksymalnie przez $1 {{PLURAL:$1|dzień|dni}})",
        "userlogin-remembermypassword": "Nie wylogowuj mnie",
        "userlogin-signwithsecure": "Użyj bezpiecznego połączenia",
+       "cannotloginnow-title": "W tej chwili nie można się teraz zalogować",
+       "cannotloginnow-text": "Podczas korzystania z $1 nie można się zalogować.",
        "yourdomainname": "Twoja domena:",
        "password-change-forbidden": "Nie można zmieniać haseł na tej wiki.",
        "externaldberror": "Wystąpił błąd autentyfikacyjnej bazy danych lub nie posiadasz uprawnień koniecznych do aktualizacji zewnętrznego konta.",
        "right-createpage": "Tworzenie stron (niebędących stronami dyskusji)",
        "right-createtalk": "Tworzenie stron dyskusji",
        "right-createaccount": "Tworzenie kont użytkowników",
+       "right-autocreateaccount": "Automatyczne logowanie za pomocą zewnętrznego konta użytkownika",
        "right-minoredit": "Oznaczanie edycji jako drobnych",
        "right-move": "Przenoszenie stron",
        "right-move-subpages": "Przenoszenie stron razem z ich podstronami",
        "upload-dialog-button-done": "Gotowe",
        "upload-dialog-button-save": "Zapisz",
        "upload-dialog-button-upload": "Prześlij",
-       "upload-form-label-select-file": "Wybierz plik",
        "upload-form-label-infoform-title": "Szczegóły",
        "upload-form-label-infoform-name": "Nazwa",
        "upload-form-label-infoform-name-tooltip": "Podaj krótką, opisującą i unikalną nazwę, która będzie służyła jako nazwa pliku. Możesz używać prostego języka i spacji. Nie dodawaj rozszerzenia pliku.",
        "foreign-structured-upload-form-label-own-work-message-shared": "Oświadczam, że mam prawa autorskie do tego pliku, nieodwołalnie publikuję go na Wikimedia Commons na licencji [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0] i zgadzam się na [https://wikimediafoundation.org/wiki/Terms_of_Use/pl warunki użytkowania].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Jeżeli nie masz praw autorskich do tego pliku albo chcesz go opublikować na innej licencji, rozważ użycie [https://commons.wikimedia.org/wiki/Special:UploadWizard kreatora przesyłania plików].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Możesz spróbować użyć [[Special:Upload|strony przesyłania plików {{GRAMMAR:D.lp|{{SITENAME}}}}]], jeżeli zasady tej strony dopuszczają publikację tego pliku.",
-       "foreign-structured-upload-form-2-label-intro": "Dziękujemy za przesłanie pliku na {{GRAMMAR:B.lp|{{SITENAME}}}}. Zanim kontynuujesz, upewnij się, że spełnia poniższe warunki:",
-       "foreign-structured-upload-form-2-label-ownwork": "Musi być w całości <strong>Twoją pracą</strong>, a nie pobrany z Internetu",
-       "foreign-structured-upload-form-2-label-noderiv": "<strong>Nie może</strong> zawierać fragmentów <strong>cudzych prac</strong> ani być nimi zainspirowany",
-       "foreign-structured-upload-form-2-label-useful": "Musi mieć <strong>wartość edukacyjną</strong> i ułatwiać przekazywanie wiedzy",
-       "foreign-structured-upload-form-2-label-ccbysa": "Musi być możliwe <strong>udostępnienie go na zawsze</strong> w Internecie na licencji [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0]",
-       "foreign-structured-upload-form-2-label-alternative": "Jeśli nie wszystkie z tych warunków są spełnione, być może możesz mimo wszystko przesłać go za pomocą [https://commons.wikimedia.org/wiki/Special:UploadWizard kreatora przesyłania plików Commons], o ile jest udostępniony na wolnej licencji.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Przesyłając plik, oświadczasz, że masz prawa autorskie do tego pliku, nieodwołalnie publikujesz go na Wikimedia Commons na licencji Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0 i zgadzasz się na [https://wikimediafoundation.org/wiki/Terms_of_Use/pl warunki użytkowania].",
-       "foreign-structured-upload-form-3-label-question-website": "Czy {{GENDER:|pobrałeś|pobrałaś|pobrałeś/aś}} tę grafikę ze strony internetowej lub wyszukiwarki grafiki?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Czy {{GENDER:|stworzyłeś|stworzyłaś|stworzyłeś/aś}} tę grafikę ({{GENDER:|zrobiłeś|zrobiłaś|zrobiłeś/aś}} zdjęcie, {{GENDER:|naszkicowałeś|naszkicowałaś|naszkicowałeś/aś}} rysunek, itp.)  {{GENDER:|samemu|samej|samemu/samej}}?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Czy zawiera fragmenty cudzych prac (np. logo) lub jest nimi zainspirowana?",
-       "foreign-structured-upload-form-3-label-yes": "Tak",
-       "foreign-structured-upload-form-3-label-no": "Nie",
-       "foreign-structured-upload-form-3-label-alternative": "Niestety, w tej sytuacji nie jest możliwe przesłanie tego pliku za pomocą tego narzędzia. Być może możesz mimo to przesłać go za pomocą [https://commons.wikimedia.org/wiki/Special:UploadWizard kreatora przesyłania plików Commons], o ile jest udostępniony na wolnej licencji.",
-       "foreign-structured-upload-form-4-label-good": "Przy pomocy tego narzędzia możesz przesłać edukacyjne grafiki i fotografie, które {{GENDER:|zrobiłeś|zrobiłaś|zrobiłeś/aś}} i które nie zawierają fragmentów cudzych prac.",
-       "foreign-structured-upload-form-4-label-bad": "Nie możesz przesyłać grafik znalezionych w wyszukiwarkach lub pobranych z innych stron internetowych.",
        "backend-fail-stream": "Nie można odczytać pliku $1.",
        "backend-fail-backup": "Nie można utworzyć kopii zapasowej pliku  $1 .",
        "backend-fail-notexists": "Plik  $1  nie istnieje.",
        "apihelp": "Pomoc API",
        "apihelp-no-such-module": "Moduł \"$1\" nie znaleziony.",
        "apisandbox": "Środowisko testowe API",
+       "apisandbox-jsonly": "Do korzystania z brudnopisu API wymagany jest JavaScript.",
        "apisandbox-api-disabled": "API jest wyłączone na tej stronie.",
-       "apisandbox-intro": "Użyj tej strony do eksperymentowania z '<strong>API serwisu MediaWiki</strong>.\nWięcej szczegółów na temat wykorzystywania API można znaleźć w [[mw:API:Main page|dokumentacji API]]. Przykład: [//www.mediawiki.org/wiki/API#A_simple_example pobranie zawartości strony głównej]. Wybierz akcję, by zobaczyć więcej przykładów.\n\nZwróć uwagę, że chociaż jest to brudnopis, to działania, które można przeprowadzać na tej stronie, mogą zmienić wiki.",
+       "apisandbox-intro": "Użyj tej strony do eksperymentowania z <strong>serwisem API MediaWiki</strong>.\nWięcej szczegółów na temat wykorzystywania API można znaleźć w [[mw:API:Main page|dokumentacji API]]. Przykład: [//www.mediawiki.org/wiki/API#A_simple_example pobranie zawartości strony głównej]. Wybierz akcję, by zobaczyć więcej przykładów.\n\nZwróć uwagę, że chociaż jest to brudnopis, to działania, które można przeprowadzać na tej stronie, mogą zmienić wiki.",
        "apisandbox-unfullscreen": "Pokaż stronę",
        "apisandbox-submit": "Wykonaj zapytanie",
        "apisandbox-reset": "Wyczyść",
index bb460fd..c092d3f 100644 (file)
        "upload-dialog-button-done": "ترسره شو",
        "upload-dialog-button-save": "خوندي کول",
        "upload-dialog-button-upload": "پورته کول",
-       "upload-form-label-select-file": "دوتنه ټاکل",
        "upload-form-label-infoform-title": "ځانگړنې",
        "upload-form-label-infoform-name": "نوم",
        "upload-form-label-infoform-description": "څرگندونه",
        "foreign-structured-upload-form-label-own-work": "دا زما خپل کار دی",
        "foreign-structured-upload-form-label-infoform-categories": "وېشنيزې",
        "foreign-structured-upload-form-label-infoform-date": "نېټه",
-       "foreign-structured-upload-form-3-label-question-ownwork": "آيا دا انځور (انځور مو اخيستی، انځور مو کښلی، همداسې نور.) تاسو پخپله جوړ کړئ؟",
-       "foreign-structured-upload-form-3-label-yes": "هو",
-       "foreign-structured-upload-form-3-label-no": "نه",
        "backend-fail-notexists": "د $1 په نوم دوتنه نشته.",
        "backend-fail-delete": "د \"$1\" دوتنه ړنګه نه شوه.",
        "backend-fail-alreadyexists": "د $1 دوتنه له پخوا نه شته.",
index 8c22fae..9b21344 100644 (file)
@@ -89,7 +89,8 @@
                        "Almondega",
                        "Eduardo Addad de Oliveira",
                        "Raphaelras",
-                       "Arthurteb303"
+                       "Arthurteb303",
+                       "Rffontenelle"
                ]
        },
        "tog-underline": "Sublinhar links:",
        "tog-watchlisthidebots": "Ocultar edições de bots da lista de páginas vigiadas",
        "tog-watchlisthideminor": "Ocultar edições menores da lista de páginas vigiadas",
        "tog-watchlisthideliu": "Ocultar edições de usuários autenticados da lista de páginas vigiadas",
+       "tog-watchlistreloadautomatically": "Recarregar a lista de páginas vigiadas automaticamente sempre que um filtro for alterado (requer JavaScript)",
        "tog-watchlisthideanons": "Ocultar edições de usuários anônimos da lista de páginas vigiadas",
        "tog-watchlisthidepatrolled": "Ocultar edições patrulhadas da lista de páginas vigiadas",
        "tog-watchlisthidecategorization": "Ocultar a categorização das páginas",
        "missingarticle-rev": "(revisão#: $1)",
        "missingarticle-diff": "(Dif.: $1, $2)",
        "readonly_lag": "O banco de dados foi automaticamente bloqueado enquanto os servidores secundários se sincronizam com o principal",
+       "nonwrite-api-promise-error": "O cabeçalho HTTP \"Promise-Non-Write-API-Action\" foi enviado, mas a requisição era para um módulo de escrita de API.",
        "internalerror": "Erro interno",
        "internalerror_info": "Erro interno: $1",
        "internalerror-fatal-exception": "Excepção fatal do tipo \"$1\"",
        "formerror": "Erro: Não foi possível enviar o formulário",
        "badarticleerror": "Esta ação não pode ser realizada nesta página.",
        "cannotdelete": "Não foi possível eliminar a página ou arquivo $1.\nÉ possível que ele já tenha sido eliminado por outra pessoa.",
-       "cannotdelete-title": "Não é possível excluir a página \" $1 \"",
+       "cannotdelete-title": "Não é possível eliminar a página \"$1\"",
        "delete-hook-aborted": "A eliminação foi cancelada por um \"hook\".\nNão foi dada nenhuma explicação.",
        "no-null-revision": "Não foi possível criar nova revisão nula para a página \"$1\"",
        "badtitle": "Título inválido",
        "mypreferencesprotected": "Você não tem permissão para editar suas preferências.",
        "ns-specialprotected": "Não é possível editar páginas especiais",
        "titleprotected": "Este título foi protegido, para que não seja criado.\nQuem o protegeu foi [[User:$1|$1]], com a justificativa: ''$2''.",
-       "filereadonlyerror": "Não é possível modificar o arquivo \"$1\" porque o repositório do arquivo \"$2\" está em modo somente leitura.\n\nO administrador que bloqueou ofereceu a seguinte explicação: \"$3\".",
+       "filereadonlyerror": "Não é possível modificar o arquivo \"$1\" porque o repositório do arquivo \"$2\" está em modo somente leitura.\n\nO administrador de sistema que bloqueou ofereceu a seguinte explicação: \"$3\".",
        "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",
        "virus-unknownscanner": "antivírus desconhecido:",
        "logouttext": "'''Agora você encontra-se desautenticado.'''\n\nNote que algumas páginas podem continuar sendo exibidas como se você ainda estivesse autenticado até que você limpe a ''cache'' do seu navegador.",
        "cannotlogoutnow-title": "Não é possível encerrar a sessão agora",
+       "cannotlogoutnow-text": "Não é possível sair usando $1.",
        "welcomeuser": "Bem-vindo, $1!",
        "welcomecreation-msg": "A sua conta foi criada.\nNão se esqueça de personalizar as suas [[Special:Preferences|preferências no wiki {{SITENAME}}]].",
        "yourname": "Nome de usuário:",
        "userlogin-remembermypassword": "Mantenha-me conectado",
        "userlogin-signwithsecure": "Use a conexão segura",
        "cannotloginnow-title": "Não é possível iniciar a sessão agora",
+       "cannotloginnow-text": "Não é possível autenticar usando $1.",
        "yourdomainname": "Seu domínio:",
        "password-change-forbidden": "Você não pode alterar senhas nessa wiki.",
        "externaldberror": "Ocorreu ou um erro no banco de dados durante a autenticação ou não lhe é permitido atualizar a sua conta externa.",
        "wrongpasswordempty": "Foi fornecida uma senha em branco.\nTente novamente.",
        "passwordtooshort": "As senhas devem ter no mínimo {{PLURAL:$1|1 caractere|$1 caracteres}}.",
        "passwordtoolong": "Senhas não podem ser maiores do que {{PLURAL:$1|1 caractere|$1 caracteres}}.",
+       "passwordtoopopular": "Senhas comuns não podem ser usadas. Por favor escolha uma senha mais difícil",
        "password-name-match": "A sua senha deve ser diferente do seu nome de usuário.",
        "password-login-forbidden": "O uso deste nome de usuário e senha foi desautorizado.",
        "mailmypassword": "Redefinir senha",
        "resetpass_submit": "Definir senha e entrar",
        "changepassword-success": "Sua senha foi alterada com sucesso!",
        "changepassword-throttled": "Você realizou demasiadas tentativas de se registrar.\nPor favor, aguarde $1 antes de tentar novamente.",
-       "botpasswords-existing": "Senhas bot existentes",
-       "botpasswords-createnew": "Crie uma nova senha bot",
-       "botpasswords-editexisting": "Editar uma senha existente bot",
+       "botpasswords": "Senhas de robôs",
+       "botpasswords-summary": "<em>Senhas de robôs</em> permitem acesso a uma conta de usuário via a API sem usar as credenciais da conta para autenticação. Os direitos disponíveis do usuário ao se autenticar com uma senha bot podem ser restritos.\n\nSe você não sabe porque você poderia precisar fazer isso, provavelmente você não deveria fazer. Ninguém jamais deve perguntar a você para criar uma dessas e fornecê-la.",
+       "botpasswords-disabled": "Senhas de robôs estão desabilitadas.",
+       "botpasswords-no-central-id": "Para usar senhas de robôs, você deve estar autenticada para uma conta centralizada.",
+       "botpasswords-existing": "Senhas de robôs existentes",
+       "botpasswords-createnew": "Crie uma nova senha de robô",
+       "botpasswords-editexisting": "Editar uma senha de robô existente",
        "botpasswords-label-appid": "Nome do robô:",
        "botpasswords-label-create": "Criar",
        "botpasswords-label-update": "Atualizar",
        "botpasswords-label-grants": "Permissões aplicáveis",
        "botpasswords-label-restrictions": "Restrições de uso:",
        "botpasswords-label-grants-column": "Concedido",
-       "botpasswords-created-title": "Password Bot criado",
-       "botpasswords-updated-title": "Password Bot atualizado",
-       "botpasswords-deleted-title": "Bot senha excluído",
+       "botpasswords-bad-appid": "O nome de robô \"$1\" não é válido.",
+       "botpasswords-insert-failed": "Falha ao adicionar o nome de robô \"$1\". Ele já foi adicionado?",
+       "botpasswords-update-failed": "Falha ao atualizar o nome do robô \"$1\". Elo já foi apagado?",
+       "botpasswords-created-title": "Senha de robô criada",
+       "botpasswords-created-body": "A senha do robô \"$1\" foi criada com sucesso.",
+       "botpasswords-updated-title": "Senha de robô atualizada",
+       "botpasswords-updated-body": "A senha de robô \"$1\" foi atualizada com sucesso.",
+       "botpasswords-deleted-title": "Senha de bot apagada",
+       "botpasswords-deleted-body": "A senha de bot \"$1\" foi apagada.",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider não está disponível.",
+       "botpasswords-restriction-failed": "Restrições de senha de robô evitam esta autenticação.",
+       "botpasswords-invalid-name": "O nome de usuário especificado não contém o separador de senha de robô (\"$1\").",
+       "botpasswords-not-exist": "O usuário \"$1\" não possui uma senha de robô \"$2\".",
        "resetpass_forbidden": "As senhas não podem ser alteradas",
        "resetpass-no-info": "Você precisa estar autenticado para acessar esta página diretamente.",
        "resetpass-submit-loggedin": "Alterar senha",
        "permissionserrorstext-withaction": "Você não possui permissão para $2, {{PLURAL:$1|pelo seguinte motivo|pelos motivos a seguir}}:",
        "recreate-moveddeleted-warn": "'''Atenção: Você está recriando uma página já eliminada em outra ocasião.'''\n\nConsidere se é realmente adequado continuar editando esta página.\nOs registros de eliminação e de movimentação desta página são exibidos a seguir, para sua comodidade:",
        "moveddeleted-notice": "Esta página foi eliminada.\nOs registros de eliminação e de movimentação para esta página estão disponibilizados abaixo, para referência.",
-       "moveddeleted-notice-recent": "Desculpe, esta página foi excluído recentemente (nos últimos 24 horas). A eliminação e se mover para a página de log são fornecidos abaixo para referência.",
+       "moveddeleted-notice-recent": "Desculpe, esta página foi eliminada recentemente (nos últimos 24 horas). A eliminação e se mover para a página de log são fornecidos abaixo para referência.",
        "log-fulllog": "Ver registro detalhado",
        "edit-hook-aborted": "Edição abortada por ''hook''.\nEle não deu nenhuma explicação.",
        "edit-gone-missing": "Não foi possível atualizar a página.\nEla parece ter sido eliminada.",
        "last": "ant",
        "page_first": "primeira",
        "page_last": "última",
-       "histlegend": "Como selecionar: marque as caixas de seleção das versões que deseja comparar e pressione enter ou clique no botão na parte inferior do formulário.<br />\nLegenda: '''({{int:cur}})''' = diferenças em relação a última versão, '''({{int:last}})''' = diferenças em relação a versão anterior, '''{{int:minoreditletter}}''' = edição menor.",
+       "histlegend": "Como selecionar: marque as caixas de seleção das versões que deseja comparar e pressione enter ou clique no botão na parte inferior do formulário.<br />\nLegenda: <strong>({{int:cur}})</strong> = diferenças em relação a última versão, <strong>({{int:last}})</strong> = diferenças em relação a versão anterior, <strong>{{int:minoreditletter}}</strong> = edição menor.",
        "history-fieldset-title": "Navegar pelo histórico",
        "history-show-deleted": "Apenas as eliminadas",
        "histfirst": "Mais antigas",
        "right-editmyprivateinfo": "Editar seus próprios dados privados (exemplo: endereço de e-mail, nome real)",
        "right-editmyoptions": "Modifique suas preferências.",
        "right-rollback": "Reverter rapidamente o último usuário que editou uma página em particular",
-       "right-markbotedits": "Marcar edições revertidas como edições de bot",
+       "right-markbotedits": "Marcar edições revertidas como edições de robôs",
        "right-noratelimit": "Não afetado pelos limites de velocidade de operação",
        "right-import": "Importar páginas de outros wikis",
        "right-importupload": "Importar páginas de um arquivo carregado",
        "upload-dialog-button-done": "Feito",
        "upload-dialog-button-save": "Salvar",
        "upload-dialog-button-upload": "Enviar",
-       "upload-form-label-select-file": "Selecionar arquivo",
        "upload-form-label-infoform-title": "Detalhes",
        "upload-form-label-infoform-name": "Nome",
        "upload-form-label-infoform-description": "Descrição",
        "foreign-structured-upload-form-label-infoform-categories": "Categorias",
        "foreign-structured-upload-form-label-infoform-date": "Data",
        "foreign-structured-upload-form-label-not-own-work-local-local": "Você pode também querer tentar [[Special:Upload|the default upload page]]",
-       "foreign-structured-upload-form-2-label-useful": "Deve ser <strong>educativo e útil</strong> para ensinar a outros.",
-       "foreign-structured-upload-form-3-label-yes": "Sim",
-       "foreign-structured-upload-form-3-label-no": "Não",
        "backend-fail-stream": "Não foi possível transmitir o arquivo  $1.",
        "backend-fail-backup": "Não foi possível fazer backup do arquivo  $1 .",
        "backend-fail-notexists": "O arquivo $1 não existe.",
        "listgrouprights-namespaceprotection-header": "Restrições de namespace",
        "listgrouprights-namespaceprotection-namespace": "Namespace",
        "listgrouprights-namespaceprotection-restrictedto": "Direito(s) permitindo edições do usuário",
-       "listgrants": "Permissões",
-       "listgrants-grant": "Permissão",
+       "listgrants": "Atribuições",
+       "listgrants-grant": "Atribuição",
        "listgrants-rights": "Direitos",
        "trackingcategories": "Categorias de rastreamento",
        "trackingcategories-summary": "Esta página lista categorias de monitoramento que são preenchidas automaticamente pelo software MediaWiki. Seus nomes podem ser alterados através da alteração das mensagens de sistema relevantes no namespace {{ns: 8}}.",
        "newimages-summary": "Esta página especial mostra os arquivos mais recentemente enviados",
        "newimages-legend": "Filtrar",
        "newimages-label": "Nome de arquivo (ou parte dele):",
-       "newimages-showbots": "Mostrar uploads realizados por bots",
+       "newimages-showbots": "Mostrar uploads realizados por robôs",
        "newimages-hidepatrolled": "Ocultar os carregamentos patrulhados.",
        "noimages": "Nada para ver.",
        "ilsubmit": "Pesquisar",
index caa6b58..32c1057 100644 (file)
        "mergehistory-empty": "Não existem revisões fundíveis.",
        "mergehistory-done": "Foram fundidas $3 {{PLURAL:$3|edição|edições}} de $1 {{PLURAL:$3|em}} [[:$2]].",
        "mergehistory-fail": "Não foi possível fundir os históricos; verifique a página e os parâmetros de tempo, por favor.",
+       "mergehistory-fail-bad-timestamp": "Registo data/hora inválido",
        "mergehistory-fail-invalid-source": "Página de origem inválida.",
        "mergehistory-fail-invalid-dest": "Página de destino inválida.",
        "mergehistory-fail-self-merge": "As páginas de origem e de destino não podem ser a mesma.",
        "upload-dialog-button-done": "Feito",
        "upload-dialog-button-save": "Gravar",
        "upload-dialog-button-upload": "Carregar",
-       "upload-form-label-select-file": "Selecionar ficheiro",
        "upload-form-label-infoform-title": "Detalhes",
        "upload-form-label-infoform-name": "Nome",
        "upload-form-label-infoform-description": "Descrição",
        "foreign-structured-upload-form-label-own-work-message-shared": "Confirmo que sou o proprietário dos direitos de autor deste ficheiro, e aceito partilhar irrevogavelmente este ficheiro para o Wikimedia Commons nos termos da licença [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Atribuição-CompartilhaIgual 4.0], e concordo com os [https://wikimediafoundation.org/wiki/Terms_of_Use Termos de Utilização].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Se não é o proprietário dos direitos de autor deste ficheiro, ou caso deseje partilhá-lo sob uma licença diferente, considere utilizar o [https://commons.wikimedia.org/wiki/Special:UploadWizard Assistente de Envio de Ficheiros do Commons].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Pode querer tentar utilizar [[Special:Upload|a página de carregamento em {{SITENAME}}]], se o sítio aceitar o carregamento deste ficheiro de acordo com as suas políticas.",
-       "foreign-structured-upload-form-2-label-intro": "Obrigado por doar uma imagem para utilização em {{SITENAME}}. Deverá continuar apenas se cumprir algumas condições:",
-       "foreign-structured-upload-form-2-label-ownwork": "Deve ser inteiramente <strong>sua obra própria</strong>, não apenas retirada da Internet",
-       "foreign-structured-upload-form-2-label-noderiv": "Não pode conter <strong>nenhuma obra de qualquer outra pessoa</strong>, ou inspirado por elas",
-       "foreign-structured-upload-form-2-label-useful": "Deve ser <strong>educativo e útil</strong> para ensinar a outros",
-       "foreign-structured-upload-form-2-label-ccbysa": "Deve estar <strong>aceito para publicar para sempre</strong> na Internet nos termos da licença [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Atribuição-CompartilhaIgual 4.0]",
-       "foreign-structured-upload-form-2-label-alternative": "Caso nenhum dos itens acima for o correto, ainda pode ser capaz de carregar este ficheiro ao utilizar o [https://commons.wikimedia.org/wiki/Special:UploadWizard Assistente de Envio de Ficheiros do Commons], desde que esteja disponível sob uma licença livre.",
-       "foreign-structured-upload-form-3-label-yes": "Sim",
-       "foreign-structured-upload-form-3-label-no": "Não",
-       "foreign-structured-upload-form-4-label-bad": "Não pode carregar imagens encontradas num motor de busca ou descarregadas de outros sítios.",
        "backend-fail-stream": "Não foi possível transmitir o ficheiro \"$1\".",
        "backend-fail-backup": "Não foi possível fazer cópia de segurança do ficheiro \"$1\".",
        "backend-fail-notexists": "O ficheiro $1 não existe.",
        "apisandbox": "Testes da API",
        "apisandbox-api-disabled": "A API está desativada neste site.",
        "apisandbox-intro": "Use esta página para fazer experiências com a '''API de <i>web services</i> do MediaWiki'''.\nConsulte a [//www.mediawiki.org/wiki/API:Main_page documentação da API] para informações sobre o uso da API. Exemplo: [//www.mediawiki.org/wiki/API#A_simple_example obter o conteúdo da Página Principal]. Selecione uma operação para ver mais exemplos.\n\nNote que, embora esta seja uma área de testes, as operações que executar nesta página podem modificar a wiki.",
+       "apisandbox-fullscreen": "Expandir painel",
+       "apisandbox-unfullscreen": "Mostrar página",
        "apisandbox-submit": "Fazer o pedido",
        "apisandbox-reset": "Limpar",
+       "apisandbox-retry": "Tentar novamente",
        "apisandbox-examples": "Exemplos",
+       "apisandbox-dynamic-parameters-add-label": "Adicionar parâmetro:",
+       "apisandbox-dynamic-parameters-add-placeholder": "Nome do parâmetro",
+       "apisandbox-dynamic-error-exists": "Um parâmetro com o nome \"$1\" já existe.",
+       "apisandbox-deprecated-parameters": "Parâmetros obsoletos",
+       "apisandbox-submit-invalid-fields-title": "Alguns campos são inválidos",
+       "apisandbox-submit-invalid-fields-message": "Por favor, corrija os campos marcados e tente novamente.",
        "apisandbox-results": "Resultados",
        "apisandbox-request-url-label": "URL do pedido:",
-       "apisandbox-request-time": "Tempo de processamento: $1",
+       "apisandbox-request-time": "Tempo de processamento: {{PLURAL:$1|$1 ms}}",
        "booksources": "Fontes bibliográficas",
        "booksources-search-legend": "Pesquisar referências bibliográficas",
        "booksources-search": "Pesquisar",
        "listgrouprights-namespaceprotection-header": "Restrições do domínio",
        "listgrouprights-namespaceprotection-namespace": "Domínio",
        "listgrouprights-namespaceprotection-restrictedto": "Direito(s) do utilizador para editar",
-       "listgrants": "Privilégios",
-       "listgrants-grant": "Privilégio",
+       "listgrants": "Atribuições",
+       "listgrants-summary": "Esta é uma lista de atribuições os respectivos acessos às permissões de utilizador. Os utilizadores podem autorizar aplicações a utilizar suas contas, mas com permissões limitadas baseadas nas atribuições dadas pelos usuários a cada aplicação. No entanto, uma aplicação agindo em nome de um utilizador não tem como utilizar permissões que o utilizador não possui.\nPode haver [[{{MediaWiki:Listgrouprights-helppage}}|informação adicional]] sobre permissões individuais.",
+       "listgrants-grant": "Atribuição",
        "listgrants-rights": "Direitos",
        "trackingcategories": "Categorias de monitorização",
        "trackingcategories-summary": "Esta página lista as categorias monitoradas que foram geradas automaticamente pelo software MediaWiki. Os seus nomes podem ser alterados ao editar sua mensagem correspondente no domínio {{ns:8}}.",
index 7cd96cc..405f24b 100644 (file)
                        "J. 'mach' wust",
                        "Ciencia Al Poder",
                        "Aursani",
-                       "Robin van der Vliet"
+                       "Robin van der Vliet",
+                       "Conquistador"
                ]
        },
        "sidebar": "{{notranslate}}",
        "helppage": "{{ignored}}\nThe link destination used by default in the sidebar, and in {{msg-mw|Noarticletext}}.",
        "helppage-top-gethelp": "Link to some MediaWiki.org help page or tutorial.\n{{Identical|Help}}",
        "mainpage": "Defines the link and display name of the main page of the wiki. Shown as the top link in the navigation part of the interface. Please do not change it too often, that could break things!\n\nSee also:\n* {{msg-mw|Mainpage}}\n* {{msg-mw|Accesskey-n-mainpage}}\n* {{msg-mw|Tooltip-n-mainpage}}\n{{Identical|Main page}}",
-       "mainpage-description": "The same as {{msg-mw|mainpage}}, used as link text on [[MediaWiki:Sidebar]].\n\nThis makes it possible to the change the link destination (the message \"mainpage\") without changing the link text or without disabling translations.\n\nSee also:\n* {{msg-mw|Mainpage-description}}\n* {{msg-mw|Accesskey-n-mainpage-description}}\n* {{msg-mw|Tooltip-n-mainpage-description}}\n{{Identical|Main page}}",
+       "mainpage-description": "The same as {{msg-mw|mainpage}}, used as link text on [[MediaWiki:Sidebar]].\n\nThis makes it possible to change the link destination (the message \"mainpage\") without changing the link text or without disabling translations.\n\nSee also:\n* {{msg-mw|Mainpage-description}}\n* {{msg-mw|Accesskey-n-mainpage-description}}\n* {{msg-mw|Tooltip-n-mainpage-description}}\n{{Identical|Main page}}",
        "policy-url": "{{doc-important|Do not change the <code>Project:</code> part.}}\nThe URL of the project page describing the policies of the wiki.\n\nThis is shown below every page (the left link).",
        "portal": "Display name for the 'Community portal', shown in the sidebar menu of all pages. The target page is meant to be a portal for users where useful links are to be found about the wiki's operation.\n\nSee also:\n* {{msg-mw|Portal}}\n* {{msg-mw|Portal-url}}\n* {{msg-mw|Accesskey-n-portal}}\n* {{msg-mw|Tooltip-n-portal}}",
        "portal-url": "{{doc-important|Do not change the <code>Project:</code> part.}}\nDescription: The URL of the community portal. This is shown in the sidebar by default (removed on translatewiki.net).\n\nSee also:\n* {{msg-mw|Portal}}\n* {{msg-mw|Portal-url}}\n* {{msg-mw|Accesskey-n-portal}}\n* {{msg-mw|Tooltip-n-portal}}",
        "upload-dialog-button-done": "Button to close the dialog once upload is complete\n{{Identical|Done}}",
        "upload-dialog-button-save": "Button to save the file after upload finishes and metadata is filled out, part 2 of a multi-step upload form\n{{Identical|Save}}",
        "upload-dialog-button-upload": "Button to initiate upload, part 1 of a multi-step upload form\n{{Identical|Upload}}",
-       "upload-form-label-select-file": "Label for the select file widget\n{{Identical|Select file}}",
        "upload-form-label-infoform-title": "Title for the information form\n{{Identical|Detail}}",
        "upload-form-label-infoform-name": "Label for the file name input\n{{Identical|Name}}",
        "upload-form-label-infoform-name-tooltip": "The tooltip documenting the title field for the file - used as the filename on-wiki.\n\nIdentical to {{msg-mw|mwe-upwiz-tooltip-title}}.",
        "foreign-structured-upload-form-label-own-work-message-default": "Message shown by default when a user affirms that they are allowed to upload a file to a remote wiki.",
        "foreign-structured-upload-form-label-not-own-work-message-default": "Message shown by default when a user cannot upload a file to a remote wiki.",
        "foreign-structured-upload-form-label-not-own-work-local-default": "Suggests uploading a file locally instead of to a remote wiki.",
-       "foreign-structured-upload-form-label-own-work-message-shared": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 1.png|thumb]] Legal message, confirming that the user is allowed to upload the file. Almost identical to {{msg-mw|foreign-structured-upload-form-2-label-termsofuse}}.",
+       "foreign-structured-upload-form-label-own-work-message-shared": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 1.png|thumb]] Legal message, confirming that the user is allowed to upload the file.",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 1.png|thumb]] Explains alternatives when the copyright isn't owned by the uploader.",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 1.png|thumb]] Message suggesting the user might want to upload a file locally instead of to Wikimedia Commons.",
-       "foreign-structured-upload-form-2-label-intro": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 2.png|thumb]] Introductory text in cross-wiki upload dialog.",
-       "foreign-structured-upload-form-2-label-ownwork": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 2.png|thumb]] Affirmative statement, used as checkbox label. The user must tick it to continue.",
-       "foreign-structured-upload-form-2-label-noderiv": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 2.png|thumb]] Affirmative statement, used as checkbox label. The user must tick it to continue.",
-       "foreign-structured-upload-form-2-label-useful": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 2.png|thumb]] Affirmative statement, used as checkbox label. The user must tick it to continue.",
-       "foreign-structured-upload-form-2-label-ccbysa": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 2.png|thumb]] Affirmative statement, used as checkbox label. The user must tick it to continue.",
-       "foreign-structured-upload-form-2-label-alternative": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 2.png|thumb]] Explains alternatives when the copyright isn't owned by the uploader.\n\nSimilar to {{msg-mw|foreign-structured-upload-form-3-label-alternative}}.",
-       "foreign-structured-upload-form-2-label-termsofuse": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 2.png|thumb]] Legal message, confirming that the user is allowed to upload the file. Almost identical to {{msg-mw|foreign-structured-upload-form-label-own-work-message-shared}}.",
-       "foreign-structured-upload-form-3-label-question-website": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 3.png|thumb]] Question to the user, with Yes/No answer ({{msg-mw|foreign-structured-upload-form-3-label-yes}} / {{msg-mw|foreign-structured-upload-form-3-label-no}}). The answer determines whether the user will be able to continue.",
-       "foreign-structured-upload-form-3-label-question-ownwork": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 3.png|thumb]] Question to the user, with Yes/No answer ({{msg-mw|foreign-structured-upload-form-3-label-yes}} / {{msg-mw|foreign-structured-upload-form-3-label-no}}). The answer determines whether the user will be able to continue.",
-       "foreign-structured-upload-form-3-label-question-noderiv": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 3.png|thumb]] Question to the user, with Yes/No answer ({{msg-mw|foreign-structured-upload-form-3-label-yes}} / {{msg-mw|foreign-structured-upload-form-3-label-no}}). The answer determines whether the user will be able to continue.",
-       "foreign-structured-upload-form-3-label-yes": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 3.png|thumb]] {{Identical|Yes}}",
-       "foreign-structured-upload-form-3-label-no": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 3.png|thumb]] {{Identical|No}}",
-       "foreign-structured-upload-form-3-label-alternative": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 3.png|thumb]] Explains alternatives when the copyright isn't owned by the uploader.\n\nSimilar to {{msg-mw|foreign-structured-upload-form-2-label-alternative}}.",
-       "foreign-structured-upload-form-4-label-good": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 4.png|thumb]] Gives examples of good content that is welcome. There is limited space for this text in the interface, please keep it short.",
-       "foreign-structured-upload-form-4-label-bad": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 4.png|thumb]] Gives examples of bad content that is unacceptable. There is limited space for this text in the interface, please keep it short.",
        "backend-fail-stream": "Parameters:\n* $1 - a filename",
        "backend-fail-backup": "Parameters:\n* $1 - a filename",
        "backend-fail-notexists": "Parameters:\n* $1 - a filename",
index 45d2d2d..cb3eb69 100644 (file)
        "previewnote": "'''Помните, что это только предварительный просмотр.'''\nВаши изменения ещё не были сохранены!",
        "continue-editing": "Продолжить редактирование",
        "previewconflict": "Этот предварительный просмотр отражает текст в верхнем окне редактирования так, как он будет выглядеть, если вы решите записать его.",
-       "session_fail_preview": "'''К сожалению, сервер не смог обработать вашу правку из-за потери идентификатора сессии.\nПожалуйста, попробуйте ещё раз.\nЕсли эта ошибка повторится, попробуйте [[Special:UserLogout|завершить сеанс]] и заново представиться системе.'''",
-       "session_fail_preview_html": "'''К сожалению, сервер не смог обработать вашу правку из-за потери данных сессии.'''\n\n''Так как {{SITENAME}} разрешает использовать чистый HTML, предварительный просмотр отключён в качестве меры предотвращения JavaScript-атак.''\n\n'''Если это добросовестная попытка редактирования, пожалуйста, попробуйте ещё раз.\nЕсли не получается повторная правка, попробуйте [[Special:UserLogout|завершить сеанс]] работы и заново представиться.'''",
+       "session_fail_preview": "К сожалению, мы не смогли обработать вашу правку из-за потери данных сессии.\n\nВозможно, вы завершили сеанс работы. <strong>Пожалуйста, убедитесь, что вы всё ещё авторизованы, и попробуйте снова.</strong>\nЕсли это всё равно не помогло, попробуйте [[Special:UserLogout|выйти из системы]] и войти заново, а также проверьте, что ваш браузер позволяет принимать cookies с этого сайта.",
+       "session_fail_preview_html": "К сожалению, сервер не смог обработать вашу правку из-за потери данных сессии.\n\n<em>Так как {{SITENAME}} разрешает использовать чистый HTML, предварительный просмотр отключён в качестве меры предотвращения JavaScript-атак.</em>\n\n<strong>Если это добросовестная попытка редактирования, пожалуйста, попробуйте ещё раз.</strong>\nЕсли не получается повторная правка, попробуйте [[Special:UserLogout|завершить сеанс]] работы, заново представиться и проверить, что ваш браузер разрешает использовать cookies на этом сайте.",
        "token_suffix_mismatch": "'''Ваша правка была отклонена, так как ваша программа неправильно обрабатывает знаки пунктуации\nв окне редактирования. Правка была отменена для предотвращения искажения текста статьи.\nПодобные проблемы могут возникать при использовании анонимизирующих веб-прокси, содержащих ошибки.'''",
        "edit_form_incomplete": "'''Некоторые части формы редактирования не достигли сервера. Внимательно проверьте, что ваши правки не повреждены, и попробуйте ещё раз.'''",
        "editing": "Редактирование: $1",
        "mergehistory-fail-bad-timestamp": "Метка времени неверна.",
        "mergehistory-fail-invalid-source": "Страница-источник неверна.",
        "mergehistory-fail-invalid-dest": "Целевая страница неверна.",
+       "mergehistory-fail-no-change": "В процесс слияния истории не произошло слияние никаких версий. Пожалуйста, перепроверьте страницу и временные параметры.",
+       "mergehistory-fail-permission": "Недостаточно прав для выполнения объединения истории.",
+       "mergehistory-fail-self-merge": "Исходная и целевая страницы совпадают.",
+       "mergehistory-fail-timestamps-overlap": "Исходные версии перекрывают или идут после версий назначения.",
        "mergehistory-fail-toobig": "Не удаётся выполнить слияние истории, так как необходимо перенести больше допустимого лимита в $1 {{PLURAL:$1|версию|версии|версий}}.",
        "mergehistory-no-source": "Исходная страница «$1» не существует.",
        "mergehistory-no-destination": "Целевая страница «$1» не существует.",
        "upload-dialog-button-done": "Готово",
        "upload-dialog-button-save": "Сохранить",
        "upload-dialog-button-upload": "Загрузить",
-       "upload-form-label-select-file": "Выбрать файл",
        "upload-form-label-infoform-title": "Подробности",
        "upload-form-label-infoform-name": "Имя",
        "upload-form-label-infoform-name-tooltip": "Уникальный описательный заголовок для файла, который будет сохранён как его название. Можете использовать простой язык и пробелы. Не указывайте расширение.",
        "foreign-structured-upload-form-label-own-work-message-shared": "Я подтверждаю, что являюсь владельцем авторских прав на этот файл, и соглашаюсь на безотзывной основе разместить этот файл на Викискладе под лицензией [https://creativecommons.org/licenses/by-sa/4.0/deed.ru Creative Commons Attribution-ShareAlike 4.0], а также соглашаюсь с [https://wikimediafoundation.org/wiki/Условия_использования Условиями использования].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Если вы не являетесь владельцем авторских прав на этот файл, или вы хотите выпустить его под другой лицензией, рассмотрите возможность использования [https://commons.wikimedia.org/wiki/Special:UploadWizard Мастера загрузки на Викисладе].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "В том случае, если этот файл может быть загружен в соответствии с правилами сайта {{SITENAME}}, вы также можете попробовать использовать его [[Special:Upload|страницу загрузки]].",
-       "foreign-structured-upload-form-2-label-intro": "Благодарим Вас за пожертвование изображения, которое будет использовано на сайте {{SITENAME}}. Вам следует продолжить, только если оно отвечает ряду условий:",
-       "foreign-structured-upload-form-2-label-ownwork": "Оно должно быть исключительно <strong>вашей работой</strong>, а не просто картинкой, скачанной из Интернета",
-       "foreign-structured-upload-form-2-label-noderiv": "Оно не должно <strong>содержать чьей-то чужой работы</strong> или быть вдохновлено ей",
-       "foreign-structured-upload-form-2-label-useful": "Оно должно быть <strong>образовательным и полезным</strong> для обучения других",
-       "foreign-structured-upload-form-2-label-ccbysa": "Вы должны быть согласны на то, чтобы <strong>опубликовать его в Интернете навсегда</strong> под лицензией [https://creativecommons.org/licenses/by-sa/4.0/deed.ru Creative Commons Attribution-ShareAlike 4.0]",
-       "foreign-structured-upload-form-2-label-alternative": "Если не всё вышеперечисленное верно, вы все равно можете загрузить этот файл, используя кнопку [https://commons.wikimedia.org/wiki/Special:UploadWizard Мастера загрузки Викисклада], в том случае, если он доступен под свободной лицензией.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Загружая данный файл, вы подтверждаете, что являетесь владельцем авторских прав на этот файл и безоговорочно согласны загрузить его на Викисклад под лицензией Creative Commons Attribution-ShareAlike 4.0, а также соглашаетесь с [https://wikimediafoundation.org/wiki/Условия_использования Условиями использования].",
-       "foreign-structured-upload-form-3-label-question-website": "Вы скачали это изображение с какого-то сайта или, может быть, нашли его через поиск изображений?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Вы создали это изображение (сделали фото, эскиз, чертёж и т. д.) сами?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Содержит ли он работу, принадлежащую кому-то другому (или вдохновлён ей), например, логотип?",
-       "foreign-structured-upload-form-3-label-yes": "Да",
-       "foreign-structured-upload-form-3-label-no": "Нет",
-       "foreign-structured-upload-form-3-label-alternative": "К сожалению, в данном случае, этот инструмент не поддерживает загрузку данного файла. Вы все равно можете загрузить этот файл, используя [https://commons.wikimedia.org/wiki/Special:UploadWizard Мастер загрузки Викисклада], в том случае, если он доступен под свободной лицензией.",
-       "foreign-structured-upload-form-4-label-good": "Используя этот инструмент, вы можете загрузить образовательную графику, которую вы создали, и фотографии, которые вы сняли, если они не содержат работ, принадлежащих кому-то другому.",
-       "foreign-structured-upload-form-4-label-bad": "Вы не можете загружать изображения, найденные в поисковой системе или скачанные с других сайтов.",
        "backend-fail-stream": "Не удалось транслировать файл $1.",
        "backend-fail-backup": "Невозможно сделать резервную копию файла $1.",
        "backend-fail-notexists": "Файл $1 не существует.",
        "import-nonewrevisions": "Никакие правки не были импортированы (все уже либо были обработаны, либо пропущены из-за ошибок).",
        "xml-error-string": "$1 в строке $2, позиции $3 (байт $4): $5",
        "import-upload": "Загрузить XML-данные",
-       "import-token-mismatch": "Потеряны данные сеанса. Пожалуйста, попробуйте ещё раз.",
+       "import-token-mismatch": "Потеряны данные сеанса.\n\nВозможно, вы завершили сеанс работы. <strong>Пожалуйста, убедитесь, что вы всё ещё авторизованы, и попробуйте снова.</strong>\nЕсли это всё равно не помогло, попробуйте [[Special:UserLogout|выйти из системы]] и войти заново, а также проверьте, что ваш браузер позволяет принимать cookies с этого сайта.",
        "import-invalid-interwiki": "Невозможно импортировать из указанной вики.",
        "import-error-edit": "Страница «$1» не была импортирована, так как вам не разрешено её редактировать.",
        "import-error-create": "Страница «$1» не была импортирована, так как вам не разрешено её создавать.",
        "expand_templates_generate_xml": "Показать дерево разбора XML",
        "expand_templates_generate_rawhtml": "Показать HTML",
        "expand_templates_preview": "Предпросмотр",
-       "expand_templates_preview_fail_html": "<em>Ð\9fоÑ\81колÑ\8cкÑ\83 Ð½Ð° Ñ\81айÑ\82е {{SITENAME}} Ñ\81 Ð²ÐºÐ»Ñ\8eÑ\87еннÑ\8bм Â«Ñ\81Ñ\8bÑ\80Ñ\8bм» HTML Ð¿Ñ\80оизоÑ\88ла Ð¿Ð¾Ñ\82еÑ\80Ñ\8f Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ñ\81еÑ\81Ñ\81ии, Ð¿Ñ\80едваÑ\80иÑ\82елÑ\8cнÑ\8bй Ð¿Ñ\80оÑ\81моÑ\82Ñ\80 Ñ\81кÑ\80Ñ\8bÑ\82 Ð² ÐºÐ°Ñ\87еÑ\81Ñ\82ве Ð¼ÐµÑ\80Ñ\8b Ð¿Ñ\80едоÑ\81Ñ\82оÑ\80ожноÑ\81Ñ\82и Ð¿Ñ\80оÑ\82ив JavaScript-аÑ\82ак.</em>\n\n<strong>Ð\95Ñ\81ли Ñ\8dÑ\82о Ð±Ñ\8bла Ð¿Ñ\80авомеÑ\80наÑ\8f Ð¿Ð¾Ð¿Ñ\8bÑ\82ка Ð¿Ñ\80едваÑ\80иÑ\82елÑ\8cного Ð¿Ñ\80оÑ\81моÑ\82Ñ\80а, Ð¿Ð¾Ð¶Ð°Ð»Ñ\83йÑ\81Ñ\82а, Ð¿Ð¾Ð¿Ñ\80обÑ\83йÑ\82е ÐµÑ\89Ñ\91 Ñ\80аз.</strong>\nÐ\95Ñ\81ли Ñ\83 Ð²Ð°Ñ\81 Ð¿Ð¾-пÑ\80ежнемÑ\83 Ð½Ðµ Ð¿Ð¾Ð»Ñ\83Ñ\87аеÑ\82Ñ\81Ñ\8f, Ð¿Ð¾Ð¿Ñ\80обÑ\83йÑ\82е [[Special:UserLogout|завеÑ\80Ñ\88иÑ\82Ñ\8c Ñ\81еанÑ\81 Ñ\80абоÑ\82Ñ\8b]] Ð¸ Ð°Ð²Ñ\82оÑ\80изоваÑ\82Ñ\8cÑ\81Ñ\8f ÐµÑ\89Ñ\91 Ñ\80аз.",
+       "expand_templates_preview_fail_html": "<em>Так ÐºÐ°Ðº {{SITENAME}} Ñ\80азÑ\80еÑ\88аеÑ\82 Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ñ\87иÑ\81Ñ\82Ñ\8bй HTML, Ð¿Ñ\80едваÑ\80иÑ\82елÑ\8cнÑ\8bй Ð¿Ñ\80оÑ\81моÑ\82Ñ\80 Ð¾Ñ\82клÑ\8eÑ\87Ñ\91н Ð² ÐºÐ°Ñ\87еÑ\81Ñ\82ве Ð¼ÐµÑ\80Ñ\8b Ð¿Ñ\80едоÑ\82вÑ\80аÑ\89ениÑ\8f JavaScript-аÑ\82ак.</em>\n\n<strong>Ð\95Ñ\81ли Ñ\8dÑ\82о Ð´Ð¾Ð±Ñ\80оÑ\81овеÑ\81Ñ\82наÑ\8f Ð¿Ð¾Ð¿Ñ\8bÑ\82ка Ñ\80едакÑ\82иÑ\80ованиÑ\8f, Ð¿Ð¾Ð¶Ð°Ð»Ñ\83йÑ\81Ñ\82а, Ð¿Ð¾Ð¿Ñ\80обÑ\83йÑ\82е ÐµÑ\89Ñ\91 Ñ\80аз.</strong>\nÐ\95Ñ\81ли Ð½Ðµ Ð¿Ð¾Ð»Ñ\83Ñ\87аеÑ\82Ñ\81Ñ\8f Ð¿Ð¾Ð²Ñ\82оÑ\80наÑ\8f Ð¿Ñ\80авка, Ð¿Ð¾Ð¿Ñ\80обÑ\83йÑ\82е [[Special:UserLogout|завеÑ\80Ñ\88иÑ\82Ñ\8c Ñ\81еанÑ\81]] Ñ\80абоÑ\82Ñ\8b, Ð·Ð°Ð½Ð¾Ð²Ð¾ Ð¿Ñ\80едÑ\81Ñ\82авиÑ\82Ñ\8cÑ\81Ñ\8f Ð¸ Ð¿Ñ\80овеÑ\80иÑ\82Ñ\8c, Ñ\87Ñ\82о Ð²Ð°Ñ\88 Ð±Ñ\80аÑ\83зеÑ\80 Ñ\80азÑ\80еÑ\88аеÑ\82 Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c cookies Ð½Ð° Ñ\8dÑ\82ом Ñ\81айÑ\82е.",
        "expand_templates_preview_fail_html_anon": "<em>Поскольку на сайте {{SITENAME}} включен «сырой» HTML, а вы не авторизовались, предварительный просмотр скрыт в качестве меры предосторожности против JavaScript-атак.</em>\n\n<strong>Если это правомерная попытка предварительного просмотра, пожалуйста, [[Special:UserLogin|войдите]] и попробуйте ещё раз.",
        "expand_templates_input_missing": "Вы должны вставить хоть какой-то текст.",
        "pagelanguage": "Изменение языка страницы",
index 8a20bc4..20e8e9a 100644 (file)
        "foreign-structured-upload-form-label-own-work-message-shared": "Бу билэни бас билэрбин уонна Биики Ыскылаакка төнүннэрбэттии [https://creativecommons.org/licenses/by-sa/4.0/deed.ru Creative Commons Attribution-ShareAlike 4.0] лиссиэнсийэннэн угары бигэргэтэбин. Ону тэҥэ [https://wikimediafoundation.org/wiki/Условия_использования Туһаныы усулуобуйатын кытта] сөбүлэһэбин.",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Өскөтө билэни бас билбэт буоллаххына, биитэр атын лиссиэнсийэннэн угуоххун баҕарар буоллаххына, манна баар ньыманы туһаныаххын сөп: [https://commons.wikimedia.org/wiki/Special:UploadWizard Биики Ыскылаакка угуу маастара].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Өскө, {{SITENAME}} быраабылатынан угар сатанар буоллаҕына, кини [[Special:Upload|киллэрии тэрилин]] туһаныаххын эмиэ сөп.",
-       "foreign-structured-upload-form-3-label-question-website": "Ойууну ханнык эрэ саайтан хачайдаан ыллыҥ дуо?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Бэйэҥ уруһуйдаабыт ойууҥ (эскииһиҥ, чертеһүҥ), түһэрбит хаартыскаҥ дуо?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Үлэҥ иһигэр ким эрэ бас билэр үлэтэ баар дуо, холобур, логотип?",
-       "foreign-structured-upload-form-3-label-yes": "Оннук",
-       "foreign-structured-upload-form-3-label-no": "Суох",
-       "foreign-structured-upload-form-3-label-alternative": "Оннук буоллаҕына, бу тэрил көмөтүнэн хачайдыыр сатаммат. Ол эрээри, өскөтө көҥүл лиссиэнсийэлээх буоллаҕына, син биир [https://commons.wikimedia.org/wiki/Special:UploadWizard Биики-ыскылаат маастарын] көмөтүнэн угуохха сөп.",
        "backend-fail-stream": "$1 билэни ыытар табыллыбата.",
        "backend-fail-backup": "Бу билэ $1 резервнэй куопуйатын оҥорор табыллыбата.",
        "backend-fail-notexists": "Маннык $1 билэ суох эбит.",
index 8dbeb71..63b3726 100644 (file)
        "noindex-category": "Neindeksirane stranice",
        "broken-file-category": "Stranice sa neispravnim linkovima do datoteka",
        "about": "O...",
-       "article": "Stranica sa sadržajem",
+       "article": "Stranica sadržaja",
        "newwindow": "(otvara se u novom prozoru)",
        "cancel": "Otkaži",
        "moredotdotdot": "Još...",
        "talkpagelinktext": "Razgovor",
        "specialpage": "Posebna stranica",
        "personaltools": "Lični alati",
-       "articlepage": "Vidi stranicu sa sadržajem",
+       "articlepage": "Vidi stranicu sadržaja",
        "talk": "Razgovor",
        "views": "Pregledi",
        "toolbox": "Alati",
        "versionrequired": "Potrebna je verzija $1 MediaWikija",
        "versionrequiredtext": "Potrebna je verzija $1 MediaWikija da bi se koristila ova stranica. Pogledaj [[Special:Version|verziju]].",
        "ok": "da",
+       "pagetitle": "$1 - {{SITENAME}}",
+       "pagetitle-view-mainpage": "{{SITENAME}}",
        "retrievedfrom": "Dobavljeno iz \"$1\"",
        "youhavenewmessages": "Imate $1 ($2).",
        "youhavenewmessagesfromusers": "Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika|$3 korisnika}} ($2).",
        "red-link-title": "$1 (stranica ne postoji)",
        "sort-descending": "Poredaj opadajuće",
        "sort-ascending": "Poredaj rastuće",
-       "nstab-main": "Članak / Чланак",
+       "nstab-main": "Stranica",
        "nstab-user": "Stranica korisnika",
        "nstab-media": "Mediji",
        "nstab-special": "Posebna stranica",
        "viewprevnext": "Pogledaj ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''Postoji stranica pod nazivom \"[[:$1]]\" na ovoj wiki'''",
        "searchmenu-new": "<strong>Napravi stranicu \"[[:$1]]\" na ovoj wiki!</strong> {{PLURAL:$2|0=|Pogledajte također straniu pronađenu vašom pretragom.|Pogledajte također i vaše rezultate pretrage.}}",
-       "searchprofile-articles": "Stranice sa sadržajem",
+       "searchprofile-articles": "Stranice sadržaja",
        "searchprofile-images": "Multimedija",
        "searchprofile-everything": "Sve",
        "searchprofile-advanced": "Napredno",
        "upload-dialog-button-done": "Urađeno",
        "upload-dialog-button-save": "Snimi",
        "upload-dialog-button-upload": "Postavi",
-       "upload-form-label-select-file": "Izaberi datoteku",
        "upload-form-label-infoform-title": "Detalji",
        "upload-form-label-infoform-name": "Ime",
        "upload-form-label-infoform-description": "Opis",
        "statistics-header-edits": "Statistike izmjena",
        "statistics-header-users": "Statistike korisnika",
        "statistics-header-hooks": "Ostale statistike",
-       "statistics-articles": "Stranice sa sadržajem",
+       "statistics-articles": "Stranice sadržaja",
        "statistics-pages": "Stranice",
        "statistics-pages-desc": "Sve stranice na wikiju, uključujući stranice za razgovor, preusmjerenja itd.",
        "statistics-files": "Broj postavljenih datoteka",
        "watchthispage": "Prati ovu stranicu",
        "unwatch": "Prekini praćenje",
        "unwatchthispage": "Prestani pratiti",
-       "notanarticle": "Nije stranica sa sadržajem",
+       "notanarticle": "Nije stranica sadržaja",
        "notvisiblerev": "Posljednja izmjena drugog korisnika je bila izbrisana",
        "watchlist-details": "{{PLURAL:$1|$1 stranica|$1 stranice|$1 stranica }} na vašem spisku praćenja, ne računajući posebno stranice za razgovor.",
        "wlheader-enotif": "* Obavještavanje e-poštom je omogućeno.",
        "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.",
        "databasenotlocked": "Baza podataka nije zaključana.",
        "lockedbyandtime": "(od $1 dana $2 u $3)",
-       "move-page": "Preusmjeravanje $1",
+       "move-page": "Premještanje $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 će postati stranica koja preusmjerava na članak pod novim imenom. \nMožete automatski izmjeniti 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 preusmjeren ukoliko već postoji članak pod imenom na koje namjeravate da preusmjerite 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 dobro razmislite prije nego što preimenujete stranicu.",
-       "movepagetext-noredirectfixer": "Koristeći obrazac ispod ćete preimenovati stranicu i premjestiti cijelu njenu historiju na novi naziv.\nStari naziv će postati preusmjerenje na novi naziv.\nMolimo provjerite da li postoje [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|nedovršena preusmjerenja]].\nVi ste za to odgovorni te morate provjeriti da li su linkovi ispravni i da li vode tamo gdje bi trebali.\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 znali da možete preimenovati stranicu nazad gdje je ranije bila preimenovana ako ste pogriješili a ne možete ponovo preimenovati postojeću stranicu.\n\n'''Pažnja!'''\nImajte na umu da preusmjeravanje popularnog članka može biti\ndrastična i neočekivana promjena za korisnike; molimo budite sigurni da ste shvatili posljedice prije nego što nastavite.",
+       "movepagetext-noredirectfixer": "Koristeći obrazac ispod ćete preimenovati stranicu i premjestiti cijelu njenu historiju na novi naziv.\nStari naziv će postati preusmjerenje na novi naziv.\nMolimo provjerite da li postoje [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|nedovršena preusmjerenja]].\nVi ste za to odgovorni te morate provjeriti da li su linkovi ispravni i da li vode tamo gdje bi trebali.\n\nImajte na umu da stranica <strong>neće</strong> biti premještena ako već postoji stranica s tim imenom, osim ako je prazna ili je preusmjerenje ili nema ranije historije.\nOvo znali da možete preimenovati stranicu nazad gdje je ranije bila preimenovana ako ste pogriješili a 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 budite sigurni da ste shvatili posljedice prije nego što nastavite.",
        "movepagetalktext": "Ako označite ovu kutijucu, pridružena stranica za razgovor će se automatski premjestiti na novi naslov, ukoliko ne-prazna stranica razgovor sa istim imenom već postoji. U tom slučaju ćete morati, ako želite, ručno premjestiti ili spojiti stranicu.",
        "moveuserpage-warning": "'''Upozorenje:''' Premještate korisničku stranicu. Molimo da zapamtite da će se samo stranica premjestiti a korisnik se ''neće'' preimenovati.",
        "movecategorypage-warning": "<strong>Upozorenje:</strong> Premještate stranicu kategorije. Imajte na umu da će samo stranica biti premještena i da sve stranice u staroj kategoriji <em>neće</em> biti ponovo kategorirane u novu kategoriju.",
        "tooltip-pt-login": "Predlažem da se prijavite; međutim, to nije obavezno",
        "tooltip-pt-logout": "Odjava sa projekta {{SITENAME}}",
        "tooltip-pt-createaccount": "Ohrabrujemo vas da otvorite račun i prijavite se; to, međutim, nije obavezno",
-       "tooltip-ca-talk": "Rasprava o stranici sa sadržajem",
+       "tooltip-ca-talk": "Diskusija o stranici sadržaja",
        "tooltip-ca-edit": "Uredi ovu stranicu",
        "tooltip-ca-addsection": "Započnite novu sekciju.",
        "tooltip-ca-viewsource": "Ova stranica je zaštićena.\nMožete vidjeti njen izvor",
        "tooltip-search": "Traži ovaj Wiki / Тражи овај Вики [alt-f]",
        "tooltip-search-go": "Idi na stranicu s upravo ovakvim imenom ako postoji",
        "tooltip-search-fulltext": "Pretraga stranica sa ovim tekstom",
-       "tooltip-p-logo": "Posjetite glavnu stranicu",
-       "tooltip-n-mainpage": "Posjetite glavnu stranicu",
-       "tooltip-n-mainpage-description": "Posjetite glavnu stranicu",
+       "tooltip-p-logo": "Posjeti glavnu stranicu",
+       "tooltip-n-mainpage": "Posjeti glavnu stranicu",
+       "tooltip-n-mainpage-description": "Posjeti glavnu stranicu",
        "tooltip-n-portal": "O projektu, što možete učiniti, gdje možete naći stvari",
        "tooltip-n-currentevents": "Pronađi dodatne informacije o trenutnim događajima",
        "tooltip-n-recentchanges": "Spisak nedavnih izmjena na wikiju.",
        "tooltip-t-specialpages": "Lista svih posebnih stranica",
        "tooltip-t-print": "Verzija ove stranice za ispis",
        "tooltip-t-permalink": "Stalni link ove verzije stranice",
-       "tooltip-ca-nstab-main": "Vidi stranicu sa sadržajem",
+       "tooltip-ca-nstab-main": "Vidi stranicu sadržaja",
        "tooltip-ca-nstab-user": "Pogledajte korisničku stranicu",
        "tooltip-ca-nstab-media": "Pogledajte medijski fajl",
        "tooltip-ca-nstab-special": "Ovo je posebna stranica, te se ne može zasebno uređivati",
index 5bfe107..e78d108 100644 (file)
        "prefswarning-warning": "Vykonali ste zmeny v nastaveniach, ktoré zatiaľ nie sú uložené. Ak túto stránku opustíte bez kliknutia na „$1“, vaše nastavenia sa neaktualizujú.",
        "prefs-tabs-navigation-hint": "Tip: prepínať medzi záložkami môžete aj pomocou šípok vľavo a vpravo.",
        "userrights": "Spravovanie používateľských práv",
-       "userrights-lookup-user": "Spravovať skupiny používateľov",
+       "userrights-lookup-user": "Spravovať členstvo používateľa v skupinách",
        "userrights-user-editname": "Zadajte meno používateľa:",
-       "editusergroup": "Upraviť skupinu používateľa",
+       "editusergroup": "Upraviť skupiny {{GENDER:$1|používateľa|používateľky}}",
        "editinguser": "Zmena práv používateľa '''[[User:$1|$1]]''' $2",
        "userrights-editusergroup": "Upraviť skupiny používateľa",
        "saveusergroups": "Uložiť skupiny používateľa",
-       "userrights-groupsmember": "Člen skupiny:",
-       "userrights-groupsmember-auto": "Implicitným členom:",
-       "userrights-groups-help": "Môžete zmeniť, v ktorých skupinách sa používateľ nachádza.\n* Zaškrtnuté pole znamená, že používateľ je v skupine.\n* Nezaškrtnuté pole znamená, že používateľ nie je v skupine.\n* „*“ znamená, že nemôžete odstrániť skupinu, keď ste ju už pridali resp. naopak.",
+       "userrights-groupsmember": "{{GENDER:$2|Člen|Členka}} {{PLURAL:$1|skupiny|skupín}}:",
+       "userrights-groupsmember-auto": "Implicitne {{GENDER:$2|člen|členka}} {{PLURAL:$1|skupiny|skupín}}:",
+       "userrights-groups-help": "Môžete zmeniť skupiny, do ktorých je {{GENDER:$1|používateľ zaradený|používateľka zaradená}}.\n* Zaškrtnuté pole znamená, že {{GENDER:$1|používateľ|používateľka}} je v skupine.\n* Nezaškrtnuté pole znamená, že {{GENDER:$1|používateľ|používateľka}} nie je v skupine.\n* Hviezdička (*) znamená, že nemôžete odstrániť skupinu, keď ste ju už pridali resp. naopak.",
        "userrights-reason": "Dôvod:",
        "userrights-no-interwiki": "Nemáte oprávnenie upravovať práva používateľov na iných wiki.",
        "userrights-nodatabase": "Databáza $1 neexistuje alebo nie je lokálna.",
        "rcshowhidecategorization": "$1 kategorizáciu stránok",
        "rcshowhidecategorization-show": "Zobraziť",
        "rcshowhidecategorization-hide": "Skryť",
-       "rclinks": "Zobraziť posledných $1 úprav v posledných $2 dňoch<br />$3",
+       "rclinks": "Zobraziť posledných $1 úprav za posledných $2 dní<br />$3",
        "diff": "rozdiel",
        "hist": "história",
        "hide": "Skryť",
        "querypage-disabled": "Táto špeciálna stránka bola zakázaná z výkonnostných dôvodov.",
        "apisandbox": "API pieskovisko",
        "apisandbox-api-disabled": "API je na tejto stránke vypnuté.",
-       "apisandbox-submit": "Podať žiadosť",
+       "apisandbox-fullscreen": "Rozbaliť panel",
+       "apisandbox-unfullscreen": "Zobraziť stránku",
+       "apisandbox-submit": "Odoslať dopyt",
        "apisandbox-reset": "Vyčistiť",
+       "apisandbox-retry": "Skúsiť znova",
        "apisandbox-examples": "Príklad",
        "apisandbox-results": "Výsledok",
        "apisandbox-request-url-label": "URL požiadavky:",
        "tooltip-t-recentchangeslinked": "Posledné úpravy v stránkach, na ktoré odkazuje táto stránka",
        "tooltip-feed-rss": "RSS feed pre túto stránku",
        "tooltip-feed-atom": "Kanál Atom pre túto stránku",
-       "tooltip-t-contributions": "Pozrieť si zoznam príspevkov od tohto používateľa",
+       "tooltip-t-contributions": "Pozrieť si zoznam príspevkov {{GENDER:$1|tohoto používateľa|tejto používateľky}}",
        "tooltip-t-emailuser": "Poslať e-mail tomuto používateľovi",
        "tooltip-t-info": "Viac informácií o tejto stránke",
        "tooltip-t-upload": "Nahranie súborov",
index cfdee95..0878a24 100644 (file)
        "upload-dialog-button-done": "Končano",
        "upload-dialog-button-save": "Shrani",
        "upload-dialog-button-upload": "Naloži",
-       "upload-form-label-select-file": "Izberi datoteko",
        "upload-form-label-infoform-title": "Podrobnosti",
        "upload-form-label-infoform-name": "Ime",
        "upload-form-label-infoform-name-tooltip": "Edinstven opisen naslov datoteke, ki bo služil kot ime datoteke. Uporabljate lahko navadni jezik s presledki. Ne vključujte datotečne končnice.",
        "foreign-structured-upload-form-label-own-work-message-shared": "Izjavljam, da sem lastnik avtorskih pravic te datoteke, strinjam se z nepreklicno objavo datoteke v Wikimedijini Zbirki pod dovoljenjem [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Priznanje avtorstva-Deljenje pod enakimi pogoji 4.0] in strinjam se s [https://wikimediafoundation.org/wiki/Terms_of_Use Pogoji uporabe].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Če niste lastnik avtorskih pravic datoteke ali jo želite objaviti pod drugačnim dovoljenje, uporabite [https://commons.wikimedia.org/wiki/Special:UploadWizard Čarovnik za nalaganje v Zbirko].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Morda želite datoteko poskusiti naložiti na [[Special:Upload|strani za nalaganje na {{SITENAME}}]], če stran dovoljuje nalaganje datoteke pod njihovimi pravili.",
-       "foreign-structured-upload-form-2-label-intro": "Zahvaljujemo se vam za prispevanje slike za uporabo na strani {{SITENAME}}. Nadaljujte samo, če slika ustreza naslednjim pogojem:",
-       "foreign-structured-upload-form-2-label-ownwork": "V celoti mora biti <strong>vaše lastn delo</strong>, ne vzeto z interneta",
-       "foreign-structured-upload-form-2-label-noderiv": "Vsebovati <strong>ne sme delo kogar koli drugega</strong> ali biti navdahnjeno z njihove strani",
-       "foreign-structured-upload-form-2-label-useful": "Mora biti <strong>izobraževalno in uporabno</strong> za učenje drugih",
-       "foreign-structured-upload-form-2-label-ccbysa": "Mora biti <strong>primerno za večno objavo</strong> na internetu pod pogoji dovoljenja [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Priznanje avtorstva-Deljenje pod enakimi pogoji 4.0]",
-       "foreign-structured-upload-form-2-label-alternative": "Če kaj od zgoraj navedenega ni res, lahko datoteko vseeno naložite z uporabo [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Čarovnika za nalaganje], dokler je na voljo pod prostim dovoljenjem.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Z nalaganjem datoteke potrjujete, da si lastite avtorske pravice datoteke, da se strinjate z nepreklicno izdajo datoteke v Wikimediino Zbirko pod pogoji dovoljenja Creative Commons Priznanje avtorstva-Deljenje pod enakimi pogoji 4.0 in da se strinjate s [https://wikimediafoundation.org/wiki/Terms_of_Use Pogoji uporabe].",
-       "foreign-structured-upload-form-3-label-question-website": "Ste sliko prenesli s spletne strani ali jo našli na iskalniku slik?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Ste sliko ustvarili (fotografirali, narisali itn.) sami?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Vsebuje (ali pa je bilo navdihnjeno) delo nekoga drugega, npr. logotip?",
-       "foreign-structured-upload-form-3-label-yes": "Da",
-       "foreign-structured-upload-form-3-label-no": "Ne",
-       "foreign-structured-upload-form-3-label-alternative": "Žal, v tem primeru orodje ne podpira nalaganja te datoteke. Vseeno jo lahko naložite z uporabo [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Čarovnika za nalaganje], dokler je na voljo pod prostim dovoljenjem.",
-       "foreign-structured-upload-form-4-label-good": "Z uporabo orodja lahko naložite izobraževalne grafike in fotografije, ki ste jih ustvarili ali posneli in ki ne vsebujejo dela v lasti nekoga drugega.",
-       "foreign-structured-upload-form-4-label-bad": "Slik, ki ste jih našli na spletnem iskalniku ali prenesli z drugih spletnih strani, ne morete naložiti.",
        "backend-fail-stream": "Ne morem pretakati datoteke $1.",
        "backend-fail-backup": "Ne morem varnostno kopirati datoteke $1.",
        "backend-fail-notexists": "Datoteka $1 ne obstaja.",
index 51bb686..28f56b2 100644 (file)
        "upload-dialog-button-done": "Готово",
        "upload-dialog-button-save": "Сачувај",
        "upload-dialog-button-upload": "Пошаљи",
-       "upload-form-label-select-file": "Изабери датотеку",
        "upload-form-label-infoform-title": "Детаљи",
        "upload-form-label-infoform-name": "Назив",
        "upload-form-label-infoform-description": "Опис",
        "foreign-structured-upload-form-label-own-work": "Ово је моје сопствено дело",
        "foreign-structured-upload-form-label-infoform-categories": "Категорије",
        "foreign-structured-upload-form-label-infoform-date": "Датум",
-       "foreign-structured-upload-form-2-label-ownwork": "Мора бити <strong>искључиво Ваше дело</strong>, а не скинуто са интернета",
-       "foreign-structured-upload-form-2-label-noderiv": "Не сме бити <strong>туђе дело</strong> или прерада истог",
-       "foreign-structured-upload-form-2-label-useful": "Мора бити <strong>образовна и корисна</strong> за друге",
-       "foreign-structured-upload-form-2-label-ccbysa": "Мора бити <strong>у реду да се објави заувек</strong> на интернету под лиценцом [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Ауторство-Делити под истим условима 4.0]",
-       "foreign-structured-upload-form-2-label-termsofuse": "Отпремањем ове датотеке потврђујете да сте носилац ауторских права исте и непозиво је предајте Викимедијиној остави под лиценцом Creative Commons Ауторство-Делити под истим условима 4.0 и прихватате [https://wikimediafoundation.org/wiki/Terms_of_Use услове коришћења].",
-       "foreign-structured-upload-form-3-label-question-website": "Да ли сте ову слику преузели са неког сајта или претрагом слика?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Да ли сте ви направили ову слику (сликали фотоапаратом, нацртали и сл.)?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Да ли садржи логотип или је инспирисана неким туђим делом?",
-       "foreign-structured-upload-form-3-label-yes": "Да",
-       "foreign-structured-upload-form-3-label-no": "Не",
        "backend-fail-stream": "Не могу да емитујем датотеку $1.",
        "backend-fail-backup": "Не могу да направим резерву датотеке $1.",
        "backend-fail-notexists": "Датотека $1 не постоји.",
        "svg-long-error": "Неисправна SVG датотека: $1",
        "show-big-image": "Пуна величина",
        "show-big-image-preview": "Величина овог приказа: $1.",
-       "show-big-image-preview-differ": "Величина овог $3 прегледа за ову $2 датотеку је $1.",
+       "show-big-image-preview-differ": "Величина $3 прегледа за ову $2 датотеку је $1.",
        "show-big-image-other": "{{PLURAL:$2|Друга резолуција|Друге резолуције}}: $1.",
        "show-big-image-size": "$1 × $2 пиксела",
        "file-info-gif-looped": "петља",
index 7bae3ac..065a446 100644 (file)
        "upload-dialog-button-done": "Gotovo",
        "upload-dialog-button-save": "Sačuvaj",
        "upload-dialog-button-upload": "Pošalji",
-       "upload-form-label-select-file": "Izaberi datoteku",
        "upload-form-label-infoform-title": "Detalji",
        "upload-form-label-infoform-name": "Ime",
        "upload-form-label-infoform-description": "Opis",
        "foreign-structured-upload-form-label-own-work": "Ovo je moje sopstveno delo",
        "foreign-structured-upload-form-label-infoform-categories": "Kategorije",
        "foreign-structured-upload-form-label-infoform-date": "Datum",
-       "foreign-structured-upload-form-2-label-ownwork": "Mora biti <strong>isključivo Vaše delo</strong>, a ne skinuto sa interneta",
-       "foreign-structured-upload-form-2-label-noderiv": "Ne sme biti <strong>tuđe delo</strong> ili prerada istog",
-       "foreign-structured-upload-form-2-label-useful": "Mora biti <strong>obrazovna i korisna</strong> za druge",
-       "foreign-structured-upload-form-2-label-ccbysa": "Mora biti <strong>u redu da se objavi zauvek</strong> na internetu pod licencom [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Autorstvo-Deliti pod istim uslovima 4.0]",
-       "foreign-structured-upload-form-2-label-termsofuse": "Otpremanjem ove datoteke potvrđujete da ste nosilac autorskih prava iste i nepozivo je predajte Vikimedijinoj ostavi pod licencom Creative Commons Autorstvo-Deliti pod istim uslovima 4.0 i prihvatate [https://wikimediafoundation.org/wiki/Terms_of_Use uslove korišćenja].",
-       "foreign-structured-upload-form-3-label-question-website": "Da li ste ovu sliku preuzeli sa nekog sajta ili pretragom slika?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Da li ste vi napravili ovu sliku (slikali fotoaparatom, nacrtali i sl.)?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Da li sadrži logotip ili je inspirisana nekim tuđim delom?",
-       "foreign-structured-upload-form-3-label-yes": "Da",
-       "foreign-structured-upload-form-3-label-no": "Ne",
        "backend-fail-stream": "Ne mogu da emitujem datoteku $1.",
        "backend-fail-backup": "Ne mogu da napravim rezervu datoteke $1.",
        "backend-fail-notexists": "Datoteka $1 ne postoji.",
        "svg-long-error": "Neispravna SVG datoteka: $1",
        "show-big-image": "Puna veličina",
        "show-big-image-preview": "Veličina ovog prikaza: $1.",
-       "show-big-image-preview-differ": "Veličina ovog $3 pregleda za ovu $2 datoteku je $1.",
+       "show-big-image-preview-differ": "Veličina $3 pregleda za ovu $2 datoteku je $1.",
        "show-big-image-other": "{{PLURAL:$2|Druga rezolucija|Druge rezolucije}}: $1.",
        "show-big-image-size": "$1 × $2 piksela",
        "file-info-gif-looped": "petlja",
index f50abb1..385b6cf 100644 (file)
        "showhideselectedversions": "Témbongkeun/sumputkeun révisi nu dipilih",
        "editundo": "bolaykeun",
        "diff-empty": "(taya bédana)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Hiji révisi antara|$1 révisi antara}} karya pamaké nu sarua henteu ditémbongkeun)",
        "diff-multi-manyusers": "({{PLURAL:$1|Hiji révisi antara|$1 révisi antara}} karya leuwih ti {{PLURAL:$2|pamaké|pamaké}} teu ditémbongkeun)",
        "searchresults": "Hasil maluruh",
        "searchresults-title": "Hasil nyusud \"$1\"",
        "right-blockemail": "Halangan pamaké keur ngirim Surélék",
        "right-hideuser": "Peungpeuk pamaké, tong ditingalikeun ka nulain",
        "right-ipblock-exempt": "Narabas peungpeuk IP, peungpeuk-otomatis, jeung peungpeuk rentang",
-       "right-proxyunbannable": "Abaikeun pengpeuk otomatis keur proxy",
        "right-unblockself": "buka peungpeuk sorangan",
        "right-protect": "Ngarobah hambalan protéksi jeung édit kaca anu dikonci",
        "right-editprotected": "Edit kaca anu dikonci salaku \"{{int:protect-level-sysop}}\"",
        "recentchanges-label-minor": "Ieu éditan minor",
        "recentchanges-label-bot": "Ieu parobahan dijieun ku bot",
        "recentchanges-label-unpatrolled": "Ieu éditan can karoris",
+       "recentchanges-label-plusminus": "Ukuran kaca robah sajumlah ieu bit",
        "recentchanges-legend-heading": "'''Pedaran:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (tempo ogé [[Special:NewPages|béréndélan kaca anyar]])",
        "rcnotefrom": "Di handap ieu parobahan saprak <b>$2</b> (nu ditémbongkeun nepi ka <b>$1</b>).",
        "upload-options": "Pilihan muat",
        "watchthisupload": "Awaskeun ieu kaca",
        "filewasdeleted": "Ngaran koropak ieu geus di hapus. Anjeun kudu ningali ka $1 sa acan muatkeun koropak deui",
-       "upload-success-subj": "Ngamuat geus hasil",
        "upload-proto-error": "Salah protokol",
        "upload-file-error": "Kasalahan internal",
        "upload-misc-error": "Kasalahan muat anu teu kanyahoan",
        "querypage-disabled": "Ieu kaca husus ditumpurkeun ku alesan kinerja.",
        "booksources": "Sumber pustaka",
        "booksources-search-legend": "Sungsi sumber buku",
+       "booksources-search": "Paluruh",
        "booksources-text": "Di handap ieu ngabéréndélkeun tumbu ka loka-loka nu ngical buku, boh nu anyar atawa loakan, nu sugan uninga kana buku anu nuju dipilari:",
        "booksources-invalid-isbn": "ISBN-na sigana henteu bener; pariksa deui bisi aya salah salin ti sumber aslina.",
        "specialloguserlabel": "Pamaké:",
        "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",
-       "watchlistall2": "sadaya",
        "watchlist-options": "Pilihan awaskeuneun",
        "watching": "Ngawaskeun...",
        "unwatching": "Eureun ngawaskeun...",
        "delete-warning-toobig": "Jujutan ieu kaca panjang pisan, leuwih ti{{PLURAL:$1|révisi|révisi}}. Dihapusna ieu kaca bisa ngaruksak jalanna pangkalan data {{SITENAME}}; sing ati-ati.",
        "rollback": "Balikkeun éditan",
        "rollbacklink": "balikkeun",
+       "rollbacklinkcount": "balikkeun $1 {{PLURAL:$1|éditan}}",
        "rollbackfailed": "Gagal malikkeun",
        "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}}]]).",
        "contributions": "Kontribusi {{GENDER:$1|pamaké}}",
        "contributions-title": "Sumbangan tulisan ti $1",
        "mycontris": "Kontribusi",
+       "anoncontribs": "Kontribusi",
        "contribsub2": "Pikeun {{GENDER:$3|$1}} ($2)",
        "contributions-userdoesnotexist": "Akun pamaké \"$1\" teu aya dina daptar.",
        "nocontribs": "Taya robahan nu kapanggih cocog jeung patokan ieu.",
        "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",
-       "tooltip-pt-userpage": "Kaca kontributor Anjeun",
+       "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 Anjeun",
+       "tooltip-pt-mytalk": "Kaca obrolan {{GENDER:|anjeun}}",
        "tooltip-pt-anontalk": "Sawala ngeunaan éditan ti alamat IP ieu",
-       "tooltip-pt-preferences": "Préferénsi anjeun",
+       "tooltip-pt-preferences": "Préferénsi {{GENDER:|anjeun}}",
        "tooltip-pt-watchlist": "Daptar kaca nu diawaskeun ku anjeun parobahanana.",
-       "tooltip-pt-mycontris": "Daptar tulisan Anjeun",
+       "tooltip-pt-mycontris": "Béréndélan kontribusi {{GENDER:|anjeun}}",
        "tooltip-pt-login": "Leuwih hadé asup log, sanajan teu wajib",
        "tooltip-pt-logout": "Kaluar log",
        "tooltip-pt-createaccount": "Najan henteu kudu, Anjeun leuwih hadé nyieun akun sarta asup log",
        "tooltip-t-recentchangeslinked": "Anu anyar robah dina kaca-kaca anu nutumbu ti dieu",
        "tooltip-feed-rss": "Asupan RSS pikeun kaca ieu",
        "tooltip-feed-atom": "Asupan atom pikeun kaca ieu",
-       "tooltip-t-contributions": "Témbongkeun béréndélan kontribusi ti ieu kontributor",
+       "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-upload": "Ngunggahkeun berkas",
        "tooltip-t-specialpages": "Daptar sadaya kaca husus",
        "nocredits": "Teu aya émbaran pangajén pikeun kaca ieu.",
        "spamprotectiontitle": "Saringan spam",
        "spamprotectiontext": "Kaca nu rék disimpen dipeungpeuk ku saringan spam.\nSigana mah ieu téh alatan tumbu ka loka luar.",
+       "simpleantispam-label": "Pamariksaan anti-spam.\nAnu ieu <strong>ulah</strong> dieusian!",
        "pageinfo-title": "Émbaran pikeun \"$1\"",
        "pageinfo-header-basic": "Émbaran dasar",
        "pageinfo-header-edits": "Jujutan édit",
        "logentry-delete-delete": "$1 {{GENDER:$2|ngahapus}} kaca $3",
        "revdelete-restricted": "akses geus dibatesan ukur keur kuncén",
        "revdelete-unrestricted": "Watesan akses kuncén dihapuskeun",
+       "logentry-move-move": "$1 {{GENDER:$2|mindahkeun}} kaca $3 ka $4",
        "logentry-newusers-create": "Akun pamaké $1 jeus {{GENDER:$2|dijieun}}",
+       "logentry-upload-upload": "$1 {{GENDER:$2|ngamuat}} $3",
        "rightsnone": "(euweuh)",
        "revdelete-summary": "ringkesan ngédit",
        "feedback-cancel": "Bolay",
index b4fda80..97dd59d 100644 (file)
        "previewnote": "'''Kom ihåg att detta bara är en förhandsvisning.'''\nDina ändringar har ännu inte sparats!",
        "continue-editing": "Fortsätt redigera",
        "previewconflict": "Den här förhandsvisningen är resultatet av den\nredigerbara texten ovanför,\nså som det kommer att se ut om du väljer att spara.",
-       "session_fail_preview": "'''Vi kunde inte behandla din redigering eftersom sessionsdata gått förlorad.\nVar god försök igen.\nOm det fortfarande inte fungerar, prova att [[Special:UserLogout|logga ut]] och logga in igen.'''",
-       "session_fail_preview_html": "'''Vi kunde inte behandla din redigering eftersom sessionsdata gått förlorad.'''\n\n''Eftersom {{SITENAME}} har aktiverat rå HTML, så döljs förhandsvisningen som en förebyggande säkerhetsåtgärd mot JavaScript-attacker.''\n\n'''Om detta är ett försök att göra en rättmätig redigering, så försök igen.\nOm det fortfarande inte fungerar, pröva att [[Special:UserLogout|logga ut]] och logga in igen.'''",
+       "session_fail_preview": "Vi kunde inte behandla din redigering eftersom sessionsdata gått förlorad.\nDu kanske har loggats ut. Var god se till att du fortfarande är inloggad och försök igen.\nOm det fortfarande inte fungerar, prova att [[Special:UserLogout|logga ut]] och logga in igen, samt kontrollera att din webbläsare tillåter kakor från denna webbplats.",
+       "session_fail_preview_html": "Vi kunde inte behandla din redigering eftersom sessionsdata gått förlorad.\n\n<em>Eftersom {{SITENAME}} har aktiverat rå HTML, så döljs förhandsvisningen som en förebyggande säkerhetsåtgärd mot JavaScript-attacker.</em>\n\n<strong>Om detta är ett försök att göra en rättmätig redigering, så försök igen.</strong>\nOm det fortfarande inte fungerar, pröva att [[Special:UserLogout|logga ut]] och logga in igen, samt kontrollera att din webbläsare tillåter kakor från denna webbplats.",
        "token_suffix_mismatch": "'''Din redigering har stoppats eftersom din klient har ändrat tecknen\ni redigerings-nyckeln. Redigeringen stoppades för att förhindra att sidtexten skadas.\nDetta händer ibland om du använder buggiga webbaserade anonyma proxytjänster.'''",
        "edit_form_incomplete": "'''Vissa delar av redigeringen kunde inte nå servern, dubbelkolla att dina ändringar är intakta och försök igen.'''",
        "editing": "Redigerar $1",
        "mergehistory-empty": "Inga versioner av sidorna kan sammanfogas.",
        "mergehistory-done": "$3 {{PLURAL:$3|version|versioner}} av $1 {{PLURAL:$3|har}} infogats i [[:$2]].",
        "mergehistory-fail": "Historikerna kunde inte sammanfogas, kontrollera de sidor och den sidversion som du valt.",
+       "mergehistory-fail-bad-timestamp": "Tidsstämpeln är ogiltig.",
+       "mergehistory-fail-invalid-source": "Källsidan är ogiltig.",
+       "mergehistory-fail-invalid-dest": "Målsidan är ogiltig.",
+       "mergehistory-fail-no-change": "Historiksammanfogningen kunde inte sammanfoga några versioner. Kontrollera sidan och tidsparametrarna.",
+       "mergehistory-fail-permission": "Otillräcklig behörighet för att sammanfoga historiker.",
+       "mergehistory-fail-self-merge": "Käll- och målsidorna är samma.",
+       "mergehistory-fail-timestamps-overlap": "Källversioner överlappar eller kommer efter målsversionerna.",
        "mergehistory-fail-toobig": "Kunde inte utföra historiksammanslagningen då fler än maxgränsen på $1 {{PLURAL:$1|version|versioner}} skulle ha flyttats.",
        "mergehistory-no-source": "Källsidan $1 finns inte.",
        "mergehistory-no-destination": "Målsidan $1 finns inte.",
        "upload-dialog-button-done": "Klar",
        "upload-dialog-button-save": "Spara",
        "upload-dialog-button-upload": "Ladda upp",
-       "upload-form-label-select-file": "Välj fil",
        "upload-form-label-infoform-title": "Detaljer",
        "upload-form-label-infoform-name": "Namn",
        "upload-form-label-infoform-name-tooltip": "En unik beskrivande titel för filen, som kommer att fungera som ett filnamn. Du kan använda klarspråk med mellanslag. Ta inte med filändelsen.",
        "foreign-structured-upload-form-label-own-work-message-shared": "Jag intygar att jag äger upphovsrätten för denna fil och samtycker till att oåterkalleligen släppa filen på Wikimedia Commons under licensen \n[https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0] och jag accepterar [https://wikimediafoundation.org/wiki/Terms_of_Use villkoren för användning].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Om du inte äger upphovsrätten för denna fil eller om du önskar att släppa den under en annan licens bör du överväga att använda [https://commons.wikimedia.org/wiki/Special:UploadWizard uppladdningsguiden på Commons].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Du kanske skulle vilja prova att använda [[Special:Upload|uppladdningssidan på {{SITENAME}}]] om webbplatsens policys tillåter att denna fil laddas upp.",
-       "foreign-structured-upload-form-2-label-intro": "Tack för att du donera en bild för att användas på {{SITENAME}}. Du bör endast fortsätta om den uppfyller flera villkor:",
-       "foreign-structured-upload-form-2-label-ownwork": "Den måste vara helt och hållet <strong>din egen skapelse</strong>, inte bara tagen från Internet",
-       "foreign-structured-upload-form-2-label-noderiv": "Den får inte innehålla <strong>något verk av någon annan</strong>, eller inspirerats av dem",
-       "foreign-structured-upload-form-2-label-useful": "Den bör vara <strong>pedagogisk och användbar</strong> för att undervisa andra",
-       "foreign-structured-upload-form-2-label-ccbysa": "Den måste vara <strong>OK att publicera för evigt</strong> på Internet under [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Erkännande-DelaLika 4.0]-licensen",
-       "foreign-structured-upload-form-2-label-alternative": "Om inte alla av ovanstående är stämmer in, kan du fortfarande ha möjlighet att ladda upp denna fil med hjälp av [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Upload Wizard], så länge den är tillgänglig under en fri licens.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Genom att ladda upp filen bekräftar du att du äger upphovsrätten till denna fil, samt att du samtycker till att oåterkalleligt släppa denna fil till Wikimedia Commons under Creative Commons Erkännande-DelaLika 4.0-licensen, samt att du samtycker till Wikimedias  [https://wikimediafoundation.org/wiki/Terms_of_Use användarvilkor].",
-       "foreign-structured-upload-form-3-label-question-website": "Laddade du ner den här bilden från en webbplats eller hittade du den genom en bildsökning?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Har du skapat denna bild (tagit bilden, skissat, ritat, etc.) själv?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Innehåller den, eller är den inspirerade av arbete som ägs av någon annan, som t.ex. en logotyp?",
-       "foreign-structured-upload-form-3-label-yes": "Ja",
-       "foreign-structured-upload-form-3-label-no": "Nej",
-       "foreign-structured-upload-form-3-label-alternative": "Tyvärr har detta verktyg i detta fall inte stöd för att ladda upp den här filen. Du kan fortfarande ladda upp den med hjälp av [https://commons.wikimedia.org/wiki/Special:UploadWizard Commons uppladdningsguide] så länge den är tillgänglig under en fri licens.",
-       "foreign-structured-upload-form-4-label-good": "Med detta verktyg kan du ladda upp pedagogiska bilder som du har skapat och fotografier som du har tagit, som inte innehåller verk som någon annan äger.",
-       "foreign-structured-upload-form-4-label-bad": "Du kan inte ladda upp bilder som hittats på en sökmotor eller har laddats ned från andra webbplatser.",
        "backend-fail-stream": "Kunde inte strömma filen $1.",
        "backend-fail-backup": "Kunde inte säkerhetskopiera filen ''$1''.",
        "backend-fail-notexists": "Filen $1 finns inte.",
        "import-nonewrevisions": "Inga sidversioner importerades (alla var antingen redan där eller hoppades över p.g.a. fel).",
        "xml-error-string": "$1 på rad $2, kolumn $3 (byte $4): $5",
        "import-upload": "Ladda upp XML-data",
-       "import-token-mismatch": "Sessionsdata har förlorats. Var god pröva igen.",
+       "import-token-mismatch": "Sessionsdata har förlorats.\n\nDu kanske har loggats ut. <strong>Var god se till att du fortfarande är inloggad och försök igen.</strong>\nOm det fortfarande inte fungerar, prova att [[Special:UserLogout|logga ut]] och logga in igen, samt kontrollera att din webbläsare tillåter kakor från denna webbplats.",
        "import-invalid-interwiki": "Kan inte importera från den angivna wikin.",
        "import-error-edit": "Sidan \"$1\" blev inte importerad eftersom du inte har tillåtelse att redigera den.",
        "import-error-create": "Sidan \"$1\" blev inte importerad eftersom du inte har tillåtelse att skapa den.",
        "expand_templates_generate_xml": "Visa parseträd som XML",
        "expand_templates_generate_rawhtml": "Visa rå HTML",
        "expand_templates_preview": "Förhandsvisning",
-       "expand_templates_preview_fail_html": "<em>Eftersom {{SITENAME}} har rå HTML aktiverat och det uppstod en förlust av sessionsdata har förhandsgranskningen dolts som en försiktighetsåtgärd för att skydda mot JavaScript-attacker.</em>\n\n<strong>Om detta är ett äkta försök att förhandsgranska sidan, vänligen försök igen.</strong>\nOm det fortfarande inte fungerar, försök att [[Special:UserLogout|logga ut]] och sedan logga in igen.",
+       "expand_templates_preview_fail_html": "<em>Eftersom {{SITENAME}} har rå HTML aktiverat och det uppstod en förlust av sessionsdata har förhandsgranskningen dolts som en försiktighetsåtgärd för att skydda mot JavaScript-attacker.</em>\n\n<strong>Om detta är ett äkta försök att förhandsgranska sidan, vänligen försök igen.</strong>\nOm det fortfarande inte fungerar, försök att [[Special:UserLogout|logga ut]] och sedan logga in igen, samt kontrollera att din webbläsare tillåter kakor från denna webbplats.",
        "expand_templates_preview_fail_html_anon": "<em>Eftersom {{SITENAME}} har rå HTML aktiverat och du inte är inloggad har förhandsgranskningen dolts som en försiktighetsåtgärd för att skydda mot JavaScript-attacker.</em>\n\n<strong>Om detta är ett äkta försök att förhandsgranska sidan, vänligen [[Special:UserLogin|logga in]] och försök igen.</strong>",
        "expand_templates_input_missing": "Du måste åtminstone ange lite inmatningstext.",
        "pagelanguage": "Ändra sidans språk",
index 23253ef..f183f40 100644 (file)
        "pool-servererror": "ಪೂಲ್ ಕೌಂಟರ್ ಸೇವೆ ತಿಕೊಂದಿದ್ದಿ ($1).",
        "poolcounter-usage-error": "ಬಳಕೆದ ದೋಸೊ: $1",
        "aboutsite": "{{SITENAME}} ದ ಬಗೆಟ್",
-       "aboutpage": "Project:ಬಗೆಟ್",
+       "aboutpage": "Project:ಬಗೆಟ್ಟ್",
        "copyright": "ವಿಸೇಸವಾದ್ ಪಂಡ್‍ಜಂಡ ಉಂದು \"$1\" ಈ ಕಾಪಿರೈಟ್‌ಡ್ ಲಭ್ಯವುಂಡು.",
        "copyrightpage": "{{ns:project}}:ಕೃತಿ ಸ್ವಾಮ್ಯತೆಲು",
        "currentevents": "ಇತ್ತೆದ ಸಂಗತಿಲು",
        "watch": "ತೂಲೆ",
        "watchthispage": "ಈ ಪುಟೊನು ತೂಲೆ",
        "unwatch": "ವೀಕ್ಷಣಾಪಟ್ಟಿರ್ದ್ ದೆಪ್ಪು",
-       "watchlistall2": "ಪೂರ",
        "watchlist-options": "ವೀಕ್ಷಣಾಪಟ್ಟಿ ಆಯ್ಕೆಲು",
        "watching": "ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾವೊಂದುಂಡು...",
        "unwatching": "ವೀಕ್ಷಣಾಪಟ್ಟಿರ್ದ್ ದೆತ್ತೊಂದುಂಡು...",
        "contributions": "{{$1ಸದಸ್ಯೆರ್ನ}}ಕಾಣಿಕೆಲು",
        "contributions-title": "$1 ಗ್ ಸದಸ್ಯೆರ್ನ ಕಾಣಿಕೆ",
        "mycontris": "ಎನ್ನ ಕಾನಿಕೆಲು",
+       "anoncontribs": "ಕಾನಿಕೆಲು",
        "contribsub2": "$1 ($2) ಗ್",
        "uctop": " (ಮಿತ್ತ್)",
        "month": "ಈ ತಿಂಗೊಲುರ್ದ್ (ಬೊಕ್ಕ ದುಂಬುದ):",
        "allmessagesname": "ಪುದರ್",
        "thumbnail-more": "ಮಲ್ಲೆ ಮಲ್ಪುಲೆ",
        "thumbnail_error": "ಮುನ್ನೋಟ ಚಿತ್ರೊನು ಸೃಷ್ಟಿ ಮನ್ಪುನಗ ದೋಷ: $1",
-       "tooltip-pt-userpage": "ಎನ್ನ ಸದಸ್ಯ ಪುಟೊ",
-       "tooltip-pt-mytalk": "ಎನ್ನ ಚರ್ಚೆ ಪುಟೊ",
-       "tooltip-pt-preferences": "ಎನ್ನ ಇಸ್ಟೊಲು",
+       "tooltip-pt-userpage": "{{GENDER:|ಎನ್ನ ಸದಸ್ಯ}} ಪುಟೊ",
+       "tooltip-pt-mytalk": "{{GENDER:|ಎನ್ನ}} ಚರ್ಚೆ ಪುಟೊ",
+       "tooltip-pt-preferences": "{{GENDER:|ಎನ್ನ}} ಇಸ್ಟೊಲು",
        "tooltip-pt-watchlist": "ಈರ್ ಬದಲಾವಣೆಗಾದ್ ನಿಗಾ ದೀತಿನಂಚಿನ ಪುಟೊಲೆನ ಪಟ್ಟಿ",
-       "tooltip-pt-mycontris": "ಎನ್ನ ಕಾನಿಕೆಲೆ ಪಟ್ಟಿ",
+       "tooltip-pt-mycontris": "{{GENDER:|ಎನ್ನ}} ಕಾನಿಕೆಲೆ ಪಟ್ಟಿ",
        "tooltip-pt-login": "ಈರ್ ಲಾಗಿನ್ ಆವೊಡುಂದು ಕೇನೊಂದುಲ್ಲೊ, ಆಂಡ ಉಂದು ದಾಲ ಕಡ್ಡಾಯ ಅತ್ತ್.",
        "tooltip-pt-logout": "ಲಾಗ್ ಔಟ್",
        "tooltip-pt-createaccount": "ನಿಕುಲು ಪೊಸ ಖಾತೆ ಸುರುಮಾಂತ್‍ದ್ ಲಾಗಿನ್ ಆಪುನೈನ್ ಪ್ರೋತ್ಸಾಹಿಸವೊ, ಆಂಡಲಾ ಉಂದು ಕಡ್ಡಾಯ ಅತ್ತ್.",
        "tooltip-t-recentchangeslinked": "ಈ ಪುಟೊಡ್ದ್ ಸಂಪರ್ಕೊ ಉಪ್ಪುನಂಚಿನ ಪುಟೊಡ್ ಇಂಚಿಪೊದ ಬದಲಾವಣೆಲು",
        "tooltip-feed-rss": "ಈ ಪುಟೊಗು ಆರ್.ಎಸ್.ಎಸ್ ಫೀಡ್",
        "tooltip-feed-atom": "ಈ ಪುಟೊಗು ಆಟಮ್ ಫೀಡ್ ಮಲ್ಪುಲೆ",
-       "tooltip-t-contributions": "ಈ ಸದಸ್ಯೆರ್ನ ಕಾಣಿಕೆದ ಪಟ್ಟಿನ್ ತೋಜಾವು",
+       "tooltip-t-contributions": "{{GENDER:$1|ಈ ಬಳಕೆದಾರೆರ್}}ಈ ಸದಸ್ಯೆರ್ನ ಕಾಣಿಕೆದ ಪಟ್ಟಿನ್ ತೋಜಾವು",
        "tooltip-t-emailuser": "ಈ ಸದಸ್ಯೆರೆಗ್ ಇ-ಮೇಲ್ ಕಡಪುಡ್ಲೆ",
        "tooltip-t-upload": "ಫೈಲನ್ ಅಪ್ಲೋಡ್ ಮಲ್ಪುಲೆ",
        "tooltip-t-specialpages": "ಪೂರ ಪುಟೊಲೆನ ವಿಸೇಸೊ ಪಟ್ಟಿ",
index 6732d32..8ae7345 100644 (file)
        "grant-group-email": "E-posta gönder",
        "grant-createeditmovepage": "Sayfaları oluşturma, düzenleme ve taşıma",
        "grant-editmycssjs": "Kullanıcı CSS/JavaScript'ini düzenle",
+       "grant-editmyoptions": "Kullanıcı tercihlerini Düzenle",
        "grant-editmywatchlist": "İzleme listeni düzenle",
        "grant-editprotected": "Korumalı sayfaları Düzenle",
        "grant-patrol": "Sayfadaki değişiklikleri incele",
        "rcshowhidemine": "Benim değişikliklerimi $1",
        "rcshowhidemine-show": "göster",
        "rcshowhidemine-hide": "gizle",
+       "rcshowhidecategorization": "$1 Sayfa kategorizasyonu",
        "rcshowhidecategorization-show": "Göster",
        "rcshowhidecategorization-hide": "Gizle",
        "rclinks": "Son $2 günde yapılan son $1 değişikliği göster;<br /> $3",
        "upload-dialog-button-done": "Yapıldı",
        "upload-dialog-button-save": "Kaydet",
        "upload-dialog-button-upload": "Yükle",
-       "upload-form-label-select-file": "Dosya seç",
        "upload-form-label-infoform-title": "Ayrıntılar",
        "upload-form-label-infoform-name": "Ad",
        "upload-form-label-infoform-description": "Açıklama",
        "foreign-structured-upload-form-label-own-work": "Bu benim kendi çalışmam",
        "foreign-structured-upload-form-label-infoform-categories": "Kategoriler",
        "foreign-structured-upload-form-label-infoform-date": "Tarih",
-       "foreign-structured-upload-form-3-label-yes": "Evet",
-       "foreign-structured-upload-form-3-label-no": "Hayır",
        "backend-fail-stream": "$1 dosyası okunamadı.",
        "backend-fail-backup": "\"$1\" dosyası yedeklenemedi.",
        "backend-fail-notexists": "$1 dosyası mevcut değil.",
        "cachedspecial-viewing-cached-ts": "Bu sayfanın önbelleğe alınan bir sürümünü görüntülüyorsunuz, tam olarak güncel olmayabilir.",
        "cachedspecial-refresh-now": "En son görünüm.",
        "categories": "Kategoriler",
+       "categories-submit": "Göster",
        "categoriespagetext": "Aşağıdaki {{PLURAL:$1|kategori|kategoriler}} sayfa veya ortam içerir.\n[[Special:UnusedCategories|Kullanılmayan kategoriler]] burada gösterilmemektedir.\nAyrıca [[Special:WantedCategories|İstenen kategoriler]]'e bakınız.",
        "categoriesfrom": "Şununla başlayan kategorileri görüntüle:",
        "special-categories-sort-count": "sayılarına göre sırala",
index dadedcc..9001177 100644 (file)
        "upload-dialog-button-done": "Әзер",
        "upload-dialog-button-save": "Саклау",
        "upload-dialog-button-upload": "Йөкләү",
-       "upload-form-label-select-file": "Файлны сайлагыз",
        "upload-form-label-infoform-title": "Тулырак",
        "upload-form-label-infoform-name": "Исем",
        "upload-form-label-infoform-description": "Тасвир",
        "foreign-structured-upload-form-label-own-work": "Бу минем үз эшем",
        "foreign-structured-upload-form-label-infoform-categories": "Төркемнәр",
        "foreign-structured-upload-form-label-infoform-date": "Дата",
-       "foreign-structured-upload-form-3-label-yes": "Әйе",
-       "foreign-structured-upload-form-3-label-no": "Юк",
        "uploadstash": "Яшерен йөкләү",
        "uploadstash-summary": "Әлеге бит йөкләнгән (яисә йукләү барышында булган), әмма викида әлегә күрсәтелмәгән файлларны карау мөмкинлеген бирә. Бу файлларны йөкләгән кулланучыдан башка беркемдә күрә алмый.",
        "uploadstash-clear": "Яшерен файлларны бетерү",
index 73e5754..7d6e783 100644 (file)
        "tooltip-p-logo": "Кол арынче кирер",
        "tooltip-n-mainpage": "Кол арынче шилчиир",
        "tooltip-n-mainpage-description": "Кол арынче кирер",
-       "tooltip-n-portal": "Төлевилел дугайында, маңаа  чүнү кылып болурул, ол ышкаш кайда чүү барыл",
+       "tooltip-n-portal": "Төлевилел дугайында, маңаа чүнү кылып болурул, ол ышкаш кайда чүү барыл",
        "tooltip-n-currentevents": "Амгы болуушкуннар дугайында медээ",
        "tooltip-n-recentchanges": "Викиниң сөөлгү өскерлиишкиннер даңзызы",
        "tooltip-n-randompage": "Дужа-келби таварышкан арынны көөр",
index 110c281..fd19301 100644 (file)
        "botpasswords-deleted-body": "Пароль бота «$1» було видалено",
        "botpasswords-newpassword": "Новий пароль для входу під <strong>$1</strong> — <strong>$2</strong>. <em>Запишіть його для подальшого використання.</em>",
        "botpasswords-no-provider": "BotPasswordsSessionProvider не доступний.",
+       "botpasswords-restriction-failed": "Вхід не було здійснено через обмеження для паролю бота.",
+       "botpasswords-invalid-name": "Вказане ім'я користувача не містить роздільник для пароля бота («$1»).",
+       "botpasswords-not-exist": "У користувача «$1» нема пароля для бота «$2».",
        "resetpass_forbidden": "Пароль не можна змінити",
        "resetpass-no-info": "Щоб звертатися безпосередньо до цієї сторінки, вам слід увійти до системи.",
        "resetpass-submit-loggedin": "Змінити пароль",
        "previewnote": "'''Це лише попередній перегляд.'''\nВаші зміни ще не збережено!",
        "continue-editing": "Продовжити редагування",
        "previewconflict": "Цей попередній перегляд відображає текст з верхнього вікна редагування так, як він буде виглядати, якщо ви вирішите зберегти його.",
-       "session_fail_preview": "'''Система не може зберегти ваші редагування, оскільки втрачені дані сеансу. Будь ласка, повторіть вашу спробу.\nЯкщо помилка буде повторюватись, спробуйте [[Special:UserLogout|вийти з системи]] і увійти знову.'''",
-       "session_fail_preview_html": "<strong>Вибачте! Неможливо зберегти ваші зміни через втрату даних HTML-сесії.</strong>\n\n''Оскільки {{SITENAME}} дозволяє використовувати чистий HTML, попередній перегляд відключено, щоб попередити JavaScript-атаки.''\n\n<strong>Якщо це легітимна спроба редагування, будь ласка, спробуйте ще раз. Якщо не вийде знову, — спробуйте [[Special:UserLogout|завершити сеанс роботи]] й ще раз ввійти до системи.</strong>",
+       "session_fail_preview": "Вибачте! Ваше редагування не вдалося зберегти, оскільки втрачені дані сеансу. \n\nВи могли вийти з системи. <strong>Будь ласка, переконайтеся, що досі залогінені, і спробуйте ще раз</strong>.\nЯкщо це не спрацює, спробуйте [[Special:UserLogout|вийти з системи]] і увійти знову, та перевірте, чи Ваш браузер дозволяє куки з цього сайту.",
+       "session_fail_preview_html": "Вибачте! Неможливо зберегти Ваші зміни через втрату даних HTML-сесії.\n\n<em>Оскільки {{SITENAME}} дозволяє використовувати чистий HTML, попередній перегляд відключено, щоб попередити JavaScript-атаки.</em>\n\n<strong>Якщо це легітимна спроба редагування, будь ласка, спробуйте ще раз.</strong>\nЯкщо не вийде знову, спробуйте [[Special:UserLogout|завершити сеанс роботи]] і ще раз ввійти до системи, та перевірте, чи Ваш браузер дозволяє куки з цього сайту.",
        "token_suffix_mismatch": "'''Ваше редагування було відхилене, оскільки ваша програма неправильно обробляє знаки пунктуації у вікні редагування. Редагування було скасоване для запобігання спотворенню тексту статті.\nПодібні проблеми можуть виникати при використанні анонімізуючих веб-проксі, що містять помилки.'''",
        "edit_form_incomplete": "<strong>Частина даних із форми редагування не досягла сервера. Уважно перевірте, чи не пошкоджені Ваші редагування і спробуйте ще раз.</strong>",
        "editing": "Редагування $1",
        "mergehistory-empty": "Не знайдено версій для об'єднання.",
        "mergehistory-done": "$3 {{PLURAL:$3|редагування|редагування|редагувань}} з $1 успішно {{PLURAL:$3|перенесене|перенесені}} до [[:$2]].",
        "mergehistory-fail": "Не вдалося здійснити об'єднання історій сторінок, будь ласка, перевірте параметри сторінки й часу.",
+       "mergehistory-fail-bad-timestamp": "Недійсна мітка часу.",
+       "mergehistory-fail-invalid-source": "Вихідна сторінка недійсна.",
+       "mergehistory-fail-invalid-dest": "Сторінка призначення недійсна.",
+       "mergehistory-fail-no-change": "Під час об'єднання історій не відбулося об'єднання жодних версій. Будь ласка, перевірте сторінку і параметри часу.",
+       "mergehistory-fail-permission": "Недостатньо прав для об'єднання історії.",
+       "mergehistory-fail-self-merge": "Початкова і цільова сторінки однакові.",
+       "mergehistory-fail-timestamps-overlap": "Вихідні версії перекривають або йдуть після версій призначення.",
        "mergehistory-fail-toobig": "Не вдалося виконати злиття історії оскільки буде перейменовано більше, ніж ліміт у $1 {{PLURAL:$1|версію|версії|версій}}.",
        "mergehistory-no-source": "Вихідна сторінка «$1» не існує.",
        "mergehistory-no-destination": "Цільова сторінка «$1» не існує.",
        "userrights": "Керування правами користувачів",
        "userrights-lookup-user": "Керування групами користувача",
        "userrights-user-editname": "Введіть ім'я користувача:",
-       "editusergroup": "Редагувати групи користувачів",
+       "editusergroup": "Редагувати групи {{GENDER:$1|користувачів}}",
        "editinguser": "Зміна прав {{GENDER:$1|користувача}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Змінити групи користувачів",
-       "saveusergroups": "Зберегти групи користувача",
+       "saveusergroups": "Зберегти групи {{GENDER:$1|користувачів}}",
        "userrights-groupsmember": "Член груп:",
        "userrights-groupsmember-auto": "Неявний член:",
        "userrights-groups-help": "Ви можете змінити групи, до яких належить цей користувач:\n* Якщо біля назви групи стоїть позначка, то користувач належить до цієї групи.\n* Якщо позначка не стоїть — користувач не належить до відповідної групи.\n* Зірочка означає, що ви не можете вилучити користувача з групи, якщо додасте його до неї, і навпаки.",
        "right-createpage": "створення сторінок (але не обговорень)",
        "right-createtalk": "створення обговорень сторінок",
        "right-createaccount": "створення нових облікових записів",
+       "right-autocreateaccount": "Автоматичний вхід в систему із зовнішнього облікового запису користувача",
        "right-minoredit": "позначення редагувань як незначні",
        "right-move": "перейменування сторінок",
        "right-move-subpages": "перейменування сторінок і їх підсторінок",
        "right-managechangetags": "створення та вилучення [[Special:Tags|міток]] з бази даних",
        "right-applychangetags": "додавання [[Special:Tags|міток]] разом зі змінами",
        "right-changetags": "додавання або вилучення будь-яких [[Special:Tags|міток]] для певних версій сторінок або записів журналів",
-       "grant-generic": "Ð\9fÑ\83Ñ\87ок Ð¿Ñ\80ав \"$1\"",
-       "grant-group-page-interaction": "Взаємодіяти з сторінками",
+       "grant-generic": "Ð\9dабÑ\96Ñ\80 Ð¿Ñ\80ав Â«$1»",
+       "grant-group-page-interaction": "Взаємодіяти зі сторінками",
        "grant-group-file-interaction": "Взаємодіяти з медіа",
-       "grant-group-watchlist-interaction": "Ð\92заÑ\94модÑ\96Ñ\8fÑ\82и Ð· Ð²ашим списком спостереження",
+       "grant-group-watchlist-interaction": "Ð\92заÑ\94модÑ\96Ñ\8fÑ\82и Ð· Ð\92ашим списком спостереження",
        "grant-group-email": "Надіслати листа",
-       "grant-group-high-volume": "Виконати великий обсяг діяльності",
+       "grant-group-high-volume": "Виконувати великий обсяг діяльності",
        "grant-group-customization": "Налаштування і переваги",
-       "grant-group-administration": "Виконати адміністративні дії",
+       "grant-group-administration": "Виконувати адміністративні дії",
        "grant-group-other": "Різна діяльність",
-       "grant-blockusers": "Блокування і розблокування користувачів",
-       "grant-createaccount": "Створити облікові записи",
+       "grant-blockusers": "Блокувати і розблокувати користувачів",
+       "grant-createaccount": "Створювати облікові записи",
        "grant-createeditmovepage": "Створювати, редагувати та перейменовувати сторінки",
-       "grant-delete": "Ð\92идаленнÑ\8f Ñ\81Ñ\82оÑ\80Ñ\96нок, Ð²ÐµÑ\80Ñ\81Ñ\96й Ñ\96 Ð·Ð°Ð¿Ð¸Ñ\81Ñ\96в Ð¶Ñ\83Ñ\80налÑ\83",
-       "grant-editinterface": "Редагування простору назв MediaWiki та CSS/JavaScript користувача",
-       "grant-editmycssjs": "Редагування Вашого користувацького CSS/JavaScript",
-       "grant-editmyoptions": "Редагування Ваших налаштувань користувача",
-       "grant-editmywatchlist": "Редагувати список спостереження",
+       "grant-delete": "Ð\92илÑ\83Ñ\87аÑ\82и Ñ\81Ñ\82оÑ\80Ñ\96нки, Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97 Ñ\96 Ð·Ð°Ð¿Ð¸Ñ\81и Ð¶Ñ\83Ñ\80налÑ\96в",
+       "grant-editinterface": "Редагувати простір назв MediaWiki та CSS/JavaScript користувача",
+       "grant-editmycssjs": "Редагувати Ваш користувацький CSS/JavaScript",
+       "grant-editmyoptions": "Редагувати Ваші налаштування користувача",
+       "grant-editmywatchlist": "Редагувати Ваш список спостереження",
        "grant-editpage": "Редагувати наявні сторінки",
        "grant-editprotected": "Редагувати захищені сторінки",
-       "grant-highvolume": "Редагування великих обсягів",
-       "grant-oversight": "Приховати користувачів і подавити версії",
+       "grant-highvolume": "Редагування у великих обсягах",
+       "grant-oversight": "Приховувати користувачів і версії",
        "grant-patrol": "Патрулювати зміни на сторінках",
-       "grant-protect": "Захистити і зняти захист сторінок",
-       "grant-rollback": "Відкат змін на сторінках",
-       "grant-sendemail": "Відправляти пошту іншим користувачам",
-       "grant-uploadeditmovefile": "Завантажити, замінити та перемістити файли",
-       "grant-uploadfile": "Завантажити нові файли",
+       "grant-protect": "Захищати і знімати захист сторінок",
+       "grant-rollback": "Відкочувати зміни на сторінках",
+       "grant-sendemail": "Надсилати пошту іншим користувачам",
+       "grant-uploadeditmovefile": "Завантажувати, замінювати та перейменовувати файли",
+       "grant-uploadfile": "Завантажувати нові файли",
+       "grant-basic": "Основні права",
        "grant-viewdeleted": "Перегляд видалених файлів і сторінок",
        "grant-viewmywatchlist": "Перегляд списку спостереження",
        "newuserlogpage": "Журнал нових користувачів",
        "action-createpage": "створення сторінок",
        "action-createtalk": "створення сторінок обговорень",
        "action-createaccount": "створення цього облікового запису",
+       "action-autocreateaccount": "автоматичне створення цього зовнішнього облікового запису користувача",
        "action-history": "переглядати історію цієї сторінки",
        "action-minoredit": "позначення цього редагування незначним",
        "action-move": "перейменування цієї сторінки",
        "uploaded-script-svg": " \t\t\nЗнайдений небезпечний елемент з підтримкою сценаріїв «$1» в завантаженому файлі SVG.",
        "uploaded-hostile-svg": " \t\nЗнайдений небезпечний CSS-код в елементі стилю завантаженого файлу SVG.",
        "uploaded-event-handler-on-svg": " \t\nУстановка атрибутів обробника подій <code>$1=\"$2\"</code> не дозволено для SVG-файлів.",
-       "uploaded-href-unsafe-target-svg": "У завантаженому SVG-файлі знайдено href до цілі <code>&lt;$1 $2=\"$3\"&gt;</code>, що не є безпечною.",
+       "uploaded-href-attribute-svg": "href-атрибути в SVG-файлах дозволені лише для посилання на цілі http:// або https://, знайдено <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "У завантаженому SVG-файлі знайдено href на небезпечні дані: ціль URI <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-animate-svg": "У завантаженому SVG-файлі знайдено теґ «animate», який може змінювати href, використовуючи атрибут «from» <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-event-handler-svg": "Встановлення  атрибутів обробника подій заблоковане, у завантаженому файлі SVG знайдено <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-href-svg": "Використання теґа «set» для додавання атрибуту «href» у батьківський елемент заблоковано.",
        "upload-too-many-redirects": "URL містить надто багато перенаправлень",
        "upload-http-error": "Відбулася помилка HTTP: $1",
        "upload-copy-upload-invalid-domain": "З цього домену завантаження неможливе.",
+       "upload-foreign-cant-upload": "Ця вікі не налаштована на завантаження файлів у запитаний сторонній файловий репозиторій.",
        "upload-dialog-title": "Завантажити файл",
        "upload-dialog-button-cancel": "Скасувати",
        "upload-dialog-button-done": "Готово",
        "upload-dialog-button-save": "Зберегти",
        "upload-dialog-button-upload": "Завантажити",
-       "upload-form-label-select-file": "Обрати файл",
        "upload-form-label-infoform-title": "Деталі",
        "upload-form-label-infoform-name": "Назва",
        "upload-form-label-infoform-name-tooltip": "Унікальна описова назва файлу. Ви можете використовувати простий текст з пробілами. Не вказуйте розширення файла.",
        "foreign-structured-upload-form-label-own-work-message-shared": "Я підтверджую, що я є власником авторських прав на цей файл та погоджуюся беззастережно поширити його у Вікісховищі на умовах ліцензії [https://creativecommons.org/licenses/by-sa/4.0/deed.uk Creative CommonsAttribution-ShareAlike 4.0], і я згоден з [https://wikimediafoundation.org/wiki/Terms_of_Use умовами використання].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Якщо ви не є власником авторських прав на цей файл або ви хочете розповсюджувати його на умовах іншої ліцензії, рекомендуємо використати [https://commons.wikimedia.org/wiki/Special:UploadWizard Майстер завантажень на Вікісховищі].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Ви також можете спробувати використати [[Special:Upload|сторінку завантаження на {{GRAMMAR:locative|{{SITENAME}}}}]], якщо цей файл може бути завантажений на цей сайт згідно з його правилами.",
-       "foreign-structured-upload-form-2-label-intro": "Дякуємо Вам за пожертвування зображення, яке буде використано на сайті {{SITENAME}}. Вам слід продовжити, тільки якщо воно відповідає ряду умов:",
-       "foreign-structured-upload-form-2-label-ownwork": "Воно повинно бути виключно <strong>вашою роботою</strong>, а не просто картинкою, завантаженою з Інтернету",
-       "foreign-structured-upload-form-2-label-noderiv": "Воно не повинно <strong>містити чиєїсь чужої роботи</strong> чи бути натхненно нею.",
-       "foreign-structured-upload-form-2-label-useful": "Воно повинно бути <strong>освітнім і корисним</strong> для навчання інших.",
-       "foreign-structured-upload-form-2-label-ccbysa": "Ви маєте бути згодні на те, щоб <strong>опублікувати його в Інтернеті назавжди</strong> під ліцензією [https://creativecommons.org/licenses/by-sa/4.0/deed.uk Creative Commons Attribution-ShareAlike 4.0]",
-       "foreign-structured-upload-form-2-label-alternative": "Якщо не все перераховане вище вірно, ви все одно можете продовжити завантажувати цей файл, використовуючи [https://commons.wikimedia.org/wiki/Special:UploadWizard Майстер завантажень файлів Вікісховища], якщо цей файл доступний під вільною ліцензією.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Завантажуючи цей файл, ви підтверджуєте, що ви є власником авторських прав на нього, і погоджуєтеся беззастережно передати цей файл на Вікісховище під ліцензією Creative Commons Attribution-ShareAlike 4.0, та погоджуєтесь з [https://wikimediafoundation.org/wiki/Terms_of_Use Умовами використання].",
-       "foreign-structured-upload-form-3-label-question-website": "Ви завантажили це зображення з якогось сайту, чи, можливо, знайшли його через пошук зображень?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Ви створили це зображення (зробили фото, ескіз, креслення тощо) самі?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Чи є ця робота похідною від іншої роботи, що належить комусь іншому, як, до прикладу, логотип?",
-       "foreign-structured-upload-form-3-label-yes": "Так",
-       "foreign-structured-upload-form-3-label-no": "Ні",
-       "foreign-structured-upload-form-3-label-alternative": "На жаль, в даному випадку, цей інструмент не підтримує завантаження даного файла. Ви все одно можете завантажити його, використовуючи [https://commons.wikimedia.org/wiki/Special:UploadWizard Майстер завантажень файлів Вікісховища], доки він доступний під вільною ліцензією.",
-       "foreign-structured-upload-form-4-label-good": "Використовуючи цей інструмент, ви можете завантажити освітню графіку, яку ви створили, і фотографії, які ви сфотографували, якщо вони не містять робіт, що належать комусь іншому.",
-       "foreign-structured-upload-form-4-label-bad": "Ви не можете завантажувати зображення, знайдені в пошукових системах або скачані з інших сайтів.",
        "backend-fail-stream": "Не вдалося транслювати файл $1.",
        "backend-fail-backup": "Не вдалося створити резервну копію файлу $1.",
        "backend-fail-notexists": "Файл $1 не існує.",
        "apihelp": "Довідка з API",
        "apihelp-no-such-module": "Додаток \"$1\" не знайдено.",
        "apisandbox": "Майданчик для тестування API",
+       "apisandbox-jsonly": "Для використання API-пісочниці потрібен JavaScript.",
        "apisandbox-api-disabled": "API вимкнуто на цьому сайті.",
-       "apisandbox-intro": "Ця сторінка служить для експериментування з '''MediaWiki API'''.\nЗвертайтеся до [//www.mediawiki.org/wiki/API:Main_page документації] для докладнішої інформації про використання API.  Наприклад: [//www.mediawiki.org/wiki/API#A_simple_example як отримати вміст головної сторінки].  Виберіть дію, щоб побачити більше прикладів.\n\nЗверніть увагу, що, хоча це пісочниця, дії, виконані вами, на цій сторінці можуть змінити вікі.",
+       "apisandbox-intro": "Ця сторінка служить для експериментування з <strong>MediaWiki веб-API</strong>.\nЗверніться до [[mw:API:Main page|документації]] для докладнішої інформації про використання API. Приклад: [//www.mediawiki.org/wiki/API#A_simple_example як отримати вміст головної сторінки]. Виберіть дію, щоб побачити більше прикладів.\n\nЗверніть увагу, що, хоча це пісочниця, дії, виконані вами, на цій сторінці можуть змінити вікі.",
+       "apisandbox-fullscreen": "Розгорнути панель",
+       "apisandbox-fullscreen-tooltip": "Розгорнути панель пісочниці, щоб заповнити вікно браузера.",
+       "apisandbox-unfullscreen": "Показати сторінку",
+       "apisandbox-unfullscreen-tooltip": "Зменшити панель пісочниці, щоб були доступні навігаційні посилання MediaWiki.",
        "apisandbox-submit": "Зробити запит",
        "apisandbox-reset": "Очистити",
-       "apisandbox-examples": "Приклад",
-       "apisandbox-results": "Результат",
+       "apisandbox-retry": "Повторити",
+       "apisandbox-loading": "Завантаження інформації для API-модуля «$1»…",
+       "apisandbox-load-error": "Сталася помилка при завантаженні інформації для API-модуля «$1»: $2",
+       "apisandbox-no-parameters": "Цей модуль API не має параметрів.",
+       "apisandbox-helpurls": "Посилання на довідку",
+       "apisandbox-examples": "Приклади",
+       "apisandbox-dynamic-parameters": "Додаткові параметри",
+       "apisandbox-dynamic-parameters-add-label": "Додати параметр:",
+       "apisandbox-dynamic-parameters-add-placeholder": "Назва параметра",
+       "apisandbox-dynamic-error-exists": "Параметр з назвою «$1» вже існує.",
+       "apisandbox-deprecated-parameters": "Застарілі параметри",
+       "apisandbox-fetch-token": "Автозаповнення токена",
+       "apisandbox-submit-invalid-fields-title": "Деякі поля недійсні",
+       "apisandbox-submit-invalid-fields-message": "Будь ласка, виправте відмічені поля і спробуйте знову.",
+       "apisandbox-results": "Результати",
+       "apisandbox-sending-request": "Надсилання запиту API…",
+       "apisandbox-loading-results": "Отримання результатів API…",
+       "apisandbox-results-error": "Сталася помилка при завантаженні відповіді на запит API: $1.",
        "apisandbox-request-url-label": "URL-адреса запиту:",
-       "apisandbox-request-time": "Час запиту $1",
+       "apisandbox-request-time": "Час запиту: {{PLURAL:$1|$1 мс}}",
+       "apisandbox-results-fixtoken": "Виправте токен і надішліть ще раз",
+       "apisandbox-results-fixtoken-fail": "Не вдалося викликати токен «$1».",
+       "apisandbox-alert-page": "Поля на цій сторінці не є дійсними.",
+       "apisandbox-alert-field": "Значення цього поля не є допустимим.",
        "booksources": "Джерела книг",
        "booksources-search-legend": "Пошук інформації про книгу",
        "booksources-isbn": "ISBN:",
        "listgrouprights-namespaceprotection-header": "Обмеження простору назв",
        "listgrouprights-namespaceprotection-namespace": "Простір назв",
        "listgrouprights-namespaceprotection-restrictedto": "Права, що дозволяють користувачу редагувати",
-       "listgrants-summary": "Нижче наведено список OAuth грантів, з їхнім пов'язаним доступом до прав користувача. Користувачі можуть дозволити програмам використовувати свій обліковий запис, але з обмеженими правами на основі грантів користувача наданих до заяви. Програма діє від імені користувача, однак насправді не може використовувати права, які користувач не має.\nТам може бути [[{{MediaWiki:Listgrouprights-helppage}}|додаткова інформація]] про індивідуальні права.",
+       "listgrants": "Дозвіл",
+       "listgrants-summary": "Нижче наведено список дозволів, з їхнім пов'язаним доступом до прав користувача. Користувачі можуть дозволити програмам використовувати свій обліковий запис, але з обмеженими правами на основі грантів користувача наданих до заяви. Програма діє від імені користувача, однак насправді не може використовувати права, які користувач не має.\nМоже бути [[{{MediaWiki:Listgrouprights-helppage}}|додаткова інформація]] про індивідуальні права.",
        "listgrants-grant": "Грант",
        "listgrants-rights": "Права",
        "trackingcategories": "Відстежувані категорії",
        "block-log-flags-hiddenname": "ім'я користувача приховане",
        "range_block_disabled": "Адміністраторам заборонено блокувати діапазони.",
        "ipb_expiry_invalid": "Невірно вказано термін.",
+       "ipb_expiry_old": "Час закінчення — в минулому.",
        "ipb_expiry_temp": "Блокування із приховуванням імені користувача мають бути безстроковими.",
        "ipb_hide_invalid": "Неможливо приховати обліковий запис; з нього зроблено понад{{PLURAL:$1|одне редагування|$1 редагування|$1 редагувань}}.",
        "ipb_already_blocked": "«$1» уже заблоковано. Для того, щоб призначити новий термін блокування, спочатку розблокуйте його.",
        "lockedbyandtime": "($1 $2 $3)",
        "move-page": "Перейменування сторінки «$1»",
        "move-page-legend": "Перейменування сторінки",
-       "movepagetext": "СкоÑ\80иÑ\81Ñ\82авÑ\88иÑ\81Ñ\8c Ñ\84оÑ\80моÑ\8e Ð½Ð¸Ð¶Ñ\87е, Ð²Ð¸ Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿ÐµÑ\80ейменÑ\83ваÑ\82и Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83, Ð¾Ð´Ð½Ð¾Ñ\87аÑ\81но Ð¿ÐµÑ\80емÑ\96Ñ\81Ñ\82ивÑ\88и Ð½Ð° Ð½Ð¾Ð²Ðµ Ð¼Ñ\96Ñ\81Ñ\86е Ñ\96 Ð¶Ñ\83Ñ\80нал Ñ\97Ñ\97 Ñ\80едагÑ\83ванÑ\8c.\nСÑ\82аÑ\80а Ð½Ð°Ð·Ð²Ð° Ñ\81Ñ\82ане Ð¿ÐµÑ\80енапÑ\80авленнÑ\8fм Ð½Ð° Ð½Ð¾Ð²Ñ\83 Ð½Ð°Ð·Ð²Ñ\83.\nÐ\92и Ð¼Ð¾Ð¶ÐµÑ\82е Ð°Ð²Ñ\82омаÑ\82иÑ\87но Ð¾Ð½Ð¾Ð²Ð¸Ñ\82и Ð¿ÐµÑ\80енапÑ\80авленнÑ\8f Ð½Ð° Ñ\81Ñ\82аÑ\80Ñ\83 Ð½Ð°Ð·Ð²Ñ\83.\nЯкÑ\89о Ð²Ð¸ Ñ\86Ñ\8cого Ð½Ðµ Ð·Ñ\80обиÑ\82е, Ð±Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð¿ÐµÑ\80евÑ\96Ñ\80Ñ\82е Ð½Ð°Ñ\8fвнÑ\96Ñ\81Ñ\82Ñ\8c [[Special:DoubleRedirects|подвÑ\96йниÑ\85]] Ñ\87и [[Special:BrokenRedirects|Ñ\80озÑ\96Ñ\80ваниÑ\85]] Ð¿ÐµÑ\80енапÑ\80авленÑ\8c.\nÐ\92и Ð²Ñ\96дповÑ\96даÑ\94Ñ\82е Ð·Ð° Ñ\82е, Ñ\89об Ð¿Ð¾Ñ\81иланнÑ\8f Ñ\96 Ð½Ð°Ð´Ð°Ð»Ñ\96 Ð²ÐºÐ°Ð·Ñ\83вали Ñ\82Ñ\83ди, ÐºÑ\83ди Ð¿Ñ\80ипÑ\83Ñ\81калоÑ\81Ñ\8f.\n\nÐ\97веÑ\80нÑ\96Ñ\82Ñ\8c Ñ\83вагÑ\83, Ñ\89о Ñ\81Ñ\82оÑ\80Ñ\96нка '''не''' Ð±Ñ\83де Ð¿ÐµÑ\80ейменована, Ñ\8fкÑ\89о Ñ\81Ñ\82оÑ\80Ñ\96нка Ð· Ð½Ð¾Ð²Ð¾Ñ\8e Ð½Ð°Ð·Ð²Ð¾Ñ\8e Ð²Ð¶Ðµ Ñ\96Ñ\81нÑ\83Ñ\94, Ð¾ÐºÑ\80Ñ\96м Ð²Ð¸Ð¿Ð°Ð´ÐºÑ\96в, ÐºÐ¾Ð»Ð¸ Ð¾Ñ\81Ñ\82аннÑ\8f Ð¿Ð¾Ñ\80ожнÑ\8f Ð°Ð±Ð¾ Ñ\94 Ð¿ÐµÑ\80енапÑ\80авленнÑ\8fм, Ð° Ð¶Ñ\83Ñ\80нал Ñ\97Ñ\97 Ñ\80едагÑ\83ванÑ\8c Ð¿Ð¾Ñ\80ожнÑ\96й.\nЦе Ð¾Ð·Ð½Ð°Ñ\87аÑ\94, Ñ\89о Ð²Ð¸ Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ð¾Ð²ÐµÑ\80нÑ\83Ñ\82и Ñ\81Ñ\82оÑ\80Ñ\96нÑ\86Ñ\96 Ñ\81Ñ\82аÑ\80Ñ\83 Ð½Ð°Ð·Ð²Ñ\83, Ñ\8fкÑ\89о Ð²Ð¸ Ð¿ÐµÑ\80ейменÑ\83вали Ñ\97Ñ\97 Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾, Ð°Ð»Ðµ Ð²Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е Ð·Ð°Ñ\82еÑ\80Ñ\82и Ñ\96Ñ\81нÑ\83Ñ\8eÑ\87Ñ\83 Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83.\n\n'''Ð\9fÐ\9eÐ\9fÐ\95РÐ\95Ð\94Ð\96Ð\95Ð\9dÐ\9dЯ!'''\nЦÑ\8f Ð´Ñ\96Ñ\8f Ð¼Ð¾Ð¶Ðµ Ñ\81Ñ\82аÑ\82и Ð¿Ñ\80иÑ\87иноÑ\8e Ñ\81еÑ\80йозниÑ\85 Ñ\82а Ð½ÐµÐ¾Ñ\87Ñ\96кÑ\83ваниÑ\85 Ð·Ð¼Ñ\96н Ð¿Ð¾Ð¿Ñ\83лÑ\8fÑ\80ниÑ\85 Ñ\81Ñ\82оÑ\80Ñ\96нок.\nÐ\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð¿ÐµÑ\80ед Ð¿Ñ\80одовженнÑ\8fм Ð¿ÐµÑ\80еконайÑ\82еÑ\81Ñ\8c, Ñ\89о Ð²и розумієте всі можливі наслідки.",
-       "movepagetext-noredirectfixer": "Ця форма дозволяє перейменувати сторінку з одночасним переміщенням її журналу змін.\nСтара назва стане перенаправленням на нову.\nБудь ласка, не забудьте виправити [[Special:DoubleRedirects|подвійні]] та [[Special:BrokenRedirects|розірвані перенаправлення]].\nВи відповідаєте за те, щоб посилання і далі вказували туди, куди треба.\n\nЗверніть увагу, що сторінка '''не буде''' перейменована, якщо сторінка з новою назвою вже існує, крім випадків, коли вона є перенаправленням або порожня та не має історії редагувань.\nЦе означає, що Ви можете перейменувати сторінку назад, якщо Ви допустилися помилки, і при цьому не зможете випадково перезаписати наявну сторінку.\n\n'''Попередження!'''\nПерейменування може призвести до масштабних і несподіваних змін для ''популярних'' сторінок.\nТому перед перейменуванням упевніться, що Ви оцінили можливі наслідки.",
+       "movepagetext": "СкоÑ\80иÑ\81Ñ\82авÑ\88иÑ\81Ñ\8c Ñ\84оÑ\80моÑ\8e Ð½Ð¸Ð¶Ñ\87е, Ð\92и Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿ÐµÑ\80ейменÑ\83ваÑ\82и Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83, Ð¾Ð´Ð½Ð¾Ñ\87аÑ\81но Ð¿ÐµÑ\80емÑ\96Ñ\81Ñ\82ивÑ\88и Ð½Ð° Ð½Ð¾Ð²Ðµ Ð¼Ñ\96Ñ\81Ñ\86е Ñ\96 Ð¶Ñ\83Ñ\80нал Ñ\97Ñ\97 Ñ\80едагÑ\83ванÑ\8c.\nСÑ\82аÑ\80а Ð½Ð°Ð·Ð²Ð° Ñ\81Ñ\82ане Ð¿ÐµÑ\80енапÑ\80авленнÑ\8fм Ð½Ð° Ð½Ð¾Ð²Ñ\83 Ð½Ð°Ð·Ð²Ñ\83.\nÐ\92и Ð¼Ð¾Ð¶ÐµÑ\82е Ð°Ð²Ñ\82омаÑ\82иÑ\87но Ð¾Ð½Ð¾Ð²Ð¸Ñ\82и Ð¿ÐµÑ\80енапÑ\80авленнÑ\8f Ð½Ð° Ñ\81Ñ\82аÑ\80Ñ\83 Ð½Ð°Ð·Ð²Ñ\83.\nЯкÑ\89о Ð\92и Ñ\86Ñ\8cого Ð½Ðµ Ð·Ñ\80обиÑ\82е, Ð±Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð¿ÐµÑ\80евÑ\96Ñ\80Ñ\82е Ð½Ð°Ñ\8fвнÑ\96Ñ\81Ñ\82Ñ\8c [[Special:DoubleRedirects|подвÑ\96йниÑ\85]] Ñ\87и [[Special:BrokenRedirects|Ñ\80озÑ\96Ñ\80ваниÑ\85]] Ð¿ÐµÑ\80енапÑ\80авленÑ\8c.\nÐ\92и Ð²Ñ\96дповÑ\96даÑ\94Ñ\82е Ð·Ð° Ñ\82е, Ñ\89об Ð¿Ð¾Ñ\81иланнÑ\8f Ñ\96 Ð½Ð°Ð´Ð°Ð»Ñ\96 Ð²ÐºÐ°Ð·Ñ\83вали Ñ\82Ñ\83ди, ÐºÑ\83ди Ð¿Ñ\80ипÑ\83Ñ\81калоÑ\81Ñ\8f.\n\nÐ\97веÑ\80нÑ\96Ñ\82Ñ\8c Ñ\83вагÑ\83, Ñ\89о Ñ\81Ñ\82оÑ\80Ñ\96нка <strong>не</strong> Ð±Ñ\83де Ð¿ÐµÑ\80ейменована, Ñ\8fкÑ\89о Ñ\81Ñ\82оÑ\80Ñ\96нка Ð· Ð½Ð¾Ð²Ð¾Ñ\8e Ð½Ð°Ð·Ð²Ð¾Ñ\8e Ð²Ð¶Ðµ Ñ\96Ñ\81нÑ\83Ñ\94, Ð¾ÐºÑ\80Ñ\96м Ð²Ð¸Ð¿Ð°Ð´ÐºÑ\96в, ÐºÐ¾Ð»Ð¸ Ð¾Ñ\81Ñ\82аннÑ\8f Ð¿Ð¾Ñ\80ожнÑ\8f Ð°Ð±Ð¾ Ñ\94 Ð¿ÐµÑ\80енапÑ\80авленнÑ\8fм, Ð° Ð¶Ñ\83Ñ\80нал Ñ\97Ñ\97 Ñ\80едагÑ\83ванÑ\8c Ð¿Ð¾Ñ\80ожнÑ\96й.\nЦе Ð¾Ð·Ð½Ð°Ñ\87аÑ\94, Ñ\89о Ð\92и Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ð¾Ð²ÐµÑ\80нÑ\83Ñ\82и Ñ\81Ñ\82оÑ\80Ñ\96нÑ\86Ñ\96 Ñ\81Ñ\82аÑ\80Ñ\83 Ð½Ð°Ð·Ð²Ñ\83, Ñ\8fкÑ\89о Ð¿ÐµÑ\80ейменÑ\83вали Ñ\97Ñ\97 Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾, Ð°Ð»Ðµ Ð\92и Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е Ð·Ð°Ñ\82еÑ\80Ñ\82и Ñ\96Ñ\81нÑ\83Ñ\8eÑ\87Ñ\83 Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83.\n\n<strong>Ð\9fÑ\80имÑ\96Ñ\82ка</strong>\nЦÑ\8f Ð´Ñ\96Ñ\8f Ð¼Ð¾Ð¶Ðµ Ñ\81Ñ\82аÑ\82и Ð¿Ñ\80иÑ\87иноÑ\8e Ñ\81еÑ\80йозниÑ\85 Ñ\82а Ð½ÐµÐ¾Ñ\87Ñ\96кÑ\83ваниÑ\85 Ð·Ð¼Ñ\96н Ð¿Ð¾Ð¿Ñ\83лÑ\8fÑ\80ниÑ\85 Ñ\81Ñ\82оÑ\80Ñ\96нок.\nÐ\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð¿ÐµÑ\80ед Ð¿Ñ\80одовженнÑ\8fм Ð¿ÐµÑ\80еконайÑ\82еÑ\81Ñ\8f, Ñ\89о Ð\92и розумієте всі можливі наслідки.",
+       "movepagetext-noredirectfixer": "Ця форма дозволяє перейменувати сторінку з одночасним переміщенням її журналу змін.\nСтара назва стане перенаправленням на нову.\nБудь ласка, не забудьте виправити [[Special:DoubleRedirects|подвійні]] та [[Special:BrokenRedirects|розірвані перенаправлення]].\nВи відповідаєте за те, щоб посилання і далі вказували туди, куди треба.\n\nЗверніть увагу, що сторінка <strong>не буде</strong> перейменована, якщо сторінка з новою назвою вже існує, крім випадків, коли вона є перенаправленням або порожня та не має історії редагувань.\nЦе означає, що Ви можете перейменувати сторінку назад, якщо Ви допустилися помилки, і при цьому не зможете випадково перезаписати наявну сторінку.\n\n<strong>Примітка</strong>\nПерейменування може призвести до масштабних і несподіваних змін для популярних сторінок.\nТому перед перейменуванням упевніться, що Ви оцінили можливі наслідки.",
        "movepagetalktext": "Якщо ви встановите тут прапорець, приєднана сторінка обговорення також буде автоматично перейменована, окрім випадку, коли непорожня сторінка обговорення з такою назвою вже існує.\n\nУ цьому разі ви будете змушені перейменувати чи об'єднати сторінки вручну в разі необхідності.",
        "moveuserpage-warning": "'''Увага:''' Ви збираєтеся перейменувати сторінку користувача. Будь ласка, зверніть увагу, що  буде перейменовано тільки сторінку, але користувача '''не''' буде перейменовано.",
        "movecategorypage-warning": "<strong>Увага:</strong> Ви збираєтесь перейменувати сторінку категорії. Будь ласка, зауважте, що це перейменує лише цю сторінку, <em>не</em> перемістивши сторінки, що входять до категорії до категорії з новою назвою.",
        "movenosubpage": "Ця сторінка не має підсторінок.",
        "movereason": "Причина:",
        "revertmove": "відкинути",
-       "delete_and_move_text": "== Потрібне вилучення ==\nСторінка з назвою [[:$1|«$1»]] вже існує.\nБажаєте вилучити її для можливості перейменування?",
+       "delete_and_move_text": "Сторінка з назвою [[:$1|«$1»]] вже існує.\nБажаєте вилучити її для можливості перейменування?",
        "delete_and_move_confirm": "Так, вилучити для перейменування",
        "delete_and_move_reason": "Вилучена для можливості перейменування сторінки «[[$1]]»",
        "selfmove": "Неможливо перейменувати сторінку: поточна й нова назви сторінки співпадають.",
        "move-leave-redirect": "Залишити перенаправлення",
        "protectedpagemovewarning": "'''Попередження:''' Ця сторінка захищена так, що її можуть перейменовувати тільки адміністратори.\nОстанній запис журналу наведений нижче для довідки:",
        "semiprotectedpagemovewarning": "'''Зауваження:''' Ця сторінка захищена так, що перейменовувати її можуть тільки зареєстровані користувачі.\nОстанній запис журналу наведений нижче для довідки:",
-       "move-over-sharedrepo": "== Файл існує ==\nУ спільному сховищі існує [[:$1]]. Перейменування файлу на цю назву призведе до перекриття файлу зі спільного сховища.",
+       "move-over-sharedrepo": "У спільному сховищі існує [[:$1]]. Перейменування файлу на цю назву призведе до перекриття файлу зі спільного сховища.",
        "file-exists-sharedrepo": "Обрана назва файлу вже використовується у спільному сховищі.\nБудь ласка, оберіть іншу назву.",
        "export": "Експорт статей",
        "exporttext": "Ви можете експортувати текст та журнал змін конкретної сторінки чи кількох сторінок у XML, який пізніше можна [[Special:Import|імпортувати]] в іншу вікі, що використовує програмне забезпечення MediaWiki.\n\nЩоб експортувати сторінки, введіть їх назви в поле редагування, одну назву на рядок і оберіть, бажаєте ви експортувати всю історію змін сторінок чи тільки останні версії статей.\n\nВи також можете використовувати спеціальну адресу для експорту тільки останньої версії. Наприклад, для сторінки «[[{{MediaWiki:Mainpage}}]]» ця адреса така: [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]].",
        "import-nonewrevisions": "Ніякі поправки не були імпортовані (всі вже були оброблені, або пропущені через помилки).",
        "xml-error-string": "$1 в рядку $2, позиції $3 (байт $4): $5",
        "import-upload": "Завантажити XML-дані",
-       "import-token-mismatch": "УÑ\82Ñ\80аÑ\87енÑ\96 Ð´Ð°Ð½Ñ\96 Ñ\81еанÑ\81Ñ\83. Ð\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ñ\81пÑ\80обÑ\83йÑ\82е Ñ\89е Ñ\80аз.",
+       "import-token-mismatch": "Ð\92Ñ\82Ñ\80аÑ\87енÑ\96 Ð´Ð°Ð½Ñ\96 Ñ\81еанÑ\81Ñ\83. \n\nÐ\92и Ð¼Ð¾Ð³Ð»Ð¸ Ð²Ð¸Ð¹Ñ\82и Ð· Ñ\81иÑ\81Ñ\82еми. <strong>Ð\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð¿ÐµÑ\80еконайÑ\82еÑ\81Ñ\8f, Ñ\89о Ð´Ð¾Ñ\81Ñ\96 Ð·Ð°Ð»Ð¾Ð³Ñ\96ненÑ\96, Ñ\96 Ñ\81пÑ\80обÑ\83йÑ\82е Ñ\89е Ñ\80аз</strong>.\nЯкÑ\89о Ñ\86е Ð½Ðµ Ñ\81пÑ\80аÑ\86Ñ\8eÑ\94, Ñ\81пÑ\80обÑ\83йÑ\82е [[Special:UserLogout|вийÑ\82и Ð· Ñ\81иÑ\81Ñ\82еми]] Ñ\96 Ñ\83вÑ\96йÑ\82и Ð·Ð½Ð¾Ð²Ñ\83, Ñ\82а Ð¿ÐµÑ\80евÑ\96Ñ\80Ñ\82е, Ñ\87и Ð\92аÑ\88 Ð±Ñ\80аÑ\83зеÑ\80 Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\8fÑ\94 ÐºÑ\83ки Ð· Ñ\86Ñ\8cого Ñ\81айÑ\82Ñ\83.",
        "import-invalid-interwiki": "Неможливо імпортувати із зазначеної вікі.",
        "import-error-edit": "Сторінку «$1» не було імпортовано, оскільки Вам не дозволено її редагувати.",
        "import-error-create": "Сторінку «$1» не було імпортовано, оскільки Вам не дозволено її створювати.",
        "javascripttest-pagetext-frameworks": "Будь ласка, оберіть одне з наступних середовищ тестування: $1",
        "javascripttest-pagetext-skins": "Виберіть оформлення сторінки запуску тесту:",
        "javascripttest-qunit-intro": "Переглянути [ $1  тестування документації] на mediawiki.org.",
-       "tooltip-pt-userpage": "Ваша сторінка користувача",
+       "tooltip-pt-userpage": "{{GENDER:|Ваша}} сторінка користувача",
        "tooltip-pt-anonuserpage": "Сторінка користувача для вашої IP-адреси",
-       "tooltip-pt-mytalk": "Ваша сторінка обговорення",
+       "tooltip-pt-mytalk": "{{GENDER:|Ваша}} сторінка обговорення",
        "tooltip-pt-anontalk": "Обговорення редагувань з цієї IP-адреси",
-       "tooltip-pt-preferences": "Ваші налаштування",
+       "tooltip-pt-preferences": "{{GENDER:|Ваші}} налаштування",
        "tooltip-pt-watchlist": "Список сторінок, за змінами в яких Ви спостерігаєте",
-       "tooltip-pt-mycontris": "Ваш внесок",
+       "tooltip-pt-mycontris": "{{GENDER:|Ваш}} внесок",
        "tooltip-pt-anoncontribs": "Список редагувань, зроблених з цієї IP-адреси",
        "tooltip-pt-login": "Тут можна зареєструватися в системі, але це не обов'язково.",
        "tooltip-pt-logout": "Вихід із системи",
        "tooltip-t-recentchangeslinked": "Останні зміни на сторінках, на які посилається ця сторінка",
        "tooltip-feed-rss": "Трансляція в RSS для цієї сторінки",
        "tooltip-feed-atom": "Трансляція в Atom для цієї сторінки",
-       "tooltip-t-contributions": "Ð\9fеÑ\80еглÑ\8fд Ð²Ð½ÐµÑ\81кÑ\83 Ñ\86Ñ\8cого ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а",
-       "tooltip-t-emailuser": "Надіслати листа цьому користувачеві",
+       "tooltip-t-contributions": "Ð\92неÑ\81ок {{GENDER:$1|Ñ\86Ñ\8cого ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а|Ñ\86Ñ\96Ñ\94Ñ\97 ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87ки}}",
+       "tooltip-t-emailuser": "Надіслати листа {{GENDER:$1|цьому користувачеві|цій користувачці}}",
        "tooltip-t-info": "Додаткові відомості про цю сторінку",
        "tooltip-t-upload": "Завантажити файли",
        "tooltip-t-specialpages": "Перелік спеціальних сторінок",
        "lastmodifiedatby": "Остання зміна $2, $1 користувачем $3.",
        "othercontribs": "Базується на праці $1.",
        "others": "інші",
-       "siteusers": "{{PLURAL:$2|1=Користувач|Користувачі}} {{grammar:genitive|{{SITENAME}}}} $1",
+       "siteusers": "{{PLURAL:$2|1={{GENDER:$1|Користувач|Користувачка}}|Користувачі}} {{grammar:genitive|{{SITENAME}}}} $1",
        "anonusers": "{{PLURAL:$2|1=анонімний користувач|анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}} $1",
        "creditspage": "Подяки",
        "nocredits": "Відсутній список користувачів для цієї статті",
        "scarytranscludefailed-httpstatus": "[Не вдалось завантажити шаблон для $1: HTTP $2]",
        "scarytranscludetoolong": "[URL дуже довгий]",
        "deletedwhileediting": "'''Увага:''' ця сторінка була вилучена після того, як ви розпочали редагування!",
-       "confirmrecreate": "Користувач [[User:$1|$1]] ([[User talk:$1|обговорення]]) вилучив цю сторінку після того, як ви почали редагування і зазначив причиною:\n: ''$2''\nБудь ласка, підтвердьте, що ви дійсно бажаєте створити цю сторінку заново.",
-       "confirmrecreate-noreason": "Користувач [[User:$1|$1]] ([[User talk:$1|обг]]) вилучив цю сторінку після того, як ви її почали редагувати. Будь-ласка, підтвердіть, що ви дійсно хочете її відновити.",
+       "confirmrecreate": "{{GENDER:$1|Користувач|Користувачка}} [[User:$1|$1]] ([[User talk:$1|обговорення]]) {{GENDER:$1|вилучив|вилучила}} цю сторінку після того, як ви почали редагування і зазначив причиною:\n: <em>$2</em>\nБудь ласка, підтвердіть, що Ви дійсно бажаєте створити цю сторінку заново.",
+       "confirmrecreate-noreason": "{{GENDER:$1|Користувач|Користувачка}} [[User:$1|$1]] ([[User talk:$1|обговорення]]) {{GENDER:$1|вилучив|вилучила}} цю сторінку після того, як Ви її почали редагувати. Будь ласка, підтвердіть, що Ви дійсно хочете її відновити.",
        "recreate": "Повторно створити",
        "unit-pixel": " пікс.",
        "confirm_purge_button": "Гаразд",
        "watchlistedit-clear-legend": "Очистити список спостереження",
        "watchlistedit-clear-explain": "Усі сторінки буде вилучено з Вашого списку спостереження",
        "watchlistedit-clear-titles": "Сторінки:",
-       "watchlistedit-clear-submit": "Ð\9eÑ\87иÑ\81Ñ\82иÑ\82и Ñ\81пиÑ\81ок Ñ\81поÑ\81Ñ\82еÑ\80еженнÑ\8f (Ñ\86е Ð±ÐµÐ·Ð¿Ð¾Ð²Ð¾Ñ\80оÑ\82нÑ\8cо!)",
+       "watchlistedit-clear-submit": "Ð\9eÑ\87иÑ\81Ñ\82иÑ\82и Ñ\81пиÑ\81ок Ñ\81поÑ\81Ñ\82еÑ\80еженнÑ\8f (Ñ\86е Ð½ÐµÐ·Ð²Ð¾Ñ\80оÑ\82но!)",
        "watchlistedit-clear-done": "Ваш список спостереження було очищено.",
        "watchlistedit-clear-removed": "Було видалено {{PLURAL:$1|1 запис|$1 записів|$1 записи}}:",
        "watchlistedit-too-many": "Забагато сторінок для відображення тут.",
        "version-libraries-license": "Ліцензія",
        "version-libraries-description": "Опис",
        "version-libraries-authors": "Автори",
-       "redirect": "Перенаправлення за файлом, користувачем, сторінкою або ID версії",
+       "redirect": "Перенаправлення за файлом, користувачем, сторінкою, версією або ID журналу",
        "redirect-legend": "Перенаправити на файл чи сторінку",
-       "redirect-summary": "Ця спеціальна сторінка перенаправляє на файл (за поданою назвою файлу), сторінку (за поданим ID версії або сторінки) або сторінку користувача (за поданим числовим ID користувача). Використання: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]] або [[{{#Special:Redirect}}/user/101]].",
+       "redirect-summary": "Ця спеціальна сторінка перенаправляє на файл (за поданою назвою файлу), сторінку (за поданим ID версії або сторінки), сторінку користувача (за поданим числовим ID користувача) або запис журлану (за поданим ID журналу). Використання: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] або [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Перейти",
        "redirect-lookup": "Шукати:",
        "redirect-value": "Значення:",
        "redirect-page": "ID сторінки",
        "redirect-revision": "Версія сторінки",
        "redirect-file": "Назва файлу",
+       "redirect-logid": "ID журналу",
        "redirect-not-exists": "Значення не знайдено",
        "fileduplicatesearch": "Пошук файлів-дублікатів",
        "fileduplicatesearch-summary": "Пошук дублікатів файлів на основі хеш-значень.",
        "expand_templates_generate_xml": "Показати дерево аналізу XML",
        "expand_templates_generate_rawhtml": "Показати сирий HTML",
        "expand_templates_preview": "Попередній перегляд",
-       "expand_templates_preview_fail_html": "<em>Ð\9eÑ\81кÑ\96лÑ\8cки {{SITENAME}} Ð¼Ð°Ñ\94 Ð²Ð²Ñ\96мкненим Ñ\81иÑ\80ий HTML Ñ\96 Ð²Ñ\96дбÑ\83лаÑ\81Ñ\8c Ð²Ñ\82Ñ\80аÑ\82а Ð´Ð°Ð½Ð¸Ñ\85 Ñ\81еÑ\81Ñ\96Ñ\97, Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\96й Ð¿ÐµÑ\80еглÑ\8fд Ð¿Ñ\80иÑ\85ований Ñ\8fк Ð·Ð°Ñ\85Ñ\96д Ð±ÐµÐ·Ð¿ÐµÐºÐ¸ Ð²Ñ\96д JavaScript-аÑ\82ак.</em>\n\n<strong>ЯкÑ\89о Ñ\86е Ð¿Ñ\80авомÑ\96Ñ\80на Ñ\81пÑ\80оба Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\8cого Ð¿ÐµÑ\80еглÑ\8fдÑ\83, Ð±Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ñ\81пÑ\80обÑ\83йÑ\82е Ð·Ð½Ð¾Ð²Ñ\83.</strong>\nЯкÑ\89о Ñ\86е Ð´Ð¾Ñ\81Ñ\96 Ð½Ðµ Ð¿Ñ\80аÑ\86Ñ\8eÑ\94, Ñ\81пÑ\80обÑ\83йÑ\82е [[Special:UserLogout|вийÑ\82и Ñ\96з Ñ\81иÑ\81Ñ\82еми]] Ñ\82а Ð·Ð½Ð¾Ð²Ñ\83 Ð²Ð²Ñ\96йÑ\82и Ð´Ð¾ Ð½ÐµÑ\97.",
+       "expand_templates_preview_fail_html": "<em>Ð\9eÑ\81кÑ\96лÑ\8cки {{SITENAME}} Ð¼Ð°Ñ\94 Ð²Ð²Ñ\96мкнений Ñ\81иÑ\80ий HTML Ñ\96 Ð²Ñ\96дбÑ\83лаÑ\81Ñ\8f Ð²Ñ\82Ñ\80аÑ\82а Ð´Ð°Ð½Ð¸Ñ\85 Ñ\81еÑ\81Ñ\96Ñ\97, Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\96й Ð¿ÐµÑ\80еглÑ\8fд Ð¿Ñ\80иÑ\85ований Ñ\8fк Ð·Ð°Ñ\85Ñ\96д Ð±ÐµÐ·Ð¿ÐµÐºÐ¸ Ð²Ñ\96д JavaScript-аÑ\82ак.</em>\n\n<strong>ЯкÑ\89о Ñ\86е Ð¿Ñ\80авомÑ\96Ñ\80на Ñ\81пÑ\80оба Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\8cого Ð¿ÐµÑ\80еглÑ\8fдÑ\83, Ð±Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ñ\81пÑ\80обÑ\83йÑ\82е Ð·Ð½Ð¾Ð²Ñ\83.</strong>\nЯкÑ\89о Ñ\86е Ð´Ð°Ð»Ñ\96 Ð½Ðµ Ð¿Ñ\80аÑ\86Ñ\8eÑ\94, Ñ\81пÑ\80обÑ\83йÑ\82е [[Special:UserLogout|вийÑ\82и Ñ\96з Ñ\81иÑ\81Ñ\82еми]] Ñ\96 Ð·Ð½Ð¾Ð²Ñ\83 Ð²Ð²Ñ\96йÑ\82и, Ñ\82а Ð¿ÐµÑ\80евÑ\96Ñ\80Ñ\82е, Ñ\87и Ð\92аÑ\88 Ð±Ñ\80аÑ\83зеÑ\80 Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\8fÑ\94 ÐºÑ\83ки Ð· Ñ\86Ñ\8cого Ñ\81айÑ\82Ñ\83.",
        "expand_templates_preview_fail_html_anon": "<em>Оскільки {{SITENAME}} має ввімкненим сирий HTML, а Ви не ввійшли до системи, попередній перегляд прихований як захід безпеки від JavaScript-атак.</em>\n\n<strong>Якщо це правомірна спроба попереднього перегляду, будь ласка, [[Special:UserLogin|увійдіть до системи]] та спробуйте знову.</strong>",
        "expand_templates_input_missing": "Ви повинні надати принаймні деякий вхідний текст.",
-       "pagelanguage": "Ð\92ибÑ\96Ñ\80 Ð¼Ð¾Ð²Ð¸ сторінки",
+       "pagelanguage": "Ð\97мÑ\96ниÑ\82и Ð¼Ð¾Ð²Ñ\83 сторінки",
        "pagelang-name": "Сторінка",
        "pagelang-language": "Мова",
        "pagelang-use-default": "Мова за замовчуванням",
        "action-pagelang": "змінити мову сторінки",
        "log-name-pagelang": "Журнал змін мови",
        "log-description-pagelang": "Це журнал змін мови сторінок.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змінив|змінила}} мову сторінки для $3 з $4 на $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змінив|змінила}} мову для $3 з $4 на $5",
        "default-skin-not-found": "Ой! Типова тема оформлення для вашої вікі <code dir=\"ltr\">$wgDefaultSkin</code>, <code>$1</code> недоступна.\n\nСхоже, що Ваша установка містить {{PLURAL:$4|наступну тему оформлення|наступні теми оформлення}}. Див. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для отримання інформації про те, як увімкнути {{PLURAL:$4|її|їх та обрати тему за замовчуванням}}.\n\n\n$2\n\n\n; Якщо Ви щойно встановили MediaWiki:\n: Ви, мабуть, зробили це з Git або безпосередньо з вихідного коду, використовуючи деякий інший спосіб. Тоді можливе наступне. Спробуйте встановити деякі теми з [https://www.mediawiki.org/wiki/Category:All_skins каталогу тем оформлення сайту mediawiki.org]:\n:* Завантаживши [https://www.mediawiki.org/wiki/Download архів файлів], який містить декілька тем оформлення й розширень. Ви можете скопіювати теку <code>skins/</code> з нього.\n:* Завантаживши архіви окремих тем оформлення з [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Використавши Git, щоб завантажити теми оформлення].\n: Це не повинно зашкодити вашому сховищу, якщо Ви MediaWiki-розробник.\n\n; Якщо Ви щойно оновили MediaWiki:\n: MediaWiki версії 1.24 й новіші більше не вмикають встановлені теми автоматично (див. [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Ви можете вставити {{PLURAL:$5|наступний рядок|наступні рядки}} в <code>LocalSettings.php</code>, щоб увімкнути {{PLURAL:$5|встановлену тему|всі встановлені теми}} оформлення: \n\n\n<pre dir=\"ltr\">$3</pre>\n\n\n; Якщо Ви щойно змінили <code>LocalSettings.php</code>:\n: Повторно перевірте назви тем на наявність помилок.",
        "default-skin-not-found-no-skins": "Ой! Тема оформлення для Вашої вікі за замовчуванням, визначена у <code>$wgDefaultSkin</code> як <code>$1</code> недоступна.\n\n\nУ Вас немає встановлених тем оформлення.\n\n\n; Якщо Ви щойно встановили або оновили MediaWiki:\n: Ви, мабуть, зробили це з Git або безпосередньо з вихідного коду, використовуючи інший спосіб. Тоді це можливо. MediaWiki версії 1.24 або новіша не містить теми оформлення в основному репозиторії. Спробуйте встановити деякі теми з [https://www.mediawiki.org/wiki/Category:All_skins каталогу тем оформлення сайту mediawiki.org]:\n:* Завантаживши [https://www.mediawiki.org/wiki/Download архів файлів], який містить декілька тем оформлення і розширень. Ви можете скопіювати теку <code>skins/</code> з нього.\n:* Завантаживши окремі архіви тем з [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Використавши Git, щоб завантажити теми оформлення].\n: Це не повинно зашкодити Вашому сховищу, якщо Ви MediaWiki-розробник. Див. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для отримання інформації про те, як включити теми оформлення і вибрати тему за замовчуванням.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (увімкнено)",
        "mw-widgets-titleinput-description-new-page": "сторінка ще не існує",
        "mw-widgets-titleinput-description-redirect": "перенаправлення на $1",
        "api-error-blacklisted": "Будь ласка, виберіть іншу, більш зрозумілу назву.",
+       "sessionmanager-tie": "Не можна поєднувати кілька типів автентифікації запиту: $1.",
+       "sessionprovider-generic": "сесій $1",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "сесій на основі кук",
+       "sessionprovider-nocookies": "Куки можуть бути відключені. Переконайтеся, що у Вас включені cookies і почніть знову.",
        "randomrootpage": "Випадкова коренева сторінка"
 }
index bff4cf9..c1b783d 100644 (file)
@@ -33,7 +33,8 @@
                        "Darcy Le",
                        "Quenhitran",
                        "Matma Rex",
-                       "Xð"
+                       "Xð",
+                       "Nguyên Lê"
                ]
        },
        "tog-underline": "Gạch chân liên kết:",
        "virus-scanfailed": "quét thất bại (mã $1)",
        "virus-unknownscanner": "không nhận ra phần mềm diệt virus:",
        "logouttext": "'''Bạn đã đăng xuất.'''\n\nXin lưu ý rằng một vài trang có thể vẫn hiển thị như khi bạn còn đăng nhập, cho đến khi bạn xóa vùng nhớ đệm (''cache'') của trình duyệt.",
+       "cannotlogoutnow-title": "Không thể đăng xuất lúc này",
+       "cannotlogoutnow-text": "Không thể đăng xuất khi đang dùng $1.",
        "welcomeuser": "Hoan nghênh, $1!",
        "welcomecreation-msg": "Tài khoản của bạn đã được mở.\nHãy nhớ thay đổi [[Special:Preferences|tùy chọn cá nhân {{SITENAME}}]] của bạn.",
        "yourname": "Tên người dùng:",
        "remembermypassword": "Nhớ thông tin đăng nhập của tôi trên máy tính này (cho đến $1 ngày)",
        "userlogin-remembermypassword": "Giữ trạng thái đăng nhập",
        "userlogin-signwithsecure": "Sử dụng kết nối an toàn",
+       "cannotloginnow-title": "Không thể đăng nhập lúc này",
+       "cannotloginnow-text": "Không thể đăng nhập khi đang dùng $1.",
        "yourdomainname": "Tên miền của bạn:",
        "password-change-forbidden": "Bạn không thể đổi mật khẩu trên wiki này.",
        "externaldberror": "Có lỗi khi xác nhận cơ sở dữ liệu bên ngoài hoặc bạn không được phép cập nhật tài khoản bên ngoài.",
        "resetpass_submit": "Chọn mật khẩu và đăng nhập",
        "changepassword-success": "Đã đổi mật khẩu thành công!",
        "changepassword-throttled": "Bạn đã thử đăng nhập gần đây nhiều lần quá. Xin chờ $1 trước khi bạn thử lần nữa.",
+       "botpasswords-label-appid": "Tên bot:",
+       "botpasswords-label-create": "Tạo",
+       "botpasswords-label-update": "Cập nhật",
+       "botpasswords-label-cancel": "Huỷ bỏ",
+       "botpasswords-label-delete": "Xoá",
        "resetpass_forbidden": "Không được đổi mật khẩu",
        "resetpass-no-info": "Bạn phải đăng nhập mới có thể truy cập trực tiếp trang này.",
        "resetpass-submit-loggedin": "Thay đổi mật khẩu",
        "upload-dialog-button-done": "Xong",
        "upload-dialog-button-save": "Lưu",
        "upload-dialog-button-upload": "Tải lên",
-       "upload-form-label-select-file": "Chọn tập tin",
        "upload-form-label-infoform-title": "Chi tiết",
        "upload-form-label-infoform-name": "Tên",
        "upload-form-label-infoform-description": "Miêu tả",
        "foreign-structured-upload-form-label-own-work-message-shared": "Tôi khẳng định rằng tôi giữ quyền tác giả của tập tin này và đồng ý phát hành, một cách không thể hủy bỏ, tập tin này cho Wikimedia Commons theo giấy phép [https://creativecommons.org/licenses/by-sa/4.0/deed.vi Creative Commons Ghi công–Chia sẻ tương tự 4.0], và tôi chấp nhận các [https://wikimediafoundation.org/wiki/Terms_of_Use/vi?uselang=vi Điều khoản Sử dụng].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Nếu bạn không giữ quyền tác giả của tập tin hoặc muốn phát hành nó theo một giấy phép khác, xin nghĩ đến việc sử dụng [https://commons.wikimedia.org/wiki/Special:UploadWizard?uselang=vi Trình thuật sĩ tải lên Commons].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Bạn cũng có thể muốn thử [[Special:Upload|trang tải lên tại {{SITENAME}}]] nếu trang đó cho phép tải lên tập tin này theo các quy định của họ.",
-       "foreign-structured-upload-form-2-label-intro": "Cảm ơn bạn đóng góp hình ảnh để sử dụng tại {{SITENAME}}. Hãy chỉ tiếp tục nếu hình này thỏa mãn vài điều khoản:",
-       "foreign-structured-upload-form-2-label-ownwork": "Nó phải hoàn toàn <strong>do bạn tạo ra</strong>, chứ không chỉ lấy từ Internet",
-       "foreign-structured-upload-form-2-label-noderiv": "Nó <strong>không được chứa tác phẩm của người khác</strong> hoặc phỏng theo tác phẩm của người khác",
-       "foreign-structured-upload-form-2-label-useful": "Nó phải <strong>có tính giáo dục và có ích</strong> trong việc chia sẻ kiến thức",
-       "foreign-structured-upload-form-2-label-ccbysa": "Nó phải <strong>được phép xuất bản mãi mãi</strong> trên Internet theo giấy phép [https://creativecommons.org/licenses/by-sa/4.0/deed.vi Creative Commons Ghi công–Chia sẻ tương tự 4.0]",
-       "foreign-structured-upload-form-2-label-alternative": "Nếu bạn đã trả lời “Không” bên trên, có thể là [https://commons.wikimedia.org/wiki/Special:UploadWizard?setlang=vi Trình thuật sĩ tải lên tại Commons] vẫn cho phép tải nó lên, miễn là nó được phát hành theo một giấy phép mở.",
-       "foreign-structured-upload-form-2-label-termsofuse": "Với việc tải lên tập tin này, bạn xác nhận rằng bạn giữ quyền tác giả của tập tin này và đồng ý phát hành tập tin này, một cách không thể hủy bỏ, dưới giấy phép Creative Commons Ghi công–Chia sẻ tương tự 4.0, và bạn chấp nhận [https://wikimediafoundation.org/wiki/Terms_of_Use/vi?uselang=vi các Điều khoản Sử dụng].",
-       "foreign-structured-upload-form-3-label-question-website": "Bạn có tải về hình này từ trang Web nào hoặc lấy nó từ máy tìm kiếm hình ảnh nào?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "Bạn có tự mình tạo hình này (chụp hình, vẽ bức ảnh, v.v.)?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "Nó có chứa hoặc phỏng theo tác phẩm nào do người khác sở hữu, chẳng hạn một biểu trưng?",
-       "foreign-structured-upload-form-3-label-yes": "Có",
-       "foreign-structured-upload-form-3-label-no": "Không",
-       "foreign-structured-upload-form-3-label-alternative": "Đáng tiếc, trong trường hợp này, công cụ này không hỗ trợ việc tải lên tập tin này. Có thể là [https://commons.wikimedia.org/wiki/Special:UploadWizard?setlang=vi Trình thuật sĩ tải lên tại Commons] vẫn cho phép tải nó lên, miễn là nó được phát hành theo một giấy phép mở.",
-       "foreign-structured-upload-form-4-label-good": "Với công cụ này, bạn có thể tải lên các trang minh học có tính giáo dục do bạn tạo ra và các hình ảnh do bạn chụp lấy, miễn là nó không chứa tác phẩm của người khác.",
-       "foreign-structured-upload-form-4-label-bad": "Bạn không được phép tải lên hình ảnh được lấy từ máy tìm kiếm hoặc tải về từ trang Web khác.",
        "backend-fail-stream": "Không thể gửi luồng tập tin $1.",
        "backend-fail-backup": "Không thể sao lưu tập tin $1.",
        "backend-fail-notexists": "Tập tin $1 không tồn tại.",
        "apisandbox-intro": "Trang này dùng để thử nghiệm với '''API dịch vụ Web của MediaWiki'''.\nHãy tra cứu [//www.mediawiki.org/wiki/API:Main_page tài liệu API] để biết chi tiết về cách sử dụng API. Ví dụ: [//www.mediawiki.org/wiki/API#A_simple_example lấy nội dung của Trang Chính]. Chọn một tác vụ để xem thêm ví dụ.\n\nLưu ý rằng, mặc dù đây là một chỗ thử, nhưng các tác vụ của bạn tại trang này có thể thực hiện các thay đổi trên wiki.",
        "apisandbox-submit": "Yêu cầu",
        "apisandbox-reset": "Tẩy trống",
-       "apisandbox-examples": "Ví dụ",
+       "apisandbox-examples": "Các ví dụ",
        "apisandbox-results": "Kết quả",
        "apisandbox-request-url-label": "URL của yêu cầu:",
        "apisandbox-request-time": "Thời gian xử lý: $1",
        "tooltip-t-recentchangeslinked": "Thay đổi gần đây của các trang liên kết đến đây",
        "tooltip-feed-rss": "Nguồn cấp RSS của trang này",
        "tooltip-feed-atom": "Nguồn cấp Atom của trang này",
-       "tooltip-t-contributions": "Xem đóng góp của người này",
+       "tooltip-t-contributions": "Danh sách đóng góp của {{GENDER:$1|người này}}",
        "tooltip-t-emailuser": "Gửi thư cho người này",
        "tooltip-t-info": "Thêm chi tiết về trang này",
        "tooltip-t-upload": "Tải hình ảnh hoặc tập tin lên",
index 104dbeb..10b3a58 100644 (file)
        "upload-dialog-button-done": "Tima na",
        "upload-dialog-button-save": "Igtipig",
        "upload-dialog-button-upload": "Upload",
-       "upload-form-label-select-file": "Pagpili hin file",
        "upload-form-label-infoform-title": "Mga detalye",
        "upload-form-label-infoform-name": "Ngaran",
        "upload-form-label-usage-title": "Paggamit",
        "foreign-structured-upload-form-label-own-work": "Buhat ko ini",
        "foreign-structured-upload-form-label-infoform-categories": "Mga kategorya",
        "foreign-structured-upload-form-label-infoform-date": "Petsa",
-       "foreign-structured-upload-form-2-label-intro": "Salamat hit pagdonar hin imahe nga gagamiton ha {{SITENAME}}. Dapat mo la igpadayon kun may ada ini hin pipira nga kondisyones:",
-       "foreign-structured-upload-form-2-label-ownwork": "Dapat an kabug-osan in  <strong>imo hinimo</strong>, diri la kinuha ha Internet",
-       "foreign-structured-upload-form-2-label-noderiv": "Dapat nagsusulod ini hin <strong>waray binuhat hit iba nga tawo</strong>, o inspirado tikang ha ira",
-       "foreign-structured-upload-form-2-label-useful": "Dapat ini <strong>educational nga mahihigamitan</strong> hit pagtudlo ha iba",
-       "foreign-structured-upload-form-2-label-ccbysa": "Dapat ini <strong>OK mahipatik hin kanunay</strong> ha Internet ha ilarom han [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0] nga lisensya",
-       "foreign-structured-upload-form-2-label-alternative": "Kun diri ngatanan nga aada ha igbaw tinuod, puydi ka la gihapon maka-upload hini nga file nga nagamit han[https://commons.wikimedia.org/wiki/Special:UploadWizard Commons Upload Wizard], basta la ini mapapailarom han free license.",
-       "foreign-structured-upload-form-3-label-yes": "Oo",
-       "foreign-structured-upload-form-3-label-no": "Diri",
        "backend-fail-notexists": "Waray ngada an paypay nga $1.",
        "backend-fail-delete": "Diri nakakapara han paypay nga \"$1\".",
        "backend-fail-alreadyexists": "May-ada na paypay nga \"$1\".",
index ac7f944..e8034ba 100644 (file)
@@ -44,7 +44,7 @@
        "tog-previewontop": "編寫框頭前顯示先望",
        "tog-previewonfirst": "頭垡編寫顯示先望",
        "tog-enotifwatchlistpages": "我關注表裏個頁要弗文件變脫到用電子信通知我",
-       "tog-enotifusertalkpages": "我用戶討論頁變脫到用電子信通知我",
+       "tog-enotifusertalkpages": "我个讨论页有改动个辰光发邮件畀我",
        "tog-enotifminoredits": "頁搭文件細編也用電子信通知我",
        "tog-enotifrevealaddr": "電子信通知單裏顯示我個電子信地址",
        "tog-shownumberswatching": "顯示關注人數",
@@ -60,7 +60,7 @@
        "tog-watchlisthidepatrolled": "關注表裏囥脫巡脫編",
        "tog-watchlisthidecategorization": "囥脱对页面个分类",
        "tog-ccmeonemails": "拿我发畀其他用户个电子邮件也发只副本畀我自家",
-       "tog-diffonly": "æ¯\94è¼\83å\85©ç\89\88å¼\97樣å\88°å¼\97顯示é \81å\85§容",
+       "tog-diffonly": "æ¯\94è¾\83两å\8fªä¿®è®¢ç\89\88æ\9c¬ä¸¤æ ·ä¸ªè¾°å\85\89å¼\97æ\98¾ç¤ºé¡µé\9d¢å\86\85容",
        "tog-showhiddencats": "顯示囥脫分類",
        "tog-norollbackdiff": "执行退回之后弗显示两样",
        "tog-useeditwarning": "離開編頁朆保存到提醒我",
        "october-date": "10月$1号",
        "november-date": "11月$1号",
        "december-date": "12月$1号",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|分类}}",
        "category_header": "“$1”分類裏個頁",
        "subcategories": "子分类",
        "viewyourtext": "你侬好望也好畀'''你侬编个'''复制到箇页:",
        "protectedinterface": "箇页为箇维基个软件提供界面文本,锁牢定防乱用。\n加改全部维基个译文,用[//translatewiki.net/ translatewiki.net],MediaWiki软件个本地化计划。",
        "editinginterface": "<strong>警告:</strong>侬来里编写个页面是畀软件用个界面文本。箇页变化会影响各许人个界面样子。",
-       "translateinterface": "要加入或着更改所有个wiki个翻译,请侬访问MediaWiki本地化项目个网站[//translatewiki.net/ translatewiki.net]。",
+       "translateinterface": "要添加或者更改所有wiki个翻译,请侬访问MediaWiki本地化项目个网站[//translatewiki.net/ translatewiki.net]。",
        "cascadeprotected": "箇只页面畀保护拉许,因为渠已嵌入到下底已经标注“级联保护”个{{PLURAL:$1|一只|多只}}畀保护页面:\n$2",
        "namespaceprotected": "侬无没编辑'''$1'''名字空间里向页面个权限。",
        "customcssprotected": "箇CSS页你呒处编,箇页有各许用户个私人设置。",
        "edit-no-change": "侬个编辑畀忽略,因为文本弗曾有改动。",
        "postedit-confirmation-created": "页面已创建。",
        "postedit-confirmation-restored": "页面已恢复。",
-       "postedit-confirmation-saved": "倷个编辑已经保存哉。",
+       "postedit-confirmation-saved": "倷个编辑已保存。",
        "edit-already-exists": "弗好创建新页面。\n已经有垃许。",
        "defaultmessagetext": "默认消息文本",
        "invalid-content-data": "无效内容数据",
        "wlshowlast": "显示上$1个钟头$2日天",
        "watchlist-hide": "囥脱",
        "wlshowhidemine": "我个编辑",
-       "watchlist-options": "监控列表选项",
+       "watchlist-options": "关注表选项",
        "watching": "监控……",
        "unwatching": "解除监控……",
        "created": "建立哉",
        "sp-contributions-blocklog": "查封记录",
        "sp-contributions-deleted": "删脱个用户贡献",
        "sp-contributions-talk": "讲张",
-       "sp-contributions-search": "寻贡献记录",
+       "sp-contributions-search": "寻贡献记录",
        "sp-contributions-username": "IP地址要勿用户名:",
        "sp-contributions-submit": "搜寻",
        "whatlinkshere": "有啥链到箇里",
        "allmessagesname": "名字",
        "allmessagesdefault": "默认文本",
        "allmessagescurrent": "当前文本",
-       "allmessagestext": "该个是MediaWiki名字空间里可用个系统消息列表。如果想MediaWiki个本地化贡献翻译,请访问[https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki本地化]搭[//translatewiki.net translatewiki.net]。",
+       "allmessagestext": "该个是MediaWiki名字空间里可用个系统消息列表。如果想MediaWiki个本地化贡献翻译,请访问[https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki本地化]搭[//translatewiki.net translatewiki.net]。",
        "allmessagesnotsupportedDB": "'''{{ns:special}}:Allmessages''' 呒处显示,因为 '''$wgUseDatabaseMessages''' 关勒浪。",
        "thumbnail-more": "放大",
        "filemissing": "文件寻弗着哉",
        "watchlistedit-raw-done": "侬个关注表已经更新。",
        "watchlistedit-raw-added": "$1个标题已经加进去哉:",
        "watchlistedit-raw-removed": "$1个标题已经拿脱哉:",
+       "watchlistedit-clear-title": "清空关注表",
        "watchlistedit-clear-legend": "清空关注表",
+       "watchlistedit-clear-explain": "所有标题会从侬个关注表里向拿脱",
        "watchlistedit-clear-submit": "清空关注表(永远!)",
        "watchlisttools-clear": "清空关注表",
        "watchlisttools-view": "望相关修改",
index 9df5f5e..e2373e0 100644 (file)
        "userrights-no-interwiki": "您并没有权限去编辑在其它wiki上的用户权限。",
        "userrights-nodatabase": "数据库$1不存在或并非为本地的。",
        "userrights-nologin": "您必须要以管理员帐户[[Special:UserLogin|登录]]之后才可以指定用户权限。",
-       "userrights-notallowed": "您没有权限添加或除用户权限。",
+       "userrights-notallowed": "您没有权限添加或除用户权限。",
        "userrights-changeable-col": "您可以更改的用户组",
        "userrights-unchangeable-col": "您不能更改的用户组",
        "userrights-conflict": "用户权限的更改存在冲突!请检查并确认您的更改。",
        "upload-dialog-button-done": "完成",
        "upload-dialog-button-save": "保存",
        "upload-dialog-button-upload": "上传",
-       "upload-form-label-select-file": "选择文件",
        "upload-form-label-infoform-title": "详情",
        "upload-form-label-infoform-name": "名称",
        "upload-form-label-infoform-name-tooltip": "用于文件的唯一描述性标题,它将用作文件名。您可以使用带空格的普通语言。不要包含文件扩展名。",
        "foreign-structured-upload-form-label-own-work-message-shared": "我证明我拥有此文件的版权,并不可撤销地同意采用[https://creativecommons.org/licenses/by-sa/4.0/ 知识共享 署名-相同方式共享 4.0]许可协议将此文件发布至维基共享资源,并且我同意[https://wikimediafoundation.org/wiki/Terms_of_Use 使用条款]。",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "如果您并不拥有此文件的版权,或者您希望将其以其他许可协议发布,请考虑使用[https://commons.wikimedia.org/wiki/Special:UploadWizard 共享资源的上传向导]。",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "如果网站允许依据他们的方针上传此文件的话,您也可以尝试使用[[Special:Upload|{{SITENAME}}上的上传页面]]。",
-       "foreign-structured-upload-form-2-label-intro": "感谢您贡献图片以用于{{SITENAME}}。您只应在其满足以下条件时贡献:",
-       "foreign-structured-upload-form-2-label-ownwork": "它必须完全<strong>由您创作</strong>,而不只是从Internet上获取",
-       "foreign-structured-upload-form-2-label-noderiv": "它不包含<strong>其他任何人</strong>的成果,或者来自他们的灵感",
-       "foreign-structured-upload-form-2-label-useful": "它应当有<strong>教育意义</strong>并对教育他人有用",
-       "foreign-structured-upload-form-2-label-ccbysa": "它必须<strong>允许</strong>依据[https://creativecommons.org/licenses/by-sa/4.0/ 知识共享 署名-相同方式共享4.0]许可协议在网络上再发布",
-       "foreign-structured-upload-form-2-label-alternative": "如果以上条件并不完全满足的话,您仍应当使用[https://commons.wikimedia.org/wiki/Special:UploadWizard 共享资源上传向导]上传此文件,只要它依据自由许可协议可用于该网站的话。",
-       "foreign-structured-upload-form-2-label-termsofuse": "通过上传文件,您证明您拥有此文件的著作权,并不可撤销地同意采用知识共享 署名-相同方式共享4.0许可协议将此文件发布至维基共享资源,并且您同意[https://wikimediafoundation.org/wiki/Terms_of_Use 使用条款]。",
-       "foreign-structured-upload-form-3-label-question-website": "您是否从一个网站下载,或通过图片搜索获得到的它?",
-       "foreign-structured-upload-form-3-label-question-ownwork": "您是自行创建的这幅图片么(例如拍摄照片,素描等)?",
-       "foreign-structured-upload-form-3-label-question-noderiv": "它是否包含别人的作品,或受别人作品启发,例如标志?",
-       "foreign-structured-upload-form-3-label-yes": "是",
-       "foreign-structured-upload-form-3-label-no": "否",
-       "foreign-structured-upload-form-3-label-alternative": "很遗憾,这种情况下,此工具不支持上传此文件。您仍应当使用[https://commons.wikimedia.org/wiki/Special:UploadWizard 共享资源上传向导]上传此文件,只要它依据自由许可协议可用于该网站的话。",
-       "foreign-structured-upload-form-4-label-good": "使用此工具,您可以上传您创建的教育性图片和您拍摄的照片,不能包含其他任何人的作品。",
-       "foreign-structured-upload-form-4-label-bad": "您不能上传来自搜索引擎或从其他网站上下载的图片。",
        "backend-fail-stream": "无法流传送文件$1。",
        "backend-fail-backup": "无法备份文件$1。",
        "backend-fail-notexists": "条目$1不存在。",
        "moveuserpage-warning": "'''警告:'''你将移动一个用户页面。请注意,只有该页面会被移动,该用户''不''会被更名。",
        "movecategorypage-warning": "<strong>警告:</strong>您将移动分类页面。请注意只有此页面将会移动,旧有分类的任何页面将<em>不会</em>同步移动。",
        "movenologintext": "您必须是一名登记用户并且[[Special:UserLogin|登录]]\n后才可移动一个页面。",
-       "movenotallowed": "没有权限移动页面。",
-       "movenotallowedfile": "没有权限移动文件。",
-       "cant-move-user-page": "没有权限移动用户页面(子页面除外)。",
-       "cant-move-to-user-page": "没有权限移动页面至用户页面(用户子页面除外)。",
+       "movenotallowed": "没有权限移动页面。",
+       "movenotallowedfile": "没有权限移动文件。",
+       "cant-move-user-page": "没有权限移动用户页面(子页面除外)。",
+       "cant-move-to-user-page": "没有权限移动页面至用户页面(用户子页面除外)。",
        "cant-move-category-page": "您没有权限移动分类页面。",
        "cant-move-to-category-page": "您没有权限移动页面至分类页面。",
        "newtitle": "新标题:",
index f2f92c9..077892e 100644 (file)
        "upload-dialog-button-done": "完成",
        "upload-dialog-button-save": "儲存",
        "upload-dialog-button-upload": "上傳",
-       "upload-form-label-select-file": "選擇檔案",
        "upload-form-label-infoform-title": "詳細資料",
        "upload-form-label-infoform-name": "名稱",
        "upload-form-label-infoform-name-tooltip": "具獨特描述性的檔案標題,將會用來做為檔名。 您可以使用您的語系及空白做為檔名,請勿包含檔案副檔名。",
        "foreign-structured-upload-form-label-own-work-message-shared": "我保証我擁有此檔案的版權,並且不反悔同意使用 [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0] 授權條款發佈此檔案到維基媒體共享資源,並且我同意 [https://wikimediafoundation.org/wiki/Terms_of_Use 使用條款]。",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "若您並未擁有此檔案的版權,或者您希望使用其他的授權條款發佈此檔案,請考慮使用[https://commons.wikimedia.org/wiki/Special:UploadWizard 通用上傳精靈]。",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "若該站的授權政策允許上傳此檔案,您可能會希望直接嘗試使用 [[Special:Upload|{{SITENAME}} 的上傳頁面]]。",
-       "foreign-structured-upload-form-2-label-intro": "感謝您貢獻影像給 {{SITENAME}},您應確認您的影像符合以下條件下繼續:",
-       "foreign-structured-upload-form-2-label-ownwork": "影像必須完全由<strong>您所創作</strong>,並非取自網際網路",
-       "foreign-structured-upload-form-2-label-noderiv": "影像並未包含<strong>他人的成果</strong>,或是來自他人的靈感",
-       "foreign-structured-upload-form-2-label-useful": "影像應具有<strong>教育意義</strong>並對教學他人有幫助",
-       "foreign-structured-upload-form-2-label-ccbysa": "影像必須採用 [https://creativecommons.org/licenses/by-sa/4.0/ 創用CC 姓名標示─相同方式分享 4.0] 授權條款,<strong>可以永久發布r</strong>於網際網路上",
-       "foreign-structured-upload-form-3-label-question-website": "您是否自其他網站下載此影像,或取自影像搜尋的結果?",
-       "foreign-structured-upload-form-3-label-yes": "是",
-       "foreign-structured-upload-form-3-label-no": "否",
        "backend-fail-stream": "無法傳輸檔案 \"$1\"。",
        "backend-fail-backup": "無法備份檔案 \"$1\"。",
        "backend-fail-notexists": "檔案 $1 不存在。",
index 9af9604..1306ae6 100644 (file)
@@ -138,7 +138,7 @@ class BackupDumper extends Maintenance {
                        require_once $file;
                }
                $register = array( $class, 'register' );
-               call_user_func_array( $register, array( &$this ) );
+               call_user_func_array( $register, array( $this ) );
        }
 
        function execute() {
index 574d5bd..1277e83 100644 (file)
@@ -90,7 +90,7 @@ class TitleCleanup extends TableCleanup {
        protected function moveIllegalPage( $row ) {
                $legal = 'A-Za-z0-9_/\\\\-';
                $legalized = preg_replace_callback( "!([^$legal])!",
-                       array( &$this, 'hexChar' ),
+                       array( $this, 'hexChar' ),
                        $row->page_title );
                if ( $legalized == '.' ) {
                        $legalized = '(dot)';
index eef535a..0f39513 100644 (file)
@@ -76,7 +76,7 @@ abstract class DumpIterator extends Maintenance {
                $importer = new WikiImporter( $source, $this->getConfig() );
 
                $importer->setRevisionCallback(
-                       array( &$this, 'handleRevision' ) );
+                       array( $this, 'handleRevision' ) );
 
                $this->from = $this->getOption( 'from', null );
                $this->count = 0;
index 8169ef5..12ccd0e 100644 (file)
@@ -426,10 +426,10 @@ TEXT
 
                xml_set_element_handler(
                        $parser,
-                       array( &$this, 'startElement' ),
-                       array( &$this, 'endElement' )
+                       array( $this, 'startElement' ),
+                       array( $this, 'endElement' )
                );
-               xml_set_character_data_handler( $parser, array( &$this, 'characterData' ) );
+               xml_set_character_data_handler( $parser, array( $this, 'characterData' ) );
 
                $offset = 0; // for context extraction on error reporting
                do {
index 1cf818e..9879b10 100644 (file)
@@ -82,12 +82,14 @@ class FindHooks extends Maintenance {
                        $IP . '/includes/deferred/',
                        $IP . '/includes/diff/',
                        $IP . '/includes/exception/',
+                       $IP . '/includes/export/',
                        $IP . '/includes/externalstore/',
                        $IP . '/includes/filebackend/',
                        $IP . '/includes/filerepo/',
                        $IP . '/includes/filerepo/file/',
                        $IP . '/includes/gallery/',
                        $IP . '/includes/htmlform/',
+                       $IP . '/includes/import/',
                        $IP . '/includes/installer/',
                        $IP . '/includes/interwiki/',
                        $IP . '/includes/jobqueue/',
@@ -102,11 +104,13 @@ class FindHooks extends Maintenance {
                        $IP . '/includes/resourceloader/',
                        $IP . '/includes/revisiondelete/',
                        $IP . '/includes/search/',
+                       $IP . '/includes/session/',
                        $IP . '/includes/site/',
                        $IP . '/includes/skins/',
                        $IP . '/includes/specialpage/',
                        $IP . '/includes/specials/',
                        $IP . '/includes/upload/',
+                       $IP . '/includes/user/',
                        $IP . '/includes/utils/',
                        $IP . '/languages/',
                        $IP . '/maintenance/',
index 7c452a6..3bf8b27 100644 (file)
@@ -297,13 +297,13 @@ TEXT
                                return false;
                        }
                }
-               $importer->setPageCallback( array( &$this, 'reportPage' ) );
+               $importer->setPageCallback( array( $this, 'reportPage' ) );
                $this->importCallback = $importer->setRevisionCallback(
-                       array( &$this, 'handleRevision' ) );
+                       array( $this, 'handleRevision' ) );
                $this->uploadCallback = $importer->setUploadCallback(
-                       array( &$this, 'handleUpload' ) );
+                       array( $this, 'handleUpload' ) );
                $this->logItemCallback = $importer->setLogItemCallback(
-                       array( &$this, 'handleLogItem' ) );
+                       array( $this, 'handleLogItem' ) );
                if ( $this->uploads ) {
                        $importer->setImportUploads( true );
                }
index 09b1b1c..33d6e50 100644 (file)
@@ -65,7 +65,7 @@ class DumpRenderer extends Maintenance {
                $importer = new WikiImporter( $source, $this->getConfig() );
 
                $importer->setRevisionCallback(
-                       array( &$this, 'handleRevision' ) );
+                       array( $this, 'handleRevision' ) );
 
                $importer->doImport();
 
index c0f6c7b..95e3ca7 100644 (file)
@@ -471,7 +471,7 @@ class CheckStorage {
                        $source,
                        ConfigFactory::getDefaultInstance()->makeConfig( 'main' )
                );
-               $importer->setRevisionCallback( array( &$this, 'importRevision' ) );
+               $importer->setRevisionCallback( array( $this, 'importRevision' ) );
                $importer->doImport();
        }
 
index 7c3bc74..b9dd3fa 100644 (file)
@@ -1182,15 +1182,19 @@ return array(
                'scripts' => array(
                        'resources/src/mediawiki/mediawiki.Upload.BookletLayout.js',
                ),
+               'styles' => array(
+                       'resources/src/mediawiki/mediawiki.Upload.BookletLayout.css',
+               ),
                'dependencies' => array(
                        'oojs-ui',
+                       'oojs-ui.styles.icons-content',
+                       'oojs-ui.styles.icons-editing-advanced',
                        'mediawiki.Title',
                        'mediawiki.user',
                        'mediawiki.Upload',
                        'mediawiki.jqueryMsg',
                ),
                'messages' => array(
-                       'upload-form-label-select-file',
                        'upload-form-label-infoform-title',
                        'upload-form-label-infoform-name',
                        'upload-form-label-infoform-name-tooltip',
@@ -1277,24 +1281,6 @@ return array(
                        'foreign-structured-upload-form-label-own-work-message-local',
                        'foreign-structured-upload-form-label-not-own-work-message-local',
                        'foreign-structured-upload-form-label-not-own-work-local-local',
-                       'foreign-structured-upload-form-2-label-intro',
-                       'foreign-structured-upload-form-2-label-ownwork',
-                       'foreign-structured-upload-form-2-label-noderiv',
-                       'foreign-structured-upload-form-2-label-useful',
-                       'foreign-structured-upload-form-2-label-ccbysa',
-                       'foreign-structured-upload-form-2-label-alternative',
-                       'foreign-structured-upload-form-2-label-termsofuse',
-                       'foreign-structured-upload-form-3-label-question-website',
-                       'foreign-structured-upload-form-3-label-question-ownwork',
-                       'foreign-structured-upload-form-3-label-question-noderiv',
-                       'foreign-structured-upload-form-3-label-yes',
-                       'foreign-structured-upload-form-3-label-no',
-                       'foreign-structured-upload-form-3-label-alternative',
-                       'foreign-structured-upload-form-4-label-good',
-                       'foreign-structured-upload-form-4-label-bad',
-               ),
-               'templates' => array(
-                       'guide.html' => 'resources/src/mediawiki/bookletlayout/option4/guide.html',
                ),
        ),
        'mediawiki.toc' => array(
index 851b1c7..d1b5111 100644 (file)
@@ -67,7 +67,7 @@ return call_user_func( function () {
                'dependencies' => array(
                        'es5-shim',
                        'oojs',
-                       'oojs-ui.styles',
+                       'oojs-ui-core.styles',
                        'mediawiki.language',
                ),
                'targets' => array( 'desktop', 'mobile' ),
index 4803a0a..77ecfcb 100644 (file)
@@ -127,11 +127,23 @@ pre, .mw-code {
 }
 
 /* Space between the columns for tocnumber and toctext */
-.tocnumber:after {
-       content: "";
+.tocnumber {
+       padding-left: 0;
        padding-right: 0.5em;
 }
 
+/* @noflip */
+.mw-content-ltr .tocnumber {
+       padding-left: 0;
+       padding-right: 0.5em;
+}
+
+/* @noflip */
+.mw-content-rtl .tocnumber {
+       padding-left: 0.5em;
+       padding-right: 0;
+}
+
 #footer {
        background: white;
        color: black;
index f6c407a..a550cbe 100644 (file)
@@ -55,7 +55,6 @@
 .transition(@value) {
        -webkit-transition: @value; // Safari 3.1-6.0, iOS 3.2-6.1, Android 2.1-4.3
        -moz-transition: @value; // Firefox 4-15
-       -o-transition: @value; // Opera 10.5-12.0
        transition: @value; // Chrome 26+, Firefox 16+, IE 10+, Safari 6.1+, Opera 12.1+, iOS 7+, Android 4.4+
 }
 
index c88d00d..e6f92a5 100644 (file)
@@ -96,11 +96,21 @@ table.toc td {
 }
 
 /* Space between the columns for tocnumber and toctext */
-/* Ignored by IE7 and lower */
-.tocnumber:after {
-       content: "";
-       display: inline-block;
-       width: 0.5em;
+.tocnumber {
+       padding-left: 0;
+       padding-right: 0.5em;
+}
+
+/* @noflip */
+.mw-content-ltr .tocnumber {
+       padding-left: 0;
+       padding-right: 0.5em;
+}
+
+/* @noflip */
+.mw-content-rtl .tocnumber {
+       padding-left: 0.5em;
+       padding-right: 0;
 }
 
 /* Warning */
diff --git a/resources/src/mediawiki/bookletlayout/option2/ccbysa.png b/resources/src/mediawiki/bookletlayout/option2/ccbysa.png
deleted file mode 100644 (file)
index b39ecb6..0000000
Binary files a/resources/src/mediawiki/bookletlayout/option2/ccbysa.png and /dev/null differ
diff --git a/resources/src/mediawiki/bookletlayout/option2/ccbysa.svg b/resources/src/mediawiki/bookletlayout/option2/ccbysa.svg
deleted file mode 100644 (file)
index 605af75..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-        viewBox="0 0 150 150" style="enable-background:new 0 0 150 150;" xml:space="preserve">
-<style type="text/css">
-       .st0{fill:#FFFFFF;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
-       .st1{fill-rule:evenodd;clip-rule:evenodd;}
-</style>
-<g>
-       <circle class="st0" cx="74.9" cy="75.1" r="58.1"/>
-       <g>
-               <path class="st1" d="M74.1,63.4c-4-7.3-10.8-10.2-18.7-10.2c-11.5,0-20.6,8.1-20.6,21.9c0,14,8.6,21.9,21,21.9
-                       c8,0,14.8-4.4,18.5-11l-8.8-4.5c-2,4.7-4.9,6.1-8.7,6.1c-6.5,0-9.5-5.4-9.5-12.5c0-7.1,2.5-12.5,9.5-12.5c1.9,0,5.6,1,7.8,5.7
-                       L74.1,63.4z"/>
-               <path class="st1" d="M114.8,63.4c-4-7.3-10.8-10.2-18.7-10.2c-11.5,0-20.6,8.1-20.6,21.9c0,14,8.6,21.9,21,21.9
-                       c8,0,14.8-4.4,18.5-11l-8.8-4.5c-2,4.7-4.9,6.1-8.7,6.1c-6.5,0-9.5-5.4-9.5-12.5c0-7.1,2.5-12.5,9.5-12.5c1.9,0,5.6,1,7.8,5.7
-                       L114.8,63.4z"/>
-       </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
diff --git a/resources/src/mediawiki/bookletlayout/option2/noderiv.png b/resources/src/mediawiki/bookletlayout/option2/noderiv.png
deleted file mode 100644 (file)
index afac81f..0000000
Binary files a/resources/src/mediawiki/bookletlayout/option2/noderiv.png and /dev/null differ
diff --git a/resources/src/mediawiki/bookletlayout/option2/noderiv.svg b/resources/src/mediawiki/bookletlayout/option2/noderiv.svg
deleted file mode 100644 (file)
index 96d8084..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-        viewBox="0 0 150 150" style="enable-background:new 0 0 150 150;" xml:space="preserve">
-<style type="text/css">
-       .st0{fill:#FFFFFF;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
-       .st1{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
-       .st2{stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
-</style>
-<g>
-       
-               <rect x="7.8" y="34.6" transform="matrix(0.2182 0.9759 -0.9759 0.2182 113.5065 3.8061)" class="st0" width="93.2" height="76.2"/>
-       <circle class="st1" cx="54.4" cy="72.7" r="26.1"/>
-</g>
-<g>
-       
-               <rect x="51.6" y="41.7" transform="matrix(-0.1524 0.9883 -0.9883 -0.1524 192.0548 -5.1264)" class="st0" width="93.2" height="76.2"/>
-       <circle class="st2" cx="98.2" cy="79.8" r="26.1"/>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
diff --git a/resources/src/mediawiki/bookletlayout/option2/ownwork.png b/resources/src/mediawiki/bookletlayout/option2/ownwork.png
deleted file mode 100644 (file)
index 69df378..0000000
Binary files a/resources/src/mediawiki/bookletlayout/option2/ownwork.png and /dev/null differ
diff --git a/resources/src/mediawiki/bookletlayout/option2/ownwork.svg b/resources/src/mediawiki/bookletlayout/option2/ownwork.svg
deleted file mode 100644 (file)
index dc660c8..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-        viewBox="0 0 150 150" style="enable-background:new 0 0 150 150;" xml:space="preserve">
-<style type="text/css">
-       .st0{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
-       .st1{stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
-</style>
-<polygon class="st0" points="6.3,43.3 38.4,43.3 46,34.4 78.4,34.4 85.5,42.6 142.6,42.6 142.6,115 6.3,115 "/>
-<g>
-       <circle class="st0" cx="63.3" cy="78.8" r="25.8"/>
-       <circle class="st1" cx="63.3" cy="78.8" r="16.2"/>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
diff --git a/resources/src/mediawiki/bookletlayout/option2/useful.png b/resources/src/mediawiki/bookletlayout/option2/useful.png
deleted file mode 100644 (file)
index d5b9429..0000000
Binary files a/resources/src/mediawiki/bookletlayout/option2/useful.png and /dev/null differ
diff --git a/resources/src/mediawiki/bookletlayout/option2/useful.svg b/resources/src/mediawiki/bookletlayout/option2/useful.svg
deleted file mode 100644 (file)
index 2af3f93..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-        viewBox="0 0 150 150" style="enable-background:new 0 0 150 150;" xml:space="preserve">
-<style type="text/css">
-       .st0{fill:#FFFFFF;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
-</style>
-<circle class="st0" cx="72.7" cy="62.5" r="47.1"/>
-<path d="M76,128.8c34.8,0,63.2-28.3,63.2-63.2c0-18.3-7.9-34.9-20.4-46.4l11.8-11.8L129.1,6l-11.8,11.8c0,0,0,0,0,0l-1.4,1.4
-       c13,11.2,21.3,27.8,21.3,46.4c0,33.7-27.4,61.2-61.2,61.2c-18.5,0-35.1-8.3-46.4-21.3l-0.4,0.4l0,0l-13,13l1.4,1.4l11.9-11.9
-       c10.9,11.9,26.4,19.6,43.6,20.4v15.7H49.7v2h48.9v-2H75.1v-15.7C75.4,128.8,75.7,128.8,76,128.8z"/>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
diff --git a/resources/src/mediawiki/bookletlayout/option4/camera.png b/resources/src/mediawiki/bookletlayout/option4/camera.png
deleted file mode 100644 (file)
index a48f9fb..0000000
Binary files a/resources/src/mediawiki/bookletlayout/option4/camera.png and /dev/null differ
diff --git a/resources/src/mediawiki/bookletlayout/option4/camera.svg b/resources/src/mediawiki/bookletlayout/option4/camera.svg
deleted file mode 100644 (file)
index b110396..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-        viewBox="0 0 264 162" height="162" width="264" style="enable-background:new 0 0 264 162;" xml:space="preserve">
-<style type="text/css">
-       .st0{fill:#00AF89;}
-       .st1{fill:#FFFFFF;}
-       .st2{fill:#FFFFFF;stroke:#E5E5E5;stroke-miterlimit:10;}
-       .st3{fill:#E5E5E5;}
-       .st4{fill:none;stroke:#E5E5E5;stroke-miterlimit:10;}
-       .st5{fill:#9B9A9A;}
-       .st6{fill:none;stroke:#E5E5E5;stroke-linejoin:round;stroke-miterlimit:10;}
-</style>
-<rect x="62.3" y="28.1" class="st0" width="137.6" height="105"/>
-<g>
-       <path class="st1" d="M73.1,57v64.4h45.3V78.5h25.3v42.9h45.3V57H73.1z M94.3,107.6H80.9V94.3h13.3V107.6z M94.3,91.9H80.9V78.5
-               h13.3V91.9z M109.9,107.6H96.6V94.3h13.3V107.6z M109.9,91.9H96.6V78.5h13.3V91.9z M164.3,107.6h-13.3V94.3h13.3V107.6z
-                M164.3,91.9h-13.3V78.5h13.3V91.9z M179.9,107.6h-13.3V94.3h13.3V107.6z M179.9,91.9h-13.3V78.5h13.3V91.9z"/>
-       <rect x="73.1" y="48.5" class="st1" width="116" height="5.7"/>
-       <rect x="73.1" y="39.9" class="st1" width="116" height="5.7"/>
-</g>
-<rect x="62.3" y="124" class="st1" width="137.6" height="1.7"/>
-<g>
-       <g>
-               <rect x="6.7" y="7.4" class="st2" width="35.3" height="12.7"/>
-               <rect x="42" y="11.1" class="st3" width="2.3" height="5.7"/>
-       </g>
-       <rect x="8.2" y="9.1" class="st3" width="5.2" height="9.2"/>
-       <rect x="14.5" y="9.1" class="st3" width="5.2" height="9.2"/>
-       <rect x="21" y="9.1" class="st3" width="5.2" height="9.2"/>
-</g>
-<circle class="st3" cx="252.7" cy="12.1" r="6.2"/>
-<rect x="239.3" y="9.1" class="st3" width="5.3" height="7.7"/>
-<rect x="233" y="9.1" class="st3" width="5.3" height="7.7"/>
-<rect x="214" y="143.3" class="st3" width="5.3" height="7.7"/>
-<rect x="207.6" y="143.3" class="st3" width="5.3" height="7.7"/>
-<rect x="50.4" y="143.3" class="st3" width="5.3" height="7.7"/>
-<rect x="39" y="143.3" class="st3" width="5.3" height="7.7"/>
-<line class="st4" x1="73.1" y1="148" x2="189.1" y2="148"/>
-<line class="st4" x1="132" y1="143.1" x2="132" y2="152.9"/>
-<line class="st4" x1="189.1" y1="144.3" x2="189.1" y2="151.7"/>
-<line class="st4" x1="73.1" y1="144.3" x2="73.1" y2="151.7"/>
-<line class="st4" x1="86" y1="145.5" x2="86" y2="150.5"/>
-<line class="st4" x1="100.7" y1="145.5" x2="100.7" y2="150.5"/>
-<line class="st4" x1="115.3" y1="145.5" x2="115.3" y2="150.5"/>
-<line class="st4" x1="145.8" y1="145.5" x2="145.8" y2="150.5"/>
-<line class="st4" x1="160.5" y1="145.5" x2="160.5" y2="150.5"/>
-<line class="st4" x1="175.2" y1="145.5" x2="175.2" y2="150.5"/>
-<g>
-       <rect x="113.8" y="154.1" class="st5" width="3.2" height="4.7"/>
-       <polygon class="st5" points="113.8,154.1 115.3,152.3 116.9,154.1        "/>
-</g>
-<g>
-       <g>
-               <polyline class="st6" points="34.3,147.1 31.5,147.1 34.3,144.3 31.5,147.1 34.3,147.1 31.5,149.9                 "/>
-       </g>
-       <polygon class="st3" points="33.9,149.5 32.1,151.7 30.3,149.5   "/>
-</g>
-<line class="st6" x1="48.9" y1="143.2" x2="45.9" y2="151.1"/>
-</svg>
diff --git a/resources/src/mediawiki/bookletlayout/option4/graphics.png b/resources/src/mediawiki/bookletlayout/option4/graphics.png
deleted file mode 100644 (file)
index 5613f88..0000000
Binary files a/resources/src/mediawiki/bookletlayout/option4/graphics.png and /dev/null differ
diff --git a/resources/src/mediawiki/bookletlayout/option4/graphics.svg b/resources/src/mediawiki/bookletlayout/option4/graphics.svg
deleted file mode 100644 (file)
index c32f79f..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-        viewBox="0 0 264 162" style="enable-background:new 0 0 264 162;" xml:space="preserve">
-<style type="text/css">
-       .st0{fill:none;stroke:#E5E5E5;stroke-miterlimit:10;}
-       .st1{fill:none;stroke:#9B9A9A;stroke-miterlimit:10;}
-       .st2{fill:#E5E5E5;}
-       .st3{fill:#9B9A9A;}
-       .st4{fill:#00AF89;}
-       .st5{fill:#FFFFFF;}
-       .st6{fill:none;stroke:#FFFFFF;stroke-width:5;stroke-miterlimit:10;}
-</style>
-<line class="st0" x1="2" y1="10.5" x2="262" y2="10.5"/>
-<line class="st0" x1="2" y1="24.8" x2="262" y2="24.8"/>
-<g>
-       <rect x="6.9" y="32.8" class="st1" width="9.3" height="9.3"/>
-       <rect x="16.2" y="32.8" class="st1" width="9.3" height="9.3"/>
-       <rect x="6.9" y="42.1" class="st1" width="9.3" height="9.3"/>
-       <rect x="16.2" y="42.1" class="st1" width="9.3" height="9.3"/>
-       <rect x="6.9" y="51.4" class="st1" width="9.3" height="9.3"/>
-       <rect x="16.2" y="51.4" class="st1" width="9.3" height="9.3"/>
-       <rect x="6.9" y="60.8" class="st1" width="9.3" height="9.3"/>
-       <rect x="16.2" y="60.8" class="st1" width="9.3" height="9.3"/>
-       <rect x="6.9" y="70.1" class="st1" width="9.3" height="9.3"/>
-       <rect x="16.2" y="70.1" class="st1" width="9.3" height="9.3"/>
-       <rect x="6.9" y="79.4" class="st1" width="9.3" height="9.3"/>
-       <rect x="16.2" y="79.4" class="st1" width="9.3" height="9.3"/>
-       <rect x="6.9" y="88.8" class="st1" width="9.3" height="9.3"/>
-       <rect x="16.2" y="88.8" class="st1" width="9.3" height="9.3"/>
-       <rect x="6.9" y="98.1" class="st1" width="9.3" height="9.3"/>
-       <rect x="16.2" y="98.1" class="st1" width="9.3" height="9.3"/>
-       <rect x="6.9" y="107.4" class="st1" width="9.3" height="9.3"/>
-       <rect x="16.2" y="107.4" class="st1" width="9.3" height="9.3"/>
-       <rect x="6.9" y="116.8" class="st1" width="9.3" height="9.3"/>
-       <rect x="16.2" y="116.8" class="st1" width="9.3" height="9.3"/>
-</g>
-<rect x="3.2" y="12.7" class="st2" width="9.3" height="9.3"/>
-<rect x="3.2" y="3.4" class="st2" width="4.7" height="4.7"/>
-<rect x="10.2" y="3.4" class="st2" width="4.7" height="4.7"/>
-<rect x="16.9" y="3.4" class="st2" width="4.7" height="4.7"/>
-<rect x="249.2" y="3.4" class="st2" width="4.7" height="4.7"/>
-<rect x="255.9" y="3.4" class="st2" width="4.7" height="4.7"/>
-<rect x="14.6" y="12.7" class="st2" width="9.3" height="9.3"/>
-<rect x="239.9" y="12.7" class="st2" width="9.3" height="9.3"/>
-<rect x="228.9" y="12.7" class="st2" width="9.3" height="9.3"/>
-<rect x="251.2" y="12.7" class="st2" width="9.3" height="9.3"/>
-<g>
-       <path class="st2" d="M73.5,13.7V21H26.6v-7.3H73.5 M74.5,12.7H25.6V22h48.9V12.7L74.5,12.7z"/>
-</g>
-<g>
-       <path class="st2" d="M117.8,13.7V21H76.9v-7.3H117.8 M118.8,12.7H75.9V22h42.9V12.7L118.8,12.7z"/>
-</g>
-<g>
-       <path class="st2" d="M162.5,13.7V21h-40.9v-7.3H162.5 M163.5,12.7h-42.9V22h42.9V12.7L163.5,12.7z"/>
-</g>
-<rect x="209.7" y="30.3" class="st2" width="50.9" height="32.3"/>
-<rect x="209.7" y="30.3" class="st3" width="50.9" height="5.7"/>
-<g>
-       <rect x="212.2" y="38.5" class="st3" width="6.2" height="6.2"/>
-       <rect x="239.9" y="38.5" class="st3" width="6.2" height="2.5"/>
-       <rect x="239.9" y="42.2" class="st3" width="6.2" height="2.5"/>
-       <g>
-               <path class="st3" d="M237.2,39.5v4.2H221v-4.2H237.2 M238.2,38.5H220v6.2h18.2V38.5L238.2,38.5z"/>
-       </g>
-</g>
-<g>
-       <rect x="212.2" y="46.5" class="st3" width="6.2" height="6.2"/>
-       <rect x="239.9" y="46.5" class="st3" width="6.2" height="2.5"/>
-       <rect x="239.9" y="50.2" class="st3" width="6.2" height="2.5"/>
-       <g>
-               <path class="st3" d="M237.2,47.5v4.2H221v-4.2H237.2 M238.2,46.5H220v6.2h18.2V46.5L238.2,46.5z"/>
-       </g>
-</g>
-<rect x="209.7" y="66.6" class="st2" width="50.9" height="32.3"/>
-<rect x="209.7" y="66.6" class="st3" width="50.9" height="5.7"/>
-<g>
-       <path class="st3" d="M257.2,75.8V80h-44.1v-4.2H257.2 M258.2,74.8h-46.1V81h46.1V74.8L258.2,74.8z"/>
-</g>
-<g>
-       <path class="st3" d="M257.2,81v4.2h-44.1V81H257.2 M258.2,80h-46.1v6.2h46.1V80L258.2,80z"/>
-</g>
-<g>
-       <path class="st3" d="M257.2,86.2v4.2h-44.1v-4.2H257.2 M258.2,85.2h-46.1v6.2h46.1V85.2L258.2,85.2z"/>
-</g>
-<g>
-       <path class="st3" d="M257.2,91.3v4.2h-44.1v-4.2H257.2 M258.2,90.3h-46.1v6.2h46.1V90.3L258.2,90.3z"/>
-</g>
-<ellipse class="st1" cx="218.3" cy="85.7" rx="0" ry="10.2"/>
-<rect x="69.5" y="47.5" class="st4" width="108" height="82.4"/>
-<circle class="st5" cx="123.5" cy="88.7" r="6.6"/>
-<circle class="st5" cx="116.9" cy="106.2" r="6.6"/>
-<circle class="st5" cx="154.5" cy="80.3" r="6.6"/>
-<circle class="st5" cx="93.1" cy="81.5" r="6.6"/>
-<circle class="st5" cx="141.7" cy="114.1" r="6.6"/>
-<circle class="st6" cx="123.5" cy="88.7" r="18.2"/>
-<circle class="st6" cx="123.5" cy="88.7" r="31.7"/>
-</svg>
diff --git a/resources/src/mediawiki/bookletlayout/option4/guide.html b/resources/src/mediawiki/bookletlayout/option4/guide.html
deleted file mode 100644 (file)
index c747851..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<div class="mw-foreignStructuredUpload-bookletLayout-guide">
-       <div class="mw-foreignStructuredUpload-bookletLayout-guide-text-wrapper-good">
-               <span></span>
-       </div>
-       <div class="mw-foreignStructuredUpload-bookletLayout-guide-text-wrapper-bad">
-               <span></span>
-       </div>
-       <div class="mw-foreignStructuredUpload-bookletLayout-guide-image mw-foreignStructuredUpload-bookletLayout-guide-image-camera"></div>
-       <div class="mw-foreignStructuredUpload-bookletLayout-guide-image mw-foreignStructuredUpload-bookletLayout-guide-image-graphics"></div>
-       <div class="mw-foreignStructuredUpload-bookletLayout-guide-image mw-foreignStructuredUpload-bookletLayout-guide-image-website"></div>
-       <div class="mw-foreignStructuredUpload-bookletLayout-guide-image mw-foreignStructuredUpload-bookletLayout-guide-image-search"></div>
-</div>
diff --git a/resources/src/mediawiki/bookletlayout/option4/search-ltr.png b/resources/src/mediawiki/bookletlayout/option4/search-ltr.png
deleted file mode 100644 (file)
index 26d6beb..0000000
Binary files a/resources/src/mediawiki/bookletlayout/option4/search-ltr.png and /dev/null differ
diff --git a/resources/src/mediawiki/bookletlayout/option4/search-ltr.svg b/resources/src/mediawiki/bookletlayout/option4/search-ltr.svg
deleted file mode 100644 (file)
index 67c4ef0..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-        viewBox="0 0 264 162" style="enable-background:new 0 0 264 162;" xml:space="preserve">
-<style type="text/css">
-       .st0{display:none;}
-       .st1{display:inline;}
-       .st2{fill:#FFFFFF;}
-       .st3{fill:#E5E5E5;}
-       .st4{opacity:0.5;fill:#E5E5E5;enable-background:new    ;}
-       .st5{fill:#E5E5E5;stroke:#E5E5E5;}
-       .st6{fill:#9B9B9B;}
-       .st7{fill:#4470B6;}
-       .st8{fill:#D0D1D1;}
-       .st9{fill:none;stroke:#E5E5E5;stroke-miterlimit:10;}
-       .st10{fill:none;stroke:#D02227;stroke-miterlimit:10;}
-       .st11{fill:#D02227;}
-</style>
-<g id="Layer_1" class="st0">
-       <g class="st1">
-               <path class="st2" d="M24.8,151.4l-11.5,10l-12.9-9.6V0.5h263v151.7l-9,6.7V42.5h-39v112.6l-4.4-3.7l-7.6,5.3V42.5h-155v110.8
-                       l-9.8,8L24.8,151.4z"/>
-               <path class="st3" d="M263,1v151l-8,6V42h-40v112l-3.3-2.8l-0.6-0.5l-0.6,0.4l-6.5,4.6V42H48v111.1l-9.3,7.7l-13.3-9.6l-0.6-0.5
-                       l-0.6,0.5l-10.9,9.5L1,151.5V1L263,1L263,1z M264,0H0v152l13.4,10l11.5-10l13.9,10l10.2-8.4V43h154v114.7l8.1-5.7l4.9,4.2V43h38
-                       v116.9l10-7.4V0L264,0z M203,43H49v110.6l2.1-1.6l12.6,10l13.8-10l14.2,10l13-10l13,10l13.8-10l12.1,10l13.4-10l14.2,10l13-10
-                       l13,10l5.8-4.3L203,43L203,43z"/>
-               <path class="st4" d="M254,43h-38v113.2l7.6,5.8l13.8-10l13.9,10l2.7-2.1V43z"/>
-               <path class="st5" d="M2,14.5h260"/>
-               <path class="st3" d="M232.5,5h26v6h-26V5z M208.5,5h22v6h-22V5z M142,6v4H50V6H142z M143,5H49v6h94V5z M184.5,5h22v6h-22V5z
-                        M161.5,5h13v6h-13V5z M176.5,5h6v6h-6V5z M153.5,5h6v6h-6V5z M9,5h32v6H9V5z M52,7h2v2h-2V7z M11,36c0-7.7,6.3-14,14-14
-                       s14,6.3,14,14s-6.3,14-14,14S11,43.7,11,36z M38,107V72H13v35H38z M38,59v-5H13v5H38z"/>
-       </g>
-       <g class="st1">
-               <path class="st6" d="M123.8,68H85.6v7.8h38.1L123.8,68L123.8,68z M180.5,103v-8.8h-50.8v8.8H180.5z M90.8,80.6H69.9v8.6h20.8V80.6
-                       z M189.3,88.4v-7.8h-37.7v7.8H189.3z M100.7,94.1H75v7.8h25.7V94.1z M175.2,68H129v7.8h46.2V68z"/>
-               <path class="st7" d="M94.7,80.6v9.2h51.6v-9.2L94.7,80.6z"/>
-       </g>
-       <g class="st1">
-               <path class="st2" d="M94,94h75v44H94V94z"/>
-               <path class="st7" d="M169,94h-31v44h31V94z M150.8,118.1l5.9,9.7l3.2-3l4.8,6.1l-21.1,0l6.2-12.8H150.8z"/>
-               <g transform="scale(-1 1)">
-                       <path class="st8" d="M-102,100h-18c-0.6,0-1,0.2-1,0.5l0,0c0,0.3,0.4,0.5,1,0.5h18c0.6,0,1-0.2,1-0.5l0,0
-                               C-101,100.2-101.4,100-102,100z"/>
-                       <path class="st8" d="M-102,104h-18c-0.6,0-1,0.2-1,0.5l0,0c0,0.3,0.4,0.5,1,0.5h18c0.6,0,1-0.2,1-0.5l0,0
-                               C-101,104.2-101.4,104-102,104z"/>
-                       <path class="st8" d="M-102,108h-18c-0.6,0-1,0.2-1,0.5l0,0c0,0.3,0.4,0.5,1,0.5h18c0.6,0,1-0.2,1-0.5l0,0
-                               C-101,108.2-101.4,108-102,108z"/>
-                       <path class="st8" d="M-102,112h-26c-0.6,0-1,0.2-1,0.5l0,0c0,0.3,0.4,0.5,1,0.5h26c0.6,0,1-0.2,1-0.5l0,0
-                               C-101,112.2-101.4,112-102,112z"/>
-                       <path class="st8" d="M-102,116h-26c-0.6,0-1,0.2-1,0.5l0,0c0,0.3,0.4,0.5,1,0.5h26c0.6,0,1-0.2,1-0.5l0,0
-                               C-101,116.2-101.4,116-102,116z"/>
-                       <path class="st8" d="M-102,120h-26c-0.6,0-1,0.2-1,0.5l0,0c0,0.3,0.4,0.5,1,0.5h26c0.6,0,1-0.2,1-0.5l0,0
-                               C-101,120.2-101.4,120-102,120z"/>
-                       <path class="st8" d="M-102,124h-26c-0.6,0-1,0.2-1,0.5l0,0c0,0.3,0.4,0.5,1,0.5h26c0.6,0,1-0.2,1-0.5l0,0
-                               C-101,124.2-101.4,124-102,124z"/>
-                       <path class="st8" d="M-102,128h-26c-0.6,0-1,0.2-1,0.5l0,0c0,0.3,0.4,0.5,1,0.5h26c0.6,0,1-0.2,1-0.5l0,0
-                               C-101,128.2-101.4,128-102,128z"/>
-               </g>
-       </g>
-</g>
-<g id="Layer_2">
-       <g>
-               <rect x="4.8" y="5.5" class="st2" width="93" height="5"/>
-               <path class="st3" d="M97.2,6v4h-92V6H97.2 M98.2,5h-94v6h94V5L98.2,5z"/>
-       </g>
-       <polygon class="st3" points="177.7,8 176.4,8 109.6,8 108.2,8 106,14 111.8,14 174.2,14 180,14    "/>
-       <polygon class="st3" points="256.5,8 255.2,8 188.3,8 187,8 184.7,14 190.6,14 252.9,14 258.8,14  "/>
-       <line class="st9" x1="2" y1="14.5" x2="262" y2="14.5"/>
-       <line class="st9" x1="2" y1="32.8" x2="262" y2="32.8"/>
-       <g>
-               <circle class="st10" cx="8.9" cy="22.6" r="3.6"/>
-               <line class="st10" x1="11.6" y1="25" x2="15" y2="28.5"/>
-       </g>
-       <rect x="20.9" y="19" class="st3" width="57.6" height="9.5"/>
-       <rect x="4.3" y="37" class="st3" width="69.2" height="32.7"/>
-       <rect x="4.3" y="72.5" class="st3" width="90.1" height="56.8"/>
-       <rect x="97" y="72.5" class="st11" width="106.5" height="56.8"/>
-       <rect x="206.3" y="72.5" class="st3" width="52.4" height="56.8"/>
-       <rect x="4.3" y="132.2" class="st3" width="36.5" height="25.3"/>
-       <rect x="43.7" y="132.2" class="st3" width="62.3" height="25.3"/>
-       <rect x="109.3" y="132.2" class="st3" width="18.1" height="25.3"/>
-       <rect x="169.1" y="132.2" class="st3" width="18.1" height="25.3"/>
-       <rect x="189.8" y="132.2" class="st3" width="18.1" height="25.3"/>
-       <rect x="210.6" y="132.2" class="st3" width="48.1" height="25.3"/>
-       <rect x="130" y="132.2" class="st3" width="36" height="25.3"/>
-       <rect x="115.2" y="37" class="st3" width="36.5" height="32.7"/>
-       <rect x="76.1" y="37" class="st3" width="36.5" height="32.7"/>
-       <rect x="154.6" y="37" class="st3" width="56" height="32.7"/>
-       <rect x="213.3" y="37" class="st3" width="45.4" height="32.7"/>
-       <path class="st2" d="M102.4,115.4l9.5-9.5l12.8,12.8l26.1-26.1l31.8,31.8h-80.3L102.4,115.4z"/>
-</g>
-</svg>
diff --git a/resources/src/mediawiki/bookletlayout/option4/search-rtl.png b/resources/src/mediawiki/bookletlayout/option4/search-rtl.png
deleted file mode 100644 (file)
index 3305928..0000000
Binary files a/resources/src/mediawiki/bookletlayout/option4/search-rtl.png and /dev/null differ
diff --git a/resources/src/mediawiki/bookletlayout/option4/search-rtl.svg b/resources/src/mediawiki/bookletlayout/option4/search-rtl.svg
deleted file mode 100644 (file)
index 17c54d2..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-        viewBox="0 0 264 162" style="enable-background:new 0 0 264 162;" xml:space="preserve">
-<style type="text/css">
-       .st0{fill:#FFFFFF;}
-       .st1{fill:#E5E5E5;}
-       .st2{fill:none;stroke:#E5E5E5;stroke-miterlimit:10;}
-       .st3{fill:none;stroke:#D02227;stroke-miterlimit:10;}
-       .st4{fill:#D02227;}
-</style>
-<g>
-       <rect x="166.2" y="5.5" class="st0" width="93" height="5"/>
-       <path class="st1" d="M258.8,6v4h-92V6H258.8 M259.8,5h-94v6h94V5L259.8,5z"/>
-</g>
-<polygon class="st1" points="86.3,8 87.6,8 154.4,8 155.8,8 158,14 152.2,14 89.8,14 84,14 "/>
-<polygon class="st1" points="7.5,8 8.8,8 75.7,8 77,8 79.3,14 73.4,14 11.1,14 5.2,14 "/>
-<line class="st2" x1="262" y1="14.5" x2="2" y2="14.5"/>
-<line class="st2" x1="262" y1="32.8" x2="2" y2="32.8"/>
-<g>
-       <circle class="st3" cx="255.1" cy="22.6" r="3.6"/>
-       <line class="st3" x1="252.4" y1="25" x2="249" y2="28.5"/>
-</g>
-<rect x="185.5" y="19" class="st1" width="57.6" height="9.5"/>
-<rect x="190.5" y="37" class="st1" width="69.2" height="32.7"/>
-<rect x="169.7" y="72.5" class="st1" width="90.1" height="56.8"/>
-<rect x="60.4" y="72.5" class="st4" width="106.5" height="56.8"/>
-<rect x="5.2" y="72.5" class="st1" width="52.4" height="56.8"/>
-<rect x="223.3" y="132.2" class="st1" width="36.5" height="25.3"/>
-<rect x="158" y="132.2" class="st1" width="62.3" height="25.3"/>
-<rect x="136.6" y="132.2" class="st1" width="18.1" height="25.3"/>
-<rect x="76.8" y="132.2" class="st1" width="18.1" height="25.3"/>
-<rect x="56.1" y="132.2" class="st1" width="18.1" height="25.3"/>
-<rect x="5.2" y="132.2" class="st1" width="48.1" height="25.3"/>
-<rect x="97.9" y="132.2" class="st1" width="36" height="25.3"/>
-<rect x="112.3" y="37" class="st1" width="36.5" height="32.7"/>
-<rect x="151.4" y="37" class="st1" width="36.5" height="32.7"/>
-<rect x="53.4" y="37" class="st1" width="56" height="32.7"/>
-<rect x="5.2" y="37" class="st1" width="45.4" height="32.7"/>
-<path class="st0" d="M161.7,124.3H81.4l31.8-31.8l26.1,26.1l12.8-12.8l9.5,9.5L161.7,124.3z"/>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
diff --git a/resources/src/mediawiki/bookletlayout/option4/website-ltr.png b/resources/src/mediawiki/bookletlayout/option4/website-ltr.png
deleted file mode 100644 (file)
index 7e00751..0000000
Binary files a/resources/src/mediawiki/bookletlayout/option4/website-ltr.png and /dev/null differ
diff --git a/resources/src/mediawiki/bookletlayout/option4/website-ltr.svg b/resources/src/mediawiki/bookletlayout/option4/website-ltr.svg
deleted file mode 100644 (file)
index ed07c61..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-        viewBox="0 0 264 162" style="enable-background:new 0 0 264 162;" xml:space="preserve">
-<style type="text/css">
-       .st0{fill:#FFFFFF;}
-       .st1{fill:#E5E5E5;}
-       .st2{fill:none;stroke:#E5E5E5;stroke-miterlimit:10;}
-       .st3{fill:#D02227;}
-       .st4{fill:#9B9A9A;}
-</style>
-<g>
-       <rect x="4.8" y="5.5" class="st0" width="93" height="5"/>
-       <path class="st1" d="M97.2,6v4h-92V6H97.2 M98.2,5h-94v6h94V5L98.2,5z"/>
-</g>
-<polygon class="st1" points="177.7,8 176.4,8 109.6,8 108.2,8 106,14 111.8,14 174.2,14 180,14 "/>
-<polygon class="st1" points="256.5,8 255.2,8 188.3,8 187,8 184.7,14 190.6,14 252.9,14 258.8,14 "/>
-<line class="st2" x1="2" y1="14.5" x2="262" y2="14.5"/>
-<rect x="44" y="48.4" class="st3" width="106.5" height="56.8"/>
-<path class="st0" d="M49.3,91.2l9.5-9.5l12.8,12.8l26.1-26.1l31.8,31.8H49.3L49.3,91.2z"/>
-<circle class="st1" cx="55" cy="32.3" r="11.9"/>
-<g>
-       <rect x="70.7" y="27.4" class="st4" width="76.2" height="7"/>
-       <rect x="70.7" y="35.5" class="st4" width="22.3" height="1.7"/>
-       <rect x="95" y="35.5" class="st4" width="28.2" height="1.7"/>
-</g>
-<rect x="44" y="107.8" class="st1" width="23.3" height="23.3"/>
-<rect x="70.7" y="107.8" class="st1" width="79.8" height="1.8"/>
-<rect x="70.7" y="114" class="st1" width="79.8" height="1.8"/>
-<rect x="70.7" y="120.2" class="st1" width="79.8" height="1.8"/>
-<rect x="70.7" y="126.4" class="st1" width="79.8" height="1.8"/>
-<rect x="44" y="134.4" class="st1" width="106.5" height="1.8"/>
-<rect x="44" y="140.6" class="st1" width="106.5" height="1.8"/>
-<rect x="44" y="146.8" class="st1" width="106.5" height="1.8"/>
-<rect x="44" y="153" class="st1" width="106.5" height="1.8"/>
-<g>
-       <rect x="155.7" y="37.2" class="st1" width="57.3" height="1.8"/>
-       <rect x="155.7" y="43.4" class="st1" width="57.3" height="1.8"/>
-       <rect x="155.7" y="49.6" class="st1" width="57.3" height="1.8"/>
-       <rect x="155.7" y="55.8" class="st1" width="57.3" height="1.8"/>
-       <rect x="155.7" y="27.4" class="st1" width="57.3" height="7"/>
-</g>
-<g>
-       <rect x="155.7" y="78.2" class="st1" width="57.3" height="1.8"/>
-       <rect x="155.7" y="84.4" class="st1" width="57.3" height="1.8"/>
-       <rect x="155.7" y="90.6" class="st1" width="57.3" height="1.8"/>
-       <rect x="155.7" y="96.8" class="st1" width="57.3" height="1.8"/>
-       <rect x="155.7" y="68.4" class="st1" width="57.3" height="7"/>
-</g>
-<g>
-       <rect x="155.7" y="116.7" class="st1" width="57.3" height="1.8"/>
-       <rect x="155.7" y="122.9" class="st1" width="57.3" height="1.8"/>
-       <rect x="155.7" y="129.1" class="st1" width="57.3" height="1.8"/>
-       <rect x="155.7" y="135.3" class="st1" width="57.3" height="1.8"/>
-       <rect x="155.7" y="106.9" class="st1" width="57.3" height="7"/>
-</g>
-</svg>
diff --git a/resources/src/mediawiki/bookletlayout/option4/website-rtl.png b/resources/src/mediawiki/bookletlayout/option4/website-rtl.png
deleted file mode 100644 (file)
index 83ba6d3..0000000
Binary files a/resources/src/mediawiki/bookletlayout/option4/website-rtl.png and /dev/null differ
diff --git a/resources/src/mediawiki/bookletlayout/option4/website-rtl.svg b/resources/src/mediawiki/bookletlayout/option4/website-rtl.svg
deleted file mode 100644 (file)
index dd8b0f0..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-        viewBox="0 0 264 162" style="enable-background:new 0 0 264 162;" xml:space="preserve">
-<style type="text/css">
-       .st0{fill:#FFFFFF;}
-       .st1{fill:#E5E5E5;}
-       .st2{fill:none;stroke:#E5E5E5;stroke-miterlimit:10;}
-       .st3{fill:#D02227;}
-       .st4{fill:#9B9A9A;}
-</style>
-<g>
-       <rect x="166.2" y="5.5" class="st0" width="93" height="5"/>
-       <path class="st1" d="M258.8,6v4h-92V6H258.8 M259.8,5h-94v6h94V5L259.8,5z"/>
-</g>
-<polygon class="st1" points="86.3,8 87.6,8 154.4,8 155.8,8 158,14 152.2,14 89.8,14 84,14 "/>
-<polygon class="st1" points="7.5,8 8.8,8 75.7,8 77,8 79.3,14 73.4,14 11.1,14 5.2,14 "/>
-<line class="st2" x1="262" y1="14.5" x2="2" y2="14.5"/>
-<rect x="113.5" y="48.4" class="st3" width="106.5" height="56.8"/>
-<path class="st0" d="M214.7,100.2h-80.3l31.8-31.8l26.1,26.1l12.8-12.8l9.5,9.5L214.7,100.2z"/>
-<circle class="st1" cx="209" cy="32.3" r="11.9"/>
-<g>
-       <rect x="117" y="27.4" class="st4" width="76.2" height="7"/>
-       <rect x="171" y="35.5" class="st4" width="22.3" height="1.7"/>
-       <rect x="140.8" y="35.5" class="st4" width="28.2" height="1.7"/>
-</g>
-<rect x="196.7" y="107.8" class="st1" width="23.3" height="23.3"/>
-<rect x="113.5" y="107.8" class="st1" width="79.8" height="1.8"/>
-<rect x="113.5" y="114" class="st1" width="79.8" height="1.8"/>
-<rect x="113.5" y="120.2" class="st1" width="79.8" height="1.8"/>
-<rect x="113.5" y="126.4" class="st1" width="79.8" height="1.8"/>
-<rect x="113.5" y="134.4" class="st1" width="106.5" height="1.8"/>
-<rect x="113.5" y="140.6" class="st1" width="106.5" height="1.8"/>
-<rect x="113.5" y="146.8" class="st1" width="106.5" height="1.8"/>
-<rect x="113.5" y="153" class="st1" width="106.5" height="1.8"/>
-<g>
-       <rect x="51" y="37.2" class="st1" width="57.3" height="1.8"/>
-       <rect x="51" y="43.4" class="st1" width="57.3" height="1.8"/>
-       <rect x="51" y="49.6" class="st1" width="57.3" height="1.8"/>
-       <rect x="51" y="55.8" class="st1" width="57.3" height="1.8"/>
-       <rect x="51" y="27.4" class="st1" width="57.3" height="7"/>
-</g>
-<g>
-       <rect x="51" y="78.2" class="st1" width="57.3" height="1.8"/>
-       <rect x="51" y="84.4" class="st1" width="57.3" height="1.8"/>
-       <rect x="51" y="90.6" class="st1" width="57.3" height="1.8"/>
-       <rect x="51" y="96.8" class="st1" width="57.3" height="1.8"/>
-       <rect x="51" y="68.4" class="st1" width="57.3" height="7"/>
-</g>
-<g>
-       <rect x="51" y="116.7" class="st1" width="57.3" height="1.8"/>
-       <rect x="51" y="122.9" class="st1" width="57.3" height="1.8"/>
-       <rect x="51" y="129.1" class="st1" width="57.3" height="1.8"/>
-       <rect x="51" y="135.3" class="st1" width="57.3" height="1.8"/>
-       <rect x="51" y="106.9" class="st1" width="57.3" height="7"/>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
index 97d81fb..23e80b9 100644 (file)
         * @inheritdoc
         */
        mw.ForeignStructuredUpload.BookletLayout.prototype.renderUploadForm = function () {
-               var
-                       query = /[?&]uploadbucket=(\d)/.exec( location.search ),
-                       isTestEnabled = !!mw.config.get( 'wgForeignUploadTestEnabled' ),
-                       defaultBucket = mw.config.get( 'wgForeignUploadTestDefault' ) || 1,
-                       userId = mw.config.get( 'wgUserId' );
-
-               if ( query && query[ 1 ] ) {
-                       // Testing and debugging
-                       this.shouldRecordBucket = false;
-                       this.bucket = Number( query[ 1 ] );
-               } else if ( !userId || !isTestEnabled ) {
-                       // a) Anonymous user. This can actually happen, because our software sucks.
-                       // b) Test is not enabled on this wiki.
-                       // In either case, display the old interface and don't record bucket on uploads.
-                       this.shouldRecordBucket = false;
-                       this.bucket = defaultBucket;
-               } else {
-                       // Regular logged in user on a wiki where the test is running
-                       this.shouldRecordBucket = true;
-                       this.bucket = ( userId % 4 ) + 1; // 1, 2, 3, 4
-               }
-
-               return this[ 'renderUploadForm' + this.bucket ]();
-       };
-
-       /**
-        * Test option 1, the original one. See T120867.
-        */
-       mw.ForeignStructuredUpload.BookletLayout.prototype.renderUploadForm1 = function () {
                var fieldset, $ownWorkMessage, $notOwnWorkMessage,
-                       onUploadFormChange,
                        ownWorkMessage, notOwnWorkMessage, notOwnWorkLocal,
                        validTargets = mw.config.get( 'wgForeignUploadTargets' ),
                        target = this.target || validTargets[ 0 ] || 'local',
                        layout = this;
 
-               // Temporary override to make my life easier during A/B test
-               target = 'shared';
-
                // foreign-structured-upload-form-label-own-work-message-local
                // foreign-structured-upload-form-label-own-work-message-shared
                ownWorkMessage = mw.message( 'foreign-structured-upload-form-label-own-work-message-' + target );
                        $( '<p>' ).append( notOwnWorkMessage.parseDom() ),
                        $( '<p>' ).append( notOwnWorkLocal.parseDom() )
                );
-               $ownWorkMessage.add( $notOwnWorkMessage ).find( 'a' )
-                       .attr( 'target', '_blank' )
-                       .on( 'click', function ( e ) {
-                               // Some stupid code is trying to prevent default on all clicks, which causes the links to
-                               // not be openable, don't let it
-                               e.stopPropagation();
-                       } );
+               $ownWorkMessage.add( $notOwnWorkMessage ).find( 'a' ).attr( 'target', '_blank' );
 
-               this.selectFileWidget = new OO.ui.SelectFileWidget();
+               this.selectFileWidget = new OO.ui.SelectFileWidget( {
+                       showDropTarget: true
+               } );
                this.messageLabel = new OO.ui.LabelWidget( {
                        label: $notOwnWorkMessage
                } );
                fieldset = new OO.ui.FieldsetLayout();
                fieldset.addItems( [
                        new OO.ui.FieldLayout( this.selectFileWidget, {
-                               align: 'top',
-                               label: mw.msg( 'upload-form-label-select-file' )
+                               align: 'top'
                        } ),
                        new OO.ui.FieldLayout( this.ownWorkCheckbox, {
                                align: 'inline',
                ] );
                this.uploadForm = new OO.ui.FormLayout( { items: [ fieldset ] } );
 
-               onUploadFormChange = function () {
-                       var file = this.selectFileWidget.getValue(),
-                               ownWork = this.ownWorkCheckbox.isSelected(),
-                               valid = !!file && ownWork;
-                       this.emit( 'uploadValid', valid );
-               };
-
                // Validation
-               this.selectFileWidget.on( 'change', onUploadFormChange.bind( this ) );
-               this.ownWorkCheckbox.on( 'change', onUploadFormChange.bind( this ) );
+               this.selectFileWidget.on( 'change', this.onUploadFormChange.bind( this ) );
+               this.ownWorkCheckbox.on( 'change', this.onUploadFormChange.bind( this ) );
 
                this.selectFileWidget.on( 'change', function () {
                        var file = layout.getFile();
                        layout.getDateFromExif( file ).done( function ( date ) {
                                layout.dateWidget.setValue( date );
                        } );
-               } );
-
-               return this.uploadForm;
-       };
-
-       /**
-        * Test option 2, idea A from T121021. See T120867.
-        */
-       mw.ForeignStructuredUpload.BookletLayout.prototype.renderUploadForm2 = function () {
-               var fieldset, checkboxes, fields, onUploadFormChange;
-
-               this.selectFileWidget = new OO.ui.SelectFileWidget();
-               this.licenseCheckboxes = checkboxes = [
-                       new OO.ui.CheckboxInputWidget(),
-                       new OO.ui.CheckboxInputWidget(),
-                       new OO.ui.CheckboxInputWidget(),
-                       new OO.ui.CheckboxInputWidget()
-               ];
-
-               fields = [
-                       new OO.ui.FieldLayout( this.selectFileWidget, {
-                               align: 'top',
-                               label: mw.msg( 'upload-form-label-select-file' )
-                       } ),
-                       new OO.ui.FieldLayout( new OO.ui.LabelWidget( {
-                               label: mw.message( 'foreign-structured-upload-form-2-label-intro' ).parseDom()
-                       } ), {
-                               align: 'top'
-                       } ),
-                       new OO.ui.FieldLayout( checkboxes[ 0 ], {
-                               align: 'inline',
-                               classes: [
-                                       'mw-foreignStructuredUpload-bookletLayout-withicon',
-                                       'mw-foreignStructuredUpload-bookletLayout-ownwork'
-                               ],
-                               label: mw.message( 'foreign-structured-upload-form-2-label-ownwork' ).parseDom()
-                       } ),
-                       new OO.ui.FieldLayout( checkboxes[ 1 ], {
-                               align: 'inline',
-                               classes: [
-                                       'mw-foreignStructuredUpload-bookletLayout-withicon',
-                                       'mw-foreignStructuredUpload-bookletLayout-noderiv'
-                               ],
-                               label: mw.message( 'foreign-structured-upload-form-2-label-noderiv' ).parseDom()
-                       } ),
-                       new OO.ui.FieldLayout( checkboxes[ 2 ], {
-                               align: 'inline',
-                               classes: [
-                                       'mw-foreignStructuredUpload-bookletLayout-withicon',
-                                       'mw-foreignStructuredUpload-bookletLayout-useful'
-                               ],
-                               label: mw.message( 'foreign-structured-upload-form-2-label-useful' ).parseDom()
-                       } ),
-                       new OO.ui.FieldLayout( checkboxes[ 3 ], {
-                               align: 'inline',
-                               classes: [
-                                       'mw-foreignStructuredUpload-bookletLayout-withicon',
-                                       'mw-foreignStructuredUpload-bookletLayout-ccbysa'
-                               ],
-                               label: mw.message( 'foreign-structured-upload-form-2-label-ccbysa' ).parseDom()
-                       } ),
-                       new OO.ui.FieldLayout( new OO.ui.LabelWidget( {
-                               label: $()
-                                       .add( $( '<p>' ).msg( 'foreign-structured-upload-form-2-label-alternative' ) )
-                                       .add( $( '<p>' ).msg( 'foreign-structured-upload-form-2-label-termsofuse' )
-                                               .addClass( 'mw-foreignStructuredUpload-bookletLayout-license' ) )
-                       } ), {
-                               align: 'top'
-                       } )
-               ];
-
-               fieldset = new OO.ui.FieldsetLayout( { items: fields } );
-               this.uploadForm = new OO.ui.FormLayout( { items: [ fieldset ] } );
-
-               this.uploadForm.$element.find( 'a' )
-                       .attr( 'target', '_blank' )
-                       .on( 'click', function ( e ) {
-                               // Some stupid code is trying to prevent default on all clicks, which causes the links to
-                               // not be openable, don't let it
-                               e.stopPropagation();
-                       } );
-
-               onUploadFormChange = function () {
-                       var file = this.selectFileWidget.getValue(),
-                               checks = checkboxes.every( function ( checkbox ) {
-                                       return checkbox.isSelected();
-                               } ),
-                               valid = !!file && checks;
-                       this.emit( 'uploadValid', valid );
-               };
-
-               // Validation
-               this.selectFileWidget.on( 'change', onUploadFormChange.bind( this ) );
-               checkboxes[ 0 ].on( 'change', onUploadFormChange.bind( this ) );
-               checkboxes[ 1 ].on( 'change', onUploadFormChange.bind( this ) );
-               checkboxes[ 2 ].on( 'change', onUploadFormChange.bind( this ) );
-               checkboxes[ 3 ].on( 'change', onUploadFormChange.bind( this ) );
-
-               return this.uploadForm;
-       };
-
-       /**
-        * Test option 3, idea D from T121021. See T120867.
-        */
-       mw.ForeignStructuredUpload.BookletLayout.prototype.renderUploadForm3 = function () {
-               var ownWorkCheckbox, fieldset, yesMsg, noMsg, selects, selectFields,
-                       alternativeField, fields, onUploadFormChange;
-
-               this.selectFileWidget = new OO.ui.SelectFileWidget();
-               this.ownWorkCheckbox = ownWorkCheckbox = new OO.ui.CheckboxInputWidget();
-
-               yesMsg = mw.message( 'foreign-structured-upload-form-3-label-yes' ).text();
-               noMsg = mw.message( 'foreign-structured-upload-form-3-label-no' ).text();
-               selects = [
-                       new OO.ui.RadioSelectWidget( {
-                               items: [
-                                       new OO.ui.RadioOptionWidget( { data: false, label: yesMsg } ),
-                                       new OO.ui.RadioOptionWidget( { data: true, label: noMsg } )
-                               ]
-                       } ),
-                       new OO.ui.RadioSelectWidget( {
-                               items: [
-                                       new OO.ui.RadioOptionWidget( { data: true, label: yesMsg } ),
-                                       new OO.ui.RadioOptionWidget( { data: false, label: noMsg } )
-                               ]
-                       } ),
-                       new OO.ui.RadioSelectWidget( {
-                               items: [
-                                       new OO.ui.RadioOptionWidget( { data: false, label: yesMsg } ),
-                                       new OO.ui.RadioOptionWidget( { data: true, label: noMsg } )
-                               ]
-                       } )
-               ];
 
-               this.licenseSelectFields = selectFields = [
-                       new OO.ui.FieldLayout( selects[ 0 ], {
-                               align: 'top',
-                               classes: [ 'mw-foreignStructuredUpload-bookletLayout-question' ],
-                               label: mw.message( 'foreign-structured-upload-form-3-label-question-website' ).parseDom()
-                       } ),
-                       new OO.ui.FieldLayout( selects[ 1 ], {
-                               align: 'top',
-                               classes: [ 'mw-foreignStructuredUpload-bookletLayout-question' ],
-                               label: mw.message( 'foreign-structured-upload-form-3-label-question-ownwork' ).parseDom()
-                       } ).toggle( false ),
-                       new OO.ui.FieldLayout( selects[ 2 ], {
-                               align: 'top',
-                               classes: [ 'mw-foreignStructuredUpload-bookletLayout-question' ],
-                               label: mw.message( 'foreign-structured-upload-form-3-label-question-noderiv' ).parseDom()
-                       } ).toggle( false )
-               ];
-
-               alternativeField = new OO.ui.FieldLayout( new OO.ui.LabelWidget( {
-                       label: mw.message( 'foreign-structured-upload-form-3-label-alternative' ).parseDom()
-               } ), {
-                       align: 'top'
-               } ).toggle( false );
-
-               // Choosing the right answer to each question shows the next question.
-               // Switching to wrong answer hides all subsequent questions.
-               selects.forEach( function ( select, i ) {
-                       select.on( 'choose', function ( selectedOption ) {
-                               var isRightAnswer = !!selectedOption.getData();
-                               alternativeField.toggle( !isRightAnswer );
-                               if ( i + 1 === selectFields.length ) {
-                                       // Last question
-                                       return;
-                               }
-                               if ( isRightAnswer ) {
-                                       selectFields[ i + 1 ].toggle( true );
-                               } else {
-                                       selectFields.slice( i + 1 ).forEach( function ( field ) {
-                                               field.fieldWidget.selectItem( null );
-                                               field.toggle( false );
-                                       } );
-                               }
-                       } );
+                       layout.updateFilePreview();
                } );
 
-               fields = [
-                       new OO.ui.FieldLayout( this.selectFileWidget, {
-                               align: 'top',
-                               label: mw.msg( 'upload-form-label-select-file' )
-                       } ),
-                       selectFields[ 0 ],
-                       selectFields[ 1 ],
-                       selectFields[ 2 ],
-                       alternativeField,
-                       new OO.ui.FieldLayout( ownWorkCheckbox, {
-                               classes: [ 'mw-foreignStructuredUpload-bookletLayout-checkbox' ],
-                               align: 'inline',
-                               label: mw.message( 'foreign-structured-upload-form-label-own-work-message-shared' ).parseDom()
-                       } )
-               ];
-
-               // Must be done late, after it's been associated with the FieldLayout
-               ownWorkCheckbox.setDisabled( true );
-
-               fieldset = new OO.ui.FieldsetLayout( { items: fields } );
-               this.uploadForm = new OO.ui.FormLayout( { items: [ fieldset ] } );
-
-               this.uploadForm.$element.find( 'a' )
-                       .attr( 'target', '_blank' )
-                       .on( 'click', function ( e ) {
-                               // Some stupid code is trying to prevent default on all clicks, which causes the links to
-                               // not be openable, don't let it
-                               e.stopPropagation();
-                       } );
-
-               onUploadFormChange = function () {
-                       var file = this.selectFileWidget.getValue(),
-                               checkbox = ownWorkCheckbox.isSelected(),
-                               rightAnswers = selects.every( function ( select ) {
-                                       return select.getSelectedItem() && !!select.getSelectedItem().getData();
-                               } ),
-                               valid = !!file && checkbox && rightAnswers;
-                       ownWorkCheckbox.setDisabled( !rightAnswers );
-                       if ( !rightAnswers ) {
-                               ownWorkCheckbox.setSelected( false );
-                       }
-                       this.emit( 'uploadValid', valid );
-               };
-
-               // Validation
-               this.selectFileWidget.on( 'change', onUploadFormChange.bind( this ) );
-               this.ownWorkCheckbox.on( 'change', onUploadFormChange.bind( this ) );
-               selects[ 0 ].on( 'choose', onUploadFormChange.bind( this ) );
-               selects[ 1 ].on( 'choose', onUploadFormChange.bind( this ) );
-               selects[ 2 ].on( 'choose', onUploadFormChange.bind( this ) );
-
-               return this.uploadForm;
-       };
-
-       /**
-        * Test option 4, idea E from T121021. See T120867.
-        */
-       mw.ForeignStructuredUpload.BookletLayout.prototype.renderUploadForm4 = function () {
-               var fieldset, $guide;
-               this.renderUploadForm1();
-               fieldset = this.uploadForm.getItems()[ 0 ];
-
-               $guide = mw.template.get( 'mediawiki.ForeignStructuredUpload.BookletLayout', 'guide.html' ).render();
-               $guide.find( '.mw-foreignStructuredUpload-bookletLayout-guide-text-wrapper-good span' )
-                       .msg( 'foreign-structured-upload-form-4-label-good' );
-               $guide.find( '.mw-foreignStructuredUpload-bookletLayout-guide-text-wrapper-bad span' )
-                       .msg( 'foreign-structured-upload-form-4-label-bad' );
-
-               // Note the index, we insert after the SelectFileWidget field
-               fieldset.addItems( [
-                       new OO.ui.FieldLayout( new OO.ui.Widget( {
-                               $content: $guide
-                       } ), {
-                               align: 'top'
-                       } )
-               ], 1 );
-
-               // Hook for custom styles
-               fieldset.getItems()[ 2 ].$element.addClass( 'mw-foreignStructuredUpload-bookletLayout-guide-checkbox' );
-
-               // Streamline: remove mention of local Special:Upload
-               fieldset.getItems()[ 3 ].$element.find( 'p' ).last().remove();
-
                return this.uploadForm;
        };
 
        /**
         * @inheritdoc
         */
-       mw.ForeignStructuredUpload.BookletLayout.prototype.onUploadFormChange = function () {};
+       mw.ForeignStructuredUpload.BookletLayout.prototype.onUploadFormChange = function () {
+               var file = this.selectFileWidget.getValue(),
+                       ownWork = this.ownWorkCheckbox.isSelected(),
+                       valid = !!file && ownWork;
+               this.emit( 'uploadValid', valid );
+       };
 
        /**
         * @inheritdoc
        mw.ForeignStructuredUpload.BookletLayout.prototype.renderInfoForm = function () {
                var fieldset;
 
+               this.filePreview = new OO.ui.Widget( {
+                       classes: [ 'mw-upload-bookletLayout-filePreview' ]
+               } );
                this.filenameWidget = new OO.ui.TextInputWidget( {
                        required: true,
                        validate: /.+/
                        new OO.ui.FieldLayout( this.filenameWidget, {
                                label: mw.msg( 'upload-form-label-infoform-name' ),
                                align: 'top',
-                               help: mw.msg( 'upload-form-label-infoform-name-tooltip' )
+                               classes: [ 'mw-foreignStructuredUploa-bookletLayout-small-notice' ],
+                               notices: [ mw.msg( 'upload-form-label-infoform-name-tooltip' ) ]
                        } ),
                        new OO.ui.FieldLayout( this.descriptionWidget, {
                                label: mw.msg( 'upload-form-label-infoform-description' ),
                                align: 'top',
-                               help: mw.msg( 'upload-form-label-infoform-description-tooltip' )
+                               classes: [ 'mw-foreignStructuredUploa-bookletLayout-small-notice' ],
+                               notices: [ mw.msg( 'upload-form-label-infoform-description-tooltip' ) ]
                        } ),
                        new OO.ui.FieldLayout( this.categoriesWidget, {
                                label: mw.msg( 'foreign-structured-upload-form-label-infoform-categories' ),
                                align: 'top'
                        } )
                ] );
-               this.infoForm = new OO.ui.FormLayout( { items: [ fieldset ] } );
+               this.infoForm = new OO.ui.FormLayout( {
+                       classes: [ 'mw-upload-bookletLayout-infoForm' ],
+                       items: [ this.filePreview, fieldset ]
+               } );
 
                // Validation
                this.filenameWidget.on( 'change', this.onInfoFormChange.bind( this ) );
        mw.ForeignStructuredUpload.BookletLayout.prototype.clear = function () {
                mw.ForeignStructuredUpload.BookletLayout.parent.prototype.clear.call( this );
 
-               if ( this.ownWorkCheckbox ) {
-                       this.ownWorkCheckbox.setSelected( false );
-               }
-               if ( this.licenseCheckboxes ) {
-                       this.licenseCheckboxes.forEach( function ( checkbox ) {
-                               checkbox.setSelected( false );
-                       } );
-               }
-               if ( this.licenseSelectFields ) {
-                       this.licenseSelectFields.forEach( function ( field, i ) {
-                               field.fieldWidget.selectItem( null );
-                               if ( i !== 0 ) {
-                                       field.toggle( false );
-                               }
-                       } );
-               }
-
+               this.ownWorkCheckbox.setSelected( false );
                this.categoriesWidget.setItemsFromData( [] );
                this.dateWidget.setValue( '' ).setValidityFlag( true );
        };
index fa15a2e..0021caf 100644 (file)
-@import "mediawiki.mixins";
-
-/* All */
-
 .mw-foreignStructuredUpload-bookletLayout-license {
        font-size: 90%;
        line-height: 1.4em;
        color: #555;
 }
 
-/* Option 2 */
-
-.mw-foreignStructuredUpload-bookletLayout-withicon.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline {
-       background-repeat: no-repeat;
-       background-size: 3.5em;
-       min-height: 4em;
-       margin-bottom: 0.25em;
-       display: table;
-       vertical-align: middle;
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-       width: 100%;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-withicon.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body {
-       /* Together with 'display: table' above, and FieldLayout styles, this aligns the text */
-       /* vertically to the middle. Don't try this at home, kids. */
-       display: table-row;
-}
+.mw-foreignStructuredUploa-bookletLayout-small-notice {
+       .oo-ui-fieldLayout-messages-notice {
+               .oo-ui-iconWidget {
+                       display: none;
+               }
 
-.mw-foreignStructuredUpload-bookletLayout-ownwork {
-       .background-image-svg('bookletlayout/option2/ownwork.svg', 'bookletlayout/option2/ownwork.png');
-       background-position: right center;
-       padding-right: 4.5em;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-noderiv {
-       .background-image-svg('bookletlayout/option2/noderiv.svg', 'bookletlayout/option2/noderiv.png');
-       background-position: right center;
-       padding-right: 4.5em;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-useful {
-       .background-image-svg('bookletlayout/option2/useful.svg', 'bookletlayout/option2/useful.png');
-       background-position: right center;
-       padding-right: 4.5em;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-ccbysa {
-       .background-image-svg('bookletlayout/option2/ccbysa.svg', 'bookletlayout/option2/ccbysa.png');
-       background-position: right center;
-       padding-right: 4.5em;
-}
-
-/* Option 3 */
-
-.mw-foreignStructuredUpload-bookletLayout-question .oo-ui-radioOptionWidget {
-       display: inline-block;
-       margin-right: 2em;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-checkbox.oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       /* No unreadable greys, please. This is the lightest WCAG AA compliant grey. */
-       color: #707070;
-}
-
-/* Option 4 */
-
-.mw-foreignStructuredUpload-bookletLayout-guide {
-       position: relative;
-       height: 315px;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-guide-text-wrapper-good,
-.mw-foreignStructuredUpload-bookletLayout-guide-text-wrapper-bad {
-       display: table;
-       width: 150px;
-       height: 140px;
-       position: absolute;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-guide-text-wrapper-good span,
-.mw-foreignStructuredUpload-bookletLayout-guide-text-wrapper-bad span {
-       display: table-cell;
-       vertical-align: middle;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-guide-text-wrapper-good {
-       top: 0;
-       left: 0;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-guide-text-wrapper-bad {
-       bottom: 0;
-       right: 0;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-guide-image {
-       position: absolute;
-       width: 200px;
-       height: 122px;
-       background-color: #fff;
-       background-size: 200px;
-       background-repeat: no-repeat;
-       border: 1px solid #e5e5e5;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-guide-image-camera {
-       .background-image-svg('bookletlayout/option4/camera.svg','bookletlayout/option4/camera.png');
-       top: 0;
-       right: 80px;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-guide-image-graphics {
-       .background-image-svg('bookletlayout/option4/graphics.svg','bookletlayout/option4/graphics.png');
-       top: 50px;
-       right: 0;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-guide-image-website {
-       .background-image-svg('bookletlayout/option4/website-ltr.svg','bookletlayout/option4/website-ltr.png');
-       left: 0;
-       bottom: 50px;
-}
-
-.mw-foreignStructuredUpload-bookletLayout-guide-image-search {
-       .background-image-svg('bookletlayout/option4/search-ltr.svg','bookletlayout/option4/search-ltr.png');
-       left: 80px;
-       bottom: 0;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline.mw-foreignStructuredUpload-bookletLayout-guide-checkbox {
-       /* We're really tight on vertical space. */
-       margin-bottom: 0;
-}
+               .oo-ui-labelWidget {
+                       line-height: 1.2em;
+                       font-size: 0.9em;
+                       color: #555;
+               }
+       }
+}
\ No newline at end of file
diff --git a/resources/src/mediawiki/mediawiki.Upload.BookletLayout.css b/resources/src/mediawiki/mediawiki.Upload.BookletLayout.css
new file mode 100644 (file)
index 0000000..11bad8c
--- /dev/null
@@ -0,0 +1,19 @@
+.mw-upload-bookletLayout-filePreview {
+       width: 100%;
+       height: 1em;
+       background-color: #eee;
+       background-size: cover;
+       background-position: center center;
+       padding: 1.5em;
+       margin: -1.5em;
+       margin-bottom: 1.5em;
+}
+
+.mw-upload-bookletLayout-infoForm.mw-upload-bookletLayout-hasThumbnail .mw-upload-bookletLayout-filePreview {
+       height: 10em;
+}
+
+.mw-upload-bookletLayout-filePreview p {
+       line-height: 1em;
+       margin: 0;
+}
\ No newline at end of file
index c8d64b9..eaab8c7 100644 (file)
 
                this.setPage( 'info' );
 
-               if ( this.shouldRecordBucket ) {
-                       this.upload.bucket = this.bucket;
-               }
-
                this.upload.setFile( file );
                // The original file name might contain invalid characters, so use our sanitized one
                this.upload.setFilename( this.getFilename() );
         * @return {OO.ui.FormLayout}
         */
        mw.Upload.BookletLayout.prototype.renderUploadForm = function () {
-               var fieldset;
+               var fieldset,
+                       layout = this;
 
-               this.selectFileWidget = new OO.ui.SelectFileWidget();
-               fieldset = new OO.ui.FieldsetLayout( { label: mw.msg( 'upload-form-label-select-file' ) } );
+               this.selectFileWidget = new OO.ui.SelectFileWidget( {
+                       showDropTarget: true
+               } );
+               fieldset = new OO.ui.FieldsetLayout();
                fieldset.addItems( [ this.selectFileWidget ] );
                this.uploadForm = new OO.ui.FormLayout( { items: [ fieldset ] } );
 
                // Validation
                this.selectFileWidget.on( 'change', this.onUploadFormChange.bind( this ) );
 
+               this.selectFileWidget.on( 'change', function () {
+                       layout.updateFilePreview();
+               } );
+
                return this.uploadForm;
        };
 
+       /**
+        * Updates the file preview on the info form when a file is added.
+        *
+        * @protected
+        */
+       mw.Upload.BookletLayout.prototype.updateFilePreview = function () {
+               this.selectFileWidget.loadAndGetImageUrl().done( function ( url ) {
+                       this.filePreview.$element.find( 'p' ).remove();
+                       this.filePreview.$element.css( 'background-image', 'url(' + url + ')' );
+                       this.infoForm.$element.addClass( 'mw-upload-bookletLayout-hasThumbnail' );
+               }.bind( this ) ).fail( function () {
+                       this.filePreview.$element.find( 'p' ).remove();
+                       if ( this.selectFileWidget.getValue() ) {
+                               this.filePreview.$element.append(
+                                       $( '<p>' ).text( this.selectFileWidget.getValue().name )
+                               );
+                       }
+                       this.filePreview.$element.css( 'background-image', '' );
+                       this.infoForm.$element.removeClass( 'mw-upload-bookletLayout-hasThumbnail' );
+               }.bind( this ) );
+       };
+
        /**
         * Handle change events to the upload form
         *
        mw.Upload.BookletLayout.prototype.renderInfoForm = function () {
                var fieldset;
 
+               this.filePreview = new OO.ui.Widget( {
+                       classes: [ 'mw-upload-bookletLayout-filePreview' ]
+               } );
                this.filenameWidget = new OO.ui.TextInputWidget( {
                        indicator: 'required',
                        required: true,
                                help: mw.msg( 'upload-form-label-infoform-description-tooltip' )
                        } )
                ] );
-               this.infoForm = new OO.ui.FormLayout( { items: [ fieldset ] } );
+               this.infoForm = new OO.ui.FormLayout( {
+                       classes: [ 'mw-upload-bookletLayout-infoForm' ],
+                       items: [ this.filePreview, fieldset ]
+               } );
 
                this.filenameWidget.on( 'change', this.onInfoFormChange.bind( this ) );
                this.descriptionWidget.on( 'change', this.onInfoFormChange.bind( this ) );
index c972f24..4a463b0 100644 (file)
                        upload.setState( Upload.State.UPLOADING );
 
                        return finishStash( {
-                               bucket: upload.bucket, // Automatically ignored if undefined
                                watchlist: ( upload.getWatchlist() ) ? 1 : undefined,
                                comment: upload.getComment(),
                                filename: upload.getFilename(),
index 2aada9e..f282db6 100644 (file)
                         *             'group': 'somegroup', (or) null
                         *             'source': 'local', (or) 'anotherwiki'
                         *             'skip': 'return !!window.Example', (or) null
+                        *             'module': export Object
                         *
                         *             // Set from execute() or mw.loader.state()
                         *             'state': 'registered', 'loaded', 'loading', 'ready', 'error', or 'missing'
                                // List of modules which will be loaded as when ready
                                batch = [],
 
+                               // Pending queueModuleScript() requests
+                               handlingPendingRequests = false,
+                               pendingRequests = [],
+
                                // List of modules to be loaded
                                queue = [],
 
                                } );
                        }
 
+                       /**
+                        * Queue the loading and execution of a script for a particular module.
+                        *
+                        * @private
+                        * @param {string} src URL of the script
+                        * @param {string} [moduleName] Name of currently executing module
+                        * @return {jQuery.Promise}
+                        */
+                       function queueModuleScript( src, moduleName ) {
+                               var r = $.Deferred();
+
+                               pendingRequests.push( function () {
+                                       if ( moduleName && !hasOwn.call( registry, moduleName ) ) {
+                                               window.require = mw.loader.require;
+                                               window.module = registry[ moduleName ].module;
+                                       }
+                                       addScript( src ).always( function () {
+                                               // Clear environment
+                                               delete window.require;
+                                               delete window.module;
+                                               r.resolve();
+
+                                               // Start the next one (if any)
+                                               if ( pendingRequests[ 0 ] ) {
+                                                       pendingRequests.shift()();
+                                               } else {
+                                                       handlingPendingRequests = false;
+                                               }
+                                       } );
+                               } );
+                               if ( !handlingPendingRequests && pendingRequests[ 0 ] ) {
+                                       handlingPendingRequests = true;
+                                       pendingRequests.shift()();
+                               }
+                               return r.promise();
+                       }
+
                        /**
                         * Utility function for execute()
                         *
                                                        handlePending( module );
                                                };
                                                nestedAddScript = function ( arr, callback, i ) {
-                                                       // Recursively call addScript() in its own callback
+                                                       // Recursively call queueModuleScript() in its own callback
                                                        // for each element of arr.
                                                        if ( i >= arr.length ) {
                                                                // We're at the end of the array
                                                                return;
                                                        }
 
-                                                       addScript( arr[ i ] ).always( function () {
+                                                       queueModuleScript( arr[ i ], module ).always( function () {
                                                                nestedAddScript( arr, callback, i + 1 );
                                                        } );
                                                };
                                                        } else if ( $.isFunction( script ) ) {
                                                                // Pass jQuery twice so that the signature of the closure which wraps
                                                                // the script can bind both '$' and 'jQuery'.
-                                                               script( $, $ );
+                                                               script( $, $, mw.loader.require, registry[ module ].module );
                                                                markModuleReady();
+
                                                        } else if ( typeof script === 'string' ) {
                                                                // Site and user modules are legacy scripts that run in the global scope.
                                                                // This is transported as a string instead of a function to avoid needing
                                        }
                                        // List the module as registered
                                        registry[ module ] = {
+                                               // Exposed to execute() for mw.loader.implement() closures.
+                                               // Import happens via require().
+                                               module: {
+                                                       exports: {}
+                                               },
                                                version: version !== undefined ? String( version ) : '',
                                                dependencies: [],
                                                group: typeof group === 'string' ? group : null,
                                        } );
                                },
 
+                               /**
+                                * Get the exported value of a module.
+                                *
+                                * Module provide this value via their local `module.exports`.
+                                *
+                                * @since 1.27
+                                * @return {Array}
+                                */
+                               require: function ( moduleName ) {
+                                       var state = mw.loader.getState( moduleName );
+
+                                       // Only ready mudules can be required
+                                       if ( state !== 'ready' ) {
+                                               // Module may've forgotten to declare a dependency
+                                               throw new Error( 'Module "' + moduleName + '" is not loaded.' );
+                                       }
+
+                                       return registry[ moduleName ].module.exports;
+                               },
+
                                /**
                                 * @inheritdoc mw.inspect#runReports
                                 * @method
index f69e342..2e1e270 100644 (file)
@@ -1,4 +1,8 @@
 <?php
+use MediaWiki\Logger\LegacySpi;
+use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\Logger\MonologSpi;
+use Psr\Log\LoggerInterface;
 
 /**
  * @since 1.18
@@ -64,6 +68,12 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         */
        private $mwGlobals = array();
 
+       /**
+        * Holds original loggers which have been replaced by setLogger()
+        * @var LoggerInterface[]
+        */
+       private $loggers = array();
+
        /**
         * Table name prefixes. Oracle likes it shorter.
         */
@@ -252,6 +262,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                        $GLOBALS[$key] = $value;
                }
                $this->mwGlobals = array();
+               $this->restoreLoggers();
                RequestContext::resetMain();
                MediaHandler::resetCache();
                if ( session_id() !== '' ) {
@@ -404,6 +415,61 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                $this->setMwGlobals( $name, $merged );
        }
 
+       /**
+        * Sets the logger for a specified channel, for the duration of the test.
+        * @since 1.27
+        * @param string $channel
+        * @param LoggerInterface $logger
+        */
+       protected function setLogger( $channel, LoggerInterface $logger ) {
+               $provider = LoggerFactory::getProvider();
+               $wrappedProvider = TestingAccessWrapper::newFromObject( $provider );
+               $singletons = $wrappedProvider->singletons;
+               if ( $provider instanceof MonologSpi ) {
+                       if ( !isset( $this->loggers[$channel] ) ) {
+                               $this->loggers[$channel] = isset( $singletons['loggers'][$channel] )
+                                       ? $singletons['loggers'][$channel] : null;
+                       }
+                       $singletons['loggers'][$channel] = $logger;
+               } elseif ( $provider instanceof LegacySpi ) {
+                       if ( !isset( $this->loggers[$channel] ) ) {
+                               $this->loggers[$channel] = isset( $singletons[$channel] ) ? $singletons[$channel] : null;
+                       }
+                       $singletons[$channel] = $logger;
+               } else {
+                       throw new LogicException( __METHOD__ . ': setting a logger for ' . get_class( $provider )
+                               . ' is not implemented' );
+               }
+               $wrappedProvider->singletons = $singletons;
+       }
+
+       /**
+        * Restores loggers replaced by setLogger().
+        * @since 1.27
+        */
+       private function restoreLoggers() {
+               $provider = LoggerFactory::getProvider();
+               $wrappedProvider = TestingAccessWrapper::newFromObject( $provider );
+               $singletons = $wrappedProvider->singletons;
+               foreach ( $this->loggers as $channel => $logger ) {
+                       if ( $provider instanceof MonologSpi ) {
+                               if ( $logger === null ) {
+                                       unset( $singletons['loggers'][$channel] );
+                               } else {
+                                       $singletons['loggers'][$channel] = $logger;
+                               }
+                       } elseif ( $provider instanceof LegacySpi ) {
+                               if ( $logger === null ) {
+                                       unset( $singletons[$channel] );
+                               } else {
+                                       $singletons[$channel] = $logger;
+                               }
+                       }
+               }
+               $wrappedProvider->singletons = $singletons;
+               $this->loggers = array();
+       }
+
        /**
         * @return string
         * @since 1.18
index 9a1f597..e3d69de 100644 (file)
@@ -92,7 +92,7 @@ class TestPageProps extends MediaWikiLangTestCase {
        public function testGetSingleProperty() {
                $pageProps = PageProps::getInstance();
                $page1ID = $this->title1->getArticleID();
-               $result = $pageProps->getProperty( $this->title1, "property1" );
+               $result = $pageProps->getProperties( $this->title1, "property1" );
                $this->assertArrayHasKey( $page1ID, $result, "Found property" );
                $this->assertEquals( $result[$page1ID], "value1", "Get property" );
        }
@@ -109,13 +109,42 @@ class TestPageProps extends MediaWikiLangTestCase {
                        $this->title1,
                        $this->title2
                );
-               $result = $pageProps->getProperty( $titles, "property1" );
+               $result = $pageProps->getProperties( $titles, "property1" );
                $this->assertArrayHasKey( $page1ID, $result, "Found page 1 property" );
                $this->assertArrayHasKey( $page2ID, $result, "Found page 2 property" );
                $this->assertEquals( $result[$page1ID], "value1", "Get property page 1" );
                $this->assertEquals( $result[$page2ID], "value1", "Get property page 2" );
        }
 
+       /**
+        * Test getting multiple properties from multiple pages. The properties
+        * were set in setUp().
+        */
+       public function testGetMultiplePropertiesMultiplePages() {
+               $pageProps = PageProps::getInstance();
+               $page1ID = $this->title1->getArticleID();
+               $page2ID = $this->title2->getArticleID();
+               $titles = array(
+                       $this->title1,
+                       $this->title2
+               );
+               $properties = array(
+                       "property1",
+                       "property2"
+               );
+               $result = $pageProps->getProperties( $titles, $properties );
+               $this->assertArrayHasKey( $page1ID, $result, "Found page 1 property" );
+               $this->assertArrayHasKey( "property1", $result[$page1ID], "Found page 1 property 1" );
+               $this->assertArrayHasKey( "property2", $result[$page1ID], "Found page 1 property 2" );
+               $this->assertArrayHasKey( $page2ID, $result, "Found page 2 property" );
+               $this->assertArrayHasKey( "property1", $result[$page2ID], "Found page 2 property 1" );
+               $this->assertArrayHasKey( "property2", $result[$page2ID], "Found page 2 property 2" );
+               $this->assertEquals( $result[$page1ID]["property1"], "value1", "Get page 1 property 1" );
+               $this->assertEquals( $result[$page1ID]["property2"], "value2", "Get page 1 property 2" );
+               $this->assertEquals( $result[$page2ID]["property1"], "value1", "Get page 2 property 1" );
+               $this->assertEquals( $result[$page2ID]["property2"], "value2", "Get page 2 property 2" );
+       }
+
        /**
         * Test getting all properties from a single page. The properties were
         * set in setUp(). The properties retrieved from the page may include
@@ -130,7 +159,7 @@ class TestPageProps extends MediaWikiLangTestCase {
        public function testGetAllProperties() {
                $pageProps = PageProps::getInstance();
                $page1ID = $this->title1->getArticleID();
-               $result = $pageProps->getProperties( $this->title1 );
+               $result = $pageProps->getAllProperties( $this->title1 );
                $this->assertArrayHasKey( $page1ID, $result, "Found properties" );
                $properties = $result[$page1ID];
                $patched = array_replace_recursive( $properties, $this->the_properties );
@@ -149,7 +178,7 @@ class TestPageProps extends MediaWikiLangTestCase {
                        $this->title1,
                        $this->title2
                );
-               $result = $pageProps->getProperties( $titles );
+               $result = $pageProps->getAllProperties( $titles );
                $this->assertArrayHasKey( $page1ID, $result, "Found page 1 properties" );
                $this->assertArrayHasKey( $page2ID, $result, "Found page 2 properties" );
                $properties1 = $result[$page1ID];
@@ -169,9 +198,9 @@ class TestPageProps extends MediaWikiLangTestCase {
        public function testSingleCache() {
                $pageProps = PageProps::getInstance();
                $page1ID = $this->title1->getArticleID();
-               $value1 = $pageProps->getProperty( $this->title1, "property1" );
+               $value1 = $pageProps->getProperties( $this->title1, "property1" );
                $this->setProperty( $page1ID, "property1", "another value" );
-               $value2 = $pageProps->getProperty( $this->title1, "property1" );
+               $value2 = $pageProps->getProperties( $this->title1, "property1" );
                $this->assertEquals( $value1, $value2, "Single cache" );
        }
 
@@ -184,9 +213,9 @@ class TestPageProps extends MediaWikiLangTestCase {
        public function testMultiCache() {
                $pageProps = PageProps::getInstance();
                $page1ID = $this->title1->getArticleID();
-               $properties1 = $pageProps->getProperties( $this->title1 );
+               $properties1 = $pageProps->getAllProperties( $this->title1 );
                $this->setProperty( $page1ID, "property1", "another value" );
-               $properties2 = $pageProps->getProperties( $this->title1 );
+               $properties2 = $pageProps->getAllProperties( $this->title1 );
                $this->assertEquals( $properties1, $properties2, "Multi Cache" );
        }
 
@@ -201,11 +230,11 @@ class TestPageProps extends MediaWikiLangTestCase {
        public function testClearCache() {
                $pageProps = PageProps::getInstance();
                $page1ID = $this->title1->getArticleID();
-               $pageProps->getProperty( $this->title1, "property1" );
+               $pageProps->getProperties( $this->title1, "property1" );
                $new_value = "another value";
                $this->setProperty( $page1ID, "property1", $new_value );
-               $pageProps->getProperties( $this->title1 );
-               $result = $pageProps->getProperty( $this->title1, "property1" );
+               $pageProps->getAllProperties( $this->title1 );
+               $result = $pageProps->getProperties( $this->title1, "property1" );
                $this->assertArrayHasKey( $page1ID, $result, "Found property" );
                $this->assertEquals( $result[$page1ID], "another value", "Clear cache" );
        }
index f08a07d..481b693 100644 (file)
@@ -569,6 +569,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                        'making sure it did save to backend' );
 
                // Not marked dirty, but dirty data
+               // (e.g. indirect modification from ArrayAccess::offsetGet)
                $this->provider = $neverProvider;
                $this->onSessionMetadataCalled = false;
                $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $this ) ) );
index 16beb72..e618644 100644 (file)
@@ -3,6 +3,7 @@
 namespace MediaWiki\Session;
 
 use AuthPlugin;
+use MediaWiki\Logger\LoggerFactory;
 use MediaWikiTestCase;
 use Psr\Log\LogLevel;
 use User;
@@ -1112,7 +1113,7 @@ class SessionManagerTest extends MediaWikiTestCase {
                $provider->expects( $this->any() )->method( 'mergeMetadata' )
                        ->will( $this->returnCallback( function ( $a, $b ) {
                                if ( $b === array( 'Throw' ) ) {
-                                       throw new \UnexpectedValueException( 'no merge!' );
+                                       throw new MetadataMergeException( 'no merge!' );
                                }
                                return array( 'Merged' );
                        } ) );
@@ -1677,4 +1678,73 @@ class SessionManagerTest extends MediaWikiTestCase {
                $logger->clearBuffer();
        }
 
+       /**
+        * @dataProvider provideCheckIpLimits
+        */
+       public function testCheckIpLimits( $ip, $sessionData, $userData, $logLevel1, $logLevel2 ) {
+               $this->setMwGlobals( array(
+                       'wgSuspiciousIpPerSessionLimit' => 5,
+                       'wgSuspiciousIpPerUserLimit' => 10,
+                       'wgSuspiciousIpExpiry' => 600,
+                       'wgSquidServers' => array( '11.22.33.44' ),
+               ) );
+               $manager = new SessionManager();
+               $logger = $this->getMock( '\Psr\Log\LoggerInterface' );
+               $this->setLogger( 'session-ip', $logger );
+               $request = new \FauxRequest();
+               $request->setIP( $ip );
+
+               $session = $manager->getSessionForRequest( $request );
+               /** @var SessionBackend $backend */
+               $backend = \TestingAccessWrapper::newFromObject( $session )->backend;
+               $data = &$backend->getData();
+               $data = array( 'SessionManager-ip' => $sessionData );
+               $backend->setUser( User::newFromName( 'UTSysop' ) );
+               $manager = \TestingAccessWrapper::newFromObject( $manager );
+               $manager->store->set( 'SessionManager-ip:' . md5( 'UTSysop' ), $userData );
+
+               $logger->expects( $this->exactly( isset( $logLevel1 ) + isset( $logLevel2 ) ) )->method( 'log' );
+               if ( $logLevel1 ) {
+                       $logger->expects( $this->at( 0 ) )->method( 'log' )->with( $logLevel1,
+                               'Same session used from {count} IPs', $this->isType( 'array' ) );
+               }
+               if ( $logLevel2 ) {
+                       $logger->expects( $this->at( isset( $logLevel1 ) ) )->method( 'log' )->with( $logLevel2,
+                               'Same user had sessions from {count} IPs', $this->isType( 'array' ) );
+               }
+
+               $manager->checkIpLimits( $session );
+       }
+
+       public function provideCheckIpLimits() {
+               $future = time() + 1000;
+               $past = time() - 1000;
+               return array(
+                       // DEBUG log for first new IP
+                       array( '1.2.3.4', array(), array(), LogLevel::DEBUG, LogLevel::DEBUG ),
+                       // no log for same IP
+                       array( '1.2.3.4', array( '1.2.3.4'  => $future ), array( '1.2.3.4' => $future ),
+                                  null, null ),
+                       array( '1.2.3.4', array(), array( '1.2.3.4' => $future ),
+                                  LogLevel::DEBUG, null ),
+                       // INFO log for second new IP
+                       array( '1.2.3.4', array( '10.20.30.40'  => $future ), array( '10.20.30.40' => $future ),
+                          LogLevel::INFO, LogLevel::INFO ),
+                       // WARNING above $wgSuspiciousIpPerSessionLimit
+                       array( '1.2.3.4', array_fill_keys( range( 1, 5 ), $future ),
+                          array_fill_keys( range( 1, 5 ), $future ), LogLevel::WARNING, LogLevel::INFO ),
+                       // WARNING above $wgSuspiciousIpPerUserLimit
+
+                       array( '1.2.3.4', array_fill_keys( range( 1, 2 ), $future ),
+                                  array_fill_keys( range( 1, 12 ), $future ), LogLevel::INFO, LogLevel::WARNING ),
+                       // expired keys ignored
+                       array( '1.2.3.4', array( '1.2.3.4'  => $past ), array( '1.2.3.4' => $past ),
+                          LogLevel::DEBUG, LogLevel::DEBUG ),
+                       array( '1.2.3.4', array_fill_keys( range( 1, 5 ), $past ),
+                                  array_fill_keys( range( 1, 5 ), $past ), LogLevel::DEBUG, LogLevel::DEBUG ),
+                       // special IPs are ignored
+                       array( '127.0.0.1', array(), array(), null, null ),
+                       array( '11.22.33.44', array(), array(), null, null ),
+               );
+       }
 }
index d7aebcd..7d9004a 100644 (file)
@@ -89,8 +89,10 @@ class SessionProviderTest extends MediaWikiTestCase {
                                array( 'bar' => 2, 'baz' => '3' )
                        );
                        $this->fail( 'Expected exception not thrown' );
-               } catch ( \UnexpectedValueException $ex ) {
+               } catch ( MetadataMergeException $ex ) {
                        $this->assertSame( 'Key "baz" changed', $ex->getMessage() );
+                       $this->assertSame(
+                               [ 'old_value' => 3, 'new_value' => '3' ], $ex->getContext() );
                }
 
                $res = $provider->mergeMetadata(
index 858996d..3c5090a 100644 (file)
@@ -2,6 +2,7 @@
 
 namespace MediaWiki\Session;
 
+use Psr\Log\LogLevel;
 use MediaWikiTestCase;
 use User;
 
@@ -16,7 +17,7 @@ class SessionTest extends MediaWikiTestCase {
                \TestingAccessWrapper::newFromObject( $backend )->requests = array( -1 => 'dummy' );
                \TestingAccessWrapper::newFromObject( $backend )->id = new SessionId( 'abc' );
 
-               $session = new Session( $backend, 42 );
+               $session = new Session( $backend, 42, new \TestLogger );
                $priv = \TestingAccessWrapper::newFromObject( $session );
                $this->assertSame( $backend, $priv->backend );
                $this->assertSame( 42, $priv->index );
@@ -152,6 +153,71 @@ class SessionTest extends MediaWikiTestCase {
                $this->assertFalse( $backend->dirty );
        }
 
+       public function testArrayAccess() {
+               $logger = new \TestLogger;
+               $session = TestUtils::getDummySession( null, -1, $logger );
+               $backend = \TestingAccessWrapper::newFromObject( $session )->backend;
+
+               $this->assertEquals( 1, $session['foo'] );
+               $this->assertEquals( 'zero', $session[0] );
+               $this->assertFalse( $backend->dirty );
+
+               $logger->setCollect( true );
+               $this->assertEquals( null, $session['null'] );
+               $logger->setCollect( false );
+               $this->assertFalse( $backend->dirty );
+               $this->assertSame( array(
+                       array( LogLevel::DEBUG, 'Undefined index (auto-adds to session with a null value): null' )
+               ), $logger->getBuffer() );
+               $logger->clearBuffer();
+
+               $session['foo'] = 55;
+               $this->assertEquals( 55, $backend->data['foo'] );
+               $this->assertTrue( $backend->dirty );
+               $backend->dirty = false;
+
+               $session[1] = 'one';
+               $this->assertEquals( 'one', $backend->data[1] );
+               $this->assertTrue( $backend->dirty );
+               $backend->dirty = false;
+
+               $session[1] = 'one';
+               $this->assertFalse( $backend->dirty );
+
+               $session['bar'] = array( 'baz' => array() );
+               $session['bar']['baz']['quux'] = 2;
+               $this->assertEquals( array( 'baz' => array( 'quux' => 2 ) ), $backend->data['bar'] );
+
+               $logger->setCollect( true );
+               $session['bar2']['baz']['quux'] = 3;
+               $logger->setCollect( false );
+               $this->assertEquals( array( 'baz' => array( 'quux' => 3 ) ), $backend->data['bar2'] );
+               $this->assertSame( array(
+                       array( LogLevel::DEBUG, 'Undefined index (auto-adds to session with a null value): bar2' )
+               ), $logger->getBuffer() );
+               $logger->clearBuffer();
+
+               $backend->dirty = false;
+               $this->assertTrue( isset( $session['foo'] ) );
+               $this->assertTrue( isset( $session[1] ) );
+               $this->assertFalse( isset( $session['null'] ) );
+               $this->assertFalse( isset( $session['missing'] ) );
+               $this->assertFalse( isset( $session[100] ) );
+               $this->assertFalse( $backend->dirty );
+
+               unset( $session['foo'] );
+               $this->assertArrayNotHasKey( 'foo', $backend->data );
+               $this->assertTrue( $backend->dirty );
+               $backend->dirty = false;
+               unset( $session[1] );
+               $this->assertArrayNotHasKey( 1, $backend->data );
+               $this->assertTrue( $backend->dirty );
+               $backend->dirty = false;
+
+               unset( $session[101] );
+               $this->assertFalse( $backend->dirty );
+       }
+
        public function testClear() {
                $session = TestUtils::getDummySession();
                $priv = \TestingAccessWrapper::newFromObject( $session );
index 1619983..cc20ab5 100644 (file)
@@ -2,6 +2,8 @@
 
 namespace MediaWiki\Session;
 
+use Psr\Log\LoggerInterface;
+
 /**
  * Utility functions for Session unit tests
  */
@@ -67,7 +69,9 @@ class TestUtils {
                        );
                }
 
-               return $rc->newInstanceWithoutConstructor();
+               $ret = $rc->newInstanceWithoutConstructor();
+               \TestingAccessWrapper::newFromObject( $ret )->logger = new \TestLogger;
+               return $ret;
        }
 
        /**
@@ -75,9 +79,10 @@ class TestUtils {
         * construct one, use this.
         * @param object $backend Object to serve as the SessionBackend
         * @param int $index Index
+        * @param LoggerInterface $logger
         * @return Session
         */
-       public static function getDummySession( $backend = null, $index = -1 ) {
+       public static function getDummySession( $backend = null, $index = -1, $logger = null ) {
                $rc = new \ReflectionClass( 'MediaWiki\\Session\\Session' );
                if ( !method_exists( $rc, 'newInstanceWithoutConstructor' ) ) {
                        \PHPUnit_Framework_Assert::markTestSkipped(
@@ -93,6 +98,7 @@ class TestUtils {
                $priv = \TestingAccessWrapper::newFromObject( $session );
                $priv->backend = $backend;
                $priv->index = $index;
+               $priv->logger = $logger ?: new \TestLogger;
                return $session;
        }
 
index 8674329..e5b7a93 100644 (file)
@@ -71,7 +71,7 @@ class AutoLoaderTest extends MediaWikiTestCase {
                        $matches = array();
                        preg_match_all( '/
                                ^ [\t ]* (?:
-                                       (?:final\s+)? (?:abstract\s+)? (?:class|interface) \s+
+                                       (?:final\s+)? (?:abstract\s+)? (?:class|interface|trait) \s+
                                        (?P<class> [a-zA-Z0-9_]+)
                                |
                                        class_alias \s* \( \s*
index 8887499..3361166 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+use MediaWiki\Logger\LoggerFactory;
 
 /**
  * @covers MediaWikiTestCase
@@ -97,4 +98,37 @@ class MediaWikiTestCaseTest extends MediaWikiTestCase {
                $this->stashMwGlobals( self::GLOBAL_KEY_NONEXISTING );
        }
 
+       /**
+        * @covers MediaWikiTestCase::setLogger
+        * @covers MediaWikiTestCase::restoreLogger
+        */
+       public function testLoggersAreRestoredOnTearDown() {
+               // replacing an existing logger
+               $logger1 = LoggerFactory::getInstance( 'foo' );
+               $this->setLogger( 'foo', $this->getMock( '\Psr\Log\LoggerInterface' ) );
+               $logger2 = LoggerFactory::getInstance( 'foo' );
+               $this->tearDown();
+               $logger3 = LoggerFactory::getInstance( 'foo' );
+
+               $this->assertSame( $logger1, $logger3 );
+               $this->assertNotSame( $logger1, $logger2 );
+
+               // replacing a non-existing logger
+               $this->setLogger( 'bar', $this->getMock( '\Psr\Log\LoggerInterface' ) );
+               $logger1 = LoggerFactory::getInstance( 'bar' );
+               $this->tearDown();
+               $logger2 = LoggerFactory::getInstance( 'bar' );
+
+               $this->assertNotSame( $logger1, $logger2 );
+               $this->assertInstanceOf( '\Psr\Log\LoggerInterface', $logger2 );
+
+               // replacing same logger twice
+               $logger1 = LoggerFactory::getInstance( 'baz' );
+               $this->setLogger( 'baz', $this->getMock( '\Psr\Log\LoggerInterface' ) );
+               $this->setLogger( 'baz', $this->getMock( '\Psr\Log\LoggerInterface' ) );
+               $this->tearDown();
+               $logger2 = LoggerFactory::getInstance( 'baz' );
+
+               $this->assertSame( $logger1, $logger2 );
+       }
 }
index fe5530b..ce4ea8b 100644 (file)
                );
        } );
 
+       QUnit.test( 'mw.loader.require', 6, function ( assert ) {
+               var module1, module2, module3, module4;
+
+               mw.loader.register( [
+                       [ 'test.module.require1', '0' ],
+                       [ 'test.module.require2', '0' ],
+                       [ 'test.module.require3', '0' ],
+                       [ 'test.module.require4', '0', [ 'test.module.require3' ] ]
+               ] );
+               mw.loader.implement( 'test.module.require1', function () {} );
+               mw.loader.implement( 'test.module.require2', function ( $, jQuery, require, module ) {
+                       module.exports = 1;
+               } );
+               mw.loader.implement( 'test.module.require3', function ( $, jQuery, require, module ) {
+                       module.exports = function () {
+                               return 'hello world';
+                       };
+               } );
+               mw.loader.implement( 'test.module.require4', function ( $, jQuery, require, module ) {
+                       var other = require( 'test.module.require3' );
+                       module.exports = {
+                               pizza: function () {
+                                       return other();
+                               }
+                       };
+               } );
+               module1 = mw.loader.require( 'test.module.require1' );
+               module2 = mw.loader.require( 'test.module.require2' );
+               module3 = mw.loader.require( 'test.module.require3' );
+               module4 = mw.loader.require( 'test.module.require4' );
+
+               assert.strictEqual( typeof module1, 'object', 'export of module with no export' );
+               assert.strictEqual( module2, 1, 'export a number' );
+               assert.strictEqual( module3(), 'hello world', 'export a function' );
+               assert.strictEqual( typeof module4.pizza, 'function', 'export an object' );
+               assert.strictEqual( module4.pizza(), 'hello world', 'module can require other modules' );
+
+               assert.throws( function () {
+                       mw.loader.require( '_badmodule' );
+               }, /is not loaded/, 'Requesting non-existent modules throws error.' );
+       } );
+
 }( mediaWiki, jQuery ) );