Merge "Improve HTMLSubmitField return value"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 19 Apr 2016 19:43:55 +0000 (19:43 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 19 Apr 2016 19:43:55 +0000 (19:43 +0000)
337 files changed:
RELEASE-NOTES-1.27
autoload.php
composer.json
docs/extension.schema.json
docs/hooks.txt
docs/injection.txt
includes/DefaultSettings.php
includes/ForkController.php
includes/GlobalFunctions.php
includes/HtmlFormatter.php
includes/HttpFunctions.php
includes/MediaWikiServices.php
includes/PageProps.php
includes/Preferences.php
includes/ServiceWiring.php
includes/Services/CannotReplaceActiveServiceException.php [deleted file]
includes/Services/ContainerDisabledException.php [deleted file]
includes/Services/DestructibleService.php [deleted file]
includes/Services/NoSuchServiceException.php [deleted file]
includes/Services/ServiceAlreadyDefinedException.php [deleted file]
includes/Services/ServiceContainer.php
includes/Services/ServiceDisabledException.php [deleted file]
includes/Setup.php
includes/Title.php
includes/WebRequest.php
includes/api/ApiBase.php
includes/api/ApiHelp.php
includes/api/ApiLogin.php
includes/api/ApiQueryImageInfo.php
includes/api/ApiQuerySearch.php
includes/api/ApiStashEdit.php
includes/api/ApiUpload.php
includes/api/i18n/ckb.json
includes/api/i18n/es.json
includes/api/i18n/gl.json
includes/api/i18n/hu.json
includes/api/i18n/nl.json
includes/api/i18n/ro.json [new file with mode: 0644]
includes/cache/MessageCache.php
includes/changes/CategoryMembershipChange.php
includes/changes/EnhancedChangesList.php
includes/changes/RecentChange.php
includes/collation/IcuCollation.php
includes/config/ConfigFactory.php
includes/context/RequestContext.php
includes/db/Database.php
includes/db/IDatabase.php
includes/db/loadbalancer/LBFactory.php
includes/db/loadbalancer/LBFactoryMulti.php
includes/db/loadbalancer/LoadBalancer.php
includes/filebackend/FSFile.php
includes/filebackend/FileBackendMultiWrite.php
includes/filerepo/ForeignAPIRepo.php
includes/filerepo/file/File.php
includes/filerepo/file/ForeignDBFile.php
includes/filerepo/file/LocalFile.php
includes/htmlform/HTMLForm.php
includes/installer/DatabaseInstaller.php
includes/installer/Installer.php
includes/installer/i18n/fa.json
includes/installer/i18n/gl.json
includes/installer/i18n/is.json
includes/installer/i18n/ko.json
includes/installer/i18n/mai.json
includes/installer/i18n/pl.json
includes/installer/i18n/zh-hans.json
includes/jobqueue/Job.php
includes/jobqueue/JobQueue.php
includes/jobqueue/JobQueueGroup.php
includes/jobqueue/JobRunner.php
includes/jobqueue/jobs/AssembleUploadChunksJob.php
includes/jobqueue/jobs/PublishStashedFileJob.php
includes/libs/ArrayUtils.php
includes/libs/eventrelayer/EventRelayerMCRD.php [deleted file]
includes/libs/virtualrest/VirtualRESTServiceClient.php
includes/logging/LogPager.php
includes/logging/RightsLogFormatter.php
includes/objectcache/SqlBagOStuff.php
includes/page/WikiCategoryPage.php
includes/page/WikiPage.php
includes/parser/Parser.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php
includes/search/SearchNearMatchResultSet.php
includes/search/SearchResultSet.php
includes/search/SqlSearchResultSet.php
includes/session/SessionManager.php
includes/site/SiteSQLStore.php
includes/specials/SpecialLinkSearch.php
includes/specials/SpecialLog.php
includes/specials/SpecialPreferences.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRunJobs.php
includes/specials/SpecialSearch.php
includes/specials/SpecialUpload.php
includes/specials/SpecialWatchlist.php
includes/specials/SpecialWithoutinterwiki.php
includes/specials/pagers/CategoryPager.php
includes/tidy/Html5Depurate.php
includes/user/CentralIdLookup.php
includes/user/User.php
includes/widget/SearchInputWidget.php
languages/Language.php
languages/i18n/af.json
languages/i18n/am.json
languages/i18n/an.json
languages/i18n/ar.json
languages/i18n/ary.json
languages/i18n/arz.json
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/avk.json
languages/i18n/awa.json
languages/i18n/az.json
languages/i18n/azb.json
languages/i18n/ba.json
languages/i18n/bcc.json
languages/i18n/bcl.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bgn.json
languages/i18n/bjn.json
languages/i18n/bn.json
languages/i18n/br.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/ckb.json
languages/i18n/cs.json
languages/i18n/cy.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/dsb.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/ext.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/frp.json
languages/i18n/frr.json
languages/i18n/fy.json
languages/i18n/gd.json
languages/i18n/gl.json
languages/i18n/gom-deva.json
languages/i18n/gom-latn.json
languages/i18n/grc.json
languages/i18n/gsw.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hif-latn.json
languages/i18n/hr.json
languages/i18n/hrx.json
languages/i18n/hsb.json
languages/i18n/hu.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/ilo.json
languages/i18n/inh.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/kab.json
languages/i18n/kk-arab.json
languages/i18n/kk-cyrl.json
languages/i18n/kk-latn.json
languages/i18n/km.json
languages/i18n/kn.json
languages/i18n/ko.json
languages/i18n/krc.json
languages/i18n/ksh.json
languages/i18n/ku-latn.json
languages/i18n/ky.json
languages/i18n/la.json
languages/i18n/lad.json
languages/i18n/lb.json
languages/i18n/li.json
languages/i18n/lki.json
languages/i18n/lrc.json
languages/i18n/lt.json
languages/i18n/lus.json
languages/i18n/lv.json
languages/i18n/mai.json
languages/i18n/mdf.json
languages/i18n/mg.json
languages/i18n/min.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/mn.json
languages/i18n/mr.json
languages/i18n/ms.json
languages/i18n/mt.json
languages/i18n/my.json
languages/i18n/myv.json
languages/i18n/nan.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/nds.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/oc.json
languages/i18n/or.json
languages/i18n/pa.json
languages/i18n/pam.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pnb.json
languages/i18n/prg.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/qu.json
languages/i18n/rm.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/rue.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/scn.json
languages/i18n/sco.json
languages/i18n/ses.json
languages/i18n/sgs.json
languages/i18n/sh.json
languages/i18n/si.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sli.json
languages/i18n/sq.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/stq.json
languages/i18n/su.json
languages/i18n/sv.json
languages/i18n/sw.json
languages/i18n/szl.json
languages/i18n/ta.json
languages/i18n/te.json
languages/i18n/tg-cyrl.json
languages/i18n/tg-latn.json
languages/i18n/th.json
languages/i18n/tk.json
languages/i18n/tl.json
languages/i18n/tr.json
languages/i18n/tt-cyrl.json
languages/i18n/tt-latn.json
languages/i18n/ug-arab.json
languages/i18n/uk.json
languages/i18n/vec.json
languages/i18n/vep.json
languages/i18n/vi.json
languages/i18n/vo.json
languages/i18n/wuu.json
languages/i18n/yi.json
languages/i18n/yo.json
languages/i18n/yue.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/cleanupCaps.php
maintenance/edit.php
maintenance/importImages.php
maintenance/moveBatch.php
maintenance/rebuildLocalisationCache.php
maintenance/rebuildrecentchanges.php
package.json
resources/Resources.php
resources/lib/oojs-ui/oojs-ui-core-apex.css
resources/lib/oojs-ui/oojs-ui-core-mediawiki.css
resources/src/jquery/jquery.makeCollapsible.js
resources/src/mediawiki.action/mediawiki.action.edit.stash.js
resources/src/mediawiki.legacy/commonPrint.css
resources/src/mediawiki.legacy/oldshared.css
resources/src/mediawiki.libs/CLDRPluralRuleParser.js
resources/src/mediawiki.skinning/content.css
resources/src/mediawiki.special/mediawiki.special.search.js
resources/src/mediawiki.special/mediawiki.special.upload.js
resources/src/mediawiki.ui/components/inputs.less
resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.js
resources/src/mediawiki.widgets/mw.widgets.SearchInputWidget.js
resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.js [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.less [new file with mode: 0644]
resources/src/mediawiki/api.js
resources/src/mediawiki/api/edit.js
resources/src/mediawiki/api/options.js
resources/src/mediawiki/api/upload.js
resources/src/mediawiki/mediawiki.Upload.BookletLayout.js
resources/src/mediawiki/mediawiki.Upload.js
resources/src/mediawiki/mediawiki.js
resources/src/mediawiki/mediawiki.searchSuggest.js
resources/src/mediawiki/page/ready.js
resources/src/moment-global.js [new file with mode: 0644]
resources/src/oojs-global.js [new file with mode: 0644]
resources/src/startup.js
tests/TestsAutoLoader.php
tests/parser/parserTest.inc
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/HtmlFormatterTest.php [deleted file]
tests/phpunit/includes/MediaWikiServicesTest.php
tests/phpunit/includes/MessageTest.php
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/Services/ServiceContainerTest.php
tests/phpunit/includes/WatchedItemStoreUnitTest.php
tests/phpunit/includes/api/ApiTestCase.php
tests/phpunit/includes/changes/CategoryMembershipChangeTest.php
tests/phpunit/includes/changes/RecentChangeTest.php
tests/phpunit/includes/config/ConfigFactoryTest.php
tests/phpunit/includes/deferred/LinksUpdateTest.php
tests/phpunit/includes/jobqueue/JobTest.php
tests/phpunit/includes/jobqueue/jobs/CategoryMembershipChangeJobTest.php
tests/phpunit/includes/page/WikiCategoryPageTest.php [new file with mode: 0644]
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
tests/phpunit/includes/user/UserTest.php
tests/phpunit/includes/utils/UIDGeneratorTest.php
tests/phpunit/maintenance/DumpTestCase.php
tests/phpunit/phpunit.php
tests/qunit/QUnitTestResources.php
tests/qunit/data/defineCallMwLoaderTestCallback.js [new file with mode: 0644]
tests/qunit/data/requireCallMwLoaderTestCallback.js [new file with mode: 0644]
tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.test.js
tests/qunit/suites/resources/startup.test.js
tests/qunit/suites/resources/test.sinonjs/index.js [new file with mode: 0644]
tests/testHelpers.inc
thumb.php

index a6dfecc..72d4b38 100644 (file)
@@ -188,6 +188,8 @@ HHVM 3.1. Additionally, the following PHP extensions are required:
   and error messages. It is available client-side via mw.config.get( 'wgRequestId' ).
   The request ID supplants exception IDs. Accordingly, MWExceptionHandler::getLogId()
   is deprecated.
+* (T33313) Add a preference for watching uploads by default, also applies
+  to API-based upload tools.
 
 === External library changes in 1.27 ===
 
index db543dd..b851e39 100644 (file)
@@ -397,7 +397,6 @@ $wgAutoloadLocalClasses = [
        'ErrorPageError' => __DIR__ . '/includes/exception/ErrorPageError.php',
        'EventRelayer' => __DIR__ . '/includes/libs/eventrelayer/EventRelayer.php',
        'EventRelayerGroup' => __DIR__ . '/includes/EventRelayerGroup.php',
-       'EventRelayerMCRD' => __DIR__ . '/includes/libs/eventrelayer/EventRelayerMCRD.php',
        'EventRelayerNull' => __DIR__ . '/includes/libs/eventrelayer/EventRelayerNull.php',
        'Exif' => __DIR__ . '/includes/media/Exif.php',
        'ExifBitmapHandler' => __DIR__ . '/includes/media/ExifBitmap.php',
@@ -618,6 +617,7 @@ $wgAutoloadLocalClasses = [
        'JobQueueFederated' => __DIR__ . '/includes/jobqueue/JobQueueFederated.php',
        'JobQueueGroup' => __DIR__ . '/includes/jobqueue/JobQueueGroup.php',
        'JobQueueMemory' => __DIR__ . '/includes/jobqueue/JobQueueMemory.php',
+       'JobQueueReadOnlyError' => __DIR__ . '/includes/jobqueue/JobQueue.php',
        'JobQueueRedis' => __DIR__ . '/includes/jobqueue/JobQueueRedis.php',
        'JobRunner' => __DIR__ . '/includes/jobqueue/JobRunner.php',
        'JobSpecification' => __DIR__ . '/includes/jobqueue/JobSpecification.php',
@@ -628,6 +628,7 @@ $wgAutoloadLocalClasses = [
        'KkConverter' => __DIR__ . '/languages/classes/LanguageKk.php',
        'KuConverter' => __DIR__ . '/languages/classes/LanguageKu.php',
        'LBFactory' => __DIR__ . '/includes/db/loadbalancer/LBFactory.php',
+       'LBFactoryFake' => __DIR__ . '/includes/db/loadbalancer/LBFactoryFake.php',
        'LBFactoryMulti' => __DIR__ . '/includes/db/loadbalancer/LBFactoryMulti.php',
        'LBFactorySimple' => __DIR__ . '/includes/db/loadbalancer/LBFactorySimple.php',
        'LBFactorySingle' => __DIR__ . '/includes/db/loadbalancer/LBFactorySingle.php',
@@ -776,7 +777,6 @@ $wgAutoloadLocalClasses = [
        'MediaWikiSite' => __DIR__ . '/includes/site/MediaWikiSite.php',
        'MediaWikiTitleCodec' => __DIR__ . '/includes/title/MediaWikiTitleCodec.php',
        'MediaWikiVersionFetcher' => __DIR__ . '/includes/MediaWikiVersionFetcher.php',
-       'MediaWiki\\MediaWikiServices' => __DIR__ . '/includes/MediaWikiServices.php',
        'MediaWiki\\Languages\\Data\\Names' => __DIR__ . '/languages/data/Names.php',
        'MediaWiki\\Languages\\Data\\ZhConversion' => __DIR__ . '/languages/data/ZhConversion.php',
        'MediaWiki\\Logger\\LegacyLogger' => __DIR__ . '/includes/debug/logger/LegacyLogger.php',
@@ -793,13 +793,8 @@ $wgAutoloadLocalClasses = [
        'MediaWiki\\Logger\\Monolog\\WikiProcessor' => __DIR__ . '/includes/debug/logger/monolog/WikiProcessor.php',
        'MediaWiki\\Logger\\NullSpi' => __DIR__ . '/includes/debug/logger/NullSpi.php',
        'MediaWiki\\Logger\\Spi' => __DIR__ . '/includes/debug/logger/Spi.php',
-       'MediaWiki\\Services\\DestructibleService' => __DIR__ . '/includes/Services/DestructibleService.php',
+       'MediaWiki\\MediaWikiServices' => __DIR__ . '/includes/MediaWikiServices.php',
        'MediaWiki\\Services\\ServiceContainer' => __DIR__ . '/includes/Services/ServiceContainer.php',
-       'MediaWiki\\Services\\NoSuchServiceException' => __DIR__ . '/includes/Services/NoSuchServiceException.php',
-       'MediaWiki\\Services\\CannotReplaceActiveServiceException' => __DIR__ . '/includes/Services/CannotReplaceActiveServiceException.php',
-       'MediaWiki\\Services\\ServiceAlreadyDefinedException' => __DIR__ . '/includes/Services/ServiceAlreadyDefinedException.php',
-       'MediaWiki\\Services\\ServiceDisabledException' => __DIR__ . '/includes/Services/ServiceDisabledException.php',
-       'MediaWiki\\Services\\ContainerDisabledException' => __DIR__ . '/includes/Services/ContainerDisabledException.php',
        'MediaWiki\\Session\\BotPasswordSessionProvider' => __DIR__ . '/includes/session/BotPasswordSessionProvider.php',
        'MediaWiki\\Session\\CookieSessionProvider' => __DIR__ . '/includes/session/CookieSessionProvider.php',
        'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' => __DIR__ . '/includes/session/ImmutableSessionProviderWithCookie.php',
index 1378e96..6b7898d 100644 (file)
@@ -34,6 +34,7 @@
                "wikimedia/cdb": "1.3.0",
                "wikimedia/cldr-plural-rule-parser": "1.0.0",
                "wikimedia/composer-merge-plugin": "1.3.1",
+               "wikimedia/html-formatter": "1.0.1",
                "wikimedia/ip-set": "1.0.1",
                "wikimedia/php-session-serializer": "1.0.3",
                "wikimedia/relpath": "1.0.3",
index a743afa..370e18e 100644 (file)
                                                                        "type": "string",
                                                                        "description": "Equivalent of remoteBasePath, but relative to $wgExtensionAssetsPath"
                                                                },
+                                                               "skipFunction": {
+                                                                       "type": "string",
+                                                                       "description": "Modules that provide fallback functionality can provide a \"skip function\". This function, if provided, will be passed along to the module registry on the client. When this module is loaded (either directly or as a dependency of another module), then this function is executed first. If the function returns true, the module will instantly be considered \"ready\" without requesting the associated module resources. The value returned here must be valid javascript for execution in a private function. It must not contain the \"function () {\" and \"}\" wrapper though."
+                                                               },
                                                                "scripts": {
                                                                        "type": ["string", "array"],
                                                                        "description": "Scripts to always include (array of file paths)",
index 9c14607..31e9d92 100644 (file)
@@ -1997,18 +1997,9 @@ $user: $wgUser
 $request: $wgRequest
 $mediaWiki: The $mediawiki object
 
-'MediaWikiServices': Called when a global MediaWikiServices instance is
-initialized. Extensions may use this to define, replace, or wrap services.
-However, the preferred way to define a new service is
-the $wgServiceWiringFiles array.
-$services: MediaWikiServices
-
-'MediaWikiServices::resetLegacyServices': Called when MediaWikiServices resets
-global instances of all well known services that are not yet managed by
-MediaWikiServices directly. Extension may use this hook to reset their own
-global service instances. However, it is preferred for extensions to have their
-services managed by MediaWikiServices directly, by registering them
-via $wgServiceWiringFiles or the 'MediaWikiServices' hook.
+'MediaWikiServices': Override services in the default MediaWikiServices instance.
+Extensions may use this to define, replace, or wrap existing services.
+However, the preferred way to define a new service is the $wgServiceWiringFiles array.
 $services: MediaWikiServices
 
 'MessageCache::get': When fetching a message. Can be used to override the key
index 219e49d..e0466c4 100644 (file)
@@ -37,15 +37,6 @@ DI framework. Per default, $wgServiceWiringFiles lists
 includes/ServiceWiring.php, which defines all default service
 implementations, and specifies how they depend on each other ("wiring").
 
-Note that services get their configuration injected, and changes to global
-configuration variables will not have any effect on services that were already
-instantiated. This would typically be the case for low level services like
-the ConfigFactory or the ObjectCacheManager, which are used during extension
-registration. To address this issue, Setup.php resets the global service
-locator instance by calling MediaWikiServices::resetGlobalInstance() once
-configuration and extension registration is complete.
-
-
 When a new service is added to MediaWiki core, an instantiator function
 that will create the appropriate default instance for that service must
 be added to ServiceWiring.php. This makes the service available through
index ae2aeaa..10e6adb 100644 (file)
@@ -4562,6 +4562,7 @@ $wgDefaultUserOptions = [
        'watchcreations' => 1,
        'watchdefault' => 1,
        'watchdeletion' => 0,
+       'watchuploads' => 1,
        'watchlistdays' => 3.0,
        'watchlisthideanons' => 0,
        'watchlisthidebots' => 0,
index 655d756..2725753 100644 (file)
@@ -133,8 +133,7 @@ class ForkController {
                                $this->termReceived = false;
                        }
                } while ( count( $this->children ) );
-
-               $this->initProcess();
+               pcntl_signal( SIGTERM, SIG_DFL );
                return 'done';
        }
 
@@ -150,12 +149,14 @@ class ForkController {
 
        protected function prepareEnvironment() {
                global $wgMemc;
-               $wgMemc = null; // TODO: change all code that accesses this directly!
-
-               // NOTE: we want to destroy global service instances before forking,
-               // so no external resources such as database connections get copied
-               // to the child processes.
-               \MediaWiki\MediaWikiServices::disableStorageBackend();
+               // Don't share DB, storage, or memcached connections
+               wfGetLBFactory()->destroyInstance();
+               FileBackendGroup::destroySingleton();
+               LockManagerGroup::destroySingletons();
+               JobQueueGroup::destroySingletons();
+               ObjectCache::clear();
+               RedisConnectionPool::destroySingletons();
+               $wgMemc = null;
        }
 
        /**
@@ -177,7 +178,7 @@ class ForkController {
                        }
 
                        if ( !$pid ) {
-                               $this->initProcess();
+                               $this->initChild();
                                $this->childNumber = $i;
                                return 'child';
                        } else {
@@ -189,10 +190,9 @@ class ForkController {
                return 'parent';
        }
 
-       protected function initProcess() {
-               // Reset services, so we don't re-use connections.
-               \MediaWiki\MediaWikiServices::resetChildProcessServices();
-
+       protected function initChild() {
+               global $wgMemc, $wgMainCacheType;
+               $wgMemc = wfGetCache( $wgMainCacheType );
                $this->children = null;
                pcntl_signal( SIGTERM, SIG_DFL );
        }
index 8c55d9a..5c42bc2 100644 (file)
@@ -3109,9 +3109,6 @@ function wfSplitWikiID( $wiki ) {
  * Note 2: use $this->getDB() in maintenance scripts that may be invoked by
  * updater to ensure that a proper database is being updated.
  *
- * @todo Replace calls to wfGetDB with calls to LoadBalancer::getConnection()
- *       on an injected instance of LoadBalancer.
- *
  * @return DatabaseBase
  */
 function wfGetDB( $db, $groups = [], $wiki = false ) {
@@ -3121,30 +3118,20 @@ function wfGetDB( $db, $groups = [], $wiki = false ) {
 /**
  * Get a load balancer object.
  *
- * @deprecated since 1.27, use MediaWikiServices::getDBLoadBalancer()
- *              or MediaWikiServices::getDBLoadBalancerFactory() instead.
- *
  * @param string|bool $wiki Wiki ID, or false for the current wiki
  * @return LoadBalancer
  */
 function wfGetLB( $wiki = false ) {
-       if ( $wiki === false ) {
-               return \MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancer();
-       } else {
-               $factory = \MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
-               return $factory->getMainLB( $wiki );
-       }
+       return wfGetLBFactory()->getMainLB( $wiki );
 }
 
 /**
  * Get the load balancer factory object
  *
- * @deprecated since 1.27, use MediaWikiServices::getDBLoadBalancerFactory() instead.
- *
  * @return LBFactory
  */
 function wfGetLBFactory() {
-       return \MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+       return LBFactory::singleton();
 }
 
 /**
index 206f0f7..9bae8b5 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /**
- * Performs transformations of HTML by wrapping around libxml2 and working
- * around its countless bugs.
+ * Stub for extensions that haven't switched to Composer-based version of this class
+ * @todo: remove in 1.28
  *
  * 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
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
+ * @deprecated since 1.27, use HtmlFormatter\HtmlFormatter
  */
-class HtmlFormatter {
-       /**
-        * @var DOMDocument
-        */
-       private $doc;
-
-       private $html;
-       private $itemsToRemove = [];
-       private $elementsToFlatten = [];
-       protected $removeMedia = false;
-
-       /**
-        * Constructor
-        *
-        * @param string $html Text to process
-        */
-       public function __construct( $html ) {
-               $this->html = $html;
-       }
-
-       /**
-        * Turns a chunk of HTML into a proper document
-        * @param string $html
-        * @return string
-        */
-       public static function wrapHTML( $html ) {
-               return '<!doctype html><html><head></head><body>' . $html . '</body></html>';
-       }
-
-       /**
-        * Override this in descendant class to modify HTML after it has been converted from DOM tree
-        * @param string $html HTML to process
-        * @return string Processed HTML
-        */
-       protected function onHtmlReady( $html ) {
-               return $html;
-       }
-
-       /**
-        * @return DOMDocument DOM to manipulate
-        */
-       public function getDoc() {
-               if ( !$this->doc ) {
-                       // DOMDocument::loadHTML isn't very good with encodings, so
-                       // convert input to ASCII by encoding everything above 128 as entities.
-                       $html = mb_convert_encoding( $this->html, 'HTML-ENTITIES', 'UTF-8' );
-
-                       // Workaround for bug that caused spaces before references
-                       // to disappear during processing: https://phabricator.wikimedia.org/T55086
-                       // TODO: Please replace with a better fix if one can be found.
-                       $html = str_replace( ' <', '&#32;<', $html );
-
-                       libxml_use_internal_errors( true );
-                       $loader = libxml_disable_entity_loader();
-                       $this->doc = new DOMDocument();
-                       $this->doc->strictErrorChecking = false;
-                       $this->doc->loadHTML( $html );
-                       libxml_disable_entity_loader( $loader );
-                       libxml_use_internal_errors( false );
-                       $this->doc->encoding = 'UTF-8';
-               }
-               return $this->doc;
-       }
-
-       /**
-        * Sets whether images/videos/sounds should be removed from output
-        * @param bool $flag
-        */
-       public function setRemoveMedia( $flag = true ) {
-               $this->removeMedia = $flag;
-       }
-
-       /**
-        * Adds one or more selector of content to remove. A subset of CSS selector
-        * syntax is supported:
-        *
-        *   <tag>
-        *   <tag>.class
-        *   .<class>
-        *   #<id>
-        *
-        * @param array|string $selectors Selector(s) of stuff to remove
-        */
-       public function remove( $selectors ) {
-               $this->itemsToRemove = array_merge( $this->itemsToRemove, (array)$selectors );
-       }
-
-       /**
-        * Adds one or more element name to the list to flatten (remove tag, but not its content)
-        * Can accept undelimited regexes
-        *
-        * Note this interface may fail in surprising unexpected ways due to usage of regexes,
-        * so should not be relied on for HTML markup security measures.
-        *
-        * @param array|string $elements Name(s) of tag(s) to flatten
-        */
-       public function flatten( $elements ) {
-               $this->elementsToFlatten = array_merge( $this->elementsToFlatten, (array)$elements );
-       }
-
-       /**
-        * Instructs the formatter to flatten all tags
-        */
-       public function flattenAllTags() {
-               $this->flatten( '[?!]?[a-z0-9]+' );
-       }
-
-       /**
-        * Removes content we've chosen to remove.  The text of the removed elements can be
-        * extracted with the getText method.
-        * @return array Array of removed DOMElements
-        */
-       public function filterContent() {
-               $removals = $this->parseItemsToRemove();
-
-               // Bail out early if nothing to do
-               if ( array_reduce( $removals,
-                       function ( $carry, $item ) {
-                               return $carry && !$item;
-                       },
-                       true
-               ) ) {
-                       return [];
-               }
-
-               $doc = $this->getDoc();
-
-               // Remove tags
-
-               // You can't remove DOMNodes from a DOMNodeList as you're iterating
-               // over them in a foreach loop. It will seemingly leave the internal
-               // iterator on the foreach out of wack and results will be quite
-               // strange. Though, making a queue of items to remove seems to work.
-               $domElemsToRemove = [];
-               foreach ( $removals['TAG'] as $tagToRemove ) {
-                       $tagToRemoveNodes = $doc->getElementsByTagName( $tagToRemove );
-                       foreach ( $tagToRemoveNodes as $tagToRemoveNode ) {
-                               if ( $tagToRemoveNode ) {
-                                       $domElemsToRemove[] = $tagToRemoveNode;
-                               }
-                       }
-               }
-               $removed = $this->removeElements( $domElemsToRemove );
-
-               // Elements with named IDs
-               $domElemsToRemove = [];
-               foreach ( $removals['ID'] as $itemToRemove ) {
-                       $itemToRemoveNode = $doc->getElementById( $itemToRemove );
-                       if ( $itemToRemoveNode ) {
-                               $domElemsToRemove[] = $itemToRemoveNode;
-                       }
-               }
-               $removed = array_merge( $removed, $this->removeElements( $domElemsToRemove ) );
-
-               // CSS Classes
-               $domElemsToRemove = [];
-               $xpath = new DOMXPath( $doc );
-               foreach ( $removals['CLASS'] as $classToRemove ) {
-                       $elements = $xpath->query( '//*[contains(@class, "' . $classToRemove . '")]' );
-
-                       /** @var $element DOMElement */
-                       foreach ( $elements as $element ) {
-                               $classes = $element->getAttribute( 'class' );
-                               if ( preg_match( "/\b$classToRemove\b/", $classes ) && $element->parentNode ) {
-                                       $domElemsToRemove[] = $element;
-                               }
-                       }
-               }
-               $removed = array_merge( $removed, $this->removeElements( $domElemsToRemove ) );
-
-               // Tags with CSS Classes
-               foreach ( $removals['TAG_CLASS'] as $classToRemove ) {
-                       $parts = explode( '.', $classToRemove );
-
-                       $elements = $xpath->query(
-                               '//' . $parts[0] . '[@class="' . $parts[1] . '"]'
-                       );
-                       $removed = array_merge( $removed, $this->removeElements( $elements ) );
-               }
-
-               return $removed;
-       }
-
-       /**
-        * Removes a list of elelments from DOMDocument
-        * @param array|DOMNodeList $elements
-        * @return array Array of removed elements
-        */
-       private function removeElements( $elements ) {
-               $list = $elements;
-               if ( $elements instanceof DOMNodeList ) {
-                       $list = [];
-                       foreach ( $elements as $element ) {
-                               $list[] = $element;
-                       }
-               }
-               /** @var $element DOMElement */
-               foreach ( $list as $element ) {
-                       if ( $element->parentNode ) {
-                               $element->parentNode->removeChild( $element );
-                       }
-               }
-               return $list;
-       }
-
-       /**
-        * libxml in its usual pointlessness converts many chars to entities - this function
-        * perfoms a reverse conversion
-        * @param string $html
-        * @return string
-        */
-       private function fixLibXML( $html ) {
-               static $replacements;
-               if ( !$replacements ) {
-                       // We don't include rules like '&#34;' => '&amp;quot;' because entities had already been
-                       // normalized by libxml. Using this function with input not sanitized by libxml is UNSAFE!
-                       $replacements = new ReplacementArray( [
-                               '&quot;' => '&amp;quot;',
-                               '&amp;' => '&amp;amp;',
-                               '&lt;' => '&amp;lt;',
-                               '&gt;' => '&amp;gt;',
-                       ] );
-               }
-               $html = $replacements->replace( $html );
-
-               // Just in case the conversion in getDoc() above used named
-               // entities that aren't known to html_entity_decode().
-               $html = mb_convert_encoding( $html, 'UTF-8', 'HTML-ENTITIES' );
-
-               return $html;
-       }
-
-       /**
-        * Performs final transformations and returns resulting HTML.  Note that if you want to call this
-        * both without an element and with an element you should call it without an element first.  If you
-        * specify the $element in the method it'll change the underlying dom and you won't be able to get
-        * it back.
-        *
-        * @param DOMElement|string|null $element ID of element to get HTML from or
-        *   false to get it from the whole tree
-        * @return string Processed HTML
-        */
-       public function getText( $element = null ) {
-
-               if ( $this->doc ) {
-                       if ( $element !== null && !( $element instanceof DOMElement ) ) {
-                               $element = $this->doc->getElementById( $element );
-                       }
-                       if ( $element ) {
-                               $body = $this->doc->getElementsByTagName( 'body' )->item( 0 );
-                               $nodesArray = [];
-                               foreach ( $body->childNodes as $node ) {
-                                       $nodesArray[] = $node;
-                               }
-                               foreach ( $nodesArray as $nodeArray ) {
-                                       $body->removeChild( $nodeArray );
-                               }
-                               $body->appendChild( $element );
-                       }
-                       $html = $this->doc->saveHTML();
-
-                       $html = $this->fixLibXML( $html );
-                       if ( wfIsWindows() ) {
-                               // Cleanup for CRLF misprocessing of unknown origin on Windows.
-                               // If this error continues in the future, please track it down in the
-                               // XML code paths if possible and fix there.
-                               $html = str_replace( '&#13;', '', $html );
-                       }
-               } else {
-                       $html = $this->html;
-               }
-               // Remove stuff added by wrapHTML()
-               $html = preg_replace( '/<!--.*?-->|^.*?<body>|<\/body>.*$/s', '', $html );
-               $html = $this->onHtmlReady( $html );
-
-               if ( $this->elementsToFlatten ) {
-                       $elements = implode( '|', $this->elementsToFlatten );
-                       $html = preg_replace( "#</?($elements)\\b[^>]*>#is", '', $html );
-               }
-
-               return $html;
-       }
-
-       /**
-        * Helper function for parseItemsToRemove(). This function extracts the selector type
-        * and the raw name of a selector from a CSS-style selector string and assigns those
-        * values to parameters passed by reference. For example, if given '#toc' as the
-        * $selector parameter, it will assign 'ID' as the $type and 'toc' as the $rawName.
-        * @param string $selector CSS selector to parse
-        * @param string $type The type of selector (ID, CLASS, TAG_CLASS, or TAG)
-        * @param string $rawName The raw name of the selector
-        * @return bool Whether the selector was successfully recognised
-        * @throws MWException
-        */
-       protected function parseSelector( $selector, &$type, &$rawName ) {
-               if ( strpos( $selector, '.' ) === 0 ) {
-                       $type = 'CLASS';
-                       $rawName = substr( $selector, 1 );
-               } elseif ( strpos( $selector, '#' ) === 0 ) {
-                       $type = 'ID';
-                       $rawName = substr( $selector, 1 );
-               } elseif ( strpos( $selector, '.' ) !== 0 && strpos( $selector, '.' ) !== false ) {
-                       $type = 'TAG_CLASS';
-                       $rawName = $selector;
-               } elseif ( strpos( $selector, '[' ) === false && strpos( $selector, ']' ) === false ) {
-                       $type = 'TAG';
-                       $rawName = $selector;
-               } else {
-                       throw new MWException( __METHOD__ . "(): unrecognized selector '$selector'" );
-               }
-
-               return true;
-       }
-
-       /**
-        * Transforms CSS-style selectors into an internal representation suitable for
-        * processing by filterContent()
-        * @return array
-        */
-       protected function parseItemsToRemove() {
-               $removals = [
-                       'ID' => [],
-                       'TAG' => [],
-                       'CLASS' => [],
-                       'TAG_CLASS' => [],
-               ];
-
-               foreach ( $this->itemsToRemove as $itemToRemove ) {
-                       $type = '';
-                       $rawName = '';
-                       if ( $this->parseSelector( $itemToRemove, $type, $rawName ) ) {
-                               $removals[$type][] = $rawName;
-                       }
-               }
-
-               if ( $this->removeMedia ) {
-                       $removals['TAG'][] = 'img';
-                       $removals['TAG'][] = 'audio';
-                       $removals['TAG'][] = 'video';
-               }
-
-               return $removals;
-       }
+class HtmlFormatter extends HtmlFormatter\HtmlFormatter {
 }
index 3f42038..b12f49f 100644 (file)
@@ -80,7 +80,7 @@ class Http {
                } else {
                        $errors = $status->getErrorsByType( 'error' );
                        $logger = LoggerFactory::getInstance( 'http' );
-                       $logger->warning( $status->getWikiText( null, null, 'en' ),
+                       $logger->warning( $status->getWikiText( false, false, 'en' ),
                                [ 'error' => $errors, 'caller' => $caller, 'content' => $req->getContent() ] );
                        return false;
                }
index f5ae2d5..7b1def9 100644 (file)
@@ -1,39 +1,15 @@
 <?php
 namespace MediaWiki;
 
-use ApiQueryInfo;
-use CentralIdLookup;
-use Config;
 use ConfigFactory;
-use DeferredUpdates;
-use FileBackendGroup;
 use GlobalVarConfig;
+use Config;
 use Hooks;
-use IP;
-use JobQueueAggregator;
-use Language;
 use LBFactory;
-use LinkCache;
 use LoadBalancer;
-use LockManagerGroup;
-use MagicWord;
-use MediaHandler;
 use MediaWiki\Services\ServiceContainer;
-use MediaWiki\Session\SessionManager;
-use MessageCache;
-use MWException;
-use MWNamespace;
-use MWTidy;
-use ObjectCache;
-use RedisConnectionPool;
-use RepoGroup;
-use RequestContext;
-use ResourceLoader;
 use SiteLookup;
 use SiteStore;
-use SpecialPageFactory;
-use Title;
-use User;
 
 /**
  * Service locator for MediaWiki core services.
@@ -73,11 +49,6 @@ use User;
  */
 class MediaWikiServices extends ServiceContainer {
 
-       /**
-        * @var MediaWikiServices|null
-        */
-       private static $instance = null;
-
        /**
         * Returns the global default instance of the top level service locator.
         *
@@ -91,286 +62,27 @@ class MediaWikiServices extends ServiceContainer {
         * @return MediaWikiServices
         */
        public static function getInstance() {
-               if ( self::$instance === null ) {
+               static $instance = null;
+
+               if ( $instance === null ) {
                        // NOTE: constructing GlobalVarConfig here is not particularly pretty,
                        // but some information from the global scope has to be injected here,
                        // even if it's just a file name or database credentials to load
                        // configuration from.
-                       $bootstrapConfig = new GlobalVarConfig();
-                       self::$instance = self::newInstance( $bootstrapConfig );
-               }
+                       $config = new GlobalVarConfig();
+                       $instance = new self( $config );
 
-               return self::$instance;
-       }
+                       // Load the default wiring from the specified files.
+                       $wiringFiles = $config->get( 'ServiceWiringFiles' );
+                       $instance->loadWiringFiles( $wiringFiles );
 
-       /**
-        * Replaces the global MediaWikiServices instance.
-        *
-        * @note This is for use in PHPUnit tests only!
-        *
-        * @throws MWException if called outside of PHPUnit tests.
-        *
-        * @param MediaWikiServices $services The new MediaWikiServices object.
-        *
-        * @return MediaWikiServices The old MediaWikiServices object, so it can be restored later.
-        */
-       public static function forceGlobalInstance( MediaWikiServices $services ) {
-               if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
-                       throw new MWException( __METHOD__ . ' must not be used outside unit tests.' );
-               }
-
-               $old = self::getInstance();
-               self::$instance = $services;
-
-               self::resetLegacyServices();
-
-               return $old;
-       }
-
-       /**
-        * Creates a new instance of MediaWikiServices and sets it as the global default
-        * instance. getInstance() will return a different MediaWikiServices object
-        * after every call to resetGlobalServiceLocator().
-        *
-        * @warning This should not be used during normal operation. It is intended for use
-        * when the configuration has changed significantly since bootstrap time, e.g.
-        * during the installation process or during testing.
-        *
-        * @warning Calling resetGlobalServiceLocator() may leave the application in an inconsistent
-        * state. Calling this is only safe under the ASSUMPTION that NO REFERENCE to
-        * any of the services managed by MediaWikiServices exist. If any service objects
-        * managed by the old MediaWikiServices instance remain in use, they may INTERFERE
-        * with the operation of the services managed by the new MediaWikiServices.
-        * Operating with a mix of services created by the old and the new
-        * MediaWikiServices instance may lead to INCONSISTENCIES and even DATA LOSS!
-        * Any class implementing LAZY LOADING is especially prone to this problem,
-        * since instances would typically retain a reference to a storage layer service.
-        *
-        * @see forceGlobalInstance()
-        * @see resetGlobalInstance()
-        * @see resetBetweenTest()
-        *
-        * @param Config|null $bootstrapConfig The Config object to be registered as the
-        *        'BootstrapConfig' service. This has to contain at least the information
-        *        needed to set up the 'ConfigFactory' service. If not given, the bootstrap
-        *        config of the old instance of MediaWikiServices will be re-used. If there
-        *        was no previous instance, a new GlobalVarConfig object will be used to
-        *        bootstrap the services.
-        *
-        * @throws MWException
-        */
-       public static function resetGlobalInstance( Config $bootstrapConfig = null ) {
-               if ( self::$instance === null ) {
-                       // no global instance yet, nothing to reset
-                       return;
+                       // Provide a traditional hook point to allow extensions to configure services.
+                       Hooks::run( 'MediaWikiServices', [ $instance ] );
                }
 
-               if ( $bootstrapConfig === null ) {
-                       $bootstrapConfig = self::$instance->getBootstrapConfig();
-               }
-
-               self::$instance->destroy();
-
-               self::$instance = self::newInstance( $bootstrapConfig );
-
-               self::resetLegacyServices();
-       }
-
-       /**
-        * Creates a new MediaWikiServices instance and initializes it according to the
-        * given $bootstrapConfig. In particular, all wiring files defined in the
-        * ServiceWiringFiles setting are loaded, and the MediaWikiServices hook is called.
-        *
-        * @param Config|null $bootstrapConfig The Config object to be registered as the
-        *        'BootstrapConfig' service. This has to contain at least the information
-        *        needed to set up the 'ConfigFactory' service. If not provided, any call
-        *        to getBootstrapConfig(), getConfigFactory, or getMainConfig will fail.
-        *        A MediaWikiServices instance without access to configuration is called
-        *        "primordial".
-        *
-        * @return MediaWikiServices
-        * @throws MWException
-        */
-       private static function newInstance( Config $bootstrapConfig ) {
-               $instance = new self( $bootstrapConfig );
-
-               // Load the default wiring from the specified files.
-               $wiringFiles = $bootstrapConfig->get( 'ServiceWiringFiles' );
-               $instance->loadWiringFiles( $wiringFiles );
-
-               // Provide a traditional hook point to allow extensions to configure services.
-               Hooks::run( 'MediaWikiServices', [ $instance ] );
-
                return $instance;
        }
 
-       /**
-        * Resets global instances of services that have not yet been ported to using
-        * MediaWikiServices to manage their default instance.
-        *
-        * @note eventually, all global service instances are to be managed by MediaWikiServices.
-        * To emulate the effect of resetting the global service locator, we reset the individual
-        * static singletons for now.
-        *
-        * @note As long as we don't know the interdependencies between the services, the only way
-        * to reset services consistently is to reset all services at once. This should be ok since
-        * there should rarely be a need to reset all processes.
-        */
-       private static function resetLegacyServices() {
-               global $wgContLang, $wgUser, $wgMemc, $wgRequest;
-
-               $services = self::getInstance();
-               $config = $services->getMainConfig();
-
-               // NOTE: all the services instance that get reset below should be migrated
-               // to be managed by MediaWikiServices. Eventually, this method can then be
-               // removed.
-
-               User::resetIdByNameCache();
-               LinkCache::singleton()->clear();
-               Title::clearCaches();
-
-               MWTidy::destroySingleton();
-               MagicWord::clearCache();
-               SpecialPageFactory::resetList();
-               JobQueueAggregator::destroySingleton();
-               DeferredUpdates::clearPendingUpdates();
-               CentralIdLookup::resetCache();
-               MediaHandler::resetCache();
-               IP::clearCaches();
-               ResourceLoader::clearCache();
-
-               ApiQueryInfo::resetTokenCache();
-
-               RepoGroup::destroySingleton();
-
-               MessageCache::destroyInstance();
-
-               MWNamespace::getCanonicalNamespaces( true ); # reset namespace cache
-               Language::$mLangObjCache = [];
-               Language::getLocalisationCache()->unloadAll();
-
-               ObjectCache::clear();
-               RedisConnectionPool::destroySingletons();
-               FileBackendGroup::destroySingleton();
-               LockManagerGroup::destroySingletons();
-
-               RequestContext::resetMain();
-               $wgRequest = RequestContext::getMain()->getRequest(); // BackCompat
-
-               $wgContLang = Language::factory( $config->get( 'LanguageCode' ) );
-               $wgContLang->resetNamespaces(); # reset namespace cache
-
-               $wgMemc = ObjectCache::getLocalClusterInstance();
-               $wgUser = RequestContext::getMain()->getUser();
-
-               SessionManager::resetCache();
-
-               // Provide a hook point for extensions that need to reset global service instances.
-               Hooks::run( 'MediaWikiServices::resetLegacyServices', [ $services ] );
-       }
-
-       /**
-        * Disables all storage layer services. After calling this, any attempt to access the
-        * storage layer will result in an error. Use resetGlobalInstance() to restore normal
-        * operation.
-        *
-        * @warning This is intended for extreme situations only and should never be used
-        * while serving normal web requests. Legitimate use cases for this method include
-        * the installation process. Test fixtures may also use this, if the fixture relies
-        * on globalState.
-        *
-        * @see resetGlobalInstance()
-        * @see resetChildProcessServices()
-        */
-       public static function disableStorageBackend() {
-               // TODO: also disable some Caches, JobQueues, etc
-               $destroy = [ 'DBLoadBalancer', 'DBLoadBalancerFactory' ];
-               $services = self::getInstance();
-
-               foreach ( $destroy as $name ) {
-                       $services->disableService( $name );
-               }
-       }
-
-       /**
-        * Resets any services that may have become stale after a child process
-        * returns from after pcntl_fork(). It's also safe, but generally unnecessary,
-        * to call this method from the parent process.
-        *
-        * @note This is intended for use in the context of process forking only!
-        *
-        * @see resetGlobalInstance()
-        * @see disableStorageBackend()
-        */
-       public static function resetChildProcessServices() {
-               // NOTE: for now, just reset everything. Since we don't know the interdependencies
-               // between services, we can't do this more selectively at this time.
-               self::resetGlobalInstance();
-
-               // Child, reseed because there is no bug in PHP:
-               // http://bugs.php.net/bug.php?id=42465
-               mt_srand( getmypid() );
-       }
-
-       /**
-        * Resets the given service for testing purposes.
-        *
-        * @warning This is generally unsafe! Other services may still retain references
-        * to the stale service instance, leading to failures and inconsistencies. Subclasses
-        * may use this method to reset specific services under specific instances, but
-        * it should not be exposed to application logic.
-        *
-        * @note With proper dependency injection used throughout the codebase, this method
-        * should not be needed. It is provided to allow tests that pollute global service
-        * instances to clean up.
-        *
-        * @param string $name
-        * @param string $destroy Whether the service instance should be destroyed if it exists.
-        *        When set to false, any existing service instance will effectively be detached
-        *        from the container.
-        *
-        * @throws MWException if called outside of PHPUnit tests.
-        */
-       public function resetServiceForTesting( $name, $destroy = true ) {
-               if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
-                       throw new MWException( 'resetServiceForTesting() must not be used outside unit tests.' );
-               }
-
-               $this->resetService( $name, $destroy );
-       }
-
-       /**
-        * Convenience method that throws an exception if called outside the service bootstrapping
-        * phase as indicated by the MW_SERVICE_BOOTSTRAP_COMPLETE constant - that is, after
-        * Setup.php has called resetGlobalInstance(). Additionally, no exception is thrown if
-        * this method is called during unit testing (as indicated by MW_PHPUNIT_TEST) or
-        * during installation (as indicated by MEDIAWIKI_INSTALL).
-        *
-        * This method is intended to be used to safeguard against accidentally resetting
-        * global service instances that are not yet managed by MediaWikiServices. It is
-        * defined here in the MediaWikiServices services class to keep the knowledge about
-        * how the bootstrapping phase is managed central.
-        *
-        * @param string $method the name of the caller method, as given by __METHOD__.
-        *
-        * @throws MWException if called outside bootstrap mode.
-        *
-        * @see resetGlobalInstance()
-        * @see forceGlobalInstance()
-        * @see disableStorageBackend()
-        */
-       public static function failUnlessBootstrapping( $method ) {
-               if ( !defined( 'MW_PHPUNIT_TEST' )
-                       && !defined( 'MEDIAWIKI_INSTALL' )
-                       && defined( 'MW_SERVICE_BOOTSTRAP_COMPLETE' )
-               ) {
-                       throw new MWException( $method . ' may only be called during bootstrapping unit tests!' );
-               }
-
-               ObjectCache::clear();
-       }
-
        /**
         * @param Config $config The Config object to be registered as the 'BootstrapConfig' service.
         *        This has to contain at least the information needed to set up the 'ConfigFactory'
@@ -379,14 +91,12 @@ class MediaWikiServices extends ServiceContainer {
        public function __construct( Config $config ) {
                parent::__construct();
 
-               // Register the given Config object as the bootstrap config service.
+               // register the given Config object as the bootstrap config service.
                $this->defineService( 'BootstrapConfig', function() use ( $config ) {
                        return $config;
                } );
        }
 
-       // CONVENIENCE GETTERS ////////////////////////////////////////////////////
-
        /**
         * Returns the Config object containing the bootstrap configuration.
         * Bootstrap configuration would typically include database credentials
@@ -434,20 +144,6 @@ class MediaWikiServices extends ServiceContainer {
                return $this->getService( 'SiteStore' );
        }
 
-       /**
-        * @return LBFactory
-        */
-       public function getDBLoadBalancerFactory() {
-               return $this->getService( 'DBLoadBalancerFactory' );
-       }
-
-       /**
-        * @return LoadBalancer The main DB load balancer for the local wiki.
-        */
-       public function getDBLoadBalancer() {
-               return $this->getService( 'DBLoadBalancer' );
-       }
-
        ///////////////////////////////////////////////////////////////////////////
        // NOTE: When adding a service getter here, don't forget to add a test
        // case for it in MediaWikiServicesTest::provideGetters() and in
index bc3e3f1..3654384 100644 (file)
@@ -33,6 +33,33 @@ class PageProps {
         */
        private static $instance;
 
+       /**
+        * Overrides the default instance of this class
+        * This is intended for use while testing and will fail if MW_PHPUNIT_TEST is not defined.
+        *
+        * If this method is used it MUST also be called with null after a test to ensure a new
+        * default instance is created next time getInstance is called.
+        *
+        * @since 1.27
+        *
+        * @param PageProps|null $store
+        *
+        * @return ScopedCallback to reset the overridden value
+        * @throws MWException
+        */
+       public static function overrideInstance( PageProps $store = null ) {
+               if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
+                       throw new MWException(
+                               'Cannot override ' . __CLASS__ . 'default instance in operation.'
+                       );
+               }
+               $previousValue = self::$instance;
+               self::$instance = $store;
+               return new ScopedCallback( function() use ( $previousValue ) {
+                       self::$instance = $previousValue;
+               } );
+       }
+
        /**
         * @return PageProps
         */
index 66a8152..3f56240 100644 (file)
@@ -544,12 +544,14 @@ class Preferences {
                                ];
                        }
                        if ( $config->get( 'EnotifUserTalk' ) || $config->get( 'EnotifWatchlist' ) ) {
-                               $defaultPreferences['enotifminoredits'] = [
-                                       'type' => 'toggle',
-                                       'section' => 'personal/email',
-                                       'label-message' => 'tog-enotifminoredits',
-                                       'disabled' => $disableEmailPrefs,
-                               ];
+                               if ( $config->get( 'EnotifMinorEdits' ) ) {
+                                       $defaultPreferences['enotifminoredits'] = [
+                                               'type' => 'toggle',
+                                               'section' => 'personal/email',
+                                               'label-message' => 'tog-enotifminoredits',
+                                               'disabled' => $disableEmailPrefs,
+                                       ];
+                               }
 
                                if ( $config->get( 'EnotifRevealEditorAddress' ) ) {
                                        $defaultPreferences['enotifrevealaddr'] = [
@@ -1042,10 +1044,14 @@ class Preferences {
                        $watchTypes['rollback'] = 'watchrollback';
                }
 
+               if ( $user->isAllowed( 'upload' ) ) {
+                       $watchTypes['upload'] = 'watchuploads';
+               }
+
                foreach ( $watchTypes as $action => $pref ) {
                        if ( $user->isAllowed( $action ) ) {
                                // Messages:
-                               // tog-watchdefault, tog-watchmoves, tog-watchdeletion, tog-watchcreations
+                               // tog-watchdefault, tog-watchmoves, tog-watchdeletion, tog-watchcreations, tog-watchuploads
                                // tog-watchrollback
                                $defaultPreferences[$pref] = [
                                        'type' => 'toggle',
index 5ec1d64..d8709b9 100644 (file)
 use MediaWiki\MediaWikiServices;
 
 return [
-       'DBLoadBalancerFactory' => function( MediaWikiServices $services ) {
-               // NOTE: Defining the LBFactory class via LBFactoryConf is supported for
-               // backwards compatibility. The preferred way would be to register a
-               // callback for DBLoadBalancerFactory that constructs the desired LBFactory
-               // directly.
-               $config = $services->getMainConfig()->get( 'LBFactoryConf' );
-
-               $class = LBFactory::getLBFactoryClass( $config );
-               if ( !isset( $config['readOnlyReason'] ) ) {
-                       // TODO: replace the global wfConfiguredReadOnlyReason() with a service.
-                       $config['readOnlyReason'] = wfConfiguredReadOnlyReason();
-               }
-
-               return new $class( $config );
-       },
-
-       'DBLoadBalancer' => function( MediaWikiServices $services ) {
-               // just return the default LB from the DBLoadBalancerFactory service
-               return $services->getDBLoadBalancerFactory()->getMainLB();
-       },
-
        'SiteStore' => function( MediaWikiServices $services ) {
-               $rawSiteStore = new DBSiteStore( $services->getDBLoadBalancer() );
+               $loadBalancer = wfGetLB(); // TODO: use LB from MediaWikiServices
+               $rawSiteStore = new DBSiteStore( $loadBalancer );
 
                // TODO: replace wfGetCache with a CacheFactory service.
                // TODO: replace wfIsHHVM with a capabilities service.
diff --git a/includes/Services/CannotReplaceActiveServiceException.php b/includes/Services/CannotReplaceActiveServiceException.php
deleted file mode 100644 (file)
index 4993073..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-namespace MediaWiki\Services;
-
-use Exception;
-use RuntimeException;
-
-/**
- * Exception thrown when trying to replace an already active service.
- *
- * 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
- *
- * @since 1.27
- */
-
-/**
- * Exception thrown when trying to replace an already active service.
- */
-class CannotReplaceActiveServiceException extends RuntimeException {
-
-       /**
-        * @param string $serviceName
-        * @param Exception|null $previous
-        */
-       public function __construct( $serviceName, Exception $previous = null ) {
-               parent::__construct( "Cannot replace an active service: $serviceName", 0, $previous );
-       }
-
-}
diff --git a/includes/Services/ContainerDisabledException.php b/includes/Services/ContainerDisabledException.php
deleted file mode 100644 (file)
index ede076d..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-namespace MediaWiki\Services;
-
-use Exception;
-use RuntimeException;
-
-/**
- * Exception thrown when trying to access a service on a disabled container or factory.
- *
- * 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
- *
- * @since 1.27
- */
-
-/**
- * Exception thrown when trying to access a service on a disabled container or factory.
- */
-class ContainerDisabledException extends RuntimeException {
-
-       /**
-        * @param Exception|null $previous
-        */
-       public function __construct( Exception $previous = null ) {
-               parent::__construct( 'Container disabled!', 0, $previous );
-       }
-
-}
diff --git a/includes/Services/DestructibleService.php b/includes/Services/DestructibleService.php
deleted file mode 100644 (file)
index 6ce9af2..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-namespace MediaWiki\Services;
-
-/**
- * Interface for destructible services.
- *
- * 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
- *
- * @since 1.27
- */
-
-/**
- * DestructibleService defines a standard interface for shutting down a service instance.
- * The intended use is for a service container to be able to shut down services that should
- * no longer be used, and allow such services to release any system resources.
- *
- * @note There is no expectation that services will be destroyed when the process (or web request)
- * terminates.
- */
-interface DestructibleService {
-
-       /**
-        * Notifies the service object that it should expect to no longer be used, and should release
-        * any system resources it may own. The behavior of all service methods becomes undefined after
-        * destroy() has been called. It is recommended that implementing classes should throw an
-        * exception when service methods are accessed after destroy() has been called.
-        */
-       public function destroy();
-
-}
diff --git a/includes/Services/NoSuchServiceException.php b/includes/Services/NoSuchServiceException.php
deleted file mode 100644 (file)
index 36e50d2..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-namespace MediaWiki\Services;
-
-use Exception;
-use RuntimeException;
-
-/**
- * Exception thrown when the requested service is not known.
- *
- * 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
- *
- * @since 1.27
- */
-
-/**
- * Exception thrown when the requested service is not known.
- */
-class NoSuchServiceException extends RuntimeException {
-
-       /**
-        * @param string $serviceName
-        * @param Exception|null $previous
-        */
-       public function __construct( $serviceName, Exception $previous = null ) {
-               parent::__construct( "No such service: $serviceName", 0, $previous );
-       }
-
-}
diff --git a/includes/Services/ServiceAlreadyDefinedException.php b/includes/Services/ServiceAlreadyDefinedException.php
deleted file mode 100644 (file)
index c6344d3..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-namespace MediaWiki\Services;
-
-use Exception;
-use RuntimeException;
-
-/**
- * Exception thrown when a service was already defined, but the
- * caller expected it to not exist.
- *
- * 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
- *
- * @since 1.27
- */
-
-/**
- * Exception thrown when a service was already defined, but the
- * caller expected it to not exist.
- */
-class ServiceAlreadyDefinedException extends RuntimeException {
-
-       /**
-        * @param string $serviceName
-        * @param Exception|null $previous
-        */
-       public function __construct( $serviceName, Exception $previous = null ) {
-               parent::__construct( "Service already defined: $serviceName", 0, $previous );
-       }
-
-}
index ba3ab32..e3cda2e 100644 (file)
@@ -43,7 +43,7 @@ use Wikimedia\Assert\Assert;
  * @see docs/injection.txt for an overview of using dependency injection in the
  *      MediaWiki code base.
  */
-class ServiceContainer implements DestructibleService {
+class ServiceContainer {
 
        /**
         * @var object[]
@@ -60,11 +60,6 @@ class ServiceContainer implements DestructibleService {
         */
        private $extraInstantiationParams;
 
-       /**
-        * @var boolean
-        */
-       private $destroyed = false;
-
        /**
         * @param array $extraInstantiationParams Any additional parameters to be passed to the
         * instantiator function when creating a service. This is typically used to provide
@@ -74,25 +69,6 @@ class ServiceContainer implements DestructibleService {
                $this->extraInstantiationParams = $extraInstantiationParams;
        }
 
-       /**
-        * Destroys all contained service instances that implement the DestructibleService
-        * interface. This will render all services obtained from this MediaWikiServices
-        * instance unusable. In particular, this will disable access to the storage backend
-        * via any of these services. Any future call to getService() will throw an exception.
-        *
-        * @see resetGlobalInstance()
-        */
-       public function destroy() {
-               foreach ( $this->getServiceNames() as $name ) {
-                       $service = $this->peekService( $name );
-                       if ( $service !== null && $service instanceof DestructibleService ) {
-                               $service->destroy();
-                       }
-               }
-
-               $this->destroyed = true;
-       }
-
        /**
         * @param array $wiringFiles A list of PHP files to load wiring information from.
         * Each file is loaded using PHP's include mechanism. Each file is expected to
@@ -138,28 +114,6 @@ class ServiceContainer implements DestructibleService {
                return isset( $this->serviceInstantiators[$name] );
        }
 
-       /**
-        * Returns the service instance for $name only if that service has already been instantiated.
-        * This is intended for situations where services get destroyed/cleaned up, so we can
-        * avoid creating a service just to destroy it again.
-        *
-        * @note Application logic should use getService() instead.
-        *
-        * @see getService().
-        *
-        * @param string $name
-        *
-        * @return object|null The service instance, or null if the service has not yet been instantiated.
-        * @throws RuntimeException if $name does not refer to a known service.
-        */
-       public function peekService( $name ) {
-               if ( !$this->hasService( $name ) ) {
-                       throw new NoSuchServiceException( $name );
-               }
-
-               return isset( $this->services[$name] ) ? $this->services[$name] : null;
-       }
-
        /**
         * @return string[]
         */
@@ -185,7 +139,7 @@ class ServiceContainer implements DestructibleService {
                Assert::parameterType( 'string', $name, '$name' );
 
                if ( $this->hasService( $name ) ) {
-                       throw new ServiceAlreadyDefinedException( $name );
+                       throw new RuntimeException( 'Service already defined: ' . $name );
                }
 
                $this->serviceInstantiators[$name] = $instantiator;
@@ -211,78 +165,16 @@ class ServiceContainer implements DestructibleService {
                Assert::parameterType( 'string', $name, '$name' );
 
                if ( !$this->hasService( $name ) ) {
-                       throw new NoSuchServiceException( $name );
+                       throw new RuntimeException( 'Service not defined: ' . $name );
                }
 
                if ( isset( $this->services[$name] ) ) {
-                       throw new CannotReplaceActiveServiceException( $name );
+                       throw new RuntimeException( 'Cannot redefine a service that is already in use: ' . $name );
                }
 
                $this->serviceInstantiators[$name] = $instantiator;
        }
 
-       /**
-        * Disables a service.
-        *
-        * @note Attempts to call getService() for a disabled service will result
-        * in a DisabledServiceException. Calling peekService for a disabled service will
-        * return null. Disabled services are listed by getServiceNames(). A disabled service
-        * can be enabled again using redefineService().
-        *
-        * @note If the service was already active (that is, instantiated) when getting disabled,
-        * and the service instance implements DestructibleService, destroy() is called on the
-        * service instance.
-        *
-        * @see redefineService()
-        * @see resetService()
-        *
-        * @param string $name The name of the service to disable.
-        *
-        * @throws RuntimeException if $name is not a known service.
-        */
-       public function disableService( $name ) {
-               $this->resetService( $name );
-
-               $this->redefineService( $name, function() use ( $name ) {
-                       throw new ServiceDisabledException( $name );
-               } );
-       }
-
-       /**
-        * Resets a service by dropping the service instance.
-        * If the service instances implements DestructibleService, destroy()
-        * is called on the service instance.
-        *
-        * @warning This is generally unsafe! Other services may still retain references
-        * to the stale service instance, leading to failures and inconsistencies. Subclasses
-        * may use this method to reset specific services under specific instances, but
-        * it should not be exposed to application logic.
-        *
-        * @note This is declared final so subclasses can not interfere with the expectations
-        * disableService() has when calling resetService().
-        *
-        * @see redefineService()
-        * @see disableService().
-        *
-        * @param string $name The name of the service to reset.
-        * @param bool $destroy Whether the service instance should be destroyed if it exists.
-        *        When set to false, any existing service instance will effectively be detached
-        *        from the container.
-        *
-        * @throws RuntimeException if $name is not a known service.
-        */
-       final protected function resetService( $name, $destroy = true ) {
-               Assert::parameterType( 'string', $name, '$name' );
-
-               $instance = $this->peekService( $name );
-
-               if ( $destroy && $instance instanceof DestructibleService )  {
-                       $instance->destroy();
-               }
-
-               unset( $this->services[$name] );
-       }
-
        /**
         * Returns a service object of the kind associated with $name.
         * Services instances are instantiated lazily, on demand.
@@ -297,16 +189,10 @@ class ServiceContainer implements DestructibleService {
         *
         * @param string $name The service name
         *
-        * @throws NoSuchServiceException if $name is not a known service.
-        * @throws ServiceDisabledException if this container has already been destroyed.
-        *
+        * @throws InvalidArgumentException if $name is not a known service.
         * @return object The service instance
         */
        public function getService( $name ) {
-               if ( $this->destroyed ) {
-                       throw new ContainerDisabledException();
-               }
-
                if ( !isset( $this->services[$name] ) ) {
                        $this->services[$name] = $this->createService( $name );
                }
@@ -327,7 +213,7 @@ class ServiceContainer implements DestructibleService {
                                array_merge( [ $this ], $this->extraInstantiationParams )
                        );
                } else {
-                       throw new NoSuchServiceException( $name );
+                       throw new InvalidArgumentException( 'Unknown service: ' . $name );
                }
 
                return $service;
diff --git a/includes/Services/ServiceDisabledException.php b/includes/Services/ServiceDisabledException.php
deleted file mode 100644 (file)
index ae15b7c..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-namespace MediaWiki\Services;
-
-use Exception;
-use RuntimeException;
-
-/**
- * Exception thrown when trying to access a disabled service.
- *
- * 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
- *
- * @since 1.27
- */
-
-/**
- * Exception thrown when trying to access a disabled service.
- */
-class ServiceDisabledException extends RuntimeException {
-
-       /**
-        * @param string $serviceName
-        * @param Exception|null $previous
-        */
-       public function __construct( $serviceName, Exception $previous = null ) {
-               parent::__construct( "Service disabled: $serviceName", 0, $previous );
-       }
-
-}
index c8910f4..cddb436 100644 (file)
@@ -23,7 +23,6 @@
  *
  * @file
  */
-use MediaWiki\MediaWikiServices;
 
 /**
  * This file is not a valid entry point, perform no further processing unless
@@ -362,11 +361,6 @@ if ( $wgEnableEmail ) {
        $wgUsersNotifiedOnAllChanges = [];
 }
 
-// Doesn't make sense to have if disabled.
-if ( !$wgEnotifMinorEdits ) {
-       $wgHiddenPrefs[] = 'enotifminoredits';
-}
-
 if ( $wgMetaNamespace === false ) {
        $wgMetaNamespace = str_replace( ' ', '_', $wgSitename );
 }
@@ -523,14 +517,6 @@ if ( !class_exists( 'AutoLoader' ) ) {
        require_once "$IP/includes/AutoLoader.php";
 }
 
-// Reset the global service locator, so any services that have already been created will be
-// re-created while taking into account any custom settings and extensions.
-MediaWikiServices::resetGlobalInstance( new GlobalVarConfig() );
-
-// Define a constant that indicates that the bootstrapping of the service locator
-// is complete.
-define( 'MW_SERVICE_BOOTSTRAP_COMPLETE', 1 );
-
 // Install a header callback to prevent caching of responses with cookies (T127993)
 if ( !$wgCommandLineMode ) {
        header_register_callback( function () {
@@ -688,7 +674,7 @@ if ( $wgCommandLineMode ) {
 Profiler::instance()->scopedProfileOut( $ps_misc );
 $ps_memcached = Profiler::instance()->scopedProfileIn( $fname . '-memcached' );
 
-$wgMemc = ObjectCache::getLocalClusterInstance();
+$wgMemc = wfGetMainCache();
 $messageMemc = wfGetMessageCacheStorage();
 $parserMemc = wfGetParserCacheStorage();
 
index f4a6894..95588a2 100644 (file)
@@ -268,13 +268,9 @@ class Title implements LinkTarget {
         * @return Title|null Title or null on an error.
         */
        public static function newFromText( $text, $defaultNamespace = NS_MAIN ) {
-               if ( is_object( $text ) ) {
-                       throw new InvalidArgumentException( '$text must be a string.' );
-               }
                // DWIM: Integers can be passed in here when page titles are used as array keys.
                if ( $text !== null && !is_string( $text ) && !is_int( $text ) ) {
-                       wfDebugLog( 'T76305', wfGetAllCallers( 5 ) );
-                       return null;
+                       throw new InvalidArgumentException( '$text must be a string.' );
                }
                if ( $text === null ) {
                        return null;
index b18d59c..b159f79 100644 (file)
@@ -43,6 +43,12 @@ class WebRequest {
         */
        const GETHEADER_LIST = 1;
 
+       /**
+        * The unique request ID.
+        * @var string
+        */
+       private static $reqId;
+
        /**
         * Lazy-init response object
         * @var WebResponse
@@ -257,14 +263,23 @@ class WebRequest {
         * @since 1.27
         */
        public static function getRequestId() {
-               static $reqId;
-
-               if ( !$reqId ) {
-                       $reqId = isset( $_SERVER['UNIQUE_ID'] )
+               if ( !self::$reqId ) {
+                       self::$reqId = isset( $_SERVER['UNIQUE_ID'] )
                                ? $_SERVER['UNIQUE_ID'] : wfRandomString( 24 );
                }
 
-               return $reqId;
+               return self::$reqId;
+       }
+
+       /**
+        * Override the unique request ID. This is for sub-requests, such as jobs,
+        * that wish to use the same id but are not part of the same execution context.
+        *
+        * @param string $id
+        * @since 1.27
+        */
+       public static function overrideRequestId( $id ) {
+               self::$reqId = $id;
        }
 
        /**
index 1c20229..da64c03 100644 (file)
@@ -1298,7 +1298,7 @@ abstract class ApiBase extends ContextSource {
         */
        private function validateUser( $value, $encParamName ) {
                $title = Title::makeTitleSafe( NS_USER, $value );
-               if ( $title === null ) {
+               if ( $title === null || $title->hasFragment() ) {
                        $this->dieUsage(
                                "Invalid value '$value' for user parameter $encParamName",
                                "baduser_{$encParamName}"
index f2d6329..f7539ce 100644 (file)
@@ -24,6 +24,8 @@
  * @file
  */
 
+use HtmlFormatter\HtmlFormatter;
+
 /**
  * Class to output help for an API module
  *
index 02aae06..3891415 100644 (file)
@@ -103,7 +103,7 @@ class ApiLogin extends ApiBase {
                                $loginType = 'BotPassword';
                        } else {
                                LoggerFactory::getInstance( 'authmanager' )->info(
-                                       'BotPassword login failed: ' . $status->getWikiText()
+                                       'BotPassword login failed: ' . $status->getWikiText( false, false, 'en' )
                                );
                        }
                }
index ab94574..13e6340 100644 (file)
@@ -162,7 +162,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                        $gotOne = true;
 
                                        $fit = $this->addPageSubItem( $pageId,
-                                               self::getInfo( $img, $prop, $result,
+                                               static::getInfo( $img, $prop, $result,
                                                        $finalThumbParams, $opts
                                                )
                                        );
@@ -197,7 +197,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                        }
                                        $fit = self::getTransformCount() < self::TRANSFORM_LIMIT &&
                                                $this->addPageSubItem( $pageId,
-                                                       self::getInfo( $oldie, $prop, $result,
+                                                       static::getInfo( $oldie, $prop, $result,
                                                                $finalThumbParams, $opts
                                                        )
                                                );
@@ -533,11 +533,11 @@ class ApiQueryImageInfo extends ApiQueryBase {
                        if ( $metadata && $version !== 'latest' ) {
                                $metadata = $file->convertMetadataVersion( $metadata, $version );
                        }
-                       $vals['metadata'] = $metadata ? self::processMetaData( $metadata, $result ) : null;
+                       $vals['metadata'] = $metadata ? static::processMetaData( $metadata, $result ) : null;
                }
                if ( $commonmeta ) {
                        $metaArray = $file->getCommonMetaArray();
-                       $vals['commonmetadata'] = $metaArray ? self::processMetaData( $metaArray, $result ) : [];
+                       $vals['commonmetadata'] = $metaArray ? static::processMetaData( $metaArray, $result ) : [];
                }
 
                if ( $extmetadata ) {
@@ -601,7 +601,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                        ApiResult::META_BC_BOOLS => [ 'value' ],
                                ];
                                if ( is_array( $value ) ) {
-                                       $r['value'] = self::processMetaData( $value, $result );
+                                       $r['value'] = static::processMetaData( $value, $result );
                                } else {
                                        $r['value'] = $value;
                                }
@@ -641,8 +641,8 @@ class ApiQueryImageInfo extends ApiQueryBase {
                        'prop' => [
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_DFLT => 'timestamp|user',
-                               ApiBase::PARAM_TYPE => self::getPropertyNames(),
-                               ApiBase::PARAM_HELP_MSG_PER_VALUE => self::getPropertyMessages(),
+                               ApiBase::PARAM_TYPE => static::getPropertyNames(),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => static::getPropertyMessages(),
                        ],
                        'limit' => [
                                ApiBase::PARAM_TYPE => 'limit',
@@ -703,7 +703,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
         * @return array
         */
        public static function getPropertyNames( $filter = [] ) {
-               return array_keys( self::getPropertyMessages( $filter ) );
+               return array_keys( static::getPropertyMessages( $filter ) );
        }
 
        /**
@@ -787,7 +787,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
        public static function getPropertyDescriptions( $filter = [], $modulePrefix = '' ) {
                return array_merge(
                        [ 'What image information to get:' ],
-                       array_values( array_diff_key( self::getProperties( $modulePrefix ), array_flip( $filter ) ) )
+                       array_values( array_diff_key( static::getProperties( $modulePrefix ), array_flip( $filter ) ) )
                );
        }
 
index 2eb5d14..3955cc5 100644 (file)
@@ -116,7 +116,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                if ( is_null( $matches ) ) {
                        $this->dieUsage( "{$what} search is disabled", "search-{$what}-disabled" );
                } elseif ( $matches instanceof Status && !$matches->isGood() ) {
-                       $this->dieUsage( $matches->getWikiText(), 'search-error' );
+                       $this->dieUsage( $matches->getWikiText( false, false, 'en' ), 'search-error' );
                }
 
                if ( $resultPageSet === null ) {
index 3c02c9c..cc8e390 100644 (file)
@@ -272,18 +272,18 @@ class ApiStashEdit extends ApiBase {
                        }
 
                        $timeMs = 1000 * max( 0, microtime( true ) - $start );
-                       $stats->timing( 'editstash.lock-wait-time', $timeMs );
+                       $stats->timing( 'editstash.lock_wait_time', $timeMs );
                }
 
                if ( !is_object( $editInfo ) || !$editInfo->output ) {
-                       $stats->increment( 'editstash.cache-misses' );
+                       $stats->increment( 'editstash.cache_misses.no_stash' );
                        $logger->debug( "No cache value for key '$key'." );
                        return false;
                }
 
                $time = wfTimestamp( TS_UNIX, $editInfo->output->getTimestamp() );
                if ( ( time() - $time ) <= 3 ) {
-                       $stats->increment( 'editstash.cache-hits' );
+                       $stats->increment( 'editstash.cache_hits.presumed_fresh' );
                        $logger->debug( "Timestamp-based cache hit for key '$key'." );
                        return $editInfo; // assume nothing changed
                }
@@ -312,7 +312,7 @@ class ApiStashEdit extends ApiBase {
                        }
 
                        if ( $changed || $res->numRows() != $templateUses ) {
-                               $stats->increment( 'editstash.cache-misses' );
+                               $stats->increment( 'editstash.cache_misses.proven_stale' );
                                $logger->info( "Stale cache for key '$key'; template changed." );
                                return false;
                        }
@@ -336,13 +336,13 @@ class ApiStashEdit extends ApiBase {
                        }
 
                        if ( $changed || $res->numRows() != count( $files ) ) {
-                               $stats->increment( 'editstash.cache-misses' );
+                               $stats->increment( 'editstash.cache_misses.proven_stale' );
                                $logger->info( "Stale cache for key '$key'; file changed." );
                                return false;
                        }
                }
 
-               $stats->increment( 'editstash.cache-hits' );
+               $stats->increment( 'editstash.cache_hits.proven_fresh' );
                $logger->debug( "Cache hit for key '$key'." );
 
                return $editInfo;
index 326f8ba..1571b27 100644 (file)
@@ -257,7 +257,7 @@ class ApiUpload extends ApiBase {
                                        'offset' => $this->mUpload->getOffset(),
                                ];
 
-                               $this->dieUsage( $status->getWikiText(), 'stashfailed', 0, $extradata );
+                               $this->dieUsage( $status->getWikiText( false, false, 'en' ), 'stashfailed', 0, $extradata );
                        }
                }
 
@@ -288,7 +288,7 @@ class ApiUpload extends ApiBase {
                                                $filekey,
                                                [ 'result' => 'Failure', 'stage' => 'assembling', 'status' => $status ]
                                        );
-                                       $this->dieUsage( $status->getWikiText(), 'stashfailed' );
+                                       $this->dieUsage( $status->getWikiText( false, false, 'en' ), 'stashfailed' );
                                }
 
                                // The fully concatenated file has a new filekey. So remove
@@ -391,7 +391,7 @@ class ApiUpload extends ApiBase {
                        if ( !$progress ) {
                                $this->dieUsage( 'No result in status data', 'missingresult' );
                        } elseif ( !$progress['status']->isGood() ) {
-                               $this->dieUsage( $progress['status']->getWikiText(), 'stashfailed' );
+                               $this->dieUsage( $progress['status']->getWikiText( false, false, 'en' ), 'stashfailed' );
                        }
                        if ( isset( $progress['status']->value['verification'] ) ) {
                                $this->checkVerification( $progress['status']->value['verification'] );
@@ -685,16 +685,19 @@ class ApiUpload extends ApiBase {
                /** @var $file File */
                $file = $this->mUpload->getLocalFile();
 
-               // For preferences mode, we want to watch if 'watchdefault' is set or
-               // if the *file* doesn't exist and 'watchcreations' is set. But
-               // getWatchlistValue()'s automatic handling checks if the *title*
-               // exists or not, so we need to check both prefs manually.
+               // For preferences mode, we want to watch if 'watchdefault' is set,
+               // or if the *file* doesn't exist, and either 'watchuploads' or
+               // 'watchcreations' is set. But getWatchlistValue()'s automatic
+               // handling checks if the *title* exists or not, so we need to check
+               // all three preferences manually.
                $watch = $this->getWatchlistValue(
                        $this->mParams['watchlist'], $file->getTitle(), 'watchdefault'
                );
+
                if ( !$watch && $this->mParams['watchlist'] == 'preferences' && !$file->exists() ) {
-                       $watch = $this->getWatchlistValue(
-                               $this->mParams['watchlist'], $file->getTitle(), 'watchcreations'
+                       $watch = (
+                               $this->getWatchlistValue( 'preferences', $file->getTitle(), 'watchuploads' ) ||
+                               $this->getWatchlistValue( 'preferences', $file->getTitle(), 'watchcreations' )
                        );
                }
 
index 025741c..3259f70 100644 (file)
@@ -1,8 +1,10 @@
 {
        "@metadata": {
                "authors": [
-                       "Pirehelokan"
+                       "Pirehelokan",
+                       "Sarchia"
                ]
        },
-       "apihelp-parse-param-disabletoc": "پێرستی ناوەرۆک پیشان مەدە."
+       "apihelp-parse-param-disabletoc": "پێرستی ناوەرۆک پیشان مەدە.",
+       "api-help-param-default": "بنەڕەت: $1"
 }
index 40d12f4..9b9d348 100644 (file)
                        "YoViajo",
                        "Eloy",
                        "AlvaroMolina",
-                       "Ciencia Al Poder"
+                       "Ciencia Al Poder",
+                       "Lemondoge"
                ]
        },
        "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-maxlag": "El máximo retraso puede ser utilizado cuando MediaWiki está instalado en una base de datos replicada clúster. Para guardar las acciones que causan más de replicación de sitios de retraso, este parámetro puede hacer que el cliente espere hasta que el retraso de la replicación es menor que el valor especificado. En caso de exceso de lag, código de error <samp>maxlag</samp> se devuelve con un mensaje parecido a <samp>la Espera de $host: $lag segundos quedado</samp>.<br />Véase [[mw:Manual:Maxlag_parameter|Manual: Maxlag parámetro]] para más información.",
        "apihelp-main-param-smaxage": "Establece el encabezado HTTP <code>s-maxage</code> de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en caché.",
        "apihelp-main-param-maxage": "Establece el encabezado HTTP <code>max-age</code> de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en caché.",
        "apihelp-main-param-assert": "Comprobar que el usuario haya iniciado sesión si el valor es <kbd>user</kbd> o si tiene el permiso de bot si es <kbd>bot</kbd>.",
@@ -75,6 +77,7 @@
        "apihelp-delete-param-title": "Título de la página a eliminar. No se puede utilizar junto a <var>$1pageid</var>.",
        "apihelp-delete-param-pageid": "ID de la página a eliminar. No se puede utilizar junto a <var>$1title</var>.",
        "apihelp-delete-param-reason": "Motivo de la eliminación. Si no se especifica, se generará uno automáticamente.",
+       "apihelp-delete-param-tags": "Cambio de etiquetas para aplicar a la entrada en la eliminación del registro.",
        "apihelp-delete-param-watch": "Añadir esta página a la lista de seguimiento del usuario actual.",
        "apihelp-delete-param-unwatch": "Quitar la página de la lista de seguimiento del usuario actual.",
        "apihelp-delete-example-simple": "Borrar <kbd>Main Page</kbd>.",
@@ -91,6 +94,7 @@
        "apihelp-edit-param-minor": "Edición menor.",
        "apihelp-edit-param-notminor": "Edición no menor.",
        "apihelp-edit-param-bot": "Marcar esta edición como de bot.",
+       "apihelp-edit-param-recreate": "Reemplazar los errores acerca de la página de haber sido eliminados en el ínterin.",
        "apihelp-edit-param-createonly": "No editar la página si ya existe.",
        "apihelp-edit-param-nocreate": "Producir un error si la página no existe.",
        "apihelp-edit-param-watch": "Añadir la página a la lista de seguimiento del usuario actual.",
        "apihelp-patrol-description": "Verificar una página o revisión.",
        "apihelp-patrol-param-rcid": "Identificador de cambios recientes que verificar.",
        "apihelp-patrol-param-revid": "Identificador de revisión que patrullar.",
+       "apihelp-patrol-param-tags": "Cambio de etiquetas para aplicar a la entrada en la patrulla de registro.",
        "apihelp-patrol-example-rcid": "Verificar un cambio reciente.",
        "apihelp-patrol-example-revid": "Verificar una revisión.",
        "apihelp-protect-description": "Cambiar el nivel de protección de una página.",
        "apihelp-query-param-meta": "Qué metadatos obtener.",
        "apihelp-query-param-indexpageids": "Incluir una sección de ID de páginas adicional en la que se muestran todas las ID de páginas.",
        "apihelp-query-param-export": "Exportar las revisiones actuales de las páginas dadas o generadas.",
+       "apihelp-query-param-iwurl": "Si la URL completa si el título es un interwiki.",
        "apihelp-query+allcategories-description": "Enumerar todas las categorías.",
        "apihelp-query+allcategories-param-from": "La categoría para comenzar la enumeración",
        "apihelp-query+allcategories-param-to": "La categoría para detener la enumeración",
        "apihelp-query+imageinfo-param-prop": "Qué información del archivo se obtendrá:",
        "apihelp-query+imageinfo-paramvalue-prop-user": "Añade el usuario que subió cada versión del archivo.",
        "apihelp-query+imageinfo-paramvalue-prop-userid": "Añade la ID de usuario que subió cada versión del archivo.",
+       "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Agrega la canónica título del archivo.",
        "apihelp-query+imageinfo-param-limit": "Cuántos revisiones de archivos se devolverán por perfil.",
        "apihelp-query+imageinfo-param-urlheight": "Similar a $1urlwidth.",
+       "apihelp-query+imageinfo-param-extmetadatafilter": "Si se especifica y no vacío, sólo estas claves serán devueltos por $1prop=extmetadata.",
+       "apihelp-query+imageinfo-param-urlparam": "Un controlador específico de la cadena de parámetro. Por ejemplo, los archivos Pdf pueden utilizar <kbd>page15-100px</kbd>. <var>$1urlwidth</var> debe ser utilizado y debe ser consistente con <var>$1urlparam</var>.",
        "apihelp-query+imageinfo-param-localonly": "Buscar solo archivos en el repositorio local.",
        "apihelp-query+images-description": "Devuelve todos los archivos contenidos en las páginas dadas.",
        "apihelp-query+images-param-limit": "Cuántos archivos se devolverán.",
        "api-help-param-deprecated": "En desuso.",
        "api-help-param-required": "Este parámetro es obligatorio.",
        "api-help-datatypes-header": "Tipos de datos",
-       "api-help-datatypes": "Algunos tipos de parámetros en las solicitudes de API necesita más explicación:\n;booleano\n:Los parámetros booleanos trabajo como casillas de verificación HTML: si el parámetro se especifica, independientemente de su valor, se considera verdadero. Para un valor false, se omite el parámetro completo.\n;marca de tiempo\n:Las marcas de tiempo se puede especificar en varios formatos. ISO 8601 con la fecha y la hora, se recomienda. Todas las horas están en UTC, la inclusión de la zona horaria es ignorada.\n:* ISO 8601 con fecha y hora, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (signos de puntuación y <kbd>Z</kbd> son opcionales)\n:* ISO 8601 fecha y hora (se omite) fracciones de segundo, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd> (guiones, dos puntos y, <kbd>Z</kbd> son opcionales)\n:* Formato MediaWiki, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* Formato numérico genérico, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (opcional en la zona horaria <kbd>GMT</kbd>, <kbd>+<var>##</var></kbd>, o <kbd>-<var>##</var></kbd> se omite)\n:* Formato EXIF, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:*Formato RFC 2822 (zona horaria se puede omitir), <kbd><var>Mon</var>, <var>15</var> <var>Ene</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato RFC 850 (zona horaria se puede omitir), <kbd><var>lunes</var>, <var>15</var>-<var>enero</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato C ctime, <kbd><var>lunes</var> <var>enero</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>de 2001</var></kbd>\n:* Segundos desde 1970-01-01T00:00:00Z como de 1 a 13, dígito entero",
+       "api-help-datatypes": "Algunos tipos de parámetros en las solicitudes de API necesita más explicación:\n;boolean\n:Los parámetros booleanos trabajo como HTML casillas de verificación: si el parámetro se especifica, independientemente de su valor, se considera verdadero. Para un valor false, se omite el parámetro completo.\n;marca de tiempo\n:Las marcas de tiempo se puede especificar en varios formatos. ISO 8601 la fecha y la hora se recomienda. Todas las horas están en UTC, la inclusión de la zona horaria es ignorado.\n:* ISO 8601 la fecha y la hora, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (signos de puntuación y <kbd>Z</kbd> son opcionales)\n:* ISO 8601 la fecha y la hora (se omite) fracciones de segundos, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd> (guiones, dos puntos, y, <kbd>Z</kbd> son opcionales)\n:* MediaWiki formato, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* Genérico formato numérico, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (opcional en la zona horaria de <kbd>GMT</kbd>, <kbd>+<var>##</var></kbd>, o <kbd>-<var>##</var></kbd> se omite)\n:* El formato EXIF, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:*Formato RFC 2822 (zona horaria se puede omitir), <kbd><var>Mon</var>, <var>15</var> <var>Ene</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato RFC 850 (zona horaria se puede omitir), <kbd><var>lunes</var>, <var>15</var>-<var>Ene</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* C ctime formato, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>de 2001</var></kbd>\n:* Segundos desde 1970-01-01T00:00:00Z como la 1 a la 13 dígito entero (excepto <kbd>0</kbd>)\n:* La cadena de <kbd>ahora</kbd>",
        "api-help-param-type-limit": "Tipo: entero o <kbd>max</kbd>",
        "api-help-param-type-integer": "Tipo: {{PLURAL:$1|1=entero|2=lista de enteros}}",
        "api-help-param-type-boolean": "Tipo: booleano/lógico ([[Special:ApiHelp/main#main/datatypes|detalles]])",
index 80c4024..be92dc2 100644 (file)
        "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-timestamp": "Selo de tempo dende o que se moverán as modificacións desde o historial da páxina fonte ó historial da páxina destino. Se non se indica, todo o historial da páxina fonte fusionarase co da páxina destino.",
        "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>.",
index ba66a87..7334fab 100644 (file)
        "apihelp-edit-description": "Lapok létrehozása és szerkesztése.",
        "apihelp-edit-param-sectiontitle": "Az új szakasz címe.",
        "apihelp-edit-param-minor": "Apró változtatás.",
+       "apihelp-edit-param-bot": "Szerkesztés megjelölése botszerkesztésként.",
+       "apihelp-edit-param-createonly": "Ne szerkeszd a lapot, ha már létezik.",
        "apihelp-edit-example-edit": "Lap szerkesztése",
+       "apihelp-emailuser-description": "E-mail küldése",
+       "apihelp-emailuser-param-text": "Szövegtörzs.",
+       "apihelp-emailuser-param-ccme": "Másolat küldése magamnak.",
        "apihelp-expandtemplates-param-title": "Lap címe.",
        "apihelp-feedrecentchanges-param-hideminor": "Apró változtatások elrejtése.",
        "apihelp-feedrecentchanges-param-hidebots": "Botszerkesztések elrejtése.",
        "apihelp-login-param-name": "Szerkesztőnév.",
        "apihelp-login-param-password": "Jelszó.",
        "apihelp-login-example-login": "Bejelentkezés.",
+       "apihelp-logout-example-logout": "Aktuális felhasználó kijelentkeztetése.",
        "apihelp-mergehistory-description": "Laptörténetek egyesítése",
        "apihelp-mergehistory-param-reason": "Laptörténet egyesítésének oka.",
+       "apihelp-move-description": "Egy lap átnevezése.",
+       "apihelp-move-param-reason": "Az átnevezés oka.",
        "apihelp-move-param-movetalk": "Nevezd át a vitalapot is, ha létezik.",
        "apihelp-move-param-movesubpages": "Nevezd át az allapokat is, ha lehetséges.",
+       "apihelp-move-param-noredirect": "Ne készíts átirányítást.",
+       "apihelp-move-param-ignorewarnings": "Figyelmeztetések figyelmen kívül hagyása.",
        "apihelp-opensearch-param-limit": "Találatok maximális száma.",
        "apihelp-options-example-reset": "Minden beállítás visszaállítása",
        "apihelp-protect-example-protect": "Lap levédése.",
index 71e08cf..865ebd9 100644 (file)
@@ -12,7 +12,8 @@
                        "HanV",
                        "Rangekill",
                        "Robin van der Vliet",
-                       "Edoderoo"
+                       "Edoderoo",
+                       "Lemondoge"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentatie]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api E-maillijst]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API-aankondigingen]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bugs & verzoeken]\n</div>\n<strong>Status:</strong> Alle functies die op deze pagina worden weergegeven horen te werken. Aan de API wordt actief gewerkt, en deze kan gewijzigd worden. Abonneer u op  de [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ e-maillijst mediawiki-api-announce] voor meldingen over aanpassingen.\n\n<strong>Foutieve verzoeken:</strong> als de API foutieve verzoeken ontvangt, wordt er geantwoord met een HTTP-header met de sleutel \"MediaWiki-API-Error\" en daarna worden de waarde van de header en de foutcode op dezelfde waarde ingesteld. Zie [[mw:API:Errors_and_warnings|API: Errors and warnings]] voor meer informatie.\n\n<strong>Testen:</strong> u kunt [[Special:ApiSandbox|eenvoudig API-verzoeken testen]].",
@@ -33,6 +34,7 @@
        "apihelp-block-param-reblock": "De huidige blokkade aanpassen als de gebruiker al geblokkeerd is.",
        "apihelp-block-param-watchuser": "De gebruikerspagina en overlegpagina van de gebruiker of het IP-adres volgen.",
        "apihelp-block-example-ip-simple": "Het IP-adres <kbd>192.0.2.5</kbd> voor drie dagen blokkeren met <kbd>First strike</kbd> als opgegeven reden.",
+       "apihelp-checktoken-param-type": "Tokentype wordt getest.",
        "apihelp-compare-param-fromtitle": "Eerste paginanaam om te vergelijken.",
        "apihelp-compare-param-fromid": "Eerste pagina-ID om te vergelijken.",
        "apihelp-compare-param-fromrev": "Eerste versie om te vergelijken.",
        "apihelp-protect-example-protect": "Een pagina beveiligen",
        "apihelp-query+alldeletedrevisions-param-tag": "Alleen versies weergeven met dit label.",
        "apihelp-query+allmessages-param-enableparser": "Stel in om de parser in te schakelen, zorgt voor het voorverwerken van de wikitekst van een bericht (vervangen van magische woorden, de afhandeling van sjablonen, enzovoort).",
+       "apihelp-query+mystashedfiles-paramvalue-prop-type": "Vraag het MIME- en mediatype van het bestand op.",
        "apihelp-query+blocks-paramvalue-prop-flags": "Labelt de blokkade met (automatische blokkade, alleen anoniem, enzovoort).",
        "apihelp-query+deletedrevisions-param-tag": "Alleen versies weergeven met dit label.",
        "apihelp-query+deletedrevs-param-tag": "Alleen versies weergeven met dit label.",
diff --git a/includes/api/i18n/ro.json b/includes/api/i18n/ro.json
new file mode 100644 (file)
index 0000000..6577423
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "ANDROBETA"
+               ]
+       },
+       "apihelp-createaccount-param-email": "Adresa de e-mail a utilizatorului (opțional).",
+       "apihelp-createaccount-param-realname": "Numele real al utilizatorului (opțional).",
+       "apihelp-createaccount-param-mailpassword": "Dacă este setat la orice valoare, o parolă aleatoare va fi trimisă utilizatorului prin e-mail.",
+       "apihelp-delete-description": "Șterge o pagină.",
+       "apihelp-delete-param-title": "Titlul paginii de șters. Nu poate fi folosit împreună cu <var>$1pageid</var>.",
+       "apihelp-delete-param-pageid": "ID-ul paginii de șters. Nu poate fi folosit împreună cu <var>$1title</var>.",
+       "apihelp-delete-param-reason": "Motivul ștergerii. Dacă nu e specificat, va fi folosit un motiv generat automat.",
+       "apihelp-disabled-description": "Acest modul a fost dezactivat.",
+       "apihelp-edit-description": "Creează și modifică pagini.",
+       "apihelp-edit-example-edit": "Modifică o pagină.",
+       "apihelp-expandtemplates-param-title": "Titlul paginii.",
+       "apihelp-expandtemplates-param-text": "Wikitext de convertit."
+}
index b26dc8d..0e566ea 100644 (file)
@@ -818,84 +818,96 @@ class MessageCache {
         * @return string|bool The message, or false if not found
         */
        protected function getMessageFromFallbackChain( $lang, $lckey, $useDB ) {
-               global $wgLanguageCode, $wgContLang;
-
-               $uckey = $wgContLang->ucfirst( $lckey );
-               $langcode = $lang->getCode();
-               $message = false;
+               global $wgContLang;
 
-               // First try the requested language.
-               if ( $useDB ) {
-                       if ( $langcode === $wgLanguageCode ) {
-                               // Messages created in the content language will not have the /lang extension
-                               $message = $this->getMsgFromNamespace( $uckey, $langcode );
-                       } else {
-                               $message = $this->getMsgFromNamespace( "$uckey/$langcode", $langcode );
-                       }
-               }
+               $alreadyTried = [];
 
+                // First try the requested language.
+               $message = $this->getMessageForLang( $lang, $lckey, $useDB, $alreadyTried );
                if ( $message !== false ) {
                        return $message;
                }
 
-               // Check the CDB cache
-               $message = $lang->getMessage( $lckey );
-               if ( $message !== null ) {
-                       return $message;
-               }
+               // Now try checking the site language.
+               $message = $this->getMessageForLang( $wgContLang, $lckey, $useDB, $alreadyTried );
+               return $message;
+       }
 
-               list( $fallbackChain, $siteFallbackChain ) =
-                       Language::getFallbacksIncludingSiteLanguage( $langcode );
+       /**
+        * Given a language, try and fetch messages from that language and its fallbacks.
+        *
+        * @see MessageCache::get
+        * @param Language|StubObject $lang Preferred language
+        * @param string $lckey Lowercase key for the message (as for localisation cache)
+        * @param bool $useDB Whether to include messages from the wiki database
+        * @param bool[] $alreadyTried Contains true for each language that has been tried already
+        * @return string|bool The message, or false if not found
+        */
+       private function getMessageForLang( $lang, $lckey, $useDB, &$alreadyTried ) {
+               global $wgContLang;
+               $langcode = $lang->getCode();
 
-               // Next try checking the database for all of the fallback languages of the requested language.
+               // Try checking the database for the requested language
                if ( $useDB ) {
-                       foreach ( $fallbackChain as $code ) {
-                               if ( $code === $wgLanguageCode ) {
-                                       // Messages created in the content language will not have the /lang extension
-                                       $message = $this->getMsgFromNamespace( $uckey, $code );
-                               } else {
-                                       $message = $this->getMsgFromNamespace( "$uckey/$code", $code );
-                               }
+                       $uckey = $wgContLang->ucfirst( $lckey );
+
+                       if ( !isset( $alreadyTried[ $langcode ] ) ) {
+                               $message = $this->getMsgFromNamespace(
+                                       $this->getMessagePageName( $langcode, $uckey ),
+                                       $langcode
+                               );
 
                                if ( $message !== false ) {
-                                       // Found the message.
                                        return $message;
                                }
+                               $alreadyTried[ $langcode ] = true;
                        }
                }
 
-               // Now try checking the site language.
-               if ( $useDB ) {
-                       $message = $this->getMsgFromNamespace( $uckey, $wgLanguageCode );
-                       if ( $message !== false ) {
-                               return $message;
-                       }
-               }
-
-               $message = $wgContLang->getMessage( $lckey );
+               // Check the CDB cache
+               $message = $lang->getMessage( $lckey );
                if ( $message !== null ) {
                        return $message;
                }
 
-               // Finally try the DB for the site language's fallbacks.
+               // Try checking the database for all of the fallback languages
                if ( $useDB ) {
-                       foreach ( $siteFallbackChain as $code ) {
-                               $message = $this->getMsgFromNamespace( "$uckey/$code", $code );
-                               if ( $message === false && $code === $wgLanguageCode ) {
-                                       // Messages created in the content language will not have the /lang extension
-                                       $message = $this->getMsgFromNamespace( $uckey, $code );
+                       $fallbackChain = Language::getFallbacksFor( $langcode );
+
+                       foreach ( $fallbackChain as $code ) {
+                               if ( isset( $alreadyTried[ $code ] ) ) {
+                                       continue;
                                }
 
+                               $message = $this->getMsgFromNamespace( $this->getMessagePageName( $code, $uckey ), $code );
+
                                if ( $message !== false ) {
-                                       // Found the message.
                                        return $message;
                                }
+                               $alreadyTried[ $code ] = true;
                        }
                }
 
                return false;
        }
 
+       /**
+        * Get the message page name for a given language
+        *
+        * @param string $langcode
+        * @param string $uckey Uppercase key for the message
+        * @return string The page name
+        */
+       private function getMessagePageName( $langcode, $uckey ) {
+               global $wgLanguageCode;
+               if ( $langcode === $wgLanguageCode ) {
+                       // Messages created in the content language will not have the /lang extension
+                       return $uckey;
+               } else {
+                       return "$uckey/$langcode";
+               }
+       }
+
        /**
         * Get a message from the MediaWiki namespace, with caching. The key must
         * first be converted to two-part lang/msg form if necessary.
index 1ff6f85..64d8139 100644 (file)
@@ -127,10 +127,11 @@ class CategoryMembershipChange {
                        $this->timestamp,
                        $categoryTitle,
                        $this->getUser(),
-                       $this->getChangeMessageText( $type, [
-                               'prefixedText' => $this->pageTitle->getPrefixedText(),
-                               'numTemplateLinks' => $this->numTemplateLinks
-                       ] ),
+                       $this->getChangeMessageText(
+                               $type,
+                               [ 'prefixedText' => $this->pageTitle->getPrefixedText() ],
+                               $this->numTemplateLinks
+                       ),
                        $this->pageTitle,
                        $this->getPreviousRevisionTimestamp(),
                        $this->revision
@@ -246,10 +247,11 @@ class CategoryMembershipChange {
         * or CategoryMembershipChange::CATEGORY_REMOVAL
         * @param array $params
         * - prefixedText: result of Title::->getPrefixedText()
+        * @param int $numTemplateLinks
         *
         * @return string
         */
-       private function getChangeMessageText( $type, array $params ) {
+       private function getChangeMessageText( $type, array $params, $numTemplateLinks ) {
                $array = [
                        self::CATEGORY_ADDITION => 'recentchanges-page-added-to-category',
                        self::CATEGORY_REMOVAL => 'recentchanges-page-removed-from-category',
@@ -257,7 +259,7 @@ class CategoryMembershipChange {
 
                $msgKey = $array[$type];
 
-               if ( intval( $params['numTemplateLinks'] ) > 0 ) {
+               if ( intval( $numTemplateLinks ) > 0 ) {
                        $msgKey .= '-bundled';
                }
 
index d79f316..a808516 100644 (file)
@@ -305,18 +305,10 @@ class EnhancedChangesList extends ChangesList {
                        $last = 0;
                        $first = count( $block ) - 1;
                        # Some events (like logs and category changes) have an "empty" size, so we need to skip those...
-                       while ( $last < $first && (
-                                       $block[$last]->mAttribs['rc_new_len'] === null ||
-                                       # TODO kill the below check after March 2016 - https://phabricator.wikimedia.org/T126428
-                                       $block[$last]->mAttribs['rc_type'] == RC_CATEGORIZE
-                               ) ) {
+                       while ( $last < $first && $block[$last]->mAttribs['rc_new_len'] === null ) {
                                $last++;
                        }
-                       while ( $last < $first && (
-                                       $block[$first]->mAttribs['rc_old_len'] === null ||
-                                       # TODO kill the below check after March 2016 - https://phabricator.wikimedia.org/T126428
-                                       $block[$first]->mAttribs['rc_type'] == RC_CATEGORIZE
-                               ) ) {
+                       while ( $last < $first && $block[$first]->mAttribs['rc_old_len'] === null ) {
                                $first--;
                        }
                        # Get net change
index 2508304..159cfd9 100644 (file)
@@ -851,7 +851,9 @@ class RecentChange {
                        'rc_logid' => 0,
                        'rc_log_type' => null,
                        'rc_log_action' => '',
-                       'rc_params' => ''
+                       'rc_params' =>  serialize( [
+                               'hidden-cat' => WikiCategoryPage::factory( $categoryTitle )->isHidden()
+                       ] )
                ];
 
                $rc->mExtra = [
@@ -865,6 +867,19 @@ class RecentChange {
                return $rc;
        }
 
+       /**
+        * Get a parameter value
+        *
+        * @since 1.27
+        *
+        * @param string $name parameter name
+        * @return mixed
+        */
+       public function getParam( $name ) {
+               $params = $this->parseParams();
+               return isset( $params[$name] ) ? $params[$name] : null;
+       }
+
        /**
         * Initialises the members of this object from a mysql row object
         *
@@ -973,7 +988,7 @@ class RecentChange {
         *
         * @since 1.26
         *
-        * @return array|null
+        * @return mixed|bool false on failed unserialization
         */
        public function parseParams() {
                $rcParams = $this->getAttribute( 'rc_params' );
index 0aa1406..942036b 100644 (file)
@@ -240,8 +240,8 @@ class IcuCollation extends Collation {
                        return $this->firstLetterData;
                }
 
-               $cache = wfGetCache( CACHE_ANYTHING );
-               $cacheKey = wfMemcKey(
+               $cache = ObjectCache::getLocalServerInstance( CACHE_ANYTHING );
+               $cacheKey = $cache->makeKey(
                        'first-letters',
                        $this->locale,
                        $this->digitTransformLanguage->getCode(),
index 09b0baa..4b803d8 100644 (file)
@@ -51,39 +51,16 @@ class ConfigFactory {
        }
 
        /**
-        * @return string[]
-        */
-       public function getConfigNames() {
-               return array_keys( $this->factoryFunctions );
-       }
-
-       /**
-        * Register a new config factory function.
-        * Will override if it's already registered.
-        * Use "*" for $name to provide a fallback config for all unknown names.
+        * Register a new config factory function
+        * Will override if it's already registered
         * @param string $name
-        * @param callable|Config $callback A factory callabck that takes this ConfigFactory
-        *        as an argument and returns a Config instance, or an existing Config instance.
+        * @param callable $callback That takes this ConfigFactory as an argument
         * @throws InvalidArgumentException If an invalid callback is provided
         */
        public function register( $name, $callback ) {
-               if ( $callback instanceof Config ) {
-                       $instance = $callback;
-
-                       // Register a callback anyway, for consistency. Note that getConfigNames()
-                       // relies on $factoryFunctions to have all config names.
-                       $callback = function() use ( $instance ) {
-                               return $instance;
-                       };
-               } else {
-                       $instance = null;
-               }
-
                if ( !is_callable( $callback ) ) {
                        throw new InvalidArgumentException( 'Invalid callback provided' );
                }
-
-               $this->configs[$name] = $instance;
                $this->factoryFunctions[$name] = $callback;
        }
 
@@ -98,14 +75,10 @@ class ConfigFactory {
         */
        public function makeConfig( $name ) {
                if ( !isset( $this->configs[$name] ) ) {
-                       $key = $name;
-                       if ( !isset( $this->factoryFunctions[$key] ) ) {
-                               $key = '*';
-                       }
-                       if ( !isset( $this->factoryFunctions[$key] ) ) {
+                       if ( !isset( $this->factoryFunctions[$name] ) ) {
                                throw new ConfigException( "No registered builder available for $name." );
                        }
-                       $conf = call_user_func( $this->factoryFunctions[$key], $this );
+                       $conf = call_user_func( $this->factoryFunctions[$name], $this );
                        if ( $conf instanceof Config ) {
                                $this->configs[$name] = $conf;
                        } else {
@@ -115,5 +88,4 @@ class ConfigFactory {
 
                return $this->configs[$name];
        }
-
 }
index ba54603..c8b8108 100644 (file)
@@ -23,7 +23,6 @@
  */
 
 use MediaWiki\Logger\LoggerFactory;
-use MediaWiki\MediaWikiServices;
 
 /**
  * Group all the pieces relevant to the context of a request into one instance
@@ -497,8 +496,9 @@ class RequestContext implements IContextSource, MutableContext {
         * Resets singleton returned by getMain(). Should be called only from unit tests.
         */
        public static function resetMain() {
-               // TODO: manage service instances in MediaWikiServices
-               MediaWikiServices::failUnlessBootstrapping( __METHOD__ );
+               if ( !( defined( 'MW_PHPUNIT_TEST' ) || defined( 'MW_PARSER_TEST' ) ) ) {
+                       throw new MWException( __METHOD__ . '() should be called only from unit tests!' );
+               }
                self::$instance = null;
        }
 
index c065ee9..c36cfdb 100644 (file)
@@ -1226,6 +1226,7 @@ abstract class DatabaseBase implements IDatabase {
                return '';
        }
 
+       // See IDatabase::select for the docs for this function
        public function select( $table, $vars, $conds = '', $fname = __METHOD__,
                $options = [], $join_conds = [] ) {
                $sql = $this->selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
@@ -1668,6 +1669,8 @@ abstract class DatabaseBase implements IDatabase {
         * themselves. Pass the canonical name to such functions. This is only needed
         * when calling query() directly.
         *
+        * @note This function does not sanitize user input. It is not safe to use
+        *   this function to escape user input.
         * @param string $name Database table name
         * @param string $format One of:
         *   quoted - Automatically pass the table name through addIdentifierQuotes()
@@ -1981,6 +1984,8 @@ abstract class DatabaseBase implements IDatabase {
         * Returns if the given identifier looks quoted or not according to
         * the database convention for quoting identifiers .
         *
+        * @note Do not use this to determine if untrusted input is safe.
+        *   A malicious user can trick this function.
         * @param string $name
         * @return bool
         */
index 8b1c3df..710efb2 100644 (file)
@@ -520,9 +520,11 @@ interface IDatabase {
         * for use in field names (e.g. a.user_name).
         *
         * All of the table names given here are automatically run through
-        * IDatabase::tableName(), which causes the table prefix (if any) to be
+        * DatabaseBase::tableName(), which causes the table prefix (if any) to be
         * added, and various other table name mappings to be performed.
         *
+        * Do not use untrusted user input as a table name. Alias names should
+        * not have characters outside of the Basic multilingual plane.
         *
         * @param string|array $vars
         *
@@ -537,6 +539,7 @@ interface IDatabase {
         * If an expression is given, care must be taken to ensure that it is
         * DBMS-independent.
         *
+        * Untrusted user input must not be passed to this parameter.
         *
         * @param string|array $conds
         *
@@ -563,6 +566,10 @@ interface IDatabase {
         *    - IDatabase::buildLike()
         *    - IDatabase::conditional()
         *
+        * Untrusted user input is safe in the values of string keys, however untrusted
+        * input must not be used in the array key names or in the values of numeric keys.
+        * Escaping of untrusted input used in values of numeric keys should be done via
+        * IDatabase::addQuotes()
         *
         * @param string|array $options
         *
@@ -628,8 +635,9 @@ interface IDatabase {
         *
         * The key of the array contains the table name or alias. The value is an
         * array with two elements, numbered 0 and 1. The first gives the type of
-        * join, the second is an SQL fragment giving the join condition for that
-        * table. For example:
+        * join, the second is the same as the $conds parameter. Thus it can be
+        * an SQL fragment, or an array where the string keys are equality and the
+        * numeric keys are SQL fragments all AND'd together. For example:
         *
         *    array( 'page' => array( 'LEFT JOIN', 'page_latest=rev_id' ) )
         *
@@ -794,7 +802,7 @@ interface IDatabase {
         *     IDatabase::affectedRows().
         *
         * @param string $table Table name. This will be passed through
-        *   IDatabase::tableName().
+        *   DatabaseBase::tableName().
         * @param array $a Array of rows to insert
         * @param string $fname Calling function name (use __METHOD__) for logs/profiling
         * @param array $options Array of options
@@ -807,7 +815,7 @@ interface IDatabase {
         * UPDATE wrapper. Takes a condition array and a SET array.
         *
         * @param string $table Name of the table to UPDATE. This will be passed through
-        *   IDatabase::tableName().
+        *   DatabaseBase::tableName().
         * @param array $values An array of values to SET. For each array element,
         *   the key gives the field name, and the value gives the data to set
         *   that field to. The data will be quoted by IDatabase::addQuotes().
@@ -1020,7 +1028,7 @@ interface IDatabase {
         *
         * @since 1.22
         *
-        * @param string $table Table name. This will be passed through IDatabase::tableName().
+        * @param string $table Table name. This will be passed through DatabaseBase::tableName().
         * @param array $rows A single row or list of rows to insert
         * @param array $uniqueIndexes List of single field names or field name tuples
         * @param array $set An array of values to SET. For each array element, the
index 549a8b5..f39596b 100644 (file)
@@ -21,8 +21,6 @@
  * @ingroup Database
  */
 
-use MediaWiki\MediaWikiServices;
-use MediaWiki\Services\DestructibleService;
 use Psr\Log\LoggerInterface;
 use MediaWiki\Logger\LoggerFactory;
 
@@ -30,8 +28,7 @@ use MediaWiki\Logger\LoggerFactory;
  * An interface for generating database load balancers
  * @ingroup Database
  */
-abstract class LBFactory implements DestructibleService {
-
+abstract class LBFactory {
        /** @var ChronologyProtector */
        protected $chronProt;
 
@@ -41,6 +38,9 @@ abstract class LBFactory implements DestructibleService {
        /** @var LoggerInterface */
        protected $logger;
 
+       /** @var LBFactory */
+       private static $instance;
+
        /** @var string|bool Reason all LBs are read-only or false if not */
        protected $readOnlyReason = false;
 
@@ -60,40 +60,38 @@ abstract class LBFactory implements DestructibleService {
                $this->logger = LoggerFactory::getInstance( 'DBTransaction' );
        }
 
-       /**
-        * Disables all load balancers. All connections are closed, and any attempt to
-        * open a new connection will result in a DBAccessError.
-        * @see LoadBalancer::disable()
-        */
-       public function destroy() {
-               $this->shutdown();
-               $this->forEachLBCallMethod( 'disable' );
-       }
-
        /**
         * Disables all access to the load balancer, will cause all database access
         * to throw a DBAccessError
         */
        public static function disableBackend() {
-               MediaWikiServices::disableStorageBackend();
+               global $wgLBFactoryConf;
+               self::$instance = new LBFactoryFake( $wgLBFactoryConf );
        }
 
        /**
         * Get an LBFactory instance
         *
-        * @deprecated since 1.27, use MediaWikiServices::getDBLoadBalancerFactory() instead.
-        *
         * @return LBFactory
         */
        public static function singleton() {
-               return MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+               global $wgLBFactoryConf;
+
+               if ( is_null( self::$instance ) ) {
+                       $class = self::getLBFactoryClass( $wgLBFactoryConf );
+                       $config = $wgLBFactoryConf;
+                       if ( !isset( $config['readOnlyReason'] ) ) {
+                               $config['readOnlyReason'] = wfConfiguredReadOnlyReason();
+                       }
+                       self::$instance = new $class( $config );
+               }
+
+               return self::$instance;
        }
 
        /**
         * Returns the LBFactory class to use and the load balancer configuration.
         *
-        * @todo instead of this, use a ServiceContainer for managing the different implementations.
-        *
         * @param array $config (e.g. $wgLBFactoryConf)
         * @return string Class name
         */
@@ -120,6 +118,27 @@ abstract class LBFactory implements DestructibleService {
                return $class;
        }
 
+       /**
+        * Shut down, close connections and destroy the cached instance.
+        */
+       public static function destroyInstance() {
+               if ( self::$instance ) {
+                       self::$instance->shutdown();
+                       self::$instance->forEachLBCallMethod( 'closeAll' );
+                       self::$instance = null;
+               }
+       }
+
+       /**
+        * Set the instance to be the given object
+        *
+        * @param LBFactory $instance
+        */
+       public static function setInstance( $instance ) {
+               self::destroyInstance();
+               self::$instance = $instance;
+       }
+
        /**
         * Create a new load balancer object. The resulting object will be untracked,
         * not chronology-protected, and the caller is responsible for cleaning it up.
@@ -228,11 +247,7 @@ abstract class LBFactory implements DestructibleService {
                        } );
                } );
 
-               $start = microtime( true );
                $this->forEachLBCallMethod( 'commitMasterChanges', [ $fname ] );
-               $timeMs = 1000 * ( microtime( true ) - $start );
-
-               RequestContext::getMain()->getStats()->timing( "db.commit-masters", $timeMs );
        }
 
        /**
@@ -454,7 +469,8 @@ abstract class LBFactory implements DestructibleService {
  */
 class DBAccessError extends MWException {
        public function __construct() {
-               parent::__construct( 'The storage backend is disabled!' );
+               parent::__construct( "Mediawiki tried to access the database via wfGetDB(). " .
+                       "This is not allowed." );
        }
 }
 
index f8ddd12..3a543ac 100644 (file)
 
 /**
  * A multi-wiki, multi-master factory for Wikimedia and similar installations.
- * Ignores the old configuration globals
+ * Ignores the old configuration globals.
+ *
+ * Template override precedence (highest => lowest):
+ *   - templateOverridesByServer
+ *   - masterTemplateOverrides
+ *   - templateOverridesBySection/templateOverridesByCluster
+ *   - externalTemplateOverrides
+ *   - serverTemplate
+ * Overrides only work on top level keys (so nested values will not be merged).
  *
  * Configuration:
  *     sectionsByDB                A map of database names to section names.
@@ -63,7 +71,7 @@
  *     templateOverridesByServer   A 2-d map overriding serverTemplate and
  *                                 externalTemplateOverrides on a server-by-server basis. Applies
  *                                 to both core and external storage.
- *
+ *     templateOverridesBySection  A 2-d map overriding the server info by section.
  *     templateOverridesByCluster  A 2-d map overriding the server info by external storage cluster.
  *
  *     masterTemplateOverrides     An override array for all master servers.
@@ -119,6 +127,9 @@ class LBFactoryMulti extends LBFactory {
         */
        private $templateOverridesByServer;
 
+       /** @var array A 2-d map overriding the server info by section */
+       private $templateOverridesBySection;
+
        /** @var array A 2-d map overriding the server info by external storage cluster */
        private $templateOverridesByCluster;
 
@@ -162,7 +173,7 @@ class LBFactoryMulti extends LBFactory {
                $required = [ 'sectionsByDB', 'sectionLoads', 'serverTemplate' ];
                $optional = [ 'groupLoadsBySection', 'groupLoadsByDB', 'hostsByName',
                        'externalLoads', 'externalTemplateOverrides', 'templateOverridesByServer',
-                       'templateOverridesByCluster', 'masterTemplateOverrides',
+                       'templateOverridesByCluster', 'templateOverridesBySection', 'masterTemplateOverrides',
                        'readOnlyBySection', 'loadMonitorClass' ];
 
                foreach ( $required as $key ) {
@@ -222,8 +233,13 @@ class LBFactoryMulti extends LBFactory {
                        $readOnlyReason = $this->readOnlyBySection[$section];
                }
 
+               $template = $this->serverTemplate;
+               if ( isset( $this->templateOverridesBySection[$section] ) ) {
+                       $template = $this->templateOverridesBySection[$section] + $template;
+               }
+
                return $this->newLoadBalancer(
-                       $this->serverTemplate,
+                       $template,
                        $this->sectionLoads[$section],
                        $groupLoads,
                        $readOnlyReason
index 5578099..741999c 100644 (file)
@@ -77,11 +77,6 @@ class LoadBalancer {
        /** @var integer Max time to wait for a slave to catch up (e.g. ChronologyProtector) */
        const POS_WAIT_TIMEOUT = 10;
 
-       /**
-        * @var boolean
-        */
-       private $disabled = false;
-
        /**
         * @param array $params Array with keys:
         *  - servers : Required. Array of server info structures.
@@ -671,8 +666,6 @@ class LoadBalancer {
         * On error, returns false, and the connection which caused the
         * error will be available via $this->mErrorConnection.
         *
-        * @note If disable() was called on this LoadBalancer, this method will throw a DBAccessError.
-        *
         * @param int $i Server index
         * @param string|bool $wiki Wiki ID, or false for the current wiki
         * @return DatabaseBase|bool Returns false on errors
@@ -723,8 +716,6 @@ class LoadBalancer {
         * On error, returns false, and the connection which caused the
         * error will be available via $this->mErrorConnection.
         *
-        * @note If disable() was called on this LoadBalancer, this method will throw a DBAccessError.
-        *
         * @param int $i Server index
         * @param string $wiki Wiki ID to open
         * @return DatabaseBase
@@ -812,10 +803,6 @@ class LoadBalancer {
         * @return DatabaseBase
         */
        protected function reallyOpenConnection( $server, $dbNameOverride = false ) {
-               if ( $this->disabled ) {
-                       throw new DBAccessError();
-               }
-
                if ( !is_array( $server ) ) {
                        throw new MWException( 'You must update your load-balancing configuration. ' .
                                'See DefaultSettings.php entry for $wgDBservers.' );
@@ -989,17 +976,6 @@ class LoadBalancer {
                return false;
        }
 
-       /**
-        * Disable this load balancer. All connections are closed, and any attempt to
-        * open a new connection will result in a DBAccessError.
-        *
-        * @since 1.27
-        */
-       public function disable() {
-               $this->closeAll();
-               $this->disabled = true;
-       }
-
        /**
         * Close all open connections
         */
index 6311f76..8aa11b6 100644 (file)
@@ -98,9 +98,22 @@ class FSFile {
         * Get an associative array containing information about
         * a file with the given storage path.
         *
+        * Resulting array fields include:
+        *   - fileExists
+        *   - size (filesize in bytes)
+        *   - mime (as major/minor)
+        *   - media_type (value to be used with the MEDIATYPE_xxx constants)
+        *   - metadata (handler specific)
+        *   - sha1 (in base 36)
+        *   - width
+        *   - height
+        *   - bits (bitrate)
+        *   - file-mime
+        *   - major_mime
+        *   - minor_mime
+        *
         * @param string|bool $ext The file extension, or true to extract it from the filename.
         *             Set it to false to ignore the extension.
-        *
         * @return array
         */
        public function getProps( $ext = true ) {
@@ -151,6 +164,16 @@ class FSFile {
        /**
         * Placeholder file properties to use for files that don't exist
         *
+        * Resulting array fields include:
+        *   - fileExists
+        *   - mime (as major/minor)
+        *   - media_type (value to be used with the MEDIATYPE_xxx constants)
+        *   - metadata (handler specific)
+        *   - sha1 (in base 36)
+        *   - width
+        *   - height
+        *   - bits (bitrate)
+        *
         * @return array
         */
        public static function placeholderProps() {
@@ -198,7 +221,6 @@ class FSFile {
         * @return bool|string False on failure
         */
        public function getSha1Base36( $recache = false ) {
-
                if ( $this->sha1Base36 !== null && !$recache ) {
                        return $this->sha1Base36;
                }
index 6f40bda..0d7bf66 100644 (file)
@@ -178,7 +178,9 @@ class FileBackendMultiWrite extends FileBackend {
                        wfDebugLog( 'FileOperation', get_class( $this ) .
                                " failed sync check: " . FormatJson::encode( $relevantPaths ) );
                        // Try to resync the clone backends to the master on the spot...
-                       if ( !$this->autoResync || !$this->resyncFiles( $relevantPaths )->isOK() ) {
+                       if ( $this->autoResync === false
+                               || !$this->resyncFiles( $relevantPaths, $this->autoResync )->isOK()
+                       ) {
                                $status->merge( $syncStatus );
 
                                return $status; // abort
@@ -322,9 +324,10 @@ class FileBackendMultiWrite extends FileBackend {
         * and re-synchronize those files against the "multi master" if needed.
         *
         * @param array $paths List of storage paths
+        * @param string|bool $resyncMode False, True, or "conservative"; see __construct()
         * @return Status
         */
-       public function resyncFiles( array $paths ) {
+       public function resyncFiles( array $paths, $resyncMode = true ) {
                $status = Status::newGood();
 
                $mBackend = $this->backends[$this->masterIndex];
@@ -355,7 +358,7 @@ class FileBackendMultiWrite extends FileBackend {
                                if ( $mSha1 === $cSha1 ) {
                                        // already synced; nothing to do
                                } elseif ( $mSha1 !== false ) { // file is in master
-                                       if ( $this->autoResync === 'conservative'
+                                       if ( $resyncMode === 'conservative'
                                                && $cStat && $cStat['mtime'] > $mStat['mtime']
                                        ) {
                                                $status->fatal( 'backend-fail-synced', $path );
@@ -367,7 +370,7 @@ class FileBackendMultiWrite extends FileBackend {
                                                [ 'src' => $fsFile->getPath(), 'dst' => $cPath ]
                                        ) );
                                } elseif ( $mStat === false ) { // file is not in master
-                                       if ( $this->autoResync === 'conservative' ) {
+                                       if ( $resyncMode === 'conservative' ) {
                                                $status->fatal( 'backend-fail-synced', $path );
                                                continue; // don't delete data
                                        }
index cc9099c..b48191f 100644 (file)
@@ -527,7 +527,10 @@ class ForeignAPIRepo extends FileRepo {
                        return $req->getContent();
                } else {
                        $logger = LoggerFactory::getInstance( 'http' );
-                       $logger->warning( $status->getWikiText(), [ 'caller' => 'ForeignAPIRepo::httpGet' ] );
+                       $logger->warning(
+                               $status->getWikiText( false, false, 'en' ),
+                               [ 'caller' => 'ForeignAPIRepo::httpGet' ]
+                       );
                        return false;
                }
        }
index 7e00793..c037516 100644 (file)
@@ -2046,34 +2046,29 @@ abstract class File implements IDBAccessObject {
                $renderUrl = $this->repo->getDescriptionRenderUrl( $this->getName(), $lang->getCode() );
                if ( $renderUrl ) {
                        $cache = ObjectCache::getMainWANInstance();
+                       $key = $this->repo->getLocalCacheKey(
+                               'RemoteFileDescription',
+                               'url',
+                               $lang->getCode(),
+                               $this->getName()
+                       );
 
-                       $key = null;
-                       if ( $this->repo->descriptionCacheExpiry > 0 ) {
-                               wfDebug( "Attempting to get the description from cache..." );
-                               $key = $this->repo->getLocalCacheKey(
-                                       'RemoteFileDescription',
-                                       'url',
-                                       $lang->getCode(),
-                                       $this->getName()
-                               );
-                               $obj = $cache->get( $key );
-                               if ( $obj ) {
-                                       wfDebug( "success!\n" );
-
-                                       return $obj;
-                               }
-                               wfDebug( "miss\n" );
-                       }
-                       wfDebug( "Fetching shared description from $renderUrl\n" );
-                       $res = Http::get( $renderUrl, [], __METHOD__ );
-                       if ( $res && $key ) {
-                               $cache->set( $key, $res, $this->repo->descriptionCacheExpiry );
-                       }
+                       return $cache->getWithSetCallback(
+                               $key,
+                               $this->repo->descriptionCacheExpiry ?: $cache::TTL_UNCACHEABLE,
+                               function ( $oldValue, &$ttl, array &$setOpts ) use ( $renderUrl ) {
+                                       wfDebug( "Fetching shared description from $renderUrl\n" );
+                                       $res = Http::get( $renderUrl, [], __METHOD__ );
+                                       if ( !$res ) {
+                                               $ttl = WANObjectCache::TTL_UNCACHEABLE;
+                                       }
 
-                       return $res;
-               } else {
-                       return false;
+                                       return $res;
+                               }
+                       );
                }
+
+               return false;
        }
 
        /**
index f38248b..cf0045e 100644 (file)
@@ -124,8 +124,51 @@ class ForeignDBFile extends LocalFile {
         * @return string
         */
        function getDescriptionText( $lang = false ) {
-               // Restore remote behavior
-               return File::getDescriptionText( $lang );
+               global $wgLang;
+
+               if ( !$this->repo->fetchDescription ) {
+                       return false;
+               }
+
+               $lang = $lang ?: $wgLang;
+               $renderUrl = $this->repo->getDescriptionRenderUrl( $this->getName(), $lang->getCode() );
+               if ( !$renderUrl ) {
+                       return false;
+               }
+
+               $touched = $this->repo->getSlaveDB()->selectField(
+                       'page',
+                       'page_touched',
+                       [
+                               'page_namespace' => NS_FILE,
+                               'page_title' => $this->title->getDBkey()
+                       ]
+               );
+               if ( $touched === false ) {
+                       return false; // no description page
+               }
+
+               $cache = ObjectCache::getMainWANInstance();
+
+               return $cache->getWithSetCallback(
+                       $this->repo->getLocalCacheKey(
+                               'RemoteFileDescription',
+                               'url',
+                               $lang->getCode(),
+                               $this->getName(),
+                               $touched
+                       ),
+                       $this->repo->descriptionCacheExpiry ?: $cache::TTL_UNCACHEABLE,
+                       function ( $oldValue, &$ttl, array &$setOpts ) use ( $renderUrl ) {
+                               wfDebug( "Fetching shared description from $renderUrl\n" );
+                               $res = Http::get( $renderUrl, [], __METHOD__ );
+                               if ( !$res ) {
+                                       $ttl = WANObjectCache::TTL_UNCACHEABLE;
+                               }
+
+                               return $res;
+                       }
+               );
        }
 
        /**
@@ -137,10 +180,14 @@ class ForeignDBFile extends LocalFile {
         */
        public function getDescriptionShortUrl() {
                $dbr = $this->repo->getSlaveDB();
-               $pageId = $dbr->selectField( 'page', 'page_id', [
-                       'page_namespace' => NS_FILE,
-                       'page_title' => $this->title->getDBkey()
-               ] );
+               $pageId = $dbr->selectField(
+                       'page',
+                       'page_id',
+                       [
+                               'page_namespace' => NS_FILE,
+                               'page_title' => $this->title->getDBkey()
+                       ]
+               );
 
                if ( $pageId !== false ) {
                        $url = $this->repo->makeUrl( [ 'curid' => $pageId ] );
index 9677f5d..aa278aa 100644 (file)
@@ -267,12 +267,6 @@ class LocalFile extends File {
                        }
                }
 
-               if ( $this->dataLoaded ) {
-                       wfIncrStats( 'image_cache.hit' );
-               } else {
-                       wfIncrStats( 'image_cache.miss' );
-               }
-
                return $this->dataLoaded;
        }
 
@@ -2881,7 +2875,8 @@ class LocalFileMoveBatch {
                                $this->cleanupTarget( $triplets );
                                $destFile->unlock();
                                $this->file->unlockAndRollback(); // unlocks the destination
-                               wfDebugLog( 'imagemove', "Error in moving files: " . $statusMove->getWikiText() );
+                               wfDebugLog( 'imagemove', "Error in moving files: "
+                                       . $statusMove->getWikiText( false, false, 'en' ) );
                                $statusMove->ok = false;
 
                                return $statusMove;
index 6878399..2b6a0aa 100644 (file)
@@ -74,7 +74,7 @@
  *    'required'            -- passed through to the object, indicating that it
  *                             is a required field.
  *    'size'                -- the length of text fields
- *    'filter-callback      -- a function name to give you the chance to
+ *    'filter-callback'     -- a function name to give you the chance to
  *                             massage the inputted value before it's processed.
  *                             @see HTMLFormField::filter()
  *    'validation-callback' -- a function name to give you the chance
@@ -295,7 +295,7 @@ class HTMLForm extends ContextSource {
                        $this->setContext( $context );
                        $this->mTitle = false; // We don't need them to set a title
                        $this->mMessagePrefix = $messagePrefix;
-               } elseif ( is_null( $context ) && $messagePrefix !== '' ) {
+               } elseif ( $context === null && $messagePrefix !== '' ) {
                        $this->mMessagePrefix = $messagePrefix;
                } elseif ( is_string( $context ) && $messagePrefix === '' ) {
                        // B/C since 1.18
@@ -320,7 +320,7 @@ class HTMLForm extends ContextSource {
                                ? $info['section']
                                : '';
 
-                       if ( isset( $info['type'] ) && $info['type'] == 'file' ) {
+                       if ( isset( $info['type'] ) && $info['type'] === 'file' ) {
                                $this->mUseMultipart = true;
                        }
 
@@ -360,14 +360,14 @@ class HTMLForm extends ContextSource {
         */
        public function setDisplayFormat( $format ) {
                if (
-                       in_array( $format, $this->availableSubclassDisplayFormats ) ||
-                       in_array( $this->displayFormat, $this->availableSubclassDisplayFormats )
+                       in_array( $format, $this->availableSubclassDisplayFormats, true ) ||
+                       in_array( $this->displayFormat, $this->availableSubclassDisplayFormats, true )
                ) {
                        throw new MWException( 'Cannot change display format after creation, ' .
                                'use HTMLForm::factory() instead' );
                }
 
-               if ( !in_array( $format, $this->availableDisplayFormats ) ) {
+               if ( !in_array( $format, $this->availableDisplayFormats, true ) ) {
                        throw new MWException( 'Display format must be one of ' .
                                print_r( $this->availableDisplayFormats, true ) );
                }
@@ -459,9 +459,7 @@ class HTMLForm extends ContextSource {
                # @todo This will throw a fatal error whenever someone try to use
                # 'class' to feed a CSS class instead of 'cssclass'. Would be
                # great to avoid the fatal error and show a nice error.
-               $obj = new $class( $descriptor );
-
-               return $obj;
+               return new $class( $descriptor );
        }
 
        /**
@@ -473,10 +471,10 @@ class HTMLForm extends ContextSource {
         * @throws MWException
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function prepareForm() {
+       public function prepareForm() {
                # Check if we have the info we need
                if ( !$this->mTitle instanceof Title && $this->mTitle !== false ) {
-                       throw new MWException( "You must call setTitle() on an HTMLForm" );
+                       throw new MWException( 'You must call setTitle() on an HTMLForm' );
                }
 
                # Load data from the request.
@@ -489,15 +487,15 @@ class HTMLForm extends ContextSource {
         * Try submitting, with edit token check first
         * @return Status|bool
         */
-       function tryAuthorizedSubmit() {
+       public function tryAuthorizedSubmit() {
                $result = false;
 
                $submit = false;
-               if ( $this->getMethod() != 'post' ) {
+               if ( $this->getMethod() !== 'post' ) {
                        $submit = true; // no session check needed
                } elseif ( $this->getRequest()->wasPosted() ) {
                        $editToken = $this->getRequest()->getVal( 'wpEditToken' );
-                       if ( $this->getUser()->isLoggedIn() || $editToken != null ) {
+                       if ( $this->getUser()->isLoggedIn() || $editToken !== null ) {
                                // Session tokens for logged-out users have no security value.
                                // However, if the user gave one, check it in order to give a nice
                                // "session expired" error instead of "permission denied" or such.
@@ -521,7 +519,7 @@ class HTMLForm extends ContextSource {
         * errors
         * @return bool|Status Whether submission was successful.
         */
-       function show() {
+       public function show() {
                $this->prepareForm();
 
                $result = $this->tryAuthorizedSubmit();
@@ -539,7 +537,7 @@ class HTMLForm extends ContextSource {
         * added to the output, no matter, if the validation was good or not.
         * @return bool|Status Whether submission was successful.
         */
-       function showAlways() {
+       public function showAlways() {
                $this->prepareForm();
 
                $result = $this->tryAuthorizedSubmit();
@@ -560,7 +558,7 @@ class HTMLForm extends ContextSource {
         *       object, an HTML string, or an array of arrays (message keys and
         *       params) or strings (message keys)
         */
-       function trySubmit() {
+       public function trySubmit() {
                $valid = true;
                $hoistedErrors = [];
                $hoistedErrors[] = isset( $this->mValidationErrorMessage )
@@ -631,7 +629,7 @@ class HTMLForm extends ContextSource {
         * @since 1.23
         * @return bool
         */
-       function wasSubmitted() {
+       public function wasSubmitted() {
                return $this->mWasSubmitted;
        }
 
@@ -645,7 +643,7 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function setSubmitCallback( $cb ) {
+       public function setSubmitCallback( $cb ) {
                $this->mSubmitCallback = $cb;
 
                return $this;
@@ -659,7 +657,7 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function setValidationErrorMessage( $msg ) {
+       public function setValidationErrorMessage( $msg ) {
                $this->mValidationErrorMessage = $msg;
 
                return $this;
@@ -672,7 +670,7 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function setIntro( $msg ) {
+       public function setIntro( $msg ) {
                $this->setPreText( $msg );
 
                return $this;
@@ -686,7 +684,7 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function setPreText( $msg ) {
+       public function setPreText( $msg ) {
                $this->mPre = $msg;
 
                return $this;
@@ -699,7 +697,7 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function addPreText( $msg ) {
+       public function addPreText( $msg ) {
                $this->mPre .= $msg;
 
                return $this;
@@ -713,8 +711,8 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function addHeaderText( $msg, $section = null ) {
-               if ( is_null( $section ) ) {
+       public function addHeaderText( $msg, $section = null ) {
+               if ( $section === null ) {
                        $this->mHeader .= $msg;
                } else {
                        if ( !isset( $this->mSectionHeaders[$section] ) ) {
@@ -735,8 +733,8 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function setHeaderText( $msg, $section = null ) {
-               if ( is_null( $section ) ) {
+       public function setHeaderText( $msg, $section = null ) {
+               if ( $section === null ) {
                        $this->mHeader = $msg;
                } else {
                        $this->mSectionHeaders[$section] = $msg;
@@ -752,8 +750,8 @@ class HTMLForm extends ContextSource {
         * @since 1.26
         * @return string HTML
         */
-       function getHeaderText( $section = null ) {
-               if ( is_null( $section ) ) {
+       public function getHeaderText( $section = null ) {
+               if ( $section === null ) {
                        return $this->mHeader;
                } else {
                        return isset( $this->mSectionHeaders[$section] ) ? $this->mSectionHeaders[$section] : '';
@@ -768,8 +766,8 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function addFooterText( $msg, $section = null ) {
-               if ( is_null( $section ) ) {
+       public function addFooterText( $msg, $section = null ) {
+               if ( $section === null ) {
                        $this->mFooter .= $msg;
                } else {
                        if ( !isset( $this->mSectionFooters[$section] ) ) {
@@ -790,8 +788,8 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function setFooterText( $msg, $section = null ) {
-               if ( is_null( $section ) ) {
+       public function setFooterText( $msg, $section = null ) {
+               if ( $section === null ) {
                        $this->mFooter = $msg;
                } else {
                        $this->mSectionFooters[$section] = $msg;
@@ -807,8 +805,8 @@ class HTMLForm extends ContextSource {
         * @since 1.26
         * @return string
         */
-       function getFooterText( $section = null ) {
-               if ( is_null( $section ) ) {
+       public function getFooterText( $section = null ) {
+               if ( $section === null ) {
                        return $this->mFooter;
                } else {
                        return isset( $this->mSectionFooters[$section] ) ? $this->mSectionFooters[$section] : '';
@@ -822,7 +820,7 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function addPostText( $msg ) {
+       public function addPostText( $msg ) {
                $this->mPost .= $msg;
 
                return $this;
@@ -835,7 +833,7 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function setPostText( $msg ) {
+       public function setPostText( $msg ) {
                $this->mPost = $msg;
 
                return $this;
@@ -850,7 +848,7 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       public function addHiddenField( $name, $value, $attribs = [] ) {
+       public function addHiddenField( $name, $value, array $attribs = [] ) {
                $attribs += [ 'name' => $name ];
                $this->mHiddenFields[] = [ $value, $attribs ];
 
@@ -956,7 +954,7 @@ class HTMLForm extends ContextSource {
         *
         * @return void Nothing, should be last call
         */
-       function displayForm( $submitResult ) {
+       public function displayForm( $submitResult ) {
                $this->getOutput()->addHTML( $this->getHTML( $submitResult ) );
        }
 
@@ -967,7 +965,7 @@ class HTMLForm extends ContextSource {
         *
         * @return string HTML
         */
-       function getHTML( $submitResult ) {
+       public function getHTML( $submitResult ) {
                # For good measure (it is the default)
                $this->getOutput()->preventClickjacking();
                $this->getOutput()->addModules( 'mediawiki.htmlform' );
@@ -1001,13 +999,13 @@ class HTMLForm extends ContextSource {
                        'method' => $this->getMethod(),
                        'enctype' => $encType,
                ];
-               if ( !empty( $this->mId ) ) {
+               if ( $this->mId ) {
                        $attribs['id'] = $this->mId;
                }
-               if ( !empty( $this->mAutocomplete ) ) {
+               if ( $this->mAutocomplete ) {
                        $attribs['autocomplete'] = $this->mAutocomplete;
                }
-               if ( !empty ( $this->mName ) ) {
+               if ( $this->mName ) {
                        $attribs['name'] = $this->mName;
                }
                return $attribs;
@@ -1020,7 +1018,7 @@ class HTMLForm extends ContextSource {
         *
         * @return string Wrapped HTML.
         */
-       function wrapForm( $html ) {
+       public function wrapForm( $html ) {
                # Include a <fieldset> wrapper for style, if requested.
                if ( $this->mWrapperLegend !== false ) {
                        $legend = is_string( $this->mWrapperLegend ) ? $this->mWrapperLegend : false;
@@ -1038,9 +1036,9 @@ class HTMLForm extends ContextSource {
         * Get the hidden fields that should go inside the form.
         * @return string HTML.
         */
-       function getHiddenFields() {
+       public function getHiddenFields() {
                $html = '';
-               if ( $this->getMethod() == 'post' ) {
+               if ( $this->getMethod() === 'post' ) {
                        $html .= Html::hidden(
                                'wpEditToken',
                                $this->getUser()->getEditToken( $this->mTokenSalt ),
@@ -1050,7 +1048,7 @@ class HTMLForm extends ContextSource {
                }
 
                $articlePath = $this->getConfig()->get( 'ArticlePath' );
-               if ( strpos( $articlePath, '?' ) !== false && $this->getMethod() == 'get' ) {
+               if ( strpos( $articlePath, '?' ) !== false && $this->getMethod() === 'get' ) {
                        $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
                }
 
@@ -1066,7 +1064,7 @@ class HTMLForm extends ContextSource {
         * Get the submit and (potentially) reset buttons.
         * @return string HTML.
         */
-       function getButtons() {
+       public function getButtons() {
                $buttons = '';
                $useMediaWikiUIEverywhere = $this->getConfig()->get( 'UseMediaWikiUIEverywhere' );
 
@@ -1089,9 +1087,9 @@ class HTMLForm extends ContextSource {
 
                        if ( $useMediaWikiUIEverywhere ) {
                                foreach ( $this->mSubmitFlags as $flag ) {
-                                       array_push( $attribs['class'], 'mw-ui-' . $flag );
+                                       $attribs['class'][] = 'mw-ui-' . $flag;
                                }
-                               array_push( $attribs['class'], 'mw-ui-button' );
+                               $attribs['class'][] = 'mw-ui-button';
                        }
 
                        $buttons .= Xml::submitButton( $this->getSubmitText(), $attribs ) . "\n";
@@ -1103,7 +1101,7 @@ class HTMLForm extends ContextSource {
                                [
                                        'type' => 'reset',
                                        'value' => $this->msg( 'htmlform-reset' )->text(),
-                                       'class' => ( $useMediaWikiUIEverywhere ? 'mw-ui-button' : null ),
+                                       'class' => $useMediaWikiUIEverywhere ? 'mw-ui-button' : null,
                                ]
                        ) . "\n";
                }
@@ -1158,7 +1156,7 @@ class HTMLForm extends ContextSource {
         * Get the whole body of the form.
         * @return string
         */
-       function getBody() {
+       public function getBody() {
                return $this->displaySection( $this->mFieldTree, $this->mTableId );
        }
 
@@ -1169,7 +1167,7 @@ class HTMLForm extends ContextSource {
         *
         * @return string
         */
-       function getErrors( $errors ) {
+       public function getErrors( $errors ) {
                if ( $errors instanceof Status ) {
                        if ( $errors->isOK() ) {
                                $errorstr = '';
@@ -1224,7 +1222,7 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function setSubmitText( $t ) {
+       public function setSubmitText( $t ) {
                $this->mSubmitText = $t;
 
                return $this;
@@ -1267,10 +1265,8 @@ class HTMLForm extends ContextSource {
         * Get the text for the submit button, either customised or a default.
         * @return string
         */
-       function getSubmitText() {
-               return $this->mSubmitText
-                       ? $this->mSubmitText
-                       : $this->msg( 'htmlform-submit' )->text();
+       public function getSubmitText() {
+               return $this->mSubmitText ?: $this->msg( 'htmlform-submit' )->text();
        }
 
        /**
@@ -1303,7 +1299,7 @@ class HTMLForm extends ContextSource {
         * @todo FIXME: Integrity of $t is *not* validated
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function setSubmitID( $t ) {
+       public function setSubmitID( $t ) {
                $this->mSubmitID = $t;
 
                return $this;
@@ -1319,7 +1315,7 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls
         */
-       function suppressDefaultSubmit( $suppressSubmit = true ) {
+       public function suppressDefaultSubmit( $suppressSubmit = true ) {
                $this->mShowSubmit = !$suppressSubmit;
 
                return $this;
@@ -1405,7 +1401,7 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function setMessagePrefix( $p ) {
+       public function setMessagePrefix( $p ) {
                $this->mMessagePrefix = $p;
 
                return $this;
@@ -1418,7 +1414,7 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function setTitle( $t ) {
+       public function setTitle( $t ) {
                $this->mTitle = $t;
 
                return $this;
@@ -1428,7 +1424,7 @@ class HTMLForm extends ContextSource {
         * Get the title
         * @return Title
         */
-       function getTitle() {
+       public function getTitle() {
                return $this->mTitle === false
                        ? $this->getContext()->getTitle()
                        : $this->mTitle;
@@ -1491,7 +1487,7 @@ class HTMLForm extends ContextSource {
 
                // Conveniently, PHP method names are case-insensitive.
                // For grep: this can call getDiv, getRaw, getInline, getVForm, getOOUI
-               $getFieldHtmlMethod = $displayFormat == 'table' ? 'getTableRow' : ( 'get' . $displayFormat );
+               $getFieldHtmlMethod = $displayFormat === 'table' ? 'getTableRow' : ( 'get' . $displayFormat );
 
                foreach ( $fields as $key => $value ) {
                        if ( $value instanceof HTMLFormField ) {
@@ -1507,7 +1503,7 @@ class HTMLForm extends ContextSource {
                                        $html[] = $retval;
 
                                        $labelValue = trim( $value->getLabel() );
-                                       if ( $labelValue != '&#160;' && $labelValue !== '' ) {
+                                       if ( $labelValue !== '&#160;' && $labelValue !== '' ) {
                                                $hasLabel = true;
                                        }
 
@@ -1600,7 +1596,7 @@ class HTMLForm extends ContextSource {
        /**
         * Construct the form fields from the Descriptor array
         */
-       function loadData() {
+       public function loadData() {
                $fieldData = [];
 
                foreach ( $this->mFlatFields as $fieldname => $field ) {
@@ -1630,7 +1626,7 @@ class HTMLForm extends ContextSource {
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
-       function suppressReset( $suppressReset = true ) {
+       public function suppressReset( $suppressReset = true ) {
                $this->mShowReset = !$suppressReset;
 
                return $this;
@@ -1645,7 +1641,7 @@ class HTMLForm extends ContextSource {
         *
         * @return array
         */
-       function filterDataForSubmit( $data ) {
+       public function filterDataForSubmit( $data ) {
                return $data;
        }
 
index 701403e..79bd961 100644 (file)
@@ -287,16 +287,8 @@ abstract class DatabaseInstaller {
                if ( !$status->isOK() ) {
                        throw new MWException( __METHOD__ . ': unexpected DB connection error' );
                }
-
-               \MediaWiki\MediaWikiServices::resetGlobalInstance();
-               $services = \MediaWiki\MediaWikiServices::getInstance();
-
-               $connection = $status->value;
-               $services->redefineService( 'DBLoadBalancerFactory', function() use ( $connection ) {
-                       return new LBFactorySingle( [
-                               'connection' => $connection ] );
-               } );
-
+               LBFactory::setInstance( new LBFactorySingle( [
+                       'connection' => $status->value ] ) );
        }
 
        /**
index 97214da..3d1c860 100644 (file)
@@ -351,67 +351,37 @@ abstract class Installer {
         */
        abstract public function showStatusMessage( Status $status );
 
-       /**
-        * Constructs a Config object that contains configuration settings that should be
-        * overwritten for the installation process.
-        *
-        * @since 1.27
-        *
-        * @param Config $baseConfig
-        *
-        * @return Config The config to use during installation.
-        */
-       public static function getInstallerConfig( Config $baseConfig ) {
-               $configOverrides = new HashConfig();
-
-               // disable (problematic) object cache types explicitly, preserving all other (working) ones
-               // bug T113843
-               $emptyCache = [ 'class' => 'EmptyBagOStuff' ];
-
-               $objectCaches = [
-                               CACHE_NONE => $emptyCache,
-                               CACHE_DB => $emptyCache,
-                               CACHE_ANYTHING => $emptyCache,
-                               CACHE_MEMCACHED => $emptyCache,
-                       ] + $baseConfig->get( 'ObjectCaches' );
-
-               $configOverrides->set( 'ObjectCaches', $objectCaches );
-
-               // Load the installer's i18n.
-               $messageDirs = $baseConfig->get( 'MessagesDirs' );
-               $messageDirs['MediawikiInstaller'] = __DIR__ . '/i18n';
-
-               $configOverrides->set( 'MessagesDirs', $messageDirs );
-
-               return new MultiConfig( [ $configOverrides, $baseConfig ] );
-       }
-
        /**
         * Constructor, always call this from child classes.
         */
        public function __construct() {
-               global $wgMemc, $wgUser;
-
-               $defaultConfig = new GlobalVarConfig(); // all the stuff from DefaultSettings.php
-               $installerConfig = self::getInstallerConfig( $defaultConfig );
-
-               // Reset all services and inject config overrides
-               MediaWiki\MediaWikiServices::resetGlobalInstance( $installerConfig );
+               global $wgMessagesDirs, $wgUser;
 
                // Don't attempt to load user language options (T126177)
                // This will be overridden in the web installer with the user-specified language
                RequestContext::getMain()->setLanguage( 'en' );
 
                // Disable the i18n cache
-               // TODO: manage LocalisationCache singleton in MediaWikiServices
                Language::getLocalisationCache()->disableBackend();
-
-               // Disable all global services, since we don't have any configuration yet!
-               MediaWiki\MediaWikiServices::disableStorageBackend();
+               // Disable LoadBalancer and wfGetDB etc.
+               LBFactory::disableBackend();
 
                // Disable object cache (otherwise CACHE_ANYTHING will try CACHE_DB and
                // SqlBagOStuff will then throw since we just disabled wfGetDB)
-               $wgMemc = ObjectCache::getInstance( CACHE_NONE );
+               $GLOBALS['wgMemc'] = new EmptyBagOStuff;
+               ObjectCache::clear();
+               $emptyCache = [ 'class' => 'EmptyBagOStuff' ];
+               // disable (problematic) object cache types explicitly, preserving all other (working) ones
+               // bug T113843
+               $GLOBALS['wgObjectCaches'] = [
+                       CACHE_NONE => $emptyCache,
+                       CACHE_DB => $emptyCache,
+                       CACHE_ANYTHING => $emptyCache,
+                       CACHE_MEMCACHED => $emptyCache,
+               ] + $GLOBALS['wgObjectCaches'];
+
+               // Load the installer's i18n.
+               $wgMessagesDirs['MediawikiInstaller'] = __DIR__ . '/i18n';
 
                // Having a user with id = 0 safeguards us from DB access via User::loadOptions().
                $wgUser = User::newFromId( 0 );
index d7e36ce..7d756ea 100644 (file)
@@ -12,7 +12,8 @@
                        "Leyth",
                        "Huji",
                        "Macofe",
-                       "درفش کاویانی"
+                       "درفش کاویانی",
+                       "Hamisun"
                ]
        },
        "config-desc": "نصب کنندهٔ ویکی‌مدیا",
@@ -73,6 +74,7 @@
        "config-ctype": "'''مخرب:''' پی‌اچ‌پی باید با پشتیبانی برای [http://www.php.net/manual/en/ctype.installation.php Ctype extension] تهیه شده‌باشد.",
        "config-iconv": "<strong>خطای اساسی:</strong> پی‌اچ‌پی باید کامپایل‌شده باشد برای پشتیبانی از [http://www.php.net/manual/en/iconv.installation.php افزونهٔ iconv].",
        "config-json": "'''مخرب:''' پی‌اچ‌پی بدون پشتیبانی جِی‌اس‌اُ‌ان تهیه شده‌بود.\nشما باید قبل از نصب مدیاویکی یا بسط  جِی‌اس‌اُ‌ان پی‌اچ‌پی یا بسط [http://pecl.php.net/package/jsonc PECL jsonc] را نصب کنید.\n* بسط پی‌اچ‌پی شامل لینوکس اینترپرایز رد هت (سِنت‌اُاِس) 5 یا 6 است، هرچند باید در <code>/etc/php.ini</code> یا <code>/etc/php.d/json.ini</code> فعال باشد.\n*  به‌جای بسته‌بندی کردن بسط پی‌ایی‌سی‌اِل مانند <code>php5-json</code> یا <code>php-pecl-jsonc</code>، توزیع‌های برخی لینوکس پس از ماه می ۲۰۱۳ با حذف بسط پی‌اچ‌پی افزایش پیدا کرد.",
+       "config-mbstring-absent": "<strong>خطای اساسی:</strong> پی‌اچ‌پی باید با پشتیبانی [http://www.php.net/manual/en/mbstring.setup.php mbstring extension] تهیه شده باشد.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] نصب شده‌است.",
        "config-apc": "[http://www.php.net/apc APC] نصب شده‌است.",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] نصب شده‌است.",
index 33f219b..a1e9730 100644 (file)
@@ -52,7 +52,7 @@
        "config-env-php": "Está instalado o PHP $1.",
        "config-env-hhvm": "Está instalado o HHVM $1.",
        "config-unicode-using-intl": "Usando a [http://pecl.php.net/intl extensión intl PECL] para a normalización Unicode.",
-       "config-unicode-pure-php-warning": "<strong>Atención:</strong> A [http://pecl.php.net/intl extensión intl PECL] non está dispoñible para manexar a normalización Unicode; volvendo á implementación lenta de PHP puro.\nSe o seu sitio posúe un alto tráfico de visitantes, debería ler un chisco sobre a [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalización Unicode].",
+       "config-unicode-pure-php-warning": "<strong>Atención:</strong> A [http://pecl.php.net/intl extensión intl PECL] non está dispoñible para manexar a normalización Unicode; volvendo á execución lenta de PHP puro.\nSe o seu sitio posúe un alto tráfico de visitantes, debería ler un chisco sobre a [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalización Unicode].",
        "config-unicode-update-warning": "<strong>Atención:</strong> A versión instalada da envoltura de normalización Unicode emprega unha versión vella da biblioteca [http://site.icu-project.org/ do proxecto ICU].\nDebería [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations actualizar] se o uso de Unicode é importante para vostede.",
        "config-no-db": "Non se puido atopar un controlador axeitado para a base de datos! Necesita instalar un controlador de base de datos para PHP.\n{{PLURAL:$2|Acéptase o seguinte tipo|Acéptanse os seguintes tipos}} de base de datos: $1.\n\nSe compilou o PHP vostede mesmo, reconfigúreo activando un cliente de base de datos, por exemplo, usando <code>./configure --with-mysql</code>.\nSe instalou o PHP desde un paquete Debian ou Ubuntu, entón tamén necesita instalar, por exemplo, o módulo <code>php5-mysql</code>.",
        "config-outdated-sqlite": "<strong>Atención:</strong> Ten o SQLite $1, que é inferior á versión mínima necesaria: $2. O SQLite non estará dispoñible.",
index e0a7975..50cbc32 100644 (file)
@@ -9,6 +9,7 @@
        "config-title": "MediaWiki $1 uppsetning",
        "config-information": "Upplýsingar",
        "config-localsettings-key": "Uppfærslulykill:",
+       "config-session-error": "Villa við að ræsa setu: $1",
        "config-your-language": "Tungumálið þitt:",
        "config-your-language-help": "Veldu tungumál að nota við uppsetninguna.",
        "config-wiki-language": "Tungumál á wiki:",
        "config-page-upgradedoc": "Uppfærsla",
        "config-page-existingwiki": "Fyrirliggjandi wiki",
        "config-restart": "Já, endurræsa",
+       "config-copyright": "=== Höfundarréttur og skilmálar ===\n\n$1\n\nÞetta er frjáls hugbúnaður; þú mátt dreifa honum og/eða breyta samkvæmt skilmálum í almenna GNU GPL notkunarleyfinu eins og það er gefið út af Frjálsu hugbúnaðarstofnuninni; annaðhvort útgáfu 2 af GPL-leyfinu, eða (ef þér sýnist svo) einhverri nýrri útgáfu leyfisins.\n\nHugbúnaði þessum er dreift í þeirri von að hann geti verið gagnlegur, en <strong>ÁN ALLRAR ÁBYRGÐAR</strong>; einnig án þeirrar ábyrgðar sem gefin er í skyn með <strong>SELJANLEIKA</strong> eða <strong>EIGINLEIKUM TIL TILTEKINNA NOTA</strong>. Sjá almenna GNU GPL notkunarleyfið fyrir nánari upplýsingar.\n\nÞað ætti að hafa fylgt afrit af almenna <doclink href=Copying>GNU GPL notkunarleyfinu</doclink> með forritinu; ef ekki skrifið þá Fjálsu hugbúnarstofnuninni: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, eða [http://www.gnu.org/copyleft/gpl.html lestu það á netinu].",
        "config-env-php": "PHP $1 er uppsett.",
        "config-env-hhvm": "HHVM $1 er uppsett.",
+       "config-xcache": "[http://xcache.lighttpd.net/ XCache] er uppsett",
+       "config-apc": "[http://www.php.net/apc APC] er uppsett",
+       "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] er uppsett",
        "config-diff3-bad": "GNU diff3 fannst ekki.",
+       "config-using-server": "Nota \"<nowiki>$1</nowiki>\" sem heiti á þjóni.",
+       "config-using-uri": "Nota \"<nowiki>$1$2</nowiki>\" sem slóð á þjón.",
        "config-db-type": "Tegund gagnagrunns:",
        "config-db-host": "Netþjónn gagnagrunns:",
        "config-db-name": "Heiti gagnagrunns:",
        "config-db-name-oracle": "Gagnagrunnsskema:",
        "config-db-username": "Notandanafn á gagnagrunni:",
        "config-db-password": "Lykilorð gagnagrunns:",
+       "config-charset-mysql5-binary": "MySQL 4.1/5.0 keyrsluskrá",
        "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
+       "config-db-port": "Gátt gagnagrunns:",
+       "config-sqlite-dir": "Gagnamappa SQLite:",
        "config-type-mysql": "MySQL (eða samhæft)",
        "config-type-postgres": "PostgreSQL",
        "config-type-sqlite": "SQLite",
        "config-type-oracle": "Oracle",
        "config-type-mssql": "Microsoft SQL Server",
+       "config-header-mysql": "Stillingar MySQL",
+       "config-header-postgres": "Stillingar PostgreSQL",
+       "config-header-sqlite": "Stillingar SQLite",
+       "config-header-oracle": "Stillingar Oracle",
+       "config-header-mssql": "Stillingar Microsoft SQL Server",
        "config-regenerate": "Endurgera LocalSettings.php →",
        "config-show-table-status": "<code>SHOW TABLE STATUS</code> beiðni mistókst!",
        "config-db-web-account": "Gagnagrunnsreikningur fyrir vefaðgang",
index 09a9264..f621fe4 100644 (file)
        "config-install-mainpage": "기본 내용으로 대문을 만드는 중",
        "config-install-extension-tables": "활성화된 확장 기능을 위한 테이블을 만드는 중",
        "config-install-mainpage-failed": "대문을 삽입할 수 없습니다: $1",
-       "config-install-done": "<strong>축하합니다!</strong>\n미디어위키가 성공적으로 설치되었습니다.\n\n설치 관리자가 <code>LocalSettings.php</code> 파일을 만들었습니다.\n모든 설정이 포함되어 있습니다.\n\n파일을 다운로드하여 위키 설치의 거점에 넣어야 합니다. (index.php와 같은 디렉터리) 다운로드가 자동으로 시작됩니다.\n\n다운로드가 제공되지 않을 경우나 그것을 취소한 경우에는 아래의 링크를 클릭하여 다운로드를 다시 시작할 수 있습니다:\n\n$3\n\n<strong>참고:</strong> 이 생성한 설정 파일을 다운로드하지 않고 설치를 끝내면 이 파일은 나중에 사용할 수 없습니다.\n\n완료되었으면 <strong>[$2 위키에 들어갈 수 있습니다]</strong>.",
+       "config-install-done": "<strong>축하합니다!</strong>\n미디어위키를 설치했습니다.\n\n설치 관리자가 <code>LocalSettings.php</code> 파일을 만들었습니다.\n여기에 모든 설정이 포함되어 있습니다.\n\n파일을 다운로드하여 위키 설치의 거점에 넣어야 합니다. (index.php와 같은 디렉터리) 다운로드가 자동으로 시작됩니다.\n\n다운로드가 제공되지 않을 경우나 그것을 취소한 경우에는 아래의 링크를 클릭하여 다운로드를 다시 시작할 수 있습니다:\n\n$3\n\n<strong>참고:</strong> 이 생성한 설정 파일을 다운로드하지 않고 설치를 끝내면 이 파일은 나중에 사용할 수 없습니다.\n\n완료되었으면 <strong>[$2 위키에 들어갈 수 있습니다]</strong>.",
        "config-download-localsettings": "<code>LocalSettings.php</code> 다운로드",
        "config-help": "도움말",
        "config-help-tooltip": "확장하려면 클릭",
        "config-nofile": "\"$1\" 파일을 찾을 수 없습니다. 이미 삭제되었나요?",
        "config-extension-link": "당신의 위키가 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions 확장 기능]을 지원한다는 것을 알고 계십니까?\n\n[//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category 분류별 확장 기능]을 찾아보실 수 있습니다.",
-       "mainpagetext": "<strong>미ë\94\94ì\96´ì\9c\84í\82¤ê°\80 ì\84±ê³µì \81ì\9c¼ë¡\9c ì\84¤ì¹\98ë\90\98ì\97\88ì\8aµë\8b\88ë\8b¤.</strong>",
+       "mainpagetext": "<strong>미디어위키가 설치되었습니다.</strong>",
        "mainpagedocfooter": "[//meta.wikimedia.org/wiki/Help:Contents 이곳]에서 위키 소프트웨어에 대한 정보를 얻을 수 있습니다.\n\n== 시작하기 ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings 설정하기 목록]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ 미디어위키 FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 릴리스 메일링 리스트]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 내 언어로 미디어위키 지역화]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 당신의 위키에서 스팸에 대처하는 법을 배우세요]"
 }
index 8c6cb8b..e3f800e 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Umeshberma",
                        "बिप्लब आनन्द",
-                       "Bijay chaurasia"
+                       "Bijay chaurasia",
+                       "Tulsi Bhagat"
                ]
        },
        "config-desc": "मेडिया-विकी के लेल इंस्टॉलर",
        "config-page-complete": "पूर्ण!",
        "config-page-restart": "स्थापनाके पुनारम्भ करु",
        "config-page-readme": "पढू",
+       "config-page-releasenotes": "रिलीज नोट्स",
+       "config-page-copying": "अनुकरण",
+       "config-page-upgradedoc": "उपारोपण भऽ रहल अछि।",
        "config-page-existingwiki": "रहल विकी",
        "config-restart": "हँ, एकरा पुन: सुरु कएल जाए",
+       "config-sidebar": "* [//www.mediawiki.org MediaWiki home]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User's Guide]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Administrator's Guide]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ]\n----\n* <doclink href=Readme>Read me</doclink>\n* <doclink href=ReleaseNotes>Release notes</doclink>\n* <doclink href=Copying>Copying</doclink>\n* <doclink href=UpgradeDoc>Upgrading</doclink>",
+       "config-env-good": "पर्यावरण क जाँच कएल गेल अछि।\nआहाँ मीडियाविकि स्थापित कर सकै चिए।",
+       "config-env-bad": "पर्यावरण क जाँच कएल गेल अछि।\nआहाँ मीडियाविकि स्थापित नै कर सकै चिए।",
+       "config-env-php": "PHP $1 स्थापित कएल ग्याल अछि।",
        "mainpagetext": "'''मेडियाविकी नीक जकाँ प्रस्थापित भेल।'''",
        "mainpagedocfooter": "सम्पर्क करू [//meta.wikimedia.org/wiki/Help:Contents User's Guide] विकि तंत्रांशक प्रयोगक जानकारी लेल।\n\n==प्रारम्भ कोना करी==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]"
 }
index 1d5d779..7422a66 100644 (file)
@@ -82,6 +82,7 @@
        "config-ctype": "''' Krytyczny ''': PHP musi być skompilowany z obsługą [http://www.php.net/manual/en/ctype.installation.php rozszerzenia Ctype].",
        "config-iconv": "<strong>Błąd krytyczny:</strong> PHP musi być skompilowane z obsługą [http://www.php.net/manual/en/iconv.installation.php rozszerzenia iconv].",
        "config-json": "'''Błąd krytyczny:''' PHP skompilowano bez obsługa JSON.\nPrzed zainstalowaniem oprogramowania MediaWiki musisz zainstalować rozszerzenie PHP JSON albo rozszerzenie [http://pecl.php.net/package/jsonc PECL jsonc].\n* Rozszerzenie PHP jest zawarte w Red Hat Enterprise Linux (CentOS) 5 i 6, jednak musi zostać włączone w <code>/etc/php.ini</code> or <code>/etc/php.d/json.ini</code>.\n* Niektóre dystrybucje Linuksa, wydane po maju 2013, nie używają rozszerzenia PHP, lecz rozszerzenie PECL, jako <code>php5-json</code> lub <code>php-pecl-jsonc</code>.",
+       "config-mbstring-absent": "<strong>Błąd krytyczny:</strong> PHP musi być skompilowany z obsługą [http://www.php.net/manual/en/mbstring.setup.php rozszerzenia mbstring].",
        "config-xcache": "[Http://trac.lighttpd.net/xcache/ XCache] jest zainstalowany",
        "config-apc": "[Http://www.php.net/apc APC] jest zainstalowany",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] jest zainstalowany",
index 5943c05..7d2926c 100644 (file)
        "config-admin-password-blank": "输入管理员帐号的密码。",
        "config-admin-password-mismatch": "两次输入的密码并不相同。",
        "config-admin-email": "电子邮件地址:",
-       "config-admin-email-help": "在这里输入电子邮件地址可以允许你收到来自本wiki其他用户的电子邮件,重置你的密码和收到你的监视列表中的页面的更改通知。你可以将该字段留空。",
+       "config-admin-email-help": "在这里输入电子邮件地址可以允许您收到来自本wiki其他用户的电子邮件,重置您的密码和收到您的监视列表中的页面的更改通知。您可以将该字段留空。",
        "config-admin-error-user": "在创建用户名为“<nowiki>$1</nowiki>”的管理员帐号时发生内部错误。",
        "config-admin-error-password": "在为管理员“<nowiki>$1</nowiki>”设置密码时发生内部错误:<pre>$2</pre>",
        "config-admin-error-bademail": "您输入了无效的电子邮件地址。",
        "config-profile-no-anon": "需要注册帐号",
        "config-profile-fishbowl": "编辑受限",
        "config-profile-private": "非公开wiki",
-       "config-profile-help": "如果您允许尽量多的人编写wiki,网站上的内容会更加丰富。在MediaWiki中,您可以轻松地审查最近更改,并轻易回退掉新手或破坏者造成的损害。\n\n然而,许多人觉得让MediaWiki存在多种角色将更加好用;同时,要说服所有人都愿以wiki的方式作贡献并非一件易事。因此,您可以有以下选择:\n\n'''{{int:config-profile-wiki}}'''允许包括未登录用户在内的所有人编辑。'''{{int:config-profile-no-anon}}'''的wiki需要额外的注册流程,这有可能会阻碍随意贡献者。\n\n'''{{int:config-profile-fishbowl}}'''模式只允许获批准的用户编辑,但对公众开放页面浏览(包括历史记录)。'''{{int:config-profile-private}}'''则只允许获批准的用户浏览、编辑页面。\n\n安装完成后,您还可以对用户权限进行更多、更复杂的配置,参见[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights 相关的使用手册]。",
+       "config-profile-help": "如果您允许尽量多的人编写wiki,网站上的内容会更加丰富。在MediaWiki中,您可以轻松地审查最近更改,并轻易回退掉新手或破坏者造成的损害。\n\n然而,许多人觉得让MediaWiki存在多种角色将更加好用;同时,要说服所有人都愿以wiki的方式作贡献并非一件易事。因此,您可以有以下选择:\n\n<strong>{{int:config-profile-wiki}}</strong>模式允许包括未登录用户在内的所有人编辑。<strong>{{int:config-profile-no-anon}}</strong>的wiki需要额外的注册流程,这有可能会阻碍随意贡献者。\n\n<strong>{{int:config-profile-fishbowl}}</strong>方案只允许获批准的用户编辑,但对公众开放页面浏览(包括历史记录)。<strong>{{int:config-profile-private}}</strong>则只允许获批准的用户浏览、编辑页面。\n\n安装完成后,您还可以对用户权限进行更多、更复杂的配置,参见[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights 相关的使用手册]。",
        "config-license": "版权和许可证:",
        "config-license-none": "页脚无许可证",
        "config-license-cc-by-sa": "知识共享“署名-相同方式共享”",
index 9ccf6f8..bbd0ddb 100644 (file)
@@ -92,6 +92,10 @@ abstract class Job implements IJobSpecification {
 
                // expensive jobs may set this to true
                $this->removeDuplicates = false;
+
+               if ( !isset( $this->params['requestId'] ) ) {
+                       $this->params['requestId'] = WebRequest::getRequestId();
+               }
        }
 
        /**
@@ -152,6 +156,18 @@ abstract class Job implements IJobSpecification {
                        : null;
        }
 
+       /**
+        * @return string|null Id of the request that created this job. Follows
+        *  jobs recursively, allowing to track the id of the request that started a
+        *  job when jobs insert jobs which insert other jobs.
+        * @since 1.27
+        */
+       public function getRequestId() {
+               return isset( $this->params['requestId'] )
+                       ? $this->params['requestId']
+                       : null;
+       }
+
        /**
         * @return int|null UNIX timestamp of when the job was runnable, or null
         * @since 1.26
@@ -214,6 +230,8 @@ abstract class Job implements IJobSpecification {
                        unset( $info['params']['rootJobTimestamp'] );
                        // Likewise for jobs with different delay times
                        unset( $info['params']['jobReleaseTimestamp'] );
+                       // Identical jobs from different requests should count as duplicates
+                       unset( $info['params']['requestId'] );
                        // Queues pack and hash this array, so normalize the order
                        ksort( $info['params'] );
                }
index 5b71938..d64be3c 100644 (file)
 abstract class JobQueue {
        /** @var string Wiki ID */
        protected $wiki;
-
        /** @var string Job type */
        protected $type;
-
        /** @var string Job priority for pop() */
        protected $order;
-
        /** @var int Time to live in seconds */
        protected $claimTTL;
-
        /** @var int Maximum number of times to try a job */
        protected $maxTries;
+       /** @var string|bool Read only rationale (or false if r/w) */
+       protected $readOnlyReason;
 
        /** @var BagOStuff */
        protected $dupCache;
@@ -74,6 +72,9 @@ abstract class JobQueue {
                $this->aggr = isset( $params['aggregator'] )
                        ? $params['aggregator']
                        : new JobQueueAggregatorNull( [] );
+               $this->readOnlyReason = isset( $params['readOnlyReason'] )
+                       ? $params['readOnlyReason']
+                       : false;
        }
 
        /**
@@ -96,6 +97,7 @@ abstract class JobQueue {
         *                  but not acknowledged as completed after this many seconds. Recycling
         *                  of jobs simply means re-inserting them into the queue. Jobs can be
         *                  attempted up to three times before being discarded.
+        *   - readOnlyReason : Set this to a string to make the queue read-only.
         *
         * Queue classes should throw an exception if they do not support the options given.
         *
@@ -168,6 +170,14 @@ abstract class JobQueue {
                return $this->supportsDelayedJobs();
        }
 
+       /**
+        * @return string|bool Read-only rational or false if r/w
+        * @since 1.27
+        */
+       public function getReadOnlyReason() {
+               return $this->readOnlyReason;
+       }
+
        /**
         * Quickly check if the queue has no available (unacquired, non-delayed) jobs.
         * Queue classes should use caching if they are any slower without memcached.
@@ -307,6 +317,8 @@ abstract class JobQueue {
         * @throws MWException
         */
        final public function batchPush( array $jobs, $flags = 0 ) {
+               $this->assertNotReadOnly();
+
                if ( !count( $jobs ) ) {
                        return; // nothing to do
                }
@@ -349,6 +361,7 @@ abstract class JobQueue {
        final public function pop() {
                global $wgJobClasses;
 
+               $this->assertNotReadOnly();
                if ( $this->wiki !== wfWikiID() ) {
                        throw new MWException( "Cannot pop '{$this->type}' job off foreign wiki queue." );
                } elseif ( !isset( $wgJobClasses[$this->type] ) ) {
@@ -392,9 +405,11 @@ abstract class JobQueue {
         * @throws MWException
         */
        final public function ack( Job $job ) {
+               $this->assertNotReadOnly();
                if ( $job->getType() !== $this->type ) {
                        throw new MWException( "Got '{$job->getType()}' job; expected '{$this->type}'." );
                }
+
                $this->doAck( $job );
        }
 
@@ -436,12 +451,12 @@ abstract class JobQueue {
         * @return bool
         */
        final public function deduplicateRootJob( IJobSpecification $job ) {
+               $this->assertNotReadOnly();
                if ( $job->getType() !== $this->type ) {
                        throw new MWException( "Got '{$job->getType()}' job; expected '{$this->type}'." );
                }
-               $ok = $this->doDeduplicateRootJob( $job );
 
-               return $ok;
+               return $this->doDeduplicateRootJob( $job );
        }
 
        /**
@@ -524,6 +539,8 @@ abstract class JobQueue {
         * @return void
         */
        final public function delete() {
+               $this->assertNotReadOnly();
+
                $this->doDelete();
        }
 
@@ -672,6 +689,15 @@ abstract class JobQueue {
                return null; // not supported
        }
 
+       /**
+        * @throws JobQueueReadOnlyError
+        */
+       protected function assertNotReadOnly() {
+               if ( $this->readOnlyReason !== false ) {
+                       throw new JobQueueReadOnlyError( "Job queue is read-only: {$this->readOnlyReason}" );
+               }
+       }
+
        /**
         * Call wfIncrStats() for the queue overall and for the queue type
         *
@@ -699,3 +725,7 @@ class JobQueueError extends MWException {
 
 class JobQueueConnectionError extends JobQueueError {
 }
+
+class JobQueueReadOnlyError extends JobQueueError {
+
+}
index 8b6c7f0..982a3a0 100644 (file)
@@ -36,6 +36,8 @@ class JobQueueGroup {
 
        /** @var string Wiki ID */
        protected $wiki;
+       /** @var string|bool Read only rationale (or false if r/w) */
+       protected $readOnlyReason;
 
        /** @var array Map of (bucket => (queue => JobQueue, types => list of types) */
        protected $coalescedQueues;
@@ -54,9 +56,11 @@ class JobQueueGroup {
 
        /**
         * @param string $wiki Wiki ID
+        * @param string|bool $readOnlyReason Read-only reason or false
         */
-       protected function __construct( $wiki ) {
+       protected function __construct( $wiki, $readOnlyReason ) {
                $this->wiki = $wiki;
+               $this->readOnlyReason = $readOnlyReason;
                $this->cache = new ProcessCacheLRU( 10 );
        }
 
@@ -67,7 +71,7 @@ class JobQueueGroup {
        public static function singleton( $wiki = false ) {
                $wiki = ( $wiki === false ) ? wfWikiID() : $wiki;
                if ( !isset( self::$instances[$wiki] ) ) {
-                       self::$instances[$wiki] = new self( $wiki );
+                       self::$instances[$wiki] = new self( $wiki, wfConfiguredReadOnlyReason() );
                }
 
                return self::$instances[$wiki];
@@ -98,6 +102,9 @@ class JobQueueGroup {
                        $conf = $conf + $wgJobTypeConf['default'];
                }
                $conf['aggregator'] = JobQueueAggregator::singleton();
+               if ( $this->readOnlyReason !== false ) {
+                       $conf['readOnlyReason'] = $this->readOnlyReason;
+               }
 
                return JobQueue::factory( $conf );
        }
index 0a0a7a2..a2f55b9 100644 (file)
@@ -163,6 +163,8 @@ class JobRunner implements LoggerAwareInterface {
                                $popTime = time();
                                $jType = $job->getType();
 
+                               WebRequest::overrideRequestId( $job->getRequestId() );
+
                                // Back off of certain jobs for a while (for throttling and for errors)
                                $ttw = $this->getBackoffTimeToWait( $job );
                                if ( $ttw > 0 ) {
index bc2f7c4..16e35f1 100644 (file)
@@ -69,7 +69,7 @@ class AssembleUploadChunksJob extends Job {
                                        $this->params['filekey'],
                                        [ 'result' => 'Failure', 'stage' => 'assembling', 'status' => $status ]
                                );
-                               $this->setLastError( $status->getWikiText() );
+                               $this->setLastError( $status->getWikiText( false, false, 'en' ) );
 
                                return false;
                        }
index a6d2f70..d2825a8 100644 (file)
@@ -92,7 +92,7 @@ class PublishStashedFileJob extends Job {
                                        $this->params['filekey'],
                                        [ 'result' => 'Failure', 'stage' => 'publish', 'status' => $status ]
                                );
-                               $this->setLastError( $status->getWikiText() );
+                               $this->setLastError( $status->getWikiText( false, false, 'en' ) );
 
                                return false;
                        }
index fb35801..2156bd7 100644 (file)
@@ -28,7 +28,7 @@
 class ArrayUtils {
        /**
         * Sort the given array in a pseudo-random order which depends only on the
-        * given key and each element value. This is typically used for load
+        * given key and each element value in $array. This is typically used for load
         * balancing between servers each with a local cache.
         *
         * Keys are preserved. The input array is modified in place.
diff --git a/includes/libs/eventrelayer/EventRelayerMCRD.php b/includes/libs/eventrelayer/EventRelayerMCRD.php
deleted file mode 100644 (file)
index 4bcdf12..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-/**
- * 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
- * @author Aaron Schulz
- */
-
-/**
- * Relayed that uses the mcrelaypushd server
- */
-class EventRelayerMCRD extends EventRelayer {
-       /** @var MultiHttpClient */
-       protected $http;
-       /** @var string */
-       protected $baseUrl;
-
-       /**
-        * Additional params include 'mcrdConfig', which is a map of:
-        *   - url : The base URL of the service (without paths)
-        * @param array $params
-        */
-       public function __construct( array $params ) {
-               parent::__construct( $params );
-
-               $this->baseUrl = $params['mcrdConfig']['url'];
-
-               $httpConfig = isset( $params['httpConfig'] ) ? $params['httpConfig'] : [];
-               if ( !isset( $httpConfig['connTimeout'] ) ) {
-                       $httpConfig['connTimeout'] = 1;
-               }
-               if ( !isset( $httpConfig['reqTimeout'] ) ) {
-                       $httpConfig['reqTimeout'] = .25;
-               }
-
-               $this->http = new MultiHttpClient( $httpConfig );
-       }
-
-       protected function doNotify( $channel, array $events ) {
-               if ( !count( $events ) ) {
-                       return true;
-               }
-
-               $response = $this->http->run( [
-                       'url'     => "{$this->baseUrl}/relayer/api/v1.0/" . rawurlencode( $channel ),
-                       'method'  => 'POST',
-                       'body'    => json_encode( [ 'events' => $events ] ),
-                       'headers' => [ 'content-type' => 'application/json' ]
-               ] );
-
-               return $response['code'] == 201;
-       }
-}
index 4b8ad5e..f304bd9 100644 (file)
@@ -46,7 +46,7 @@
 class VirtualRESTServiceClient {
        /** @var MultiHttpClient */
        protected $http;
-       /** @var Array Map of (prefix => VirtualRESTService) */
+       /** @var VirtualRESTService[] Map of (prefix => VirtualRESTService) */
        protected $instances = [];
 
        const VALID_MOUNT_REGEX = '#^/[0-9a-z]+/([0-9a-z]+/)*$#';
index 410c970..3d04641 100644 (file)
@@ -384,6 +384,8 @@ class LogPager extends ReverseChronologicalPager {
        }
 
        /**
+        * Guaranteed to either return a valid title string or a Zero-Length String
+        *
         * @return string
         */
        public function getPerformer() {
index b9dfb6c..1fd4b7f 100644 (file)
@@ -33,12 +33,19 @@ class RightsLogFormatter extends LogFormatter {
                global $wgContLang, $wgUserrightsInterwikiDelimiter;
 
                if ( !$this->plaintext ) {
-                       $text = $wgContLang->ucfirst( $title->getText() );
+                       $text = $wgContLang->ucfirst( $title->getDBkey() );
                        $parts = explode( $wgUserrightsInterwikiDelimiter, $text, 2 );
 
                        if ( count( $parts ) === 2 ) {
-                               $titleLink = WikiMap::foreignUserLink( $parts[1], $parts[0],
-                                       htmlspecialchars( $title->getText() ) );
+                               $titleLink = WikiMap::foreignUserLink(
+                                       $parts[1],
+                                       $parts[0],
+                                       htmlspecialchars(
+                                               strtr( $parts[0], '_', ' ' ) .
+                                               $wgUserrightsInterwikiDelimiter .
+                                               $parts[1]
+                                       )
+                               );
 
                                if ( $titleLink !== false ) {
                                        return $titleLink;
index 3945094..a1394c1 100644 (file)
  * @ingroup Cache
  */
 class SqlBagOStuff extends BagOStuff {
-       /** @var array */
+       /** @var array[] (server index => server config) */
        protected $serverInfos;
-       /** @var array */
-       protected $serverNames;
+       /** @var string[] (server index => tag/host name) */
+       protected $serverTags;
        /** @var int */
        protected $numServers;
        /** @var int */
@@ -58,9 +58,12 @@ class SqlBagOStuff extends BagOStuff {
         *   - server:      A server info structure in the format required by each
         *                  element in $wgDBServers.
         *
-        *   - servers:     An array of server info structures describing a set of
-        *                  database servers to distribute keys to. If this is
-        *                  specified, the "server" option will be ignored.
+        *   - servers:     An array of server info structures describing a set of database servers
+        *                  to distribute keys to. If this is specified, the "server" option will be
+        *                  ignored. If string keys are used, then they will be used for consistent
+        *                  hashing *instead* of the host name (from the server config). This is useful
+        *                  when a cluster is replicated to another site (with different host names)
+        *                  but each server has a corresponding replica in the other cluster.
         *
         *   - purgePeriod: The average number of object cache requests in between
         *                  garbage collection operations, where expired entries
@@ -89,11 +92,18 @@ class SqlBagOStuff extends BagOStuff {
        public function __construct( $params ) {
                parent::__construct( $params );
                if ( isset( $params['servers'] ) ) {
-                       $this->serverInfos = $params['servers'];
-                       $this->numServers = count( $this->serverInfos );
-                       $this->serverNames = [];
-                       foreach ( $this->serverInfos as $i => $info ) {
-                               $this->serverNames[$i] = isset( $info['host'] ) ? $info['host'] : "#$i";
+                       $this->serverInfos = [];
+                       $this->serverTags = [];
+                       $this->numServers = count( $params['servers'] );
+                       $index = 0;
+                       foreach ( $params['servers'] as $tag => $info ) {
+                               $this->serverInfos[$index] = $info;
+                               if ( is_string( $tag ) ) {
+                                       $this->serverTags[$index] = $tag;
+                               } else {
+                                       $this->serverTags[$index] = isset( $info['host'] ) ? $info['host'] : "#$index";
+                               }
+                               ++$index;
                        }
                } elseif ( isset( $params['server'] ) ) {
                        $this->serverInfos = [ $params['server'] ];
@@ -180,7 +190,7 @@ class SqlBagOStuff extends BagOStuff {
                        $tableIndex = 0;
                }
                if ( $this->numServers > 1 ) {
-                       $sortedServers = $this->serverNames;
+                       $sortedServers = $this->serverTags;
                        ArrayUtils::consistentHashSort( $sortedServers, $key );
                        reset( $sortedServers );
                        $serverIndex = key( $sortedServers );
index d382001..6c93202 100644 (file)
@@ -47,4 +47,18 @@ class WikiCategoryPage extends WikiPage {
                }
                return false;
        }
+
+       /**
+        * Checks if a category is hidden.
+        *
+        * @since 1.27
+        *
+        * @return bool
+        */
+       public function isHidden() {
+               $pageId = $this->getTitle()->getArticleID();
+               $pageProps = PageProps::getInstance()->getProperties( $this->getTitle(), 'hiddencat' );
+
+               return isset( $pageProps[$pageId] ) ? true : false;
+       }
 }
index 5e5532f..06785b7 100644 (file)
@@ -94,7 +94,7 @@ class WikiPage implements Page, IDBAccessObject {
         * @param Title $title
         *
         * @throws MWException
-        * @return WikiPage Object of the appropriate type
+        * @return WikiPage|WikiCategoryPage|WikiFilePage
         */
        public static function factory( Title $title ) {
                $ns = $title->getNamespace();
@@ -3503,6 +3503,8 @@ class WikiPage implements Page, IDBAccessObject {
                        return;
                }
 
+               $config = RequestContext::getMain()->getConfig();
+
                $params = [
                        'isOpportunistic' => true,
                        'rootJobTimestamp' => $parserOutput->getCacheTime()
@@ -3513,7 +3515,7 @@ class WikiPage implements Page, IDBAccessObject {
                        JobQueueGroup::singleton()->lazyPush(
                                RefreshLinksJob::newPrioritized( $this->mTitle, $params )
                        );
-               } elseif ( $parserOutput->hasDynamicContent() ) {
+               } elseif ( !$config->get( 'MiserMode' ) && $parserOutput->hasDynamicContent() ) {
                        // Assume the output contains "dynamic" time/random based magic words.
                        // Only update pages that expired due to dynamic content and NOT due to edits
                        // to referenced templates/files. When the cache expires due to dynamic content,
@@ -3525,7 +3527,8 @@ class WikiPage implements Page, IDBAccessObject {
                                // Although it would be de-duplicated, it would still waste I/O.
                                $cache = ObjectCache::getLocalClusterInstance();
                                $key = $cache->makeKey( 'dynamic-linksupdate', 'last', $this->getId() );
-                               if ( $cache->add( $key, time(), 60 ) ) {
+                               $ttl = max( $parserOutput->getCacheExpiry(), 3600 );
+                               if ( $cache->add( $key, time(), $ttl ) ) {
                                        JobQueueGroup::singleton()->lazyPush(
                                                RefreshLinksJob::newDynamic( $this->mTitle, $params )
                                        );
index d2e4bf0..8209ea9 100644 (file)
@@ -1213,9 +1213,9 @@ class Parser {
         *
         * @private
         *
-        * @param string $text
-        * @param bool $isMain
-        * @param PPFrame|bool $frame
+        * @param string $text The text to parse
+        * @param bool $isMain Whether this is being called from the main parse() function
+        * @param PPFrame|bool $frame A pre-processor frame
         *
         * @return string
         */
index 0aa08be..086ab17 100644 (file)
@@ -1098,7 +1098,7 @@ MESSAGE;
                                        $scripts = self::filter( 'minify-js', $scripts );
                                }
                        } else {
-                               $scripts = new XmlJsCode( "function ( $, jQuery ) {\n{$scripts}\n}" );
+                               $scripts = new XmlJsCode( "function ( $, jQuery, require, module ) {\n{$scripts}\n}" );
                        }
                } elseif ( !is_array( $scripts ) ) {
                        throw new MWException( 'Invalid scripts error. Array of URLs or string of code expected.' );
index 222135c..44371bb 100644 (file)
@@ -78,6 +78,7 @@ class ResourceLoaderSpecialCharacterDataModule extends ResourceLoaderModule {
                        'special-characters-group-ipa',
                        'special-characters-group-symbols',
                        'special-characters-group-greek',
+                       'special-characters-group-greekextended',
                        'special-characters-group-cyrillic',
                        'special-characters-group-arabic',
                        'special-characters-group-arabicextended',
index cb4f81d..510726b 100644 (file)
@@ -23,4 +23,8 @@ class SearchNearMatchResultSet extends SearchResultSet {
                $this->fetched = true;
                return SearchResult::newFromTitle( $this->result );
        }
+
+       public function rewind() {
+               $this->fetched = false;
+       }
 }
index bfee698..69795e7 100644 (file)
@@ -129,7 +129,7 @@ class SearchResultSet {
        /**
         * Return a result set of hits on other (multiple) wikis associated with this one
         *
-        * @return SearchResultSet
+        * @return SearchResultSet[]
         */
        function getInterwikiResults( $type = self::SECONDARY_RESULTS ) {
                return null;
@@ -154,6 +154,12 @@ class SearchResultSet {
                return false;
        }
 
+       /**
+        * Rewind result set back to begining
+        */
+       function rewind() {
+       }
+
        /**
         * Frees the result set, if applicable.
         */
index 7a6aaf7..6b60899 100644 (file)
@@ -8,7 +8,7 @@ class SqlSearchResultSet extends SearchResultSet {
        protected $terms;
        protected $totalHits;
 
-       function __construct( $resultSet, $terms, $total = null ) {
+       function __construct( ResultWrapper $resultSet, $terms, $total = null ) {
                $this->resultSet = $resultSet;
                $this->terms = $terms;
                $this->totalHits = $total;
@@ -41,6 +41,12 @@ class SqlSearchResultSet extends SearchResultSet {
                );
        }
 
+       function rewind() {
+               if ( $this->resultSet ) {
+                       $this->resultSet->rewind();
+               }
+       }
+
        function free() {
                if ( $this->resultSet === false ) {
                        return false;
index 2820712..29cd69a 100644 (file)
@@ -23,7 +23,7 @@
 
 namespace MediaWiki\Session;
 
-use MediaWiki\MediaWikiServices;
+use MWException;
 use Psr\Log\LoggerInterface;
 use BagOStuff;
 use CachedBagOStuff;
@@ -499,10 +499,12 @@ final class SessionManager implements SessionManagerInterface {
                                                        'username' => $userName,
                                                ] );
                                } else {
-                                       $logger->error( __METHOD__ . ': failed with message ' . $status->getWikiText(),
+                                       $logger->error(
+                                               __METHOD__ . ': failed with message ' . $status->getWikiText( false, false, 'en' ),
                                                [
                                                        'username' => $userName,
-                                               ] );
+                                               ]
+                                       );
                                }
                                $user->setId( $id );
                                $user->loadFromId( User::READ_LATEST );
@@ -1091,7 +1093,11 @@ final class SessionManager implements SessionManagerInterface {
         * Reset the internal caching for unit testing
         */
        public static function resetCache() {
-               MediaWikiServices::failUnlessBootstrapping( __METHOD__ );
+               if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
+                       // @codeCoverageIgnoreStart
+                       throw new MWException( __METHOD__ . ' may only be called from unit tests!' );
+                       // @codeCoverageIgnoreEnd
+               }
 
                self::$globalSession = null;
                self::$globalSessionRequest = null;
index bb64510..a4116ae 100644 (file)
@@ -23,8 +23,6 @@
  * @file
  * @ingroup Site
  *
- * @deprecated 1.27 use DBSiteStore and CachingSiteStore instead.
- *
  * @license GNU GPL v2+
  * @author Daniel Kinzler
  */
index 2a7046e..1ecbee0 100644 (file)
@@ -299,4 +299,14 @@ class LinkSearchPage extends QueryPage {
        protected function getGroupName() {
                return 'redirects';
        }
+
+       /**
+        * enwiki complained about low limits on this special page
+        *
+        * @see T130058
+        * @todo FIXME This special page should not use LIMIT for paging
+        */
+       protected function getMaxResults() {
+               return max( parent::getMaxResults(), 60000 );
+       }
 }
index bbe0e0d..af087a6 100644 (file)
@@ -187,7 +187,8 @@ class SpecialLog extends SpecialPage {
 
                # Set relevant user
                if ( $pager->getPerformer() ) {
-                       $this->getSkin()->setRelevantUser( User::newFromName( $pager->getPerformer() ) );
+                       $performerUser = User::newFromName( $pager->getPerformer(), false );
+                       $this->getSkin()->setRelevantUser( $performerUser );
                }
 
                # Show form options
index 7f257e6..2e7b4cd 100644 (file)
@@ -74,7 +74,11 @@ class SpecialPreferences extends SpecialPage {
                $this->addHelpLink( 'Help:Preferences' );
 
                // Load the user from the master to reduce CAS errors on double post (T95839)
-               $user = $this->getUser()->getInstanceForUpdate() ?: $this->getUser();
+               if ( $this->getRequest()->wasPosted() ) {
+                       $user = $this->getUser()->getInstanceForUpdate() ?: $this->getUser();
+               } else {
+                       $user = $this->getUser();
+               }
 
                $htmlForm = Preferences::getFormObject( $user, $this->getContext() );
                $htmlForm->setSubmitCallback( [ 'Preferences', 'tryUISubmit' ] );
index de77380..b93fb4e 100644 (file)
@@ -324,12 +324,23 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $list = ChangesList::newFromContext( $this->getContext() );
                $list->initChangesListRows( $rows );
 
+               $userShowHiddenCats = $this->getUser()->getBoolOption( 'showhiddencats' );
                $rclistOutput = $list->beginRecentChangesList();
                foreach ( $rows as $obj ) {
                        if ( $limit == 0 ) {
                                break;
                        }
                        $rc = RecentChange::newFromRow( $obj );
+
+                       # Skip CatWatch entries for hidden cats based on user preference
+                       if (
+                               $rc->getAttribute( 'rc_type' ) == RC_CATEGORIZE &&
+                               !$userShowHiddenCats &&
+                               $rc->getParam( 'hidden-cat' )
+                       ) {
+                               continue;
+                       }
+
                        $rc->counter = $counter++;
                        # Check if the page has been updated since the last visit
                        if ( $this->getConfig()->get( 'ShowUpdatedMarker' )
@@ -344,14 +355,8 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        if ( $showWatcherCount && $obj->rc_namespace >= 0 ) {
                                if ( !isset( $watcherCache[$obj->rc_namespace][$obj->rc_title] ) ) {
                                        $watcherCache[$obj->rc_namespace][$obj->rc_title] =
-                                               $dbr->selectField(
-                                                       'watchlist',
-                                                       'COUNT(*)',
-                                                       [
-                                                               'wl_namespace' => $obj->rc_namespace,
-                                                               'wl_title' => $obj->rc_title,
-                                                       ],
-                                                       __METHOD__ . '-watchers'
+                                               WatchedItemStore::getDefaultInstance()->countWatchers(
+                                                       new TitleValue( (int)$obj->rc_namespace, $obj->rc_title )
                                                );
                                }
                                $rc->numberofWatchingusers = $watcherCache[$obj->rc_namespace][$obj->rc_title];
index 2312f76..ce5533f 100644 (file)
@@ -94,8 +94,11 @@ class SpecialRunJobs extends UnlistedSpecialPage {
                                if ( strpos( $errstr, 'Cannot modify header information' ) !== false ) {
                                        return true; // bug T115413
                                }
-                               // Delegate unhandled errors to the default handlers
-                               return false;
+                               // Delegate unhandled errors to the default MediaWiki handler
+                               // so that fatal errors get proper logging (T89169)
+                               return call_user_func_array(
+                                       'MWExceptionHandler::handleError', func_get_args()
+                               );
                        } );
                }
 
index dfab8d4..45ef679 100644 (file)
@@ -97,7 +97,7 @@ class SpecialSearch extends SpecialPage {
                $out->allowClickjacking();
                $out->addModuleStyles( [
                        'mediawiki.special', 'mediawiki.special.search', 'mediawiki.ui', 'mediawiki.ui.button',
-                       'mediawiki.ui.input',
+                       'mediawiki.ui.input', 'mediawiki.widgets.SearchInputWidget.styles',
                ] );
                $this->addHelpLink( 'Help:Searching' );
 
@@ -323,6 +323,7 @@ class SpecialSearch extends SpecialPage {
                $num = $titleMatchesNum + $textMatchesNum;
                $totalRes = $numTitleMatches + $numTextMatches;
 
+               $out->enableOOUI();
                $out->addHTML(
                        # This is an awful awful ID name. It's not a table, but we
                        # named it poorly from when this was a table so now we're
@@ -1218,23 +1219,23 @@ class SpecialSearch extends SpecialPage {
         * @return string
         */
        protected function shortDialog( $term, $resultsShown, $totalNum ) {
-               $out = Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
-               $out .= Html::hidden( 'profile', $this->profile ) . "\n";
-               // Term box
-               $out .= Html::input( 'search', $term, 'search', [
-                       'id' => $this->isPowerSearch() ? 'powerSearchText' : 'searchText',
-                       'size' => '50',
+               $searchWidget = new MediaWiki\Widget\SearchInputWidget( [
+                       'id' => 'searchText',
+                       'name' => 'search',
                        'autofocus' => trim( $term ) === '',
-                       'class' => 'mw-ui-input mw-ui-input-inline',
-                       // identifies the location of the search bar for tracking purposes
-                       'data-search-loc' => 'content',
-               ] ) . "\n";
-               $out .= Html::hidden( 'fulltext', 'Search' ) . "\n";
-               $out .= Html::submitButton(
-                       $this->msg( 'searchbutton' )->text(),
-                       [ 'class' => 'mw-ui-button mw-ui-progressive' ],
-                       [ 'mw-ui-progressive' ]
-               ) . "\n";
+                       'value' => $term,
+               ] );
+
+               $out =
+                       Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
+                       Html::hidden( 'profile', $this->profile ) .
+                       Html::hidden( 'fulltext', 'Search' ) .
+                       $searchWidget .
+                       new OOUI\ButtonInputWidget( [
+                               'type' => 'submit',
+                               'label' => $this->msg( 'searchbutton' )->text(),
+                               'flags' => [ 'progressive', 'primary' ],
+                       ] );
 
                // Results-info
                if ( $totalNum > 0 && $this->offset < $totalNum ) {
index 2754b13..82e07fd 100644 (file)
@@ -622,7 +622,8 @@ class SpecialUpload extends SpecialPage {
                        return false;
                } else {
                        // New page should get watched if that's our option.
-                       return $this->getUser()->getOption( 'watchcreations' );
+                       return $this->getUser()->getOption( 'watchcreations' ) ||
+                               $this->getUser()->getOption( 'watchuploads' );
                }
        }
 
index 27e5829..15691f2 100644 (file)
@@ -369,10 +369,21 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                }
 
                $s = $list->beginRecentChangesList();
+               $userShowHiddenCats = $this->getUser()->getBoolOption( 'showhiddencats' );
                $counter = 1;
                foreach ( $rows as $obj ) {
                        # Make RC entry
                        $rc = RecentChange::newFromRow( $obj );
+
+                       # Skip CatWatch entries for hidden cats based on user preference
+                       if (
+                               $rc->getAttribute( 'rc_type' ) == RC_CATEGORIZE &&
+                               !$userShowHiddenCats &&
+                               $rc->getParam( 'hidden-cat' )
+                       ) {
+                               continue;
+                       }
+
                        $rc->counter = $counter++;
 
                        if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) ) {
index e2052b9..cca54b3 100644 (file)
@@ -46,23 +46,23 @@ class WithoutInterwikiPage extends PageQueryPage {
                        return '';
                }
 
-               $prefix = $this->prefix;
-               $t = $this->getPageTitle();
+               $formDescriptor = [
+                       'prefix' => [
+                               'label-message' => 'allpagesprefix',
+                               'name' => 'prefix',
+                               'id' => 'wiprefix',
+                               'type' => 'text',
+                               'size' => 20,
+                               'default' => $this->prefix
+                       ]
+               ];
 
-               return Html::openElement( 'form', [ 'method' => 'get', 'action' => wfScript() ] ) . "\n" .
-                       Html::openElement( 'fieldset' ) . "\n" .
-                       Html::element( 'legend', null, $this->msg( 'withoutinterwiki-legend' )->text() ) . "\n" .
-                       Html::hidden( 'title', $t->getPrefixedText() ) . "\n" .
-                       Xml::inputLabel(
-                               $this->msg( 'allpagesprefix' )->text(),
-                               'prefix',
-                               'wiprefix',
-                               20,
-                               $prefix
-                       ) . "\n" .
-                       Xml::submitButton( $this->msg( 'withoutinterwiki-submit' )->text() ) . "\n" .
-                       Html::closeElement( 'fieldset' ) . "\n" .
-                       Html::closeElement( 'form' );
+               $htmlForm = HTMLForm::factory( 'inline', $formDescriptor, $this->getContext() );
+               $htmlForm->setWrapperLegendMsg( 'withoutinterwiki-legend' )
+                       ->setSubmitTextMsg( 'withoutinterwiki-submit' )
+                       ->setMethod( 'get' )
+                       ->prepareForm()
+                       ->displayForm( false );
        }
 
        function sortDescending() {
index fd2ac1f..cba4952 100644 (file)
@@ -20,9 +20,6 @@
  */
 
 /**
- * TODO: Allow sorting by count.  We need to have a unique index to do this
- * properly.
- *
  * @ingroup Pager
  */
 class CategoryPager extends AlphabeticPager {
@@ -60,7 +57,6 @@ class CategoryPager extends AlphabeticPager {
        }
 
        function getIndexField() {
-#              return array( 'abc' => 'cat_title', 'count' => 'cat_pages' );
                return 'cat_title';
        }
 
@@ -71,16 +67,6 @@ class CategoryPager extends AlphabeticPager {
                return $this->mDefaultQuery;
        }
 
-#      protected function getOrderTypeMessages() {
-#              return array( 'abc' => 'special-categories-sort-abc',
-#                      'count' => 'special-categories-sort-count' );
-#      }
-
-       protected function getDefaultDirections() {
-#              return array( 'abc' => false, 'count' => true );
-               return false;
-       }
-
        /* Override getBody to apply LinksBatch on resultset before actually outputting anything. */
        public function getBody() {
                $batch = new LinkBatch;
index a34933c..c6acd66 100644 (file)
@@ -29,9 +29,10 @@ class Html5Depurate extends TidyDriverBase {
                        ] );
                $status = $req->execute();
                if ( !$status->isOK() ) {
-                       throw new Exception( "Error contacting depurate service: " . $status->getWikiText() );
+                       throw new Exception( "Error contacting depurate service: "
+                               . $status->getWikiText( false, false, 'en' ) );
                } elseif ( $req->getStatus() !== 200 ) {
-                       throw new Exception( "Depurate returned error: " . $status->getWikiText() );
+                       throw new Exception( "Depurate returned error: " . $status->getWikiText( false, false, 'en' ) );
                }
                $result = $req->getContent();
                $startBody = strpos( $result, "<body>" );
index 616ae93..f67a8d8 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  */
-use MediaWiki\MediaWikiServices;
 
 /**
  * The CentralIdLookup service allows for connecting local users with
@@ -69,8 +68,9 @@ abstract class CentralIdLookup implements IDBAccessObject {
         * Reset internal cache for unit testing
         */
        public static function resetCache() {
-               // TODO: manage service instances in MediaWikiServices
-               MediaWikiServices::failUnlessBootstrapping( __METHOD__ );
+               if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
+                       throw new MWException( __METHOD__ . ' may only be called from unit tests!' );
+               }
                self::$instances = [];
        }
 
index 04eba97..c1e096b 100644 (file)
@@ -1070,9 +1070,9 @@ class User implements IDBAccessObject {
                // Clean up name according to title rules,
                // but only when validation is requested (bug 12654)
                $t = ( $validate !== false ) ?
-                       Title::newFromText( $name ) : Title::makeTitle( NS_USER, $name );
+                       Title::newFromText( $name, NS_USER ) : Title::makeTitle( NS_USER, $name );
                // Check for invalid titles
-               if ( is_null( $t ) ) {
+               if ( is_null( $t ) || $t->getNamespace() !== NS_USER || $t->isExternal() ) {
                        return false;
                }
 
index 7b3de4a..5ff411d 100644 (file)
@@ -13,6 +13,7 @@ namespace MediaWiki\Widget;
 class SearchInputWidget extends TitleInputWidget {
 
        protected $pushPending = false;
+       protected $performSearchOnClick = true;
        protected $validateTitle = false;
        protected $highlightFirst = false;
 
@@ -20,23 +21,36 @@ class SearchInputWidget extends TitleInputWidget {
         * @param array $config Configuration options
         * @param int|null $config['pushPending'] Whether the input should be visually marked as
         *  "pending", while requesting suggestions (default: true)
+        * @param boolean|null $config['performSearchOnClick'] If true, the script will start a search
+        *  whenever a user hits a suggestion. If false, the text of the suggestion is inserted into the
+        *  text field only (default: true)
         */
        public function __construct( array $config = [] ) {
+               $config = array_merge( [
+                       'infusable' => true,
+                       'maxLength' => null,
+                       'type' => 'search',
+                       'icon' => 'search',
+                       'dataLocation' => 'content',
+               ], $config );
+
                // Parent constructor
-               parent::__construct(
-                       array_merge( [
-                               'infusable' => true,
-                               'maxLength' => null,
-                               'type' => 'search',
-                               'icon' => 'search'
-                       ], $config )
-               );
+               parent::__construct( $config );
 
                // Properties, which are ignored in PHP and just shipped back to JS
                if ( isset( $config['pushPending'] ) ) {
                        $this->pushPending = $config['pushPending'];
                }
 
+               if ( isset( $config['performSearchOnClick'] ) ) {
+                       $this->performSearchOnClick = $config['performSearchOnClick'];
+               }
+
+               if ( $config['dataLocation'] ) {
+                       // identifies the location of the search bar for tracking purposes
+                       $this->dataLocation = $config['dataLocation'];
+               }
+
                // Initialization
                $this->addClasses( [ 'mw-widget-searchInputWidget' ] );
        }
@@ -47,6 +61,10 @@ class SearchInputWidget extends TitleInputWidget {
 
        public function getConfig( &$config ) {
                $config['pushPending'] = $this->pushPending;
+               $config['performSearchOnClick'] = $this->performSearchOnClick;
+               if ( $this->dataLocation ) {
+                       $config['dataLocation'] = $this->dataLocation;
+               }
                return parent::getConfig( $config );
        }
 }
index a0fa727..190f2bf 100644 (file)
@@ -1555,7 +1555,7 @@ class Language {
         *
         * @param string $ts
         *
-        * @return string
+        * @return int[]
         */
        private static function tsToIranian( $ts ) {
                $gy = substr( $ts, 0, 4 ) -1600;
@@ -1613,7 +1613,7 @@ class Language {
         *
         * @param string $ts
         *
-        * @return string
+        * @return int[]
         */
        private static function tsToHijri( $ts ) {
                $year = substr( $ts, 0, 4 );
@@ -1665,7 +1665,7 @@ class Language {
         *
         * @param string $ts
         *
-        * @return string
+        * @return int[]
         */
        private static function tsToHebrew( $ts ) {
                # Parse date
index 5e43c8b..5ef02ce 100644 (file)
        "categories": "Kategorieë",
        "categoriespagetext": "Die volgende {{PLURAL:$1|kategorie|kategorieë}} bevat bladsye of media.\n[[Special:UnusedCategories|Ongebruikte kategorieë]] word nie gewys nie.\nSien ook [[Special:WantedCategories|nie-bestaande kategorieë met verwysings]].",
        "categoriesfrom": "Wys kategorieë vanaf:",
-       "special-categories-sort-count": "sorteer volgens getal",
-       "special-categories-sort-abc": "sorteer alfabeties",
        "deletedcontributions": "Geskrapte gebruikersbydraes",
        "deletedcontributions-title": "Geskrapte gebruikersbydraes",
        "sp-deletedcontributions-contribs": "bydraes",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|weergawe|weergawes}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|weergawe|weergawes}} vanaf $2",
        "javascripttest": "JavaScript toetsing",
-       "javascripttest-pagetext-noframework": "Hierdie bladsy is gereserveer vir die uitvoer van JavaScript-toetse.",
-       "javascripttest-pagetext-unknownframework": "Onbekende toetsraamwerk \"$1\".",
-       "javascripttest-pagetext-frameworks": "Kies een van die volgende toetsraamwerke: $1",
-       "javascripttest-pagetext-skins": "Kies 'n omslag waarmee die toets uitgevoer moet word:",
        "javascripttest-qunit-intro": "Sien die [$1 toetsdokumentasie] op mediawiki.org.",
        "tooltip-pt-userpage": "{{GENDER:|My}} gebruikerbladsy",
        "tooltip-pt-anonuserpage": "Die gebruikersbladsy vir die IP-adres waaronder u wysigings aanbring",
        "version-libraries-description": "Beskrywing",
        "version-libraries-authors": "Outeurs",
        "redirect": "Aanstuur volgens lêer, gebruiker, bladsy of weergawenommer",
-       "redirect-legend": "Aanstuur na 'n lêer of bladsy",
        "redirect-summary": "Hierdie spesiale bladsy stuur aan na 'n lêer (as 'n lêernaam verskaf word), 'n bladsy (as 'n weergawe-nommer verskaf word) of 'n gebruikersblad (as 'n gebruiker-ID verskaf word).",
        "redirect-submit": "OK",
        "redirect-lookup": "Soek volgens:",
        "redirect-not-exists": "Waarde nie gevind nie",
        "fileduplicatesearch": "Soek duplikaatlêers",
        "fileduplicatesearch-summary": "Soek na duplikaatlêers volgens hul hutswaardes.",
-       "fileduplicatesearch-legend": "Soek vir 'n duplikaat",
        "fileduplicatesearch-filename": "Lêernaam:",
        "fileduplicatesearch-submit": "Soek",
        "fileduplicatesearch-info": "$1 × $2 piksels<br />Lêergrootte: $3<br />MIME-tipe: $4",
index 1977fdf..58c4a1a 100644 (file)
        "cachedspecial-refresh-now": "መጨረሻውን ለማየት",
        "categories": "ምድቦች",
        "categoriespagetext": "በዚሁ ሥራ ዕቅድ ውስጥ የሚከተሉ መደቦች ይኖራሉ።\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
-       "special-categories-sort-abc": "በፊደል ተራ ይደርደሩ",
        "deletedcontributions": "የአባሉ የጠፉት አስተዋጽኦች",
        "deletedcontributions-title": "የአባሉ የጠፉት አስተዋጽኦች",
        "sp-deletedcontributions-contribs": "አስተዋጽኦች",
        "version-software-product": "ሶፍትዌር",
        "version-software-version": "ዝርያ",
        "fileduplicatesearch": "ለቅጂ ፋይሎች መፈልግ",
-       "fileduplicatesearch-legend": "ለቅጂ ለመፈልግ",
        "fileduplicatesearch-filename": "የፋይል ስም:",
        "fileduplicatesearch-submit": "ፍለጋ",
        "fileduplicatesearch-noresults": "«$1» የሚባል ፋይል አልተገኘም።",
index 27e56ab..0af7f45 100644 (file)
        "categories": "Categorías",
        "categoriespagetext": "{{PLURAL:$1|A siguient categoría contién|As siguients categorías contienen}} pachinas u fichers multimedia.\nNo s'amuestran aquí as [[Special:UnusedCategories|categorías no emplegatas]].\nSe veigan tamién as [[Special:WantedCategories|categorías requiestas]].",
        "categoriesfrom": "Amostrar as categoría que prencipien por:",
-       "special-categories-sort-count": "ordenar por recuento",
-       "special-categories-sort-abc": "ordenar alfabeticament",
        "deletedcontributions": "Contrebucions d'usuario borratas",
        "deletedcontributions-title": "Contrebucions d'usuario borradas",
        "sp-deletedcontributions-contribs": "contrebucions",
        "version-software-version": "Versión",
        "fileduplicatesearch": "Mirar fichers duplicatos",
        "fileduplicatesearch-summary": "Mirar archivos duplicatos basatos en a suya valura hash.",
-       "fileduplicatesearch-legend": "Mirar duplicatos",
        "fileduplicatesearch-filename": "Nombre d'o fichero:",
        "fileduplicatesearch-submit": "Mirar",
        "fileduplicatesearch-info": "$1 × $2 pixels<br />Grandaria d'o fichero: $3<br />tipo MIME: $4",
index 447da76..c3f3afc 100644 (file)
        "cannotdelete-title": "تعذّر حذف الصفحة \"$1\"",
        "delete-hook-aborted": "أجهض خطّاف الحذف.\nلم يقدم أي توضيح.",
        "no-null-revision": "تعذر إنشاء مراجعة جديدة فارغة لصفحة \"$1\"",
-       "badtitle": "عÙ\86Ù\88اÙ\86 Ø³Ù\8aØ¡",
+       "badtitle": "عÙ\86Ù\88اÙ\86 Ø³Ù\8aئ",
        "badtitletext": "عنوان الصفحة المطلوب إما غير صحيح أو فارغ، وربما الرابط بين اللغات أو بين المشاريع خاطئ.\nربما يحوي محارف لا تصلح للاستخدام في العناوين.",
        "title-invalid-empty": "عنوان الصفحة المطلوبة فارغ أو يحتوي اسم النطاق فقط.",
        "title-invalid-utf8": "عنوان الصفحة المطلوب يحتوي سلسلة محارف UTF-8 غير صالحة.",
        "exception-nologin": "غير مسجل الدخول",
        "exception-nologin-text": "سجل الدخول للتمكن من عرض هذه الصفحة أو إجراء هذا الفعل.",
        "exception-nologin-text-manual": "الرجاء $1 لتتمكن من الوصول لهذه الصفحة أو أداء هذا الإجراء.",
-       "virus-badscanner": "ضبط Ø³Ù\8aØ¡: ماسح فيروسات غير معروف: ''$1''",
+       "virus-badscanner": "ضبط Ø³Ù\8aئ: ماسح فيروسات غير معروف: ''$1''",
        "virus-scanfailed": "فشل المسح (كود $1)",
        "virus-unknownscanner": "مضاد فيروسات غير معروف:",
        "logouttext": "<strong>أنت الآن غير مسجل الدخول.</strong> قد ترى بعض الصفحات كما لو أنك ما زلت مسجل الدخول، وذلك حتى تفرغ التخزين المؤقت في متصفحك.",
        "botpasswords-deleted-title": "كلمة سر البوت حذفت",
        "botpasswords-deleted-body": "كلمة سر البوت\"$1\" قد حذفت.",
        "botpasswords-no-provider": "BotPasswordsSessionProvider غير متاح.",
+       "botpasswords-restriction-failed": "قيود كلمة مرور البوت تمنع هذا الولوج.",
        "resetpass_forbidden": "كلمات السر لا يمكن تغييرها",
        "resetpass-no-info": "يجب أن تكون مسجل الدخول للوصول إلى هذه الصفحة مباشرة.",
        "resetpass-submit-loggedin": "تغيير كلمة السر",
        "categories-submit": "أظهر",
        "categoriespagetext": "{{PLURAL:$1|التصنيف التالي يحتوي|التصنيفات التالية تحتوي}} على صفحات أو وسائط.\n[[Special:UnusedCategories|التصنيفات غير المستخدمة]] غير معروضة هنا.\nانظر أيضاً [[Special:WantedCategories|التصنيفات المطلوبة]].",
        "categoriesfrom": "اعرض التصنيفات ابتداء من:",
-       "special-categories-sort-count": "رتب بالعدد",
-       "special-categories-sort-abc": "رتب هجائياً",
        "deletedcontributions": "مساهمات المستخدم المحذوفة",
        "deletedcontributions-title": "مساهمات المستخدم المحذوفة",
        "sp-deletedcontributions-contribs": "مساهمات",
        "randomrootpage": "صفحة جذر عشوائية",
        "log-action-filter-block": "نوع المنع:",
        "log-action-filter-delete": "نوع الحذف:",
+       "log-action-filter-import": "نوع الاستيراد:",
+       "log-action-filter-managetags": "نوع فعل إدارة الوسوم:",
+       "log-action-filter-move": "نوع النقل:",
+       "log-action-filter-newusers": "نوع إنشاء الحساب:",
        "log-action-filter-protect": "نوع الحماية:",
+       "log-action-filter-rights": "نوع تغيير الصلاحية",
        "log-action-filter-upload": "نوع الرفع:",
        "log-action-filter-all": "الكل",
        "log-action-filter-block-block": "منع",
        "log-action-filter-delete-delete": "حذف الصفحات",
        "log-action-filter-delete-event": "حذف السجلات",
        "log-action-filter-delete-revision": "حذف المراجعات",
+       "log-action-filter-import-interwiki": "استيراد عابر للويكي",
+       "log-action-filter-newusers-autocreate": "إنشاء آلي",
+       "log-action-filter-newusers-byemail": "الإنشاء بكلمة مرور مرسلة عبر البريد الإلكتروني",
        "log-action-filter-protect-protect": "حماية",
        "log-action-filter-protect-modify": "تعديل الحماية",
        "log-action-filter-protect-unprotect": "رفع الحماية",
+       "log-action-filter-rights-rights": "تغيير يدوي",
        "log-action-filter-upload-upload": "رفع جديد",
        "log-action-filter-upload-overwrite": "إعادة الرفع"
 }
index 3cade1d..c996b3f 100644 (file)
        "allpagesprefix": "biyn sfahi katbda b:",
        "categories": "tsnifat",
        "categoriesfrom": "wrri ṫ-ṫṣnifaṫ li badyin mn:",
-       "special-categories-sort-count": "rttb bladad",
-       "special-categories-sort-abc": "rttb blhorof",
        "deletedcontributions": "mosahamaṫ mosṫĥdim memḫiya",
        "deletedcontributions-title": "mosahamaṫ mosṫĥdim memḫiya",
        "sp-deletedcontributions-contribs": "l-mosahamaṫ",
        "version-software-version": "noskha",
        "fileduplicatesearch": "qlleb ĝla milffaṫ mḍoḅla",
        "fileduplicatesearch-summary": "qlleb ĝla milffaṫ mḍoḅla ĝla asas l-qyam dl-haċ.",
-       "fileduplicatesearch-legend": "qllb ala lmdoublin",
        "fileduplicatesearch-filename": "smiyt lfichier",
        "fileduplicatesearch-submit": "Qelleb",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />ṫqel l-fiċyé: $3<br />noĝ MIME : $4",
index a086c3e..d1addb6 100644 (file)
        "categories": "تصانيف",
        "categoriespagetext": "{{PLURAL:$1|التصنيف دا بيحتوى على|التصنيفات دى بتحتوى على}} صفحات او ميديا.\n[[Special:UnusedCategories|التصنيفات اللى مش مستعمله]] مش معروضه  هنا.\nشوف كمان [[Special:WantedCategories|التصنيفات المتعازه]].",
        "categoriesfrom": "اعرض التصانيف من أول:",
-       "special-categories-sort-count": "رتب بالعدد",
-       "special-categories-sort-abc": "ترتيب ابجدي",
        "deletedcontributions": "تعديلات اليوزر الممسوحة",
        "deletedcontributions-title": "تعديلات اليوزر الممسوحة",
        "sp-deletedcontributions-contribs": "المساهمات",
        "version-software-version": "النسخه",
        "fileduplicatesearch": "دور على الملفات المتكررة",
        "fileduplicatesearch-summary": "دور على الملفات المتكررة على اساس قيمة الهاش بتاعتها.",
-       "fileduplicatesearch-legend": "تدوير على متكرر",
        "fileduplicatesearch-filename": "اسم الملف:",
        "fileduplicatesearch-submit": "تدوير",
        "fileduplicatesearch-info": "$1 × $2 بكسل<br />حجم الملف: $3<br />نوع MIME: $4",
index fb04fa0..a57dbea 100644 (file)
        "categories": "শ্ৰেণী",
        "categoriespagetext": "এই {{PLURAL:$1|বিষয়শ্ৰেণীত|বিষয়শ্ৰেণীসমূহত}}  পৃষ্ঠা বা মিডিয়া ফাইল আছে ।\n[[Special:UnusedCategories|অব্যৱহৃত শ্ৰেণীসমূহ]]  ইয়াত দেখুওৱা হোৱা নাই ।\nঅধিক তথ্যৰ বাবে [[Special:WantedCategories|আৱশ্যক শ্ৰেণীসমূহ]] চাওক ।",
        "categoriesfrom": "ইয়াৰে আৰম্ভ হোৱা শ্ৰেণীসমূহ দেখুৱাওক:",
-       "special-categories-sort-count": "গণনাৰ ভিত্তিত সজাওক",
-       "special-categories-sort-abc": "বৰ্ণানুক্ৰমে সজাওক",
        "deletedcontributions": "ৰদ কৰা সদস্যৰ বৰঙণিসমূহ",
        "deletedcontributions-title": "ৰদ কৰা সদস্যৰ বৰঙণিসমূহ",
        "sp-deletedcontributions-contribs": "বৰঙণিসমূহ",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}}",
        "import-logentry-interwiki-detail": "$2ৱে কৰা $1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}}",
        "javascripttest": "জাভাস্ক্ৰিপ্ট পৰীক্ষা।",
-       "javascripttest-pagetext-noframework": "এই পৃষ্ঠাটো জাভাস্ক্ৰিপ্ট পৰীক্ষা চলোৱাৰ বাবে সংৰক্ষিত।",
-       "javascripttest-pagetext-unknownframework": "অজ্ঞাত সম্পৰীক্ষা ফ্ৰেমৱৰ্ক \"$1\"।",
        "javascripttest-pagetext-unknownaction": "অজ্ঞাত কাৰ্য \"$1\"।",
-       "javascripttest-pagetext-frameworks": "অনুগ্ৰহ কৰি তলৰ যিকোনো এটা সম্পৰীক্ষা ফ্ৰেমৱৰ্ক বাছনি কৰক: $1",
-       "javascripttest-pagetext-skins": "পৰীক্ষা কৰিবলৈ আৱৰণ এখন বাছনি কৰক:",
        "javascripttest-qunit-intro": "mediawiki.org-ত [$1 পৰীক্ষা নথিকৰণ] চাওক।",
        "tooltip-pt-userpage": "আপোনাৰ সদস্য পৃষ্ঠা",
        "tooltip-pt-anonuserpage": "যি আই.পি. ঠিকনাৰ পৰা আপুনি সম্পাদনা কৰিছে তাৰ সদস্য পৃষ্ঠা",
        "version-entrypoints-header-url": "ইউআৰএল",
        "version-libraries-version": "সংস্কৰণ",
        "redirect": "ফাইল, সদস্য, পৃষ্ঠা বা সংশোধন আই ডি-ৰে পুনঃনিৰ্দেশ",
-       "redirect-legend": "এটা ফাইল বা পৃষ্ঠালৈ পুনঃনিৰ্দেশ",
        "redirect-summary": "এই বিশেষ পৃষ্ঠাটোৱে আপোনাক অন্য এটা ফাইললৈ (ফাইলৰ নাম), এটা পৃষ্ঠালৈ (সংশোধন আই ডি বা পৃষ্ঠা আই ডি), অথবা অন্য সদস্যৰ পৃষ্ঠালৈ (সদস্যৰ সাংখ্যিক আই ডি) পুনঃনির্দেশিত কৰিছে।\nব্যৱহাৰ: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], বা [[{{#Special:Redirect}}/user/101]]।",
        "redirect-submit": "যাওক",
        "redirect-lookup": "চাওক:",
        "redirect-not-exists": "মূল্য পোৱা নগ'ল",
        "fileduplicatesearch": "প্ৰতিলিপি পৃষ্ঠাসমূহ অনুসন্ধান কৰক",
        "fileduplicatesearch-summary": "হেছ্‌ মানসমূহৰ উপৰত নিৰ্ভৰ কৰি প্ৰতিলিপিত নথিপত্ৰসমূহৰ বাবে সন্ধান কৰক।",
-       "fileduplicatesearch-legend": "প্ৰতিলিপিৰ বাবে অনুসন্ধান কৰক",
        "fileduplicatesearch-filename": "ফাইলৰ নাম:",
        "fileduplicatesearch-submit": "সন্ধান কৰক",
        "fileduplicatesearch-info": "$1 × $2 পিক্সেল<br /> ফাইলৰ মাত্ৰা: $3<br /> MIME প্ৰকাৰ: $4",
index 62e3624..07317f0 100644 (file)
        "categories-submit": "Amosar",
        "categoriespagetext": "{{PLURAL:$1|La siguiente categoría contién|Les siguientes categoríes contienen}} páxines o ficheros multimedia.\nLes [[Special:UnusedCategories|categoríes nun usaes]] nun s'amuesen equí.\nVer tamién les [[Special:WantedCategories|categoríes más buscaes]].",
        "categoriesfrom": "Amosar categoríes qu'emprimen por:",
-       "special-categories-sort-count": "ordenar por tamañu",
-       "special-categories-sort-abc": "ordenar alfabéticamente",
        "deletedcontributions": "Contribuciones d'usuariu esborraes",
        "deletedcontributions-title": "Contribuciones d'usuariu desaniciaes",
        "sp-deletedcontributions-contribs": "collaboraciones",
index 09906c4..71e1639 100644 (file)
        "categories": "Bulomeem",
        "categoriespagetext": "Radimiasa loma se moe wiki krulded.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
        "categoriesfrom": "Nedira va loma tozakirafa gu :",
-       "special-categories-sort-count": "Otafa mubera",
-       "special-categories-sort-abc": "Abavafa mubera",
        "deletedcontributions": "Sulayan favesikaf webeks",
        "linksearch": "Divafi gluyasiki",
        "linksearch-ns": "Yoltxo :",
        "version-software-product": "Warzeks",
        "version-software-version": "Siatos",
        "fileduplicatesearch": "Aneyara va jontolaf iyeltak",
-       "fileduplicatesearch-legend": "Aneyara va jontolaca",
        "fileduplicatesearch-filename": "Iyeltakyolt :",
        "fileduplicatesearch-submit": "Aneyara",
        "fileduplicatesearch-result-1": "\"$1\" iyeltak va miltafa jontoloca me digir.",
index 0ee6435..8cab3c9 100644 (file)
        "categories": "श्रेणी",
        "categoriespagetext": "निम्नोक्त {{PLURAL:$1|श्रेणी|श्रेणि}} मा पन्ना या मीडिया है।\nजवन श्रेणिन् कय [[Special:UnusedCategories|अप्रयुक्त श्रेणि]] यहँ नाइ देखाई गा हैं।\n[[Special:WantedCategories|वांछित श्रेणि]] भी देखा जाय।",
        "categoriesfrom": "इ अक्षर से शुरु होय वाला श्रेणी देखावा जाय:",
-       "special-categories-sort-count": "संख्या कय अनुसार क्रमांकित करा जाय",
-       "special-categories-sort-abc": "वर्णानुक्रम कय अनुसार देखावा जाय",
        "deletedcontributions": "हटावल सदस्य योगदान",
        "deletedcontributions-title": "हटावल सदस्य योगदान",
        "sp-deletedcontributions-contribs": "योगदान",
        "import-logentry-upload-detail": "$1 अवतरण आयात {{PLURAL:$1|किया गया|किये गए}}",
        "import-logentry-interwiki-detail": "$2 से $1 अवतरण आयात {{PLURAL:$1|किया गया|किये गए}}",
        "javascripttest": "जावास्क्रिप्ट परीक्षण",
-       "javascripttest-pagetext-noframework": "यह पृष्ठ जावास्क्रिप्ट परीक्षण चलाने के लिए है।",
-       "javascripttest-pagetext-unknownframework": "अज्ञात परीक्षण ढाँचा \"$1\"",
        "javascripttest-pagetext-unknownaction": "अज्ञात काम \"$1\".",
-       "javascripttest-pagetext-frameworks": "कृपया निम्न परीक्षण ढाँचों में से एक चुनें: $1",
-       "javascripttest-pagetext-skins": "परीक्षण करने के लिए त्वचा चुनें:",
        "javascripttest-qunit-intro": "mediawiki.org पे [$1 परीक्षण कय प्रलेखन] देखा जाय।",
        "tooltip-pt-userpage": "आप कय सदस्य पन्ना",
        "tooltip-pt-anonuserpage": "आप जिस आईपी से बदलाव कर रहें हैं उसका सदस्य पन्ना निचे है",
        "version-libraries": "इन्स्टाल करल लाइब्रेरी",
        "version-libraries-library": "लाइब्रेरी",
        "version-libraries-version": "संस्करण",
-       "redirect-legend": "फ़ाइल अथवा पृष्ठ को पुनर्प्रेषण",
        "redirect-summary": "यह विशेष पृष्ठ फ़ाइलनाम प्रदान करने पर फ़ाइल नाम को, पृष्ठ आइ॰दी अथवा अवतरण आइ॰दी देने पर पृष्ठ को, और सदस्य आइ॰दी देने पर सदस्य पृष्ठ को पुनर्प्रेषित करता है। उदाहरण: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], या [[{{#Special:Redirect}}/user/101]]।",
        "redirect-submit": "जावा जाय",
        "redirect-lookup": "ढूँढा जाय:",
        "redirect-not-exists": "मुल्य नाइ मिला",
        "fileduplicatesearch": "डुप्लिकेट फाइल खोजा जाय",
        "fileduplicatesearch-summary": "हैश वैल्यू कय अनुसार डुप्लिकेट फाइल खोजा जाय ।",
-       "fileduplicatesearch-legend": "डुप्लिकेट खोजा जाय",
        "fileduplicatesearch-filename": "फ़ाइल कय नाँव",
        "fileduplicatesearch-submit": "खोजा जाय",
        "fileduplicatesearch-info": "$1 × $2 पिक्सेल<br />फाइल आकार: $3<br />MIME प्रकार: $4",
index 34ecba8..5b1afd5 100644 (file)
        "allpages-hide-redirects": "Yönləndirmələri gizlət",
        "categories": "Kateqoriyalar",
        "categoriespagetext": "Aşağıdakı {{PLURAL:$1|kateqoriyada|kateqoriyalarda}} səhifələr, yaxud media-fayllar var.\n[[Special:UnusedCategories|İstifadə olunmayan kateqoriyalar]] burada göstərilməyib.\nHəmçinin, [[Special:WantedCategories|tələb olunan kateqoriyalara]] baxın.",
-       "special-categories-sort-count": "miqdara görə tənzimlə",
-       "special-categories-sort-abc": "əlifba sırası ilə düz",
        "deletedcontributions": "Silinmiş istifadəçi fəaliyyətləri",
        "deletedcontributions-title": "Silinmiş istifadəçi fəaliyyətləri",
        "sp-deletedcontributions-contribs": "fəaliyyət",
        "redirect-user": "İstifadəçi ID-si",
        "redirect-page": "Səhifə ID-si",
        "fileduplicatesearch": "Dublikat fayl axtarışı",
-       "fileduplicatesearch-legend": "Dublikatı axtar",
        "fileduplicatesearch-filename": "Fayl adı:",
        "fileduplicatesearch-submit": "Axtar",
        "fileduplicatesearch-result-1": "\"$1\" faylı hər hansı eyni dublikata malik deyil.",
index 0531723..ab8571a 100644 (file)
        "resetpass_submit": "رمز یارادین و گیریش ائدین",
        "changepassword-success": "رمزینیز باشاری‌لا دَییشدیرلدی!",
        "changepassword-throttled": "سیزین چوخ گیریش چالیشماغینیز اولوب‌دور.\nلوطفاً یئنی‌دن چالیشماق‌دان اؤنجه $1 دؤزون.",
+       "botpasswords-label-create": "یارات",
+       "botpasswords-label-cancel": "وازگئچ",
+       "botpasswords-label-delete": "سیل",
        "resetpass_forbidden": "رمزلر دَییشیلمز",
        "resetpass-no-info": "بو صحیفه‌نی دوغرو گؤردوگونوز اوچون سیستمه گیرمه‌لیسینیز.",
        "resetpass-submit-loggedin": "رمزی دَییشدیر",
        "rcshowhidemine": "منیم دَییشیکلریمی $1",
        "rcshowhidemine-show": "گؤستر",
        "rcshowhidemine-hide": "گیزلت",
+       "rcshowhidecategorization-hide": "گیزلت",
        "rclinks": "سون $2 گون عرضینده‌کی سون  $1 ديَیشیکلیگی گؤستر <br />$3",
        "diff": "فرق",
        "hist": "گئچمیش",
        "categories": "بؤلمه‌لر",
        "categoriespagetext": "آشاغی‌داکی {{PLURAL:$1|بولمه لردهٔ|بولمه لرده}}  صحیفه‌لر، یاخود مئدیا-فایل‌لار وار.\n[[Special:UnusedCategories|ایستفاده اولمایان بولمه لر]] بورادا گؤستریلمه‌ییب.\nهم‌چی‌نین، [[Special:WantedCategories|لازیم اولان بولمه لره]] باخین.",
        "categoriesfrom": "شونونلا باشلایان بولمه لر باخ:",
-       "special-categories-sort-count": "میقدارا گؤره تنزیمله",
-       "special-categories-sort-abc": "الیفبا سیراسی ایله دوز",
        "deletedcontributions": "سیلینمیش ایستیفاده‌چی چالیشمالاری",
        "deletedcontributions-title": "سیلین‌میش ایستیفاده‌چی چالیشمالاری",
        "sp-deletedcontributions-contribs": "چالیشمالار",
index bf422d6..7fc7f1c 100644 (file)
        "recentchanges-legend-heading": "<strong>Легенда:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|Яңы биттәр исемлеген]] ҡарағыҙ)",
        "recentchanges-submit": "Күрһәтергә",
-       "rcnotefrom": "Аҫтарак <strong>$3, $4</strong> өсөн {{PLURAL:$5|үҙгәртеүҙәр күрһәтелгән}} (<strong>$1</strong> артыҡ түгел).",
-       "rclistfrom": "$3 $2 Ð±Ð°Ñ\88лап яңы үҙгәртеүҙәрҙе күрһәт.",
+       "rcnotefrom": "Аҫта <strong>$3, $4</strong> ҡарата {{PLURAL:$5|үҙгәртеүҙәр күрһәтелгән}} (<strong>$1</strong> күберәк түгел).",
+       "rclistfrom": "$3 $2 Ð°Ð»Ñ\8bп яңы үҙгәртеүҙәрҙе күрһәт.",
        "rcshowhideminor": "бәләкәй төҙәтеүҙәрҙе $1",
        "rcshowhideminor-show": "Күрһәтергә",
        "rcshowhideminor-hide": "Йәшерергә",
        "categories-submit": "Күрһәтергә",
        "categoriespagetext": "{{PLURAL:$1|1=Был категория}}ла биттәр һәм    медиа-файллардар бар.\nАҫта [[Special:UnusedCategories|ҡулланылмаған категориялар]] күһәтелмәгән.\nШулай уҡ  [[Special:WantedCategories|талап ителгән категориялар]] күһәтелгән.",
        "categoriesfrom": "Ошондай хәрефтәрҙән башланған категорияларҙы күрһәтергә:",
-       "special-categories-sort-count": "күләме буйынса тәртипкә килтерергә",
-       "special-categories-sort-abc": "алфавит буйынса тәртипкә килтерергә",
        "deletedcontributions": "Ҡулланыусыларҙың юйылған өлөшө",
        "deletedcontributions-title": "Ҡулланыусыларҙың юйылған өлөшө",
        "sp-deletedcontributions-contribs": "башҡарған эштәр",
index 57f578c..d228878 100644 (file)
        "categories": "تهرئان",
        "categoriespagetext": "جهلیگین {{PLURAL:$1|دسته شامل|دسته جات شامل}} صفحات یا مدیا انت\n[[Special:UnusedCategories|دسته جات بی استفاده]] ادان پیشدارگ نه بنت.\n هنچوش بچار[[Special:WantedCategories|لوٹتگین دسته]].",
        "categoriesfrom": "پیشدار دسته جات که شروع بنت گون:",
-       "special-categories-sort-count": "ترتیب په اساس شمار",
-       "special-categories-sort-abc": "ترتیب الفبی",
        "deletedcontributions": "مشارکتان کابر حذف بوتء",
        "deletedcontributions-title": "مشارکتان کابر حذف بوتء",
        "sp-deletedcontributions-contribs": "مشارکتان",
        "redirect-submit": "برا",
        "fileduplicatesearch": "گردگ په کپی  فایلان",
        "fileduplicatesearch-summary": "گردگ په کپی فایلان په اساس درهمین ارزش.",
-       "fileduplicatesearch-legend": "گردگ په  کپی",
        "fileduplicatesearch-filename": ":نام فایل",
        "fileduplicatesearch-submit": "گردگ",
        "fileduplicatesearch-info": "$1 × $2 پیکسل<br />اندازه فایل: $3<br />نوع مایم: $4",
index 2888980..a9a1d75 100644 (file)
        "categories": "Mga Kategoriya",
        "categoriespagetext": "An minasunod {{PLURAL:$1|kategorya na may laog na|mga kategorya na may laog na}} mga pahina o midya.\n[[Special:UnusedCategories|Dae ginamit na mga kategorya]] dae ipinapahiling digde.\nAsin man hilnga an [[Special:WantedCategories|kinakaipong mga kategorya]].",
        "categoriesfrom": "Pahilnga an mga kategorya magpoon sa:",
-       "special-categories-sort-count": "salansana sa paagi nin bilang",
-       "special-categories-sort-abc": "salansana sa paagi nin alpabetiko",
        "deletedcontributions": "Parâon an mga kontribusyon kan parágamit",
        "deletedcontributions-title": "Parâon an mga kontribusyon kan parágamit",
        "sp-deletedcontributions-contribs": "mga kontribusyon",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|rebisyon|mga rebisyon}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|rebisyon|mga rebisyon}} gikan sa $2",
        "javascripttest": "Testing sa JavaScript",
-       "javascripttest-pagetext-noframework": "An pahinang ini reserbado para sa pagpapadalagan kan mga pagtesting sa JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Bakong bistadong modelo para sa pagtesting kan \"$1\".",
-       "javascripttest-pagetext-frameworks": "Pakipili tabi nin saro sa minasunod na mga modelo sa pagtesting: $1",
-       "javascripttest-pagetext-skins": "Magpili nin sarong kublit tanganing padalaganon an mga pagtesting sa:",
        "javascripttest-qunit-intro": "Hilngon [$1 dokumentasyon sa pagtesting] sa mediawiki.org.",
        "tooltip-pt-userpage": "An saimong paragamit na pahina",
        "tooltip-pt-anonuserpage": "An páhina nin páragamit para sa ip na pighihira mo bilang",
        "version-entrypoints-header-entrypoint": "Puntong pan-entrada",
        "version-entrypoints-header-url": "Kilyawan",
        "redirect": "Palikwata sa paagi nin sagunson, paragamit, pahina o rebisyon kan ID",
-       "redirect-legend": "Palikwatong pasiring sa sarong sagunson o pahina",
        "redirect-summary": "Ining espesyal na pahina minalikwat pasiring sa sarong sagunson (ipinagtao an pangaran nin sagunson), sarong pahina (ipinagtao an sarong rebisyon nin ID o pahina nin ID), o sarong pahina nin paragamit (ipinagtao an numerikong ID nin paragamit). Pinagkagamitan: [[{{#Special:Redirect}}/sagunson/Example.jpg]], [[{{#Special:Redirect}}/rebisyon/328429]], or [[{{#Special:Redirect}}/paragamit/101]].",
        "redirect-submit": "Dumani",
        "redirect-lookup": "Hanapon mo",
        "redirect-not-exists": "Halaga dae nanagboan",
        "fileduplicatesearch": "Maghanap kan duplikadong mga sagunson",
        "fileduplicatesearch-summary": "Maghanap kan duplikadong mga sagunson na pinagbasihan an mga kahalagahan nin hash.",
-       "fileduplicatesearch-legend": "Maghanap kan sarong duplikado",
        "fileduplicatesearch-filename": "Ngaran nin sagunson:",
        "fileduplicatesearch-submit": "Maghanap",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Sukol nin sagunson: $3<br />MIME tipo: $4",
index a2fc059..30b4ded 100644 (file)
@@ -33,6 +33,7 @@
        "tog-watchdefault": "Дадаваць у мой сьпіс назіраньня старонкі і файлы, якія я {{GENDER:|рэдагаваў|рэдагавала}}",
        "tog-watchmoves": "Дадаваць у мой сьпіс назіраньня перанесеныя мною старонкі і файлы",
        "tog-watchdeletion": "Дадаваць у мой сьпіс назіраньня старонкі і файлы, якія я выдаляю",
+       "tog-watchuploads": "Дадаваць файлы, якія я загружаю, у мой сьпіс назіраньня",
        "tog-watchrollback": "Дадаваць у мой сьпіс назіраньня старонкі, дзе я {{GENDER:|зрабіў|зрабіла}} адкат",
        "tog-minordefault": "Па змоўчаньні пазначаць усе мае праўкі дробнымі",
        "tog-previewontop": "Паказваць папярэдні прагляд старонкі над полем рэдагаваньня",
        "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-results": "Вынікі",
        "apisandbox-request-url-label": "URL-адрас запыту:",
        "apisandbox-request-time": "Час запыту: {{PLURAL:$1|$1 мс}}",
        "categories-submit": "Паказаць",
        "categoriespagetext": "{{PLURAL:$1|1=Наступная катэгорыя зьмяшчае|Наступныя катэгорыі зьмяшчаюць}} старонкі альбо мэдыяфайлы.\nТут не паказаныя [[Special:UnusedCategories|катэгорыі, якія не выкарыстоўваюцца]].\nГлядзіце таксама [[Special:WantedCategories|сьпіс запатрабаваных катэгорыяў]].",
        "categoriesfrom": "Паказаць катэгорыі, пачынаючы з:",
-       "special-categories-sort-count": "сартаваць паводле колькасьці",
-       "special-categories-sort-abc": "сартаваць паводле альфабэту",
        "deletedcontributions": "Выдалены ўнёсак удзельніка",
        "deletedcontributions-title": "Выдалены ўнёсак удзельніка",
        "sp-deletedcontributions-contribs": "унёсак",
index 3d478c1..a2fbb19 100644 (file)
@@ -26,7 +26,8 @@
                        "Macofe",
                        "Matma Rex",
                        "Goshaproject",
-                       "Nemo bis"
+                       "Nemo bis",
+                       "SamGold"
                ]
        },
        "tog-underline": "Падкрэсліваць спасылкі:",
@@ -44,6 +45,7 @@
        "tog-watchdefault": "Дабаўляць старонкі і файлы пасля маіх правак у мой спіс назірання",
        "tog-watchmoves": "Дабаўляць перайменаваныя мной старонкі і файлы ў мой спіс назірання",
        "tog-watchdeletion": "Дабаўляць сцёртыя мной старонкі і файлы ў мой спіс назірання",
+       "tog-watchuploads": "Дадаваць файлы, якія я ўкладаю, у мой спіс назірання.",
        "tog-watchrollback": "Дадаваць старонкі, дзе я {{GENDER:|зрабіў|зрабіла}} адкат, у мой спіс назірання",
        "tog-minordefault": "Пачынаць кожную праўку як дробную",
        "tog-previewontop": "Папярэдні паказ — над рэдактарскім полем",
        "noemail": "Ва ўдзельніка \"$1\" няма запісанага адраса электроннай пошты.",
        "noemailcreate": "Вам неабходна паказаць дзеючы адрас электроннай пошты",
        "passwordsent": "На адрас электроннай пошты, зарэгістраваны для \"$1\",\nбыў дасланы новы пароль.\nКалі ласка, увайдзіце ў сістэму зноў пасля яго атрымання.",
-       "blocked-mailpassword": "Для адрасу IP, з якога вы працуеце, забароненыя праўкі, а значыць, у мэтах абароны ад злоўжывання нельга карыстацца і функцыяй аднаўлення паролю.",
+       "blocked-mailpassword": "Для адраса IP, з якога вы працуеце, забаронены праўкі. У мэтах абароны ад злоўжывання нельга карыстацца і функцыяй аднаўлення пароля.",
        "eauthentsent": "Пацверджанне было адасланае электроннай поштай на азначаны адрас эл.пошты.\nКаб туды, у далейшым, трапляла іншая пошта адсюль, патрабуецца выканаць інструкцыі, выкладзеныя ў тым эл.паведамленні, каб пацвердзіць сваё права на рахунак эл.пошты.",
        "throttled-mailpassword": "Нагаданне пра пароль ужо адсылалася на працягу апошн{{PLURAL:$1|яй гадзіны|іх $1 гадзін}}. Дзеля абароны ад злоўжыванняў, дазваляецца атрымліваць толькі адно такое нагаданне за {{PLURAL:$1|гадзіну|$1 гадзіны|$1 гадзін}}.",
        "mailerror": "Памылка адсылання эл.пошты: $1",
        "boteditletter": "р",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|назіральнік|назіральнікі|назіральнікаў}}]",
        "rc_categories": "Абмежаваць катэгорыямі (размяжоўваць знакам \"|\"):",
-       "rc_categories_any": "УÑ\81е",
+       "rc_categories_any": "Ð\9bÑ\8eбаÑ\8f Ð· Ð°Ð±Ñ\80анÑ\8bÑ\85",
        "rc-change-size-new": "$1 {{PLURAL:$1|байт|байты|байтаў}} пасля змены",
        "newsectionsummary": "/* $1 */ новы падраздзел",
        "rc-enhanced-expand": "Паказаць падрабязнасці",
        "recentchangeslinked-page": "Назва старонкі:",
        "recentchangeslinked-to": "Паказваць, замест гэтага, змяненні на старонках, што спасылаюцца сюды",
        "recentchanges-page-added-to-category": "[[:$1]] дададзена ў катэгорыю",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] і яшчэ [[Special:WhatLinksHere/$1|{{PLURAL:$2|адна старонка дададзена|$2 старонкі дададзены|$2 старонак дададзена}}]] ў катэгорыю",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] дададзена ў катэгорыю, [[Special:WhatLinksHere/$1|гэтая старонка ўключана ў іншыя старонкі]]",
        "recentchanges-page-removed-from-category": "[[:$1]] выдалена з катэгорыі",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] і яшчэ {{PLURAL:$2|адна старонка выдалена|$2 старонкі выдалены|$2 старонак выдалена}} з катэгорыі",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] выдалена з катэгорыі, [[Special:WhatLinksHere/$1|гэтая старонка ўключана ў іншыя старонкі]]",
        "autochange-username": "Аўтаматычная змена MediaWiki",
        "upload": "Укласці файл",
        "uploadbtn": "Укласці файл",
        "categories-submit": "Паказаць",
        "categoriespagetext": "Наступн{{PLURAL:$1|ая катэгорыя ўтрымлівае|ыя $1 катэгорыі(-й) утрымліваюць}} старонкі або мультымедыю.\nТут не паказаныя [[Special:UnusedCategories|катэгорыі без складнікаў]].\nГл. таксама [[Special:WantedCategories|патрэбныя катэгорыі]].",
        "categoriesfrom": "Паказаць катэгорыі, пачынаючы з:",
-       "special-categories-sort-count": "пд. колькасці",
-       "special-categories-sort-abc": "пд. алфавіту",
        "deletedcontributions": "Выдалены ўклад удзельніка",
        "deletedcontributions-title": "Выдалены ўклад удзельніка",
        "sp-deletedcontributions-contribs": "Уклад",
        "tags-deactivate-not-allowed": "Немагчыма дэактываваць бірку \"$1\".",
        "tags-deactivate-submit": "Дэактываваць",
        "tags-update-add-not-allowed-one": "Бірку \"$1\" нельга дадаваць уручную.",
+       "tags-update-remove-not-allowed-one": "Бірку \"$1\" нельга выдаляць.",
+       "tags-update-remove-not-allowed-multi": "{{PLURAL:$2|Наступную бірку|Наступныя біркі}} нельга выдаляць уручную: $1",
        "tags-edit-title": "Правіць біркі",
        "tags-edit-manage-link": "Кіраванне біркамі",
        "tags-edit-revision-selected": "{{PLURAL:$1|Выбраная версія|Выбраныя версіі}} [[:$2]]:",
        "feedback-bugornote": "Калі вы гатовыя падрабязна апісаць тэхнічную праблему, калі ласка, [$1 паведаміце пра памылку].\nУ адваротным выпадку вы можаце выкарыстоўваць гэтую простую форму. Ваш каментар будзе дададзены на старонку «[$3 $2]» разам з вашым імем удзельніка і выкарыстоўваемым браўзерам.",
        "feedback-cancel": "Адмена",
        "feedback-close": "Зроблена.",
+       "feedback-dialog-title": "Даслаць водгук",
        "feedback-error-title": "Памылка",
        "feedback-error1": "Памылка. Невядомы вынік з API",
        "feedback-error2": "Памылка. Збой праўкі",
        "feedback-subject": "Тэма:",
        "feedback-submit": "Даслаць",
        "feedback-thanks": "Дзякуй! Ваш водгук размешчаны на старонцы «[$2 $1]».",
+       "feedback-thanks-title": "Дзякуем!",
        "searchsuggest-search": "Знайсці",
        "searchsuggest-containing": "змяшчае...",
        "api-error-badaccess-groups": "У Вас няма дазволу загружаць файлы ў гэтую вікі.",
        "default-skin-not-found-no-skins": "Упс! Прадвызначаная вокладка для вашай вікі (<code>$wgDefaultSkin</code>), <code>$1</code>, недаступна.\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 tarball-інсталятар], які ўтрымлівае некалькі вокладак і прыставак. Вы можаце скапіяваць і ўставіць каталог <code>skins/</code> адтуль.\n:* Зрабіўшы клон аднаго з сховішчаў <code>mediawiki/skins/*</code> праз git у каталог <code>skins/</code> вашай інсталяцыі MediaWiki.\n: Калі вы распрацоўшчык MediaWiki, гэта не павінна адбіцца на вашым git-сховішчы. Гл. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя: Настройка вокладак] дзеля інфармацыі па ўключэнні вокладак і выбары прадвызначэння.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (уключана)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>выключана</strong>)",
+       "mediastatistics-table-count": "Колькасць файлаў",
+       "mediastatistics-table-totalbytes": "Агульны памер",
        "mediastatistics-header-unknown": "Невядомыя",
        "mediastatistics-header-bitmap": "Растравыя выявы",
        "mediastatistics-header-drawing": "Рысункі (вектарныя выявы)",
index c88f2fe..f14a77b 100644 (file)
        "versionrequired": "Изисква се версия $1 на МедияУики",
        "versionrequiredtext": "Използването на тази страница изисква версия $1 на софтуера МедияУики. Вижте [[Special:Version|текущата версия]].",
        "ok": "Добре",
-       "pagetitle": "$1 â\80\94 {{SITENAME}}",
+       "pagetitle": "$1 â\80\93 {{SITENAME}}",
        "retrievedfrom": "Взето от „$1“.",
        "youhavenewmessages": "{{PLURAL:$3|Имате}} $1 ($2).",
        "youhavenewmessagesfromusers": "Имате $1 от {{PLURAL:$3|друг потребител|$3 потребители}} ($2).",
        "wrongpassword": "Въведената парола е невалидна. Опитайте отново.",
        "wrongpasswordempty": "Не е въведена парола. Опитайте отново.",
        "passwordtooshort": "Необходимо е паролата да съдържа поне {{PLURAL:$1|1 знак|$1 знака}}.",
-       "passwordtoolong": "Ð\9fаÑ\80олаÑ\82а Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¿Ð¾-дÑ\8aлгa Ð¿т {{PLURAL:$1|1 символ|$1 символа}}.",
+       "passwordtoolong": "Ð\9fаÑ\80олаÑ\82а Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¿Ð¾-дÑ\8aлгa Ð¾т {{PLURAL:$1|1 символ|$1 символа}}.",
        "passwordtoopopular": "Често използвани пароли не могат да бъдат ползвани. Моля, изберете по-уникална парола.",
        "password-name-match": "Паролата ви трябва да се различава от потребителското ви име.",
        "password-login-forbidden": "Използването на това потребителско име и парола е забранено.",
        "rows": "Редове:",
        "columns": "Колони:",
        "searchresultshead": "Търсене",
-       "stub-threshold": "Праг за форматиране на <a href=\"#\" class=\"stub\">препратки към мъничета</a>:",
+       "stub-threshold": "Праг за форматиране на препратки към мъничета ($1):",
        "stub-threshold-sample-link": "пример",
        "stub-threshold-disabled": "Изключено",
        "recentchangesdays": "Брой дни в последни промени:",
        "categories-submit": "Показване",
        "categoriespagetext": "{{PLURAL:$1|Следната категория съдържа|Следните категории съдържат}} страници или медийни файлове.\n[[Special:UnusedCategories|Неизползваните категории]] не са показани тук.\nВижте също списъка с [[Special:WantedCategories|желани категории]].",
        "categoriesfrom": "Показване на категориите, като се започне от:",
-       "special-categories-sort-count": "сортиране по брой",
-       "special-categories-sort-abc": "сортиране по азбучен ред",
        "deletedcontributions": "Изтрити приноси на потребител",
        "deletedcontributions-title": "Изтрити приноси на потребител",
        "sp-deletedcontributions-contribs": "приноси",
index 15bca16..a54966c 100644 (file)
        "cachedspecial-refresh-now": "دیستین آخرین ئانی.",
        "categories": "تهرئان",
        "categoriesfrom": "تهرهانئ نشان داتین شرو شه:",
-       "special-categories-sort-count": "ترتیت کورتین بئ اساس اندازگ",
-       "special-categories-sort-abc": "ترتیب کورتین سیاهگانی",
        "deletedcontributions": "پاک بوته ئین مشارکتانی",
        "deletedcontributions-title": "پاک بوته ئین مشارکتانی",
        "sp-deletedcontributions-contribs": "مشارکت ئان",
        "redirect-not-exists": "اندازه گ ودی نه بوت",
        "fileduplicatesearch": "گشتین په تکرارین فایلان",
        "fileduplicatesearch-summary": "گشتین په تکرارین پایلان بي اساس آوانی درهم بوته اندازه گ ئا سورت ئه گیت.",
-       "fileduplicatesearch-legend": "گشتین په تکرارین موریدان",
        "fileduplicatesearch-filename": "فایلئ نام:",
        "fileduplicatesearch-submit": "گشتین",
        "fileduplicatesearch-info": "<span dir=\"ltr\">$1 × $2</span> پیکسل<br />فایلئ اندازه گ: $3<br />نوع MIME: $4",
index 7af3b48..a87d235 100644 (file)
        "categories": "Tutumbung",
        "categoriespagetext": "{{PLURAL:$1|tumbung mangandung|tutumbung mangandung}} barikut baisi tutungkaran atawa midia.\n[[Special:UnusedCategories|Tumbung kada dipuruk]] kada ditampaiakan di sia.\nJanaki jua [[Special:WantedCategories|tutumbung nang dihandaki]].",
        "categoriesfrom": "Manampaiakan tutumbung mulai matan:",
-       "special-categories-sort-count": "susun ulih rikinan",
-       "special-categories-sort-abc": "susun abjad",
        "deletedcontributions": "Hapus sumbangan pamuruk",
        "deletedcontributions-title": "Hapus sumbangan pamuruk",
        "sp-deletedcontributions-contribs": "Sumbangan",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|ralatan|raralatan}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|ralatan|raralatan}} matan $2",
        "javascripttest": "Mantis JavaScript",
-       "javascripttest-pagetext-skins": "Pilih kulit nang cagar Pian cubai:",
        "tooltip-pt-userpage": "Tungkaran pamakai Pian",
        "tooltip-pt-anonuserpage": "Tungkaran pamuruk matan alamat IP Pian mambabak sawagai",
        "tooltip-pt-mytalk": "Tungkaran pamandiran Pian",
        "version-entrypoints-header-url": "URL",
        "fileduplicatesearch": "Gagai gasan babarakas baganda",
        "fileduplicatesearch-summary": "Gagai gasan babarakas baganda bapandal nilai hash.",
-       "fileduplicatesearch-legend": "Gagai gasan sabuah panggandaan",
        "fileduplicatesearch-filename": "Ngaran barakas:",
        "fileduplicatesearch-submit": "Gagai",
        "fileduplicatesearch-info": "$1 × $2 piksel, <br />takaran barakas: $3, <br />macam MIME: $4",
index 72c5c44..55e4cf2 100644 (file)
        "categories-submit": "দেখাও",
        "categoriespagetext": "এই {{PLURAL:$1|বিষয়শ্রেণীতে|বিষয়শ্রেণীসমূহে}} পাতা বা মিডিয়া রয়েছে।\n[[Special:UnusedCategories|অব্যবহৃত বিষয়শ্রেণীসমূহ]] এখানে দেখানো হয়েছে।\nআরও দেখুন [[Special:WantedCategories|আবশ্যক বিষয়শ্রেণীসমূহ]]।",
        "categoriesfrom": "এই অক্ষর দিয়ে শুরু হওয়া বিষয়শ্রেণীগুলো দেখাও:",
-       "special-categories-sort-count": "গণনার ভিত্তিতে সাজাও",
-       "special-categories-sort-abc": "বর্ণানুক্রমে সাজান",
        "deletedcontributions": "মুছে ফেলা ব্যবহারকারী অবদান",
        "deletedcontributions-title": "মুছে ফেলা ব্যবহারকারী অবদান",
        "sp-deletedcontributions-contribs": "অবদানসমূহ",
        "ipblocklist-no-results": "অনুরুদ্ধ আইপি ঠিকানা বা ব্যবহারকারী নামটির উপর কোন বাধা নেই।",
        "blocklink": "বাধা দাও",
        "unblocklink": "বাধা তুলে নেওয়া হোক",
-       "change-blocklink": "বà§\8dলà¦\95 à¦\85বসà§\8dথার পরিবর্তন করুন",
+       "change-blocklink": "বাধা পরিবর্তন করুন",
        "contribslink": "অবদান",
        "emaillink": "ই-মেইল পাঠাও",
        "autoblocker": "আপনাকে স্বয়ংক্রিয়ভাবে বাধা দেওয়া হয়েছে, কারণ আপনার আইপি ঠিকানাটি সম্প্রতি \"[[User:$1|$1]]\" ব্যবহার করেছেন। $1-কে বাধাদানের কারণ \"$2\"",
        "ipb_expiry_temp": "লুকানো ব্যবহারকারীনাম বাধা চিরস্থায়ী হতে হবে।",
        "ipb_hide_invalid": "এই অ্যাকাউন্ট বাধা দেয়া সম্ভব নয়; এটি {{PLURAL:$1|একের অধিক|$1টি}} সম্পাদনা করেছে।",
        "ipb_already_blocked": "\"$1\" ইতিমধ্যে ব্লক",
-       "ipb-needreblock": "$1 à¦ªà§\82রà§\8dবà§\87à¦\87 à¦¬à§\8dলà¦\95 à¦°à¦¯à¦¼à§\87ছেন। আপনি কি সেটিংস পরিবর্তন করতে চান?",
+       "ipb-needreblock": "$1 à¦\87তিমধà§\8dযà§\87à¦\87 à¦¬à¦¾à¦§à¦¾à¦ªà§\8dরাপà§\8dত à¦\86ছেন। আপনি কি সেটিংস পরিবর্তন করতে চান?",
        "ipb-otherblocks-header": "অন্যান্য {{PLURAL:$1|বাধাঁ|বাধাঁসমূহ}}",
        "unblock-hideuser": "আপনি এই ব্যবহারকারীকে বাধা মুক্ত করতে পারবেন না, কারণ এই ব্যবহারকারীদের ব্যবহারকারী নাম লুকানো রয়েছে।",
        "ipb_cant_unblock": "ত্রুটি: $1 ব্লক আইডি খুঁজে পাওয়া যায়নি। হয়ত ইতিমধ্যেই এটির উপর থেকে বাধা তুলে নেওয়া হয়েছে।",
index 28203d3..03a0f88 100644 (file)
        "categories": "Roll ar rummadoù",
        "categoriespagetext": "Er {{PLURAL:$1|rummad|rummadoù}} da-heul ez eus pajennoù pe restroù media.\nNe ziskouezer ket amañ ar [[Special:UnusedCategories|Rummadoù dizimplij]].\nGwelet ivez ar [[Special:WantedCategories|rummadoù goulennet a vank]].",
        "categoriesfrom": "Diskouez ar rummadoù en ur gregiñ gant :",
-       "special-categories-sort-count": "Urzhiañ dre gont",
-       "special-categories-sort-abc": "urzh al lizherenneg",
        "deletedcontributions": "Degasadennoù diverket un implijer",
        "deletedcontributions-title": "Degasadennoù diverket un implijer",
        "sp-deletedcontributions-contribs": "Degasadennoù",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|adweladenn}} enporzhiet",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|adweladenn}} enporzhiet eus $2",
        "javascripttest": "Amprouadenn JavaScript",
-       "javascripttest-pagetext-noframework": "Miret eo ar bajenn-mañ evit amprouiñ JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Framm amprouiñ \"$1\" dianav.",
-       "javascripttest-pagetext-frameworks": "Diuzit unan eus ar frammoù amprouiñ da-heul : $1",
-       "javascripttest-pagetext-skins": "Diuzit ar gwiskadur da vezañ implijet evit an amprouadennoù :",
        "javascripttest-qunit-intro": "Sellet ouzh [$1 an teulioù amprouiñ] e mediawiki.org.",
        "tooltip-pt-userpage": "Ho pajenn implijer",
        "tooltip-pt-anonuserpage": "Ar bajenn implijer evit ar c'homlec'h IP implijet ganeoc'h",
        "version-libraries-version": "Stumm",
        "version-libraries-license": "Aotre-implijout",
        "version-libraries-description": "Deskrivadur",
-       "redirect-legend": "Adkas d'ur restr pe d'ur bajenn",
        "redirect-submit": "Mont",
        "redirect-lookup": "Klask :",
        "redirect-value": "Talvoud :",
        "redirect-not-exists": "Talvoud n'eo ket bet kavet",
        "fileduplicatesearch": "Klask ar restroù e doubl",
        "fileduplicatesearch-summary": "Klask restroù e doubl war diazez talvoudennoù krennet.",
-       "fileduplicatesearch-legend": "Klask un doubl",
        "fileduplicatesearch-filename": "Anv ar restr :",
        "fileduplicatesearch-submit": "Klask",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Ment ar restr : $3<br />seurt MIME : $4",
index efc2387..7d3500a 100644 (file)
        "categories-submit": "Prikaži",
        "categoriespagetext": "{{PLURAL:$1|Slijedeća kategorija sadrži|Slijedeće kategorije sadrže}} stranice ili multimedijalne datoteke.\n[[Special:UnusedCategories|Nekorištene kategorije]] nisu prikazane ovdje.\nVidi također [[Special:WantedCategories|zatražene kategorije]].",
        "categoriesfrom": "Prikaži kategorije počev od:",
-       "special-categories-sort-count": "sortiranje po broju",
-       "special-categories-sort-abc": "sortiraj po abecedi",
        "deletedcontributions": "Obrisani doprinosi korisnika",
        "deletedcontributions-title": "Obrisani doprinosi korisnika",
        "sp-deletedcontributions-contribs": "doprinosi",
        "import-logentry-upload-detail": "{{PLURAL:$1|Uvezena jedna revizija|Uvezene $1 revizije|Uvezeno $1 revizija}}",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|Uvezena $1 revizija|Uvezene $1 revizije|Uvezeno $1 revizija}} od $2",
        "javascripttest": "Testiranje JavaScript-e",
-       "javascripttest-pagetext-noframework": "Ova stranica je određena za pokretanje JavaScript testova.",
-       "javascripttest-pagetext-unknownframework": "Nepoznat radni okvir testiranja\"$1\".",
        "javascripttest-pagetext-unknownaction": "Nepoznata radnja \"$1\".",
-       "javascripttest-pagetext-frameworks": "Molimo Vas izaberite jednu od sljedećih testnih okvira: $1",
-       "javascripttest-pagetext-skins": "Izaberite s kojom temom želite da pokrenete probu:",
        "javascripttest-qunit-intro": "Pogledajte [$1 dokumentaciju za testiranje] na mediawiki.org.",
        "tooltip-pt-userpage": "{{GENDER:|Vaša}} korisnička stranica",
        "tooltip-pt-anonuserpage": "Korisnička stranica za ip koju Vi uređujete kao",
        "version-libraries-description": "Opis",
        "version-libraries-authors": "Autori",
        "redirect": "Preusmjerenje na datoteku, korisnika, stranicu ili oznaku izmjene",
-       "redirect-legend": "Preusmjeri na datoteku ili stranicu",
        "redirect-summary": "Ova posebna stranica preusmjerava na datoteku (datog imena), stranicu (date oznake izmjene) ili korisničku stranicu (datog numeričkog identifikatora korisnika). Oznake se koriste na sljedeći način: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ili [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Idi",
        "redirect-lookup": "Tip vrijednosti:",
        "redirect-not-exists": "Vrijednost nije pronađena",
        "fileduplicatesearch": "Pretraga duplikata",
        "fileduplicatesearch-summary": "Pretraga za duplim datotekama na bazi njihove haš vrijednosti.",
-       "fileduplicatesearch-legend": "Pretraga za dvojnicima",
        "fileduplicatesearch-filename": "Ime datoteke:",
        "fileduplicatesearch-submit": "Traži",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Veličina datoteke: $3<br />MIME vrsta: $4",
index 74a95a3..754af74 100644 (file)
        "uploadstash-clear": "Esborra els fitxers en reserva",
        "uploadstash-nofiles": "No teniu fitxers en reserva",
        "uploadstash-badtoken": "No s'ha pogut realitzar l'acció, possiblement perquè han caducat la vostra identificació. Intenteu-ho de nou.",
-       "uploadstash-errclear": "No s'ha pogut suprimir els fitxers.",
+       "uploadstash-errclear": "S'estan netejant els fitxers que han fallat.",
        "uploadstash-refresh": "Actualitza la llista de fitxers",
        "invalid-chunk-offset": "El desplaçament del fragment no és vàlid",
        "img-auth-accessdenied": "Accés denegat",
        "apisandbox-submit-invalid-fields-title": "Alguns camps no són vàlids",
        "apisandbox-results": "Resultats",
        "apisandbox-request-url-label": "Sol·licita URL:",
-       "apisandbox-request-time": "Temps de sol·licitud: $1",
+       "apisandbox-request-time": "Temps de sol·licitud: {{PLURAL:$1|$1 ms}}",
        "booksources": "Obres de referència",
        "booksources-search-legend": "Cerca fonts de llibres",
        "booksources-isbn": "ISBN:",
        "categories-submit": "Mostra",
        "categoriespagetext": "{{PLURAL:$1|La següent categoria conté|Les següents categories contenen}} pàgines, o fitxers multimèdia.\n[[Special:UnusedCategories|Les categories no usades]] no s'hi mostren.\nVegeu també [[Special:WantedCategories|les categories sol·licitades]].",
        "categoriesfrom": "Mostra les categories que comencen a:",
-       "special-categories-sort-count": "ordena per recompte",
-       "special-categories-sort-abc": "ordena alfabèticament",
        "deletedcontributions": "Contribucions esborrades",
        "deletedcontributions-title": "Contribucions esborrades",
        "sp-deletedcontributions-contribs": "contribucions",
        "watchlistanontext": "Inicieu una sessió per a visualitzar o modificar elements de la vostra llista de seguiment.",
        "watchnologin": "No heu iniciat la sessió",
        "addwatch": "Afegeix a llista de seguiment",
-       "addedwatchtext": "S'ha afegit la pàgina \"[[:$1]]\" a la vostra [[Special:Watchlist|llista de seguiment]].\nS'hi mostraran els canvis futurs que tinguin lloc en aquesta pàgina i la corresponent discussió.",
+       "addedwatchtext": "S'ha afegit «[[:$1]]» i la seva pàgina de discussió a la vostra [[Special:Watchlist|llista de seguiment]].",
        "addedwatchtext-short": "S’ha afegit la pàgina «$1» a la vostra llista de seguiment.",
        "removewatch": "Treu de la llista de seguiment",
-       "removedwatchtext": "S'ha tret la pàgina «[[:$1]]» de la vostra [[Special:Watchlist|llista de seguiment]].",
+       "removedwatchtext": "S'ha tret «[[:$1]]» i la seva pàgina de discussió de la vostra [[Special:Watchlist|llista de seguiment]].",
        "removedwatchtext-short": "S’ha tret la pàgina «$1» de la vostra llista de seguiment.",
        "watch": "Vigila",
        "watchthispage": "Vigila aquesta pàgina",
        "unblock": "Desblocatge d'usuaris",
        "blockip": "Bloca {{GENDER:$1|l'usuari|la usuària}}",
        "blockip-legend": "Bloca l'usuari",
-       "blockiptext": "Empreu el següent formulari per blocar l'accés\nd'escriptura des d'una adreça IP específica o des d'un usuari determinat.\naixò només s'hauria de fer per prevenir el vandalisme, i\nd'acord amb la [[{{MediaWiki:Policy-url}}|política del projecte]].\nEmpleneu el diàleg de sota amb un motiu específic (per exemple, citant\nquines pàgines en concret estan sent vandalitzades).",
+       "blockiptext": "Empreu el següent formulari per blocar l'accés\nd'escriptura des d'una adreça IP específica o des d'un usuari determinat.\naixò només s'hauria de fer per prevenir el vandalisme, i\nd'acord amb la [[{{MediaWiki:Policy-url}}|política del projecte]].\nEmpleneu el diàleg de sota amb un motiu específic (per exemple, citant\nquines pàgines en concret estan sent vandalitzades).\nPodeu blocar uns rangs d'adreces IP fent servir la sintaxi [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]. El rang superior permès és /$1 per a IPv4 i /$2 per a IPv6.",
        "ipaddressorusername": "Adreça IP o nom de l'usuari",
        "ipbexpiry": "Venciment",
        "ipbreason": "Motiu:",
        "tooltip-feed-rss": "Canal RSS d'aquesta pàgina",
        "tooltip-feed-atom": "Canal Atom d'aquesta pàgina",
        "tooltip-t-contributions": "Llista de les contribucions d'{{GENDER:$1|aquest usuari|aquesta usuària}}",
-       "tooltip-t-emailuser": "Envia un correu en aquest usuari.",
+       "tooltip-t-emailuser": "Envia un correu a {{GENDER:$1|aquest usuari|aquesta usuària}}",
        "tooltip-t-info": "Més informació sobre aquesta pàgina",
        "tooltip-t-upload": "Carregueu fitxers",
        "tooltip-t-specialpages": "Llista de totes les pàgines especials",
        "lastmodifiedatby": "Aquesta pàgina s'ha modificat per darrera vegada el dia $1 a les $2 per $3.",
        "othercontribs": "Basat en les contribucions de $1.",
        "others": "altres",
-       "siteusers": "Usuari{{PLURAL:$2||s}} $1 de {{SITENAME}}",
+       "siteusers": "{{PLURAL:$2|{{GENDER:$1|L'usuari|La usuària}}|{{GENDER:$1|Els usuaris|Les usuàries}}}} $1 de {{SITENAME}}",
        "anonusers": "$1, {{PLURAL:$2|usuari anònim|usuaris anònims}} de {{SITENAME}}",
        "creditspage": "Crèdits de la pàgina",
        "nocredits": "No hi ha títols disponibles per aquesta pàgina.",
        "expand_templates_generate_xml": "Mostra l'arbre XML",
        "expand_templates_generate_rawhtml": "Mostra l'HTML sense filtrar",
        "expand_templates_preview": "Previsualitza",
-       "expand_templates_preview_fail_html": "<em>Atès que {{SITENAME}} té HTML cru i hi ha hagut una pèrdua de dades de la sessió, s'ha amagat la vista prèvia com a mesura de precaució contra atacs en JavaScript.</em>\n\n<strong>Si això és un intent de previsualització legítim, torneu-ho a provar.</strong>\nSi encara no funciona, intenteu [[Special:UserLogout|finalitzar la sessió]] i iniciar-la de nou.",
+       "expand_templates_preview_fail_html": "<em>Atès que {{SITENAME}} té HTML cru habilitat i s'ha produït una pèrdua de dades de la sessió, s'ha amagat la vista prèvia com a mesura de precaució contra atacs en JavaScript.</em>\n\n<strong>Si això és un intent de previsualització legítim, torneu-ho a provar.</strong>\nSi encara no funciona, intenteu [[Special:UserLogout|finalitzar la sessió]] i comproveu si el vostre navegador permet galetes d'aquest lloc.",
        "expand_templates_preview_fail_html_anon": "<em>Atès que {{SITENAME}} té l'HTML cru habilitat i no heu iniciat una sessió, s'ha amagat la previsualització com a prevenció d'atacs en JavaScript.</em>\n\n<strong>Si això és un intent de previsualització legítim, [[Special:UserLogin|inicieu una sessió]] i torneu-ho a provar.</strong>",
        "expand_templates_input_missing": "Cal que proporcioneu al menys algun text d'entrada.",
        "pagelanguage": "Canvia l'idioma de la pàgina",
        "action-pagelang": "canvia l'idioma de la pàgina",
        "log-name-pagelang": "Registre de canvi de llengua",
        "log-description-pagelang": "Aquest és un registre dels canvis en les llengües de les pàgines.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ha canviat}} la llengua de la pàgina per a $3 de $4 a $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ha canviat}} la llengua de $3 de $4 a $5",
        "default-skin-not-found": "Òndia! L'aparença per defecte per al wiki, definit en <code dir=\"ltr\">$wgDefaultSkin</code> com <code>$1</code>, no està disponible.\n\nLa vostra instal·lació sembla que inclou les següents aparences. Consulteu [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Configuració d'aparences] per a la informació de com habilitar-les i triar-ne el valor per defecte.\n\n$2\n\n; Si heu acabat d'instal·lar MediaWiki:\n: Probablement l'instal·làveu des de git, o directament des del codi font utilitzant algun altre mètode. Això és l'esperat. Intenteu instal·lar algunes aparences des del [https://www.mediawiki.org/wiki/Category:All_skins directori d'aparences de mediawiki.org], per:\n: * Descarregar l'[https://www.mediawiki.org/wiki/Download instal·lador tarball], que ve amb diverses aparences i ampliacions. Podeu copiar i enganxar el directori <code>skins/</code> des d'aquí.\n: * Clonar un dels repositoris <code>mediawiki/skins/*</code> a través de git en el directori <code dir=\"ltr\">skins/</code> de la vostra instal·lació de MediaWiki.\n: Fent això no s'hauria d'interferir amb el vostre dipòsit git si sou un desenvolupador de MediaWiki.\n\n; Si només heu actualitzat MediaWiki:\n: Per MediaWiki 1.24 i posteriors ja no permet aparences instal·lades automàticament (consulteu [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Aparences autodiscovery]). Podeu enganxar les línies següents en <code>LocalSettings.php</code> per permetre totes les aparences instal·lades actualment:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si només heu modificat <code>LocalSettings.php</code>:\n: Reviseu els noms de l'aparença per errors tipogràfics.",
        "default-skin-not-found-no-skins": "Òndia! L'aparença per defecte pel vostre wiki, definida a <code>$wgDefaultSkin</code> com <code>$1</code>, no està disponible.\n\nNo teniu cap aparença instal·lada.\n\n\n; Si heu acabat d'instal·lar o actualitzar MediaWiki:\n: Probablement l'heu instal·lat des de git, o directament des del codi font utilitzant algun altre mètode. Això és l'esperat. Per MediaWiki 1.24 i posteriors ja no s'inclouen aparences en el repositori principal. Proveu d'instal·lar algunes aparences des del [https://www.mediawiki.org/wiki/Category:All_skins directori d'aparences de mediawiki.org] per:\n: * Descarregar l'[https://www.mediawiki.org/wiki/Download instal·lador ''tarball''], que ve amb diverses aparences i extensions. Podeu copiar i enganxar el directori <code>skins/</code> des d'aquí.\n: * Clonar un dels repositoris <code>mediawiki/skins/*</code> a través de git en el directori <code dir=\"ltr\">skins/</code> de la vostra instal·lació de MediaWiki.\n: Fent això no s'hauria d'interferir amb el vostre repositori de git si sou un desenvolupador de MediaWiki. Consulteu [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] per a més informació sobre com permetre aparences i triar-ne per defecte.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (habilitat)",
index 461462a..e0543f0 100644 (file)
        "categories-submit": "Гайта",
        "categoriespagetext": "{{PLURAL:$1|1=Лахара категореш чохь ю|Лахара категореш чохь ю}} агӀонаш я медиа-файлаш.\nКхузахь гойтуш яц [[Special:UnusedCategories|лелош йоцу категореш]].\nКхин дӀа [[Special:WantedCategories| хийла еза категореш]].",
        "categoriesfrom": "Гучé яха категореш, тӀера:",
-       "special-categories-sort-count": "нисъе дукхаллица",
-       "special-categories-sort-abc": "нисъе абатца",
        "deletedcontributions": "Декъашхочун дӀабяккхина къинхьегам",
        "deletedcontributions-title": "ДӀабаьккхина къинхьегам",
        "sp-deletedcontributions-contribs": "къинхьегам",
        "version-libraries-description": "Цуьнах лаьцна",
        "version-libraries-authors": "Автораш",
        "redirect": "Декъашхочун файлан тӀера дӀасхьажор",
-       "redirect-legend": "Файлан я агӀона тӀера дӀасхьажор",
        "redirect-summary": "ХӀара агӀо лело йиш ю файлан я агӀона тӀера дӀасхьажош.",
        "redirect-submit": "Дехьа гӀо",
        "redirect-lookup": "Лахар:",
        "redirect-not-exists": "МаьӀна цакарий",
        "fileduplicatesearch": "Лаха цхьатерра йолу файлаш",
        "fileduplicatesearch-summary": "Хэш-кодаца цхьатерра файлаш лахар.",
-       "fileduplicatesearch-legend": "Цхьатерра ерш лахар",
        "fileduplicatesearch-filename": "Файлан цӀе:",
        "fileduplicatesearch-submit": "Лахар",
        "fileduplicatesearch-info": "$1 × $2 пиксель<br />Файлан барам: $3<br />MIME-тайп: $4",
index 2750f4b..696fffe 100644 (file)
@@ -25,6 +25,7 @@
        "tog-hideminor": "دەستکارییە بچووکەکان لە دوایین گۆڕانکارییەکاندا بشارەوە",
        "tog-hidepatrolled": "لە دوایین گۆڕانکارییەکاندا دەستکارییە پاس دراوەکان بشارەوە",
        "tog-newpageshidepatrolled": "لە پێرستی پەڕە نوێکاندا پەڕە پاس دراوەکان بشارەوە",
+       "tog-hidecategorization": "شاردنەوەی پۆلێنکردنی پەڕەکان",
        "tog-extendwatchlist": "لیستی چاودێری درێژبکەرەوە بۆ نیشان دانی ھەموو گۆڕانکارییەکان، نەک تەنھا دوایینەکان.",
        "tog-usenewrc": "گۆڕانکارییەکان لە دوایین گۆڕانکارییەکان و پێرستی چاودێریدا بەپێی پەڕە پۆلێن بکە",
        "tog-numberheadings": "ژمارەکردنی خۆگەڕی سەردێڕەکان",
@@ -53,6 +54,7 @@
        "tog-watchlisthideliu": "دەستکارییەکانی ئەو بەکارهێنەرانەی لە ژوورەوەن بشارەوە لە لیستی چاودێری",
        "tog-watchlisthideanons": "دەستکارییەکانی بەکارهێنەرە نەناسراوەکان لە لیستی چاودێریدا بشارەوە",
        "tog-watchlisthidepatrolled": "لە پێرستی چاودێرییەکاندا دەستکارییە پاس دراوەکان بشارەوە",
+       "tog-watchlisthidecategorization": "شاردنەوەی پۆلێنکردنی پەڕەکان",
        "tog-ccmeonemails": "کۆپییەک لەو ئیمەیلانە کە بۆ بەکارھێنەرانی تر دەنێرم بۆ خۆشم بنێرە",
        "tog-diffonly": "ناوەرۆکی پەڕە لە ژێرەوەی جیاوازییەکاندا نیشان مەدە",
        "tog-showhiddencats": "پۆلە شاردراوەکان نیشان بدە",
        "rcshowhidemine-hide": "بشارەوە",
        "rcshowhidecategorization": "$1 پۆلێنکردنی پەڕە",
        "rcshowhidecategorization-show": "نیشانی بدە",
+       "rcshowhidecategorization-hide": "شاردراوە",
        "rclinks": "دوایین $1 گۆڕانکاریی $2 ڕۆژی ڕابردوو نیشان بدە<br />$3",
        "diff": "جیاوازی",
        "hist": "مێژوو",
        "upload-misc-error-text": "هەڵەیەکی نەناسراو لە کاتی بارکردن ڕووی‌دا.\nتکایە لە درووست‌بوون و دەست‌پێ گەیشتنی URL ئەرخەیان ببە و دیسان تاقی‌بکەوە.\nگەر کێشەکە هەر بەردەوام بوو پەیوەندی بکە بە [[Special:ListUsers/sysop|بەڕێوبەر]].",
        "upload-too-many-redirects": "URL ڕەوانەکەری زۆری لەخۆ گرتووە",
        "upload-http-error": "هەڵەیەکی HTTP ڕووئ داوە: $1",
+       "upload-dialog-button-upload": "بارکردن",
        "backend-fail-stream": "نەکرا پەڕگەی $1 بنێردرێت.",
        "backend-fail-notexists": "پەڕگەی $1 بوونی نییە.",
        "backend-fail-delete": "نەکرا پەڕگەی $1 بسڕدرێتەوە.",
        "mostrevisions": "پەڕەکان بە زۆرترین پێداچوونەوەکان",
        "prefixindex": "ھەموو پەڕەکان بە پێشگرەوە",
        "prefixindex-namespace": "هەموو پەڕەکان بەپێشگری (بۆشایی ناوی $1)",
+       "prefixindex-submit": "نیشاندان",
        "prefixindex-strip": "پێشگری ناو پێرست بقرتێنە",
        "shortpages": "پەڕە کورتەکان",
        "longpages": "پەڕە درێژەکان",
        "usereditcount": "$1 {{PLURAL:$1|دەستکاری|دەستکاری}}",
        "usercreated": "لە $1، $2 {{GENDER:$3|دروست کراوە}}",
        "newpages": "پەڕە نوێکان",
+       "newpages-submit": "نیشاندان",
        "newpages-username": "ناوی بەکارھێنەر:",
        "ancientpages": "کۆنترین پەڕەکان",
        "move": "گواستنەوە",
        "pager-newer-n": "{{PLURAL:$1|یەکێکی نوێتر|$1ی نوێتر}}",
        "pager-older-n": "{{PLURAL:$1|یەکێک کۆنتر|$1ی کۆنتر}}",
        "suppress": "چاودێری",
+       "apisandbox-unfullscreen": "نیشاندانی پەڕە",
        "booksources": "سەرچاوەکانی کتێب",
        "booksources-search-legend": "بۆ سەرچاوەی کتێب بگەڕێ",
        "booksources-search": "بگەڕێ",
        "specialloguserlabel": "بەجێھێنەر:",
        "speciallogtitlelabel": "مەبەست (سەرناو یان بەکارھێنەر):",
        "log": "لۆگەکان",
+       "logeventslist-submit": "نیشاندان",
        "all-logs-page": "ھەموو لۆگە گشتییەکان",
        "alllogstext": "نیشاندانی تێکڕای هەموو لۆگە بەردەستەکانی {{SITENAME}}.\nدەتوانی بە ھەڵبژاردنی جۆرە لۆگێک، ناوی بەکارھێنەرەکە (ھەستیار بە گەورە و بچووکی پیتەکان) یان پەڕە کارتێکراوەکە (ھەستیار بە گەورە و بچووکی پیتەکان)\nبینینەکە سنووردار بکەیتەوە.",
        "logempty": "هیچ بابەتێکی هاوتا لە لۆگەکاندا نەدۆزرایەوە.",
        "log-title-wildcard": "گەڕانی ئەو سەرناوانە بەم دەقەوە دەست پێدەکەن",
        "showhideselectedlogentries": "دیاریکردنی بابەتە ھەڵبژێردراوەکانی لۆگ بگۆڕە",
+       "checkbox-none": "هیچ",
        "allpages": "ھەموو پەڕەکان",
        "nextpage": "پەڕەی پاشەوە ($1)",
        "prevpage": "پەڕەی پێشەوە ($1)",
        "cachedspecial-viewing-cached-ttl": "خەریکیت وەشانێکی حەشارکراوی ئەم پەڕەیە دەبینی کە دەتوانێت ھی $1 لەمەوبەر بێت.",
        "cachedspecial-refresh-now": "دواترین پیشانبدە",
        "categories": "پۆلەكان",
+       "categories-submit": "نیشاندان",
        "categoriespagetext": "ئەم {{PLURAL:$1|پۆلە پەڕە یان پەڕگەی|پۆلانە پەڕە یان پەڕگەیان}} لەخۆگرتە.\n[[Special:UnusedCategories|پۆلە بەکارنەھێنراوەکان]] لێرەدا نیشان نەدراون.\n[[Special:WantedCategories|پۆلە خوازراوەکان]]یش ببینە.",
        "categoriesfrom": "نیشاندانی پۆلەکان بە دستپێکردن لە:",
-       "special-categories-sort-count": "ڕیز کردن بە پێی ژمارە",
-       "special-categories-sort-abc": "ڕیزکردن بە پێی ئەلفوبێ",
        "deletedcontributions": "بەشدارییە سڕاوەکان",
        "deletedcontributions-title": "بەشدارییە سڕاوەکانی بەکارھێنەر",
        "sp-deletedcontributions-contribs": "بەشدارییەکان",
        "wlheader-showupdated": "‏ئەو پەڕانە کە لە پاش دوایین سەردانت دەستکاری کراون بە <strong>ئەستوور</strong> نیشان دراون.",
        "wlnote": "خوارەوە {{PLURAL:$1|دوایین گۆڕانکارییە|دوایین <strong>$1</strong> گۆڕانکارییە}} لە دوایین {{PLURAL:$2|کاتژمێر|<strong>$2</strong> کاتژمێر}}دا ھەتا $4ی $3.",
        "wlshowlast": "دوایین $1 کاتژمێری $2 ڕۆژ نیشان بدە",
+       "watchlist-hide": "شاردراوە",
+       "watchlist-submit": "نیشاندان",
+       "wlshowtime": "ماوەی کات بۆ نیشاندان:",
+       "wlshowhideminor": "دەستکارییە بچووکەکان",
+       "wlshowhidebots": "بۆتەکان",
+       "wlshowhideanons": "بەکارھێنەرە نەناسراوەکان",
+       "wlshowhidemine": "دەستکارییەکانم",
+       "wlshowhidecategorization": "پۆلێنکردنی پەڕە",
        "watchlist-options": "ھەڵبژاردەکانی لیستی چاودێری",
        "watching": "چاودێری...",
        "unwatching": "لابردنی چاودێری...",
        "delete-confirm": "سڕینەوەی «$1»",
        "delete-legend": "بیسڕەوە",
        "historywarning": "<strong>ھۆشیار بە:</strong> پەڕەیەک کە خەریکیت دەیسڕیتەوە مێژوویەکی ھەیە بە $1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}وە:",
+       "historyaction-submit": "نیشاندان",
        "confirmdeletetext": "تۆ خەریکی پەڕەیەک بە ھەموو مێژووەکەیەوە دەسڕیتەو.\nتکایە پشتڕاستی بکەوە کە دەتەوێت ئەم کارە بکەی، لە ئاکامەکەی تێدەگەی، و ئەم کارە بە پێی [[{{MediaWiki:Policy-url}}|سیاسەتنامە]] ئەنجام دەدەی.",
        "actioncomplete": "کردەوە بە ئاکام گەییشت",
        "actionfailed": "کردارەکە سەرنەکەوت",
        "whatlinkshere-hidelinks": "$1 بەستەر",
        "whatlinkshere-hideimages": "$1 بەستەرەکانی پەڕگە",
        "whatlinkshere-filters": "پاڵێوکەکان",
+       "whatlinkshere-submit": "بڕۆ",
        "block": "بەربەستنی بەکارھێنەر",
        "unblock": "لە بەربەست‌دەرهێنانی بەکارهێنەر",
        "blockip": "بەربەستنی {{GENDER:$1|بەکارھێنەر}}",
        "imgmultipagenext": "پەڕەی داهاتوو →",
        "imgmultigo": "بڕۆ!",
        "imgmultigoto": "بڕۆ بۆ پەڕەی $1",
+       "img-lang-default": "(زمانی بنچینەیی)",
        "img-lang-go": "بڕۆ",
        "ascending_abbrev": "بەرەوە ژوور",
        "descending_abbrev": "بەرەوە ژێر",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 سەردێڕ|$1 سەردێڕ}} زیادکرا:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 سەردێڕ|$1 سەردێڕ}} لابرا:",
        "watchlistedit-clear-titles": "ناونیشانەکان :",
+       "watchlisttools-clear": "لیستی چاودێری پاک بکەرەوە",
        "watchlisttools-view": "گۆڕانکارییە پەیوەندیدارەکان ببینە",
        "watchlisttools-edit": "لیستی چاودێری ببینە و دەستکاری بکە",
        "watchlisttools-raw": "لیستی خاوی چاودێری دەستکاری بکە",
        "expand_templates_preview": "پێشبینین",
        "pagelang-name": "پەڕە",
        "pagelang-language": "زمان",
+       "pagelang-use-default": "بەکارھێنانی زمانی بنچینەیی",
        "pagelang-select-lang": "زمان ھەڵبژێرە",
        "right-pagelang": "زمانی پەڕە بگۆڕە",
        "action-pagelang": "زمانی پەڕەکە بگۆڕە",
        "special-characters-group-gujarati": "گوجەراتی",
        "special-characters-group-thai": "تایلەندی",
        "special-characters-group-khmer": "خمێری",
-       "api-error-blacklisted": "هەڵبژێرە ناونیشانی جیاوازتر و واتادارتر."
+       "api-error-blacklisted": "هەڵبژێرە ناونیشانی جیاوازتر و واتادارتر.",
+       "log-action-filter-upload-upload": "بارکردنی نوێ"
 }
index 01c3cf9..1a205ff 100644 (file)
@@ -47,6 +47,7 @@
        "tog-watchdefault": "Přidávat mnou editované stránky a soubory ke sledovaným",
        "tog-watchmoves": "Přidávat mnou přesouvané stránky a soubory mezi sledované",
        "tog-watchdeletion": "Přidávat stránky a soubory, které smažu, mezi sledované",
+       "tog-watchuploads": "Přidávat mnou načtené soubory ke sledovaným",
        "tog-watchrollback": "Přidávat stránky, které jsem {{GENDER:|vrátil|vrátila}} zpět, ke sledovaným",
        "tog-minordefault": "Označovat editace implicitně jako malé",
        "tog-previewontop": "Zobrazovat náhled před editačním oknem (ne za ním)",
        "recentchangeslinked-page": "Název stránky:",
        "recentchangeslinked-to": "Zobrazit změny na stránkách odkazujících na zadanou stránku",
        "recentchanges-page-added-to-category": "Stránka [[:$1]] zařazena do kategorie",
-       "recentchanges-page-added-to-category-bundled": "Stránka [[:$1]] a [[Special:WhatLinksHere/$1|{{PLURAL:$2|jedna další zařazeny|$2 další zařazeny|$2 dalších zařazeno}}]] do kategorie",
+       "recentchanges-page-added-to-category-bundled": "Stránka [[:$1]], [[Special:WhatLinksHere/$1|vložená do jiných stránek]], zařazena do kategorie",
        "recentchanges-page-removed-from-category": "Stránka [[:$1]] vyřazena z kategorie",
-       "recentchanges-page-removed-from-category-bundled": "Stránka [[:$1]] a [[Special:WhatLinksHere/$1|{{PLURAL:$2|jedna další vyřazeny|$2 další vyřazeny|$2 dalších vyřazeno}}]] z kategorie",
+       "recentchanges-page-removed-from-category-bundled": "Stránka [[:$1]], [[Special:WhatLinksHere/$1|vložená do jiných stránek]], vyřazena z kategorie",
        "autochange-username": "Automatická změna MediaWiki",
        "upload": "Načíst soubor",
        "uploadbtn": "Načíst soubor",
        "categories-submit": "Zobrazit",
        "categoriespagetext": "Následující kategorie {{PLURAL:$1|obsahuje|obsahují}} stránky nebo soubory.\nNezobrazují se tu [[Special:UnusedCategories|nepoužívané kategorie]].\nPodívejte se také na [[Special:WantedCategories|žádané kategorie]].",
        "categoriesfrom": "Zobrazit kategorie počínaje od:",
-       "special-categories-sort-count": "seřadit podle počtu",
-       "special-categories-sort-abc": "seřadit abecedně",
        "deletedcontributions": "Smazané editace uživatele",
        "deletedcontributions-title": "Smazané editace uživatele",
        "sp-deletedcontributions-contribs": "příspěvky",
        "listgrouprights-namespaceprotection-header": "Omezení jmenných prostorů",
        "listgrouprights-namespaceprotection-namespace": "Jmenný prostor",
        "listgrouprights-namespaceprotection-restrictedto": "Oprávnění umožňující uživateli editovat",
-       "listgrants-summary": "Následující seznam obsahuje oprávnění s odpovídajícím přístupem k uživatelským právům. Uživatelé mohou aplikace autorizovat k využití jejich účtu, ale s omezenými právy na základě oprávnění, která uživatel aplikaci přidělil. Aplikace konající jménem uživatele ale nemůže využít oprávnění, která uživatel nemá.\nK jednotlivým oprávněním mohou existovat [[{{MediaWiki:Listgrouprights-helppage}}|doplňující informace]].",
+       "listgrants": "Svolení",
+       "listgrants-summary": "Následující seznam obsahuje svolení a jim odpovídající přístup k uživatelským právům. Uživatelé mohou aplikace autorizovat k využití jejich účtu, ale s omezenými právy na základě svolení, která uživatel aplikaci poskytl. Aplikace konající jménem uživatele ale nemůže využít oprávnění, která uživatel nemá.\nK jednotlivým oprávněním mohou existovat [[{{MediaWiki:Listgrouprights-helppage}}|doplňující informace]].",
+       "listgrants-grant": "Svolení",
        "listgrants-rights": "Oprávnění",
        "trackingcategories": "Sledovací kategorie",
        "trackingcategories-summary": "Tato stránka obsahuje seznam sledovacích kategorií, které automaticky přidává software MediaWiki. Jejich jména lze změnit úpravou příslušných systémových hlášení ve jmenném prostoru {{ns:8}}.",
        "confirmemail_body_set": "Někdo (patrně vy, z IP adresy $1) nastavil e-mailovou adresu\núčtu „$2“ na {{grammar:6sg|{{SITENAME}}}} na tuto adresu.\n\nPokud si přejete aktivovat e-mailové funkce na\n{{grammar:6sg|{{SITENAME}}}}, tak pro potvrzení, že tato adresa opravdu\npatří vám, přejděte svým internetovým prohlížečem na následující adresu:\n\n$3\n\nPokud vám tento účet *nepatří*, klikněte na následující\nodkaz, čímž potvrzení zrušíte:\n\n$5\n\nPlatnost tohoto potvrzovacího kódu vyprší $4.",
        "confirmemail_invalidated": "Potvrzení e-mailové adresy bylo zrušeno",
        "invalidateemail": "Zrušit potvrzení e-mailové adresy",
+       "notificationemail_subject_changed": "Registrovaný e-mail na {{grammar:6sg|{{SITENAME}}}} byl změněn",
+       "notificationemail_subject_removed": "Registrovaný e-mail na {{grammar:6sg|{{SITENAME}}}} byl odebrán",
+       "notificationemail_body_changed": "Někdo (patrně vy, z IP adresy $1) na {{grammar:6sg|{{SITENAME}}}} změnil\ne-mailovou adresu k účtu „$2“ na „$3“.\n\nPokud jste to nebyli vy, okamžitě kontaktujte správce.",
+       "notificationemail_body_removed": "Někdo (patrně vy, z IP adresy $1) na {{grammar:6sg|{{SITENAME}}}} odebral\ne-mailovou adresu z účtu „$2“.\n\nPokud jste to nebyli vy, okamžitě kontaktujte správce.",
        "scarytranscludedisabled": "[Vkládání šablon mezi wiki je vypnuto]",
        "scarytranscludefailed": "[Nepodařilo se načíst šablonu pro $1]",
        "scarytranscludefailed-httpstatus": "[Nepodařilo se načíst šablonu pro $1: HTTP $2]",
        "sessionprovider-nocookies": "Možná jsou zakázány cookies. Ujistěte se, že máte cookies povoleny a zkuste to znovu.",
        "randomrootpage": "Náhodná kořenová stránka",
        "log-action-filter-block": "Typ zablokování:",
+       "log-action-filter-contentmodel": "Typ změny modelu obsahu:",
        "log-action-filter-delete": "Typ smazání:",
+       "log-action-filter-import": "Typ importu:",
+       "log-action-filter-managetags": "Typ akce správy značek:",
+       "log-action-filter-move": "Typ přesunu:",
+       "log-action-filter-newusers": "Typ založení účtu:",
        "log-action-filter-patrol": "Typ prověření:",
        "log-action-filter-protect": "Typ zamčení:",
+       "log-action-filter-rights": "Typ změny práv:",
+       "log-action-filter-suppress": "Typ utajení:",
        "log-action-filter-upload": "Typ nahrání:",
        "log-action-filter-all": "Všechny",
        "log-action-filter-block-block": "Zablokování",
        "log-action-filter-block-reblock": "Změna zablokování",
        "log-action-filter-block-unblock": "Odblokování",
+       "log-action-filter-contentmodel-change": "Změna modelu obsahu",
+       "log-action-filter-contentmodel-new": "Založení stránky s nestandardním modelem obsahu",
        "log-action-filter-delete-delete": "Smazání stránky",
        "log-action-filter-delete-restore": "Obnovení stránky",
        "log-action-filter-delete-event": "Smazání záznamu",
        "log-action-filter-delete-revision": "Smazání revize",
+       "log-action-filter-import-interwiki": "Transwiki import",
+       "log-action-filter-import-upload": "Import načtením XML souboru",
+       "log-action-filter-managetags-create": "Vytvoření značky",
+       "log-action-filter-managetags-delete": "Smazání značky",
+       "log-action-filter-managetags-activate": "Aktivace značky",
+       "log-action-filter-managetags-deactivate": "Deaktivace značky",
+       "log-action-filter-move-move": "Přesun nepřepisující přesměrování",
+       "log-action-filter-move-move_redir": "Přesun přepisující přesměrování",
+       "log-action-filter-newusers-create": "Vytvoření anonymním uživatelem",
+       "log-action-filter-newusers-create2": "Vytvoření registrovaným uživatelem",
+       "log-action-filter-newusers-autocreate": "Automatické vytvoření",
+       "log-action-filter-newusers-byemail": "Vytvoření s heslem poslaným e-mailem",
        "log-action-filter-patrol-patrol": "Manuální prověření",
        "log-action-filter-patrol-autopatrol": "Automatické prověření",
        "log-action-filter-protect-protect": "Zamknutí",
        "log-action-filter-protect-modify": "Změna zámku",
        "log-action-filter-protect-unprotect": "Odemknutí",
+       "log-action-filter-protect-move_prot": "Přesun zámku",
+       "log-action-filter-rights-rights": "Ruční změna",
+       "log-action-filter-rights-autopromote": "Automatická změna",
+       "log-action-filter-suppress-event": "Utajení protokolovacího záznamu",
+       "log-action-filter-suppress-revision": "Utajení revize",
+       "log-action-filter-suppress-delete": "Utajení stránky",
+       "log-action-filter-suppress-block": "Utajení uživatele zablokováním",
+       "log-action-filter-suppress-reblock": "Utajení uživatele novým zablokováním",
        "log-action-filter-upload-upload": "Nové načtení",
        "log-action-filter-upload-overwrite": "Znovunačtení"
 }
index 2e2ff94..2b45b47 100644 (file)
        "categories": "Categorïau",
        "categoriespagetext": "Mae'r {{PLURAL:$1|categori|categori|categorïau|categorïau|categorïau|categorïau}} isod yn cynnwys tudalennau neu ffeiliau amlgyfrwng.\nNi ddangosir [[Special:UnusedCategories|categorïau gwag]] yma.\nGweler hefyd [[Special:WantedCategories|categorïau sydd eu hangen]].",
        "categoriesfrom": "Dangos categorïau gan ddechrau gyda:",
-       "special-categories-sort-count": "trefnu yn ôl nifer",
-       "special-categories-sort-abc": "trefnu yn ôl yr wyddor",
        "deletedcontributions": "Cyfraniadau defnyddiwr i dudalennau dilëedig",
        "deletedcontributions-title": "Cyfraniadau defnyddiwr i dudalennau dilëedig",
        "sp-deletedcontributions-contribs": "cyfraniadau",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|diwygiad|diwygiad|ddiwygiad|diwygiad|diwygiad|diwygiad}} wedi'i fewnforio",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|diwygiad|diwygiad|ddiwygiad|diwygiad|diwygiad|diwygiad}} wedi'i fewnforio o $2",
        "javascripttest": "Profi JavaScript",
-       "javascripttest-pagetext-noframework": "Neilltuwyd y dudalen hon at gynnal profion JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Ni nabyddwyd y fframwaith profi \"$1\".",
        "javascripttest-pagetext-unknownaction": "Gweithred dienw \"$1\"",
-       "javascripttest-pagetext-frameworks": "Dewiswch un o'r fframweithiau profi canlynol: $1",
-       "javascripttest-pagetext-skins": "Dewiswch wedd i gynnal profion arni:",
        "javascripttest-qunit-intro": "Gweler y [$1 wybodaeth am y profion] ar mediawiki.org.",
        "tooltip-pt-userpage": "{{GENDER:|Eich tudalen defnyddiwr}}",
        "tooltip-pt-anonuserpage": "Y tudalen defnyddiwr ar gyfer y cyfeiriad IP yr ydych yn ei ddefnyddio wrth olygu",
        "version-libraries-description": "Disgrifiad",
        "version-libraries-authors": "Awduron",
        "redirect": "Ailgyfeirio yn ôl enw ffeil, defnyddiwr, tudalen neu ID y diwygiad",
-       "redirect-legend": "Ailgyfeirio i ffeil neu dudalen",
        "redirect-summary": "Mae'r dudalen arbennig hon yn ailgyfeirio at ffeil (o roi enw'r ffeil), at dudalen (o roi ID rhyw ddiwygiad o'r dudalen neu ID y dudalen), neu at dudalen defnyddiwr (o roi rhif ID y defnyddiwr).\nDefnydd: \n[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], neu [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Ati",
        "redirect-lookup": "Chwilio drwy:",
        "redirect-not-exists": "Heb lwyddo i'w ganfod",
        "fileduplicatesearch": "Chwilio am ffeiliau dyblyg",
        "fileduplicatesearch-summary": "Chwilier am ffeiliau dyblyg ar sail ei werth stwnsh.",
-       "fileduplicatesearch-legend": "Chwilio am ddyblygeb",
        "fileduplicatesearch-filename": "Enw'r ffeil:",
        "fileduplicatesearch-submit": "Chwilier",
        "fileduplicatesearch-info": "$1 × $2 picsel<br />Maint y ffeil: $3<br />math MIME: $4",
index cde3710..77e9418 100644 (file)
        "categories": "Kategorier",
        "categoriespagetext": "Følgende {{PLURAL:$1|kategori|kategorier}} indeholder sider eller media.\n[[Special:UnusedCategories|Ubrugte kategorier]] vises ikke her.\nSe også [[Special:WantedCategories|ønskede kategorier]].",
        "categoriesfrom": "Vis kategorier startende med:",
-       "special-categories-sort-count": "sorter efter antal",
-       "special-categories-sort-abc": "sorter alfabetisk",
        "deletedcontributions": "Slettede brugerbidrag",
        "deletedcontributions-title": "Slettede brugerbidrag",
        "sp-deletedcontributions-contribs": "bidrag",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|version|versioner}} importeret",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|version|versioner}} importeret fra $2",
        "javascripttest": "Test af JavaScript",
-       "javascripttest-pagetext-noframework": "Denne side er reserveret til at teste JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Ukendt testmiljø \"$1\".",
-       "javascripttest-pagetext-frameworks": "Vælg venligst en af de følgende testmiljøer: $1",
-       "javascripttest-pagetext-skins": "Vælg et udseende, som testene skal køres med:",
        "javascripttest-qunit-intro": "Se [$1 testdokumentationen] på mediawiki.org.",
        "tooltip-pt-userpage": "{{GENDER:|Din}} brugerside",
        "tooltip-pt-anonuserpage": "Brugersiden for den ip-adresse du redigerer som",
        "version-libraries-library": "Bibliotek",
        "version-libraries-version": "Version",
        "redirect": "Omdirigering pga. fil, bruger-, side- eller udgave-ID",
-       "redirect-legend": "Omstilling til en fil eller en side",
        "redirect-summary": "Denne specialside omdirigerer til en fil (hvis filnavnet er angivet), en side (hvis udgave ID'et eller side ID'et er angivet) eller en brugerside (hvis et numerisk brugernummer er angivet). Eksempler på brug: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]] eller [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Vis",
        "redirect-lookup": "Slå op:",
        "redirect-not-exists": "Værdi ej fundet",
        "fileduplicatesearch": "Find dubletfiler",
        "fileduplicatesearch-summary": "Find dublerede filer baseret på deres hash-værdi.",
-       "fileduplicatesearch-legend": "Find dubletfiler.",
        "fileduplicatesearch-filename": "Filnavn:",
        "fileduplicatesearch-submit": "Find",
        "fileduplicatesearch-info": "$1 × $2 punkter<br />Filstørrelse: $3<br />MIME-type: $4",
index 5890222..0b1a874 100644 (file)
        "tog-watchdefault": "Selbst geänderte Seiten und Dateien automatisch beobachten",
        "tog-watchmoves": "Selbst verschobene Seiten und Dateien automatisch beobachten",
        "tog-watchdeletion": "Selbst gelöschte Seiten und Dateien automatisch beobachten",
+       "tog-watchuploads": "Neue hochgeladene Dateien zu meiner Beobachtungsliste hinzufügen",
        "tog-watchrollback": "Seiten, bei denen ich eine Zurücksetzung durchgeführt habe, automatisch beobachten",
        "tog-minordefault": "Eigene Änderungen standardmäßig als geringfügig markieren",
        "tog-previewontop": "Vorschau oberhalb des Bearbeitungsfensters anzeigen",
        "recentchangeslinked-page": "Seite:",
        "recentchangeslinked-to": "Zeige nur Änderungen an Seiten, die auf diese Seite verlinken",
        "recentchanges-page-added-to-category": "[[:$1]] zur Kategorie hinzugefügt",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] und [[Special:WhatLinksHere/$1|{{PLURAL:$2|eine weitere Seite|$2 weitere Seiten}}]] zur Kategorie hinzugefügt",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] zur Kategorie hinzugefügt, [[Special:WhatLinksHere/$1|diese Seite ist in anderen Seiten eingebunden]]",
        "recentchanges-page-removed-from-category": "[[:$1]] von der Kategorie entfernt",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] und [[Special:WhatLinksHere/$1|{{PLURAL:$2|eine weitere Seite|$2 weitere Seiten}}]] von der Kategorie entfernt",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] von der Kategorie entfernt, [[Special:WhatLinksHere/$1|diese Seite ist in anderen Seiten eingebunden]]",
        "autochange-username": "Automatische MediaWiki-Änderung",
        "upload": "Datei hochladen",
        "uploadbtn": "Datei hochladen",
        "categories-submit": "Anzeigen",
        "categoriespagetext": "Folgende {{PLURAL:$1|Kategorie enthält|Kategorien enthalten}} Seiten oder Dateien.\n[[Special:UnusedCategories|Verwaiste Kategorien]] werden hier nicht aufgeführt.\nSiehe auch die Liste der [[Special:WantedCategories|gewünschten Kategorien]].",
        "categoriesfrom": "Zeige Kategorien ab:",
-       "special-categories-sort-count": "Sortierung nach Anzahl",
-       "special-categories-sort-abc": "Sortierung nach Alphabet",
        "deletedcontributions": "Gelöschte Beiträge",
        "deletedcontributions-title": "Gelöschte Beiträge",
        "sp-deletedcontributions-contribs": "Benutzerbeiträge",
        "confirmemail_body_set": "Jemand mit der IP-Adresse $1, wahrscheinlich du selbst,\nhat die E-Mail-Adresse des Benutzerkontos „$2“ auf {{SITENAME}} zu dieser E-Mail-Adresse abgeändert.\n\nUm zu bestätigen, dass dieses Benutzerkonto wirklich zu dir gehört\nund um die E-Mail-Funktionen auf {{SITENAME}} zu aktivieren, öffne bitte den folgenden Link in deinem Browser:\n\n$3\n\nFalls das Konto *nicht* zu dir gehört, bitte den nachfolgenden Link öffnen,\num die Bestätigung der E-Mail-Adresse abzubrechen:\n\n$5\n\nDieser Bestätigungscode ist gültig bis $4.",
        "confirmemail_invalidated": "Die E-Mail-Adressbestätigung wurde abgebrochen.",
        "invalidateemail": "E-Mail-Adressbestätigung abbrechen",
+       "notificationemail_subject_changed": "Die registrierte E-Mail-Adresse auf {{SITENAME}} wurde geändert",
+       "notificationemail_subject_removed": "Die registrierte E-Mail-Adresse auf {{SITENAME}} wurde entfernt",
+       "notificationemail_body_changed": "Jemand mit der IP-Adresse $1, wahrscheinlich du selbst,\nhat auf {{SITENAME}} die E-Mail-Adresse für das Benutzerkonto „$2“ auf „$3“ geändert.\n\nFalls das nicht du warst, kontaktiere umgehend einen Wikiadministrator.",
+       "notificationemail_body_removed": "Jemand mit der IP-Adresse $1, wahrscheinlich du selbst,\nhat auf {{SITENAME}} die E-Mail-Adresse für das Benutzerkonto „$2“ entfernt.\n\nFalls das nicht du warst, kontaktiere umgehend einen Wikiadministrator.",
        "scarytranscludedisabled": "[Interwiki-Einbindung ist deaktiviert]",
        "scarytranscludefailed": "[Vorlageneinbindung für $1 ist gescheitert]",
        "scarytranscludefailed-httpstatus": "[Vorlagenabruf fehlgeschlagen für $1: HTTP $2]",
        "sessionprovider-nocookies": "Cookies sind eventuell deaktiviert. Stelle sicher, dass Cookies aktiviert sind und versuche es erneut.",
        "randomrootpage": "Zufällige Stammseite",
        "log-action-filter-block": "Sperrtyp:",
+       "log-action-filter-contentmodel": "Typ der Inhaltsmodelländerung:",
        "log-action-filter-delete": "Löschtyp:",
+       "log-action-filter-import": "Importtyp:",
+       "log-action-filter-managetags": "Typ der Markierungsverwaltungsaktion:",
+       "log-action-filter-move": "Verschiebungstyp:",
+       "log-action-filter-newusers": "Typ der Benutzerkontenerstellung:",
        "log-action-filter-patrol": "Kontrolltyp:",
        "log-action-filter-protect": "Schutztyp:",
+       "log-action-filter-rights": "Typ der Rechteänderung",
+       "log-action-filter-suppress": "Unterdrückungstyp",
        "log-action-filter-upload": "Hochladetyp:",
        "log-action-filter-all": "Alle",
        "log-action-filter-block-block": "Sperren",
        "log-action-filter-block-reblock": "Sperrveränderung",
        "log-action-filter-block-unblock": "Freigaben",
+       "log-action-filter-contentmodel-change": "Inhaltsmodelländerung",
+       "log-action-filter-contentmodel-new": "Erstellung einer Seite mit einem Nicht-Standard-Inhaltsmodell",
        "log-action-filter-delete-delete": "Seitenlöschung",
        "log-action-filter-delete-restore": "Seitenwiederherstellung",
        "log-action-filter-delete-event": "Logbucheintrag-Löschung",
        "log-action-filter-delete-revision": "Versionslöschung",
+       "log-action-filter-import-interwiki": "Transwiki-Importe",
+       "log-action-filter-import-upload": "Import durch das Hochladen einer XML-Datei",
+       "log-action-filter-managetags-create": "Markierungserstellung",
+       "log-action-filter-managetags-delete": "Markierungslöschung",
+       "log-action-filter-managetags-activate": "Markierungsaktivierung",
+       "log-action-filter-managetags-deactivate": "Markierungsdeaktivierung",
+       "log-action-filter-move-move": "Verschiebung ohne Überschreibung von Weiterleitungen",
+       "log-action-filter-move-move_redir": "Verschiebung mit Überschreibung von Weiterleitungen",
+       "log-action-filter-newusers-create": "Erstellung durch anonymen Benutzer",
+       "log-action-filter-newusers-create2": "Erstellung durch registrierten Benutzer",
+       "log-action-filter-newusers-autocreate": "Automatische Erstellung",
+       "log-action-filter-newusers-byemail": "Erstellung mit per E-Mail zugesandtem Passwort",
        "log-action-filter-patrol-patrol": "Manuelle Kontrolle",
        "log-action-filter-patrol-autopatrol": "Automatische Kontrolle",
        "log-action-filter-protect-protect": "Schutz",
        "log-action-filter-protect-modify": "Schutzveränderung",
        "log-action-filter-protect-unprotect": "Freigaben",
+       "log-action-filter-protect-move_prot": "Verschobener Seitenschutz",
+       "log-action-filter-rights-rights": "Manuelle Änderung",
+       "log-action-filter-rights-autopromote": "Automatische Änderung",
+       "log-action-filter-suppress-event": "Logbucheintrag-Unterdrückung",
+       "log-action-filter-suppress-revision": "Versionsunterdrückung",
+       "log-action-filter-suppress-delete": "Seitenunterdrückung",
+       "log-action-filter-suppress-block": "Benutzerunterdrückung durch Sperre",
+       "log-action-filter-suppress-reblock": "Benutzerunterdrückung durch Neusperre",
        "log-action-filter-upload-upload": "Neue Hochladung",
        "log-action-filter-upload-overwrite": "Wiederhochladung"
 }
index 3e05bd4..9aac75d 100644 (file)
        "categories": "Kategoriy",
        "categoriespagetext": "{{PLURAL:$1|Kategoriya cêrene|Kategoriyanê cêrênan}} de peli ya zi medya estê.\n[[Special:UnusedCategories|Kategoriyê ke nêxebetiyenê]] tiya de nêmocniyayê.\n[[Special:WantedCategories|Kategoriyanê waşteyeyan]] de zi bıvêne.",
        "categoriesfrom": "Kategoriyê ke be ninan dest pêkenê, bımocne:",
-       "special-categories-sort-count": "goreyê çendi rêz ker.",
-       "special-categories-sort-abc": "alfabetik rêz ker",
        "deletedcontributions": "İştırakê karberi esterdi",
        "deletedcontributions-title": "İştırakê karberi esterdi",
        "sp-deletedcontributions-contribs": "iştıraqi",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|çımraviyarnayış|çımraviyarnayışi}}",
        "import-logentry-interwiki-detail": "$2 ra $1 {{PLURAL:$1|çımraviyarnayış|çımraviyarnayışi}}",
        "javascripttest": "Cerebnayışê JavaScripti",
-       "javascripttest-pagetext-noframework": "Na pela testanê JavaScripta gurweynayışi re abıryaya.",
-       "javascripttest-pagetext-unknownframework": "Çerçeweyê \"$1\" cerbnayışi xırabo.",
-       "javascripttest-pagetext-frameworks": "Şıma ra reca xorê cêr ra test weçinê:$1",
-       "javascripttest-pagetext-skins": "Testa akarfinayışi rê verqayt:",
        "javascripttest-qunit-intro": "Mediawiki.org dı [dokumanê $1] bıvinê.",
        "tooltip-pt-userpage": "Pela {{GENDER:|şımaya karberi}}",
        "tooltip-pt-anonuserpage": "pelê karberê IPyi",
        "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Article path]",
        "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Script path]",
        "redirect": "Serşıkıtena dosya, karberi, pele ya ki revizyonê kamiya dosya",
-       "redirect-legend": "Hetenayışa dosya yana pela",
        "redirect-summary": "Na pela xase to hetê yew dosya (nameyê dosya dayeyo), yew pele (kamiya revizyoni ya zi pele dayiya) ya zi yew pela karberi (kamiya karberiya reqemkiye dayiya) ser şıknena. Gurenayış: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ya zi  [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Şo",
        "redirect-lookup": "Bewni",
        "redirect-not-exists": "Erc nêvineyê",
        "fileduplicatesearch": "Dosyayanê zey pêyan cı geyrê",
        "fileduplicatesearch-summary": "Dosyanê çıftan bınê têmiyankewteyan de bıgeyre.",
-       "fileduplicatesearch-legend": "kopyayê ena dosya bigêre",
        "fileduplicatesearch-filename": "Nameyê dosyayi",
        "fileduplicatesearch-submit": "Cı geyre",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Ebatê dosyayî: $3<br />Tipê MIMEî: $4",
index b0f2852..f11718e 100644 (file)
        "categories": "Kategorije",
        "categoriespagetext": "{{PLURAL:$1|Slědujuca kategorija wopśimujo|Slědujucej kategoriji wopśimujotej|Slědujuce kategorije wopśimuju|Slědujuce kategorije wopśimuju}} boki abo medije.\n[[Special:UnusedCategories|Njewužywane kategorije]] se how njepokazuju.\nGlědaj teke [[Special:WantedCategories|póžedane kategorije]].",
        "categoriesfrom": "Kategorije pokazaś, zachopinajucy z:",
-       "special-categories-sort-count": "pśewuběrowaś pó licbje",
-       "special-categories-sort-abc": "pśewuběrowaś pó alfabeśe",
        "deletedcontributions": "Wulašowane wužywarske pśinoski",
        "deletedcontributions-title": "Wulašowane wužywarske pśinoski",
        "sp-deletedcontributions-contribs": "pśinoski",
        "import-logentry-upload-detail": "{{PLURAL:$1|$1 wersija|$1 wersiji|$1 wersije}}",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|$1 wersija|$1 wersiji|$1 wersije}} wót $2",
        "javascripttest": "JavaScriptowy test",
-       "javascripttest-pagetext-noframework": "Toś ten bok jo pśewjedowanjeju javascriptowych testow pśewóstajony.",
-       "javascripttest-pagetext-unknownframework": "Njeznaty wobłuk \"$1\".",
-       "javascripttest-pagetext-frameworks": "Pšosym wubjeŕ jaden ze slědujucych testowańskich wobłukow: $1",
-       "javascripttest-pagetext-skins": "Wubjeŕ drastwu za pśewjeźenje testow:",
        "javascripttest-qunit-intro": "Glědaj [$1 testowańsku dokumentaciju] na mediawiki.org.",
        "tooltip-pt-userpage": "Twój wužywarski bok",
        "tooltip-pt-anonuserpage": "Wužywarski bok za IP-adresu, z kótarejuž bok wobźěłajoš",
        "version-entrypoints-header-entrypoint": "Zastupny dypk",
        "version-entrypoints-header-url": "URL",
        "redirect": "Pó datajowem mjenju, wužywarju, boku abo wersijowem ID dalej pósrědniś",
-       "redirect-legend": "Do dataje abo boka dalej pósrědniś",
        "redirect-summary": "Toś ten specialny bok pósrědnja se do dataje (datajowe mě jo pódane), boka (wersijowy ID abo ID boka jo pódany) abo wužywarskego boka (numeriski wužywarski ID jo pódany) dalej. Wužyśe:\n[[{{#Special:Redirect}}/file/Pśikład.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Pytaś",
        "redirect-lookup": "Pytaś:",
        "redirect-not-exists": "Gódnota njejo se namakała",
        "fileduplicatesearch": "Za duplikatnymi datajami pytaś",
        "fileduplicatesearch-summary": "Za datajowymi duplikatami na zakłaźe gótnoty hash pytaś.",
-       "fileduplicatesearch-legend": "pytaś duplikata",
        "fileduplicatesearch-filename": "Datajowe mě:",
        "fileduplicatesearch-submit": "Pytaś",
        "fileduplicatesearch-info": "$1 × $2 Piksel<br />wjelikosć dataja: $3<br />typ MIME: $4",
index 400cd91..5b96993 100644 (file)
        "categories-submit": "Εμφάνιση",
        "categoriespagetext": "Οι ακόλουθες {{PLURAL:$1|κατηγορία περιέχει|κατηγορίες περιέχουν}} σελίδες ή μέσα.\nΟι [[Special:UnusedCategories|αχρησιμοποίητες κατηγορίες]] δεν εμφανίζονται εδώ.\nΔείτε επίσης τις [[Special:WantedCategories|ζητούμενες κατηγορίες]].",
        "categoriesfrom": "Εμφάνιση κατηγοριών που αρχίζουν από:",
-       "special-categories-sort-count": "ταξινόμηση κατά απαρίθμηση",
-       "special-categories-sort-abc": "αλφαβητική ταξινόμηση",
        "deletedcontributions": "Διαγεγραμμένες συνεισφορές χρήστη",
        "deletedcontributions-title": "Διαγεγραμμένες συνεισφορές χρήστη",
        "sp-deletedcontributions-contribs": "συνεισφορές",
        "import-logentry-upload-detail": "{{PLURAL:$1|Εισήχθη $1 αναθεώρηση|Εισήχθησαν $1 αναθεωρήσεις}}",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|Εισήχθη $1 αναθεώρηση|Εισήχθησαν $1 αναθεωρήσεις}} από $2",
        "javascripttest": "Δοκιμή JavaScript",
-       "javascripttest-pagetext-noframework": "Αυτή η σελίδα είναι δεσμευμένη για την εκτέλεση δοκιμών σε JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Άγνωστο πλαίσιο δοκιμών \" $1 \".",
        "javascripttest-pagetext-unknownaction": "Άγνωστη ενέργεια «$1».",
-       "javascripttest-pagetext-frameworks": "Παρακαλώ επιλέξτε ένα από τα ακόλουθα πλαίσια δοκιμών: $1",
-       "javascripttest-pagetext-skins": "Επιλέξτε ένα skin για να εκτελέσετε δοκιμές με αυτό:",
        "javascripttest-qunit-intro": "Ανατρέξτε στην ενότητα [ $1 τεκμηρίωση δοκιμών] στο mediawiki.org.",
        "tooltip-pt-userpage": "Η σελίδα {{GENDER:|χρήστη σας|χρήστριας σας}}",
        "tooltip-pt-anonuserpage": "Η σελίδα χρήστη στον οποίο αντιστοιχεί η διεύθυνση IP που έχετε",
        "version-libraries-description": "Περιγραφή",
        "version-libraries-authors": "Δημιουργοί",
        "redirect": "Ανακατεύθυνση κατά αρχείο, χρήστη, σελίδα ή αναγνωριστικό αναθεώρησης",
-       "redirect-legend": "Ανακατεύθυνση σε ένα αρχείο ή μια σελίδα",
        "redirect-submit": "Μετάβαση",
        "redirect-lookup": "Αναζήτηση:",
        "redirect-value": "Τιμή:",
        "redirect-not-exists": "Η τιμή δε βρέθηκε",
        "fileduplicatesearch": "Αναζήτηση για διπλά αρχεία",
        "fileduplicatesearch-summary": "Αναζήτηση για διπλά αρχεία με βάση την τιμή hash του αρχείου.",
-       "fileduplicatesearch-legend": "Αναζήτηση για διπλό αρχείο",
        "fileduplicatesearch-filename": "Όνομα αρχείου:",
        "fileduplicatesearch-submit": "Αναζήτηση",
        "fileduplicatesearch-info": "$1 × $2 πίξελ<br />Μέγεθος αρχείου: $3<br />Τύπος MIME: $4",
index 48e6cd0..f2cdbe2 100644 (file)
@@ -18,6 +18,7 @@
        "tog-watchdefault": "Add pages and files I edit to my watchlist",
        "tog-watchmoves": "Add pages and files I move to my watchlist",
        "tog-watchdeletion": "Add pages and files I delete to my watchlist",
+       "tog-watchuploads": "Add new files I upload to my watchlist",
        "tog-watchrollback": "Add pages where I have performed a rollback to my watchlist",
        "tog-minordefault": "Mark all edits minor by default",
        "tog-previewontop": "Show preview before edit box",
        "recentchangeslinked-page": "Page name:",
        "recentchangeslinked-to": "Show changes to pages linked to the given page instead",
        "recentchanges-page-added-to-category": "[[:$1]] added to category",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] and [[Special:WhatLinksHere/$1|{{PLURAL:$2|one page|$2 pages}}]] added to category",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] added to category, [[Special:WhatLinksHere/$1|this page is included within other pages]]",
        "recentchanges-page-removed-from-category": "[[:$1]] removed from category",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] and [[Special:WhatLinksHere/$1|{{PLURAL:$2|one page|$2 pages}}]] removed from category",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] removed from category, [[Special:WhatLinksHere/$1|this page is included within other pages]]",
        "autochange-username": "MediaWiki automatic change",
        "upload": "Upload file",
        "uploadbtn": "Upload file",
        "categories-submit": "Show",
        "categoriespagetext": "The following {{PLURAL:$1|category contains|categories contain}} pages or media.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
        "categoriesfrom": "Display categories starting at:",
-       "special-categories-sort-count": "sort by count",
-       "special-categories-sort-abc": "sort alphabetically",
        "deletedcontributions": "Deleted user contributions",
        "deletedcontributions-summary": "",
        "deletedcontributions-title": "Deleted user contributions",
        "watchlistedit-raw-done": "Your watchlist has been updated.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 title was|$1 titles were}} added:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 title was|$1 titles were}} removed:",
-       "watchlistedit-clear-title": "Cleared watchlist",
+       "watchlistedit-clear-title": "Clear watchlist",
        "watchlistedit-clear-legend": "Clear watchlist",
        "watchlistedit-clear-explain": "All of the titles will be removed from your watchlist",
        "watchlistedit-clear-titles": "Titles:",
index ae00baa..46d2669 100644 (file)
        "categories-submit": "Montri",
        "categoriespagetext": "La {{PLURAL:$1|jena kategorio|jenaj kategorioj}} ekzistas jam en la vikio.\n[[Special:UnusedCategories|Neuzataj kategorioj]] ne estis montrataj ĉi tie.\nVidu ankaŭ [[Special:WantedCategories|Dezirataj kategorioj]].",
        "categoriesfrom": "Montri kategoriojn komencante de:",
-       "special-categories-sort-count": "oridigi laŭ nombrado",
-       "special-categories-sort-abc": "ordigi laŭ alfabeto",
        "deletedcontributions": "Forigitaj kontribuoj de uzantoj",
        "deletedcontributions-title": "Forigitaj kontribuoj de uzantoj",
        "sp-deletedcontributions-contribs": "kontribuoj",
index f9eaa4c..4339c3f 100644 (file)
                        "Asierog",
                        "Mgpena",
                        "Transonlohk",
-                       "Eloy"
+                       "Eloy",
+                       "Lemondoge"
                ]
        },
        "tog-underline": "Subrayar los enlaces:",
        "tog-watchdefault": "Añadir las páginas y archivos que edite a mi lista de seguimiento",
        "tog-watchmoves": "Añadir las páginas y archivos que mueva a mi lista de seguimiento",
        "tog-watchdeletion": "Añadir las páginas y archivos que borre a mi lista de seguimiento",
+       "tog-watchuploads": "Agregar nuevos archivos puedo subir a mi lista de favoritos",
        "tog-watchrollback": "Añadir las páginas donde haya realizado una reversión a mi lista de seguimiento",
        "tog-minordefault": "Marcar todas las ediciones como menores de manera predeterminada",
        "tog-previewontop": "Mostrar previsualización antes del cuadro de edición",
        "copyrightpage": "{{ns:project}}:Derechos de autor",
        "currentevents": "Actualidad",
        "currentevents-url": "Project:Actualidad",
-       "disclaimers": "Descargos",
+       "disclaimers": "Exoneraciones",
        "disclaimerpage": "Project:Descargo general",
        "edithelp": "Ayuda de edición",
        "helppage-top-gethelp": "Ayuda",
        "site-atom-feed": "Canal Atom de $1",
        "page-rss-feed": "Canal RSS «$1»",
        "page-atom-feed": "Canal Atom de «$1»",
+       "feed-atom": "Atom",
        "red-link-title": "$1 (la página no existe)",
        "sort-descending": "Orden descendente",
        "sort-ascending": "Orden ascendente",
        "recentchangeslinked-page": "Nombre de la página:",
        "recentchangeslinked-to": "Mostrar los cambios en páginas enlazadas con la página seleccionada",
        "recentchanges-page-added-to-category": "[[:$1]] añadida a la categoría",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] y [[Special:WhatLinksHere/$1|{{PLURAL:$2|una página añadida|$2 páginas añadidas}}]] a la categoría",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] añadida a la categoría, [[Special:WhatLinksHere/$1|esta página está incluida en otras páginas]]",
        "recentchanges-page-removed-from-category": "[[:$1]] eliminada de la categoría",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] y [[Special:WhatLinksHere/$1|{{PLURAL:$2|una página eliminada|$2 páginas eliminadas}}]] de la categoría",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] eliminada de la categoría, [[Special:WhatLinksHere/$1|esta página está incluida en otras páginas]]",
        "autochange-username": "Cambio automático de MediaWiki",
        "upload": "Subir archivo",
        "uploadbtn": "Subir un archivo",
        "categories-submit": "Mostrar",
        "categoriespagetext": "Las siguientes {{PLURAL:$1|categoría contiene|categorías contienen}} páginas o medios.\nNo se muestran aquí las [[Special:UnusedCategories|categorías sin uso]].\nVéase también las [[Special:WantedCategories|categorías requeridas]].",
        "categoriesfrom": "Mostrar categorías que empiecen por:",
-       "special-categories-sort-count": "ordenar por conteo",
-       "special-categories-sort-abc": "ordenar alfabéticamente",
        "deletedcontributions": "Contribuciones borradas de usuario",
        "deletedcontributions-title": "Contribuciones borradas de usuario",
        "sp-deletedcontributions-contribs": "contribuciones",
        "exif-colorspace": "Espacio de color",
        "exif-componentsconfiguration": "Significado de cada componente",
        "exif-compressedbitsperpixel": "Modo de compresión de la imagen",
-       "exif-pixelxdimension": "Ancho de la imagen",
+       "exif-pixelxdimension": "Anchura de la imagen",
        "exif-pixelydimension": "Altura de la imagen",
        "exif-usercomment": "Comentarios de usuario",
        "exif-relatedsoundfile": "Archivo de audio relacionado",
        "exif-attributionurl": "Cuando reutilices este trabajo, por favor enlaza a",
        "exif-preferredattributionname": "Al volver a utilizar este trabajo, por favor da crédito",
        "exif-pngfilecomment": "Comentario de archivo PNG",
-       "exif-disclaimer": "Descargo",
+       "exif-disclaimer": "Exoneración de responsabilidad",
        "exif-contentwarning": "Advertencia de contenido",
        "exif-giffilecomment": "Comentario de archivo GIF",
        "exif-intellectualgenre": "Tipo de elemento",
        "exif-copyrighted-true": "Con derechos de autor",
        "exif-copyrighted-false": "No se ha definido el estado del copyright",
        "exif-photometricinterpretation-1": "Blanco y negro (el negro es 0)",
+       "exif-photometricinterpretation-4": "Máscara de transparencia",
+       "exif-photometricinterpretation-5": "Separados (Probablemente CMYK)",
+       "exif-photometricinterpretation-32803": "Matriz de filtro de color",
        "exif-unknowndate": "Fecha desconocida",
        "exif-orientation-1": "Normal",
        "exif-orientation-2": "Volteada horizontalmente",
        "confirmemail_body_set": "Alguien, probablemente tú, ha establecido la dirección de correo electrónico de la cuenta $2 a esta dirección en {{SITENAME}}, desde la dirección IP $1.\n\nPara confirmar que esta cuenta realmente te pertenece y activar las funciones de correo electrónico en {{SITENAME}}, sigue este enlace en tu navegador:\n\n$3\n\nSi la cuenta *no* te pertenece, sigue este otro enlace para cancelar la confirmación:\n\n$5\n\nEste código de confirmación expirará el $4.",
        "confirmemail_invalidated": "La confirmación de la dirección de correo electrónico ha sido cancelada",
        "invalidateemail": "Cancelar confirmación de correo electrónico",
+       "notificationemail_subject_changed": "{{SITENAME}} dirección de correo electrónico registrada ha sido cambiado",
+       "notificationemail_subject_removed": "{{SITENAME}} dirección de correo electrónico ha sido eliminada",
+       "notificationemail_body_changed": "Alguien, probablemente tú, desde la dirección IP $1,\nha cambiado la dirección de correo electrónico de la cuenta \"$2\" \"$3\" en {{SITENAME}}.\n\nSi esto no fue usted, póngase en contacto con un administrador del sitio inmediatamente.",
+       "notificationemail_body_removed": "Alguien, probablemente tú, desde la dirección IP $1,\nse ha eliminado la dirección de correo electrónico de la cuenta \"$2\" en {{SITENAME}}.\n\nSi esto no fue usted, póngase en contacto con un administrador del sitio inmediatamente.",
        "scarytranscludedisabled": "[Transclusión interwiki está deshabilitada]",
        "scarytranscludefailed": "[Obtención de plantilla falló para $1]",
        "scarytranscludefailed-httpstatus": "[Error de recuperación de plantilla para $1: HTTP $2]",
        "sessionprovider-nocookies": "Puede que las cookies estén desactivadas. Actívalas y comienza de nuevo.",
        "randomrootpage": "Página raíz aleatoria",
        "log-action-filter-block": "Tipo de bloqueo:",
+       "log-action-filter-contentmodel": "Tipo de contentmodel modificación:",
        "log-action-filter-delete": "Tipo de eliminación:",
+       "log-action-filter-import": "Tipo de importación:",
+       "log-action-filter-managetags": "Tipo de administración de la etiqueta de acción:",
+       "log-action-filter-move": "Tipo de movimiento:",
+       "log-action-filter-newusers": "Tipo de creación de la cuenta:",
        "log-action-filter-patrol": "Tipo de verificación:",
        "log-action-filter-protect": "Tipo de protección:",
+       "log-action-filter-rights": "El tipo de cambio correcto",
+       "log-action-filter-suppress": "Tipo de supresión",
        "log-action-filter-upload": "Tipo de subida:",
        "log-action-filter-all": "Todas",
        "log-action-filter-block-block": "Bloquear",
        "log-action-filter-block-reblock": "Modificación de bloqueo",
        "log-action-filter-block-unblock": "Desbloquear",
+       "log-action-filter-contentmodel-change": "Cambio de modelo de contenido",
+       "log-action-filter-contentmodel-new": "Creación de página con modelo de contenidos no estándar",
        "log-action-filter-delete-delete": "Eliminación de páginas",
        "log-action-filter-delete-restore": "Restauración de páginas",
        "log-action-filter-delete-event": "Eliminación de registros",
        "log-action-filter-delete-revision": "Eliminación de revisión",
+       "log-action-filter-import-interwiki": "Importación transwiki",
+       "log-action-filter-import-upload": "Importar mediante carga de XML",
+       "log-action-filter-managetags-create": "Creación de etiqueta",
+       "log-action-filter-managetags-delete": "Eliminación de etiqueta",
+       "log-action-filter-managetags-activate": "Activación de etiqueta",
+       "log-action-filter-managetags-deactivate": "Desactivación de etiquetas",
+       "log-action-filter-move-move": "Traslado sin sobrescritura de redirecciones",
+       "log-action-filter-move-move_redir": "Traslado con sobrescritura de redirecciones",
+       "log-action-filter-newusers-create": "La creación por usuario anónimo",
+       "log-action-filter-newusers-create2": "La creación por usuario registrado",
+       "log-action-filter-newusers-autocreate": "Creación automática",
+       "log-action-filter-newusers-byemail": "Creación con la contraseña enviada por correo",
        "log-action-filter-patrol-patrol": "Verificación manual",
        "log-action-filter-patrol-autopatrol": "Verificación automática",
        "log-action-filter-protect-protect": "Protección",
        "log-action-filter-protect-modify": "Modificación de protección",
        "log-action-filter-protect-unprotect": "Desprotección",
+       "log-action-filter-protect-move_prot": "Protección contra traslados",
+       "log-action-filter-rights-rights": "Cambio manual",
+       "log-action-filter-rights-autopromote": "Cambio automático",
+       "log-action-filter-suppress-event": "Supresión de registros",
+       "log-action-filter-suppress-revision": "Supresión de revisiones",
+       "log-action-filter-suppress-delete": "Supresión de páginas",
+       "log-action-filter-suppress-block": "Usuario supppression por bloque",
+       "log-action-filter-suppress-reblock": "Usuario supresión de rebloqueo",
        "log-action-filter-upload-upload": "Subida nueva",
        "log-action-filter-upload-overwrite": "Volver a subir"
 }
index 9b7ab63..038f823 100644 (file)
        "categories-submit": "Näita",
        "categoriespagetext": "Vikis on {{PLURAL:$1|järgmine kategooria|järgmised kategooriad}}.\nSiin ei näidata [[Special:UnusedCategories|kasutamata kategooriaid]].\nVaata ka [[Special:WantedCategories|puuduvaid kategooriaid]].",
        "categoriesfrom": "Näita kategooriaid alates:",
-       "special-categories-sort-count": "järjesta hulga järgi",
-       "special-categories-sort-abc": "järjesta tähestikuliselt",
        "deletedcontributions": "Kustutatud kaastöö",
        "deletedcontributions-title": "Kasutaja kustutatud kaastöö",
        "sp-deletedcontributions-contribs": "kaastöö",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|redaktsioon|redaktsiooni}} imporditud",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|redaktsioon|redaktsiooni}} imporditud asukohast $2",
        "javascripttest": "JavaScripti katsetamine",
-       "javascripttest-pagetext-noframework": "Seda lehekülge hoitakse JavaScripti katsete jaoks.",
-       "javascripttest-pagetext-unknownframework": "Tundmatu katseraamistik \"$1\".",
        "javascripttest-pagetext-unknownaction": "Tundmatu toiming \"$1\".",
-       "javascripttest-pagetext-frameworks": "Palun vali üks järgmistest katseraamistikest: $1",
-       "javascripttest-pagetext-skins": "Vali kujundus, millega katsetada:",
        "javascripttest-qunit-intro": "Vaata [$1 katsetamise dokumentatsiooni] asukohas mediawiki.org.",
        "tooltip-pt-userpage": "Sinu kasutajaleht",
        "tooltip-pt-anonuserpage": "Sinu IP-aadressi kasutajalehekülg",
        "version-libraries-description": "Kirjeldus",
        "version-libraries-authors": "Autorid",
        "redirect": "Ümbersuunamine faili, kasutaja, lehekülje või redaktsiooni identifikaatori järgi",
-       "redirect-legend": "Ümbersuunamine faili juurde või leheküljele",
        "redirect-summary": "See erilehekülg suunab ümber faili (toodud failinimi), lehekülje (toodud redaktsiooni või lehekülje identifikaator) või kasutajalehekülje (toodud numbriline kasutaja identfikaator) juurde. Kasutamine: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] või [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Mine",
        "redirect-lookup": "Leia:",
        "redirect-not-exists": "Väärtust ei leitud",
        "fileduplicatesearch": "Faili duplikaatide otsimine",
        "fileduplicatesearch-summary": "Otsi duplikaatfaile nende räsiväärtuse järgi.",
-       "fileduplicatesearch-legend": "Duplikaadi otsimine",
        "fileduplicatesearch-filename": "Faili nimi:",
        "fileduplicatesearch-submit": "Otsi",
        "fileduplicatesearch-info": "$1 × $2 pikslit<br />Faili suurus: $3<br />MIME-tüüp: $4",
index 09c8349..9531e2c 100644 (file)
        "categories-submit": "Erakutsi",
        "categoriespagetext": "Ondorengo {{PLURAL:$1|kategoria honek|kategoria hauek}} orriak edo fitxategiak {{PLURAL:$1|dauzka|dauzkate}}.\n[[Special:UnusedCategories|Erabili gabeko kategoriak]] ez dira hemen erakusten.\nIkus, gainera, [[Special:WantedCategories|kategoriarik eskatuenak]].",
        "categoriesfrom": "Honela hasten diren kategoriak erakutsi:",
-       "special-categories-sort-count": "kontatetzearen arabera ordenatu",
-       "special-categories-sort-abc": "alfabetikoki aldatu",
        "deletedcontributions": "Ezabatutako ekarpenak",
        "deletedcontributions-title": "Ezabatutako ekarpenak",
        "sp-deletedcontributions-contribs": "ekarpenak",
index ea5fb44..93d25bf 100644 (file)
        "allpages-bad-ns": "{{SITENAME}} nu tieni el espaciu e nombris \"$1\".",
        "categories": "Categorias",
        "categoriespagetext": "Las siguientis categorias contienin artículus u archivus murtimeya.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
-       "special-categories-sort-count": "ordenal pol cuenta",
-       "special-categories-sort-abc": "ordenal alfabeticamenti",
        "deletedcontributions": "Contribucionis el usuáriu esborrás",
        "deletedcontributions-title": "Contribucionis el usuáriu esborrás",
        "linksearch": "Atihus estelnus",
        "version-software-product": "Proutu",
        "version-software-version": "Velsión",
        "fileduplicatesearch": "Landeal archivus dupricaus",
-       "fileduplicatesearch-legend": "Landeal dupricaus",
        "fileduplicatesearch-filename": "Nombri el archivu:",
        "fileduplicatesearch-submit": "Landeal",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />Grandol del archivu: $3<br />Crasi MIME: $4",
index 1a4c120..4868e64 100644 (file)
@@ -51,7 +51,8 @@
                        "Mahdy Saffar",
                        "Arian Ar",
                        "Ms96",
-                       "Freshman404"
+                       "Freshman404",
+                       "Hamisun"
                ]
        },
        "tog-underline": "خط کشیدن زیر پیوندها:",
        "categories-submit": "نمایش",
        "categoriespagetext": "{{PLURAL:$1|ردهٔ|رده‌های}} زیر دارای صفحات یا پرونده‌هایی {{PLURAL:$1|است|هستند}}.\n[[Special:UnusedCategories|رده‌های استفاده‌نشده]] در اینجا نمایش داده نشده‌اند.\nهمچنین [[Special:WantedCategories|رده‌های مورد نیاز]] را ببینید.",
        "categoriesfrom": "نمایش رده‌ها با شروع از:",
-       "special-categories-sort-count": "مرتب کردن بر اساس تعداد",
-       "special-categories-sort-abc": "مرتب کردن الفبایی",
        "deletedcontributions": "مشارکت‌های حذف‌شده",
        "deletedcontributions-title": "مشارکت‌های حذف‌شده",
        "sp-deletedcontributions-contribs": "مشارکت‌ها",
        "special-characters-group-ipa": "آوانگاری بین‌المللی",
        "special-characters-group-symbols": "نمادها",
        "special-characters-group-greek": "یونانی",
+       "special-characters-group-greekextended": "یونانی قدیمی",
        "special-characters-group-cyrillic": "سیریلیک",
        "special-characters-group-arabic": "عربی",
        "special-characters-group-arabicextended": "عربی گسترش‌یافته",
        "randomrootpage": "صفحهٔ ریشهٔ تصادفی",
        "log-action-filter-block": "نوع بسته شدن:",
        "log-action-filter-delete": "نوع حذف:",
+       "log-action-filter-import": "نوع واردات",
+       "log-action-filter-managetags": "نوع مدیریت",
+       "log-action-filter-move": "نوع حرکت",
+       "log-action-filter-newusers": "نوع ایجاد حساب",
        "log-action-filter-patrol": "نوع گشت:",
        "log-action-filter-protect": "نوع محافظت",
+       "log-action-filter-rights": "روش تغییر صحیح",
+       "log-action-filter-suppress": "روش سرکوب",
        "log-action-filter-upload": "نوع بارگذاری",
        "log-action-filter-all": "همه",
        "log-action-filter-block-block": "بستن",
+       "log-action-filter-block-reblock": "تصحیح بلاک",
        "log-action-filter-block-unblock": "باز شدن",
+       "log-action-filter-contentmodel-change": "تغییر نوع محتوا",
        "log-action-filter-delete-delete": "حذف صفحه",
        "log-action-filter-delete-restore": "احیای صفحه",
        "log-action-filter-delete-event": "حذف سیاهه",
+       "log-action-filter-delete-revision": "حذف ویرایش",
+       "log-action-filter-import-interwiki": "ورودی ترانسویکی",
+       "log-action-filter-managetags-create": "ایجاد تگ",
+       "log-action-filter-managetags-delete": "حذف کردن تگ",
+       "log-action-filter-managetags-activate": "فعالسازی تگ",
+       "log-action-filter-managetags-deactivate": "تغییر تگ",
+       "log-action-filter-newusers-create": "ایجاد شده توسط کاربر ناشناس",
+       "log-action-filter-newusers-create2": "ایجاد شده توسط کاربر ثبت نام شده",
+       "log-action-filter-newusers-autocreate": "ایجاد خودکار",
+       "log-action-filter-newusers-byemail": "ایجاد پسورد با ارسال به ایمیل",
        "log-action-filter-patrol-autopatrol": "گشت خودکار",
        "log-action-filter-protect-protect": "محافظت",
+       "log-action-filter-protect-modify": "اصلاح حفاظت",
        "log-action-filter-protect-unprotect": "خروج از محافظت",
+       "log-action-filter-protect-move_prot": "حرکت محافظت شده",
+       "log-action-filter-rights-rights": "تغیبر دستی",
+       "log-action-filter-rights-autopromote": "تغییر اتوماتیک",
+       "log-action-filter-suppress-event": "جلوگیری از ورود",
+       "log-action-filter-suppress-revision": "جلوگیری از ویرایش",
+       "log-action-filter-suppress-delete": "متوقف سازی صفحه",
+       "log-action-filter-upload-upload": "بارگذاری جدید",
        "log-action-filter-upload-overwrite": "بارگذاری دوباره"
 }
index a5d794e..0c85420 100644 (file)
        "categories-submit": "Näytä",
        "categoriespagetext": "{{PLURAL:$1|Seuraava luokka sisältää|Seuraavat luokat sisältävät}} sivuja tai mediatiedostoja.\n[[Special:UnusedCategories|Käyttämättömiä luokkia]] ei näytetä.\nKatso myös [[Special:WantedCategories|halutut luokat]].",
        "categoriesfrom": "Näytä alkaen luokasta",
-       "special-categories-sort-count": "järjestä koon mukaan",
-       "special-categories-sort-abc": "järjestä nimen mukaan",
        "deletedcontributions": "Poistetut muokkaukset",
        "deletedcontributions-title": "Poistetut muokkaukset",
        "sp-deletedcontributions-contribs": "muokkaukset",
        "api-error-unknownerror": "Tuntematon virhe: $1.",
        "api-error-uploaddisabled": "Tiedostojen tallentaminen ei ole käytössä.",
        "api-error-verification-error": "Tiedosto voi olla vioittunut, tai sillä saattaa olla väärä tiedostopääte.",
+       "api-error-was-deleted": "Tämänniminen tiedosto on aikaisemmin tallennettu ja sittemmin poistettu.",
        "duration-seconds": "$1 {{PLURAL:$1|sekunti|sekuntia}}",
        "duration-minutes": "$1 {{PLURAL:$1|minuutti|minuuttia}}",
        "duration-hours": "$1 {{PLURAL:$1|tunti|tuntia}}",
        "sessionprovider-nocookies": "Evästeet on voitu poistaa käytöstä. Varmista, että sinulla on evästeet käytössä ja yritä sitten uudelleen.",
        "randomrootpage": "Satunnainen juurisivu",
        "log-action-filter-block": "Eston tyyppi:",
+       "log-action-filter-contentmodel": "Sisältömallin muutoksen tyyppi:",
        "log-action-filter-delete": "Poiston tyyppi:",
+       "log-action-filter-import": "Tuonnin tyyppi:",
+       "log-action-filter-managetags": "Merkkausten hallintatoimenpiteen tyyppi:",
+       "log-action-filter-move": "Siirron tyyppi:",
+       "log-action-filter-newusers": "Käyttäjätunnuksen luomisen tyyppi:",
        "log-action-filter-patrol": "Tarkastuksen tyyppi:",
        "log-action-filter-protect": "Suojauksen tyyppi:",
+       "log-action-filter-rights": "Käyttöoikeuksien muutoksen tyyppi:",
+       "log-action-filter-suppress": "Häivyttämisen tyyppi:",
        "log-action-filter-upload": "Tallennuksen tyyppi:",
        "log-action-filter-all": "Kaikki",
        "log-action-filter-block-block": "Eston asettaminen",
        "log-action-filter-block-reblock": "Estoasetusten muuttaminen",
        "log-action-filter-block-unblock": "Eston poistaminen",
+       "log-action-filter-contentmodel-change": "Sisältömallin muuttaminen",
        "log-action-filter-delete-delete": "Sivun poistaminen",
        "log-action-filter-delete-restore": "Sivun palauttaminen",
        "log-action-filter-delete-event": "Lokimerkinnän poistaminen",
        "log-action-filter-delete-revision": "Version piilottaminen",
+       "log-action-filter-import-interwiki": "Tuonti wikien välillä",
+       "log-action-filter-import-upload": "Tuonti XML-tallennuksella",
+       "log-action-filter-managetags-create": "Merkkauksen luominen",
+       "log-action-filter-managetags-delete": "Merkkauksen tuhoaminen",
+       "log-action-filter-managetags-activate": "Merkkauksen ottaminen käyttöön",
+       "log-action-filter-managetags-deactivate": "Merkkauksen poistaminen käytöstä",
+       "log-action-filter-move-move": "Siirto ilman että ohjaussivu korvataan",
+       "log-action-filter-move-move_redir": "Siirto joka korvaa ohjauksen",
+       "log-action-filter-newusers-create": "Luonut rekisteröimätön käyttäjä",
+       "log-action-filter-newusers-create2": "Luonut rekisteröity käyttäjä",
+       "log-action-filter-newusers-autocreate": "Luotu automaattisesti",
+       "log-action-filter-newusers-byemail": "Luotu salasanalla, joka on lähetetty sähköpostitse",
        "log-action-filter-protect-protect": "Suojauksen asettaminen",
        "log-action-filter-protect-modify": "Suojausasetusten muuttaminen",
        "log-action-filter-protect-unprotect": "Suojauksen poistaminen",
+       "log-action-filter-protect-move_prot": "Suojausasetusten siirtäminen",
+       "log-action-filter-rights-rights": "Käsin tehty muutos",
+       "log-action-filter-rights-autopromote": "Automaattinen muutos",
+       "log-action-filter-suppress-event": "Lokimerkinnän häivyttäminen",
+       "log-action-filter-suppress-revision": "Version häivyttäminen",
+       "log-action-filter-suppress-delete": "Sivun häivyttäminen",
+       "log-action-filter-suppress-block": "Käyttäjätunnuksen häivyttäminen estämällä se",
+       "log-action-filter-suppress-reblock": "Käyttäjätunnuksen häivyttäminen uudella estolla",
        "log-action-filter-upload-upload": "Uusi tallennus",
        "log-action-filter-upload-overwrite": "Päälletallennus"
 }
index 3ac44b1..972528e 100644 (file)
                        "Lbayle",
                        "Cl3m3n7",
                        "C13m3n7",
-                       "Gnangbade"
+                       "Gnangbade",
+                       "Frigory",
+                       "Lemondoge"
                ]
        },
        "tog-underline": "Soulignement des liens :",
        "tog-extendwatchlist": "Étendre la liste de suivi pour afficher toutes les modifications et pas uniquement les plus récentes",
        "tog-usenewrc": "Grouper les changements par page dans les modifications récentes et la liste de suivi",
        "tog-numberheadings": "Numéroter automatiquement les titres de section",
-       "tog-showtoolbar": "Afficher la barre d’outils de modification",
-       "tog-editondblclick": "Modifier des pages sur double-clic",
+       "tog-showtoolbar": "Afficher la barre d’outils d’édition",
+       "tog-editondblclick": "Modifier les pages avec un double-clic",
        "tog-editsectiononrightclick": "Activer la modification des sections par un clic droit sur les titres de section",
        "tog-watchcreations": "Ajouter à ma liste de suivi les pages que je crée et les fichiers que j’importe",
        "tog-watchdefault": "Ajouter à ma liste de suivi les pages et les fichiers que je modifie",
        "tog-watchmoves": "Ajouter à ma liste de suivi les pages et les fichiers que je renomme",
        "tog-watchdeletion": "Ajouter à ma liste de suivi les pages et les fichiers que je supprime",
+       "tog-watchuploads": "Ajouter les nouveaux fichiers que j’importe à ma liste de suivi",
        "tog-watchrollback": "Ajouter à ma liste de suivi les pages sur lesquelles j’ai effectué une révocation",
-       "tog-minordefault": "Marquer toutes mes modifications comme mineures par défaut",
-       "tog-previewontop": "Afficher la prévisualisation avant la zone de modification",
+       "tog-minordefault": "Marquer mes modifications comme étant mineures par défaut",
+       "tog-previewontop": "Afficher la prévisualisation avant la zone d’édition",
        "tog-previewonfirst": "Afficher la prévisualisation lors de la première modification",
-       "tog-enotifwatchlistpages": "M'avertir par courriel lorsqu'une page ou un fichier de ma liste de suivi est modifié",
-       "tog-enotifusertalkpages": "M'avertir par courriel si ma page de discussion est modifiée",
-       "tog-enotifminoredits": "M'avertir par courriel également lors des modifications mineures des pages ou des fichiers",
-       "tog-enotifrevealaddr": "Afficher mon adresse de courriel dans les courriels de notification",
-       "tog-shownumberswatching": "Afficher le nombre d'utilisateurs qui suivent la page",
+       "tog-enotifwatchlistpages": "M’avertir par courriel lorsqu’une page ou un fichier de ma liste de suivi est modifié",
+       "tog-enotifusertalkpages": "Mavertir par courriel si ma page de discussion est modifiée",
+       "tog-enotifminoredits": "Mavertir par courriel également lors des modifications mineures des pages ou des fichiers",
+       "tog-enotifrevealaddr": "Afficher mon adresse électronique dans les courriels de notification",
+       "tog-shownumberswatching": "Afficher le nombre dutilisateurs qui suivent la page",
        "tog-oldsig": "Signature existante :",
        "tog-fancysig": "Traiter la signature comme du wikitexte (sans lien automatique)",
        "tog-uselivepreview": "Utiliser l’aperçu rapide",
-       "tog-forceeditsummary": "M'avertir lorsque je n'ai pas spécifié de résumé de modification",
+       "tog-forceeditsummary": "M’avertir lorsque je n’ai pas spécifié de résumé de modification",
        "tog-watchlisthideown": "Masquer mes propres modifications dans la liste de suivi",
        "tog-watchlisthidebots": "Masquer les modifications faites par des robots dans la liste de suivi",
        "tog-watchlisthideminor": "Masquer les modifications mineures dans la liste de suivi",
        "tog-watchlisthideliu": "Masquer les modifications faites par des utilisateurs inscrits dans la liste de suivi",
        "tog-watchlistreloadautomatically": "Recharger automatiquement la liste de suivi lorsque les options de filtrage sont modifiées (JavaScript requis)",
-       "tog-watchlisthideanons": "Masquer les modifications d'utilisateurs anonymes dans la liste de suivi",
+       "tog-watchlisthideanons": "Masquer les modifications dutilisateurs anonymes dans la liste de suivi",
        "tog-watchlisthidepatrolled": "Masquer les modifications relues dans la liste de suivi",
        "tog-watchlisthidecategorization": "Masquer la catégorisation des pages",
-       "tog-ccmeonemails": "M'envoyer une copie des courriels que j'envoie aux autres utilisateurs",
+       "tog-ccmeonemails": "M’envoyer une copie des courriels que j’envoie aux autres utilisateurs",
        "tog-diffonly": "Ne pas afficher le contenu des pages sous les diffs",
        "tog-showhiddencats": "Afficher les catégories cachées",
        "tog-norollbackdiff": "Ne pas afficher le diff après avoir révoqué",
-       "tog-useeditwarning": "M'avertir quand je quitte une page de modification sans publier les changements",
-       "tog-prefershttps": "Toujours utiliser une connexion sécurisée en étant connecté(e)",
+       "tog-useeditwarning": "Mavertir quand je quitte une page de modification sans publier les changements",
+       "tog-prefershttps": "Conserver une connexion sécurisée une fois connecté(e)",
        "underline-always": "Toujours",
        "underline-never": "Jamais",
-       "underline-default": "Valeur par défaut du navigateur ou du thème",
-       "editfont-style": "Style de police de la zone de modification :",
+       "underline-default": "Valeur par défaut du thème ou du navigateur",
+       "editfont-style": "Style de police de la zone d’édition :",
        "editfont-default": "Police par défaut du navigateur",
        "editfont-monospace": "Police à chasse fixe",
        "editfont-sansserif": "Police sans-serif",
        "oct": "oct",
        "nov": "nov",
        "dec": "déc",
-       "january-date": "$1 janvier",
-       "february-date": "$1 février",
-       "march-date": "$1 mars",
-       "april-date": "$1 avril",
-       "may-date": "$1 mai",
-       "june-date": "$1 juin",
-       "july-date": "$1 juillet",
-       "august-date": "$1 août",
-       "september-date": "$1 septembre",
-       "october-date": "$1 octobre",
-       "november-date": "$1 novembre",
-       "december-date": "$1 décembre",
+       "january-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} janvier",
+       "february-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} février",
+       "march-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} mars",
+       "april-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} avril",
+       "may-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} mai",
+       "june-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} juin",
+       "july-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} juillet",
+       "august-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} août",
+       "september-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} septembre",
+       "october-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} octobre",
+       "november-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} novembre",
+       "december-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} décembre",
        "period-am": "AM",
        "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Catégorie|Catégories}}",
        "category_header": "Pages dans la catégorie « $1 »",
        "subcategories": "Sous-catégories",
        "category-media-header": "Média dans la catégorie « $1 »",
-       "category-empty": "<em>Cette catégorie ne contient aucune page ou fichier multimédia.</em>",
+       "category-empty": "<em>Cette catégorie ne contient actuellement aucune page ni fichier multimédia.</em>",
        "hidden-categories": "{{PLURAL:$1|Catégorie cachée|Catégories cachées}}",
        "hidden-category-category": "Catégories cachées",
-       "category-subcat-count": "Cette catégorie comprend {{PLURAL:$2|la sous-catégorie|$2 sous-catégories, dont {{PLURAL:$1|celle|les $1}}}} ci-dessous.",
+       "category-subcat-count": "Cette catégorie {{PLURAL:$2|0=ne comprend aucune sous-catégorie|1=comprend seulement la sous-catégorie ci-dessous|comprend les $2 sous-catégories, dont {{PLURAL:$1|0=aucune|1=celle|les $1}} ci-dessous}}.",
        "category-subcat-count-limited": "Cette catégorie comprend {{PLURAL:$1|la sous-catégorie|les $1 sous-catégories}} ci-dessous.",
-       "category-article-count": "Cette catégorie contient {{PLURAL:$2|seulement la page suivante|$2 pages, dont {{PLURAL:$1|celle|les $1}} ci-dessous}}.",
-       "category-article-count-limited": "{{PLURAL:$1|La page suivante figure|Les $1 pages suivantes figurent}} dans la présente catégorie.",
-       "category-file-count": "Cette catégorie contient {{PLURAL:$2|le fichier suivant|$2 fichiers, dont {{PLURAL:$1|celui|les $1}} ci-dessous}}.",
-       "category-file-count-limited": "{{PLURAL:$1|Le fichier suivant figure|Les $1 fichiers suivants figurent}} dans la présente catégorie.",
+       "category-article-count": "Cette catégorie {{PLURAL:$2|0=ne comprend aucune page|1=comprend seulement la page ci-dessous|comprend $2 pages, dont {{PLURAL:$1|0=aucune|1=celle|les $1}} ci-dessous}}.",
+       "category-article-count-limited": "{{PLURAL:$1|0=Aucune page ne figure|1=La page suivante figure|Les $1 pages suivantes figurent}} dans la présente catégorie.",
+       "category-file-count": "Cette catégorie {{PLURAL:$2|0=ne comprend aucun fichier|1=comprend le fichier suivant|comprend $2 fichiers, dont {{PLURAL:$1|0=aucun|1=celui|les $1}} ci-dessous}}.",
+       "category-file-count-limited": "{{PLURAL:$1|0=Aucun fichier ne figure|1=Le fichier suivant figure|Les $1 fichiers suivants figurent}} dans la présente catégorie.",
        "listingcontinuesabbrev": "(suite)",
        "index-category": "Pages indexées",
        "noindex-category": "Pages non indexées",
        "redirectpagesub": "Page de redirection",
        "redirectto": "Rediriger vers :",
        "lastmodifiedat": "Dernière modification de cette page le $1, à $2.",
-       "viewcount": "Cette page a été consultée {{PLURAL:$1|une fois|$1 fois}}.",
+       "viewcount": "Cette page {{PLURAL:$1|0=n’a jamais été consultée|1=a été consultée une seule fois|a été consultée $1 fois}}.",
        "protectedpage": "Page protégée",
        "jumpto": "Aller à :",
        "jumptonavigation": "navigation",
        "jumptosearch": "rechercher",
-       "view-pool-error": "Désolé, les serveurs sont surchargés en ce moment.\nTrop d'utilisateurs cherchent à consulter cette page.\nVeuillez attendre un moment avant de retenter l'accès à celle ci.\n$1",
-       "generic-pool-error": "Désolé, les serveurs sont surchargés pour le moment.\nTrop d’utilisateurs essayent de consulter cette ressource.\nVeuillez attendre un peu avant de réessayer d’accéder à celle-ci.",
-       "pool-timeout": "Délai d'attente dépassé",
-       "pool-queuefull": "La file d'attente est pleine",
+       "view-pool-error": "Désolé, les serveurs sont surchargés en ce moment.\nTrop d’utilisateurs cherchent à consulter cette page.\nVeuillez attendre un peu avant de réessayer d’accéder à celle-ci.\n\n$1",
+       "generic-pool-error": "Désolé, les serveurs sont surchargés en ce moment.\nTrop d’utilisateurs cherchent à consulter cette ressource.\nVeuillez attendre un peu avant de tenter à nouveau l’accès à celle-ci.",
+       "pool-timeout": "Délai d’attente du verrou dépassé",
+       "pool-queuefull": "La file des processus est pleine",
        "pool-errorunknown": "Erreur inconnue",
-       "pool-servererror": "Le service de comptage de la réserve n’est pas disponible ($1).",
+       "pool-servererror": "Le service de réservation n’est pas disponible ($1).",
        "poolcounter-usage-error": "Erreur d’utilisation : $1",
        "aboutsite": "À propos de {{SITENAME}}",
        "aboutpage": "Project:À propos",
        "privacypage": "Project:Confidentialité",
        "badaccess": "Erreur de permissions",
        "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.",
+       "badaccess-groups": "L’action que vous essayez de réaliser n’est permise qu’aux utilisateurs {{PLURAL:$2|du groupe|dun des groupes}} : $1.",
        "versionrequired": "Version $1 de MediaWiki nécessaire",
        "versionrequiredtext": "La version $1 de MediaWiki est nécessaire pour utiliser cette page.\nConsultez [[Special:Version|la page des versions]].",
        "ok": "Valider",
        "nstab-category": "Catégorie",
        "mainpage-nstab": "Accueil",
        "nosuchaction": "Action inconnue",
-       "nosuchactiontext": "L’action spécifiée dans l’URL est invalide.\nVous avez peut-être mal entré l’URL ou suivi un lien erroné.\nIl peut également s’agir d’un bogue dans le logiciel utilisé par {{SITENAME}}.",
+       "nosuchactiontext": "L’action spécifiée dans l’URL est invalide.\nVous avez peut-être mal entré l’URL ou suivi un lien erroné.\nIl peut également s’agir d’une anomalie dans le logiciel utilisé par {{SITENAME}}.",
        "nosuchspecialpage": "Page spéciale inexistante",
-       "nospecialpagetext": "<strong>Vous avez demandé une page spéciale qui n'existe pas.</strong>\n\nUne liste des pages spéciales valides se trouve sur [[Special:SpecialPages|{{int:specialpages}}]].",
+       "nospecialpagetext": "<strong>Vous avez demandé une page spéciale qui nexiste pas.</strong>\n\nUne liste des pages spéciales valides se trouve sur [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Erreur",
        "databaseerror": "Erreur de la base de données",
-       "databaseerror-text": "Une erreur de requête de base de données s'est produite. Cela peut provenir d'un bogue dans le logiciel.",
-       "databaseerror-textcl": "Une erreur de requête de base de données s'est produite.",
+       "databaseerror-text": "Une erreur de requête de base de données s’est produite.\nCela peut provenir d’une anomalie dans le logiciel.",
+       "databaseerror-textcl": "Une erreur de requête de base de données sest produite.",
        "databaseerror-query": "Requête : $1",
        "databaseerror-function": "Fonction : $1",
        "databaseerror-error": "Erreur : $1",
-       "transaction-duration-limit-exceeded": "Pour éviter une trop forte augmentation du délai de réplication, cette transaction a été annulée car la durée d’écriture ($1) a dépassé la limite de {{PLURAL:$2|seconde|secondes}}. Si vous cherchez à modifier un grand nombre d’éléments simultanément, essayez plutôt d’effectuer l’opération en plusieurs étapes.",
+       "transaction-duration-limit-exceeded": "Pour éviter une trop forte augmentation du délai de réplication, cette transaction a été annulée car la durée d’écriture ($1) a dépassé la limite de $2 seconde{{PLURAL:$2||s}}. Si vous cherchez à modifier un grand nombre d’éléments simultanément, essayez plutôt d’effectuer l’opération en plusieurs étapes.",
        "laggedslavemode": "Attention, cette page peut ne pas contenir les toutes dernières modifications effectuées",
        "readonly": "Base de données verrouillée",
-       "enterlockreason": "Indiquez la raison du verrouillage ainsi qu'une estimation de sa durée",
-       "readonlytext": "Les ajouts et mises à jour de la base de données sont actuellement bloqués, probablement pour permettre la maintenance de la base, après quoi, tout rentrera dans l'ordre.\n\nL'administrateur système ayant verrouillé la base de données a fourni l'explication suivante :<br />$1",
-       "missing-article": "La base de données n’a pas trouvé le texte d’une page qu’elle aurait dû trouver, intitulée « $1 » $2.\n\nGénéralement, cela survient en suivant un lien vers un diff périmé ou vers l’historique d’une page supprimée.\n\nSi ce n’est pas le cas, il peut s’agir d’un bogue dans le programme.\nVeuillez le signaler à un [[Special:ListUsers/sysop|administrateur]] sans oublier de lui indiquer l’URL du lien.",
+       "enterlockreason": "Indiquez la raison du verrouillage ainsi quune estimation de sa durée",
+       "readonlytext": "Les ajouts et mises à jour de la base de données sont actuellement bloqués, probablement pour permettre la maintenance de la base, après quoi, tout rentrera dans l’ordre.\n\nL’administrateur système ayant verrouillé la base de données a fourni l’explication suivante :<br /> $1",
+       "missing-article": "La base de données n’a pas trouvé le texte d’une page qu’elle aurait dû trouver, intitulée « $1 » $2.\n\nGénéralement, cela survient en suivant un lien vers un diff périmé ou vers l’historique d’une page supprimée.\n\nSi ce n’est pas le cas, il peut s’agir d’une anomalie dans le programme.\nVeuillez la signaler à un [[Special:ListUsers/sysop|administrateur]] sans oublier de lui indiquer l’URL de la page.",
        "missingarticle-rev": "(numéro de version : $1)",
        "missingarticle-diff": "(diff : $1, $2)",
        "readonly_lag": "La base de données a été automatiquement verrouillée pendant que les serveurs secondaires rattrapent leur retard sur le serveur principal.",
-       "nonwrite-api-promise-error": "L’entête HTTP 'Promise-Non-Write-API-Action' a été envoyé mais la requête a été faite à un module d’écriture de l’API.",
+       "nonwrite-api-promise-error": "L’entête HTTP « <code>Promise-Non-Write-API-Action:<code> » a été envoyé mais la requête a été faite à un module d’écriture de l’API.",
        "internalerror": "Erreur interne",
        "internalerror_info": "Erreur interne : $1",
        "internalerror-fatal-exception": "Erreur fatale de type « $1 »",
        "directorynotreadableerror": "Le répertoire « $1 » n’est pas lisible.",
        "filenotfound": "Impossible de trouver le fichier « $1 ».",
        "unexpected": "Valeur inattendue : « $1 » = « $2 ».",
-       "formerror": "Erreur : Impossible de soumettre le formulaire.",
+       "formerror": "Erreur : impossible de soumettre le formulaire.",
        "badarticleerror": "Cette action ne peut pas être effectuée sur cette page.",
        "cannotdelete": "Impossible de supprimer la page ou le fichier « $1 ».\nLa suppression a peut-être déjà été effectuée par quelqu’un d’autre.",
        "cannotdelete-title": "Impossible de supprimer la page « $1 »",
-       "delete-hook-aborted": "Suppression annulée par une extension.\nAucune explication n'a été fournie.",
+       "delete-hook-aborted": "Suppression annulée par une extension.\nAucune explication na été fournie.",
        "no-null-revision": "Impossible de créer une nouvelle révision vide pour la page « $1 »",
        "badtitle": "Mauvais titre",
-       "badtitletext": "Le titre de la page demandée est invalide, vide, ou il s’agit d’un titre inter-langue ou inter-projet mal formé. Il contient peut-être un ou plusieurs caractères qui ne peuvent pas être utilisés dans les titres.",
-       "title-invalid-empty": "Le titre de la page demandée est vide ou contient seulement le nom d'un espace de noms.",
+       "badtitletext": "Le titre de la page demandée est non valide, vide, ou mal formé s’il s’agit d’un titre inter-langue ou inter-projet.\nIl contient peut-être un ou plusieurs caractères qui ne peuvent pas être utilisés dans les titres.",
+       "title-invalid-empty": "Le titre de la page demandée est vide ou contient seulement le nom dun espace de noms.",
        "title-invalid-utf8": "Le titre de la page demandée contient une séquence UTF-8 invalide.",
        "title-invalid-interwiki": "La page cible contient un lien interwiki ne pouvant être utilisé dans les titres.",
        "title-invalid-talk-namespace": "Le titre de la page demandée fait référence à une page de discussion qui peut ne pas exister.",
        "title-invalid-characters": "Le titre de la page demandée contient des caractères non valides : « $1 ».",
-       "title-invalid-relative": "Le titre contient un chemin relatif. Les titres référençant des pages relatives (./, ../) sont invalides, car il seront souvent inaccessibles à partir des explorateurs des utilisateurs.",
-       "title-invalid-magic-tilde": "Le titre de la page demandée contient une séquence invalide de tilde magiques (<nowiki>~~~</nowiki>).",
-       "title-invalid-too-long": "La demande de titre de la page est trop longue. Il ne doit pas être de plus de $1 {{PLURAL:$1|octets|bytes}} dans l'encodage UTF-8.",
+       "title-invalid-relative": "Le titre contient un chemin relatif. Les titres référençant des pages relatives (./, ../) sont non valides car il seront souvent inaccessibles pour certains explorateurs des utilisateurs.",
+       "title-invalid-magic-tilde": "Le titre de la page demandée contient une séquence de tilde magiques non valide (<nowiki>~~~</nowiki>).",
+       "title-invalid-too-long": "La titre de la page demandée est trop long. Il ne doit pas dépasser $1 {{PLURAL:$1|octet|octets}} dans l’encodage UTF-8.",
        "title-invalid-leading-colon": "Le titre de la page demandée contient un deux-points invalide au début.",
-       "perfcached": "Les données suivantes sont en cache et peuvent ne pas être à jour. Un maximum de {{PLURAL:$1|un résultat|$1 résultats}} est disponible dans le cache.",
-       "perfcachedts": "Les données suivantes sont en cache et ont été mises à jour pour la dernière fois le $1. Un maximum de {{PLURAL:$4|un résultat est disponible|$4 résultats sont disponibles}} dans le cache.",
-       "querypage-no-updates": "Les mises à jour pour cette page sont actuellement désactivées. Les données ci-dessous ne sont pas mises à jour.",
+       "perfcached": "Les données suivantes sont en cache et peuvent ne pas être à jour. Un maximum de {{PLURAL:$1|1=un résultat|$1 résultats}} est disponible dans le cache.",
+       "perfcachedts": "Les données suivantes sont en cache et ont été mises à jour pour la dernière fois le $1. Un maximum de {{PLURAL:$4|1=un résultat est disponible|$4 résultats sont disponibles}} dans le cache.",
+       "querypage-no-updates": "Les mises à jour pour cette page sont actuellement désactivées.\nLes données ci-dessous ne seront pas mises à jour.",
        "viewsource": "Voir le texte source",
        "viewsource-title": "Voir la source de $1",
        "actionthrottled": "Action limitée",
-       "actionthrottledtext": "Pour lutter contre les abus, l’utilisation de cette action est limitée à un certain nombre de fois dans un laps de temps assez court. Il s’avère que vous avez dépassé cette limite.\nEssayez à nouveau dans quelques minutes.",
-       "protectedpagetext": "Cette page a été protégée pour empêcher sa modification ou d'autres actions.",
+       "actionthrottledtext": "Pour lutter contre les abus, l’utilisation de cette action est limitée à un certain nombre de fois dans un laps de temps assez court et vous avez dépassé cette limite.\nVeuillez essayer à nouveau dans quelques minutes.",
+       "protectedpagetext": "Cette page a été protégée pour empêcher sa modification ou dautres actions.",
        "viewsourcetext": "Vous pouvez voir et copier le contenu de cette page.",
        "viewyourtext": "Vous pouvez voir et copier le contenu de <strong>vos modifications</strong> à cette page.",
-       "protectedinterface": "Cette page fournit du texte d'interface pour le logiciel sur ce wiki, et est protégée pour éviter les abus.\nPour ajouter ou modifier des traductions sur tous les wikis, veuillez utiliser [//translatewiki.net/ translatewiki.net], le projet de localisation de MediaWiki.",
+       "protectedinterface": "Cette page fournit du texte d’interface pour le logiciel sur ce wiki et est protégée pour éviter les abus.\nPour ajouter ou modifier des traductions sur tous les wikis, veuillez utiliser [//translatewiki.net/ translatewiki.net], le projet de localisation de MediaWiki.",
        "editinginterface": "<strong>Attention :</strong> vous êtes en train de modifier une page utilisée pour créer le texte de l’interface du logiciel.\nLes changements sur cette page se répercuteront sur l’apparence de l’interface utilisateur pour les autres utilisateurs de ce wiki.",
        "translateinterface": "Pour ajouter ou modifier des traductions pour tous les wikis, veuillez utiliser [//translatewiki.net/ translatewiki.net], le projet de localisation de MediaWiki.",
        "cascadeprotected": "Cette page est protégée contre les modifications car elle est transcluse par {{PLURAL:$1|la page suivante, qui a été protégée|les pages suivantes, qui ont été protégées}} avec l’option « protection en cascade » activée :\n$2",
-       "namespaceprotected": "Vous n'avez pas la permission de modifier les pages de l'espace de noms « '''$1''' ».",
-       "customcssprotected": "Vous n'avez pas la permission de modifier cette page de CSS, car elle contient les paramètres personnels d'un autre utilisateur.",
-       "customjsprotected": "Vous n'avez pas la permission de modifier cette page de JavaScript, car elle contient les paramètres personnels d'un autre utilisateur.",
+       "namespaceprotected": "Vous n’avez pas la permission de modifier les pages de l’espace de noms « <strong>$1</strong> ».",
+       "customcssprotected": "Vous n’avez pas la permission de modifier cette page de CSS, car elle contient les paramètres personnels d’un autre utilisateur.",
+       "customjsprotected": "Vous n’avez pas la permission de modifier cette page de JavaScript, car elle contient les paramètres personnels d’un autre utilisateur.",
        "mycustomcssprotected": "Vous n’avez pas le droit de modifier cette page CSS.",
        "mycustomjsprotected": "Vous n’avez pas le droit de modifier cette page JavaScript.",
-       "myprivateinfoprotected": "Vous n’avez pas les droits pour modifier vos informations personnelles.",
-       "mypreferencesprotected": "Vous n’avez pas les droits pour modifier vos préférences.",
-       "ns-specialprotected": "Les pages dans l'espace de noms « {{ns:special}} » ne peuvent pas être modifiées.",
-       "titleprotected": "Ce titre a été protégé à la création par [[User:$1|$1]].\nLe motif fourni est <em>$2</em>.",
-       "filereadonlyerror": "Impossible de modifier le fichier « $1 » parce que le répertoire de fichiers « $2 » est en lecture seule.\n\nL'administrateur système qui l'a verrouillé a fourni ce motif : « $3 ».",
-       "invalidtitle-knownnamespace": "Titre invalide avec l'espace de noms « $2 » et l'intitulé « $3 »",
-       "invalidtitle-unknownnamespace": "Titre invalide avec le numéro d'espace de noms $1 et l'intitulé « $2 » inconnus",
+       "myprivateinfoprotected": "Vous n’avez pas le droit de modifier vos informations personnelles.",
+       "mypreferencesprotected": "Vous n’avez pas le droit de modifier vos préférences.",
+       "ns-specialprotected": "Les pages dans lespace de noms « {{ns:special}} » ne peuvent pas être modifiées.",
+       "titleprotected": "Ce titre a été protégé contre toute création par [[User:$1|$1]].\nLe motif fourni est <em>$2</em>.",
+       "filereadonlyerror": "Impossible de modifier le fichier « $1 » parce que le répertoire de fichiers « $2 » est en lecture seule.\n\nL’administrateur système qui l’a verrouillé a fourni ce motif : « $3 ».",
+       "invalidtitle-knownnamespace": "Titre non valide avec l’espace de noms « $2 » et l’intitulé « $3 »",
+       "invalidtitle-unknownnamespace": "Titre non valide avec le numéro d’espace de noms $1 inconnu et l’intitulé « $2 »",
        "exception-nologin": "Non connecté",
        "exception-nologin-text": "Veuillez vous connecter pour pouvoir accéder à cette page ou cette action.",
        "exception-nologin-text-manual": "Veuillez vous $1 pour pouvoir accéder à cette page ou cette action.",
-       "virus-badscanner": "Mauvaise configuration : scanneur de virus inconnu : ''$1''",
+       "virus-badscanner": "Mauvaise configuration : analyseur de virus inconnu : <em>$1</em>",
        "virus-scanfailed": "Échec de la recherche (code $1)",
        "virus-unknownscanner": "antivirus inconnu :",
-       "logouttext": "'''Vous êtes à présent déconnecté{{GENDER:||e}}.'''\n\nNotez que certaines pages peuvent être encore affichées comme si vous étiez toujours connecté, jusqu’à ce que vous effaciez le cache de votre navigateur.",
+       "logouttext": "<strong>Vous êtes à présent déconnecté{{GENDER:||e|(e)}}.</strong>\n\nNotez que certaines pages peuvent être encore affichées comme si vous étiez toujours connecté, jusqu’à ce que vous effaciez le cache de votre navigateur.",
        "cannotlogoutnow-title": "Impossible de se déconnecter maintenant",
        "cannotlogoutnow-text": "La déconnexion n’est pas possible en utilisant $1.",
-       "welcomeuser": "Bienvenue, $1&nbsp;!",
-       "welcomecreation-msg": "Votre compte a été créé.\nN'oubliez pas de modifier [[Special:Preferences|vos préférences pour {{SITENAME}}]].",
-       "yourname": "Nom d'utilisateur :",
-       "userlogin-yourname": "Nom d'utilisateur",
-       "userlogin-yourname-ph": "Entrez votre nom d'utilisateur",
-       "createacct-another-username-ph": "Saisir le nom d’utilisateur",
-       "yourpassword": "Mot de passe&nbsp;:",
+       "welcomeuser": "Bienvenue, $1 !",
+       "welcomecreation-msg": "Votre compte a été créé.\nVous pouvez modifier [[Special:Preferences|vos préférences pour {{SITENAME}}]] si vous le souhaitez.",
+       "yourname": "Nom dutilisateur :",
+       "userlogin-yourname": "Nom dutilisateur",
+       "userlogin-yourname-ph": "Entrez votre nom dutilisateur",
+       "createacct-another-username-ph": "Entrez le nom d’utilisateur",
+       "yourpassword": "Mot de passe :",
        "userlogin-yourpassword": "Mot de passe",
        "userlogin-yourpassword-ph": "Entrez votre mot de passe",
        "createacct-yourpassword-ph": "Entrez un mot de passe",
        "yourpasswordagain": "Confirmez le mot de passe :",
        "createacct-yourpasswordagain": "Confirmez le mot de passe",
        "createacct-yourpasswordagain-ph": "Entrez à nouveau le mot de passe",
-       "remembermypassword": "Me reconnecter automatiquement lors des prochaines visites avec ce navigateur (au maximum $1&nbsp;{{PLURAL:$1|jour|jours}})",
+       "remembermypassword": "Me reconnecter automatiquement lors des prochaines visites avec ce navigateur (durant au maximum $1 jour{{PLURAL:$1||s}})",
        "userlogin-remembermypassword": "Garder ma session active",
        "userlogin-signwithsecure": "Utiliser une connexion sécurisée",
        "cannotloginnow-title": "Impossible de se connecter maintenant",
        "cannotloginnow-text": "La connexion n’est pas possible en utilisant $1.",
        "yourdomainname": "Votre domaine :",
        "password-change-forbidden": "Vous ne pouvez pas modifier les mots de passe sur ce wiki.",
-       "externaldberror": "Une erreur s'est produite avec la base de données d'authentification externe, ou bien vous ne pouvez pas mettre à jour votre compte externe.",
+       "externaldberror": "Une erreur s’est produite sur la base de données d’authentification externe, ou bien vous n’êtes pas autorisé à mettre à jour votre compte externe.",
        "login": "Connexion",
        "nav-login-createaccount": "Créer un compte ou se connecter",
        "userlogin": "Créer un compte ou se connecter",
        "logout": "Se déconnecter",
        "userlogout": "Déconnexion",
        "notloggedin": "Non connecté",
-       "userlogin-noaccount": "Vous n'avez pas de compte ?",
+       "userlogin-noaccount": "Vous navez pas de compte ?",
        "userlogin-joinproject": "Rejoignez {{SITENAME}}",
-       "nologin": "Vous n'avez pas de compte ? $1.",
+       "nologin": "Vous navez pas de compte ? $1.",
        "nologinlink": "Créer un compte",
        "createaccount": "Créer un compte",
-       "gotaccount": "Vous avez déjà un compte ? '''$1'''.",
+       "gotaccount": "Vous avez déjà un compte ? $1.",
        "gotaccountlink": "Connectez-vous",
        "userlogin-resetlink": "Vous avez oublié vos détails de connexion ?",
        "userlogin-resetpassword-link": "Mot de passe oublié ?",
-       "userlogin-helplink2": "Aide à la connexion",
-       "userlogin-loggedin": "Vous êtes déjà connecté{{GENDER:$1||e}} en tant que {{GENDER:$1|$1}}.\nUtilisez le formulaire ci-dessous pour vous connecter avec un autre compte utilisateur.",
+       "userlogin-helplink2": "Aide pour se connecter",
+       "userlogin-loggedin": "Vous êtes déjà connecté{{GENDER:$1||e|(e)}} en tant que $1.\nUtilisez le formulaire ci-dessous pour vous connecter avec un autre compte utilisateur.",
        "userlogin-createanother": "Créer un autre compte",
        "createacct-emailrequired": "Adresse de courriel",
        "createacct-emailoptional": "Adresse de courriel (facultative)",
        "createacct-email-ph": "Entrez votre adresse de courriel",
-       "createacct-another-email-ph": "Saisir l’adresse de courriel",
+       "createacct-another-email-ph": "Entrez l’adresse de courriel",
        "createaccountmail": "Utiliser un mot de passe aléatoire temporaire et l’envoyer à l’adresse de courriel spécifiée",
        "createacct-realname": "Nom réel (facultatif)",
        "createaccountreason": "Motif :",
        "createacct-submit": "Créez votre compte",
        "createacct-another-submit": "Créer le compte",
        "createacct-benefit-heading": "{{SITENAME}} est écrit par des gens comme vous.",
-       "createacct-benefit-body1": "{{PLURAL:$1|modification|modifications}}",
-       "createacct-benefit-body2": "{{PLURAL:$1|article|articles}}",
+       "createacct-benefit-body1": "modification{{PLURAL:$1||s}}",
+       "createacct-benefit-body2": "page{{PLURAL:$1||s}}",
        "createacct-benefit-body3": "{{PLURAL:$1|contributeur récent|contributeurs récents}}",
        "badretype": "Les mots de passe que vous avez saisis ne correspondent pas.",
        "usernameinprogress": "Une création de compte pour ce nom d’utilisateur est déjà en cours.\nVeuillez patienter.",
-       "userexists": "Nom d'utilisateur entré déjà utilisé.\nVeuillez choisir un nom différent.",
+       "userexists": "Nom dutilisateur entré déjà utilisé.\nVeuillez choisir un nom différent.",
        "loginerror": "Erreur de connexion",
        "createacct-error": "Erreur lors de la création du compte",
        "createaccounterror": "Impossible de créer le compte : $1",
-       "nocookiesnew": "Le compte utilisateur a été créé, mais vous n'êtes pas connecté{{GENDER:||e}}. {{SITENAME}} utilise des cookies pour la connexion mais vous les avez désactivés. Veuillez les activer et vous reconnecter avec le même nom et le même mot de passe.",
-       "nocookieslogin": "{{SITENAME}} utilise des cookies pour la connexion mais vous les avez désactivés. Veuillez les activer et vous reconnecter.",
-       "nocookiesfornew": "Le compte utilisateur n'a pas été créé, car nous n'avons pas pu identifier son origine.\nVérifiez que vous avez activé les cookies, rechargez la page et réessayez.",
-       "noname": "Vous n'avez pas saisi un nom d'utilisateur valide.",
+       "nocookiesnew": "Le compte utilisateur a été créé, mais vous n’êtes pas connecté{{GENDER:||e|(e)}}.\n{{SITENAME}} utilise des cookies pour conserver la connexion mais vous les avez désactivés.\nVeuillez les activer et vous reconnecter avec le même nom et le même mot de passe.",
+       "nocookieslogin": "{{SITENAME}} utilise des cookies pour conserver la connexion mais vous les avez désactivés.\nVeuillez les activer et vous reconnecter.",
+       "nocookiesfornew": "Le compte utilisateur n’a pas été créé, car nous n’avons pas pu identifier son origine.\nVérifiez que vous avez activé les cookies, rechargez la page et essayez à nouveau.",
+       "noname": "Vous n’avez pas saisi un nom d’utilisateur valide.",
        "loginsuccesstitle": "Connecté",
-       "loginsuccess": "Vous êtes maintenant connecté{{GENDER:$1||e}} à {{SITENAME}} en tant que « $1 ».",
-       "nosuchuser": "L'utilisateur « $1 » n'existe pas.\nLes noms d'utilisateurs sont sensibles à la casse.\nVérifiez l'orthographe, ou [[Special:UserLogin/signup|créez un nouveau compte]].",
-       "nosuchusershort": "Il n'y a pas de contributeur avec le nom « $1 ». Veuillez vérifier l'orthographe.",
-       "nouserspecified": "Vous devez saisir un nom d'utilisateur.",
+       "loginsuccess": "Vous êtes maintenant connecté{{GENDER:$1||e|(e)}} à {{SITENAME}} en tant que « $1 ».",
+       "nosuchuser": "L'utilisateur « $1 » n’existe pas.\nLes noms d’utilisateurs sont sensibles à la casse.\nVérifiez l’orthographe, ou [[Special:UserLogin/signup|créez un nouveau compte]].",
+       "nosuchusershort": "Il n’y a pas de contributeur avec le nom « $1 ».\nVeuillez vérifier l’orthographe.",
+       "nouserspecified": "Vous devez saisir un nom dutilisateur.",
        "login-userblocked": "Cet utilisateur est bloqué. Connexion non autorisée.",
-       "wrongpassword": "Le mot de passe est incorrect. Veuillez essayer à nouveau.",
-       "wrongpasswordempty": "Vous n'avez pas entré de mot de passe. Veuillez essayer à nouveau.",
+       "wrongpassword": "Le mot de passe est incorrect.\nVeuillez essayer à nouveau.",
+       "wrongpasswordempty": "Vous n’avez entré aucun mot de passe.\nVeuillez essayer à nouveau.",
        "passwordtooshort": "Votre mot de passe doit contenir au moins $1 caractère{{PLURAL:$1||s}}.",
-       "passwordtoolong": "Les mots de passe ne peuvent pas dépasser {{PLURAL:$1|1 caractère|$1 caractères}}.",
+       "passwordtoolong": "Les mots de passe ne peuvent pas dépasser $1 caractère{{PLURAL:$1||s}}.",
        "passwordtoopopular": "Les mots de passe trop courants ne peuvent pas être utilisés. Veuillez choisir un mot de passe plus original.",
-       "password-name-match": "Votre mot de passe doit être différent de votre nom d'utilisateur.",
-       "password-login-forbidden": "L'utilisation de ce nom d'utilisateur et/ou de ce mot de passe a été interdite.",
+       "password-name-match": "Votre mot de passe doit être différent de votre nom dutilisateur.",
+       "password-login-forbidden": "L’utilisation de ce nom d’utilisateur et/ou de ce mot de passe a été interdite.",
        "mailmypassword": "Réinitialiser le mot de passe",
        "passwordremindertitle": "Nouveau mot de passe temporaire pour {{SITENAME}}",
-       "passwordremindertext": "Quelqu'un (probablement vous, ayant l'adresse IP $1) a demandé un nouveau mot de\npasse pour {{SITENAME}} ($4). Un mot de passe temporaire a été créé pour\nl'utilisateur « $2 » et est « $3 ». Si cela était votre intention, vous devrez\nvous connecter et choisir un nouveau mot de passe.\nVotre mot de passe temporaire expirera dans $5 jour{{PLURAL:$5||s}}.\n\nSi vous n'êtes pas l'auteur de cette demande, ou si vous vous souvenez à présent\nde votre ancien mot de passe et que vous ne souhaitez plus en changer, vous\npouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
-       "noemail": "Aucune adresse de courriel n'a été enregistrée pour l'utilisateur « $1 ».",
+       "passwordremindertext": "Quelqu’un (probablement vous, ayant l’adresse IP $1) a demandé un nouveau mot de\npasse pour {{SITENAME}} ($4). Un mot de passe temporaire pour l’utilisateur\n« $2 » a été créé et est « $3 ». Si cela était votre intention,\nvous devrez vous connecter et choisir un nouveau mot de passe.\nVotre mot de passe temporaire expirera dans $5 jour{{PLURAL:$5||s}}.\n\nSi vous n’êtes pas l’auteur de cette demande, ou si vous vous souvenez à présent de\nvotre mot de passe et ne souhaitez plus en changer, vous pouvez ignorer ce message\net continuer à utiliser votre ancien mot de passe.",
+       "noemail": "Aucune adresse de courriel na été enregistrée pour l'utilisateur « $1 ».",
        "noemailcreate": "Vous devez fournir une adresse de courriel valide",
-       "passwordsent": "Un nouveau mot de passe a été envoyé à l'adresse de courriel de l'utilisateur « $1 ». Veuillez vous reconnecter après l'avoir reçu.",
+       "passwordsent": "Un nouveau mot de passe a été envoyé à l’adresse de courriel de l’utilisateur « $1 ».\nVeuillez vous reconnecter après l’avoir reçu.",
        "blocked-mailpassword": "Votre adresse IP est bloquée pour la modification. Pour éviter les abus, il n’est pas autorisé d’utiliser la récupération de mot de passe à partir de cette adresse IP.",
        "eauthentsent": "Un courriel de confirmation a été envoyé à l’adresse indiquée.\nAvant qu’un autre courriel ne soit envoyé à ce compte, vous devrez suivre les instructions du courriel et confirmer que le compte est bien le vôtre.",
-       "throttled-mailpassword": "Un courriel de réinitialisation de votre mot de passe a déjà été envoyé durant {{PLURAL:$1|la dernière heure|les $1 dernières heures}}. Afin d'éviter les abus, un seul courriel de réinitialisation de votre mot de passe sera envoyé par {{PLURAL:$1|heure|intervalle de $1 heures}}.",
-       "mailerror": "Erreur lors de l'envoi du courriel : $1",
-       "acct_creation_throttle_hit": "Quelqu'un utilisant votre adresse IP a créé {{PLURAL:$1|un compte|$1 comptes}} au cours des dernières 24 heures, ce qui constitue la limite autorisée dans cet intervalle de temps.\nPar conséquent, la création de compte a été temporairement désactivée pour cette adresse IP.",
+       "throttled-mailpassword": "Un courriel de réinitialisation de votre mot de passe a déjà été envoyé durant {{PLURAL:$1|la dernière heure|les $1 dernières heures}}. \nAfin d’éviter les abus, un seul courriel de réinitialisation de votre mot de passe sera envoyé par {{PLURAL:$1|heure|intervalle de $1 heures}}.",
+       "mailerror": "Erreur lors de lenvoi du courriel : $1",
+       "acct_creation_throttle_hit": "Les visiteurs de ce wiki qui utilisent votre adresse IP ont créé {{PLURAL:$1|un compte|$1 comptes}} au cours des dernières 24 heures, ce qui est la limite maximale autorisée dans cet intervalle de temps.\nPar conséquent, la création de comptes pour les visiteurs utilisant cette adresse IP est temporairement suspendue.",
        "emailauthenticated": "Votre adresse de courriel a été confirmée le $2 à $3.",
-       "emailnotauthenticated": "Votre adresse de courriel n'est pas encore confirmée. Aucun courriel ne sera envoyé pour chacune des fonctions suivantes.",
+       "emailnotauthenticated": "Votre adresse de courriel n’est pas encore confirmée.\nAucun courriel ne sera envoyé pour chacune des fonctions suivantes.",
        "noemailprefs": "Indiquez une adresse de courriel dans vos préférences pour utiliser ces fonctions.",
        "emailconfirmlink": "Confirmez votre adresse de courriel",
-       "invalidemailaddress": "Cette adresse courriel ne peut pas être acceptée car elle semble avoir un format incorrect.\nEntrez une adresse bien formatée ou laissez ce champ vide.",
+       "invalidemailaddress": "Cette adresse courriel ne peut pas être acceptée car son format paraît incorrect.\nEntrez une adresse bien formatée ou laissez ce champ vide.",
        "cannotchangeemail": "Les adresses de courriel des comptes ne peuvent pas être modifiées sur ce wiki.",
        "emaildisabled": "Ce site ne peut pas envoyer de courriels.",
        "accountcreated": "Compte créé",
        "accountcreatedtext": "Le compte utilisateur pour [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|discussion]]) a été créé.",
        "createaccount-title": "Création d’un compte pour {{SITENAME}}",
        "createaccount-text": "Quelqu’un a créé un compte pour votre adresse de courriel sur {{SITENAME}} ($4) intitulé « $2 », avec le mot de passe « $3 ».\nVous devriez ouvrir une session et modifier dès à présent votre mot de passe.\n\nIgnorez ce message si ce compte a été créé par erreur.",
-       "login-throttled": "Vous avez tenté un trop grand nombre de connexions dernièrement.\nVeuillez attendre $1 avant d'essayer à nouveau.",
+       "login-throttled": "Vous avez tenté dernièrement un nombre trop élevé de connexions.\nVeuillez attendre $1 avant d’essayer à nouveau.",
        "login-abort-generic": "Votre tentative de connexion a échoué",
        "login-migrated-generic": "Votre compte a été migré, et votre nom d’utilisateur n’existe plus sur ce wiki.",
        "loginlanguagelabel": "Langue : $1",
-       "suspicious-userlogout": "Votre demande de déconnexion a été refusée car il semble qu'elle a été envoyée par un navigateur cassé ou la mise en cache d'un proxy.",
-       "createacct-another-realname-tip": "Le vrai nom est optionnel.\nSi vous décidez de le fournir, il sera utilisé pour attribuer à l’utilisateur ses travaux.",
+       "suspicious-userlogout": "Votre demande de déconnexion a été refusée car elle paraît avoir été envoyée par un navigateur défectueux ou depuis le cache d’un service mandataire.",
+       "createacct-another-realname-tip": "Le véritable nom est optionnel.\nSi vous décidez de le fournir, il sera utilisé pour créditer l’auteur de ses travaux.",
        "pt-login": "Se connecter",
        "pt-login-button": "Se connecter",
        "pt-createaccount": "Créer un compte",
        "pt-userlogout": "Se déconnecter",
-       "php-mail-error-unknown": "Erreur inconnue dans la fonction mail() de PHP.",
+       "php-mail-error-unknown": "Erreur inconnue dans la fonction <code>mail()</code> de PHP.",
        "user-mail-no-addy": "Tenté d'envoyer un courriel sans adresse de courriel",
        "user-mail-no-body": "Essai d'envoi d'un courriel avec un corps vide ou déraisonnablement court.",
        "changepassword": "Changer de mot de passe",
        "recentchangeslinked-page": "Nom de la page :",
        "recentchangeslinked-to": "Afficher les modifications des pages qui comportent un lien vers la page donnée plutôt que l'inverse",
        "recentchanges-page-added-to-category": "[[:$1]] ajouté à la catégorie",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] et [[Special:WhatLinksHere/$1|{{PLURAL:$2|une page ajoutée|$2 pages ajoutées}}]] à la catégorie",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] ajouté à la catégorie, [[Special:WhatLinksHere/$1|cette page est incluse dans d’autres]]",
        "recentchanges-page-removed-from-category": "[[:$1]] supprimé de la catégorie",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] et [[Special:WhatLinksHere/$1|{{PLURAL:$2|une page retirée|$2 pages retirées}}]] de la catégorie",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] supprimée de la catégorie, [[Special:WhatLinksHere/$1|cette page est incluse dans d’autres]]",
        "autochange-username": "Modification automatique de MediaWiki",
        "upload": "Importer un fichier",
        "uploadbtn": "Importer le fichier",
        "categories-submit": "Lister",
        "categoriespagetext": "{{PLURAL:$1|La catégorie suivante est utilisée|Les catégories suivantes sont utilisées}} par des pages ou fichiers.\n[[Special:UnusedCategories|Les catégories inutilisées]] ne sont pas affichées ici.\nVoyez aussi [[Special:WantedCategories|les catégories demandées]].",
        "categoriesfrom": "Afficher les catégories à partir de :",
-       "special-categories-sort-count": "tri par nombre d'éléments",
-       "special-categories-sort-abc": "tri alphabétique",
        "deletedcontributions": "Contributions supprimées",
        "deletedcontributions-title": "Contributions supprimées",
        "sp-deletedcontributions-contribs": "contributions",
        "exif-copyrighted-true": "Soumis au droit d'auteur",
        "exif-copyrighted-false": "État des droits d’auteur non défini",
        "exif-photometricinterpretation-1": "Noir et blanc (0 pour le noir)",
+       "exif-photometricinterpretation-4": "Masque de transparence",
        "exif-unknowndate": "Date inconnue",
        "exif-orientation-1": "Normale",
        "exif-orientation-2": "Inversée horizontalement",
        "confirmemail_body_set": "Quelqu’un, probablement vous, depuis l’adresse IP $1, a modifié l’adresse de courriel du compte « $2 » en celle-ci sur {{SITENAME}}.\n\nPour confirmer que ce compte vous appartient et réactiver les fonctions de courriel sur {{SITENAME}}, ouvrez ce lien dans votre navigateur Web :\n\n$3\n\nCe code de confirmation expirera le $4.\n\nSi le compte ne vous appartient *pas*, suivez plutôt ce lien pour annuler la confirmation de l’adresse de courriel :\n\n$5",
        "confirmemail_invalidated": "Confirmation de l’adresse courriel annulée",
        "invalidateemail": "Annuler la confirmation de l'adresse de courriel",
+       "notificationemail_subject_changed": "L’adresse courriel enregistrée sur {{SITENAME}} a été changée",
+       "notificationemail_subject_removed": "L’adresse courriel enregistrée sur {{SITENAME}} a été supprimée",
+       "notificationemail_body_changed": "Quelqu’un, probablement vous, connecté depuis l’adresse IP $1,\na changé l’adresse courriel associée au compte « $2 » sur {{SITENAME}}\nen « $3 ».\n\nSi ce n’était pas vous, contactez un administrateur du site immédiatement.",
+       "notificationemail_body_removed": "Quelqu’un, probablement vous, connecté depuis l’adresse IP $1,\na suprrimé l’adresse courriel associée au compte « $2 » sur {{SITENAME}}.\n\nSi ce n’était pas vous, contactez un administrateur du site immédiatement.",
        "scarytranscludedisabled": "[La transclusion interwiki est désactivée]",
        "scarytranscludefailed": "[La récupération de modèle a échoué pour $1]",
        "scarytranscludefailed-httpstatus": "[Échec de la récupération du modèle pour  $1 : HTTP  $2 ]",
        "sessionprovider-nocookies": "Les cookies peuvent être désactivés. Assurez-vous que vous avez activé les cookies et recommencez.",
        "randomrootpage": "Page racine aléatoire",
        "log-action-filter-block": "Type de blocage :",
+       "log-action-filter-contentmodel": "Type de modification de modèle de contenu :",
        "log-action-filter-delete": "Type de suppression :",
+       "log-action-filter-import": "Type d’import :",
+       "log-action-filter-managetags": "Type d’action de gestion des étiquettes :",
+       "log-action-filter-move": "Type de déplacement :",
+       "log-action-filter-newusers": "Type de création de compte :",
        "log-action-filter-patrol": "Type de patrouille :",
        "log-action-filter-protect": "Type de protection :",
+       "log-action-filter-rights": "Type de changement de droit",
+       "log-action-filter-suppress": "Type de suppression",
        "log-action-filter-upload": "Type de téléversement :",
        "log-action-filter-all": "Tout",
        "log-action-filter-block-block": "Blocage",
        "log-action-filter-block-reblock": "Modification de blocage",
        "log-action-filter-block-unblock": "Débloquer",
+       "log-action-filter-contentmodel-change": "Changement de modèle de contenu",
+       "log-action-filter-contentmodel-new": "Création de page avec un modèle de contenu non-standard",
        "log-action-filter-delete-delete": "Suppression de pages",
        "log-action-filter-delete-restore": "Restauration de page",
        "log-action-filter-delete-event": "Suppression du journal",
        "log-action-filter-delete-revision": "Suppression de révison",
+       "log-action-filter-import-interwiki": "Import transwiki",
+       "log-action-filter-import-upload": "Import par téléversement XML",
+       "log-action-filter-managetags-create": "Création de balise",
+       "log-action-filter-managetags-delete": "Suppression de balise",
+       "log-action-filter-managetags-activate": "Activation de l’étiquette",
+       "log-action-filter-managetags-deactivate": "Désactivation de l’étiquette",
+       "log-action-filter-move-move": "Renommage sans écrasement des redirections",
+       "log-action-filter-move-move_redir": "Renommage avec écrasement des redirections",
+       "log-action-filter-newusers-create": "Création par un utilisateur anonyme",
+       "log-action-filter-newusers-create2": "Création par un utilisateur inscrit",
+       "log-action-filter-newusers-autocreate": "Création automatique",
+       "log-action-filter-newusers-byemail": "Création avec le mot de passe envoyé par courriel",
        "log-action-filter-patrol-patrol": "Patrouille manuelle",
        "log-action-filter-patrol-autopatrol": "Patrouille automatique",
        "log-action-filter-protect-protect": "Protection",
        "log-action-filter-protect-modify": "Modification de la protection",
        "log-action-filter-protect-unprotect": "Levée de la protection",
+       "log-action-filter-protect-move_prot": "Protection de renommage",
+       "log-action-filter-rights-rights": "Changement manuel",
+       "log-action-filter-rights-autopromote": "Changement automatique",
+       "log-action-filter-suppress-event": "Suppression de journal",
+       "log-action-filter-suppress-revision": "Suppression de révision",
+       "log-action-filter-suppress-delete": "Suppression de page",
+       "log-action-filter-suppress-block": "Suppression d’utilisateur par blocage",
+       "log-action-filter-suppress-reblock": "Suppression d’utilisateur par blocage réitéré",
        "log-action-filter-upload-upload": "Nouveau téléversement",
        "log-action-filter-upload-overwrite": "Réitérer le téléversement"
 }
index 7e9235d..48206d3 100644 (file)
        "categories-submit": "Montrar",
        "categoriespagetext": "{{PLURAL:$1|Cela catègoria-que contint|Celes catègories-que contegnont}} de pâges de mèdiâs.\nLes [[Special:UnusedCategories|catègories pas empleyêes]] sont pas montrâyes ique.\nVêde avouéc les [[Special:WantedCategories|catègories demandâyes]].",
        "categoriesfrom": "Fâre vêre les catègories dês :",
-       "special-categories-sort-count": "chouèx per comptâjo",
-       "special-categories-sort-abc": "chouèx alfabètico",
        "deletedcontributions": "Contribucions suprimâyes",
        "deletedcontributions-title": "Contribucions suprimâyes",
        "sp-deletedcontributions-contribs": "contribucions",
        "redirect-submit": "Emmodar",
        "fileduplicatesearch": "Rechèrche des fichiérs en doblo",
        "fileduplicatesearch-summary": "Rechèrche des fichiérs en doblo d’aprés lor mârca de chaplâjo.",
-       "fileduplicatesearch-legend": "Rechèrche d’un doblo",
        "fileduplicatesearch-filename": "Nom du fichiér :",
        "fileduplicatesearch-submit": "Rechèrchiér",
        "fileduplicatesearch-info": "$1 × $2 pixèls<br />Talye du fichiér : $3<br />Tipo MIME : $4",
index d95029f..c52df0a 100644 (file)
        "categories": "Kategoriin",
        "categoriespagetext": "{{PLURAL:$1|Detdiar kategorii häält|Jodiar kategoriin hual}} sidjen of datein.\n[[Special:UnusedCategories|Leesag kategoriin]] wurd heer ei uunwiset.\nLuke uk bi det list faan [[Special:WantedCategories|nuadag kategoriin]].",
        "categoriesfrom": "Wise kategoriin mä began üüb:",
-       "special-categories-sort-count": "Efter taalen sortiaret",
-       "special-categories-sort-abc": "Efter't alfabeet sortiaret",
        "deletedcontributions": "Stregen bidracher",
        "deletedcontributions-title": "Stregen bidracher",
        "sp-deletedcontributions-contribs": "Bidracher",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|werjuun|werjuunen}} importiaret",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|werjuun|werjuunen}} faan $2 importiaret",
        "javascripttest": "JavaScript-test",
-       "javascripttest-pagetext-noframework": "Detdiar sidj as för JavaScript-tests föörsen.",
-       "javascripttest-pagetext-unknownframework": "Ünbekäänd test-framework „$1“.",
        "javascripttest-pagetext-unknownaction": "Ünbekäänd aktjuun „$1“.",
-       "javascripttest-pagetext-frameworks": "Schük ian faan jodiar test-frameworks ütj: $1",
-       "javascripttest-pagetext-skins": "Schük en brüker-skak ütj, am di test ütjtufeeren:",
        "javascripttest-qunit-intro": "Luke efter bi [$1 test dokumentatjuun] üüb mediawiki.org",
        "tooltip-pt-userpage": "Din brükersidj",
        "tooltip-pt-anonuserpage": "Brükersidj faan det IP-adres, faan huar ütj dü werkest",
        "version-libraries-description": "Beskriiwang",
        "version-libraries-authors": "Skriiwern",
        "redirect": "Widjerfeerang faan en brüker, en sidj, en sidjenwerjuun of en datei.",
-       "redirect-legend": "Widjerfeerang üüb en sidjenwerjuun of datei.",
        "redirect-summary": "Detdiar spezial-sidj feert widjer üüb en brükersidj, sidj, sidjenwerjuun of datei.\nAn det woort so brükt:  [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/file/Example.jpg]].",
        "redirect-submit": "Widjer",
        "redirect-lookup": "Schük:",
        "redirect-not-exists": "Wäärs ei fünjen",
        "fileduplicatesearch": "Schük dobelt datein",
        "fileduplicatesearch-summary": "Dobelt datein schük üüb grünjlaag faan hör hash-wäärs",
-       "fileduplicatesearch-legend": "Dobelt datein schük",
        "fileduplicatesearch-filename": "Dateinööm:",
        "fileduplicatesearch-submit": "Schük",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />Dateigrate: $3<br />MIME-typ: $4",
index f7154da..41368ee 100644 (file)
        "categories": "Kategoryen",
        "categoriespagetext": "De folgjende kategoriyen befetsje siden of mediatriemmen.\n[[Special:UnusedCategories|Net brûkte kategoryen]] wurde hjir net werjûn.\nSjuch ek [[Special:WantedCategories|net-besteande kategoryen mei ferwizings]].",
        "categoriesfrom": "Kategoryen werjaan fan .. ôf:",
-       "special-categories-sort-count": "op tal sortearje",
-       "special-categories-sort-abc": "alfabetysk sortearje",
        "deletedcontributions": "Wiske meidogger bydragen",
        "deletedcontributions-title": "Wiske meidogger bydragen",
        "sp-deletedcontributions-contribs": "bydragen",
index 005e01c..d8659c0 100644 (file)
        "categories": "Roinnean-seòrsa",
        "categoriespagetext": "Tha duilleagan no meadhan {{PLURAL:$1|san roinn-seòrsa|sna roinnean-seòrsa|}} a leanas.\nChan fhaicear [[Special:UnusedCategories|roinnean-seòrsa gun chleachdadh an-seo]].\nThoir sùil air na [[Special:WantedCategories|roinnean-seòrsa a thathar 'gan iarraidh cuideachd]].",
        "categoriesfrom": "Seall roinnean-seòrsa o seo a-mach:",
-       "special-categories-sort-count": "seòrsaich a-rèir an uireid",
-       "special-categories-sort-abc": "seòrsaich a rèir na h-aibidil",
        "deletedcontributions": "Obair air a sguabadh às",
        "deletedcontributions-title": "Obair air a sguabadh às",
        "sp-deletedcontributions-contribs": "obair",
        "import-logentry-upload-detail": "Chaidh $1 {{PLURAL:$1|mhùthadh|mùthadh|mùthaidhean|mùthadh}} ion-phortachadh",
        "import-logentry-interwiki-detail": "Chaidh $1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} ion-phortachadh o $2",
        "javascripttest": "Deuchainn air JavaScript",
-       "javascripttest-pagetext-noframework": "Tha an duilleag seo glèidhte airson deuchainnean JavaScript a ruith.",
-       "javascripttest-pagetext-unknownframework": "Framework deuchainn \"$1\" neo-aithnichte.",
-       "javascripttest-pagetext-frameworks": "Feuch an tagh thu aon dhe na frameworks deuchainn seo: $1",
-       "javascripttest-pagetext-skins": "Tagh craiceann airson ruith nan deuchainnean:",
        "javascripttest-qunit-intro": "Faic [$1 docamaideadh nan deuchainnean] air mediawiki.org.",
        "tooltip-pt-userpage": "An duilleag phearsanta {{GENDER:|agad}}",
        "tooltip-pt-anonuserpage": "Duilleag a' chleachdaiche airson an t-seòlaidh IP leis a bheil thu a' deasachadh",
        "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Slighe artaigil]",
        "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath slighe sgriobt]",
        "redirect": "Ath-stiùireadh le faidhle, cleachdaiche, duilleag no ID a' mhùthaidh",
-       "redirect-legend": "Cruthaich ath-stiùireadh gu faidhle no duilleag",
        "redirect-summary": "Nì an duilleag shònraichte seo ath-stiùireadh gu faidhle (le ainm faidhle), duilleag (le ID a' mhùthaidh no ID na duilleige) no duilleag cleachdaiche (le àireamh ID a' chleachdaiche). Seo mar a chleachdas tu e: [[{{#Special:Redirect}}/file/Ball-eisimpleir.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] no [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Siuthad",
        "redirect-lookup": "Rannsaich:",
        "redirect-not-exists": "Cha deach an luach a lorg",
        "fileduplicatesearch": "Lorg airson faidhlichean dùblaichte",
        "fileduplicatesearch-summary": "Lorg airson faidhlichean dùblaichte, stèidhichte air luachan hais.",
-       "fileduplicatesearch-legend": "Lorg airson dùblachadh",
        "fileduplicatesearch-filename": "Ainm an fhaidhle:",
        "fileduplicatesearch-submit": "Lorg",
        "fileduplicatesearch-info": "$1 × $2 piogsail<br />Meud an fhaidhle: $3<br />Seòrsa MIME: $4",
index 84dd8e7..4cf6c83 100644 (file)
@@ -40,6 +40,7 @@
        "tog-watchdefault": "Engadir as páxinas e os ficheiros que edite á miña lista de vixilancia",
        "tog-watchmoves": "Engadir as páxinas e os ficheiros que mova á miña lista de vixilancia",
        "tog-watchdeletion": "Engadir as páxinas e os ficheiros que borre á miña lista de vixilancia",
+       "tog-watchuploads": "Engadir os novos ficheiros que subín á miña lista de vixilancia",
        "tog-watchrollback": "Engadir as páxinas nas que realice unha reversión á miña lista de vixilancia",
        "tog-minordefault": "Marcar todas as edicións como pequenas por defecto",
        "tog-previewontop": "Mostrar a vista previa antes da caixa de edición",
        "recentchangeslinked-page": "Nome da páxina:",
        "recentchangeslinked-to": "Mostrar os cambios relacionados das páxinas que ligan coa dada",
        "recentchanges-page-added-to-category": "\"[[:$1]]\" engadiuse á categoría",
-       "recentchanges-page-added-to-category-bundled": "\"[[:$1]]\" e [[Special:WhatLinksHere/$1|{{PLURAL:$2|unha páxina|$2 páxinas}}]] engadíronse á categoría",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] engadida á categoría [[Special:WhatLinksHere/$1|esta páxina está incluída noutras páxinas]]",
        "recentchanges-page-removed-from-category": "\"[[:$1]]\" eliminouse da categoría",
-       "recentchanges-page-removed-from-category-bundled": "\"[[:$1]]\" e [[Special:WhatLinksHere/$1|{{PLURAL:$2|unha páxina|$2 páxinas}}]] elimináronse da categoría",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] eliminada da categoría [[Special:WhatLinksHere/$1||esta páxina está incluída noutras páxinas]]",
        "autochange-username": "Cambio automático de MediaWiki",
        "upload": "Subir un ficheiro",
        "uploadbtn": "Subir un ficheiro",
        "upload-too-many-redirects": "O enderezo URL contiña moitas redireccións",
        "upload-http-error": "Produciuse un erro HTTP: $1",
        "upload-copy-upload-invalid-domain": "A copia de cargas non está dispoñible neste dominio.",
-       "upload-foreign-cant-upload": "Esta wiki non está configurada para subir ficheiros ó repositorio de ficheiros externo solicitado.",
+       "upload-foreign-cant-upload": "Este wiki non está configurado para subir ficheiros ao repositorio de ficheiros externo solicitado.",
        "upload-dialog-title": "Subir un ficheiro",
        "upload-dialog-button-cancel": "Cancelar",
        "upload-dialog-button-done": "Feito",
        "categories-submit": "Mostrar",
        "categoriespagetext": "{{PLURAL:$1|A seguinte categoría contén|As seguintes categorías conteñen}} páxinas ou contidos multimedia.\nAquí non se mostran as [[Special:UnusedCategories|categorías sen uso]].\nOlle tamén as [[Special:WantedCategories|categorías requiridas]].",
        "categoriesfrom": "Mostrar as categorías que comecen por:",
-       "special-categories-sort-count": "ordenar por número",
-       "special-categories-sort-abc": "ordenar alfabeticamente",
        "deletedcontributions": "Contribucións borradas do usuario",
        "deletedcontributions-title": "Contribucións borradas do usuario",
        "sp-deletedcontributions-contribs": "contribucións",
        "delete-toobig": "Esta páxina conta cun historial longo, de máis {{PLURAL:$1|dunha revisión|de $1 revisións}}.\nLimitouse a eliminación destas páxinas para previr problemas de funcionamento accidentais en {{SITENAME}}.",
        "delete-warning-toobig": "Esta páxina conta cun historial de edicións longo, de máis {{PLURAL:$1|dunha revisión|de $1 revisións}}.\nAo eliminala pódense provocar problemas de funcionamento nas operacións da base de datos de {{SITENAME}};\nproceda con coidado.",
        "deleteprotected": "Non pode borrar esta páxina porque está protexida.",
-       "deleting-backlinks-warning": "<strong>Atención:</strong>[[Special:WhatLinksHere/{{FULLPAGENAME}}|Outras páxinas]] conteñen unha ligazón ou unha transclusión da páxina que está a piques de borrar.",
+       "deleting-backlinks-warning": "<strong>Atención:</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|Outras páxinas]] conteñen unha ligazón ou unha transclusión da páxina que está a piques de borrar.",
        "rollback": "Reverter as edicións",
        "rollbacklink": "reverter",
        "rollbacklinkcount": "reverter $1 {{PLURAL:$1|edición|edicións}}",
        "confirmemail_body_set": "Alguén, probablemente vostede, desde o enderezo IP $1,\nestableceu este enderezo de correo electrónico como o da conta \"$2\" en {{SITENAME}}.\n\nPara confirmar que realmente esta conta lle pertence a vostede e activar\nas características do correo electrónico en {{SITENAME}}, abra esta ligazón no seu navegador:\n\n$3\n\nSe a conta *non* é súa, siga estoutra ligazón\npara cancelar a confirmación do enderezo de correo electrónico:\n\n$5\n\nO código de confirmación caduca o $6 ás $7.",
        "confirmemail_invalidated": "A confirmación do enderezo de correo electrónico foi cancelada",
        "invalidateemail": "Cancelar a confirmación do correo electrónico",
+       "notificationemail_subject_changed": "A dirección de correo rexistrada en {{SITENAME}} foi modificada",
+       "notificationemail_subject_removed": "A dirección de correo rexistrada en {{SITENAME}} foi eliminada",
+       "notificationemail_body_changed": "Alguén, probablemente vostede, dende a dirección IP $1, cambiou a dirección de correo electrónico da conta \"$2\" a \"$3\" en {{SITENAME}}.\n\nSe non foi vostede, contacte cun administrador inmediatamente.",
+       "notificationemail_body_removed": "Alguén, probablemente vostede, dende a dirección IP $1, eliminou a dirección de correo electrónico da conta \"$2\" en {{SITENAME}}.\n\nSe non foi vostede, contacte cun administrador inmediatamente.",
        "scarytranscludedisabled": "[A transclusión interwiki está desactivada]",
        "scarytranscludefailed": "[Fallou a busca do modelo \"$1\"]",
        "scarytranscludefailed-httpstatus": "[Fallou a busca do modelo \"$1\": HTTP $2]",
        "sessionprovider-nocookies": "As cookies poden estar desactivadas. Asegúrese de que ten activas as cookies e comece de novo.",
        "randomrootpage": "Páxina raíz ao chou",
        "log-action-filter-block": "Tipo de bloqueo:",
+       "log-action-filter-contentmodel": "Tipo de modificación de modelo de contido:",
        "log-action-filter-delete": "Tipo de borrado:",
+       "log-action-filter-import": "Tipo de importación:",
+       "log-action-filter-managetags": "Tipo de acción de xestión das etiquetas:",
+       "log-action-filter-move": "Tipo de movemento:",
+       "log-action-filter-newusers": "Tipo de creación de conta:",
        "log-action-filter-patrol": "Tipo de vixilancia:",
        "log-action-filter-protect": "Tipo de protección:",
+       "log-action-filter-rights": "Tipo de cambio de dereito",
+       "log-action-filter-suppress": "Tipo de borrado",
        "log-action-filter-upload": "Tipo de subida:",
        "log-action-filter-all": "Todas",
        "log-action-filter-block-block": "Bloquear",
        "log-action-filter-block-reblock": "Modificación de bloqueo",
        "log-action-filter-block-unblock": "Desbloquear",
+       "log-action-filter-contentmodel-change": "Cambio de modelo de contido",
+       "log-action-filter-contentmodel-new": "Creación de páxins cun modelo de contido non estándar",
        "log-action-filter-delete-delete": "Borrado de páxinas",
        "log-action-filter-delete-restore": "Restauración de páxinas",
        "log-action-filter-delete-event": "Borrado de rexistros",
        "log-action-filter-delete-revision": "Borrado de revisión",
+       "log-action-filter-import-interwiki": "Importar transwiki",
+       "log-action-filter-import-upload": "Importación por suba XML",
+       "log-action-filter-managetags-create": "Creación de etiqueta",
+       "log-action-filter-managetags-delete": "Borrado de etiqueta",
+       "log-action-filter-managetags-activate": "Activación de etiqueta",
+       "log-action-filter-managetags-deactivate": "Desactivación de etiqueta",
+       "log-action-filter-move-move": "Mover sen reescribir as redireccións",
+       "log-action-filter-move-move_redir": "Mover reescribindo as redireccións",
+       "log-action-filter-newusers-create": "Creación por usuario anónimo",
+       "log-action-filter-newusers-create2": "Creación por usuario rexistrado",
+       "log-action-filter-newusers-autocreate": "Creación automática",
+       "log-action-filter-newusers-byemail": "Creación con chave enviada por correo electrónico",
        "log-action-filter-patrol-patrol": "Verificación manual",
        "log-action-filter-patrol-autopatrol": "Verificación automática",
        "log-action-filter-protect-protect": "Protección",
        "log-action-filter-protect-modify": "Modificación de protección",
        "log-action-filter-protect-unprotect": "Desproteccion",
+       "log-action-filter-protect-move_prot": "Protección contra movemento",
+       "log-action-filter-rights-rights": "Cambio manual",
+       "log-action-filter-rights-autopromote": "Cambio automático",
+       "log-action-filter-suppress-event": "Borrado de rexistro",
+       "log-action-filter-suppress-revision": "Borrado de revisión",
+       "log-action-filter-suppress-delete": "Borrado de páxina",
+       "log-action-filter-suppress-block": "Supresión de usuario por bloqueo",
+       "log-action-filter-suppress-reblock": "Supresión de usuario por bloqueo reiterado",
        "log-action-filter-upload-upload": "Nova subida",
        "log-action-filter-upload-overwrite": "Resubida"
 }
index b48844d..530a48c 100644 (file)
        "compareselectedversions": "वेंचिल्ल्या पुनर्नियाळांची तुळा करात",
        "editundo": "केल्लें परतावचें",
        "diff-multi-sameuser": "(ह्या वांगड्या सयत {{PLURAL:$1|केल्लें मदलें एक अवतरण दाखोवंक ना|केल्लें मदलें $1 अवतरण दाखोवंक ना}})",
-       "searchresults": "सà¥\8bदाà¤\9aà¥\87 à¤¨à¤¿à¤\95ाल",
-       "searchresults-title": "\"$1\" à¤¹à¤¾à¤\9aà¥\8dया à¤¸à¥\8bदाà¤\9aà¥\87 à¤¨à¤¿à¤\95ाल",
+       "searchresults": "सà¥\8bदाà¤\9aà¥\87 à¤ªà¤°à¤¿à¤£à¤¾à¤®à¤¾à¤\82",
+       "searchresults-title": "\"$1\" à¤¹à¤¾à¤\9aà¥\8dया à¤¸à¥\8bदाà¤\9aà¥\87 à¤ªà¤°à¤¿à¤£à¤¾à¤®à¤¾à¤\82",
        "prevn": "आदलें{{PLURAL:$1|$1}}",
        "nextn": "दुसरें {{PLURAL:$1|$1}}",
        "next-page": "दुसरें पान",
index d2611fe..9441df7 100644 (file)
        "compareselectedversions": "Nivodloleo uzollneo comparar kor",
        "editundo": "kel'lem portavchem",
        "diff-multi-sameuser": "(Heach vangdian {{PLURAL:$1|kel'lo modlo ek bodol dakhounk na|kel'le modle $1 bodlopam dakhounk nan}})",
-       "searchresults": "Sodache nikal",
-       "searchresults-title": "\"$1\" -khatir sodacho nikal",
+       "searchresults": "Sodache porinaman",
+       "searchresults-title": "\"$1\" -khatir sodache porinaman",
        "prevn": "adlem {{PLURAL:$1|$1}}",
        "nextn": "fuddlem {{PLURAL:$1|$1}}",
        "next-page": "Fuddlem pan",
index c8b9e13..1b3138d 100644 (file)
        "allpages-bad-ns": "Τὸ {{SITENAME}} οὐκ ἔχει ὀνοματεῖον \"$1\".",
        "categories": "Κατηγορίαι",
        "categoriesfrom": "Δεικνύναι κατηγορίας (γραμμαὶ ἐκκινουμέναι ἐκ/ἐξ):",
-       "special-categories-sort-count": "ἀπαριθμητικὴ ταξινόμησις",
-       "special-categories-sort-abc": "ἀλφαβητικὴ ταξινόμησις",
        "deletedcontributions": "Διαγράψαι τοὺς ἐράνους τοῦ χρωμένου",
        "deletedcontributions-title": "Διαγράψαι τοὺς ἐράνους τοῦ χρωμένου",
        "sp-deletedcontributions-contribs": "ἔρανoς",
        "version-software-version": "Ἔκδοσις",
        "fileduplicatesearch": "Ζήτησις διπλότυπων ἀρχείων",
        "fileduplicatesearch-summary": "Ζητεῖν διπλότυπα ἀρχεῖα βάσει κερματιζομένων τιμῶν.",
-       "fileduplicatesearch-legend": "Ζήτησις διπλότυπου",
        "fileduplicatesearch-filename": "Ὄνομα ἀρχείου:",
        "fileduplicatesearch-submit": "Ἀναζήτησις",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />Μέγεθος ἀρχείου: $3<br />MIME τύπος: $4",
index 7565155..75906f0 100644 (file)
        "categories": "Kategorie",
        "categoriespagetext": "In {{PLURAL:$1|däre Kategorii|däne Kategorie}} het s Syte oder Dateie.\n[[Special:UnusedCategories|Nit benutzte Kategorie]] wäre do nit ufgfiert.\nLueg au d Lischt vu dr [[Special:WantedCategories|gwinschte Kategorie]].",
        "categoriesfrom": "Zeig Kategorie ab:",
-       "special-categories-sort-count": "Sortierig no Aazahl",
-       "special-categories-sort-abc": "Sortierig no Alfabet",
        "deletedcontributions": "Gleschti Bytreg",
        "deletedcontributions-title": "Gleschti Bytreg",
        "sp-deletedcontributions-contribs": "Byyträg",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|Version|Versionen}} importiert",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|Version|Versione}} us $2 importiert",
        "javascripttest": "JavaScript-Tescht",
-       "javascripttest-pagetext-noframework": "Die Syte isch reserviert fir JavaSkript-Tescht.",
-       "javascripttest-pagetext-unknownframework": "Nit bekannt Framework „$1“.",
        "javascripttest-pagetext-unknownaction": "Unbekannti Aktion «$1».",
-       "javascripttest-pagetext-frameworks": "Bitte eis vu däne Framework uuswehle: $1",
-       "javascripttest-pagetext-skins": "Wehl e Benutzeroberflechi uus fir d Durfierig vu dr Tescht:",
        "javascripttest-qunit-intro": "Lueg d [$1 Dokumentation zue Tescht] uf mediawiki.org",
        "tooltip-pt-userpage": "Dyyni Benutzersyte",
        "tooltip-pt-anonuserpage": "D Benutzersyte vo der IP-Adress wo du mit schaffsch",
        "version-libraries-description": "Beschrybig",
        "version-libraries-authors": "Autor/inne",
        "redirect": "Wyterleitig uf Benutzersyte, Syte, Syteversion oder Datei",
-       "redirect-legend": "Wyterleitig uf e Datei oder e Syte",
        "redirect-summary": "Die Spezialsyte leitet wyter uf e Benutzersyte (numerischi Benutzerkännig aagee), Syte (Sytekännig aagee), Syteversion (Versionskännig aagee) oder Datei (Dateiname aagee). Benutzig: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] oder [[{{#Special:Redirect}}/file/Example.jpg]].",
        "redirect-submit": "Gang",
        "redirect-lookup": "Sueche:",
        "redirect-not-exists": "Wärt nit gfunde",
        "fileduplicatesearch": "Datei-Duplikat sueche",
        "fileduplicatesearch-summary": "Suech no Datei-Duplikat uf dr Grundlag vu ihrem Hash-Wärt.",
-       "fileduplicatesearch-legend": "No Duplikat sueche",
        "fileduplicatesearch-filename": "Dateiname:",
        "fileduplicatesearch-submit": "Sueche",
        "fileduplicatesearch-info": "$1 × $2 Pixel<br />Dateigressi: $3<br />MIME-Typ: $4",
index 05778ce..85f17a5 100644 (file)
        "categories": "શ્રેણીઓ",
        "categoriespagetext": "નીચેની {{PLURAL:$1|શ્રેણી|શ્રેણીઓ}}માં પાના કે અન્ય સભ્યો છે.\n[[Special:UnusedCategories|વણ વપરાયેલી શ્રેણીઓ]] અત્રે દર્શાવવામાં આવી નથી.\n[[Special:WantedCategories|ઈચ્છિત શ્રેણીઓ]] પણ જોઈ જુઓ.",
        "categoriesfrom": "આનાથી શરૂ થતી શ્રેણી દર્શાવો:",
-       "special-categories-sort-count": "સંખ્યા આધારીત ચઢતા ક્રમમાં વર્ગીકરણ કરો",
-       "special-categories-sort-abc": "મૂળાક્ષરો પ્રમાણે ગોઠવો",
        "deletedcontributions": "સભ્યનું યોગદાન ભૂંસી નાખો",
        "deletedcontributions-title": "સભ્યનું ભૂંસેલું યોગદાન",
        "sp-deletedcontributions-contribs": "યોગદાન",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}} આયાત કરેલ છે",
        "import-logentry-interwiki-detail": "$2 માંથી આયાત કરેલ $1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}}",
        "javascripttest": "જાવા સ્ક્રીપ્ટ પરીક્ષણ",
-       "javascripttest-pagetext-noframework": "આ પાનું જાવા સ્ક્રીપ્ટ ચલાવવા આરક્ષિત છે.",
-       "javascripttest-pagetext-unknownframework": "અજાણ ચકાસણી ફ્રેમવર્ક \"$1\".",
        "javascripttest-pagetext-unknownaction": "\"$1\" અજ્ઞાત ક્રિયા.",
-       "javascripttest-pagetext-frameworks": "નીચેનામાંથી કોઈ એક ચકાસણી ફ્રેમવર્ક પસંદ કરો : $1",
-       "javascripttest-pagetext-skins": "ચકાસણી કરવા માટેની સ્કીન પસંદ કરો",
        "javascripttest-qunit-intro": "mediawiki.org પર  [$1 testing documentation] તપાસ માહિતી જુઓ",
        "tooltip-pt-userpage": "{{GENDER:|તમારું સભ્ય}} પાનું",
        "tooltip-pt-anonuserpage": "IP સરનામું માટેના સભ્ય પાનામાં તમે ફેરફાર કરી રહ્યાં છો.",
        "version-entrypoints-header-url": "URL",
        "version-libraries-library": "લાઇબ્રેરી",
        "version-libraries-version": "આવૃત્તિ",
-       "redirect-legend": "ફાઇલ અથવા પાનાં તરફ વાળો",
        "redirect-submit": "જાઓ",
        "redirect-lookup": "જુઓ:",
        "redirect-value": "કિંમત:",
        "redirect-not-exists": "કિંમત મળી નહી",
        "fileduplicatesearch": "નકલ ફાઇલ શોધો",
        "fileduplicatesearch-summary": "હેશ કિંમત પર આધારિત આબેહૂબ ફાઇલો શોધો.",
-       "fileduplicatesearch-legend": "નકલ શોધો",
        "fileduplicatesearch-filename": "ફાઇલ નામ",
        "fileduplicatesearch-submit": "શોધ",
        "fileduplicatesearch-info": "$1 × $2 પીક્સલ, ફાઇલનું કદ: $3, MIME પ્રકાર: $4",
index 01b7d0a..67c3b49 100644 (file)
                ]
        },
        "tog-underline": "סימון קישורים בקו תחתי:",
-       "tog-hideminor": "×\94סתרת ×©×\99× ×\95×\99×\99×\9d ×\9eשנ×\99×\99×\9d ×\91רש×\99×\9eת השינויים האחרונים",
-       "tog-hidepatrolled": "×\94סתרת ×©×\99× ×\95×\99×\99×\9d ×\91×\93×\95ק×\99×\9d ×\91רש×\99×\9eת השינויים האחרונים",
+       "tog-hideminor": "×\94סתרת ×¢×¨×\99×\9b×\95ת ×\9eשנ×\99×\95ת ×\91×\93×£ השינויים האחרונים",
+       "tog-hidepatrolled": "×\94סתרת ×©×\99× ×\95×\99×\99×\9d ×\91×\93×\95ק×\99×\9d ×\91×\93×£ השינויים האחרונים",
        "tog-newpageshidepatrolled": "הסתרת דפים בדוקים ברשימת הדפים החדשים",
-       "tog-hidecategorization": "×\94סתרת ×¡×\99×\95×\95×\92 ×\93פ×\99×\9d ×\9cק×\98×\92×\95ר×\99×\95ת",
+       "tog-hidecategorization": "×\94סתרת ×©×\99× ×\95×\99×\99×\9d ×\91ק×\98×\92×\95ר×\99×\95ת ×©×\9c ×\93פ×\99×\9d",
        "tog-extendwatchlist": "הרחבת רשימת המעקב כך שתציג את כל השינויים, לא רק את השינויים האחרונים בכל דף",
-       "tog-usenewrc": "ק×\99×\91×\95×¥ ×\94ש×\99× ×\95×\99×\99×\9d ×\9cפ×\99 ×\93×£ ×\91שינויים האחרונים וברשימת המעקב",
+       "tog-usenewrc": "ק×\99×\91×\95×¥ ×\94ש×\99× ×\95×\99×\99×\9d ×\9cפ×\99 ×\93פ×\99×\9d ×\91×\93×£ ×\94שינויים האחרונים וברשימת המעקב",
        "tog-numberheadings": "מספור כותרות אוטומטי",
        "tog-showtoolbar": "הצגת סרגל העריכה",
        "tog-editondblclick": "עריכת דפים בלחיצה כפולה",
-       "tog-editsectiononrightclick": "×\94פע×\9cת ×¢×¨×\99×\9bת ×¤×¡×§×\90×\95ת ×\91×\90×\9eצע×\95ת ×\9c×\97×\99צ×\94 ×\99×\9e× ×\99ת ×¢×\9c ×\9b×\95תר×\95ת ×\94פסק×\90×\95ת",
+       "tog-editsectiononrightclick": "עריכת פסקאות באמצעות לחיצה ימנית על כותרות הפסקאות",
        "tog-watchcreations": "הוספת דפים שיצרתי וקבצים שהעליתי לרשימת המעקב שלי",
        "tog-watchdefault": "הוספת דפים וקבצים שערכתי לרשימת המעקב שלי",
        "tog-watchmoves": "הוספת דפים וקבצים שהעברתי לרשימת המעקב שלי",
        "tog-watchdeletion": "הוספת דפים וקבצים שמחקתי לרשימת המעקב שלי",
-       "tog-watchrollback": "הוספת דפים שבהם ביצעתי שחזור לגרסה קודמת לרשימת המעקב שלי",
-       "tog-minordefault": "סימון כל פעולת עריכה כמשנית כברירת מחדל",
+       "tog-watchuploads": "הוספת קבצים חדשים שהעליתי לרשימת המעקב שלי",
+       "tog-watchrollback": "הוספת דפים שבהם ביצעתי שחזור מהיר לרשימת המעקב שלי",
+       "tog-minordefault": "סימון כל עריכה כמשנית כברירת מחדל",
        "tog-previewontop": "הצגת תצוגה מקדימה לפני תיבת העריכה",
-       "tog-previewonfirst": "הצגת תצוגה מקדימה בעריכה ראשונה",
+       "tog-previewonfirst": "×\94צ×\92ת ×ª×¦×\95×\92×\94 ×\9eק×\93×\99×\9e×\94 ×\91ער×\99×\9b×\94 ×\94ר×\90ש×\95× ×\94",
        "tog-enotifwatchlistpages": "לשלוח אליי דוא\"ל כאשר משתנה דף או קובץ ברשימת המעקב שלי",
        "tog-enotifusertalkpages": "לשלוח אליי דוא\"ל כאשר נעשה שינוי בדף שיחת המשתמש שלי",
        "tog-enotifminoredits": "לשלוח אליי דוא\"ל גם על עריכות משניות של דפים וקבצים",
        "tog-shownumberswatching": "הצגת מספר המשתמשים העוקבים",
        "tog-oldsig": "החתימה הנוכחית:",
        "tog-fancysig": "התייחסות לחתימה כקוד ויקי (ללא קישור אוטומטי)",
-       "tog-uselivepreview": "ש×\99×\9e×\95ש ×\91תצ×\95×\92×\94 ×\9eק×\93×\99×\9e×\94 ×\97×\99ה",
+       "tog-uselivepreview": "ש×\99×\9e×\95ש ×\91תצ×\95×\92×\94 ×\9eק×\93×\99×\9e×\94 ×\9e×\94×\99רה",
        "tog-forceeditsummary": "הצגת אזהרה בעת הכנסת תקציר עריכה ריק",
        "tog-watchlisthideown": "הסתרת העריכות שלי ברשימת המעקב",
        "tog-watchlisthidebots": "הסתרת עריכות של בוטים ברשימת המעקב",
        "tog-watchlisthideminor": "הסתרת עריכות משניות ברשימת המעקב",
        "tog-watchlisthideliu": "הסתרת עריכות של משתמשים רשומים ברשימת המעקב",
-       "tog-watchlistreloadautomatically": "רענ×\95×\9f ×\90×\95×\98×\95×\9e×\98×\99 ×©×\9c ×¨×©×\99×\9eת ×\94×\9eעק×\91 ×\91×\9b×\9c ×¤×¢×\9d ×©×\9eסנ×\9f ×\9eשתנ×\94 (× ×\93רש JavaScript)",
+       "tog-watchlistreloadautomatically": "רענ×\95×\9f ×\90×\95×\98×\95×\9e×\98×\99 ×©×\9c ×¨×©×\99×\9eת ×\94×\9eעק×\91 ×\91×\9b×\9c ×¤×¢×\9d ×©×\9eסנ×\9f ×\9eשתנ×\94 (×\93ר×\95ש JavaScript)",
        "tog-watchlisthideanons": "הסתרת עריכות של משתמשים אנונימיים ברשימת המעקב",
        "tog-watchlisthidepatrolled": "הסתרת עריכות בדוקות ברשימת המעקב",
-       "tog-watchlisthidecategorization": "×\94סתרת ×¡×\99×\95×\95×\92 ×\93פ×\99×\9d ×\9cק×\98×\92×\95ר×\99×\95ת",
-       "tog-ccmeonemails": "לשלוח אליי העתקים של הודעות דואר אלקטרוני ששלחתי למשתמשים אחרים",
-       "tog-diffonly": "×\91×\99×\98×\95×\9c ×\94צ×\92ת ×ª×\95×\9b×\9f ×\94×\93×£ ×\9eת×\97ת ×\9c×\94ש×\95×\95×\90×\95ת ×\94×\92רס×\90×\95ת",
+       "tog-watchlisthidecategorization": "×\94סתרת ×©×\99× ×\95×\99×\99×\9d ×\91ק×\98×\92×\95ר×\99×\95ת ×©×\9c ×\93פ×\99×\9d",
+       "tog-ccmeonemails": "לשלוח אליי העתקים של הודעות דוא\"ל ששלחתי למשתמשים אחרים",
+       "tog-diffonly": "ביטול הצגת תוכן הדף מתחת להשוואת הגרסאות",
        "tog-showhiddencats": "הצגת קטגוריות מוסתרות",
        "tog-norollbackdiff": "השמטת ההבדלים בין הגרסאות לאחר ביצוע שחזור",
        "tog-useeditwarning": "הצגת אזהרה בעת עזיבת דף עריכה עם שינויים שטרם נשמרו",
        "tog-prefershttps": "תמיד להשתמש בתקשורת מאובטחת לאחר הכניסה לחשבון",
        "underline-always": "תמיד",
        "underline-never": "לעולם לא",
-       "underline-default": "ברירת מחדל של העיצוב או של הדפדפן",
+       "underline-default": "×\91ר×\99רת ×\94×\9e×\97×\93×\9c ×©×\9c ×\94×¢×\99צ×\95×\91 ×\90×\95 ×©×\9c ×\94×\93פ×\93פ×\9f",
        "editfont-style": "הגופן בתיבת העריכה:",
-       "editfont-default": "ברירת מחדל של הדפדפן",
+       "editfont-default": "×\91ר×\99רת ×\94×\9e×\97×\93×\9c ×©×\9c ×\94×\93פ×\93פ×\9f",
        "editfont-monospace": "גופן ברוחב קבוע (monospace)",
-       "editfont-sansserif": "×\92×\95פ×\9f ×\9c×\9c×\90 ×ª×\92×\99×\9d (sans-serif)",
-       "editfont-serif": "×\92×\95פ×\9f ×¢×\9d ×ª×\92×\99×\9d (serif)",
+       "editfont-sansserif": "×\92×\95פ×\9f ×\9c×\90 ×\9e×¢×\95צ×\91 (sans-serif)",
+       "editfont-serif": "×\92×\95פ×\9f ×\9e×¢×\95צ×\91 (serif)",
        "sunday": "ראשון",
        "monday": "שני",
        "tuesday": "שלישי",
        "throttled-mailpassword": "כבר נשלח דוא\"ל לאיפוס הסיסמה ב{{PLURAL:$1|שעה האחרונה|שעתיים האחרונות|־$1 השעות האחרונות}}.\nכדי למנוע ניצול לרעה, יכול להישלח רק דוא\"ל אחד כזה בכל {{PLURAL:$1|שעה|שעתיים|$1 שעות}}.",
        "mailerror": "שגיאה בשליחת דואר: $1",
        "acct_creation_throttle_hit": "מבקרים באתר זה דרך כתובת ה־IP שלכם כבר יצרו {{PLURAL:$1|חשבון אחד|$1 חשבונות}} ביום האחרון. זהו המקסימום המותר בתקופה זו.\nלפיכך, מבקרים דרך כתובת ה־IP הזאת לא יכולים ליצור חשבונות נוספים ברגע זה.",
-       "emailauthenticated": "כתובת הדוא\"ל שלך אומתה ב־$3, $2.",
+       "emailauthenticated": "כתובת הדוא\"ל שלך אומתה ב־$2 בשעה $3.",
        "emailnotauthenticated": "כתובת הדוא\"ל שלכם עדיין לא אומתה.\nלא יישלח אליכם דוא\"ל עבור אף אחת מהתכונות הבאות.",
        "noemailprefs": "יש לציין כתובת דוא\"ל בהעדפות שלך כדי שתכונות אלה יעבדו.",
        "emailconfirmlink": "אישור כתובת הדוא\"ל שלך",
        "blocked-notice-logextract": "{{GENDER:$1|המשתמש הזה חסום|המשתמשת הזו חסומה}} כרגע.\nהפעולה האחרונה ביומן החסימות מוצגת להלן:",
        "clearyourcache": "<strong>הערה:</strong> לאחר השמירה, ייתכן שתצטרכו לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.\n* <strong>פיירפוקס / ספארי:</strong> לחצו והחזיקו את המקש <em>Shift</em> בעת לחיצתכם על <strong>טעינה מחדש</strong> (Reload), או לחצו על צירוף המקשים <em>Ctrl-F5</em> או <em>Ctrl-R</em>&rlm; (<em><span dir=\"ltr\">⌘-R</span></em> במחשב מק)\n* <strong>גוגל כרום:</strong> לחצו על צירוף המקשים <em>Ctrl-Shift-R</em>&rlm; (<em><span dir=\"ltr\">⌘-Shift-R</span></em> במחשב מק)\n* <strong>אינטרנט אקספלורר:</strong> לחצו והחזיקו את המקש <em>Ctrl</em> בעת לחיצתכם על <strong>רענן</strong> (Refresh), או לחצו על צירוף המקשים <em>Ctrl-F5</em>\n* <strong>אופרה:</strong> נקו את המטמון ב־<em>Tools‏ ← Preferences</em>",
        "usercssyoucanpreview": "<strong>עצה:</strong> השתמשו בכפתור \"{{int:showpreview}}\" כדי לבחון את גיליון ה־CSS החדש שלכם לפני השמירה.",
-       "userjsyoucanpreview": "<strong>עצ×\94:</strong> ×\94שת×\9eש×\95 ×\91×\9bפת×\95ר \"{{int:showpreview}}\" ×\9b×\93×\99 ×\9c×\91×\97×\95×\9f ×\90ת ×ª×¡×¨×\99ט ה־JavaScript החדש שלכם לפני השמירה.",
+       "userjsyoucanpreview": "<strong>עצ×\94:</strong> ×\94שת×\9eש×\95 ×\91×\9bפת×\95ר \"{{int:showpreview}}\" ×\9b×\93×\99 ×\9c×\91×\97×\95×\9f ×\90ת ×¡×§×¨×\99פט ה־JavaScript החדש שלכם לפני השמירה.",
        "usercsspreview": "<strong>זִכרו שזו רק תצוגה מקדימה של גיליון ה־CSS שלכם.\nהוא עדיין לא נשמר!</strong>",
-       "userjspreview": "<strong>×\96Ö´×\9bר×\95 ×©×\96×\95 ×¨×§ ×\91×\93×\99ק×\94/תצ×\95×\92×\94 ×\9eק×\93×\99×\9e×\94 ×©×\9c ×ª×¡×¨×\99ט ה־JavaScript שלכם.\nהוא עדיין לא נשמר!</strong>",
+       "userjspreview": "<strong>×\96Ö´×\9bר×\95 ×©×\96×\95 ×¨×§ ×\91×\93×\99ק×\94/תצ×\95×\92×\94 ×\9eק×\93×\99×\9e×\94 ×©×\9c ×¡×§×¨×\99פט ה־JavaScript שלכם.\nהוא עדיין לא נשמר!</strong>",
        "sitecsspreview": "'''זכרו שזו רק תצוגה מקדימה של גיליון ה־CSS הזה.'''\n'''הוא טרם נשמר!'''",
        "sitejspreview": "'''זכרו שזו רק תצוגה מקדימה של קוד ה־JavaScript הזה.'''\n'''הוא טרם נשמר!'''",
        "userinvalidcssjstitle": "'''אזהרה:''' העיצוב \"$1\" אינו קיים.\nדפי .css ו־.js מותאמים אישית משתמשים בכותרת עם אותיות קטנות – למשל, {{ns:user}}:דוגמה/vector.css ולא {{ns:user}}:דוגמה/Vector.css.",
        "contentmodelediterror": "לא ניתן לערוך את הגרסה הזאת כי מודל התוכן שלה הוא <code>$1</code>, השונה ממודל התוכן הנוכחי של הדף, <code>$2</code>.",
        "recreate-moveddeleted-warn": "'''אזהרה: הנכם יוצרים דף חדש שנמחק בעבר.'''\n\nכדאי לשקול אם יהיה זה נכון להמשיך לערוך את הדף.\nיומני המחיקות וההעברות של הדף מוצגים להלן:",
        "moveddeleted-notice": "דף זה נמחק.\nיומני המחיקות וההעברות של הדף מוצגים להלן.",
-       "moveddeleted-notice-recent": "×\9eצ×\98ער×\99×\9d, ×\94×\93×£ ×\94×\96×\94 × ×\9e×\97ק ×\9c×\90×\97ר×\95× ×\94 (×\91Ö¾24 ×\94שע×\95ת ×\94×\90×\97ר×\95× ×\95ת).\n×\99×\95×\9e× ×\99 ×\94×\9e×\97×\99ק×\94 ×\95×\94×\94×¢×\91ר×\94 של הדף מוצגים להלן לעיון.",
+       "moveddeleted-notice-recent": "×\9eצ×\98ער×\99×\9d, ×\94×\93×£ ×\94×\96×\94 × ×\9e×\97ק ×\9c×\90×\97ר×\95× ×\94 (×\91Ö¾24 ×\94שע×\95ת ×\94×\90×\97ר×\95× ×\95ת).\n×\99×\95×\9e× ×\99 ×\94×\9e×\97×\99ק×\95ת ×\95×\94×\94×¢×\91ר×\95ת של הדף מוצגים להלן לעיון.",
        "log-fulllog": "הצגת היומן המלא",
        "edit-hook-aborted": "העריכה בוטלה על־ידי Hook.\nלא ניתן הסבר לביטול.",
        "edit-gone-missing": "לא ניתן לעדכן את הדף.\nנראה שהוא נמחק.",
        "prefs-rc": "שינויים אחרונים",
        "prefs-watchlist": "רשימת המעקב",
        "prefs-editwatchlist": "עריכת רשימת המעקב",
-       "prefs-editwatchlist-label": "ער×\99×\9bת ×¢×¨×\9bים ברשימת המעקב שלך:",
-       "prefs-editwatchlist-edit": "צפ×\99×\99×\94 ×\95×\94סרת ×\9b×\95תר×\95ת ×\91רשימת המעקב שלך",
+       "prefs-editwatchlist-label": "ער×\99×\9bת ×\93פים ברשימת המעקב שלך:",
+       "prefs-editwatchlist-edit": "×\94צ×\92×\94 ×\90×\95 ×\94סר×\94 ×©×\9c ×\93פ×\99×\9d ×\9eרשימת המעקב שלך",
        "prefs-editwatchlist-raw": "עריכת רשימת המעקב הגולמית",
        "prefs-editwatchlist-clear": "ניקוי רשימת המעקב שלך",
-       "prefs-watchlist-days": "×\9eספר ×\94×\99×\9e×\99×\9d ×\94×\9eר×\91×\99 ×©×\99×\95צ×\92×\95 ברשימת המעקב:",
+       "prefs-watchlist-days": "×\9eספר ×\94×\99×\9e×\99×\9d ×©×\9e×\95צ×\92×\99×\9d ברשימת המעקב:",
        "prefs-watchlist-days-max": "לכל היותר {{PLURAL:$1|יום אחד|יומיים|$1 ימים}}",
-       "prefs-watchlist-edits": "×\9eספר ×\94ער×\99×\9b×\95ת ×\94×\9eר×\91×\99 ×©×\99×\95צ×\92×\95 ברשימת המעקב המורחבת:",
-       "prefs-watchlist-edits-max": "×\9eספר ×\9eר×\91×\99: 1000",
+       "prefs-watchlist-edits": "×\9eספר ×\94ער×\99×\9b×\95ת ×\94×\9eר×\91×\99 ×©×\9e×\95צ×\92×\95ת ברשימת המעקב המורחבת:",
+       "prefs-watchlist-edits-max": "×\9c×\9b×\9c ×\94×\99×\95תר: 1000",
        "prefs-watchlist-token": "אסימון לרשימת המעקב:",
        "prefs-misc": "שונות",
        "prefs-resetpass": "שינוי סיסמה",
        "prefs-email": "אפשרויות דוא\"ל",
        "prefs-rendering": "מראה",
        "saveprefs": "שמירה",
-       "restoreprefs": "ש×\97×\96×\95ר ×\94×\94×\92×\93ר×\95ת ×\94×\94ת×\97×\9cת×\99×\95ת (בכל הלשוניות)",
+       "restoreprefs": "ש×\97×\96×\95ר ×\94×\92×\93ר×\95ת ×\91ר×\99רת ×\94×\9e×\97×\93×\9c (בכל הלשוניות)",
        "prefs-editing": "עריכה",
        "rows": "שורות:",
        "columns": "עמודות:",
        "searchresultshead": "חיפוש",
-       "stub-threshold": "סף ×\9c×¢×\99צ×\95×\91 ×§×\99ש×\95ר×\99×\9d ×\9cקצרמרים ($1):",
+       "stub-threshold": "סף ×\9c×¢×\99צ×\95×\91 ×§×\99ש×\95ר×\99×\9d ×\9bקצרמרים ($1):",
        "stub-threshold-sample-link": "דוגמה",
        "stub-threshold-disabled": "מבוטל",
-       "recentchangesdays": "×\9eספר ×\94×\99×\9e×\99×\9d ×©×\99×\95צ×\92×\95 בדף השינויים האחרונים:",
+       "recentchangesdays": "×\9eספר ×\94×\99×\9e×\99×\9d ×©×\9e×\95צ×\92×\99×\9d בדף השינויים האחרונים:",
        "recentchangesdays-max": "לכל היותר {{PLURAL:$1|יום אחד|יומיים|$1 ימים}}",
-       "recentchangescount": "×\9eספר ×\94ער×\99×\9b×\95ת ×©×\99×\95צ×\92×\95 כברירת מחדל:",
-       "prefs-help-recentchangescount": "×\9b×\95×\9c×\9c דף השינויים האחרונים, דפי היסטוריית גרסאות ויומנים.",
-       "prefs-help-watchlist-token2": "×\96×\94×\95 ×\94×\9eפת×\97 ×\94ס×\95×\93×\99 ×©×\9c ×\94הזנה של רשימת המעקב שלך.\nכל מי שיודע אותו יוכל לקרוא את רשימת המעקב שלך, לכן אין לשתף אותו.\n[[Special:ResetTokens|אם יש בכך צורך, אפשר לאפס אותו כאן]].",
+       "recentchangescount": "×\9eספר ×\94ער×\99×\9b×\95ת ×©×\9e×\95צ×\92×\95ת כברירת מחדל:",
+       "prefs-help-recentchangescount": "×\94×\94×¢×\93פ×\94 ×\94×\96×\90ת ×\9b×\95×\9c×\9cת ×\90ת דף השינויים האחרונים, דפי היסטוריית גרסאות ויומנים.",
+       "prefs-help-watchlist-token2": "×\96×\94×\95 ×\94×\9eפת×\97 ×\94ס×\95×\93×\99 ×\9cהזנה של רשימת המעקב שלך.\nכל מי שיודע אותו יוכל לקרוא את רשימת המעקב שלך, לכן אין לשתף אותו.\n[[Special:ResetTokens|אם יש בכך צורך, אפשר לאפס אותו כאן]].",
        "savedprefs": "ההעדפות שלך נשמרו.",
        "savedrights": "הרשאות {{GENDER:$1|המשתמש|המשתמשת}} של $1 נשמרו.",
        "timezonelegend": "אזור זמן:",
        "yourlanguage": "שפת הממשק:",
        "yourvariant": "סוג הכתב בשפת התוכן:",
        "prefs-help-variant": "סוג הכתב המועדף להצגת דפי התוכן באתר ויקי זה.",
-       "yournick": "חתימה:",
+       "yournick": "חתימה חדשה:",
        "prefs-help-signature": "על הודעות בדפי שיחה יש לחתום באמצעות הטקסט \"<nowiki>~~~~</nowiki>\", שיומר לחתימה שלך ואחריה תאריך ושעה.",
        "badsig": "חתימה מסוגננת שגויה.\nנא לבדוק את תגיות ה־HTML.",
        "badsiglength": "חתימתך ארוכה מדי.\nאורך החתימה המרבי הוא {{PLURAL:$1|תו אחד|$1 תווים}}.",
        "prefs-help-gender": "אין חובה למלא העדפה זו.\nהמערכת משתמשת במידע זה כדי לפנות אליך/אלייך ולציין את שם המשתמש שלך במין הדקדוקי הנכון.\nהמידע יהיה ציבורי.",
        "email": "דוא\"ל",
        "prefs-help-realname": "אין חובה למלא את השם האמיתי.\nהשם האמיתי עשוי לשמש כדי לייחס לך את עבודתך.",
-       "prefs-help-email": "×\9bת×\95×\91ת ×\93×\95×\90ר ×\90×\9cק×\98ר×\95× ×\99 ×\94×\99×\90 ×\90×\95פצ×\99×\95× ×\90×\9c×\99ת, ×\90×\91×\9c ×\94×\99×\90 ×\97×\99×\95× ×\99ת ×\9c×\90×\99פ×\95ס ×\94ס×\99ס×\9e×\94 ×\91×\9eקר×\94 ×©×ª×©×\9b×\97×\95 ×\90×\95ת×\94.",
-       "prefs-help-email-others": "×\91×\90פשר×\95ת×\9a ×\92×\9d ×\9c×\91×\97×\95ר ×\9c×\90פשר ×\9c×\90×\97ר×\99×\9d ×\9c×\99צ×\95ר ×\90×\99ת×\9a ×§×©×¨ ×\91×\90×\9eצע×\95ת ×\93×\95×\90\"×\9c ×\93ר×\9a ×§×\99ש×\95ר ×\91×\93×£ ×\94×\9eשת×\9eש ×\90×\95 ×\91×\93×£ ×\94ש×\99×\97×\94 ×©×\9c×\9a.\n×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\9a ×\9c×\90 ×ª×\99×\97שף ×\9bש×\9eשת×\9eש×\99×\9d ×\90×\97ר×\99×\9d ×\99×\99צר×\95 ×§×©×¨ ×\90×\99ת×\9a.",
+       "prefs-help-email": "כתובת דואר אלקטרוני היא אופציונלית, אבל היא חיונית לאיפוס הסיסמה במקרה שתשכחו אותה.",
+       "prefs-help-email-others": "×\91×\90פשר×\95ת×\9a ×\92×\9d ×\9c×\91×\97×\95ר ×\9c×\90פשר ×\9c×\90×\97ר×\99×\9d ×\9c×\99צ×\95ר ×\90×\99ת×\9a ×§×©×¨ ×\91×\90×\9eצע×\95ת ×\93×\95×\90\"×\9c ×\93ר×\9a ×§×\99ש×\95ר ×\91×\93×£ ×\94×\9eשת×\9eש ×\90×\95 ×\91×\93×£ ×\94ש×\99×\97×\94 ×©×\9c×\9a.\n×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\9a ×\9c×\90 ×ª×\99×\97שף ×\9bש×\9eשת×\9eש×\99×\9d ×\90×\97ר×\99×\9d ×\99×\99צר×\95 ×\90×\99ת×\9a ×§×©×¨.",
        "prefs-help-email-required": "כתובת דואר אלקטרוני נדרשת לכתיבה באתר.",
        "prefs-info": "מידע בסיסי",
        "prefs-i18n": "בינאום",
        "group-bot": "בוטים",
        "group-sysop": "מפעילי מערכת",
        "group-bureaucrat": "ביורוקרטים",
-       "group-suppress": "×\9eסת×\99רים",
+       "group-suppress": "×\9e×¢×\9c×\99×\9eים",
        "group-all": "(הכול)",
        "group-user-member": "{{GENDER:$1|משתמש|משתמשת}}",
        "group-autoconfirmed-member": "{{GENDER:$1|משתמש ותיק|משתמשת ותיקה}}",
        "group-bot-member": "{{GENDER:$1|בוט}}",
        "group-sysop-member": "{{GENDER:$1|מפעיל מערכת|מפעילת מערכת}}",
        "group-bureaucrat-member": "{{GENDER:$1|ביורוקרט|ביורוקרטית}}",
-       "group-suppress-member": "{{GENDER:$1|×\9eסת×\99ר|×\9eסת×\99רה}}",
+       "group-suppress-member": "{{GENDER:$1|×\9e×¢×\9c×\99×\9d\9e×¢×\9c×\99×\9eה}}",
        "grouppage-user": "{{ns:project}}:משתמש רשום",
        "grouppage-autoconfirmed": "{{ns:project}}:משתמש ותיק",
        "grouppage-bot": "{{ns:project}}:בוט",
        "grouppage-sysop": "{{ns:project}}:מפעיל מערכת",
        "grouppage-bureaucrat": "{{ns:project}}:ביורוקרט",
-       "grouppage-suppress": "{{ns:project}}:×\9eסת×\99ר",
+       "grouppage-suppress": "{{ns:project}}:×\9e×¢×\9c×\99×\9d",
        "right-read": "קריאת דפים",
        "right-edit": "עריכת דפים",
        "right-createpage": "יצירת דפים שאינם דפי שיחה",
        "rcshowhidemine": "$1 עריכות שלי",
        "rcshowhidemine-show": "הצגת",
        "rcshowhidemine-hide": "הסתרת",
-       "rcshowhidecategorization": "$1 ×¡×\99×\95×\95×\92 ×\93פ×\99×\9d ×\9cק×\98×\92×\95ר×\99×\95ת",
+       "rcshowhidecategorization": "$1 ×©×\99× ×\95×\99×\99×\9d ×\91ק×\98×\92×\95ר×\99×\95ת ×©×\9c ×\93פ×\99×\9d",
        "rcshowhidecategorization-show": "הצגת",
        "rcshowhidecategorization-hide": "הסתרת",
        "rclinks": "הצגת $1 שינויים אחרונים ב־$2 הימים האחרונים.<br /> $3",
        "recentchangeslinked-page": "שם הדף:",
        "recentchangeslinked-to": "הצגת השינויים בדפים המקשרים לדף הנתון במקום זאת",
        "recentchanges-page-added-to-category": "הדף [[:$1]] נוסף לקטגוריה",
-       "recentchanges-page-added-to-category-bundled": "הדף [[:$1]] [[Special:WhatLinksHere/$1|{{PLURAL:$2|ועוד דף אחד|ועוד $2 דפים}}]] נוספו לקטגוריה",
+       "recentchanges-page-added-to-category-bundled": "הדף [[:$1]] נוסף לקטגוריה, [[Special:WhatLinksHere/$1|והוא מוכלל בדפים אחרים]]",
        "recentchanges-page-removed-from-category": "הדף [[:$1]] הוסר מקטגוריה",
-       "recentchanges-page-removed-from-category-bundled": "הדף [[:$1]] [[Special:WhatLinksHere/$1|{{PLURAL:$2|ועוד דף אחד|ועוד $2 דפים}}]] הוסרו מקטגוריה",
+       "recentchanges-page-removed-from-category-bundled": "הדף [[:$1]] הוסר מקטגוריה, [[Special:WhatLinksHere/$1|והוא מוכלל בדפים אחרים]]",
        "autochange-username": "שינוי אוטומטי של מדיה־ויקי",
        "upload": "העלאת קובץ לשרת",
        "uploadbtn": "העלאה",
        "categories-submit": "הצגה",
        "categoriespagetext": "{{PLURAL:$1|הקטגוריה הבאה כוללת|הקטגוריות הבאות כוללות}} דפים או קובצי מדיה.\n[[Special:UnusedCategories|קטגוריות שאינן בשימוש]] אינן מוצגות כאן.\nראו גם את [[Special:WantedCategories|רשימת הקטגוריות המבוקשות]].",
        "categoriesfrom": "הצגת קטגוריות החל מ:",
-       "special-categories-sort-count": "סידור לפי מספר הדפים",
-       "special-categories-sort-abc": "סידור לפי סדר האלף בית",
        "deletedcontributions": "תרומות משתמש מחוקות",
        "deletedcontributions-title": "תרומות משתמש מחוקות",
        "sp-deletedcontributions-contribs": "תרומות",
        "wlshowhideanons": "משתמשים אנונימיים",
        "wlshowhidepatr": "עריכות בדוקות",
        "wlshowhidemine": "עריכות שלי",
-       "wlshowhidecategorization": "ס×\99×\95×\95×\92 ×\93פ×\99×\9d ×\9cק×\98×\92×\95ר×\99×\95ת",
+       "wlshowhidecategorization": "ש×\99× ×\95×\99×\99×\9d ×\91ק×\98×\92×\95ר×\99×\95ת ×©×\9c ×\93פ×\99×\9d",
        "watchlist-options": "אפשרויות ברשימת המעקב",
        "watching": "בהוספה לרשימת המעקב...",
        "unwatching": "בהסרה מרשימת המעקב...",
        "protectlogtext": "להלן רשימה של שינויי ההגנה על דפים.\nראו גם את [[Special:ProtectedPages|רשימת הדפים המוגנים]] הנוכחית.",
        "protectedarticle": "הפעיל הגנה על הדף \"[[$1]]\"",
        "modifiedarticleprotection": "שינה את רמת ההגנה של הדף \"[[$1]]\"",
-       "unprotectedarticle": "×\91×\99×\98×\9c ×\90ת ×\94×\94×\92× ×\94 ×¢×\9c הדף \"[[$1]]\"",
+       "unprotectedarticle": "×\94ס×\99ר ×\90ת ×\94×\94×\92× ×\94 ×\9eהדף \"[[$1]]\"",
        "movedarticleprotection": "העביר את הגדרות ההגנה מ\"[[$2]]\" ל\"[[$1]]\"",
        "protect-title": "שינוי רמת ההגנה של הדף \"$1\"",
        "protect-title-notallowed": "הצגת רמת ההגנה של הדף \"$1\"",
        "import-comment": "הערה:",
        "importtext": "נא לייצא את הקובץ מאתר המקור באמצעות ב[[Special:Export|כלי הייצוא]].\nשמרו אותו למחשב שלכם והעלו אותו לכאן.",
        "importstart": "מייבא דפים…",
-       "import-revision-count": "{{PLURAL:$1|גרסה אחת|$1 גרסאות}}",
+       "import-revision-count": "&rlm;{{PLURAL:$1|גרסה אחת|$1 גרסאות}}",
        "importnopages": "אין דפים לייבוא.",
        "imported-log-entries": "{{PLURAL:$1|יובאה פעולת יומן אחת|יובאו $1 פעולות יומן}}.",
        "importfailed": "הייבוא נכשל: <nowiki>$1</nowiki>",
        "patrol-log-page": "יומן שינויים בדוקים",
        "patrol-log-header": "יומן זה מציג גרסאות שנבדקו.",
        "log-show-hide-patrol": "$1 יומן שינויים בדוקים",
-       "log-show-hide-tag": "$1 ×\99×\95×\9e×\9f ×\94ת×\92×\99×\95ת",
+       "log-show-hide-tag": "$1 יומן תגיות",
        "deletedrevision": "מחק גרסה ישנה $1",
        "filedeleteerror-short": "שגיאה במחיקת הקובץ: $1",
        "filedeleteerror-long": "שגיאות שאירעו בעת מחיקת הקובץ:\n\n$1",
        "previousdiff": "→ מעבר להשוואת הגרסאות הקודמת",
        "nextdiff": "מעבר להשוואת הגרסאות הבאה ←",
        "mediawarning": "<strong>אזהרה:</strong> סוג קובץ זה עלול להכיל קוד זדוני.\nהרצת הקוד עלולה לסכן את המחשב שלך.",
-       "imagemaxsize": "גודל תמונה מרבי:<br />(לדפי תיאור קובץ)",
-       "thumbsize": "×\94ק×\98× ×\94 ×\9c×\92×\95×\93×\9c ×©×\9c:",
+       "imagemaxsize": "גודל תמונה מרבי:<br /><em>(בדפי תיאור של קבצים)</em>",
+       "thumbsize": "×\92×\95×\93×\9c ×©×\9c ×ª×\9e×\95× ×\95ת ×\9e×\9e×\95×\96ער×\95ת:",
        "widthheightpage": "<span dir=\"ltr\">$1 × $2</span>, {{PLURAL:$3|דף אחד|$3 דפים}}",
        "file-info": "גודל הקובץ: $1, סוג MIME‏: $2",
        "file-info-size": "<span dir=\"ltr\">$1 × $2</span> פיקסלים, גודל הקובץ: $3, סוג MIME‏: $4",
        "confirmemail_body_set": "מישהו, כנראה אתם (מכתובת ה־IP הזאת: $1),\nהגדיר את כתובת הדוא\"ל של החשבון \"$2\" לכתובת הזאת ב{{grammar:תחילית|{{SITENAME}}}}.\n\nכדי לאמת שחשבון זה באמת שייך לכם ולהפעיל את שירותי הדוא\"ל באתר, אנא פתחו את הכתובת הבאה בדפדפן שלכם:\n\n$3\n\nאם החשבון *אינו* שייך לכם, השתמשו בקישור הבא כדי לבטל את אימות כתובת הדוא\"ל:\n\n$5\n\nקוד האימות יפקע ב־$4.",
        "confirmemail_invalidated": "אימות כתובת הדוא\"ל בוטל",
        "invalidateemail": "ביטול האימות של כתובת הדוא\"ל",
+       "notificationemail_subject_changed": "כתובת הדואר האלקטרוני הרשומה ב{{grammar:תחילית|{{SITENAME}}}} הוחלפה",
+       "notificationemail_subject_removed": "כתובת הדואר האלקטרוני הרשומה ב{{grammar:תחילית|{{SITENAME}}}} הוסרה",
+       "notificationemail_body_changed": "מישהו, כנראה אתם (מכתובת ה־IP הזאת: $1),\nשינה את כתובת הדואר האלקטרוני של החשבון \"$2\" ל־\"$3\" ב{{grammar:תחילית|{{SITENAME}}}}.\n\nאם לא אתם עשיתם זאת, אנא צרו קשר מיידי עם מפעיל מערכת באתר.",
+       "notificationemail_body_removed": "מישהו, כנראה אתם (מכתובת ה־IP הזאת: $1),\nהסיר את כתובת הדואר האלקטרוני של החשבון \"$2\" ב{{grammar:תחילית|{{SITENAME}}}}.\n\nאם לא אתם עשיתם זאת, אנא צרו קשר מיידי עם מפעיל מערכת באתר.",
        "scarytranscludedisabled": "[הכללת דפים בין אתרים מבוטלת]",
        "scarytranscludefailed": "[אחזור התבנית נכשל עבור $1]",
        "scarytranscludefailed-httpstatus": "[אחזור התבנית נכשל עבור $1&rlm;: HTTP $2]",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "התחברויות המבוססות על עוגיות",
        "sessionprovider-nocookies": "ייתכן שאפשרות השימוש בעוגיות כבויה. יש לוודא שאפשרות השימוש בעוגיות מופעלת ולהתחיל מחדש.",
        "randomrootpage": "דף שורש אקראי",
-       "log-action-filter-block": "סוג החסימה:",
-       "log-action-filter-delete": "סוג המחיקה:",
+       "log-action-filter-block": "סוג החסימות:",
+       "log-action-filter-contentmodel": "סוג השינויים במודל תוכן:",
+       "log-action-filter-delete": "סוג המחיקות:",
+       "log-action-filter-import": "סוג פעולות הייבוא:",
+       "log-action-filter-managetags": "סוג פעולות ניהול התגיות:",
+       "log-action-filter-move": "סוג ההעברות:",
+       "log-action-filter-newusers": "סוג יצירות החשבון:",
        "log-action-filter-patrol": "סוג השינויים הבדוקים:",
        "log-action-filter-protect": "סוג ההגנות:",
+       "log-action-filter-rights": "סוג שינויי ההרשאה",
+       "log-action-filter-suppress": "סוג ההעלמות",
        "log-action-filter-upload": "סוג ההעלאות:",
        "log-action-filter-all": "הכול",
-       "log-action-filter-block-block": "חסימה",
-       "log-action-filter-block-reblock": "שינוי חסימה",
-       "log-action-filter-block-unblock": "שחרור חסימה",
+       "log-action-filter-block-block": "חסימות",
+       "log-action-filter-block-reblock": "שינויי חסימה",
+       "log-action-filter-block-unblock": "שחרורי חסימה",
+       "log-action-filter-contentmodel-change": "שינויים במודל תוכן",
+       "log-action-filter-contentmodel-new": "יצירות דפים עם מודל תוכן לא־סטנדרטי",
        "log-action-filter-delete-delete": "מחיקת דפים",
-       "log-action-filter-delete-restore": "שחזור דפים",
+       "log-action-filter-delete-restore": "שחזור דפים מחוקים",
        "log-action-filter-delete-event": "מחיקת פעולות יומן",
        "log-action-filter-delete-revision": "מחיקת גרסאות",
+       "log-action-filter-import-interwiki": "פעולות ייבוא מאתרי ויקי אחרים",
+       "log-action-filter-import-upload": "פעולות ייבוא על־ידי העלאת XML",
+       "log-action-filter-managetags-create": "יצירות של תגיות",
+       "log-action-filter-managetags-delete": "מחיקות של תגיות",
+       "log-action-filter-managetags-activate": "הפעלות של תגיות",
+       "log-action-filter-managetags-deactivate": "ביטול הפעלות של תגיות",
+       "log-action-filter-move-move": "העברות ללא דריסת הפניות",
+       "log-action-filter-move-move_redir": "העברות עם דריסת הפניות",
+       "log-action-filter-newusers-create": "יצירות על־ידי משתמשים אנונימיים",
+       "log-action-filter-newusers-create2": "יצירות על־ידי משתמשים רשומים",
+       "log-action-filter-newusers-autocreate": "יצירות אוטומטיות",
+       "log-action-filter-newusers-byemail": "יצירות עם סיסמה שנשלחה בדוא\"ל",
        "log-action-filter-patrol-patrol": "סימוניים ידניים כבדוק",
        "log-action-filter-patrol-autopatrol": "סימונים אוטומטיים כבדוק",
        "log-action-filter-protect-protect": "הגנות",
        "log-action-filter-protect-modify": "שינויי הגנה",
        "log-action-filter-protect-unprotect": "הסרות הגנה",
+       "log-action-filter-protect-move_prot": "העברות של הגנה",
+       "log-action-filter-rights-rights": "שינויים ידניים",
+       "log-action-filter-rights-autopromote": "שינויים אוטומטיים",
+       "log-action-filter-suppress-event": "העלמות של פעולות יומן",
+       "log-action-filter-suppress-revision": "העלמות של גרסאות",
+       "log-action-filter-suppress-delete": "העלמות של דפים",
+       "log-action-filter-suppress-block": "העלמות של משתמשים באמצעות חסימה",
+       "log-action-filter-suppress-reblock": "העלמות של משתמשים באמצעות חסימה מחדש",
        "log-action-filter-upload-upload": "העלאות חדשות",
        "log-action-filter-upload-overwrite": "דריסת קבצים קיימים"
 }
index a20bfe8..b5f461d 100644 (file)
        "categories-submit": "दिखाएँ",
        "categoriespagetext": "निम्नोक्त {{PLURAL:$1|श्रेणी|श्रेणियों}} में पृष्ठ या मीडिया है।\nजिन श्रेणियों का [[Special:UnusedCategories|अप्रयुक्त श्रेणियाँ]] यहाँ नहीं दिखाई गई हैं।\n[[Special:WantedCategories|वांछित श्रेणियाँ]] भी देखें।",
        "categoriesfrom": "इस अक्षर से शुरू होने वाली श्रेणीयाँ दर्शायें:",
-       "special-categories-sort-count": "संख्यानुसार शक्रमांकित करें",
-       "special-categories-sort-abc": "वर्णानुक्रम के अनुसार दर्शायें",
        "deletedcontributions": "हटाए गए सदस्य योगदान",
        "deletedcontributions-title": "हटाए गए सदस्य योगदान",
        "sp-deletedcontributions-contribs": "योगदान",
index e393e09..6586e89 100644 (file)
        "categories": "Vibhag",
        "categoriespagetext": "Niche ke {{PLURAL:$1|vibhag me|vibhag me}}  panna aur media hae.\n[[Special:UnusedCategories|Unused categories]] hian nai dekhawa jaawe hae.\n[[Special:WantedCategories|wanted categories]] ke bhi dekho.",
        "categoriesfrom": "Vibhag jon ki hian pe suruu hoe hai, ke dekhao:",
-       "special-categories-sort-count": "ginti se sort karo",
-       "special-categories-sort-abc": "alphabetically sort karo",
        "deletedcontributions": "Sadasya ke yogdaan ke mitae dia hai",
        "deletedcontributions-title": "Sadasya ke yogdaan ke mitae dia hai",
        "sp-deletedcontributions-contribs": "yogdaan",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|badlao|badlao}} import karaa gais hae",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|badlao|badlao}} $2 se import karaa gais hae",
        "javascripttest": "JavaScript ke testing",
-       "javascripttest-pagetext-noframework": "Ii panna ke JavaScript test ke kare ke khatir reserve karaa gais hae.",
-       "javascripttest-pagetext-unknownframework": "Anjaan testing framework \"$1\".",
        "javascripttest-pagetext-unknownaction": "Unknown action \"$1\".",
-       "javascripttest-pagetext-frameworks": "Meharbaani kar ke ek testing framework ke chuno: $1",
-       "javascripttest-pagetext-skins": "Test kare ke khatir ek chamrraa ke chuno:",
        "javascripttest-qunit-intro": "mediawiki.org me [$1 testing documentation] ke dekho.",
        "tooltip-pt-userpage": "Aap ke sadasya panna",
        "tooltip-pt-anonuserpage": "IP jisme se aap edit karta hai ke sadasya panna",
        "version-libraries-library": "Library",
        "version-libraries-version": "Version",
        "redirect": "File, sadasya, panna, nai to, revision ID se redirect",
-       "redirect-legend": "File nai to panna pe redirect karo",
        "redirect-summary": "Ii khaas panna ek file (given the filename), panna (given a revision ID or page ID), nai to, sadasya ke panna (given a numeric user ID) pe redirect hoe hae.  Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Jaao",
        "redirect-lookup": "Lookup:",
        "redirect-not-exists": "Value ke nai paawa gais hae",
        "fileduplicatesearch": "Duplicate files ke khojo",
        "fileduplicatesearch-summary": "Duplicate files based on hash values ke khojo.",
-       "fileduplicatesearch-legend": "Ek duplicate ke khojo",
        "fileduplicatesearch-filename": "File ke naam:",
        "fileduplicatesearch-submit": "Khojo",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />File size: $3<br />MIME type: $4",
index 172ada9..0c33094 100644 (file)
        "categories-submit": "Prikaži",
        "categoriespagetext": "Sljedeće {{PLURAL:$1|kategorija sadrži|kategorije sadrže}} stranice ili datoteke.\n[[Special:UnusedCategories|Nekorištene kategorije]] ovdje nisu prikazane.\nTakođer pogledajte [[Special:WantedCategories|tražene kategorije]].",
        "categoriesfrom": "Prikaži kategorije počevši od:",
-       "special-categories-sort-count": "razvrstavanje po broju",
-       "special-categories-sort-abc": "abecedno razvrstavanje",
        "deletedcontributions": "Obrisani suradnički doprinosi",
        "deletedcontributions-title": "Obrisani suradnički doprinosi",
        "sp-deletedcontributions-contribs": "doprinosi",
index f9e8744..af3840c 100644 (file)
        "categories": "Kategoriee",
        "categoriespagetext": "Follichende {{PLURAL:$1|Kategorie enthält|Kategorie enthalle}} Seite orrer Dateie.\n[[Special:UnusedCategories|Verwaiste Kategorie]] werre hie net uffgeführt.\nSieh ooch die List von der [[Special:WantedCategories|gewünschte Kategorie]].",
        "categoriesfrom": "Zeich Kategorie ab:",
-       "special-categories-sort-count": "Sortierung noh Oonzoohl",
-       "special-categories-sort-abc": "Sortierung noh Alphabet",
        "deletedcontributions": "Abgewischte Beiträch",
        "deletedcontributions-title": "Abgewischte Beiträch",
        "sp-deletedcontributions-contribs": "Benutzerbeiträche",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|Version|Versione}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|Version|Versione}} von $2",
        "javascripttest": "JavaScript-Test",
-       "javascripttest-pagetext-noframework": "Die Seit ist JavaSkript-Tests voarbehalt.",
-       "javascripttest-pagetext-unknownframework": "Unbekanntes Framework \"$1\".",
-       "javascripttest-pagetext-frameworks": "Bittschön wähl en von der follichende Prüfumgebunge aus: $1",
-       "javascripttest-pagetext-skins": "Wähl en Benutzeroberfläch zur Doorrichführung von der Test aus:",
        "javascripttest-qunit-intro": "Sieh die [$1 Dokumentation zu Tests] uff mediawiki.org",
        "tooltip-pt-userpage": "Dein Benutzerseit",
        "tooltip-pt-anonuserpage": "Benutzerseit von der IP-Adress von der aus du Ännrunge doorrichführst",
        "version-libraries-description": "Beschreibung",
        "version-libraries-authors": "Autore",
        "redirect": "Weiterleitung uff Benutzerseit, Seit, Seiteversion orrer Datei",
-       "redirect-legend": "Weiterleitung uff en Benutzerseit, Seit, Seiteversion orrer Datei",
        "redirect-summary": "Die Spezialseit leitet uff en Benutzerseit (numerische Benutzerkennung oongeb), Seit (Seitekennung oongeb), Seiteversion (Versionskennung oongeb) orrer Datei (Dateinoome oongeb) weiter. Benutzung: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] orrer [[{{#Special:Redirect}}/file/Example.jpg]].",
        "redirect-submit": "Los, geh",
        "redirect-lookup": "Suche:",
        "redirect-not-exists": "Der Weart woard net gefund",
        "fileduplicatesearch": "Dateiduplikatsuch",
        "fileduplicatesearch-summary": "Such noh Dateiduplikate uff Basis von ihres Hashwearte.",
-       "fileduplicatesearch-legend": "Such noh Duplikate",
        "fileduplicatesearch-filename": "Dateinoome:",
        "fileduplicatesearch-submit": "Such",
        "fileduplicatesearch-info": "$1 × $2 Pixel<br />Dateigröss: $3<br />MIME-Typ: $4",
index ef601ec..f8069bf 100644 (file)
        "categories": "Kategorije",
        "categoriespagetext": "{{PLURAL:$1|Slědowaca kategorija wobsahuje|Slědowacej kategoriji wobsahujetej|Slědowace kategorije wobsahuja|Slědowace kategorije wobsahuja}} strony abo medije.\n[[Special:UnusedCategories|Njewužiwane kategorije]] so tu njepokazuja.\nHlej tež [[Special:WantedCategories|požadane kategorije]].",
        "categoriesfrom": "Kategorije pokazać, započinajo z:",
-       "special-categories-sort-count": "Po ličbje sortěrować",
-       "special-categories-sort-abc": "Alfabetisce sortěrować",
        "deletedcontributions": "wušmórnjene přinoški",
        "deletedcontributions-title": "wušmórnjene přinoški",
        "sp-deletedcontributions-contribs": "přinoški",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|wersija importowana|wersiji importowanej|wersije importowane|wersijow importowane}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|wersija|wersiji|wersije|wersijow}} z $2 {{PLURAL:$1|importowana|importowanej|importowane|importowanych}}",
        "javascripttest": "JavaScriptowy test",
-       "javascripttest-pagetext-noframework": "Tuta strona je za přewjedźenje javascriptowych testow přewostajena.",
-       "javascripttest-pagetext-unknownframework": "Njeznaty wobłuk \"$1\".",
        "javascripttest-pagetext-unknownaction": "Njeznata akcija \"$1\"",
-       "javascripttest-pagetext-frameworks": "Prošu wubjer jedyn ze slědowacych testowanskich wobłukow: $1",
-       "javascripttest-pagetext-skins": "Wubjer drastu za přewjedźenje testow:",
        "javascripttest-qunit-intro": "Hlej [$1 testowansku dokumentaciju] na mediawiki.org.",
        "tooltip-pt-userpage": "Twoja wužiwarska strona",
        "tooltip-pt-anonuserpage": "Wužiwarska strona IP-adresy, z kotrejž tuchwilu dźěłaš",
        "version-libraries-library": "Biblioteka",
        "version-libraries-version": "Wersija",
        "redirect": "Po datajowym mjenje, wužiwarju, stronje abo wersijowym ID dale sposrědkować",
-       "redirect-legend": "Do dataje abo strony dale sposrědkować",
        "redirect-summary": "Tuta specialna strona so do dataje (datajowe mjeno je podate), strony (wersijowy ID abo ID strony je podaty) abo wužiwarskeje strony (numeriski wužiwarski ID je podaty) dale sposrědkuje. Wužiće:\n[[{{#Special:Redirect}}/file/Přikład.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Los",
        "redirect-lookup": "Pytać:",
        "redirect-not-exists": "Hódnota njeje so namakała",
        "fileduplicatesearch": "Dwójne dataje pytać",
        "fileduplicatesearch-summary": "Pytanje za duplikatnymi datajemi na zakładźe jich hašoweje hódnoty.",
-       "fileduplicatesearch-legend": "Duplikaty pytać",
        "fileduplicatesearch-filename": "Datajowe mjeno:",
        "fileduplicatesearch-submit": "Pytać",
        "fileduplicatesearch-info": "$1 × $2 pikselow<br />Datajowa wulkosć: $3<br />Typ MIME: $4",
index f5679bf..621b567 100644 (file)
        "revdelete-unsuppress": "Korlátozások eltávolítása a visszaállított változatokról",
        "revdelete-log": "Ok:",
        "revdelete-submit": "Alkalmazás a kiválasztott {{PLURAL:$1|változatra|változatokra}}",
-       "revdelete-success": "'''A változat láthatósága sikeresen frissítve.'''",
+       "revdelete-success": "A változat láthatósága sikeresen frissítve.",
        "revdelete-failure": "'''Nem sikerült frissíteni a változat láthatóságát:'''\n$1",
        "logdelete-success": "'''Az esemény láthatóságának beállítása sikeresen elvégezve.'''",
        "logdelete-failure": "'''Nem sikerült módosítani a naplóbejegyzés láthatóságát:'''\n$1",
        "uploadstash-badtoken": "A művelet végrehajtása sikertelen volt. Lehetséges, hogy lejártak a szerkesztést hitelesítő adataid. Próbáld újra!",
        "uploadstash-errclear": "A fájlok törlése nem sikerült.",
        "uploadstash-refresh": "Fájlok listájának frissítése",
+       "uploadstash-thumbnail": "bélyegkép megjelenítése",
        "invalid-chunk-offset": "Érvénytelen darab eltolás",
        "img-auth-accessdenied": "Hozzáférés megtagadva",
        "img-auth-nopathinfo": "Hiányzó PATH_INFO.\nA szerver nincs beállítva, hogy továbbítsa ezt az információt.\nLehet, hogy CGI-alapú, és nem támogatja az img_auth-ot.\nLásd https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization!",
        "filehist-comment": "Megjegyzés",
        "imagelinks": "Fájlhasználat",
        "linkstoimage": "Az alábbi {{PLURAL:$1|lap hivatkozik|lapok hivatkoznak}} erre a fájlra:",
-       "linkstoimage-more": "Több, mint {{PLURAL:$1|egy|$1}} oldal hivatkozik erre a fájlra.\nA következő lista csak az {{PLURAL:$1|első linket|első $1 linket}} tartalmazza.\nA teljes lista [[Special:WhatLinksHere/$2|ezen a lapon]] található meg.",
+       "linkstoimage-more": "Több mint $1 oldal hivatkozik erre a fájlra.\nA következő lista csak az {{PLURAL:$1|első linket|első $1 linket}} tartalmazza.\nA teljes lista [[Special:WhatLinksHere/$2|ezen a lapon]] található meg.",
        "nolinkstoimage": "Erre a fájlra nem hivatkozik lap.",
        "morelinkstoimage": "[[Special:WhatLinksHere/$1|További hivatkozások]] megtekintése",
        "linkstoimage-redirect": "$1 (fájlátirányítás) $2",
        "apisandbox-jsonly": "Az API-homokozó használatához JavaScriptre van szükség.",
        "apisandbox-api-disabled": "API le van tiltva ezen az oldalon.",
        "apisandbox-intro": "Ezen az oldalon kísérletezhetsz a <strong>MediaWiki web service API</strong>-val.\nA használattal kapcsolatos további részletek az [[mw:API:Main page|API-dokumentációnál]] találhatók. Példa: [//www.mediawiki.org/wiki/API#A_simple_example olvasd el a főoldal tartalomjegyzékét]. További példákért válassz egy tevékenységet!\n\nFigyelj rá, hogy bár ez csak egy „homokozó”, ettől még az általad végzett műveletek módosíthatják a wikit!",
+       "apisandbox-fullscreen": "Panel kinyitása",
        "apisandbox-unfullscreen": "Lap mutatása",
        "apisandbox-submit": "Kérés végrehajtása",
        "apisandbox-reset": "Törlés",
        "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",
-       "special-categories-sort-abc": "rendezés ABC szerint",
        "deletedcontributions": "Törölt szerkesztések",
        "deletedcontributions-title": "Törölt szerkesztések",
        "sp-deletedcontributions-contribs": "közreműködései",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sütialapú munkamenetek",
        "sessionprovider-nocookies": "A sütik le lehetnek tiltva. Engedélyezd a sütiket, és próbáld meg újra!",
        "randomrootpage": "Véletlen lap a gyökérből",
+       "log-action-filter-delete": "Törlés típusa:",
+       "log-action-filter-import": "Importálás típusa:",
        "log-action-filter-all": "Mind",
        "log-action-filter-block-block": "Blokk",
        "log-action-filter-block-reblock": "Blokk módosítása",
-       "log-action-filter-block-unblock": "Blokk feloldása"
+       "log-action-filter-block-unblock": "Blokk feloldása",
+       "log-action-filter-newusers-autocreate": "Automatikus létrehozás",
+       "log-action-filter-protect-protect": "Lapvédelem",
+       "log-action-filter-protect-unprotect": "Védelem feloldása",
+       "log-action-filter-upload-upload": "Új feltöltés"
 }
index eab02cc..ebba631 100644 (file)
        "categories-submit": "Monstrar",
        "categoriespagetext": "Le sequente {{PLURAL:$1|categoria|categorias}} contine paginas o multimedia.\nLe [[Special:UnusedCategories|categorias non usate]] non se monstra hic.\nVide etiam le [[Special:WantedCategories|categorias desirate]].",
        "categoriesfrom": "Monstrar categorias a partir de:",
-       "special-categories-sort-count": "ordinar per numero",
-       "special-categories-sort-abc": "ordinar alphabeticamente",
        "deletedcontributions": "Contributiones delite de usatores",
        "deletedcontributions-title": "Contributiones delite de usatores",
        "sp-deletedcontributions-contribs": "contributiones",
index 3036682..e19b63b 100644 (file)
        "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",
-       "special-categories-sort-abc": "urutkan menurut abjad",
        "deletedcontributions": "Kontribusi yang dihapus",
        "deletedcontributions-title": "Kontribusi yang dihapus",
        "sp-deletedcontributions-contribs": "kontribusi",
        "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 {{GENDER:|pengguna Anda}}",
        "tooltip-pt-anonuserpage": "Halaman pengguna IP Anda",
        "version-libraries-description": "Deskripsi",
        "version-libraries-authors": "Pembuat",
        "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-lookup": "Pencarian:",
        "redirect-not-exists": "Nilai tidak ditemukan",
        "fileduplicatesearch": "Pencarian berkas duplikat",
        "fileduplicatesearch-summary": "Pencarian duplikat berkas berdasarkan nilai hash-nya.",
-       "fileduplicatesearch-legend": "Cari duplikat",
        "fileduplicatesearch-filename": "Nama berkas:",
        "fileduplicatesearch-submit": "Cari",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Besar berkas: $3<br />Tipe MIME: $4",
index 66eab0a..e54d6cf 100644 (file)
        "categories-submit": "Ipakita",
        "categoriespagetext": "Ti sumaganad a {{PLURAL:$1|kategoria ket aglaon|katkategoria ket aglaon}} kadagiti panid wenno midia.\n[[Special:UnusedCategories|Dagiti saan a nausar a kategoria]] ket saan a maiparang ditoy.\nKitaen met [[Special:WantedCategories|dagiti makiddaw a kategoria]].",
        "categoriesfrom": "Ipakita dagiti kategoria a mangrugi iti:",
-       "special-categories-sort-count": "ilasin babaen ti bilang",
-       "special-categories-sort-abc": "ilasin nga alpabetiko",
        "deletedcontributions": "Dagiti naikkat a kontribusion ti agar-aramat",
        "deletedcontributions-title": "Dagiti naikkat a kontribusion ti agar-aramat",
        "sp-deletedcontributions-contribs": "dagiti kontribusion",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|a rebision|kadagiti rebision}} ti naala",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|rebision|dagiti rebision}} ti naala manipud ti $2",
        "javascripttest": "Panagsubok ti JavaScript",
-       "javascripttest-pagetext-noframework": "Daytoy a panid ket naireserba para iti panagpataray kadagiti panagsubok ti JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Di ammo a tabas ti panagsubok ti \"$1\".",
        "javascripttest-pagetext-unknownaction": "Di ammo a tignay ti \"$1\".",
-       "javascripttest-pagetext-frameworks": "Pangngaasi nga agpili ti maysa kadagiti sumaganad a tabas ti panagsubok: $1",
-       "javascripttest-pagetext-skins": "Agpili ti kudil a pangipatarayan kadagiti panagsubok:",
        "javascripttest-qunit-intro": "Kitaen ti [ $1 dukomentasion ti panagsubok] idiay mediawiki.org.",
        "tooltip-pt-userpage": "Panidmo nga agar-aramat",
        "tooltip-pt-anonuserpage": "Ti panid ti agar-aramat para iti daytoy nga IP a pagtaengan a kas ur-urnosem",
        "version-libraries-description": "Deskripsion",
        "version-libraries-authors": "Dagiti mannurat",
        "redirect": "Baw-ing babaen ti papeles, agar-aramat, panid, rebision, wenno ID ti listaan",
-       "redirect-legend": "Ibaw-ing iti papeles wenno panid",
        "redirect-summary": "Daytoy nga espesial a panid ket maibaw-ing iti papeles (iti nagan ti papeles), ti panid (iti ID ti rebision wenno ID ti panid), wenno ti panid ti agar-aramat (iti numeriko nga ID ti agar-aramat). Panagusar:\n[[{{#Special:Redirect}}/file/Example.jpg]], \n[[{{#Special:Redirect}}/page/64308]], \n[[{{#Special:Redirect}}/revision/328429]], wenno\n[[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Inkan",
        "redirect-lookup": "Kitaen:",
        "redirect-not-exists": "Saan a nabirukan ti pateg",
        "fileduplicatesearch": "Agbiruk kadagiti duplikado a papeles",
        "fileduplicatesearch-summary": "Agbiruk kadagiti duplikado a papeles a naibatay kadagiti pateg ti hash.",
-       "fileduplicatesearch-legend": "Agbiruk para iti duplikado",
        "fileduplicatesearch-filename": "Nagan ti papeles:",
        "fileduplicatesearch-submit": "Biruken",
        "fileduplicatesearch-info": "$1 × $2 a piksel<br />Rukod ti papeles: $3<br />Kita ti MIME: $4",
index cb12531..faa6b5a 100644 (file)
        "editfont-monospace": "Башхалон зарба",
        "editfont-sansserif": "Белгало йоаца шрифт",
        "editfont-serif": "Белгало йола шрифт",
-       "sunday": "Ð\9a|иранди",
-       "monday": "Ð\9eршот",
-       "tuesday": "Шинара",
+       "sunday": "кIиранди",
+       "monday": "оршот",
+       "tuesday": "шинара",
        "wednesday": "Кхаьра",
-       "thursday": "Ð\95ра",
-       "friday": "Ð\9fӀаьраска",
-       "saturday": "Шоатта",
+       "thursday": "ера",
+       "friday": "пӀаьраска",
+       "saturday": "шоатта",
        "sun": "К|и",
        "mon": "Ор",
-       "tue": "Ши",
+       "tue": "Шин",
        "wed": "Кха",
        "thu": "Ер",
        "fri": "П|аь",
@@ -86,7 +86,7 @@
        "november": "Лай чилла бутт",
        "december": "Чан-тар бутт",
        "january-gen": "Нажгамсхой бетт",
-       "february-gen": "Саькур бетт",
+       "february-gen": "Саь-кур бетт",
        "march-gen": "Муттхьол бетт",
        "april-gen": "Тушоли бетт",
        "may-gen": "Села бетт",
        "nov": "Лай чилла",
        "dec": "Чан-тар",
        "january-date": "Нажгамсхой $1",
-       "february-date": "Саькур $1",
+       "february-date": "Саь-кур бутт $1",
        "march-date": "Муттхьол $1",
        "april-date": "Тушоли $1",
        "may-date": "Села бутт $1",
        "subcategories": "Чуракатагаш",
        "category-media-header": "\"$1\" Категори чура файлаш",
        "category-empty": "''Укх катага чу цхьаккха оаг|онаш е паьлаш яц.''",
-       "hidden-categories": "{{PLURAL:$1|1=Ð\9aÑ\8aайла ÐºÐ°Ñ\82аг|Ð\9aÑ\8aайла ÐºÐ°Ñ\82агаш}}",
+       "hidden-categories": "{{PLURAL:$1|1=Ð\9aÑ\8aайла ÐºÐ°Ñ\82егоÑ\80и|Ð\9aÑ\8aайла ÐºÐ°Ñ\82егоÑ\80еш}}",
        "hidden-category-category": "Къайла катагаш",
        "category-subcat-count": "{{PLURAL:$2|Укх катагa т|ехьара бухкатаг чулоац.|{{PLURAL:$1|1=$1 бухкатаг хьахьекха я|$1 бухкатагаш хьахьекха я}} $2 йолачарex.}}",
        "category-subcat-count-limited": "Укх катагa чу {{PLURAL:$1|1=$1 к|алкатаг|$1 к|алкатагаш}}.",
        "printableversion": "Зарба тохара верси",
        "permalink": "Даиман латташ йола хьожаярг",
        "print": "Кепатохар",
-       "view": "Ð\91|аÑ\80гÑ\82аÑ\81Ñ\81ам",
+       "view": "Ð¥Ñ\8cажаÑ\80",
        "view-foreign": "Мазаоаг|он чу $1 хьажа",
        "edit": "Нийсде",
        "edit-local": "Хувца локальни йоазонца сурт оттадар",
        "categorypage": "Катага оаг|oн т|а б|аргтасса",
        "viewtalkpage": "Дувцамага б|аргтасса",
        "otherlanguages": "Кхыча меттаех",
-       "redirectedfrom": "($1 т|aра хьадейта да)",
+       "redirectedfrom": "($1 тIaра хьахьожадаь да)",
        "redirectpagesub": "Д|а-хьа дайта оаг|ув",
        "redirectto": "ТIахьожадар укхаза:",
-       "lastmodifiedat": "Укх оагIoн тIехьара хувцам: $2, $1.",
+       "lastmodifiedat": "УкÑ\85 Ð¾Ð°Ð³Ioн Ñ\82IеÑ\85Ñ\85Ñ\8cаÑ\80а Ñ\85Ñ\83вÑ\86ам: $2, $1.",
        "viewcount": "Укх оаг|oн т|а б|аргтассаб {{PLURAL:$1|цхьааца\n|$1 times}}. {{PLURAL:$1|1=цхьазза|$1за}}.",
        "protectedpage": "Лорама оаг|ув",
        "jumpto": "Дехьавала укхаза:",
        "aboutpage": "Project:Лоацам",
        "copyright": "$1 чулоацамаца тIакхоачаш да.",
        "copyrightpage": "{{ns:project}}:Яздаьчунна бокъо",
-       "currentevents": "Ð¥Ó\80анзаÑ\80а Ñ\85оамаш",
-       "currentevents-url": "Project:Ð¥Ó\80анзаÑ\80а Ñ\85оамаш",
+       "currentevents": "Ð¥Ó\80анзаÑ\80а Ñ\85инна Ñ\85Iамаш",
+       "currentevents-url": "Project:Ð¥Ó\80анзаÑ\80а Ñ\85инна Ñ\85Iамаш",
        "disclaimers": "Бехктокхам хьацаэцар",
        "disclaimerpage": "Project:Бехктокхам хьацаэцар",
        "edithelp": "Хувцама гӀо",
        "editold": "хувца",
        "viewsourceold": "xьайоагӀа къайлорг тӀа бӀаргтасса",
        "editlink": "хувца",
-       "viewsourcelink": "xьайоагӀа къайлорг тӀа бӀаргтасса",
+       "viewsourcelink": "Хьажа дIадолалу ко́дага",
        "editsectionhint": "Дáкъа хувца: $1",
        "toc": "Чулоацам",
        "showtoc": "хьахьокха",
        "nstab-mediawiki": "Хоам",
        "nstab-template": "Кеп",
        "nstab-help": "ГӀо",
-       "nstab-category": "Ð\9aаÑ\82аг",
+       "nstab-category": "Ð\9aаÑ\82егоÑ\80и",
        "mainpage-nstab": "Кертера оагӀув",
        "nosuchaction": "Цу тайпара дулархIам бац",
        "nosuchspecialpage": "Изза мо гӀон оагӀув яц",
        "copyrightwarning": "Теркам бе, $2 ($1 хьажа) бокъонаца лорадеш, тӀахьежама кӀала уллаш, оаш мел чуяккхаш дола хоамаш, яздамаш долга.\nНаггахь санна шоай яздамаш пурам доацаш мала волашву саго хувца е кхы дола моттиге яздердолаш, безам беци, укхаз Ӏочуцаяздеча, дикаьгӀа да.<br />\nОаш дош лу, даь дола хувцама да волга/йолга, е оаш пурам долаш Ӏочуяздеш да кхычера меттигара шоай яздамаш/хоамаш.\n'''Яздархой бокъоца лорадеш дола хӀамаш, цара пурам доацаш, Ӏочумаязаде!'''",
        "templatesused": "Укх бӀаргоагӀувни оагӀув тӀа лелаяь {{PLURAL:$1|1=Куцкеп|Куцкепаш}}:",
        "templatesusedpreview": "Хьалхе бӀаргтассама оагӀув тӀа леладеш дола {{PLURAL:$1|1=Куцкеп|Куцкепаш}}:",
-       "template-protected": "(лоÑ\80ам Ð»Ð°Ñ\8cÑ\86а)",
+       "template-protected": "(лоÑ\80адаÑ\8c Ð´а)",
        "template-semiprotected": "(дакъа-лорам)",
        "hiddencategories": "Ер оагӀув укх {{PLURAL:$1|1=къайла цатегаца|къайла цатегашца}} дакъа лоаца:",
        "permissionserrorstext-withaction": "$2 де бокъо яц {{PLURAL:$1|1=из бахьан долаш|из бахьанаш долаш}}:",
        "post-expand-template-argument-category": "Куцкепий теркамза |аьлдешаш чулоаца оагӀувнаш",
        "viewpagelogs": "Укх оагӀува тептараш хьокха",
        "currentrev-asof": "тӀеххьара верси $1",
-       "revisionasof": "$1 доржам",
+       "revisionasof": "Верси $1",
        "revision-info": "$1; $2 хувцам",
-       "previousrevision": "â\86\90 XÑ\8cалÑ\85йоаг|аÑ\80аÑ\88",
+       "previousrevision": "â\86\90 XÑ\8cалÑ\85аÑ\80Ñ\87а",
        "nextrevision": "ТIехьайоагIараш →",
        "currentrevisionlink": "ХIанзара верси",
        "cur": "хӀанз.",
        "lineno": "МугI $1:",
        "compareselectedversions": "Хьаржа доржамаша тарона тIа хьажа",
        "editundo": "юхавала/яла",
-       "searchresults": "ТоÑ\85кама Ð³IÑ\83лакÑ\85аÑ\85илар",
-       "searchresults-title": "\"$1\" тохка",
+       "searchresults": "Ð\9bаÑ\85аÑ\80 Ñ\87акÑ\85доалаÑ\88 ÐºÐ¾Ñ\80адаÑ\8cр",
+       "searchresults-title": "«$1» лахар",
        "notextmatches": "ОагIувнаша яздамий вIашагIакхетараш дац",
        "prevn": "{{PLURAL:$1|хьалхйоагlар $1|хьалхйоагlараш $1|хьалхйоагlараш $1}}",
        "nextn": "{{PLURAL:$1|1=тIехьайоагIар|тIехьайоагIараш}} $1",
        "shown-title": "Хьóкха $1 {{PLURAL:$1|даь йоазо|даь йоазонаш}} укх оáгIувна тIа",
        "viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) хьажа",
        "searchmenu-exists": "'''Укх масса-хьахьоадайтамач ер оаг|ув \"[[:$1]]\" я'''",
-       "searchmenu-new": "'''Укх \"[[:$1]]\" масса-хьахоадайтамач оагIув хьае!'''",
-       "searchprofile-articles": "Ð\93омлен Ð¾Ð°Ð³IÑ\83внаш",
-       "searchprofile-images": "Медифаг",
-       "searchprofile-everything": "Массана",
-       "searchprofile-advanced": "ШеÑ\80а Ñ\8f",
-       "searchprofile-articles-tooltip": "$1чу лахар",
-       "searchprofile-images-tooltip": "Ð\9fаÑ\8cлий лахар",
-       "searchprofile-everything-tooltip": "Ð\9cаÑ\81Ñ\81адола Ð¾Ð°Ð³IÑ\83вний Ð»Ð°Ñ\85аÑ\80 (дÑ\83вÑ\86ама Ð¾Ð°Ð³IÑ\83внаш чулоацаш)",
+       "searchmenu-new": "<strong>Кхолла оагIув «[[:$1]]» укх вики-проекте!</strong>\n{{PLURAL:$2|0=|Иштта хьажа хьай лийха оагIувнага.|Иштта хьажа хьай лахара хьахиннарашка.}}",
+       "searchprofile-articles": "Ð\9aеÑ\80Ñ\82еÑ\80а Ð¾Ð°Ð³Iонаш",
+       "searchprofile-images": "Мультимедиа",
+       "searchprofile-everything": "Массанахьа",
+       "searchprofile-advanced": "ШеÑ\80даÑ\8c",
+       "searchprofile-articles-tooltip": "$1 чу лахар",
+       "searchprofile-images-tooltip": "ФайлаÑ\88 лахар",
+       "searchprofile-everything-tooltip": "Ð\9cаÑ\81Ñ\81айола Ð¾Ð°Ð³IонаÑ\88 Ñ\82Iа Ð»Ð°Ñ\85аÑ\80 (дÑ\83вÑ\86аÑ\80 Ð¾Ñ\82Ñ\82адаÑ\80а Ð¾Ð°Ð³Iонаш чулоацаш)",
        "searchprofile-advanced-tooltip": "Iочуязаяь цIераренашках лаха",
        "search-result-size": "$1 ({{PLURAL:$2|$2 дош|$2 дешаш}})",
        "search-result-category-size": "{{PLURAL:$1|1=$1 дакъа|$1 дакъаш}} ({{PLURAL:$2|1=$2 кIалцатег|$2 кIалцатегаш}}, {{PLURAL:$3|1=$3 паьла|$3 паьлий}})",
        "right-createtalk": "дувцама оагIувний хьакхоллам",
        "right-move": "ОагIувний цIи хувца",
        "right-movefile": "Паьлий цIи хувца",
-       "newuserlogpage": "Ð\94акÑ\8aалаÑ\8cÑ\86аÑ\80Ñ\85оÑ\88ий Ð´IаÑ\8fзбeнна таптар",
+       "newuserlogpage": "Ð\94оакÑ\8aаÑ\88Ñ\85ой Ð´IаÑ\8fзбаÑ\8c таптар",
        "rightslog": "Дакъалаьцархочунна бокъона тептар",
        "action-read": "Укх оагIуви дешам",
        "action-edit": "Ер оагIув хувца",
        "recentchanges-legend": "Керда хувцамий оттамаш",
        "recentchanges-summary": "КIалхагIа лоарамий доаламе тIехьара оагIувний хувцамаш дIаязадаь да {{grammar:genitive|{{SITENAME}}}}.",
        "recentchanges-feed-description": "Укх ларамца тIехьара массахувцамашт теркам бе.",
-       "recentchanges-label-newpage": "Укх хувцамаца керда оагIув яь хиннай",
-       "recentchanges-label-minor": "Ð\97Iамига Ñ\85Ñ\83вÑ\86ам Ñ\8f",
-       "recentchanges-label-bot": "Ер хувцам бIатаца яь е",
+       "recentchanges-label-newpage": "Укх хувцамаца керда оагIув кхелла хиннай",
+       "recentchanges-label-minor": "Ð\95Ñ\80 Ð·Iамига Ñ\85Ñ\83вÑ\86ам Ð±Ð°",
+       "recentchanges-label-bot": "Ер хувцам ботаца баь ба",
        "recentchanges-label-unpatrolled": "Ер хувцам ший моттиге кхы дIадехьаяьккхаяц.",
        "recentchanges-label-plusminus": "байташкахь боарам хувцар",
        "recentchanges-legend-heading": "<strong>Легенда:&nbsp;</strong>",
        "rcshowhidemine": "$1 сай хувцамаш",
        "rcshowhidemine-hide": "Къайлдаккха",
        "rclinks": "$2 динах<br />$3 $1 хинна тIехьара хувцамаш хьахьокха",
-       "diff": "кÑ\85Ñ\8b.",
+       "diff": "баÑ\88Ñ\85ало",
        "hist": "истори",
        "hide": "Къайлдаккха",
        "show": "Хьахьокха",
-       "minoreditletter": "м",
-       "newpageletter": "Ð\9d",
+       "minoreditletter": "зI",
+       "newpageletter": "Ð\9a",
        "boteditletter": "б",
        "rc_categories_any": "МоллагIа а",
        "rc-change-size-new": "Хувцам баьнначул тӀехьагIа бола боарам: $1 {{PLURAL:$1|байт}}",
        "rc-enhanced-hide": "Ма дарра чулоацамаш къайладаккха",
        "recentchangeslinked": "Гаргалон хувцамаш",
        "recentchangeslinked-feed": "Гаргалон хувцамаш",
-       "recentchangeslinked-toolbox": "Ð\93аÑ\80галон хувцамаш",
+       "recentchangeslinked-toolbox": "УкÑ\85анÑ\86а Ð²IаÑ\88агIдÑ\83взаденна хувцамаш",
        "recentchangeslinked-title": "$1ца хьалаьца хувцамаш",
        "recentchangeslinked-summary": "Ер, Iинк яь йола оагIув (е укх цатегачу чуйоагIараш), дукха ха йоацаш хьийца оагIувнашкий дагарле я.\n[[Special:Watchlist|Шун теркама дагарленашках]] чуйоагIа оагIувнаш '''белгалаяь я'''.",
        "recentchangeslinked-page": "ОагIува цIи",
        "recentchangeslinked-to": "ОагIувнаш тIа хувцамаш хьахьокха, хьахьекха йола оагIув тIа Iинкаш еш йола.",
-       "upload": "Файл чудаккха",
+       "upload": "Файл чуяккха",
        "uploadbtn": "Паьл чуяьккха",
        "uploadlogpage": "Чуяьккхамий тептар",
        "filedesc": "Лоаца лоацам",
        "listfiles_description": "Лоацам",
        "listfiles_count": "Доржамаш",
        "file-anchor-link": "Файл",
-       "filehist": "Ð\9fаÑ\8cла истори",
-       "filehist-help": "Ð¥Ñ\8cалÑ\85е Ð¿Ð°Ñ\8cла Ð¼Ð¸Ñ\88Ñ\82а Ñ\85иннай Ñ\85Ñ\8cожаpгволаÑ\88/йолаÑ\88, Ð´ÐµÐ½Ñ\82аÑ\8cÑ\80аÑ\85\81аÑ\85Ñ\8cаÑ\82а Ñ\82Iа Ð¿Iелга Ñ\82Iообе.",
+       "filehist": "Файлан истори",
+       "filehist-help": "Ð\9aнопка Ñ\82аÑ\8cÑ\80аÑ\85Ñ\8c\85а Ñ\82оIае Ñ\86Ñ\83 Ñ\85ан Ñ\84айл Ð¼Ð¸Ñ\88Ñ\82а Ñ\85иннай Ñ\85Ñ\8cожаpгволаÑ\88/йолаÑ\88",
        "filehist-revert": "юхаяьккха",
        "filehist-current": "xIанзара",
-       "filehist-datetime": "Ð\94енÑ\82аÑ\8cÑ\80аÑ\85/Ха",
-       "filehist-thumb": "ЗIамигасуртанче",
-       "filehist-thumbtext": "$1 доржаме зIамигсуртанчoa",
-       "filehist-user": "Ð\94акÑ\8aалаÑ\8cÑ\86аÑ\80хо",
-       "filehist-dimensions": "Ð¥Iамана Ð´Ñ\83Ñ\81Ñ\82ам",
+       "filehist-datetime": "ТаÑ\8cÑ\80аÑ\85Ñ\8c/Ха",
+       "filehist-thumb": "ЗIамигасурт",
+       "filehist-thumbtext": "ЗIамига сурт укх версин $1",
+       "filehist-user": "Ð\94оакÑ\8aаÑ\88хо",
+       "filehist-dimensions": "Файлан Ð±Ð¾Ð°Ñ\80ам",
        "filehist-filesize": "Паьла юстарал",
-       "filehist-comment": "Ð¥Iамоалар",
-       "imagelinks": "Ð\9fаÑ\8cлий Ð¿Ð°Ð¹Ð´Ð° Ñ\8dÑ\86а",
+       "filehist-comment": "Ð\91елгалдаккÑ\85ар",
+       "imagelinks": "Файла Ð¿Ð°Ð¹Ð´Ð° Ñ\8dÑ\86аÑ\80",
        "linkstoimage": "{{PLURAL:$1|1=ТIехьайоагIача $1 оагIуво тIахьожаву|ТIехьайоагIача $1 оагIувнаша тIахьожаву}} укх файла тIа:",
        "nolinkstoimage": "Йола паьла тIа  Iинк ю оагIувнаш дац",
        "sharedupload": "Ер паьла $1чера я, кхыча хьахьоадайтамча хьахайраде йийшайолаш я.",
-       "sharedupload-desc-here": "Ер паьл $1чара я, кхыдола хьахьоадайтамача хайрамбе йийш йолаш да.\nЦун [$2 лоацама оагIувца] лоаца маIандар кIалхагIа латта.",
+       "sharedupload-desc-here": "Ер файл $1 чура я, иштта кхыйола проекташ чу пайда эца аьттув болаш я.\nЦун [$2 йоазонца сурт оттадара оагIон] информаци кIалхахь хьайоалаяй.",
        "uploadnewversion-linktext": "Укх паьлий керда бIаса чуяьккха",
        "filerevert-comment": "Бахьан:",
        "filedelete-comment": "Бахьан:",
        "shortpages": "Лоаца оагIувнаш",
        "longpages": "Доккхий оагIувнаш",
        "usercreated": "{{GENDER:$3|Чуваьннав|Чуяьннай}} $1  $2",
-       "newpages": "Керда оагIувнаш",
+       "newpages": "Керда оагIонаш",
        "move": "ЦIи хувца",
        "movethispage": "Укх оагIува цIи хувца",
        "pager-newer-n": "{{PLURAL:$1|кердагIа дара|кердагIа дараш|кердагIа долачаьрахь}} $1",
        "deletecomment": "Бахьан:",
        "deleteotherreason": "Кхыдола бахьан/тIатохар:",
        "deletereasonotherlist": "Кхыдола бахьан",
-       "rollbacklink": "юхаяьккха",
+       "rollbacklink": "юхаяккха",
        "protectlogpage": "Лорадара тептар",
        "protectedarticle": "\"[[$1]]\" оагIув лорам деж я",
        "modifiedarticleprotection": "\"[[$1]]\" оагIувни лорама лагIа хувцаяьннай",
        "restriction-create": "Кхоллам",
        "restriction-upload": "Чудаккхар",
        "undeletelink": "БIаргтасса/юхаметтаоттаде",
-       "undeleteviewlink": "бIаргтасса",
+       "undeleteviewlink": "хьажа",
        "undelete-search-submit": "Хьалáха",
-       "namespace": "ЦIеÑ\80ий Ð°Ñ\80енаÑ\88",
-       "invert": "Хьаржар юхадаккха",
+       "namespace": "ЦIеÑ\80ий Ð¼Ð¾Ñ\82Ñ\82",
+       "invert": "Харжар юхадаккха",
        "namespace_association": "Ювзаенна мотт",
        "blanknamespace": "(Кертера)",
        "contributions": "{{GENDER:$1|Доакъашхочунна}} къахьегам",
        "allmessages-filter-all": "Дерригаш",
        "allmessages-language": "Мотт:",
        "allmessages-filter-submit": "Дехьа гӀо",
-       "thumbnail-more": "Ð¥Ñ\8cадоккÑ\85аде",
+       "thumbnail-more": "Ð\94оккÑ\85а де",
        "thumbnail_error": "ЗIамигасуртанчий кхеллама гIалат: $1",
        "import-upload-filename": "ПаьлацIи:",
        "tooltip-pt-userpage": "Дакъалаьцархочунна оагIув",
        "tooltip-pt-login": "Укхаза хьай цIи аьле чувала/яла йиша я, амма из параз дац",
        "tooltip-pt-logout": "Аравала/яла",
        "tooltip-pt-createaccount": "Хьа бокъо я учёта яздар кхелла система чу вала, амма параз долаш дац из.",
-       "tooltip-ca-talk": "ОагIувна чулоацам дувца оттадар",
+       "tooltip-ca-talk": "ОагIон чулоацам дувца оттадар",
        "tooltip-ca-edit": "Нийсъе ер оагIув",
-       "tooltip-ca-addsection": "Ð\9aеÑ\80да Ð´ÐµÐºÑ\8aам хьаде",
+       "tooltip-ca-addsection": "Ð\9aеÑ\80да Ð´Ð°ÐºÑ\8aа хьаде",
        "tooltip-ca-viewsource": "Ер оагIув хувцамах лораяь я, амма шун цунна гIувамага хьажа бокъо я.",
-       "tooltip-ca-history": "Укх оагIуван даь хувцамаш тIа дола тептар",
+       "tooltip-ca-history": "Укх оагIон даь хувцамаш тIа дола тептар",
        "tooltip-ca-protect": "Eр оагIув лорае",
        "tooltip-ca-delete": "Ер оагIув дIаяькха",
        "tooltip-ca-move": "Укх оагIува цIи хувца",
-       "tooltip-ca-watch": "Ер оагIув теркам беча каьхата тIа тIаяьккха",
+       "tooltip-ca-watch": "Ð\95Ñ\80 Ð¾Ð°Ð³IÑ\83в Ñ\85Ñ\8cай Ñ\82еÑ\80кам Ð±ÐµÑ\87а ÐºÐ°Ñ\8cÑ\85аÑ\82а Ñ\82Iа Ñ\82IаÑ\8fÑ\8cккÑ\85а",
        "tooltip-ca-unwatch": "Ер оагIув теркам беча каьхата тIара дIаяькха",
        "tooltip-search": "Хьалáха {{grammar:prepositional|{{SITENAME}}}} чу",
        "tooltip-search-go": "Изза мо цӀи йолаш оагӀув тӀa дехьавала",
        "tooltip-p-logo": "Кертера оагIув тIа дехьавала",
        "tooltip-n-mainpage": "Кертера оагIув тIа дехьавала",
        "tooltip-n-mainpage-description": "Кертера оагIув тIа дехьавала",
-       "tooltip-n-portal": "Ð\93IалгIай Ð\92икипедиеÑ\85 Ð»Ð°Ñ\8cÑ\86а Ð´Ð°Ñ\80 Ð°, Ñ\83кÑ\85аза Ð´Ðµ Ð¼ÐµÐ³Ð°Ñ\88 Ð´Ð°Ñ\80 Ð°, Ð¼Ð°Ð»Ð°Ð³Iа Ñ\84Ñ\83д Ð°, Ð¼Ð¸Ñ\87а Ð´Ð° Ð°",
-       "tooltip-n-currentevents": "Ð¥IанзаÑ\80а Ñ\85оаман Ð´Ð°Ð³Ð°Ñ\80ле",
+       "tooltip-n-portal": "ГIалгIай Википедех лаьца дар а, укхаза де мегаш дар а, малагIа фуд а, мича да а",
+       "tooltip-n-currentevents": "Ð¥IанзаÑ\80а Ñ\85инна Ñ\85IамаÑ\85 Ð±Ð¾Ð»Ð° Ñ\85оам",
        "tooltip-n-recentchanges": "ТӀеххьара хувцамай список",
        "tooltip-n-randompage": "Башхало йоаца ца ховш нийсъенна оагӀув хьаела",
        "tooltip-n-help": "Новкъостал лаха мегаш йола моттиг",
-       "tooltip-t-whatlinkshere": "Укхаза тIахьожавеш йола оагIувай список",
-       "tooltip-t-recentchangeslinked": "Ð\9eагIÑ\83внаÑ\88 Ñ\82Iа Ñ\82IеÑ\85Ñ\8cаÑ\80а Ñ\85Ñ\83вÑ\86амаÑ\88, Ñ\83кÑ\85 Ð¾Ð°Ð³IÑ\83внеÑ\80а Iинк Ñ\8fÑ\8c Ð¹Ð¾Ð»Ð°",
+       "tooltip-t-whatlinkshere": "Укхаза тIахьожавеш йола оагIонай список",
+       "tooltip-t-recentchangeslinked": "УкÑ\85 Ð¾Ð°Ð³IÑ\83во Ñ\82IаÑ\85Ñ\8cожавеÑ\88 Ð¹Ð¾Ð»Ñ\87а Ð¾Ð°Ð³Iонай Ñ\82IеÑ\85Ñ\85Ñ\8cаÑ\80а Ñ\85Ñ\83вÑ\86амаÑ\88",
        "tooltip-feed-rss": "Укх оагIувна RSSчу гойтар",
        "tooltip-feed-atom": "Укх оаг|увна Atomчу гойтар",
        "tooltip-t-contributions": "{{GENDER:$1|Укх доакъашхочо хийца}} йола оагIувнаш",
        "tooltip-t-emailuser": "Укх дакъалаьцархочоа зIы яхьийта",
-       "tooltip-t-upload": "Файлаш чудаккха",
+       "tooltip-t-upload": "Файлаш чуяккха",
        "tooltip-t-specialpages": "ГIулакха оагIувнаш",
-       "tooltip-t-print": "Укх оаугIувна зарба тохара верси",
-       "tooltip-t-permalink": "УкÑ\85 Ð¾Ð°Ð³IÑ\83в Ð´Ð¾Ñ\80жама Ð´Ð°Ð¸Ð¼ Ð»Ð°Ñ\82Ñ\82а Iинк",
-       "tooltip-ca-nstab-main": "Ð\99оазÑ\83ва Ñ\87Ñ\83лоаÑ\86ам",
+       "tooltip-t-print": "Укх оагIон зарба тохара верси",
+       "tooltip-t-permalink": "Ð\9eагIон Ñ\83кÑ\85 Ð²ÐµÑ\80Ñ\81ин Ñ\82IаÑ\85Ñ\8cожавеÑ\88 Ð¹Ð¾Ð»Ð° Ð´Ð°Ð¸Ð¼ Ð»Ð°Ñ\82Ñ\82аÑ\88 Ð¹Ð¾Ð»Ð° Ñ\85Ñ\8cожаÑ\8fÑ\80г",
+       "tooltip-ca-nstab-main": "Ð\9eагIон Ñ\87Ñ\83Ñ\80адаÑ\80",
        "tooltip-ca-nstab-user": "Дакъалаьцархочунна ший оагIув",
        "tooltip-ca-nstab-special": "Ер гIулакха оагIув я, из хувца бокъо яц",
        "tooltip-ca-nstab-project": "Проектан оагIув",
-       "tooltip-ca-nstab-image": "Ð\9fаÑ\8cла Ð¾Ð°Ð³Iув",
+       "tooltip-ca-nstab-image": "Файлан Ð¾Ð°Ð³Ó\80ув",
        "tooltip-ca-nstab-template": "Кепан оагIув",
        "tooltip-ca-nstab-help": "ГӀон оагIув",
-       "tooltip-ca-nstab-category": "ЦаÑ\82ега Ð¾Ð°Ð³Iув",
+       "tooltip-ca-nstab-category": "Ð\9aаÑ\82егоÑ\80ий Ð¾Ð°Ð³Ó\80ув",
        "tooltip-minoredit": "Ер хувцар башха доаца санна белгалде",
        "tooltip-save": "Хувцамаш кходе",
        "tooltip-preview": "ОагIув тIа хьалхе бIаргтассар, дехар да, оагIув дIаязъелаьх, цун теркам бе.",
        "tooltip-diff": "Яздам тIа яь йола хувцамаш хьахьокха",
        "tooltip-compareselectedversions": "Укх оагIувни шин доржамаш тIа юкъера хувцамаш зе.",
        "tooltip-watch": "Ер оагIув теркам беча каьхата тIа яькха",
-       "tooltip-rollback": "Ð\93IалaÑ\82нийÑ\81адаÑ\80о Ñ\82IеÑ\85Ñ\8cаÑ\80а Ñ\8fÑ\8c Ð¹Ð¾Ð»Ð° Ñ\85Ñ\83вÑ\86амаÑ\88, Ð¿Iелг Ñ\82оIобе Ð´IаÑ\8fÑ\8cккÑ\85а.",
+       "tooltip-rollback": "ЦкÑ\8aа Ð¿Iелг Ñ\82оIабе Ð´IадаккÑ\85а Ñ\82IеÑ\85Ñ\8cаÑ\80а Ñ\80едакÑ\82оÑ\80аÑ\81 Ð´Ð°Ñ\8c Ñ\85Ñ\83вÑ\86амаÑ\88",
        "tooltip-undo": "Даь хувцар дIадаьккха, хьалххе хьажар хьахьокха, дIадаккхара бахьан Iочуязаде аьттув болаш.",
        "tooltip-summary": "Лоаца чулоацам Iочуязаде",
        "pageinfo-toolboxlink": "ОагIонах бола хоам",
        "previousdiff": "← Хьалхара нийсдар",
        "nextdiff": "ТIайоагIа нийсъар",
-       "file-info-size": "$1 × $2 фихсам, паьла дустам: $3, MIME-тайп: $4",
+       "file-info-size": "$1 × $2 {{PLURAL:$2|пиксель}}, файлан боарам: $3, MIME-тайпа: $4",
        "file-nohires": "Укхал дуккхагIа доккхал долаш верси яц",
        "svg-long-desc": "SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель}}, файлан боарам: $3",
-       "show-big-image": "Ð¥Ñ\8cалÑ\85агIаÑ\80а Ñ\81Ñ\83Ñ\80Ñ\82",
+       "show-big-image": "Ð\94IадолалÑ\83 Ñ\84айл",
        "show-big-image-size": "$1 × $2 пиксель",
        "noimages": "Суртaш бIаргагуш дац.",
        "ilsubmit": "Хьалáха",
        "bad_image_list": "Бустам цу тайпара хила беза:\n\nДагарлен хьаракъаш мара лоарх|аш хургьяц (укх тамагIалгацa * дувлашду мугIараш).\nМугIарен хьалхара Iинк, сурт Iоттае пурам доаца Iинка, хила еза. \nЦу мугIара тIехьайоагIа Iинкаш, арадаккхар мо лоарх|аш хургья, вешта аьлча, йоазувашка чуIоттаде мегаш дола сурт санна ларх|а мега.",
-       "metadata": "МетахIамаш",
+       "metadata": "Метахоамаш",
        "metadata-help": "Паьлас чулоаца, кхыдола хIамаш, таьрахьа суртдоакхаргца е тIагIолладоакхаргца чудакхаш дола. Хьаяь паьл, гIалатахь мукъадаькха хинна дале, хьахьокхаш дола сурт, деррига хIамаш чулоацаргдац.",
        "metadata-expand": "Кхыдола хIамаш хьахьокха",
        "metadata-collapse": "Кхыдола хIамаш къайладаккха",
-       "metadata-fields": "Укх дагарченгахь дагaрадаь метахIамаша суртий мугIаш, сурт оагIув тIа хьахьекха хургья, чуерзaяь метахIамашийца. Вож мугIанаш ха йоалаш къайла хургья.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "Укх списке дагaрадаь суртай метахоамай йистош, хьахьекха хургда суртан оагIон тIа, метахоамай таблица хьоарчая йолаш. Юхедиса йистош къайла хургда.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "Шерал",
        "exif-imagelength": "Лакхал",
        "exif-orientation": "Суртан белгало",
        "exif-imagedescription": "Сурта цIи",
+       "exif-model": "Камера модель",
+       "exif-software": "Программни Iалашдар",
        "exif-artist": "Яздархо",
+       "exif-exifversion": "Верси Exif",
        "exif-colorspace": "Басара аре",
        "exif-pixelxdimension": "Сурта шерал",
        "exif-pixelydimension": "Сурта лакхал",
        "exif-writer": "Яздама да",
        "exif-languagecode": "Мотт",
        "exif-iimcategory": "Цатег",
+       "exif-orientation-1": "гIаьхьа",
        "exif-scenecapturetype-1": "ЛаьттабIаса",
        "exif-scenecapturetype-2": "Сурт",
        "exif-iimcategory-edu": "Дешар",
        "specialpages-group-pages": "ОагIувний дагарченаш",
        "specialpages-group-pagetools": "ОагIувнаша гIирсаш",
        "external_image_whitelist": "#Ер мугI ший долаш тайпара дита<pre>\n#Каст-каста оаламаш укхаза дIаязаде(юкъе дола дакъа //)\n#арара суртий URLца дIанийсалургда уш.\n#Пайдан дола, сурташ мо хьахьекха хургья, дахIодараш, сурта тIа Iинкаш мо хуpгья хьахьекха.\n#Укх # тамагIалгаца дIадувлаш дола мугIанаш, оалам мо лоархаш да.\n#МугIанаш яздaтакха каьда да\n\n#Каст-каста оаламаш укх мугIа лакхе дIаязаде. Из мугI ший долаш тайпара дита</pre>",
-       "tag-filter": "[[Special:Tags|Ð\99оазоний]] Ñ\86IенаÑ\8fрг:",
+       "tag-filter": "[[Special:Tags|белгалонай]] Ð»Ñ\83Ñ\82Ñ\82арг:",
        "tag-filter-submit": "ЦIенъе",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|1=Белгало|Белгалонаш}}]]: $2)",
        "tags-title": "Йоазонаш",
        "htmlform-submit": "ДIадахьийта",
        "htmlform-reset": "Хувцамаш юхадаккха",
        "htmlform-selectorother-other": "Кхыдола",
+       "logentry-delete-delete": "$1 {{GENDER:$2|дIаяккхай}} оагIув $3",
        "logentry-newusers-create": "{{GENDER:$2|Доакъашхочо кхеллай}} учёта яздар $1",
        "rightsnone": "(а)",
        "revdelete-summary": "хувцамий лоацам",
index 6cc3b26..8e3c46f 100644 (file)
        "categories-submit": "Birta",
        "categoriespagetext": "Eftirfarandi {{PLURAL:$1|flokkur inniheldur|flokkar innihalda}} síður eða skrár.\n[[Special:UnusedCategories|Ónotaðir flokkar]] birtast ekki hér.\nSjá einnig [[Special:WantedCategories|eftirsótta flokka]].",
        "categoriesfrom": "Sýna flokka frá:",
-       "special-categories-sort-count": "raða eftir fjölda",
-       "special-categories-sort-abc": "raða í stafrófsröð",
        "deletedcontributions": "Eyddar breytingar notanda",
        "deletedcontributions-title": "Eyddar breytingar notanda",
        "sp-deletedcontributions-contribs": "Framlög",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|breyting flutt|breytingar fluttar}} inn",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|breyting flutt|breytingar fluttar}} inn frá $2",
        "javascripttest": "JavaScript prófun",
-       "javascripttest-pagetext-noframework": "Þessi síða er frátekin fyrir JavaScript prófanir.",
-       "javascripttest-pagetext-unknownframework": "Óþekktur prófunarrammi „$1“.",
        "javascripttest-pagetext-unknownaction": "Óþekkt aðgerð \"$1\".",
-       "javascripttest-pagetext-frameworks": "Veldu einn eftirtalinna prófunarramma: $1",
-       "javascripttest-pagetext-skins": "Veldu skinn til að keyra prófanirnar á:",
        "javascripttest-qunit-intro": "Sjá [$1 tilraunaskjölun] á mediawiki.org.",
        "tooltip-pt-userpage": "Notandasíðan þín",
        "tooltip-pt-anonuserpage": "Notandasíðan fyrir vistfangið þitt",
        "version-libraries-license": "Notkunarleyfi",
        "version-libraries-description": "Lýsing",
        "version-libraries-authors": "Höfundar",
-       "redirect-legend": "Endurbeina á skrá eða síðu",
        "redirect-submit": "Áfram",
        "redirect-lookup": "Fletta upp:",
        "redirect-value": "Gildi:",
        "redirect-not-exists": "Gildi fannst ekki",
        "fileduplicatesearch": "Leita að afriti",
        "fileduplicatesearch-summary": "Leita að afritum sem hafa sama hakk gildi.",
-       "fileduplicatesearch-legend": "Leita að afriti",
        "fileduplicatesearch-filename": "Skráarheiti:",
        "fileduplicatesearch-submit": "Leita",
        "fileduplicatesearch-info": "$1 × $2 mynddílar<br />Skráarstærð: $3<br />MIME-gerð: $4",
index c460df0..3ba7cc6 100644 (file)
        "tog-showtoolbar": "Mostra la barra degli strumenti di modifica",
        "tog-editondblclick": "Modifica delle pagine tramite doppio clic",
        "tog-editsectiononrightclick": "Modifica delle sezioni tramite clic destro sul titolo",
-       "tog-watchcreations": "Aggiungi le pagine create e i file caricati agli osservati speciali",
-       "tog-watchdefault": "Aggiungi le pagine e i file modificati agli osservati speciali",
-       "tog-watchmoves": "Aggiungi le pagine e i file spostati agli osservati speciali",
-       "tog-watchdeletion": "Aggiungi le pagine e i file cancellati agli osservati speciali",
+       "tog-watchcreations": "Aggiungi le pagine che creo e i file che carico agli osservati speciali",
+       "tog-watchdefault": "Aggiungi le pagine e i file che modifico agli osservati speciali",
+       "tog-watchmoves": "Aggiungi le pagine e i file che sposto agli osservati speciali",
+       "tog-watchdeletion": "Aggiungi le pagine e i file che cancello agli osservati speciali",
+       "tog-watchuploads": "Aggiungi i nuovi file che carico agli osservati speciali",
        "tog-watchrollback": "Aggiungi agli osservati speciali le pagine su cui ho effettuato un rollback",
        "tog-minordefault": "Indica ogni modifica come minore (solo come predefinito)",
        "tog-previewontop": "Mostra l'anteprima sopra la casella di modifica e non sotto",
        "title-invalid-utf8": "Il titolo della pagina richiesta contiene una sequenza UTF-8 non valida.",
        "title-invalid-interwiki": "Il titolo della pagina richiesta contiene un collegamento interwiki che non può essere usato nei titoli.",
        "title-invalid-talk-namespace": "Il titolo della pagina richiesta fa riferimento a una pagina di discussione non presente.",
-       "title-invalid-characters": "Il titolo della pagina richiesta contiene caratteri invalidi: \"$1\".",
+       "title-invalid-characters": "Il titolo della pagina richiesta contiene caratteri non validi: \"$1\".",
        "title-invalid-relative": "Il titolo indicato contiene un percorso relativo (./, ../). Tali titoli non sono validi, perché risulteranno spesso irraggiungibili quando gestiti dal browser dell'utente.",
        "title-invalid-magic-tilde": "Il titolo della pagina richiesta non è valido in quanto contiene la successione speciale di tilde (<nowiki>~~~</nowiki>).",
        "title-invalid-too-long": "Il titolo della pagina richiesta è troppo lungo. Non può essere più lungo di {{PLURAL:$1|byte}} in codifica UTF-8.",
        "missingcommentheader": "<strong>Attenzione:</strong> non è stato specificato l'oggetto di questo commento. Premendo di nuovo \"{{int:savearticle}}\" la modifica verrà salvata senza.",
        "summary-preview": "Anteprima dell'oggetto:",
        "subject-preview": "Anteprima oggetto:",
-       "previewerrortext": "C'è stato un errore mentre si è cercato di mostrare l'anteprima.",
+       "previewerrortext": "Si è verificato un errore durante il tentativo di mostrare l'anteprima delle tue modifiche.",
        "blockedtitle": "Utente bloccato.",
        "blockedtext": "'''Il tuo nome utente o indirizzo IP è stato bloccato.'''\n\nIl blocco è stato imposto da $1. La motivazione del blocco è la seguente: ''$2''\n\n* Inizio del blocco: $8\n* Scadenza del blocco: $6\n* Intervallo di blocco: $7\n\nSe lo si desidera, è possibile contattare $1 o un altro [[{{MediaWiki:Grouppage-sysop}}|amministratore]] per discutere del blocco.\n\nSi noti che la funzione 'Scrivi all'utente' non è attiva se non è stato registrato un indirizzo e-mail valido nelle proprie [[Special:Preferences|preferenze]] o se l'utilizzo di tale funzione è stato bloccato.\n\nL'indirizzo IP attuale è $3, il numero ID del blocco è #$5.\nSi prega di specificare tutti i dettagli precedenti in qualsiasi richiesta di chiarimenti.",
        "autoblockedtext": "Questo indirizzo IP è stato bloccato automaticamente perché condiviso con un altro utente, a sua volta bloccato da $1.\nLa motivazione del blocco è la seguente:\n\n:''$2''\n\n* Inizio del blocco: $8\n* Scadenza del blocco: $6\n* Intervallo di blocco: $7\n\nÈ possibile contattare $1 o un altro [[{{MediaWiki:Grouppage-sysop}}|amministratore]] per richiedere eventuali chiarimenti circa il blocco.\n\nSi noti che la funzione 'Scrivi all'utente' non è attiva se non è stato registrato un indirizzo e-mail valido nelle proprie [[Special:Preferences|preferenze]] e, comunque, se nell'applicare il blocco, tale funzione è stata disabilitata (per la durata del blocco).\n\nL'indirizzo IP attuale è $3, il numero ID del blocco è #$5\nSi prega di specificare tutti i dettagli qui inclusi nel compilare qualsiasi richiesta di chiarimenti.",
        "recentchangeslinked-feed": "Modifiche correlate",
        "recentchangeslinked-toolbox": "Modifiche correlate",
        "recentchangeslinked-title": "Modifiche correlate a \"$1\"",
-       "recentchangeslinked-summary": "Questa pagina speciale mostra le modifiche più recenti alle pagine collegate da quella specificata (o contenute nella categoria specificata).\nLe pagine contenute nella propria lista degli [[Special:Watchlist|Osservati speciali]] sono evidenziate in <strong>grassetto</strong>.",
+       "recentchangeslinked-summary": "Questa pagina speciale mostra le modifiche più recenti alle pagine collegate da quella specificata (o contenute nella categoria specificata).\nLe pagine contenute nella propria lista degli [[Special:Watchlist|osservati speciali]] sono evidenziate in <strong>grassetto</strong>.",
        "recentchangeslinked-page": "Nome della pagina:",
        "recentchangeslinked-to": "Mostra solo le modifiche alle pagine collegate a quella specificata",
        "recentchanges-page-added-to-category": "[[:$1]] aggiunta alla categoria",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|un'altra pagina|altre $2 pagine}}]] sono state aggiunte alla categoria",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] aggiunta alla categoria, [[Special:WhatLinksHere/$1|questa pagina è inclusa all'interno di altre pagine]]",
        "recentchanges-page-removed-from-category": "[[:$1]] rimossa dalla categoria",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|un'altra pagina|altre $2 pagine}}]] sono state rimosse dalla categoria",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] rimossa dalla categoria, [[Special:WhatLinksHere/$1|questa pagina è inclusa all'interno di altre pagine]]",
        "autochange-username": "Modifica automatica MediaWiki",
        "upload": "Carica un file",
        "uploadbtn": "Carica",
        "http-read-error": "Errore di lettura HTTP.",
        "http-timed-out": "Richiesta HTTP scaduta.",
        "http-curl-error": "Errore durante il recupero dell'URL: $1",
-       "http-bad-status": "C'è stato un problema durante la richiesta HTTP: $1 $2",
+       "http-bad-status": "Si è verificato un problema durante la richiesta HTTP: $1 $2",
        "upload-curl-error6": "URL non raggiungibile",
        "upload-curl-error6-text": "Impossibile raggiungere la URL specificata. Verificare che la URL sia scritta correttamente e che il sito in questione sia attivo.",
        "upload-curl-error28": "Tempo scaduto per l'upload",
        "categories-submit": "Mostra",
        "categoriespagetext": "{{PLURAL:$1|La categoria indicata di seguito contiene|Le categorie indicate di seguito contengono}} pagine o file multimediali.\nLe [[Special:UnusedCategories|categorie vuote]] non sono mostrate qui.\nVedi anche le [[Special:WantedCategories|categorie richieste]].",
        "categoriesfrom": "Mostra le categorie a partire da:",
-       "special-categories-sort-count": "ordina per numero",
-       "special-categories-sort-abc": "ordina alfabeticamente",
        "deletedcontributions": "Contributi utente cancellati",
        "deletedcontributions-title": "Contributi utente cancellati",
        "sp-deletedcontributions-contribs": "contributi",
        "confirmemail_body_set": "Qualcuno, probabilmente tu stesso dall'indirizzo IP $1,\nha impostato l'indirizzo email dell'account \"$2\" su {{SITENAME}} indicando questo indirizzo email.\n\nPer confermare che l'account ti appartiene veramente e attivare le funzioni relative all'invio\ndi email su {{SITENAME}}, apri il collegamento seguente con il tuo browser:\n\n$3\n\nSe l'account *non* ti appartiene, segui questo collegamento\nper annullare la conferma dell'indirizzo email:\n\n$5\n\nQuesto codice di conferma scadrà automaticamente alle $4.",
        "confirmemail_invalidated": "Richiesta di conferma indirizzo e-mail annullata",
        "invalidateemail": "Annulla richiesta di conferma e-mail",
+       "notificationemail_subject_changed": "L'indirizzo di posta elettronica registrato su {{SITENAME}} è stato modificato",
+       "notificationemail_subject_removed": "L'indirizzo di posta elettronica registrato su {{SITENAME}} è stato rimosso",
+       "notificationemail_body_changed": "Qualcuno, probabilmente tu, dall'indirizzo IP $1,\nha modificato l'indirizzo di posta elettronica dell'utenza \"$2\" in \"$3\" su {{SITENAME}}.\n\nSe non sei stato tu, contatta immediatamente un amministratore del sito.",
+       "notificationemail_body_removed": "Qualcuno, probabilmente tu, dall'indirizzo IP $1,\nha rimosso l'indirizzo di posta elettronica dell'utenza \"$2\" su {{SITENAME}}.\n\nSe non sei stato tu, contatta immediatamente un amministratore del sito.",
        "scarytranscludedisabled": "[L'inclusione di pagine tra siti wiki non è attiva]",
        "scarytranscludefailed": "[Errore: Impossibile ottenere il template $1]",
        "scarytranscludefailed-httpstatus": "[Errore: impossibile ottenere il template $1: HTTP $2]",
        "watchlistedit-raw-done": "La lista degli osservati speciali è stata aggiornata.",
        "watchlistedit-raw-added": "{{PLURAL:$1|È stata aggiunta una pagina|Sono state aggiunte $1 pagine}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|È stata eliminata una pagina|Sono state eliminate $1 pagine}}:",
-       "watchlistedit-clear-title": "Lista degli osservati speciali svuotata",
+       "watchlistedit-clear-title": "Svuota osservati speciali",
        "watchlistedit-clear-legend": "Svuota osservati speciali",
        "watchlistedit-clear-explain": "Tutti i titoli saranno rimossi dai tuoi osservati speciali",
        "watchlistedit-clear-titles": "Titoli:",
        "api-error-duplicate-archive": "{{PLURAL:$1|C'era un altro file|C'erano altri file}} già nel sito con lo stesso contenuto, ma {{PLURAL:$1|è stato cancellato|sono stati cancellati}}.",
        "api-error-empty-file": "Il file selezionato era vuoto.",
        "api-error-emptypage": "La creazione di nuove pagine vuote non è consentita.",
-       "api-error-fetchfileerror": "Errore interno: c'è stato un problema durante il recupero del documento.",
+       "api-error-fetchfileerror": "Errore interno: si è verificato un problema durante il recupero del file.",
        "api-error-fileexists-forbidden": "Un file di nome \"$1\" già esiste e non può essere sovrascritto.",
        "api-error-fileexists-shared-forbidden": "Un file di nome \"$1\" già esiste nel repository condiviso e non può essere sovrascritto.",
        "api-error-file-too-large": "Il file selezionato era troppo grande.",
        "sessionprovider-nocookies": "I cookie possono essere disattivati. Assicurati di avere i cookie abilitati e ha inizia nuovamente.",
        "randomrootpage": "Pagina radice casuale",
        "log-action-filter-block": "Tipo di blocco:",
+       "log-action-filter-contentmodel": "Tipo di modifica del modello di contenuto:",
        "log-action-filter-delete": "Tipo di cancellazione:",
+       "log-action-filter-import": "Tipo di importazione:",
+       "log-action-filter-managetags": "Tipo di azione di gestione etichetta:",
+       "log-action-filter-move": "Tipo di spostamento:",
+       "log-action-filter-newusers": "Tipo di creazione utenza:",
        "log-action-filter-patrol": "Tipo di verifica:",
        "log-action-filter-protect": "Tipo di protezione:",
+       "log-action-filter-rights": "Tipo di modifica diritti",
+       "log-action-filter-suppress": "Tipo di soppressione",
        "log-action-filter-upload": "Tipo di caricamento:",
        "log-action-filter-all": "Tutto",
        "log-action-filter-block-block": "Blocco",
        "log-action-filter-block-reblock": "Modifica blocco",
        "log-action-filter-block-unblock": "Sblocco",
+       "log-action-filter-contentmodel-change": "Modifica del modello di contenuto",
+       "log-action-filter-contentmodel-new": "Creazione di pagina con modello di contenuto non standard",
        "log-action-filter-delete-delete": "Cancellazione pagina",
        "log-action-filter-delete-restore": "Ripristino pagina",
        "log-action-filter-delete-event": "Cancellazione registro",
        "log-action-filter-delete-revision": "Cancellazione versione",
+       "log-action-filter-import-interwiki": "Importazione transwiki",
+       "log-action-filter-import-upload": "Importazione da XML caricato",
+       "log-action-filter-managetags-create": "Creazione etichetta",
+       "log-action-filter-managetags-delete": "Cancellazione etichetta",
+       "log-action-filter-managetags-activate": "Attivazione etichetta",
+       "log-action-filter-managetags-deactivate": "Disattivazione etichetta",
+       "log-action-filter-move-move": "Spostamento senza sovrascrivere reindirizzamenti",
+       "log-action-filter-move-move_redir": "Spostamento con sovrascrittura reindirizzamenti",
+       "log-action-filter-newusers-create": "Creazione da utente anonimo",
+       "log-action-filter-newusers-create2": "Creazione da utente registrato",
+       "log-action-filter-newusers-autocreate": "Creazione automatica",
+       "log-action-filter-newusers-byemail": "Creazione con password inviata via email",
        "log-action-filter-patrol-patrol": "Verifica manuale",
        "log-action-filter-patrol-autopatrol": "Verifica automatica",
        "log-action-filter-protect-protect": "Protezione",
        "log-action-filter-protect-modify": "Modifica protezione",
        "log-action-filter-protect-unprotect": "Sprotezione",
+       "log-action-filter-protect-move_prot": "Protezione spostata",
+       "log-action-filter-rights-rights": "Modifica manuale",
+       "log-action-filter-rights-autopromote": "Modifica automatica",
+       "log-action-filter-suppress-event": "Soppressione registro",
+       "log-action-filter-suppress-revision": "Soppressione versione",
+       "log-action-filter-suppress-delete": "Soppressione pagina",
+       "log-action-filter-suppress-block": "Soppressione utente da blocco",
+       "log-action-filter-suppress-reblock": "Soppressione utente da ri-blocco",
        "log-action-filter-upload-upload": "Nuovo caricamento",
        "log-action-filter-upload-overwrite": "Ricaricamento"
 }
index d1667fe..20682ca 100644 (file)
        "categories-submit": "表示",
        "categoriespagetext": "以下の{{PLURAL:$1|カテゴリ}}にはページまたはメディアがあります。\n[[Special:UnusedCategories|使われていないカテゴリ]]はここには表示していません。\n[[Special:WantedCategories|カテゴリページが存在しないカテゴリ]]も参照してください。",
        "categoriesfrom": "最初に表示するカテゴリ:",
-       "special-categories-sort-count": "項目数順に並べ替え",
-       "special-categories-sort-abc": "辞書順に並べ替え",
        "deletedcontributions": "利用者の削除された投稿",
        "deletedcontributions-title": "利用者の削除された投稿",
        "sp-deletedcontributions-contribs": "投稿記録",
index 6b5ad53..0659075 100644 (file)
                ]
        },
        "tog-underline": "Garisen ngisoré pranala:",
-       "tog-hideminor": "Dhelikaké suntingan cilik ing owah-owahan pungkasan",
-       "tog-hidepatrolled": "Dhelikaké suntingan kapanto ing owah-owahan pungkasan",
+       "tog-hideminor": "Dhelikaké besutan cilik ing owah-owahan pungkasan",
+       "tog-hidepatrolled": "Dhelikaké besutan awasan ing owah-owahan pungkasan",
        "tog-newpageshidepatrolled": "Dhelikaké kaca kapanto saka daptar kaca anyar",
+       "tog-hidecategorization": "Dhelikaké kategorisasi kaca",
        "tog-extendwatchlist": "Jembaraké daptar pangawasan kanggo nuduhaké kabèh owahan, ora mung sing paling anyar",
        "tog-usenewrc": "Owah-owahané paguyuban miturut kaca nèng owah-owahan anyar lan daptar panto",
        "tog-numberheadings": "Wènèhana nomer judul secara otomatis",
-       "tog-showtoolbar": "Tuduhna <em>toolbar</em> (batang piranti) panyuntingan (mbutuhaké JavaScript)",
-       "tog-editondblclick": "Sunting kaca nganggo klik ping loro (mbutuhaké JavaScript)",
+       "tog-showtoolbar": "Tuduhaké wilah piranti sarana besut",
+       "tog-editondblclick": "Besut kaca sarana ngeklik pindho",
        "tog-editsectiononrightclick": "Fungsèkna panyuntingan sub-bagian mawa klik-tengen ing judul bagian (mbutuhaké JavaScript)",
        "tog-watchcreations": "Tambahaké kaca sing tak gawé lan berkas sing tak unggah nèng daptar pangawasan",
        "tog-watchdefault": "Tambahaké kaca lan berkas sing tak sunting nèng daptar pangawasan",
        "tog-watchmoves": "Tambahaké kaca lan berkas sing tak pindhahaké nèng daptar pangawasan",
        "tog-watchdeletion": "Tambahaké kaca lan berkas sing tak busak nèng daptar pangawasan",
+       "tog-watchuploads": "Tambahaké barkas anyar sing tak unggah nyang pawawanganku",
+       "tog-watchrollback": "Tambahaké kaca sing tak wurungaké nyang pawawanganku",
        "tog-minordefault": "Tandhanana kabèh suntingan dadi suntingan cilik secara baku",
        "tog-previewontop": "Tuduhna pratayang sadurungé kothak sunting lan ora sawisé",
        "tog-previewonfirst": "Tuduhna pratayang ing suntingan kapisan",
        "tog-shownumberswatching": "Tuduhna cacahé pangawas",
        "tog-oldsig": "Tapak asma sing ana:",
        "tog-fancysig": "Anggepen tapak asta minangka teks wiki (tanpa pranala otomatis)",
-       "tog-uselivepreview": "Nganggoa pratayang langsung (mbutuhaké JavaScript) (eksperimental)",
+       "tog-uselivepreview": "Trapaké prawuryan langsung",
        "tog-forceeditsummary": "Élingna aku menawa kothak ringkesan suntingan isih kosong",
        "tog-watchlisthideown": "Delikna suntinganku ing daftar pangawasan",
-       "tog-watchlisthidebots": "Delikna suntingan ing daftar pangawasan",
+       "tog-watchlisthidebots": "Dhelikaké besutan bot saka pangawasan",
        "tog-watchlisthideminor": "Delikna suntingan kecil di daftar pangawasan",
        "tog-watchlisthideliu": "Ngumpetaké suntingan panganggo sing mlebu log seka daftar pangawasan",
+       "tog-watchlistreloadautomatically": "Mot manèh pawawangan kanthi otomanis samangsa panyaring diowah (butuh JavaScript)",
        "tog-watchlisthideanons": "Ngumpetaké suntingan panganggo anonim seka daftar pangawasan",
        "tog-watchlisthidepatrolled": "Delikna suntingan sing wis dipatroli saka daftar pangawasan",
+       "tog-watchlisthidecategorization": "Dhelikaké kategorisasi kaca",
        "tog-ccmeonemails": "Kirimana aku salinan layang e-mail sing tak-kirimaké menyang wong liya",
        "tog-diffonly": "Aja dituduhaké isi kaca ing ngisor bédané suntingan",
        "tog-showhiddencats": "Tuduhna kategori sing didelikaké",
        "tog-norollbackdiff": "Lirwaaké prabédan sawusé nglakokaké sawijining pambalikan.",
        "tog-useeditwarning": "Èlingaké kula yèn kula ninggalaké suntingan sing durung kasimpen",
-       "tog-prefershttps": "Nganggo sambungan sing aman rikala mlebet log",
-       "underline-always": "Tansah",
-       "underline-never": "Ora",
+       "tog-prefershttps": "Panggah sarana sambungan aman nalika mlebu",
+       "underline-always": "Mesthi",
+       "underline-never": "Ora tau",
        "underline-default": "Kulit atau penjelajah bawaan",
        "editfont-style": "Modhèl aksara (font) ing kotak suntingan:",
        "editfont-default": "Standar panjelajah wèb",
-       "editfont-monospace": "Aksara (font) Monospace",
-       "editfont-sansserif": "Aksara (font) Sans-serif",
-       "editfont-serif": "Aksara (font) Serif",
+       "editfont-monospace": "Fon monospasi",
+       "editfont-sansserif": "Fon tansèrif",
+       "editfont-serif": "Fon sèrif",
        "sunday": "Minggu",
        "monday": "Senèn",
        "tuesday": "Selasa",
        "february-gen": "Fèbruari",
        "march-gen": "Maret",
        "april-gen": "April",
-       "may-gen": "Méi",
+       "may-gen": "Mèi",
        "june-gen": "Juni",
        "july-gen": "Juli",
        "august-gen": "Agustus",
        "nov": "Nop",
        "dec": "Dès",
        "january-date": "Januari $1",
-       "february-date": "Februari $1",
+       "february-date": "bruari $1",
        "march-date": "Maret $1",
        "april-date": "April $1",
        "may-date": "$1 Mèi",
        "october-date": "Oktober $1",
        "november-date": "$1 Novèmber",
        "december-date": "$1 Dèsèmber",
+       "period-am": "Isuk-Awan",
+       "period-pm": "Soré-Wengi",
        "pagecategories": "{{PLURAL:$1|Kategori|Kategori}}",
        "category_header": "Kaca sajeroning kategori \"$1\"",
        "subcategories": "Subkategori",
-       "category-media-header": "Média ing kategori \"$1\"",
+       "category-media-header": "Médhia sajeroning kategori \"$1\"",
        "category-empty": "''Kategori iki saiki ora ngandhut artikel utawa média.''",
-       "hidden-categories": "{{PLURAL:$1|Kategori sing didelikaké|Kategori sing didelikaké}}",
-       "hidden-category-category": "Kategori sing didelikaké",
+       "hidden-categories": "{{PLURAL:$1|Kategori kadhelikaké|Kategori kadhelikaké}}",
+       "hidden-category-category": "Kategori kadhelikan",
        "category-subcat-count": "{{PLURAL:$2|Kategori iki namung nduwé subkategori ing ngisor ikit.|Dituduhaké {{PLURAL:$1|subkategori|$1 subkategori}} sing kalebu ing kategori iki saka total $2.}}",
        "category-subcat-count-limited": "Kategori iki ora duwé {{PLURAL:$1|subkategori|$1 subkategori}} ''berikut''.",
        "category-article-count": "{{PLURAL:$2|Kategori iki namung ndarbèni kaca iki.|Dituduhaké {{PLURAL:$1|kaca|$1 kaca-kaca}} sing kalebu ing kategori iki saka gunggungé $2.}}",
        "category-article-count-limited": "Kategori iki ngandhut {{PLURAL:$1|kaca|$1 kaca-kaca}} sing kapacak ing ngisor iki.",
-       "category-file-count": "{{PLURAL:$2|Kategori iki namung nduwé berkas iki.|Dituduhaké {{PLURAL:$1|berkas|$1 berkas-berkas}} sing kalebu ing kategori iki saka gunggungé $2.}}",
+       "category-file-count": "{{PLURAL:$2|Kategori iki mung isi barkas iki.|{{PLURAL:$1|Barkas|$1 barkas}} iki ana sajeroning kategori iki saka $2 gunggungé.}}",
        "category-file-count-limited": "Kategori iki ndarbèni {{PLURAL:$1|berkas|$1 berkas-berkas}} sing kapacak ing ngisor iki.",
        "listingcontinuesabbrev": "samb.",
-       "index-category": "Kaca sing diindhèks",
-       "noindex-category": "Kaca sing ora diindhèks",
-       "broken-file-category": "Kaca kanthi pranala gambar rusak",
-       "about": "Prakara",
-       "article": "Artikel",
-       "newwindow": "(buka ing jendhéla anyar)",
-       "cancel": "Batalna",
+       "index-category": "Kaca kaindhèksan",
+       "noindex-category": "Kaca ora kaindhèksan",
+       "broken-file-category": "Kaca mawa pranala berkas rusak",
+       "about": "Bab",
+       "article": "Kaca isi",
+       "newwindow": "(buka mawa jendhéla anyar)",
+       "cancel": "Wurungaké",
        "moredotdotdot": "Liyané...",
-       "morenotlisted": "Isih ana sing ora didaptarne...",
+       "morenotlisted": "Pratélan iki ora jangkep.",
        "mypage": "Kaca",
        "mytalk": "Wicara",
-       "anontalk": "Dhiskusi IP puniki",
+       "anontalk": "Rembug",
        "navigation": "Napigasi",
        "and": "&#32;lan",
        "qbfind": "Golèk",
-       "qbbrowse": "Navigasi",
-       "qbedit": "Sunting",
+       "qbbrowse": "Luru",
+       "qbedit": "Besut",
        "qbpageoptions": "Kaca iki",
-       "qbmyoptions": "Opsiku",
-       "faq": "FAQ (Pitakonan sing kerep diajokaké)",
-       "faqpage": "Project:FAQ",
-       "actions": "Tindakan",
+       "qbmyoptions": "Kaca-kacaku",
+       "faq": "Pitakon Kerep",
+       "faqpage": "Project:Pitakon Kerep",
+       "actions": "Tumindak",
        "namespaces": "Lowah aran",
        "variants": "Parian",
        "navigation-heading": "Menu napigasi",
-       "errorpagetitle": "Kasalahan",
+       "errorpagetitle": "Cacad",
        "returnto": "Bali nyang $1.",
        "tagline": "Saka {{SITENAME}}",
        "help": "Pitulung",
        "search": "Golèk",
        "searchbutton": "Golèk",
-       "go": "Nuju menyang",
+       "go": "Menyang",
        "searcharticle": "Menyang",
        "history": "Sajarah kaca",
-       "history_short": "Vèrsi lawas",
-       "updatedmarker": "diowahi wiwit kunjungan pungkasanku",
+       "history_short": "Babad",
+       "updatedmarker": "wis inganyaran kawit tekaku sing pungkasan",
        "printableversion": "Cara cithakan",
        "permalink": "Pranala permanèn",
        "print": "Cithak",
-       "view": "Pirsani",
+       "view": "Deleng",
        "view-foreign": "Deleng nyang $1",
        "edit": "Besut",
-       "create": "Nggawé",
-       "create-local": "Tambah wedharan enggon-enggonan",
-       "editthispage": "Sunting kaca iki",
-       "create-this-page": "Nggawé kaca iki",
+       "edit-local": "Besut panyandra enggon-enggonan",
+       "create": "Gawé",
+       "create-local": "Tambah panyadra enggon-enggonan",
+       "editthispage": "Besut kaca iki",
+       "create-this-page": "Gawé kaca iki",
        "delete": "Busak",
        "deletethispage": "Busak kaca iki",
-       "undeletethispage": "Wurung busak kaca iki",
-       "undelete_short": "Batal busak $1 {{PLURAL:$1|suntingan|suntingan}}",
+       "undeletethispage": "Wurungaké pambusaking kaca iki",
+       "undelete_short": "Batal busak {{PLURAL:$1|sabesutan|$1 besutan}}",
        "viewdeleted_short": "Pirsani {{PLURAL:$1|suntingan|suntingan}} ingkang sampun kabusak",
-       "protect": "Reksanen",
-       "protect_change": "ngowahi reksanan",
-       "protectthispage": "Reksanen kaca iki",
-       "unprotect": "Owahi pangreksan",
-       "unprotectthispage": "Owahi pangreksan kaca iki",
+       "protect": "Reksa",
+       "protect_change": "owah",
+       "protectthispage": "Reksa kaca iki",
+       "unprotect": "Owah rereksan",
+       "unprotectthispage": "Owah rereksan kaca iki",
        "newpage": "Kaca anyar",
-       "talkpage": "Dhiskusèkna kaca iki",
+       "talkpage": "Rembug kaca iki",
        "talkpagelinktext": "gunem",
-       "specialpage": "Kaca astaméwa",
+       "specialpage": "Kaca mirunggan",
        "personaltools": "Piranti pribadhi",
-       "articlepage": "nDeleng artikel",
+       "articlepage": "Deleng kaca isi",
        "talk": "Rembug",
-       "views": "Tampilan",
+       "views": "Praèn",
        "toolbox": "Piranti",
-       "userpage": "Ndeleng kaca panganggo",
-       "projectpage": "Ndeleng kaca proyèk",
-       "imagepage": "Deleng kaca berkas",
-       "mediawikipage": "Ndeleng kaca pesen sistem",
-       "templatepage": "Ndeleng kaca cithakan",
-       "viewhelppage": "Ndeleng kaca pitulung",
-       "categorypage": "Ndeleng kaca kategori",
-       "viewtalkpage": "Ndeleng kaca dhiskusi",
-       "otherlanguages": "Jeroning basa liya",
-       "redirectedfrom": "(Dialihkan dari $1)",
-       "redirectpagesub": "Kaca pangalihan",
+       "userpage": "Deleng kaca panganggo",
+       "projectpage": "Deleng kaca proyèk",
+       "imagepage": "Deleng kaca barkas",
+       "mediawikipage": "Deleng kaca nawala",
+       "templatepage": "Deleng kaca cithakan",
+       "viewhelppage": "Deleng kaca pitulung",
+       "categorypage": "Deleng kaca kategori",
+       "viewtalkpage": "Deleng parembugan",
+       "otherlanguages": "Ing basa liya",
+       "redirectedfrom": "(Dilih saka $1)",
+       "redirectpagesub": "Alih kaca",
+       "redirectto": "Malih nyang:",
        "lastmodifiedat": "Kaca iki pungkasan diowah kala $1, tabuh $2.",
        "viewcount": "Kaca iki wis tau diaksès cacahé ping {{PLURAL:$1|siji|$1}}.",
-       "protectedpage": "Kaca sing direksa",
+       "protectedpage": "Kaca kareksa",
        "jumpto": "Jujug:",
        "jumptonavigation": "napigasi",
        "jumptosearch": "golèk",
        "view-pool-error": "Nyuwun ngapuro, peladèn lagi sibuk wektu iki.\nKakèhan panganggo sing nyoba mbukak kaca iki.\nEntèni sedhéla sadurungé nyoba ngaksès kaca iki manèh .\n\n$1",
+       "generic-pool-error": "Nyuwun pangapura, paladèn saiki nembé arungan.\nKakèhan panganggo sing péngin ndeleng sumber iki.\nEntèna sadhéla sadurungé sampéyan nekani sumber iki manèh.",
        "pool-timeout": "Kelangkung wekdal nengga kunci",
        "pool-queuefull": "Kempalan antrian kebak",
        "pool-errorunknown": "Kalepata ingkang mboten dipun mangertosi",
+       "poolcounter-usage-error": "Cacad panganggo: $1",
        "aboutsite": "Bab {{SITENAME}}",
        "aboutpage": "Project:Bab",
        "copyright": "Kabèh isi kasedyakaké miturut $1.",
        "disclaimers": "Sélakan",
        "disclaimerpage": "Project:Sélakan umum",
        "edithelp": "Pitulung besut",
+       "helppage-top-gethelp": "Pitulung",
        "mainpage": "Kaca Pokok",
        "mainpage-description": "Kaca pokok",
        "policy-url": "Project:Kabijakan",
        "badaccess-groups": "Pratingkah panjenengan diwatesi tumrap panganggo ing {{PLURAL:$2|klompoké|klompoké}}: $1.",
        "versionrequired": "Dibutuhaké MediaWiki vèrsi $1",
        "versionrequiredtext": "MediaWiki vèrsi $1 dibutuhaké kanggo nggunakaké kaca iki. Mangga mirsani [[Special:Version|kaca iki]]",
-       "ok": "OK",
+       "ok": "O",
        "retrievedfrom": "Dijupuk saka: \"$1\"",
        "youhavenewmessages": "Panjenengan kagungan $1 ($2).",
        "youhavenewmessagesfromusers": "Sampéyan nduwé $1 saka  {{PLURAL:$3|panganggo liya|$3 panganggo}} ($2).",
        "viewsourcelink": "deleng sumber",
        "editsectionhint": "Besut pérangan: $1",
        "toc": "Isi",
-       "showtoc": "tuduhna",
-       "hidetoc": "delikna",
-       "collapsible-collapse": "Singidaken",
-       "collapsible-expand": "Tuduhna",
+       "showtoc": "tuduhaké",
+       "hidetoc": "dhelikaké",
+       "collapsible-collapse": "Neb",
+       "collapsible-expand": "Wenga",
+       "confirmable-confirm": "{{GENDER:$1|Sampéyan}} yakin?",
+       "confirmable-yes": "Iya",
+       "confirmable-no": "Ora",
        "thisisdeleted": "Mirsani utawa mbalèkaké $1?",
-       "viewdeleted": "Mirsani $1?",
+       "viewdeleted": "Deleng $1?",
        "restorelink": "$1 {{PLURAL:$1|suntingan|suntingan}} sing wis kabusak",
        "feedlinks": "Asupan:",
        "feed-invalid": "Tipe permintaan asupan ora bener.",
        "sort-ascending": "Urutaké munggah",
        "nstab-main": "Kaca",
        "nstab-user": "Kaca panganggo",
-       "nstab-media": "Media",
+       "nstab-media": "Kaca médhia",
        "nstab-special": "Kaca mirunggan",
        "nstab-project": "Kaca proyèk",
        "nstab-image": "Barkas",
-       "nstab-mediawiki": "Pariwara",
+       "nstab-mediawiki": "Nawala",
        "nstab-template": "Cithakan",
-       "nstab-help": "Pitulung",
+       "nstab-help": "Kaca pitulung",
        "nstab-category": "Kategori",
        "mainpage-nstab": "Kaca pokok",
-       "nosuchaction": "Ora ana pratingkah kaya ngono",
+       "nosuchaction": "Ora ana lelakon mangkono",
        "nosuchactiontext": "Pratingkah sing dirinci déning URL ora sah.\nPanjenengan manawa salah ketik nalika ngisi URL, utawa salah ngisi pranala.\nIki manawa uga nuduhaké anané kesalahan ing piranti alus sing dipigunakaké déning {{SITENAME}}.",
-       "nosuchspecialpage": "Ora ana kaca astaméwa kaya ngono",
+       "nosuchspecialpage": "Ora ana kaca mirunggan mangkono",
        "nospecialpagetext": "Panjenengan nyuwun kaca astaméwa sing ora sah. Daftar kaca astaméwa sing sah bisa dipirsani ing [[Special:SpecialPages|daftar kaca astaméwa]].",
-       "error": "Kasalahan",
-       "databaseerror": "Kasalahan database",
+       "error": "Cacad",
+       "databaseerror": "Cacad umpak data",
        "databaseerror-text": "Ana kerusakan ing basis data (query error).\n\nMungkin ana masalah ing software-e.",
        "databaseerror-textcl": "Ana kerusakan ing basis data (query error).",
        "databaseerror-query": "Query: $1",
        "databaseerror-function": "Function: $1",
-       "databaseerror-error": "Error: $1",
+       "databaseerror-error": "Cacad: $1",
        "laggedslavemode": "Pènget: Kaca iki mbokmenawa isiné dudu pangowahan pungkasan.",
-       "readonly": "Database dikunci",
+       "readonly": "Umpak data kagembok",
        "enterlockreason": "Lebokna alesan panguncèn, kalebu uga prakiran kapan kunci bakal dibuka",
        "readonlytext": "Database lagi dikunci marang panampan anyar. Pangurus sing ngunci mènèhi katrangan kaya mangkéné: <p>$1",
        "missing-article": "Basis data ora bisa nemokaké tèks kaca sing kuduné ana, yaiku \"$1\" $2.\nBab iki bisasané disebabaké déning pranala daluwarsa menyang revisi sadurungé kaca sing wis dibusak.\nYèn dudu iki panyebabé, panjenengan manawa bisa nemokaké kasalahan (''bug'') jroning piranti alus (''software''). Mangga dilapuraké bab iki menyang [[Special:ListUsers/sysop|administrator]], kanthi nyebutaké alamat URL sing dituju",
-       "missingarticle-rev": "(révisi#: $1)",
+       "missingarticle-rev": "(owahan#: $1)",
        "missingarticle-diff": "(Béda: $1, $2)",
        "readonly_lag": "Database wis dikunci mawa otomatis sawetara database sékundhèr lagi nglakoni sinkronisasi mawa database utama",
-       "internalerror": "Kasalahan internal",
-       "internalerror_info": "Kaluputan internal: $1",
+       "internalerror": "Cacad njero",
+       "internalerror_info": "Cacad njero: $1",
        "filecopyerror": "Ora bisa nulad berkas \"$1\" menyang \"$2\".",
        "filerenameerror": "Ora bisa ngowahi saka \"$1\" dadi \"$2\".",
        "filedeleteerror": "Ora bisa mbusak berkas \"$1\".",
        "exception-nologin-text-manual": "Tulung $1 kanggo ngakses kaca utawa kelakon iki.",
        "virus-badscanner": "Kasalahan konfigurasi: pamindai virus ora dikenal: ''$1''",
        "virus-scanfailed": "''Pemindaian'' utawa ''scan'' gagal (kode $1)",
-       "virus-unknownscanner": "Antivirus ora ditepungi:",
+       "virus-unknownscanner": "antivirus buhbuhan:",
        "logouttext": "'''Sampéyan wis metu log'''\n\nCathet yèn sapérangan kaca mungkin isih nampilaké kayata sampéyan isih mlebu log, kuwi bisa ilang yèn sampéyan ngresiki ''cache'' pramban sampéyan.",
+       "cannotlogoutnow-title": "Ora bisa metu saiki",
+       "cannotlogoutnow-text": "Metu ora mungkin menawa nganggo $1.",
        "welcomeuser": "Sugeng Rawuh, $1!",
        "welcomecreation-msg": "Akun panjenengan wis kacipta. Aja lali nata konfigurasi [[Special:Preferences|preferensi {{SITENAME}}]] panjenengan.",
-       "yourname": "Asma pangangeman",
+       "yourname": "Jeneng panganggo:",
        "userlogin-yourname": "Jeneng panganggo",
        "userlogin-yourname-ph": "Isi jeneng panganggo Sampéyan",
-       "createacct-another-username-ph": "Lebokna jeneng panganggo:",
-       "yourpassword": "Tembung sandhi:",
+       "createacct-another-username-ph": "Isi jeneng panganggo",
+       "yourpassword": "Tembung wadi:",
        "userlogin-yourpassword": "Tembung wadi",
-       "userlogin-yourpassword-ph": "Lebokna tembung sandhi",
-       "createacct-yourpassword-ph": "Lebokna tembung sandhi",
-       "yourpasswordagain": "Balènana tembung sandhi",
-       "createacct-yourpasswordagain": "Konfirmasi tembung sandhi",
-       "createacct-yourpasswordagain-ph": "Lebokna tembung sandhi maneh",
+       "userlogin-yourpassword-ph": "Lebokaké tembung wadining sampéyan",
+       "createacct-yourpassword-ph": "Lebokaké tembung wadi",
+       "yourpasswordagain": "Tik manèh tembung wadiné:",
+       "createacct-yourpasswordagain": "Netepaké tembung wadi",
+       "createacct-yourpasswordagain-ph": "Lebokaké manèh tembung wadiné",
        "remembermypassword": "Émut tembung sandi kula (salebeting $1 {{PLURAL:$1|dinten|dinten}})",
-       "userlogin-remembermypassword": "Panggah mlebu",
+       "userlogin-remembermypassword": "Gawé amrih aku panggah kalebu",
        "userlogin-signwithsecure": "Nganggo koneksi aman",
+       "cannotloginnow-title": "Ora bisa mlebu saiki",
+       "cannotloginnow-text": "Mlebu ora mungkin menawa nganggo $1.",
        "yourdomainname": "Dhomain panjenengan",
        "password-change-forbidden": "Sampéyan ora bisa ngganti tembung sandhi nèng wiki iki.",
        "externaldberror": "Ana kasalahan otèntikasi basis dhata èksternal utawa panjenengan ora pareng nglakoni pemutakhiran marang akun èksternal panjenengan.",
        "login": "Mlebu",
        "nav-login-createaccount": "Log mlebu / nggawé rékening (akun)",
        "userlogin": "Mlebu log / gawé rékening (akun)",
-       "userloginnocreate": "Mlebu log",
-       "logout": "Oncat",
-       "userlogout": "Metu log",
-       "notloggedin": "Durung mlebu log",
+       "userloginnocreate": "Mlebu",
+       "logout": "Metu",
+       "userlogout": "Metu",
+       "notloggedin": "Durung kalebu",
        "userlogin-noaccount": "Durung duwé akun?",
        "userlogin-joinproject": "Mèlua {{SITENAME}}",
        "nologin": "Durung kagungan asma panganggo? '''$1'''.",
-       "nologinlink": "Ndaftaraké akun anyar",
+       "nologinlink": "Gawé akun",
        "createaccount": "Gawé akun",
-       "gotaccount": "Wis kagungan akun? '''$1'''.",
+       "gotaccount": "Wis duwé akun? $1.",
        "gotaccountlink": "Mlebu",
        "userlogin-resetlink": "Lali rincian mlebu log Sampéyan?",
-       "userlogin-resetpassword-link": "Lali tembung wadiné Sampéyan?",
+       "userlogin-resetpassword-link": "Lali tembung wadining sampéyan?",
+       "userlogin-helplink2": "Tulungi mlebu",
        "userlogin-loggedin": "Sampeyan sampun mlebet log dadi {{GENDER:$1|$1}}.\nGunakna formulir ing ngisor iki kanggo mlebet log dadi panganggo liyane.",
-       "userlogin-createanother": "Gawé akun anyar",
+       "userlogin-createanother": "Gawé akun liya",
        "createacct-emailrequired": "Alamat layang èlèktronik",
-       "createacct-emailoptional": "Alamat layang èlèktronik (ora kudu)",
-       "createacct-email-ph": "Lebokna alamat layang èlèktronik sampeyan",
-       "createacct-another-email-ph": "Lebokna alamat layang èlèktronik",
+       "createacct-emailoptional": "Alamat layang èlèktronik (manasuka)",
+       "createacct-email-ph": "Lebokaké layang èlèktronik sampéyan",
+       "createacct-another-email-ph": "Isi alamat layang èlèktronik",
        "createaccountmail": "Nganggoa sandi sauntara sembarang lan kirimna liwat layang e-mail ing ngisor iki",
-       "createacct-realname": "Jeneng asli (ora kudu)",
+       "createacct-realname": "Jeneng asli (manasuka)",
        "createaccountreason": "Alesan:",
        "createacct-reason": "Alesan",
        "createacct-reason-ph": "Kenapa sampeyan nggawe akun liyane",
-       "createacct-submit": "Gawé akun",
-       "createacct-another-submit": "Gawé akun anyar",
-       "createacct-benefit-heading": "{{SITENAME}} digawe karo wong-wong kaya sampeyan.",
-       "createacct-benefit-body1": "{{PLURAL:$1|owahan|owahan}}",
+       "createacct-submit": "Gawé akun sampéyan",
+       "createacct-another-submit": "Gawé akun",
+       "createacct-benefit-heading": "{{SITENAME}} digawé déning wong-wong kaya déné sampéyan.",
+       "createacct-benefit-body1": "{{PLURAL:$1|besutan|besutan}}",
        "createacct-benefit-body2": "{{PLURAL:$1|kaca|kaca}}",
-       "createacct-benefit-body3": "{{PLURAL:$1|kontributor|kontributor}} keri dhewe",
+       "createacct-benefit-body3": "{{PLURAL:$1|panyumbang|panyumbang}} pungkasan",
        "badretype": "Sandhi panjenengan ora gathuk",
+       "usernameinprogress": "Panggawéning akun tumrap jeneng panganggo iki tembé lumaku.\nEntèni sadhéla.",
        "userexists": "Jeneng panganggo sing dilebokaké lagi dianggo.\nMangga pilih jeneng liya.",
-       "loginerror": "Kasalahan mlebu log",
-       "createacct-error": "Ora isa nggawe akun",
-       "createaccounterror": "Ora bisa nyipta akun: $1",
+       "loginerror": "Cacad nalika mlebu",
+       "createacct-error": "Cacad nalika nggawé akun",
+       "createaccounterror": "Ora bisa gawé akun: $1",
        "nocookiesnew": "Rékening utawa akun panganggo panjenengan wis digawé, nanging panjenengan durung mlebu log. {{SITENAME}} nggunakaké ''cookies'' kanggo  log panganggo. ''Cookies'' ing panjlajah wèb panjengengan dipatèni. Mangga diaktifaké lan mlebu log manèh mawa jeneng panganggo lan tembung sandhi panjenengan.",
        "nocookieslogin": "{{SITENAME}} nggunakaké ''cookies'' kanggo log panganggoné. ''Cookies'' ing panjlajah wèb panjenengan dipatèni. Mangga ngaktifaké manèh lan coba manèh.",
-       "nocookiesfornew": "Akun panganggé boten kadamel, amargi kita boten saged mesthèkaken sumberipun.\nPesthèkaken panjenengan sampun ngaktifaken kuki, lajeng amot malih kaca punika lan cobi malih.",
+       "nocookiesfornew": "Akun panganggo ora digawé amarga sumberé ora bisa dipesthèkaké.\nPesthèkaké sampéyan wis ngurubaké kuki, banjur balèni ngamot kaca iki lan njajal manèh.",
        "noname": "Asma panganggo sing panjenengan pilih ora sah.",
-       "loginsuccesstitle": "Bisa suksès mlebu log",
+       "loginsuccesstitle": "Kasil mlebu",
        "loginsuccess": "'''Panjenengan saiki mlebu ing {{SITENAME}} kanthi asma \"$1\".'''",
        "nosuchuser": "Ora ana panganggo mawa asma \"$1\".\nJeneng panganggo iku mbédakaké kapitalisasi.\nCoba dipriksa manèh pasang aksarané, utawa [[Special:UserLogin/signup|gawé akun anyar]].",
        "nosuchusershort": "Ora ana panganggo mawa asma \"$1\". Coba dipriksa manèh pasang aksarané (éjaané).",
        "nouserspecified": "Panjenengan kudu milih asma panganggo.",
-       "login-userblocked": "Panganggé punika dipunblok. Login boten dipunidinaken",
+       "login-userblocked": "Panganggo iki pinalangan. Ora kena mbelu.",
        "wrongpassword": "Tembung sandhi sing dipilih salah. Mangga coba manèh.",
        "wrongpasswordempty": "Panjenengan ora milih tembung sandhi. Mangga dicoba manèh.",
        "passwordtooshort": "Tembung sesinglon paling sethithik cacahé {{PLURAL:$1|1 aksara|$1 aksara}}.",
+       "passwordtoolong": "Tembung wadi ora kena munjuli {{PLURAL:$1|1 pralambang|$1 pralambang}}.",
+       "passwordtoopopular": "Tembung wadi sing wis kaprah ora kena dianggo. Mangga pilih tembung wadi liya sing mbédani.",
        "password-name-match": "Tembung sandi panjenengan kudu béda karo jeneng panganggo panjenengan.",
-       "password-login-forbidden": "Pangginaan nami panganggé lan sandi puniki sampun kapenggak.",
-       "mailmypassword": "Kirim tembung sandhi anyar",
+       "password-login-forbidden": "Panganggoning jeneng panganggo lan tembung wadi iki dilarang.",
+       "mailmypassword": "Balèni gawé tembung wadi",
        "passwordremindertitle": "Pèngetan tembung sandhi saka {{SITENAME}}",
        "passwordremindertext": "Ana wong (mbokmanawa panjenengan dhéwé, saka alamat IP $1) nyuwun supaya dikirimi tembung sandhi anyar kanggo {{SITENAME}} ($4). Tembung sandi sawetara kanggo panganggo \"$2\" wis digawé lan saiki \"$3\". Yèn panjenengan pancèn nggayuh iki, mangga énggal mlebu log lan ngganti tembung sandi saiki.\nTembung sandi sawetara mau bakal kadaluwarsa ing {{PLURAL:$5|sadina|$5 dina}}.\nYèn wong liya sing nglakoni panyuwunan iki, utawa panjenengan éling tembung sandi panjenengan, lan ora kepéngin ngowahi, panjenengan ora usah nggubris pesen iki lan bisa tetep nganggo tembung sandi lawas.",
        "noemail": "Ora ana alamat layang e-mail sing kacathet kanggo panganggo \"$1\".",
        "blocked-mailpassword": "Alamat IP panjenengan diblokir saka panyuntingan, mulané panjenengan ora olèh nganggo fungsi pèngetan tembung sandhi kanggo ''mencegah penyalahgunaan''.",
        "eauthentsent": "Sawijining layang élèktronik (e-mail) kanggo ndhedhes (konfirmasi) wis dikirim menyang alamat layang élèktronik sampeyan. \n\nSadhurunge layang élèktronik liyane dikirim menyang akun kuwi, sampeyan kudu melu parentah ing layang kuwi, kanggo mastikne yen alamat layang kuwi bener-bener dhuweke sampeyan.",
        "throttled-mailpassword": "Layang kanggo mbalèkaké tembung sandhi wis dikirim sasuwené ing {{PLURAL:$1|jam|$1 jam}}.\nKanggo nyegah ananing tumindhak culika, namung sak layang kanggo mbalèkaké tembung sandhi sing bakal dikirim sasuwéné ing {{PLURAL:$1|jam|$1 jam}}.",
-       "mailerror": "Kasalahan ing ngirimaké layang e-mail: $1",
+       "mailerror": "Cacad nalika ngirim layang: $1",
        "acct_creation_throttle_hit": "Tamu ing wiki iki kanthi alamat IP sing padha karo panjenengan wis gawé {{PLURAL:$1|1 akun|$1 akun}} ing sadina pungkasan, nganti cacah maksimum sing diidinaké.\nAmarga saka kuwi., tamu kanthi alamat IP iki ora bisa gawé akun manèh kanggo sauntara iki.",
        "emailauthenticated": "Alamat layang élèktronik (e-mail) panjenengan wis didhedhes (dikonfirmasi) ing tanggal $2, jam $3.",
        "emailnotauthenticated": "Alamat layang élèktronik panjenengan durung didhedhes (dikonfirmasi). \n\nSadurungé didhedhes, panjenengan ora bisa nganggo fitur layang élèktronik (e-mail) ing ngisor iki.",
        "invalidemailaddress": "Alamat e-mail iki ora bisa ditampa amarga formaté ora bener. Tulung lebokna alamat mawa format sing bener utawa kosongaké waé isèn kasebut.",
        "cannotchangeemail": "Alamat layang èlèktronik akun ora bisa diganti nèng wiki iki.",
        "emaildisabled": "Situs iki ora bisa ngirim layang èlèktronik.",
-       "accountcreated": "Akun wis kacipta.",
+       "accountcreated": "Akun wis kagawé",
        "accountcreatedtext": "Akun panganggo kanggo  [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|wicara]]) wis digawé.",
        "createaccount-title": "Gawé rékening kanggo {{SITENAME}}",
        "createaccount-text": "Ana wong sing nggawé sawijining akun utawa rékening kanggo alamat e-mail panjenengan ing {{SITENAME}} ($4) mawa jeneng \"$2\" lan tembung sandi \"$3\". Panjenengan disaranaké kanggo mlebu log lan ngganti tembung sandi panjenengan saiki.\n\nPanjenengan bisa nglirwakaké pesen iki yèn akun utawa rékening iki digawé déné sawijining kaluputan.",
        "suspicious-userlogout": "Panjaluk panjenengan supaya metu ditolak amarga katoné panjlajah internt utawa proksi panyinggah.",
        "createacct-another-realname-tip": "Jeneng asli ora kudu dilebokake.\n\nYen sampeyan milih nglebokake jeneng asli, jeneng kuwi bakal dinggo ngwenehi atribusi kanggo karya-karyane.",
        "pt-login": "Mlebu",
+       "pt-login-button": "Mlebu",
        "pt-createaccount": "Gawé akun",
+       "pt-userlogout": "Metu",
        "php-mail-error-unknown": "Kasalahan ora dingertèni nèng piguna mail() PHP.",
        "user-mail-no-addy": "Njajal ngirim layang èlèktronik tanpa alamat layang èlèktronik.",
        "user-mail-no-body": "Nyoba ngirim layang e-mail, tapi isine kosong.",
-       "changepassword": "Ganti tembung sandi",
+       "changepassword": "Ganti tembung wadi",
        "resetpass_announce": "Panjenengan wis mlebu log mawa kodhe sementara sing dikirim mawa e-mail. Menawa kersa nglanjutaké, panjenengan kudu milih tembung sandhi anyar ing kéné:",
        "resetpass_text": "<!-- Tambahaké teks ing kéné -->",
-       "resetpass_header": "Ganti tembung sandi akun",
-       "oldpassword": "Tembung sandi lawas:",
-       "newpassword": "Tembung sandi anyar:",
-       "retypenew": "Ketik ulang tembung sandi anyar:",
+       "resetpass_header": "Ganti tembung wadining akun",
+       "oldpassword": "Tembung wadi lawas:",
+       "newpassword": "Tembung wadi anyar:",
+       "retypenew": "Tik manèh tembung wadi anyaré:",
        "resetpass_submit": "Nata tembung sandhi lan mlebu log",
        "changepassword-success": "Tembung sandhi panjenengan wis suksès diowahi!",
-       "resetpass_forbidden": "Tembung sandhi ora bisa diganti",
+       "botpasswords": "Tembung wadi bot",
+       "botpasswords-label-appid": "Jeneng bot:",
+       "botpasswords-label-create": "Gawé",
+       "botpasswords-label-update": "Anyari",
+       "botpasswords-label-cancel": "Batal",
+       "botpasswords-label-delete": "Busak",
+       "botpasswords-label-resetpassword": "Balèni gawé tembung wadi",
+       "resetpass_forbidden": "Tembung wadi ora bisa diganti",
        "resetpass-no-info": "Panjenengan kudu mlebu log kanggo ngaksès kaca iki sacara langsung.",
-       "resetpass-submit-loggedin": "Ganti tembung sandi",
+       "resetpass-submit-loggedin": "Ganti tembung wadi",
        "resetpass-submit-cancel": "Batal",
        "resetpass-wrong-oldpass": "Tembung sandi ora sah.\nPanjengen manawa wis kasil ganti tembung sandi utawa nyuwun tembung sandi sauntara sing anyar.",
-       "resetpass-temp-password": "Tembung sandi sauntara:",
+       "resetpass-temp-password": "Tembung wadi sauntara:",
        "resetpass-abort-generic": "Ngowah tembung sandhi diwurungaké déning èkstènsi.",
        "passwordreset": "Balèni setèl tembung sandhi",
        "passwordreset-text-one": "Lengkapana formulir iki kanggo nampa tembung sandhi sementara lewat layang elektronik.",
        "passwordreset-emailtitle": "Rincian akun nèng {{SITENAME}}",
        "passwordreset-emailtext-ip": "Ana uwong (mbok menawa Sampéyan, mawa angka IP $1) njaluk ganti tembung sandhiné Sampéyan ana ing {{SITENAME}} ($4). {{PLURAL:$3|Rèkèning|Rèkèning-rèkèning}} ngisor iki magepokan karo padunungané layang èlèktronik iki:\n\n$2\n\n{{PLURAL:$3|Tembung sandhi sawetara iki}} bakal kedaluwarsa ing {{PLURAL:$5|sak dina|$5 dina}}.\nSampéyan kudu mlebu log lan milih siji tembung sandhi anyar saiki. Yèn wong liya sing njaluk iki, utawa yèn Sampéyan jebul wis kèlingan tembung sandhiné sing lawas saéngga ora ana niyat kanggo ngganti, Sampéyan bisa ngejaraké wara-wara iki lan bacutaké nganggo tembung sandhiné lawas Sampéyan.",
        "passwordreset-emailtext-user": "Panganggo $1 seka {{SITENAME}} njaluk ganti tembung sandhiné Sampéyan ana ing {{SITENAME}} ($4). {{PLURAL:$3|Rèkèning|Rèkèning-rèkèning}} ngisor iki magepokan karo padunungané layang èlèktronik iki:\n\n$2\n\n{{PLURAL:$3|Tembung sandhi sawetara iki}} bakal kedaluwarsa ing {{PLURAL:$5|sak dina|$5 dina}}.\nSampéyan kudu mlebu log lan milih siji tembung sandhi anyar saiki. Yèn wong liya sing njaluk iki, utawa yèn Sampéyan jebul wis kèlingan tembung sandhiné sing lawas saéngga ora ana niyat kanggo ngganti, Sampéyan bisa ngejaraké wara-wara iki lan bacutaké nganggo tembung sandhiné lawas Sampéyan.",
-       "passwordreset-emailelement": "Jeneng panganggo: \n$1\n\nTembung sandhi sawetara: \n$2",
+       "passwordreset-emailelement": "Jeneng panganggo: \n$1\n\nTembung wadi sauntara: \n$2",
        "passwordreset-emailsentemail": "Layang èlèktronik kanggo mbalèkaké tembung sandhi wis dikirim.",
        "passwordreset-emailsent-capture": "Layang èlèktronik kanggo mbalèkaké tembung sandhi wis dikirim, bisa didelok ngisor iki.",
        "passwordreset-emailerror-capture": "Layang èlèktronik pangèling tembung sandhi wis digawe, yaiku sing ditampilaké nèng ngisor iki, nanging ora kasil dikirim ing {{GENDER:$2|panganggo}}: $1",
        "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": "Ora ana token sing bisa direset.",
        "resettokens-tokens": "Token:",
-       "resettokens-token-label": "$1 (nilai saiki: $2)",
+       "resettokens-token-label": "$1 (biji saiki: $2)",
        "resettokens-watchlist-token": "Token kangge sindikasi web (Atom/RSS) saking [[Special:Watchlist|pangowahan ing daptar pangawasan sampeyan]]",
        "resettokens-done": "Reset token.",
        "resettokens-resetbutton": "Reset token sing dipilih",
        "bold_sample": "Tulisan kandel",
        "bold_tip": "Tulisann kandel",
        "italic_sample": "Tulisan miring",
-       "italic_tip": "Cithak miring",
+       "italic_tip": "Tulisan dhoyong",
        "link_sample": "Sesirah pranala",
        "link_tip": "Pranala njero",
        "extlink_sample": "http://www.example.com sesirahing pranala",
        "summary": "Tingkesan:",
        "subject": "Subyek/judhul:",
        "minoredit": "Iki besutan cilik",
-       "watchthis": "Awasana kaca iki",
+       "watchthis": "Awasi kaca iki",
        "savearticle": "Simpen kaca",
-       "preview": "Pratayang",
-       "showpreview": "Mirsani pratayang",
+       "preview": "Prawuryan",
+       "showpreview": "Tuduhaké prawuryan",
        "showdiff": "Tuduhaké owahan",
        "anoneditwarning": "<strong>Penget:</strong> Panjenengan boten mlebet log. Alamat IP Panjenengan badhe katingal dening publik manawi Panjenengan ngayahi ewah-ewahan. Manawi Panjenengan  <strong>[$1 mlebet log]</strong> utawai <strong>[$2 damel akun]</strong>, suntingan Panjenengan badhe kaatribusekaken dhumateng  nama pangangge Panjenengan, lan rupi-rupi  kauntungan sanesipun.",
        "anonpreviewwarning": "''Sampéyan durung mlebu log. Nyimpen bakal nyathet alamat IP Sampéyan nèng riwayat sunting kaca iki.''",
        "missingsummary": "'''Pènget:''' Panjenengan ora nglebokaké ringkesan panyuntingan. Menawa panjenengan mencèt tombol Simpen manèh, suntingan panjenengan bakal kasimpen tanpa ringkesan panyuntingan.",
        "missingcommenttext": "Tulung lebokna komentar ing ngisor iki.",
        "missingcommentheader": "'''Pangéling:''' Sampéyan durung nyadhiyakaké judhul/jejer kanggo tanggepan iki.\nYèn Sampéyan klik \"{{int:savearticle}}\" manèh, suntingan Sampéyan bakal kasimpen tanpa kuwi.",
-       "summary-preview": "Pratayang ringkesan:",
+       "summary-preview": "Prawuryan tingkesan:",
        "subject-preview": "Pratayang subyèk/judhul:",
-       "blockedtitle": "Panganggo diblokir",
+       "blockedtitle": "Panganggo kapalangan",
        "blockedtext": "'''Asma panganggo utawa alamat IP panjenengan diblokir.'''\n\nBlokir iki sing nglakoni $1.\nAlesané ''$2''.\n\n* Diblokir wiwit: $8\n* Kadaluwarsa pemblokiran ing: $6\n* Sing arep diblokir: $7\n\nPanjenengan bisa ngubungi $1 utawa [[{{MediaWiki:Grouppage-sysop}}|pangurus liyané]] kanggo ngomongaké prakara iki.\n\nPanjenengan ora bisa nggunakaké fitur 'Kirim layang e-mail panganggo iki' kejaba panjenengan wis nglebokaké alamat e-mail sing sah ing [[Special:Preferences|préferènsi]] panjenengan.\n\nAlamat IP panjenengan iku $3, lan ID pamblokiran iku #$5.\nTulung kabèh informasi ing ndhuwur iki disertakaké ing saben pitakon panjenengan.",
        "autoblockedtext": "Alamat IP panjenangan wis diblokir minangka otomatis amerga dienggo déning panganggo liyané. Pamblokiran dilakoni déning $1 mawa alesan:\n\n:''$2''\n\n* Diblokir wiwit: $8\n* Blokir kadaluwarsa ing: $6\n* Sing dikarepaké diblokir: $7\n\nPanjenengan bisa ngubungi $1 utawa [[{{MediaWiki:Grouppage-sysop}}|pangurus liyané]] kanggo ngomongaké perkara iki.\n\nPanjenengan ora bisa nganggo fitur \"kirim e-mail panganggo iki\" kejaba panjenengan wis nglebokaké alamat e-mail sing sah ing [[Special:Preferences|préferènsi]] panjenengan lan panjenengan wis diblokir kanggo nggunakaké.\n\nID pamblokiran panjenengan iku #$5 lan alamat IP panjenengan iku $3. Tulung sertakna informasi ing dhuwur kabèh iki saben ngajokaké pitakonan panjenengan. Matur nuwun.",
        "blockednoreason": "ora ana alesan sing diwènèhaké",
        "whitelistedittext": "Panjenengan kudu $1 supaya bisa nyunting artikel.",
        "confirmedittext": "Panjenengan kudu ndhedhes alamat e-mail dhisik sadurungé pareng nyunting sawijining kaca. Mangga nglebokaké lan validasi alamat e-mail panjenengan sadurungé nglakoni panyuntingan. Alamat e-mail sawisé bisa diowahi liwat [[Special:Preferences|kaca préférènsi]]",
-       "nosuchsectiontitle": "Bagéan ora ditemokaké",
+       "nosuchsectiontitle": "Pérangan ora katemu",
        "nosuchsectiontext": "Panjenengan nyoba nyunting sawijining bagéan sing ora ana.\nBagéan iki manawa wis dipindhah utawa dibusak nalika panjenengan buka.",
-       "loginreqtitle": "Mangga mlebu log",
+       "loginreqtitle": "Kudu mlebu",
        "loginreqlink": "mlebu",
        "loginreqpagetext": "Panjenengan kudu $1 kanggo bisa mirsani kaca liyané.",
-       "accmailtitle": "Tembung sandhi wis dikirim.",
+       "accmailtitle": "Tembung wadi wis kinirim",
        "accmailtext": "Sawijining tembung sandi sembarang kanggo [[User talk:$1|$1]] wis dikirim menyang $2.\n\nTembung sandi kanggo panganggo anyar iki isa diganti ing kaca ''[[Special:ChangePassword|ganti tembung sandi]]'' sawisé mlebu log.",
        "newarticle": "(Anyar)",
        "newarticletext": "Katonané panjenengan ngetutaké pranala artikel sing durung ana.\nManawa kersa manulis artikel iki, manggaa. (Mangga mirsani [$1 Pitulung] kanggo informasi sabanjuré).\nYèn ora sengaja tekan kéné, bisa ngeklik pencètan '''back''' waé ing panjlajah wèb panjenengan.",
        "anontalkpagetext": "---- ''Iki yaiku kaca dhiskusi sawijining panganggo anonim sing durung kagungan akun utawa ora nganggo akuné, dadi kita keeksa kudu nganggo alamat IP-né kanggo nepangi. Alamat IP kaya mengkéné iki bisa dienggo déning panganggo sing séjé-séjé. Yèn panjenengan pancèn panganggo anonim lan olèh komentar-komentar miring, mangga [[Special:UserLogin/signup|nggawé akun]] utawa [[Special:UserLogin|log mlebu]] supaya ora rancu karo panganggo anonim liyané ing mangsa ngarep.''",
-       "noarticletext": "Saiki ora ana tèks ing kaca iki. Panjenengan bisa [[Special:Search/{{PAGENAME}}|nglakoni panggolèkan kanggo judhul iki kaca iki]] ing kaca-kaca liyané, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|kaca={{urlencode:{{FULLPAGENAME}}}}}} nggolèki log kagandhèng],\nutawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} nyunting kaca iki]</span>.",
+       "noarticletext": "Kala saiki kaca iki durung ana tulisané.\nSampéyan bisa [[Special:Search/{{PAGENAME}}|nggolèki sesirahing kaca iki]] sajeroning kaca liya,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nggolèki log sing magepokan],\nutawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} nggawé kaca iki]</span>.",
        "noarticletext-nopermission": "Saiki ora ana tèks ing kaca iki. \nSampéyan bisa [[Special:Search/{{PAGENAME}}|nggolèki judhul kaca iki]] nèng kaca liya, \nutawa <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|kaca={{urlencode:{{FULLPAGENAME}}}}}} nggolèki log sing kaitan]</span>, nanging Sampéyan ora nduwèni idin nggawé kaca iki.",
        "missing-revision": "Benahan #$1 saka kaca ajeneng \"{{FULLPAGENAME}}\" ora ana.\n\nIki biasané kasebabaké pranala riwayat sing kedaluwarsa saka kaca kuwi wis dibusak.\nRinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].",
        "userpage-userdoesnotexist": "Akun utawa rékening panganggo \"<nowiki>$1</nowiki>\" ora kadaftar.",
        "sitecsspreview": "'''Èling yèn Sampéyan mung ndelok pratayang CSS iki.'''\n'''Iki durung disimpen!'''",
        "sitejspreview": "'''Èling yèn Sampéyan mung ndelok pratayang kodhé JavaScript iki.'''\n'''Iki durung disimpen!'''",
        "userinvalidcssjstitle": "'''Pènget:''' Kulit \"$1\" ora ditemokaké. Muga dipèngeti yèn kaca .css lan .js nggunakaké huruf cilik, conto {{ns:user}}:Foo/vector.css lan dudu {{ns:user}}:Foo/Vector.css.",
-       "updated": "(Dianyari)",
-       "note": "'''Cathetan:'''",
+       "updated": "(Kaanyaran)",
+       "note": "<strong>Cathetan:</strong>",
        "previewnote": "'''Èling yèn Sampéyan mung ndelok pratayang.'''\nOwahan Sampéyan durung kasimpen!",
-       "continue-editing": "Lunga menyang area nyunting",
+       "continue-editing": "Menyang pambesutan",
        "previewconflict": "Pratilik iki nuduhaké tèks ing bagian dhuwur kothak suntingan tèks kayadéné bakal katon yèn panjenengan bakal simpen.",
        "session_fail_preview": "'''Nuwun sèwu, suntingan panjenengan ora bisa diolah amarga dhata sèsi kabusak.\nCoba kirim dhata manèh. Yèn tetep ora bisa, coba log metua lan mlebu log manèh.''''''Amerga wiki iki marengaké panggunan kodhe HTML mentah, mula pratilik didhelikaké minangka pancegahan marang serangan JavaScript.'''\n'''Menawa iki sawijining usaha panyuntingan sing sah, mangga dicoba manèh.\nYèn isih tetep ora kasil, cobanen metu log lan mlebu manèh.'''",
        "session_fail_preview_html": "'''Nuwun sèwu! Kita ora bisa prosès suntingan panjenengan amerga data sési ilang.'''\n\n''Amerga wiki iki ngidinaké panrapan HTML mentah, pratayang didelikaké minangka penggakan marang serangan Javascript.''\n\n'''Yèn iki sawijining upaya suntingan sing absah, mangga dicoba manèh. Yèn isih tetep ora kasil, cobanen metu log utawa oncat lan mlebua manèh.'''",
        "edit_form_incomplete": "'''Sebagéyan pormulir suntingan ora tekan nèng sasana; cèk pindho yèn suntingan Sampéyan isih wutuh lan jajal manèh.'''",
        "editing": "Mbesut $1",
        "creating": "Nggawé $1",
-       "editingsection": "Nyunting $1 (bagian)",
-       "editingcomment": "Nyunting $1 (bagéyan anyar)",
-       "editconflict": "Konflik panyuntingan: $1",
+       "editingsection": "Mbesut $1 (pérangan)",
+       "editingcomment": "Mbesut $1 (pérangan anyar)",
+       "editconflict": "Cengkah besutan: $1",
        "explainconflict": "Wong liya wis nyunting kaca iki wiwit panjenengan mau nyunting.\nBagian dhuwur tèks iki ngamot tèks kaca vèrsi saiki.\nPangowahan sing panjenengan lakoni dituduhaké ing bagian ngisor tèks.\nPanjenengan namung prelu nggabungaké pangowahan panjenengan karo tèks sing wis ana.\n'''Namung''' tèks ing bagian dhuwur kaca sing bakal kasimpen menawa panjenengan mencèt \"{{int:savearticle}}\".",
-       "yourtext": "Tèks panjenengan",
-       "storedversion": "Versi sing kasimpen",
+       "yourtext": "Tulisan sampéyan",
+       "storedversion": "Owahan kasimpen",
        "nonunicodebrowser": "'''PÈNGET: Panjlajah wèb panjenengan ora ndhukung Unicode, mangga gantènana panjlajah wèb panjenengan sadurungé nyunting artikel.'''",
        "editingold": "'''PÈNGET:''' Panjenengan nyunting revisi lawas sawijining kaca. Yèn versi iki panjenengan simpen, mengko pangowahan-pangowahan sing wis digawé wiwit revisi iki bakal ilang.",
        "yourdiff": "Prabédan",
        "nocreatetext": "Situs iki ngwatesi kemampuan kanggo nggawé kaca anyar. Panjenengan bisa bali lan nyunting kaca sing wis ana, utawa mangga [[Special:UserLogin|mlebua log utawa ndaftar]]",
        "nocreate-loggedin": "Panjenengan ora kagungan idin kanggo nggawé kaca anyar.",
        "sectioneditnotsupported-title": "Panyuntingan bagéyan ora kasengkuyungan",
-       "sectioneditnotsupported-text": "Panyuntingan sapérangan ora disengkuyung ing kaca suntingan iki.",
+       "sectioneditnotsupported-text": "Ora bisa mbesut sapérangan ana ing kaca iki.",
        "permissionserrors": "Palilan ora diolèhaké",
        "permissionserrorstext": "Panjengan ora kagungan idin kanggo nglakoni sing panjenengan gayuh amerga {{PLURAL:$1|alesan|alesan-alesan}} iki:",
        "permissionserrorstext-withaction": "Panjenengan ora duwé hak aksès kanggo $2, amarga {{PLURAL:$1|alasan|alasan}} ing ngisor iki:",
        "recreate-moveddeleted-warn": "'''Pènget: Panjenengan gawé manèh sawijining kaca sing wis tau dibusak.'''\n\nMangga digagas manèh apa pantes nerusaké nyunting kaca iki.\nIng ngisor iki kapacak log pambusakan lan pamindhahan saka kaca iki:",
-       "moveddeleted-notice": "Kaca iki wis dibusak.\nLog pambusakan lan pamindhahan kaca iki disadiyakaké ing ngisor iki minangka réferènsi.",
-       "log-fulllog": "Pirsani kabèh log",
+       "moveddeleted-notice": "Kaca iki wis dibusak.\nCathetan busakan lan lihlihan kaca ana ing ngisor minangka rujukan.",
+       "log-fulllog": "Deleng cathetan wutuh",
        "edit-hook-aborted": "Suntingan dibatalaké déning kait parser\nTanpa ana katrangan.",
        "edit-gone-missing": "Ora bisa nganyari kaca.\nKatoné kaca iki wis dibusak.",
-       "edit-conflict": "Konflik panyuntingan.",
+       "edit-conflict": "Cengkah besutan",
        "edit-no-change": "Suntingan panjenengan dilirwakaké amerga panjenengan ora nglakoni pangowahan apa-apa ing tèks.",
-       "postedit-confirmation-saved": "Pangowahan sampéyan wis disimpen!",
+       "postedit-confirmation-saved": "Besutan sampeyan wis kasimpen.",
        "edit-already-exists": "Ora bisa nggawé kaca anyar.\nAmerga wis ana.",
        "defaultmessagetext": "Tèks layang gawan",
        "content-failed-to-parse": "Gagal menjabarkan konten $2 untuk model $1: $3",
-       "invalid-content-data": "Data konten ora sah",
+       "invalid-content-data": "Data isi ora trap",
        "content-not-allowed-here": "Konten \"$1\" ora oleh ing kaca [[$2]]",
        "editwarning-warning": "Yen sampeyan ninggalake kaca niki, pangowahan sampeyan bakal ilang.\nYen sampeyan wis mlebet log, sampeyan saged mateni peringatan niki lewat preferensi \"Panyuntingan\" sampeyan.",
-       "content-model-wikitext": "teks wiki",
-       "content-model-text": "teks polos",
+       "content-model-wikitext": "tulisan wiki",
+       "content-model-text": "tulisan barès",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
        "expensive-parserfunction-warning": "Pènget: Kaca iki ngandhut kakèhan panggunan fungsi ''parser'' sing larang.\n\nSajatiné kuduné duwé kurang saka {{PLURAL:$2|panggilan|panggilan}}, saiki ana {{PLURAL:$1|$1 panggilan|$1 panggilan}}.",
        "cantcreateaccounttitle": "Akun ora bisa digawé",
        "cantcreateaccount-text": "Saka alamat IP iki ('''$1''') ora diparengaké nggawé akun utawa rékening. Sing mblokir utawa ora marengaké iku [[User:$3|$3]].\n\nAlesané miturut $3 yaiku ''$2''",
        "cantcreateaccount-range-text": "Nggawe akun saking alamat IP \"$1\", sing termasuk IP sampeyan (<strong>$4</strong>), sampun diblokir kaliyan [[User:$3|$3]].\n\nAlesan pamblokiran yaiku \"$2\"",
-       "viewpagelogs": "Mirsani log kaca iki",
-       "nohistory": "Ora ana sajarah panyuntingan kanggo kaca iki",
-       "currentrev": "Revisi saiki",
-       "currentrev-asof": "Révisi anyar dhéwé ing tanggal $1",
-       "revisionasof": "Revisi per $1",
-       "revision-info": "Revisi per $1; $2",
-       "previousrevision": "←Revisi sadurungé",
-       "nextrevision": "Revisi sabanjuré→",
-       "currentrevisionlink": "Revisi saiki",
-       "cur": "saiki",
+       "viewpagelogs": "Deleng cathetaning kaca iki",
+       "nohistory": "Babading besutan kaca iki ora ana.",
+       "currentrev": "Owahan anyaran",
+       "currentrev-asof": "Owahan wekasan kala $1",
+       "revisionasof": "Owahan kala $1",
+       "revision-info": "Owahan $1 déning {{GENDER:$6|$2}}$7",
+       "previousrevision": "← Owahan sadurungé",
+       "nextrevision": "Owahan sabanjuré →",
+       "currentrevisionlink": "Owahan wekasan",
+       "cur": "sai",
        "next": "sabanjuré",
        "last": "sadurung",
        "page_first": "kapisan",
        "page_last": "pungkasan",
        "histlegend": "Pilihen rong tombol radhio banjur pencèten tombol ''bandhingna'' kanggo mbandhingaké versi. Klik sawijining tanggal kanggo ndeleng versi kaca ing tanggal iku.<br />(skr) = prabédan karo vèrsi saiki, (akir) = prabédan karo vèrsi sadurungé, '''s''' = suntingan sithik, '''b''' = suntingan bot, → = suntingan bagian, ← = ringkesan otomatis",
-       "history-fieldset-title": "Njlajah sajarah vèrsi sadhurungé",
+       "history-fieldset-title": "Luru babad",
        "history-show-deleted": "Namung sing dibusak",
        "histfirst": "suwé dhéwé",
        "histlast": "anyar dhéwé",
-       "historysize": "($1 {{PLURAL:$1|bita|bita}})",
-       "historyempty": "(kosong)",
-       "history-feed-title": "Riwayat revisi",
-       "history-feed-description": "Riwayat revisi kaca iki ing wiki",
+       "historysize": "($1 {{PLURAL:$1|bét|bét}})",
+       "historyempty": "(suwung)",
+       "history-feed-title": "Babad owahan",
+       "history-feed-description": "Babad owahaning kaca iki ing wiki",
        "history-feed-item-nocomment": "$1 ing $2",
        "history-feed-empty": "Kaca sing disuwun ora ditemokaké. Mbokmenawa wis dibusak saka wiki, utawa diwènèhi jeneng anyar. Coba [[Special:Search|golèka ing wiki]] kanggo kaca anyar sing rélevan.",
-       "rev-deleted-comment": "(ringkesan suntingan dibusak)",
+       "rev-deleted-comment": "(tingkesaning besutan dibusak)",
        "rev-deleted-user": "(jeneng panganggo dibusak)",
        "rev-deleted-event": "(isi dibusak)",
        "rev-deleted-user-contribs": "(jeneng panganggo utawa alamat IP dibusak - suntingan didhelikaké saka kontribusi)",
        "rev-suppressed-unhide-diff": "Sawiji benahan saka prabédan iki wis '''dibrèdèl'''.\nRincian bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambrèdèlan].\nSampéyan uga isih bisa [$1 ndelok prabédan iki] yèn Sampéyan gelem.",
        "rev-deleted-diff-view": "Sawiji benahan saka prabédan iki wis '''dibusak'''.\nSampéyan isih bisa ndelok prabédan iki; rincian bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].",
        "rev-suppressed-diff-view": "Sawiji benahan saka prabédan iki wis '''dibrèdèl'''.\nSampéyan isih bisa ndelok prabédan iki; rincian bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambrèdèlan].",
-       "rev-delundel": "tuduhna/delikna",
-       "rev-showdeleted": "tuduhna",
+       "rev-delundel": "Owah kasatmatan",
+       "rev-showdeleted": "tuduhaké",
        "revisiondelete": "Busak/batal busak revisi",
        "revdelete-nooldid-title": "Target revisi ora ditemokaké",
        "revdelete-nooldid-text": "Panjenengan durung mènèhi target revisi kanggo nglakoni fungsi iki.",
        "revdelete-no-file": "Berkas sing dituju ora ana.",
        "revdelete-show-file-confirm": "Apa panjenengan yakin arep mirsani révisi sing wis kabusak saka berkas \"<nowiki>$1</nowiki>\" ing $2, jam $3?",
-       "revdelete-show-file-submit": "Ya",
+       "revdelete-show-file-submit": "Iya",
        "logdelete-selected": "{{PLURAL:$1|Log kapilih|Log kapilih}} kanggo:",
        "revdelete-confirm": "Mangga pesthèkaké yèn Sampéyan pancèn kudu nglakoni iki, yèn Sampéyan ngerti akibaté, lan yèn Sampéyan ngakoni iki cocok karo [[{{MediaWiki:Policy-url}}|kawicakan]].",
        "revdelete-suppress-text": "Pandhelikan révisi '''mung''' bisa dipigunakaké kanggo kasus ing ngisor:\n* Informasi sing kagolong pitnah\n* Informasi pribadi sing kurang pantes\n*: ''alamat omah lan nomer telepon, nomer kartu idhèntitas, lsp..''",
        "revdelete-legend": "Atur watesan:",
-       "revdelete-hide-text": "Tèks revisi",
-       "revdelete-hide-image": "Dhelikna isi berkas",
+       "revdelete-hide-text": "Tulisan owahan",
+       "revdelete-hide-image": "Dhelikaké isi barkas",
        "revdelete-hide-name": "Dhelikna tindhakan lan targèt",
-       "revdelete-hide-comment": "Ringkesan suntingan",
-       "revdelete-hide-user": "Jeneng panganggo/alamat IP",
+       "revdelete-hide-comment": "Tingkesan besutan",
+       "revdelete-hide-user": "Alamat IPné/jeneng panganggoné sing mbesut",
        "revdelete-hide-restricted": "Uga dhelikna data saka pangurus lan panganggo liyané",
-       "revdelete-radio-same": "(Aja diowahi)",
-       "revdelete-radio-set": "Kadhelikake",
-       "revdelete-radio-unset": "Kethok",
+       "revdelete-radio-same": "(aja diowah)",
+       "revdelete-radio-set": "Kadhelikan",
+       "revdelete-radio-unset": "Katon",
        "revdelete-suppress": "Uga dhelikan saka pangurus",
        "revdelete-unsuppress": "Busak watesan ing revisi sing dibalèkaké",
        "revdelete-log": "Alesan:",
        "logdelete-success": "Aturan pandhelikan tindhakan bisa kasil ditrapaké.",
        "logdelete-failure": "'''Aturan pandhelikan ora bisa disèt:'''\n$1",
        "revdel-restore": "Ngowahi visiblitas (pangatonan)",
-       "pagehist": "Sajarah kaca",
-       "deletedhist": "Sajarah sing dibusak",
+       "pagehist": "Babading kaca",
+       "deletedhist": "Babad kabusakan",
        "revdelete-hide-current": "Gagal ndhelikaké révisi tanggal $2, $1: iki arupa révisi paling anyar.\nRévisi iki ora bisa didhelikaké.",
        "revdelete-show-no-access": "Gagal nampilaké révisi tanggal $1, jam $2: révisi iki wis ditandhani \"kawates\".\nPanjenengan ora nduwèni aksès menyang révisi iki.",
        "revdelete-modify-no-access": "Gagal ngowahi révisi tanggal $1, jam $2: révisi iki wis ditandhani \"kawates\".\nPanjenengan ora nduwèni aksès menyang révisi iki.",
        "revdelete-otherreason": "Alesan liya/tambahan:",
        "revdelete-reasonotherlist": "Alesan liya",
        "revdelete-edit-reasonlist": "Sunting alesan pambusakan",
-       "revdelete-offender": "Revisi penulis:",
+       "revdelete-offender": "Juru pangriptaning owahan:",
        "suppressionlog": "Log barang-barang sing didelikaké (''oversight'')",
        "suppressionlogtext": "Ngisor iki daptar apa-apa waé sing wis dibusak lan diblokir kalebu kontèn sing didhelikaké saka para pangurus.\nDelok [[Special:BlockList|daptar blokiran]] sing isiné daptar apa-apa waé sing lagi dilarang lan diblokir.",
-       "mergehistory": "Gabung sejarah kaca",
+       "mergehistory": "Gabung babad kaca",
        "mergehistory-header": "Ing kaca iki panjenengan bisa nggabung révisi-révisi sajarah saka sawijining kaca sumber menyang kaca anyar.\nPastèkna yèn owah-owahan iki bakal netepaké kasinambungan sajarah kaca.",
        "mergehistory-box": "Gabungna revisi-revisi saka rong kaca:",
        "mergehistory-from": "Kaca sumber:",
-       "mergehistory-into": "Kaca tujuan:",
-       "mergehistory-list": "Sejarah suntingan bisa digabung",
+       "mergehistory-into": "Kaca paran:",
+       "mergehistory-list": "Babad besutan sing bisa digabung",
        "mergehistory-merge": "Révisi-révisi sing kapacak ing ngisor iki saka [[:$1]] bisa digabungaké menyang [[:$2]].\nGunakna tombol radio kanggo nggabungaké révisi-révisi sing digawé sadurungé wektu tartamtu. Gatèkna, menawa nganggo pranala navigasi bakal ngesèt ulang kolom iki.",
-       "mergehistory-go": "Tuduhna suntingan-suntingan sing bisa digabung",
-       "mergehistory-submit": "Gabung revisi",
+       "mergehistory-go": "Tuduhaké besutan sing bisa digabung",
+       "mergehistory-submit": "Gabung owahan",
        "mergehistory-empty": "Ora ana revisi sing bisa digabung.",
        "mergehistory-done": "$3 {{PLURAL:$1|révisi|révisi}} saka $1 bisa suksès digabung menyang [[:$2]].",
        "mergehistory-fail": "Ora bisa nggabung sajarah, coba dipriksa manèh kacané lan paramèter wektuné.",
        "mergehistory-no-source": "Kaca sumber $1 ora ana.",
-       "mergehistory-no-destination": "Kaca tujuan $1 ora ana.",
+       "mergehistory-no-destination": "Kaca paran $1 ora ana.",
        "mergehistory-invalid-source": "Irah-irahan kaca sumber kudu irah-irahan utawa judhul sing bener.",
        "mergehistory-invalid-destination": "Irah-irahan kaca tujuan kudu irah-irahan utawa judhul sing bener.",
        "mergehistory-autocomment": "Nggabung [[:$1]] menyang [[:$2]]",
        "revertmerge": "Batalna panggabungan",
        "mergelogpagetext": "Ing ngisor iki kapacak daftar panggabungan sajarah kaca ing kaca liyané.",
        "history-title": "Riwayat rèvisi saka \"$1\"",
-       "difference-title": "$1: Bèntenipun revisi",
+       "difference-title": "Prabéda antara owahan \"$1\"",
        "difference-title-multipage": "Prabédhan antara kaca \"$1\" lan \"$2\"",
        "difference-multipage": "(Prabédhan antar kaca)",
        "lineno": "Larik $1:",
        "showhideselectedversions": "Tampilaké/dhelikaké révisi kapilih",
        "editundo": "wurungaké",
        "diff-empty": "(Ora ana bedane)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Saowahan madya|$1 owahan madya}} déning panganggo sing padha ora dituduhaké)",
        "diff-multi-manyusers": "({{PLURAL:$1Siji rèvisi sedhengan|$1 rèvisi sedhengan}} déning luwih saka $2 {{PLURAL:$2|panganggo|panganggo}} ora dituduhaké)",
        "difference-missing-revision": "{{PLURAL:$2|Sak pambenahan|$2 pambenahan}} saka prabédan iki ($1) {{PLURAL:$2|ora ditemokaké|ora ditemokaké}}.\n\nIki biasané kasebab pranala prabedan sing wis ora kanggo saka kaca isi wis dibusak.\nRinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log busak].",
        "searchresults": "Kasiling golèk",
        "shown-title": "Tampilaké $1 {{PLURAL:$1|asil|asil}} saben kaca",
        "viewprevnext": "Deleng ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''Ana kaca kanthi jeneng \"[[$1]]\" ing wiki iki'''",
-       "searchmenu-new": "'''Damel kaca \"[[:$1]]\" ing wiki punika!'''",
+       "searchmenu-new": "<strong>Gawéa kaca \"[[:$1]]\" nyang wiki iki!</strong> {{PLURAL:$2|0=|Uga delenga kaca sing katemu sarana panggolèking sampéyan.|Uga delenga kasiling panggolèk.}}",
        "searchprofile-articles": "Kaca isi",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Samubarang",
        "search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkatégori|$2 subkatégori}}, {{PLURAL:$3|1 berkas|$3 berkas}})",
        "search-redirect": "(pangalihan $1)",
        "search-section": "(pérangan $1)",
-       "search-suggest": "Apa panjenengan kersané: $1",
-       "search-interwiki-caption": "Proyèk-proyèk kagandhèng",
+       "search-suggest": "Apa karepé sampéyan: $1",
+       "search-interwiki-caption": "Proyèk-proyèk sababon",
        "search-interwiki-default": "Pituwas $1:",
        "search-interwiki-more": "(luwih akèh)",
-       "search-relatedarticle": "Kagandhèng",
-       "searchrelated": "kagandhèng",
+       "search-relatedarticle": "Magepokan",
+       "searchrelated": "magepokan",
        "searchall": "kabèh",
        "showingresults": "Ing ngisor iki dituduhaké {{PLURAL:$1|'''1''' kasil|'''$1''' kasil}}, wiwitané saking #<strong>$2</strong>.",
        "search-showingresults": "{{PLURAL:$4|Asil <strong>$1</strong> dari <strong>$3</strong>|Asil <strong>$1 - $2</strong> saking <strong>$3</strong>}}",
        "search-error": "Ana kasalahan wektu nggoleki: $1",
        "preferences": "Preferensi (pilihan)",
        "mypreferences": "Préferènsi",
-       "prefs-edits": "Gunggungé suntingan:",
+       "prefs-edits": "Gunggung besutan:",
        "prefsnologintext2": "Tulung $1 kanggo ngganti preferensi sampeyan.",
        "prefs-skin": "Kulit",
        "skin-preview": "Pratilik",
        "prefs-rendering": "Tampilan",
        "saveprefs": "Simpen",
        "restoreprefs": "Balèkna kabèh setèlan baku",
-       "prefs-editing": "Panyuntingan",
+       "prefs-editing": "Pambesut",
        "rows": "Larikan:",
        "columns": "Kolom:",
        "searchresultshead": "Panggolèkan",
        "stub-threshold-disabled": "Dipatèni",
        "recentchangesdays": "Cacahé dina sing dituduhaké ing owah-owahan pungkasan:",
        "recentchangesdays-max": "(maksimum $1 {{PLURAL:$1|dina|dina}})",
-       "recentchangescount": "Cacahé suntingan sing ditampilaké:",
+       "recentchangescount": "Cacahing besutan sing dituduhaké kanthi baku:",
        "prefs-help-recentchangescount": "Iki klebu owah-owahan pungkasan, kaca sajarah, lan 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": "Préferènsi Panjenengan wis disimpen",
        "prefs-dateformat": "Format tanggal",
        "prefs-timeoffset": "Format wektu",
        "prefs-advancedediting": "Pilihan sabanjuré",
-       "prefs-editor": "Panyunting",
+       "prefs-editor": "Wong besut",
        "prefs-preview": "Pratayang",
        "prefs-advancedrc": "Opsi lanjutan",
        "prefs-advancedrendering": "Opsi lanjutan",
        "prefs-displaywatchlist": "Opsi tampilan",
        "prefs-tokenwatchlist": "Token",
        "prefs-diffs": "Prabédan",
-       "prefs-help-prefershttps": "Preferensi niki bakal diaktifne yen sampeyan mlebet log sabanjure.",
+       "prefs-help-prefershttps": "Pamiji iki bakal lumaku mentas sampeyan mbalèni mlebu.",
        "prefs-tabs-navigation-hint": "Tip: Sampeyan isa nganggo dapat menggunakan tombol panah kiwa lan tengen kanggo navigasi tab-tab ing daftar tab.",
        "userrights": "Manajemen hak panganggo",
        "userrights-lookup-user": "Ngatur kelompok panganggo",
        "grouppage-bureaucrat": "{{ns:project}}:Birokrat",
        "grouppage-suppress": "{{ns:project}}:Oversight",
        "right-read": "Maca kaca-kaca",
-       "right-edit": "Nyunting kaca-kaca",
+       "right-edit": "Besut kaca",
        "right-createpage": "Nggawé kaca (sing dudu kaca dhiskusi)",
        "right-createtalk": "Nggawé kaca dhiskusi",
        "right-createaccount": "Nggawé rékening (akun) panganggo anyar",
-       "right-minoredit": "Tandhanan suntingan minangka minor",
+       "right-minoredit": "Tandhani minangka besutan cilik",
        "right-move": "Pindhahna kaca",
        "right-move-subpages": "Pindhahaké kaca lan kabèh anak-kacané",
-       "right-move-rootuserpages": "Pindhahaké kaca utama panganggo",
+       "right-move-rootuserpages": "Ngalih kaca panganggo oyod",
        "right-movefile": "Mindhah berkas",
        "right-suppressredirect": "Aja nggawé pangalihan saka kaca sing lawas yèn mindhah sawijining kaca",
        "right-upload": "Ngunggahaké berkas-berkas",
        "right-editmyprivateinfo": "Owahi data pribadi sampeyan (kayata alamat layang elektronik, jeneng asli)",
        "right-editmyoptions": "Owahi preferensi sampeyan",
        "right-rollback": "Sacara gelis mbalèkaké panganggo pungkasan sing nyunting kaca tartamtu",
-       "right-markbotedits": "Tandhanana suntingan pambalèkan minangka suntingan bot",
+       "right-markbotedits": "Tandhani besutan kawurungan minangka besutan bot",
        "right-noratelimit": "Ora dipengaruhi déning wates cacahing suntingan.",
        "right-import": "Impor kaca-kaca saka wiki liya",
        "right-importupload": "Impor kaca-kaca saka sawijining pangunggahan berkas",
        "right-patrolmarks": "Ndeleng tandha-tandha patroli owah-owahan anyar",
        "right-unwatchedpages": "Tuduhna daftar kaca-kaca sing ora diawasi",
        "right-mergehistory": "Gabungna sajarah kaca-kaca",
-       "right-userrights": "Sunting kabèh hak-hak panganggo",
+       "right-userrights": "Besut kabèh hak panganggo",
        "right-userrights-interwiki": "Sunting hak-hak para panganggo ing situs-situs wiki liya",
        "right-siteadmin": "Kunci lan buka kunci basis data",
        "right-override-export-depth": "Èkspor kaca klebu kaca kagandhèng nganti tataran/''depth'' 5",
        "right-sendemail": "Ngirim layang listrik (e-mail) menyang panganggo liya",
        "right-passwordreset": "Delok layang èlèktronik panyetèlulangan tembung sandhi",
-       "newuserlogpage": "Log panganggo anyar",
+       "newuserlogpage": "Cathetan panganggo anyar",
        "newuserlogpagetext": "Ing ngisor iki kapacak log pandaftaran panganggo anyar.",
        "rightslog": "Log pangowahan hak aksès",
        "rightslogtext": "Ing ngisor iki kapacak log pangowahan marang hak-hak panganggo.",
        "action-read": "maca kaca iki",
-       "action-edit": "sunting kaca iki",
+       "action-edit": "besut kaca iki",
        "action-createpage": "nggawé kaca-kaca",
        "action-createtalk": "gawé kaca wicara anyar",
        "action-createaccount": "gawé akun panganggo iki",
-       "action-minoredit": "nandhani minangka suntingan sithik",
+       "action-minoredit": "tandhani iki minangka besutan cilik",
        "action-move": "alihna kaca iki",
        "action-move-subpages": "mindahaké kaca iki, lan kabèh anak-kacané",
-       "action-move-rootuserpages": "mindhahaké kaca utama panganggo",
+       "action-move-rootuserpages": "ngalih kaca panganggo oyod",
        "action-movefile": "pindhahna berkas iki",
        "action-upload": "ngunggahaké berkas iki",
        "action-reupload": "nindhih berkas sing wis ana",
        "action-undelete": "mbatalaké pambusakan kaca iki",
        "action-suppressrevision": "ninjo lan mbalèkaké revisi sing didhelikaké iki",
        "action-suppressionlog": "mirsani log pribadi iki",
-       "action-block": "blok panganggo iki saka panyuntingan",
+       "action-block": "malang panganggo iki mbesut",
        "action-protect": "owahi tataran pangreksan kaca iki",
        "action-rollback": "gelis mbalèkaké suntingané panganggo pungkasan nèng sawijining saca",
        "action-import": "impor kaca iki saka wiki liya",
        "action-editmyprivateinfo": "owahi informasi pribadi sampeyan",
        "nchanges": "$1 {{PLURAL:$1|pangowahan|owah-owahan}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|saka keri dhewe mrene}}",
-       "enhancedrc-history": "sajarah",
+       "enhancedrc-history": "babad",
        "recentchanges": "Owahan pungkasan",
        "recentchanges-legend": "Pilihan owah-owahan pungkasan",
        "recentchanges-summary": "Runutna owah-owahan pungkasan ing wiki iki ing kaca iki.",
        "recentchanges-label-newpage": "Besutan iki nggawé kaca anyar",
        "recentchanges-label-minor": "Iki besutan cilik",
        "recentchanges-label-bot": "Besutan iki diayahi bot",
-       "recentchanges-label-unpatrolled": "Suntingan iki durung dipatroli",
+       "recentchanges-label-unpatrolled": "Besutan iki durung kapatroli",
        "recentchanges-label-plusminus": "Agengipun kaca sampun dipunowahi samekaten.",
        "recentchanges-legend-heading": "<strong>Katrangan:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (dhelengen uga: [[Special:NewPages|daftar kaca anyar]])",
        "recentchanges-legend-plusminus": "(''±123'')",
        "rcnotefrom": "Ing ngisor iki owah-owahan wiwit <strong>$2</strong> (kapacak nganti <strong>$1</strong> owah-owahan).",
-       "rclistfrom": "Saiki nuduhaké owah-owahan wiwit tanggal $3 $2",
+       "rclistfrom": "Tuduhaké owah-owahan anyar kawit $2, $3",
        "rcshowhideminor": "$1 besutan cilik",
-       "rcshowhideminor-hide": "Singidaken",
+       "rcshowhideminor-show": "Tuduhaké",
+       "rcshowhideminor-hide": "Dhelikaké",
        "rcshowhidebots": "$1 bot",
        "rcshowhidebots-show": "Tuduhaké",
+       "rcshowhidebots-hide": "Dhelikaké",
        "rcshowhideliu": "$1 panganggo karégister",
-       "rcshowhideliu-hide": "Singidaken",
+       "rcshowhideliu-hide": "Dhelikaké",
        "rcshowhideanons": "$1 panganggo anonim",
-       "rcshowhideanons-hide": "Singidaken",
-       "rcshowhidepatr": "$1 suntingan sing dipatroli",
+       "rcshowhideanons-show": "Tuduhaké",
+       "rcshowhideanons-hide": "Dhelikaké",
+       "rcshowhidepatr": "$1 besutan awasan",
        "rcshowhidemine": "$1 besutanku",
-       "rcshowhidemine-hide": "Singidaken",
+       "rcshowhidemine-show": "Tuduhaké",
+       "rcshowhidemine-hide": "Dhelikaké",
        "rclinks": "Tuduhna owah-owahan pungkasan $1 ing $2 dina pungkasan iki.<br />$3",
        "diff": "béd",
        "hist": "saj",
-       "hide": "Delikna",
+       "hide": "Dhelikaké",
        "show": "Tuduhaké",
        "minoreditletter": "c",
        "newpageletter": "A",
        "newsectionsummary": "/* $1 */ bagéyan anyar",
        "rc-enhanced-expand": "Tuduhaké princèn",
        "rc-enhanced-hide": "Dhelikaké princèn",
-       "rc-old-title": "wigatiné digawé minangka \"$1\"",
+       "rc-old-title": "kawitané digawé minangka \"$1\"",
        "recentchangeslinked": "Owahan magepokan",
        "recentchangeslinked-feed": "Pangowahan sing terkait",
        "recentchangeslinked-toolbox": "Owahan magepokan",
        "license-nopreview": "(Pratayang ora sumedya)",
        "upload_source_url": " (sawijining URL absah sing bisa diaksès publik)",
        "upload_source_file": " (sawijining berkas ing komputeré panjenengan)",
-       "listfiles-summary": "Kaca astamiwa nudhuhaké kabèh berkas kaunggah.\nYèn disaring déning panganggo, namung berkas mawa vèrsi paling anyar waé sing bakal katon.",
+       "listfiles-summary": "Kaca mirunggan iki nuduhaké kabèh barkas sing kaunggah.",
        "listfiles_search_for": "Golèk jeneng gambar:",
        "imgfile": "barkas",
        "listfiles": "Daftar gambar",
        "listfiles-latestversion-yes": "Iya",
        "listfiles-latestversion-no": "Ora",
        "file-anchor-link": "Barkas",
-       "filehist": "Sajarah berkas",
+       "filehist": "Babading barkas",
        "filehist-help": "Klik ing tanggal/wektu kanggo deleng berkas iki ing wektu iku.",
        "filehist-deleteall": "busaken kabèh",
        "filehist-deleteone": "busaken iki",
        "randomredirect-nopages": "Ora ana pangalihan ing bilik jeneng \"$1\".",
        "statistics": "Statistik",
        "statistics-header-pages": "Statistik kaca",
-       "statistics-header-edits": "Statistik panyuntingan",
+       "statistics-header-edits": "Pétungan besutan",
        "statistics-header-users": "Statistik panganggo",
        "statistics-header-hooks": "Statistik liya",
        "statistics-articles": "Kaca-kaca isi",
        "statistics-users-active-desc": "Panganggo sing ngayahi aktivitas jroning {{PLURAL:$1|dia|$1 dina}} pungkasan",
        "pageswithprop": "Kaca-kaca mawa ubarampé",
        "pageswithprop-legend": "Kaca-kaca mawa ubarampé",
-       "pageswithprop-text": "Kaca iki njlèntèhaké kaca-kaca sing nganggo ubarampé astamiwa.",
+       "pageswithprop-text": "Kaca iki mratélakaké kaca-kaca sing nganggo deduwèkaning kaca tinamtu.",
        "pageswithprop-prop": "Arané ubarampé:",
        "pageswithprop-submit": "Nuju",
        "pageswithprop-prophidden-long": "nilai properti teks dawa didhelikake ($1 kilobita)",
        "double-redirect-fixer": "Révisi pangalihan",
        "brokenredirects": "Pangalihan rusak",
        "brokenredirectstext": "Pengalihan ing ngisor iki tumuju menyang kaca sing ora ana:",
-       "brokenredirects-edit": "sunting",
+       "brokenredirects-edit": "besut",
        "brokenredirects-delete": "busak",
        "withoutinterwiki": "Kaca tanpa pranala antarbasa",
        "withoutinterwiki-summary": "Kaca-kaca iki ora nduwé pranala menyang vèrsi ing  basa liyané:",
        "withoutinterwiki-legend": "Préfiks",
        "withoutinterwiki-submit": "Tuduhna",
        "fewestrevisions": "Artikel mawa owah-owahan sithik dhéwé",
-       "nbytes": "$1 {{PLURAL:$1|bita|bita}}",
+       "nbytes": "$1 {{PLURAL:$1|bét|bét}}",
        "ncategories": "$1 {{PLURAL:$1|kategori|kategori}}",
        "ninterwikis": "$1 {{PLURAL:$1|interwiki|interwiki}}",
        "nlinks": "$1 {{PLURAL:$1|pranala|pranala}}",
-       "nmembers": "$1 {{PLURAL:$1|anggota|anggota}}",
+       "nmembers": "$1 {{PLURAL:$1|isi}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|anggota|anggota}}",
        "nrevisions": "$1 {{PLURAL:$1|revisi|revisi}}",
        "nimagelinks": "Kanggo nèng {{PLURAL:$1|kaca|kaca}}",
        "mostrevisions": "Kaca mawa pangowahan sing akèh dhéwé",
        "prefixindex": "Kabèh kaca mawa ater-ater",
        "prefixindex-namespace": "Kabèh kaca mawa ater-ater (bilik jeneng $1)",
-       "prefixindex-strip": "Hapus awalan saking daftar",
+       "prefixindex-strip": "Busak ater-ater saka pratélan",
        "shortpages": "Kaca cendhak",
        "longpages": "Kaca dawa",
        "deadendpages": "Kaca-kaca buntu (tanpa pranala)",
        "listusers-editsonly": "Tampilaké mung panganggo sing nduwèni kontribusi",
        "listusers-creationsort": "Urut miturut tanggal digawé",
        "listusers-desc": "Urutna mudhun",
-       "usereditcount": "$1 {{PLURAL:$1|suntingan|suntingan}}",
+       "usereditcount": "$1 {{PLURAL:$1|besutan|besutan}}",
        "usercreated": "{{GENDER:$3|Digawé}} $1 wanci $2",
        "newpages": "Kaca anyar",
        "newpages-username": "Asma panganggo:",
        "nopagetitle": "Kaca tujuan ora ditemokaké",
        "nopagetext": "Kaca sing panjenengan tuju ora ditemokaké.",
        "pager-newer-n": "{{PLURAL:$1|1 luwih anyar|$1 luwih anyar}}",
-       "pager-older-n": "{{PLURAL:$1|1 luwih lawas|$1 luwih lawas}}",
+       "pager-older-n": "{{PLURAL:$1|1 sing luwih lawas|$1 sing luwih lawas}}",
        "suppress": "Pangawas (''oversight'')",
        "querypage-disabled": "Kaca kusus iki dipatèni kanggo alesan kinerja.",
        "apisandbox": "Kothak wedhi API",
        "apisandbox-request-url-label": "URL dikarepaké:",
        "apisandbox-request-time": "Suwéné panjalukan: $1",
        "booksources": "Sumber buku",
-       "booksources-search-legend": "Golèk ing sumber buku",
+       "booksources-search-legend": "Golèk sumber buku",
+       "booksources-search": "Golèk",
        "booksources-text": "Ing ngisor iki kapacak daftar pranala menyang situs liyané sing ngadol buku anyar lan bekas, lan mbok-menawa uga ndarbèni informasi sabanjuré ngenani buku-buku sing lagi panjenengan golèki:",
        "booksources-invalid-isbn": "ISBN sing diwènèhaké katonané ora valid; priksa kasalahan penyalinan saka sumber asli.",
        "specialloguserlabel": "Panampil:",
        "speciallogtitlelabel": "Patujon (judhul utawa panganggo) :",
-       "log": "Log",
+       "log": "Cathetan",
        "all-logs-page": "Kabèh log publik",
        "alllogstext": "Gabungan tampilam kabèh log sing ana ing {{SITENAME}}.\nPanjenengan bisa mbatesi tampilan kanthi milih jinis log, jeneng panganggo (sènsitif aksara gedhé/cilik), utawa kaca sing magepokan (uga sènsitif aksara gedhé/cilik).",
        "logempty": "Ora ditemokaké èntri log sing pas.",
        "categories": "Kategori",
        "categoriespagetext": "{{PLURAL:$1|kategori ing ngisor iki ngandhut|kategori ing ngisor iki ngandhut}} kaca utawa media.\n[[Special:UnusedCategories|Kategori sing ora dianggo]] ora ditampilaké ing kéné.\nDeleng uga [[Special:WantedCategories|kategori sing diperlokaké]].",
        "categoriesfrom": "Tampilaké kategori-kategori diwiwiti saka:",
-       "special-categories-sort-count": "urutna miturut angka",
-       "special-categories-sort-abc": "urutna miturut abjad",
-       "deletedcontributions": "Kontribusi panganggo sing dibusak",
-       "deletedcontributions-title": "Kontribusi panganggo sing dibusak",
-       "sp-deletedcontributions-contribs": "kontribusi",
+       "deletedcontributions": "Sumbanganing panganggo sing dibusak",
+       "deletedcontributions-title": "Sumbanganing panganggo sing dibusak",
+       "sp-deletedcontributions-contribs": "sumbangan",
        "linksearch": "Golèkan pranala njaba",
        "linksearch-pat": "Pola panggolèkan:",
        "linksearch-ns": "Bilik nama:",
        "actioncomplete": "Proses tuntas",
        "actionfailed": "Tindakan gagal",
        "deletedtext": "\"$1\" sampun kabusak. Coba pirsani $2 kanggé log paling énggal kaca ingkang kabusak.",
-       "dellogpage": "Cathetan pambusakan",
+       "dellogpage": "Cathetan busakan",
        "dellogpagetext": "Ing ngisor iki kapacak log pambusakan kaca sing anyar dhéwé.",
        "deletionlog": "Cathetan sing dibusak",
        "reverted": "Dibalèkaké ing revisi sadurungé",
        "delete-toobig": "Kaca iki ndarbèni sajarah panyuntingan sing dawa, yaiku ngluwihi $1 {{PLURAL:$1|revision|révisi}}.\nPambusakan kaca sing kaya mangkono mau wis ora diparengaké kanggo menggak anané karusakan ing {{SITENAME}}.",
        "delete-warning-toobig": "Kaca iki duwé sajarah panyuntingan sing dawa, luwih saka $1 {{PLURAL:$1|révisi|révisi}}.\nMbusak kaca iki bisa ngrusak operasi basis data ing {{SITENAME}};\nkudu ngati-ati.",
        "deleting-backlinks-warning": "'''Awas:''' Kaca liyane mungkin ana sing nautake ing kaca sing arep sampeyan busak.",
-       "rollback": "Mbalèkaké suntingan",
-       "rollbacklink": "balèaké",
-       "rollbacklinkcount": "balèkaké $1 {{PLURAL:$1|suntingan|suntingan}}",
+       "rollback": "Wurungaké besutan",
+       "rollbacklink": "balèkaké",
+       "rollbacklinkcount": "balèkaké $1 {{PLURAL:$1|besutan|besutan}}",
        "rollbacklinkcount-morethan": "balèkaké luwih saka $1 {{PLURAL:$1|suntingan|suntingan}}",
        "rollbackfailed": "Pambalèkan gagal dilakoni",
        "cantrollback": "Ora bisa mbalèkaké suntingan; panganggo pungkasan iku siji-sijiné penulis artikel iki.",
        "rollback-success": "Suntingan dibalèkaké déning $1;\ndiowahi bali menyang vèrsi pungkasan déning $2.",
        "sessionfailure-title": "Sèsi gagal",
        "sessionfailure": "Katoné ana masalah karo sèsi log panjenengan; log panjenengan wis dibatalaké kanggo nyegah pambajakan. Mangga mencèt tombol \"back\" lan unggahaké manèh kaca sadurungé mlebu log, lan coba manèh.",
-       "protectlogpage": "Log pangreksan",
+       "protectlogpage": "Cathetan pangreksan",
        "protectlogtext": "Ngisor iki daptar owahan saka panjagan kaca.\nDelok [[Special:ProtectedPages|daptar kaca sing dijaga]] kanggo daptar panjagan kaca paling anyar.",
        "protectedarticle": "ngreksa \"[[$1]]\"",
        "modifiedarticleprotection": "ngowahi tingkat pangreksan \"[[$1]]\"",
        "minimum-size": "Ukuran minimum",
        "maximum-size": "Ukuran maksimum:",
        "pagesize": "(bita)",
-       "restriction-edit": "Panyuntingan",
+       "restriction-edit": "Besut",
        "restriction-move": "Pamindhahan",
        "restriction-create": "Gawé",
        "restriction-upload": "Unggah",
        "tooltip-namespace_association": "Centhang kothak iki kanggo nglebokaké uga bilik jeneng gumenan utawa subyèk sing kakait karo bilik jeneng kapilih",
        "blanknamespace": "(Pokok)",
        "contributions": "Sumbangan {{GENDER:$1|panganggo}}",
-       "contributions-title": "Kontribusi panganggo kanggo $1",
-       "mycontris": "Kontribusi",
+       "contributions-title": "Sumbanganing panganggo $1",
+       "mycontris": "Sumbangan",
+       "anoncontribs": "Sumbangan",
        "contribsub2": "Kanggo {{GENDER:$3|$1}} ($2)",
        "nocontribs": "Ora ditemokaké owah-owahan sing cocog karo kritéria kasebut iku.",
        "uctop": "(saiki)",
-       "month": "Wiwit sasi (lan sadurungé):",
+       "month": "Wiwit wulan (lan sadurungé):",
        "year": "Wiwit taun (lan sadurungé):",
        "sp-contributions-newbies": "Namung panganggo-panganggo anyar",
        "sp-contributions-newbies-sub": "Kanggo panganggo anyar",
-       "sp-contributions-newbies-title": "Kontribusi panganggo anyar",
+       "sp-contributions-newbies-title": "Sumbanganing para panganggo anyar",
        "sp-contributions-blocklog": "Log pemblokiran",
-       "sp-contributions-deleted": "kontribusi panganggo sing dibusak",
+       "sp-contributions-deleted": "sumbanganing panganggo sing dibusak",
        "sp-contributions-uploads": "unggahan",
        "sp-contributions-logs": "log",
        "sp-contributions-talk": "wicara",
        "sp-contributions-userrights": "pengaturan hak panganggo",
        "sp-contributions-blocked-notice": "Panganggo iki lagi diblokir.\nÈntri log blokiran pungkasan sumadhiya nèng ngisor kanggo rujukan:",
        "sp-contributions-blocked-notice-anon": "Alamat IP iki lagi diblokir.\nÈntri log blokiran pungkasan sumadhiya nèng ngisor kanggo rujukan:",
-       "sp-contributions-search": "Golèk kontribusi",
+       "sp-contributions-search": "Golèk sumbangan",
        "sp-contributions-username": "Alamat IP utawa jeneng panganggo:",
        "sp-contributions-toponly": "Tuduhaké was suntingan saka benahan pungkasan",
        "sp-contributions-submit": "Golèk",
        "movepage-page-moved": "Kaca $1 wis dipindhah menyang $2.",
        "movepage-page-unmoved": "Kaca $1 ora bisa dialihaké menyang $2.",
        "movepage-max-pages": "Paling akèh $1 {{PLURAL:$1|kaca|kaca}} wis dialihaké lan ora ana manèh sing bakal dialihaké sacara otomatis.",
-       "movelogpage": "Log pamindhahan",
+       "movelogpage": "Cathetan lihlihan",
        "movelogpagetext": "Ing ngisor iki kapacak log pangalihan kaca.",
        "movesubpage": "{{PLURAL:$1|Anak-kaca|Anak-kaca}}",
        "movesubpagetext": "Kaca iki nduwèni $1 {{PLURAL:$1|anak-kaca|anak-kaca}} kaya kapacak ing ngisor.",
        "export-addns": "Tambah",
        "export-download": "Simpen minangka berkas",
        "export-templates": "Kalebu cithakan-cithakan",
-       "export-pagelinks": "Katutna kaca kagandhèng nganti jeroné:",
+       "export-pagelinks": "Lebokaké kaca sing kagayut nyang jeroning:",
        "allmessages": "Kabèh laporan sistém",
        "allmessagesname": "Asma (jeneng)",
        "allmessagesdefault": "Tèks baku",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|révisi}} saka $2",
        "javascripttest": "Panjajalan JavaScript",
        "javascripttest-qunit-intro": "Delok [dhokumèntasi panjajalan $1] nèng mediawiki.org.",
-       "tooltip-pt-userpage": "Kaca panganggo panjenengan",
+       "tooltip-pt-userpage": "Kaca {{GENDER:|panganggo sampéyan}}",
        "tooltip-pt-anonuserpage": "Kaca panganggo IP panjenengan",
-       "tooltip-pt-mytalk": "Kaca wicara panjenengan",
+       "tooltip-pt-mytalk": "Kaca paguneman {{GENDER:|sampéyan}}",
        "tooltip-pt-anontalk": "Dhiskusi perkara suntingan saka alamat IP iki",
-       "tooltip-pt-preferences": "Préferènsiku",
+       "tooltip-pt-preferences": "Pamiji {{GENDER:|sampéyan}}",
        "tooltip-pt-watchlist": "Daftar kaca sing tak-awasi.",
-       "tooltip-pt-mycontris": "Daftar kontribusi panjenengan",
+       "tooltip-pt-mycontris": "Pratélaning sumbanganing {{GENDER:|sampéyan}}",
        "tooltip-pt-login": "Sampéyan prayogané mlebu masiya ora kudu",
        "tooltip-pt-logout": "Metu",
        "tooltip-pt-createaccount": "Sampéyan prayogané gawé akun lan mlebu masiya ora kudu",
        "tooltip-ca-talk": "Parembuganing kaca isi",
        "tooltip-ca-edit": "Besut kaca iki",
-       "tooltip-ca-addsection": "Wiwiti pérangan anyar",
-       "tooltip-ca-viewsource": "Kaca iki direksa. Panjenengan namung bisa mirsani sumberé.",
-       "tooltip-ca-history": "Vèrsi-vèrsi sadurungé saka kaca iki.",
+       "tooltip-ca-addsection": "Miwiti pérangan anyar",
+       "tooltip-ca-viewsource": "Kaca iki direksa. \nSampéyan bisa ndeleng sumberé",
+       "tooltip-ca-history": "Owahaning kaca iki sadurungé",
        "tooltip-ca-protect": "Reksa kaca iki",
        "tooltip-ca-unprotect": "Ganti panjagan kaca iki",
        "tooltip-ca-delete": "Busak kaca iki",
        "tooltip-ca-undelete": "Balèkna suntingan ing kaca iki sadurungé kaca iki dibusak",
-       "tooltip-ca-move": "Pindhahen kaca iki",
-       "tooltip-ca-watch": "Tambahna kaca iki ing daftar pangawasan panjenengan",
+       "tooltip-ca-move": "Aliha kaca iki",
+       "tooltip-ca-watch": "Tambahaké kaca iki nyang pawawangan sapéyan",
        "tooltip-ca-unwatch": "Busak kaca iki saka daftar pangawasan panjenengan",
        "tooltip-search": "Golèk nyang {{SITENAME}}",
        "tooltip-search-go": "Jujug kaca asesirah persis mangkéné yèn ana",
        "tooltip-p-logo": "Menyang kaca pokok",
        "tooltip-n-mainpage": "Menyang kaca pokok",
        "tooltip-n-mainpage-description": "Menyang kaca pokok",
-       "tooltip-n-portal": "Bab proyèk, apa sing bisa Sampéyan garap, ana ing endi saprelu golèk apa-apa",
-       "tooltip-n-currentevents": "Temokna informasi perkara prastawa anyar",
+       "tooltip-n-portal": "Bab proyèk, apa sing bisa sampéyan garap, ana ing endi saprelu golèk apa-apa",
+       "tooltip-n-currentevents": "Temokaké katerangan latar wuri saka kadadéan saiki",
        "tooltip-n-recentchanges": "Pratélaning owah-owahan pungkasan sajeroning wiki.",
        "tooltip-n-randompage": "Mot waton kaca",
        "tooltip-n-help": "Papan kanggo golèk weruh",
        "tooltip-t-whatlinkshere": "Pratélaning kabèh kaca wiki sing nggayut mréné",
-       "tooltip-t-recentchangeslinked": "Owah-owahan pungkasan kaca-kaca sing duwé pranala menyang kaca iki",
+       "tooltip-t-recentchangeslinked": "Owah-owahan anyar saka kaca-kaca sing nggayut kaca iki",
        "tooltip-feed-rss": "''RSS feed'' kanggo kaca iki",
        "tooltip-feed-atom": "''Atom feed'' kanggo kaca iki",
-       "tooltip-t-contributions": "Deleng daftar kontribusi panganggo iki",
+       "tooltip-t-contributions": "Pratélaning sumbangan {{GENDER:$1|panganggo iki}}",
        "tooltip-t-emailuser": "Kirimna e-mail menyang panganggo iki",
        "tooltip-t-upload": "Unggah barkas",
        "tooltip-t-specialpages": "Pratélaning kabèh kaca mirunggan",
        "tooltip-t-print": "Cara cithakan kaca iki",
-       "tooltip-t-permalink": "Pranala permanèn kanggo révisi kaca iki",
+       "tooltip-t-permalink": "Pranala permanèn saka owahan iki",
        "tooltip-ca-nstab-main": "Deleng kaca isi",
        "tooltip-ca-nstab-user": "Deleng kaca panganggo",
        "tooltip-ca-nstab-media": "Ndeleng kaca média",
-       "tooltip-ca-nstab-special": "Iki kaca astaméwa utawa kaca kusus sing ora bisa disunting",
+       "tooltip-ca-nstab-special": "Iki kaca mirunggan lan ora bisa dibesut",
        "tooltip-ca-nstab-project": "Deleng kaca proyèk",
        "tooltip-ca-nstab-image": "Deleng kaca barkas",
        "tooltip-ca-nstab-mediawiki": "Ndeleng pesenan sistém",
        "tooltip-ca-nstab-template": "Deleng cithakan",
        "tooltip-ca-nstab-help": "Mirsani kaca pitulung",
        "tooltip-ca-nstab-category": "Deleng kaca kategori",
-       "tooltip-minoredit": "Tandhanana minangka suntingan cilik",
-       "tooltip-save": "Simpen owah-owahan panjenengan",
-       "tooltip-preview": "Pratayang owah-owahan panjenengan, tulung nganggo fungsi iki sadurungé nyimpen!",
-       "tooltip-diff": "Tuduhna owah-owahan panjenengan ing tèks iki.",
+       "tooltip-minoredit": "Tandhani iki minangka besutan cilik",
+       "tooltip-save": "Simpen owah-owahaning sampéyan",
+       "tooltip-preview": "Prawuryan owah-owahaning sampéyan. Anggoa cara iki sadurungé nyimpen.",
+       "tooltip-diff": "Tuduhaké owah-owahan endi sing sampéyan gawé tumrap tulisan iki",
        "tooltip-compareselectedversions": "Delengen prabédan antara rong vèrsi kaca iki sing dipilih.",
        "tooltip-watch": "Tambahna kaca iki ing daftar pangawasan panjenengan",
        "tooltip-watchlistedit-normal-submit": "Singkiraké judhul",
        "spam_reverting": "Mbalèkaké menyang vèrsi pungkasan sing ora ana pranalané menyang $1",
        "spam_blanking": "Kabèh révisi sing duwé pranala menyang $1, pangosongan",
        "spam_deleting": "Kabèh benahan sing nduwé pranala nèng $1, dibusaki",
-       "simpleantispam-label": "Pamariksan anti-spam.\n'''AJA''' diisèkaké!",
+       "simpleantispam-label": "Pamariksa anti-spam.\nIki <strong>aja</strong> diisi!",
        "pageinfo-title": "Inpormasi kanggo \"$1\"",
        "pageinfo-not-current": "Maaf, tidak mungkin memberikan informasi ini ke revisi lama.",
        "pageinfo-header-basic": "Informasi dhasar",
-       "pageinfo-header-edits": "Riwayat suntingan",
+       "pageinfo-header-edits": "Babad besutan",
        "pageinfo-header-restrictions": "Perlindungan halaman",
        "pageinfo-header-properties": "Properti kaca",
        "pageinfo-display-title": "Judul tampilan",
        "pageinfo-default-sort": "Kunci urut baku",
        "pageinfo-length": "Panjang halaman (dalam bita)",
        "pageinfo-article-id": "ID kaca",
-       "pageinfo-language": "Bahasa isi halaman",
+       "pageinfo-language": "Basaning isining kaca",
        "pageinfo-content-model": "Model isi kaca",
        "pageinfo-robot-policy": "Diindeks karo robot",
        "pageinfo-robot-index": "Entuk",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|pengalihan|pengalihan}}; $3 {{PLURAL:$3|non-pengalihan|non-pengalihan}})",
        "pageinfo-firstuser": "Pembuat halaman",
        "pageinfo-firsttime": "Tanggal pembuatan halaman",
-       "pageinfo-lastuser": "Penyunting terakhir",
-       "pageinfo-lasttime": "Tanggal suntingan pungkasan",
-       "pageinfo-edits": "Cacahé kabèh suntingan",
+       "pageinfo-lastuser": "Sing mbesut pungkasan",
+       "pageinfo-lasttime": "Tanggal besutan pungkasan",
+       "pageinfo-edits": "Gunggung cacahing besutan",
        "pageinfo-authors": "Cacahé kabèh panganggit sing bédha-bédha.",
        "pageinfo-recent-edits": "Cacahé suntingan saiki (ing $1 kapungkur)",
        "pageinfo-recent-authors": "Cacahé panganggit sing bédha-bédha saiki",
        "filedelete-old-unregistered": "Révisi berkas \"$1\" sing diwènèhaké ora ana sajroning basis data.",
        "filedelete-current-unregistered": "Berkas sing dispésifikasi \"$1\" ora ana sajroning basis data.",
        "filedelete-archive-read-only": "Dirèktori arsip \"$1\" ora bisa ditulis déning server wèb.",
-       "previousdiff": "← Panyuntingan sadurungé",
-       "nextdiff": "Panyuntingan sing luwih anyar →",
+       "previousdiff": "← Besutan sadurungé",
+       "nextdiff": "Besutan luwih anyar →",
        "mediawarning": "'''Pèngetan''': Jinis berkas iki mungkin isiné kodhé mbebayani.\nYèn dilakokaké, sistem Sampéyan bisa kaserang.",
        "imagemaxsize": "Wates ukuran gambar:<br />''(kanggo kaca dhèskripsi berkas)''",
        "thumbsize": "Ukuran gambar cilik (thumbnail):",
        "sunday-at": "Minggu jam $1",
        "yesterday-at": "Dhek wingi jam $1",
        "bad_image_list": "Formaté kaya mengkéné:\n\nNamung butir daftar (baris sing diawali mawa tandha *) sing mèlu diitung. Pranala kapisan ing sawijining baris kudu pranala ing berkas sing ala.\nPranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian'', yaiku artikel sing bisa nuduhaké berkas iku.",
-       "metadata": "Metadata",
+       "metadata": "Métadata",
        "metadata-help": "Berkas iki ngandhut informasi tambahan sing mbokmenawa ditambahaké déning kamera digital utawa ''scanner'' sing dipigunakaké kanggo nggawé utawa olèhé digitalisasi berkas. Yèn berkas iki wis dimodifikasi, detail sing ana mbokmenawa ora sacara kebak nuduhaké informasi saka gambar sing wis dimodifikasi iki.",
        "metadata-expand": "Tuduhna detail tambahan",
        "metadata-collapse": "Delikna detail tambahan",
        "exif-bitspersample": "Bit per komponèn",
        "exif-compression": "Skéma komprèsi",
        "exif-photometricinterpretation": "Komposisi piksel",
-       "exif-orientation": "Orièntasi",
+       "exif-orientation": "Kéblat",
        "exif-samplesperpixel": "Cacah komponèn",
        "exif-planarconfiguration": "Pangaturan data",
        "exif-ycbcrsubsampling": "Rasio subsampling Y ke C",
        "exif-colorspace": "Lowah warna",
        "exif-componentsconfiguration": "Teges saben komponèn",
        "exif-compressedbitsperpixel": "Modhe komprèsi gambar",
-       "exif-pixelxdimension": "Jembaré gambar",
-       "exif-pixelydimension": "Dhuwuré gambar",
+       "exif-pixelxdimension": "Jembaring gambar",
+       "exif-pixelydimension": "Dhuwuring gambar",
        "exif-usercomment": "Komentar panganggo",
-       "exif-relatedsoundfile": "Berkas audio sing kagandhèng",
+       "exif-relatedsoundfile": "Barkas swara magepokan",
        "exif-datetimeoriginal": "Surya lan tabuh panggawéning data",
-       "exif-datetimedigitized": "Surya lan tabuh dhigitalisasi",
+       "exif-datetimedigitized": "Tanggal lan tabuh dhigitalisasi",
        "exif-subsectime": "Subdetik DateTime",
        "exif-subsectimeoriginal": "Subdetik DateTimeOriginal",
        "exif-subsectimedigitized": "Subdetik DateTimeDigitized",
        "exif-copyrighted-true": "Mawa hak cipta",
        "exif-copyrighted-false": "Status hak cipta durung ditemtokake",
        "exif-unknowndate": "Tanggal ora dingertèni",
-       "exif-orientation-1": "Normal",
+       "exif-orientation-1": "Sedhengan",
        "exif-orientation-2": "Baliken sacara horisontal",
        "exif-orientation-3": "Diputer 180°",
        "exif-orientation-4": "Baliken sacara vèrtikal",
        "fileduplicatesearch-noresults": "Ora ana berkas mawa jeneng \"$1\" ditemokaké.",
        "specialpages": "Kaca mirunggan",
        "specialpages-note-top": "Katrangan",
-       "specialpages-note": "* Kaca astamiwa biasa.\n* <span class=\"mw-specialpagerestricted\">Kaca astamiwa kawatesan.</span>",
+       "specialpages-note": "* Kaca mirunggan sedhengan.\n* <span class=\"mw-specialpagerestricted\">Kaca mirunggan winatesan.</span>",
        "specialpages-group-maintenance": "Lapuran pangopènan",
        "specialpages-group-other": "Kaca-kaca astaméwa liyané",
        "specialpages-group-login": "Mlebu log / nggawé akun",
        "tags-hitcount-header": "Owah-owahan mawa tag",
        "tags-active-yes": "Iya",
        "tags-active-no": "Ora",
-       "tags-edit": "sunting",
+       "tags-edit": "besut",
        "tags-hitcount": "$1 {{PLURAL:$1|pangowahan|pangowahan}}",
        "comparepages": "Bandhingna kaca",
        "compare-page1": "Kaca 1",
        "logentry-suppress-event-legacy": "$1 ndhelik-ndhelik {{GENDER:$2|ngganti}} patampilan saka kadadéan log nèng $3",
        "logentry-suppress-revision-legacy": "$1 ndhelik-ndhelik {{GENDER:$2|ngganti}} patampilan saka pambenahan nèng kaca $3",
        "revdelete-content-hid": "kontèn didhelikaké",
-       "revdelete-summary-hid": "ringkesan suntingan didhelikaké",
+       "revdelete-summary-hid": "tingkesaning besutan kadhelikaké",
        "revdelete-uname-hid": "jeneng panganggo didhelikaké",
        "revdelete-content-unhid": "kontèn dituduhaké",
-       "revdelete-summary-unhid": "ringkesan suntingan dituduhaké",
+       "revdelete-summary-unhid": "tingkesaning besutan ora kadhelikaké",
        "revdelete-uname-unhid": "jeneng panganggo dituduhaké",
        "revdelete-restricted": "rèstriksi ditrapaké marang para opsis",
        "revdelete-unrestricted": "rèstriksi marang para opsis dijabel",
        "logentry-rights-rights": "$1 {{GENDER:$2|ngganti}} kaanggotan kelompok kanggo $3 saka $4 dadi $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|ngganti}} kanggotaan grup kanggo $3",
        "logentry-rights-autopromote": "$1 otomatis {{GENDER:$2|dipromosikne}} saka $4 nèng $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|ngunggah}} $3",
        "rightsnone": "(ora ana)",
-       "revdelete-summary": "ringkesan suntingan",
+       "revdelete-summary": "tingkesan besutan",
        "feedback-adding": "Nambahaké lebon saran nèng kaca...",
        "feedback-bugcheck": "Apik! Pesthèké kuwi dudu sawijining [$1 bug sing dingertèni].",
        "feedback-bugnew": "Aku wis mriksa. Kandakaké bug anyar",
index f1ba4b2..6685cc6 100644 (file)
        "categories-submit": "ჩვენება",
        "categoriespagetext": "შემდეგი {{PLURAL:$1|კატეგორია შეიცავს|კატეგორია შეიცავს}} გვერდს ან მედიას.\n[[Special:UnusedCategories|გამოუყენებელი კატეგორიები]] აქ ნაჩვენები არ არის.\nიხ. ასევე [[Special:WantedCategories|მოთხოვნილი კატეგორიები]].",
        "categoriesfrom": "აჩვენეთ კატეგორიები, რომლებიც იწყება:",
-       "special-categories-sort-count": "დაალაგეთ რაოდენობის მიხედვით",
-       "special-categories-sort-abc": "ანბანზე დალაგება",
        "deletedcontributions": "მომხმარებლის წაშლილი წვლილი",
        "deletedcontributions-title": "წაშლილი წვლილი",
        "sp-deletedcontributions-contribs": "წვლილი",
index 305513c..1be5057 100644 (file)
        "categories": "Taggayin",
        "categoriespagetext": "{{PLURAL:$1|Taggayt agi teseqdec|Taggayin agi teseqdecet}} sɣur isebtar naɣ ifuyla.\n[[Special:UnusedCategories|Taggayin ur sɛan ara aqeddic]]\nẒeṛ daɣen [[Special:WantedCategories|taggayin yetwesuteren]].",
        "categoriesfrom": "Ssken taggayin seg :",
-       "special-categories-sort-count": "Afran s amḍan n iferdisen",
-       "special-categories-sort-abc": "afran s ugemmay",
        "deletedcontributions": "Isekcam yemḥan",
        "deletedcontributions-title": "Isekcam yemḥan",
        "sp-deletedcontributions-contribs": "Isekcam",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|lqem|ileqman}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|lqem|ileqman}} seg $2",
        "javascripttest": "Tarmit n JavaScript",
-       "javascripttest-pagetext-noframework": "Asebtar agi yeḥeṛṛ i usselkem n tirmitin JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Tamṣuka « $1 » warisem.",
-       "javascripttest-pagetext-frameworks": "Ilaq ad xetreḍ yiwet n timṣukyin n tarmit agi : $1",
-       "javascripttest-pagetext-skins": "Xter agwlim s anwa ad xeddemeḍ tarmit :",
        "javascripttest-qunit-intro": "Zeṛ [$1 tumlin n tarmit] ɣef mediawiki.org.",
        "tooltip-pt-userpage": "Asebter n umseqdac inu",
        "tooltip-pt-anonuserpage": "Asebter n wemseqdac n IP wukud tekkiḍ",
        "version-entrypoints-header-entrypoint": "Ired n wekcam",
        "version-entrypoints-header-url": "Tansa URL",
        "redirect": "Alssniled s ufaylu, amseqdac, asebtar neɣ ID n tacaggart",
-       "redirect-legend": "Alsnil ɣer asebtar neɣ afaylu",
        "redirect-summary": "Asebtar agi uslig yetalssnil ɣeṛ ufaylu (isem n ufaylu yetwefked), asebtar (ID n tacaggart neɣ n usebtar id yetwafken) neɣ asebtar n umseqdac (ID umḍin n umseqdac yetwefked). Asseqdec : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], neɣ [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Ruḥ",
        "redirect-lookup": "Anadi :",
        "redirect-not-exists": "Azal ulac-it",
        "fileduplicatesearch": "Anadi n allusen",
        "fileduplicatesearch-summary": "Anadi n ineɣlan n ifuyla kifkif ɣef leḥsab n udsil nsen n udway.",
-       "fileduplicatesearch-legend": "Nadi allus",
        "fileduplicatesearch-filename": "Isem n ufaylu :",
        "fileduplicatesearch-submit": "Nadi",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />Tiddi n ufaylu : $3<br />Anaw MIME : $4",
index e69db51..bd17e30 100644 (file)
        "categories": "ساناتتار",
        "categoriespagetext": "كەلەسى ساناتتار ىشىندە بەتتەر نە تاسپالار بار.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
        "categoriesfrom": "ساناتتاردى مىنادان باستاپ كورسەتۋ:",
-       "special-categories-sort-count": "سانىمەن سۇرىپتاۋ",
-       "special-categories-sort-abc": "الىپبىيمەن سۇرىپتاۋ",
        "deletedcontributions": "قاتىسۋشىنىڭ جويىلعان ۇلەسى",
        "deletedcontributions-title": "قاتىسۋشىنىڭ جويىلعان ۇلەسى",
        "linksearch": "سىرتقى سٸلتەمەلەردٸ ٸزدەۋ",
        "version-software-version": "نۇسقاسى",
        "fileduplicatesearch": "فايل تەلنۇسقالارىن ىزدەۋ",
        "fileduplicatesearch-summary": "فايل حەشى ماعىناسى نەگىزىندە تەلنۇسقالارىن ىزدەۋ.",
-       "fileduplicatesearch-legend": "تەلنۇسقانى ىزدەۋ",
        "fileduplicatesearch-filename": "فايل اتاۋى:",
        "fileduplicatesearch-submit": "ىزدە",
        "fileduplicatesearch-info": "$1 × $2 پىيكسەل<br />فايل مولشەرى: $3<br />MIME ٴتۇرى: $4",
index 2d9d258..f839f94 100644 (file)
        "categories-submit": "Көрсету",
        "categoriespagetext": "Келесі {{PLURAL:$1|санат ішінде|санаттар ішінде}} беттер немесе медиа бар.\n[[Special:UnusedCategories|Пайдаланылмаған санаттарды]] мынадан қарай аласыз.\nТағы қараңыз [[Special:WantedCategories|басталмаған санаттар]].",
        "categoriesfrom": "Санаттарды мынадан бастап көрсету:",
-       "special-categories-sort-count": "санымен сұрыптау",
-       "special-categories-sort-abc": "әліпбимен сұрыптау",
        "deletedcontributions": "Қатысушының жойылған үлесі",
        "deletedcontributions-title": "Қатысушының жойылған үлесі",
        "sp-deletedcontributions-contribs": "үлестер",
index 011e3ed..4357312 100644 (file)
        "categories": "Sanattar",
        "categoriespagetext": "Kelesi sanattar işinde better ne taspalar bar.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
        "categoriesfrom": "Sanattardı mınadan bastap körsetw:",
-       "special-categories-sort-count": "sanımen surıptaw",
-       "special-categories-sort-abc": "älipbïmen surıptaw",
        "deletedcontributions": "Qatıswşınıñ joýılğan ülesi",
        "deletedcontributions-title": "Qatıswşınıñ joýılğan ülesi",
        "linksearch": "Sırtqı siltemelerdi izdew",
        "version-software-version": "Nusqası",
        "fileduplicatesearch": "Faýl telnusqaların izdew",
        "fileduplicatesearch-summary": "Faýl xeşi mağınası negizinde telnusqaların izdew.",
-       "fileduplicatesearch-legend": "Telnusqanı izdew",
        "fileduplicatesearch-filename": "Faýl atawı:",
        "fileduplicatesearch-submit": "İzde",
        "fileduplicatesearch-info": "$1 × $2 pïksel<br />Faýl mölşeri: $3<br />MIME türi: $4",
index 4a32fe1..95a8fee 100644 (file)
        "categories": "ចំណាត់ថ្នាក់ក្រុម",
        "categoriespagetext": "{{PLURAL:$1|ចំណាត់ថ្នាក់ក្រុម|ចំណាត់ថ្នាក់ក្រុម}}ខាងក្រោមនេះមានអត្ថបទឬមេឌា។\n[[Special:UnusedCategories|ចំណាត់ថ្នាក់ក្រុមមិនប្រើ]]ត្រូវបានបង្ហាញទីនេះ។\nសូមមើលផងដែរ [[Special:WantedCategories|ចំណាត់ថ្នាក់ក្រុមដែលគ្រប់គ្នាចង់បាន]]។",
        "categoriesfrom": "បង្ហាញចំណាត់ថ្នាក់ក្រុមចាប់ផ្តើមដោយ៖",
-       "special-categories-sort-count": "តម្រៀបតាមចំនួន",
-       "special-categories-sort-abc": "តម្រៀបតាមអក្ខរក្រម",
        "deletedcontributions": "ការរួមចំណែកដែលត្រូវបានលុបចោល",
        "deletedcontributions-title": "ការរួមចំណែកដែលត្រូវបានលុបចោល",
        "sp-deletedcontributions-contribs": "ការរួមចំណែក​",
        "redirect-file": "ឈ្មោះឯកសារ",
        "redirect-not-exists": "តម្លៃរ​រកមិនឃើញ​",
        "fileduplicatesearch": "ស្វែងរកឯកសារដូចគ្នាបេះបិទ",
-       "fileduplicatesearch-legend": "ស្វែងរកឯកសារដូចគ្នាបេះបិទ",
        "fileduplicatesearch-filename": "ឈ្មោះឯកសារ៖",
        "fileduplicatesearch-submit": "ស្វែងរក",
        "fileduplicatesearch-info": "$1 × $2 ភីកសែល<br />ទំហំឯកសារ:$3<br />ប្រភេទMIME:$4",
index deda865..50f3aa5 100644 (file)
        "categories": "ವರ್ಗಗಳು",
        "categoriespagetext": "ಈ ಕೆಳಗಿನ ವರ್ಗಗಳು ಪುಟಗಳನ್ನು ಅಥವ ಮೀಡಿಯಗಳನ್ನು ಹೊಂದಿವೆ.\n[[Special:UnusedCategories|ಅನುಪಯೋಗಿತ ವರ್ಗಗಳು]] ಇಲ್ಲಿ ತೋರಲಾಗಿಲ್ಲ.\nಇದನ್ನೂ ನೋಡಿ: [[Special:WantedCategories|ಬೇಕಾಗಿರುವ ವರ್ಗಗಳು]].",
        "categoriesfrom": "ಇದರಿಂದ ಪ್ರಾರಂಭವಾಗುವ ವರ್ಗಗಳನ್ನು ತೋರಿಸು:",
-       "special-categories-sort-count": "ಎಣಿಕೆಯ ಪ್ರಕಾರ ಜೋಡಿಸು",
-       "special-categories-sort-abc": "ಅಕ್ಷರಮಾಲೆಯ ಪ್ರಕಾರ ಜೋಡಿಸು",
        "deletedcontributions": "ಅಳಿಸಲಾಗಿದೆ ಕಾಣಿಕೆಗಳನ್ನು",
        "sp-deletedcontributions-contribs": "ಕಾಣಿಕೆಗಳು",
        "linksearch": "ಹೊರಗಿನ ಸಂಪರ್ಕಗಳು",
index f4ab9e7..63d53ef 100644 (file)
        "uploadstash-badtoken": "이 동작을 수행하는 데 실패했습니다. 편집 토큰이 만료되었을 가능성이 있습니다. 다시 시도해주세요.",
        "uploadstash-errclear": "파일을 지우는 데 실패했습니다.",
        "uploadstash-refresh": "파일 목록을 새로 고침",
+       "uploadstash-thumbnail": "섬네일 보기",
        "invalid-chunk-offset": "청크 오프셋이 잘못되었습니다.",
        "img-auth-accessdenied": "접근이 거부됨",
        "img-auth-nopathinfo": "PATH_INFO를 잃었습니다.\n서버가 이 정보를 받을 수 있도록 설정되어 있지 않습니다.\n이러한 경우는 서버가 CGI 기반이고 img_auth를 지원하지 않을 때 나타날 수 있습니다.\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization 을 참조하십시오.",
        "categories-submit": "보이기",
        "categoriespagetext": "문서나 자료를 {{PLURAL:$1|포함하고 있는 분류}} 목록입니다.\n[[Special:UnusedCategories|사용되지 않는 분류]]는 여기에 보이지 않습니다.\n[[Special:WantedCategories|필요한 분류]]도 참조하세요.",
        "categoriesfrom": "다음으로 시작하는 분류를 보여주기:",
-       "special-categories-sort-count": "갯수 순으로 정렬",
-       "special-categories-sort-abc": "알파벳순으로 정렬",
        "deletedcontributions": "삭제된 사용자 기여",
        "deletedcontributions-title": "삭제된 사용자 기여",
        "sp-deletedcontributions-contribs": "기여",
        "sessionprovider-generic": "$1 세션",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "쿠키 기반 세션",
        "sessionprovider-nocookies": "브라우저의 쿠키 기능이 꺼져 있는지 확인하십시오. 쿠키 기능을 켠 다음 다시 시작해야 합니다.",
-       "randomrootpage": "임의 루트 페이지"
+       "randomrootpage": "임의 루트 페이지",
+       "log-action-filter-block": "차단의 유형:"
 }
index f8f15e1..432a3ab 100644 (file)
        "categories": "Категорияла",
        "categoriespagetext": "Ызындан келген {{PLURAL:$1|1=категория|категорияла}} бет неда медия-файл тутадыла.\n[[Special:UnusedCategories|Хайырланмагъан категорияла]] былайда кёргюзюлмегендиле.\nДагъыда [[Special:WantedCategories|изленнген категорияла]] гъакъарагъыз.",
        "categoriesfrom": "Бу бла башланнган категорияланы кёргюз:",
-       "special-categories-sort-count": "санына кёре сафла",
-       "special-categories-sort-abc": "алфавит халда тиз",
        "deletedcontributions": "Кетерилген къошулуучуну къошхан юлюшю",
        "deletedcontributions-title": "Кетерилген къошулучуну къошхан юлюшю",
        "sp-deletedcontributions-contribs": "къошхан юлюш",
        "redirect-file": "Файлны аты",
        "fileduplicatesearch": "Дубликат файлланы изле",
        "fileduplicatesearch-summary": "Хэш-кодлары бла дубликат файланны изле.",
-       "fileduplicatesearch-legend": "Дубликатланы изле",
        "fileduplicatesearch-filename": "Файлны аты:",
        "fileduplicatesearch-submit": "Таб",
        "fileduplicatesearch-info": "$1 × $2 пиксель<br />Файлны ёлчеми: $3<br />MIME-тип: $4",
index f7c2f4c..b1b6464 100644 (file)
        "recentchangeslinked-page": "Dä Sigg ier Övverschreff:",
        "recentchangeslinked-to": "Zeisch de Änderonge aan dä Sigge, woh Lengks op di aanjejovve Sigg drop sin",
        "recentchanges-page-added-to-category": "Di Sigg [[:$1]] wood en di Saachjrop jedonn",
-       "recentchanges-page-added-to-category-bundled": "Di Sigg [[:$1]] un [[Special:WhatLinksHere/$1|{{PLURAL:$2|noch ein Sigg wood|$2 Sigge woodte|kein Sigg wood}}]] en di Saachjrop jedonn",
+       "recentchanges-page-added-to-category-bundled": "Di Sigg [[:$1]] kohm en di Saachjrobb eren, un es [[Special:WhatLinksHere/$1|en annder Sigge ennjebonge]].",
        "recentchanges-page-removed-from-category": "Di Sigg [[:$1]] wood uß dä Saachjrop jenumme",
-       "recentchanges-page-removed-from-category-bundled": "Di Sigg [[:$1]] un {{PLURAL:$2|noch ein Sigg woodte|$2 Sigge woodte|kein Sigg wood}} uß dä Saachjrop jenumme",
+       "recentchanges-page-removed-from-category-bundled": "Di Sigg [[:$1]] flooch uß dä Saachjrobb eruß, es ävver [[Special:WhatLinksHere/$1|en annder Sigge ennjebonge]].",
        "autochange-username": "Automattesche Ännderong aam MediaWiki",
        "upload": "Daate huhlade",
        "uploadbtn": "Huhlade!",
        "categories": "Saachjroppe",
        "categoriespagetext": "Heh {{PLURAL:$1|es nur en Saachjropp|sin nur Saachjroppe|es kein Saachjropp}} jeleß, woh jät dren {{PLURAL:$1|es|es|wöhr}}. Mer han_er eije Leßte för de\n[[Special:UnusedCategories|Saachjropp met nix dren]], un de\n[[Special:WantedCategories|jewönschte un nit aanjelaate Saachjroppe]].",
        "categoriesfrom": "Zeijsch Saachjroppe vun heh af:",
-       "special-categories-sort-count": "Zoteere noh de Aanzahl",
-       "special-categories-sort-abc": "Zoteere nohm Alphabett",
        "deletedcontributions": "Fottjeschmeße Väsjohne",
        "deletedcontributions-title": "Fottjeschmeße Väsjohne",
        "sp-deletedcontributions-contribs": "Beijdrääsch",
index 514ba4d..60e5995 100644 (file)
        "allpages-hide-redirects": "Beralîkirinan veşêre",
        "categories": "Kategorî",
        "categoriespagetext": "Di van kategoriyan de rûpel an jî medya hene.\n[[Special:UnusedCategories|Kategoriyên nayên bikaranîn]] li vir nayên nîşandan.\nLi [[Special:WantedCategories|kategoriyên xwestî]] binêre.",
-       "special-categories-sort-count": "hatîye rêzkirin li gorî hejmaran",
-       "special-categories-sort-abc": "li gorî alfabeyê rêzkirî ye",
        "deletedcontributions": "Beşdariyên bikarhênerekî yê jêbirî",
        "deletedcontributions-title": "Guherandinên bikarhêner yê jêbirî",
        "sp-deletedcontributions-contribs": "beşdarî",
index 1b879d5..d67a8b7 100644 (file)
@@ -22,6 +22,7 @@
        "tog-hideminor": "Соңку өзгөрүүлөрдүн тизмесинен майда өзгөрүүлөрдү жашыруу",
        "tog-hidepatrolled": "Соңку өзгөрүүлөрдүн тизмесинен күзөттөлгөн оңдоолорду жашыруу",
        "tog-newpageshidepatrolled": "Жаңы барактар тизмесинен күзөттөлгөн барактарды жашыруу",
+       "tog-hidecategorization": "Барактардын категорияларын жашыруу",
        "tog-extendwatchlist": "Бүт өзгөртүүлөрдү камтыган кеңири көзөмөл тизмеси, эң соңкуларды гана эмес",
        "tog-usenewrc": "Өзгөртүүлөрдү соңку өзгөрүүлөргө жана көзөмөл тизмеме топтоо (JavaScript талап кылынат)",
        "tog-numberheadings": "Башжазууларды автоматтык түрдө номердөө",
        "createaccountreason": "Себеби:",
        "createacct-reason": "Себеп",
        "createacct-reason-ph": "Эмне үчүн башка эсеп жазуу түзүп жатасыз",
-       "createacct-captcha": "Коопсуздук текшерүүсү",
-       "createacct-imgcaptcha-ph": "Жогорудагы текстти териңиз",
        "createacct-submit": "Катталыңыз",
        "createacct-benefit-heading": "{{SITENAME}} сиз сыяктуу адамдар тарабынан түзүлгөн.",
        "createacct-benefit-body1": "{{PLURAL:$1|оңдоо|оңдоолор}}",
        "passwordreset-email": "E-mail дарек:",
        "passwordreset-emailtitle": "{{SITENAME}} сайтындагы эсеп жазуусу жөнүндөгү маалымат",
        "passwordreset-emailelement": "Колдонуучу аты: \n$1\n\nУбактылуу сырсөз: \n$2",
-       "passwordreset-emailsent": "Сырсөздү алмаштыруу эмейлге жөнөтүлдү.",
+       "passwordreset-emailsentemail": "Сырсөздү алмаштыруу эмейлге жөнөтүлдү.",
        "passwordreset-emailsent-capture": "Төмөндө көрсөтүлгөн эмейлге сырсөздү алмаштыруучу кат жөнөтүлдү.",
        "passwordreset-emailerror-capture": "Төмөндө көрсөтүлгөн дарекке сырсөздү алмаштыруу кат түзүлдү,бирок аны  {{GENDER:$2|катышуучуга}} жөнөтүү оңунан чыккан жок: $1",
        "changeemail": "E-mail даректи өзгөртүү",
-       "changeemail-text": "Эмейл дарегиңизди алмаштыруу үчүн ушул үлгүнү толтуруңуз. Өзгөрүүнү аныктоо үчүн сырсөздү киргизүү талап кылынат.",
+       "changeemail-header": "Эл. почтанын дарегин өзгөртүү",
        "changeemail-no-info": "Бул баракка түз кайрылыш үчүн, сиз системага киришиңиз керек.",
        "changeemail-oldemail": "Учурдагы e-mail дарек:",
        "changeemail-newemail": "Жаңы e-mail дарек:",
        "prefs-advancedwatchlist": "Кеңейтилген ырастоолор",
        "prefs-displayrc": "Көрүнүштүн ырастоолору",
        "prefs-displaywatchlist": "Көрүнүштүн ырастоолору",
-       "email-address-validity-valid": "Эл. почтанын дареги анык көрүнөт",
-       "email-address-validity-invalid": "Эл. почтанын анык дарегин киргизиңиз!",
        "userrights": "Колдонуучулардын укуктарын башкаруу",
        "userrights-lookup-user": "Колдонуучу топторун башкаруу",
        "userrights-user-editname": "Колдонуучу атыңызды териңиз:",
        "upload-description": "Файл баяндамасы",
        "upload-options": "Жүктөө варианты",
        "watchthisupload": "Бул файлды көзөмөлгө алуу",
-       "upload-success-subj": "Ийгиликтүү жүктөлдү",
-       "upload-failure-subj": "Жүктөө көйгөйү",
        "upload-proto-error": "Туура эмес протокол",
        "upload-file-error": "Ички ката",
        "backend-fail-closetemp": "Убактылуу файлды жабуу оңунан чыкпай жатат.",
        "lockbtn": "Маалымат базасын камоо",
        "move-page": "$1 — атын өзгөртүү",
        "move-page-legend": "Барактын атын өзгөртүү",
-       "movearticle": "Барактын атын өзгөртүү:",
        "newtitle": "Жаңы аталышка:",
        "movepagebtn": "Барактын атын өзгөртүү",
        "pagemovedsub": "Барактын аты өзгөртүлдү",
        "movelogpage": "Аталыштарды өзгөртүү журналы",
        "movereason": "Себеп:",
        "revertmove": "кайтаруу",
-       "delete_and_move": "Өчүрүү же атын өзгөртүү",
        "delete_and_move_confirm": "Ооба, бул баракты өчүрөм",
        "immobile-source-page": "Бул барактын атын өзгөртүүгө болбойт.",
        "imageinvalidfilename": "Максаттык файл аты туура эмес",
index 014a9b8..f02128e 100644 (file)
        "cachedspecial-refresh-now": "Recentissima vide.",
        "categories": "Categoriae",
        "categoriespagetext": "{{PLURAL:$1|Categoria subter paginas vel fasciculos continet.|Categoriae subter paginas vel fasciculos continent.}}\n[[Special:UnusedCategories|Categoriae non in usu]] non monstrantur.\nVide etiam [[Special:WantedCategories|categorias desideratas]].",
-       "special-categories-sort-count": "ordinare secundum numerum",
-       "special-categories-sort-abc": "ordinare secundum abecedarium",
        "deletedcontributions": "Conlationes usoris deletae",
        "deletedcontributions-title": "Conlationes usoris deletae",
        "sp-deletedcontributions-contribs": "conlationes",
index 59cdf77..f38737b 100644 (file)
        "category-media-header": "Dosyas de multimedya en la kategoría \"$1\"",
        "category-empty": "''Esta kategoría oy día, no contiene ni hojas ni dosyas de multimedya''",
        "hidden-categories": "{{PLURAL:$1|Kategoría escondida|Kategorías escondidas}}",
-       "hidden-category-category": "Katēggorías escondidas",
+       "hidden-category-category": "Kategorías escondidas",
        "category-subcat-count": "{{PLURAL:$2|Esta kategoría contiene sólo la su-kategoría venidera.|Esta kategoría contiene {{PLURAL:$1|la su-kategoría venidera|$1 su-kategorías venideras}}, de un total de $2 su-kategorías.}}",
-       "category-subcat-count-limited": "Esta katēggoría contiene {{PLURAL:$1|la baxo-katēggoría venidera|$1 baxo-katēggorías venideras}}.",
+       "category-subcat-count-limited": "Esta kategoría contiene {{PLURAL:$1|la baxo-kategoría venidera|$1 baxo-kategorías venideras}}.",
        "category-article-count": "{{PLURAL:$2|Esta kategoría contiene sólo la hoja venidera.|{{PLURAL:$1|La hoja venidera apartiene|Las $1 hojas venideras apartienen}} a esta kategoría, de un total de $2.}}",
-       "category-article-count-limited": "{{PLURAL:$1|La hoja venidera apartiene|Las $1 hojas venideras apartienen}} a esta katēggoría.",
-       "category-file-count": "{{PLURAL:$2|Esta katēggoría contiene sólo la dosya venidera.|{{PLURAL:$1|La dosya venidera apartiene|Las $1 dosyas venideras apartienen}} a esta katēggoría, de un total de $2.}}",
-       "category-file-count-limited": "{{PLURAL:$1|La dosya venidera apartiene|Las $1 dosyas venideras apartienen}} a esta katēggoría.",
+       "category-article-count-limited": "{{PLURAL:$1|La hoja venidera apartiene|Las $1 hojas venideras apartienen}} a esta kategoría.",
+       "category-file-count": "{{PLURAL:$2|Esta kategoría contiene sólo la dosya venidera.|{{PLURAL:$1|La dosya venidera apartiene|Las $1 dosyas venideras apartienen}} a esta kategoría, de un total de $2.}}",
+       "category-file-count-limited": "{{PLURAL:$1|La dosya venidera apartiene|Las $1 dosyas venideras apartienen}} a esta kategoría.",
        "listingcontinuesabbrev": "cont.",
        "index-category": "Hojas arregladas en lista",
        "noindex-category": "Hojas no arregladas en lista",
        "allinnamespace": "Todas las pajinas (espasio $1)",
        "allpagessubmit": "Ir",
        "categories": "Kategorías",
-       "special-categories-sort-count": "ordenar por número",
-       "special-categories-sort-abc": "ordenar alefbeticamente",
        "linksearch": "Bushkida de enlases eksternos",
        "linksearch-ok": "Bushkar",
        "linksearch-line": "Atamiento para $1 en la hoja $2",
        "unwatch": "dexa de cudiar",
        "watchlist-details": "{{PLURAL:$1|$1 hoja|$1 hojas}} en tu lista de escogidas, sin contar las de la diskussión.",
        "wlshowlast": "Ver los trocamientos de las últimas $1 oras, $2 días",
-       "watchlistall2": "todos",
        "watchlist-options": "Opciones de la lista de escogidas",
        "watching": "Cudiando...",
        "unwatching": "Dexando de cudiar...",
index 546eb37..4040aa4 100644 (file)
        "recentchangeslinked-page": "Säitennumm:",
        "recentchangeslinked-to": "Weis Ännerungen zu de verlinkte Säiten aplaz vun der gefroter Säit",
        "recentchanges-page-added-to-category": "[[:$1]] an d'Kategorie derbäigesat",
-       "recentchanges-page-added-to-category-bundled": "{{PLURAL:$2|}}[[:$1]] a(n) [[Special:WhatLinksHere/$1|{{PLURAL:$2|eng Säit|$2 Säiten}}]] an d'Kategorie derbäigesat",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] an d'Kategorie dobäigesat, [[Special:WhatLinksHere/$1|dës Säit ass an aner Säiten agebonn]]",
        "recentchanges-page-removed-from-category": "[[:$1]] erausgeholl aus der Kategorie",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] a(n) [[Special:WhatLinksHere/$1|{{PLURAL:$2|eng Säit|$2 Säiten}}]] aus der Kategorie erausgeholl",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] aus der Kategorie erausgeholl, [[Special:WhatLinksHere/$1|dës Säit ass an aner Säiten agebonn]]",
        "autochange-username": "Automatesch MediaWiki-Ännerung",
        "upload": "Eroplueden",
        "uploadbtn": "Fichier eroplueden",
        "categories-submit": "Weisen",
        "categoriespagetext": "Dës {{PLURAL:$1|Kategorie huet|Kategorien hu}} Säiten oder Medien.\n[[Special:UnusedCategories|Netbenotzt Kategorië]] ginn hei net gewisen.\nKuckt och [[Special:WantedCategories|Gewënscht Kategorien]].",
        "categoriesfrom": "Weis Kategorien ugefaange bei:",
-       "special-categories-sort-count": "no der Zuel zortéieren",
-       "special-categories-sort-abc": "alphabetesch zortéieren",
        "deletedcontributions": "Geläscht Kontributiounen",
        "deletedcontributions-title": "Geläscht Kontributiounen",
        "sp-deletedcontributions-contribs": "Kontributiounen",
        "viewdeletedpage": "Geläscht Säite weisen",
        "undeletepagetext": "Dës {{PLURAL:$1|Säit gouf |Säite goufe}} geläscht mä sinn nach ëmmer am Archiv a kënne vun Administrateure restauréiert ginn. D'Archiv gëtt periodesch eidel gemaach.",
        "undelete-fieldset-title": "Versioune restauréieren",
-       "undeleteextrahelp": "Fir d'Säit komplett mat alle Versiounen ze restauréieren, markéiert keng vun den eenzelne Casë mat engem Krop a klickt op '''''{{int:undeletebtn}}'''''.\nFir nëmmen eng bestëmmte Versioun vun der Säit ze restauréieren, markéiert d'Case vun der gewënschter Versioun mat engem Krop, a klickt duerno op '''''{{int:undeletebtn}}'''''.",
+       "undeleteextrahelp": "Fir d'Säit komplett mat alle Versiounen ze restauréieren, markéiert keng vun den eenzelne Casen a klickt op '''''{{int:undeletebtn}}'''''.\nFir nëmmen eng bestëmmt Versioun vun der Säit ze restauréieren, markéiert d'Case vun der gewënschter Versioun mat engem Krop, a klickt duerno op '''''{{int:undeletebtn}}'''''.",
        "undeleterevisions": "{{PLURAL:$1|1 Versioun|$1 Versioune}} geläscht",
        "undeletehistory": "Wann Dir dës Säit restauréiert, ginn och all déi al Versioune restauréiert.\nWann zanter dem Läschen eng nei Säit mat dem selwechten Numm ugeluecht gouf, ginn déi restauréiert Versioune chronologesch an den Historique agedroen.",
        "undeleterevdel": "D'Restauratioun gëtt net gemaach wann dat dozou féiert datt déi aktuell Versioun vun der Säit oder vum Fichier deelweis geläscht gëtt.\nA sou Fäll däerf déi neist Versioun net markéiert ginn oder déi neist geläscht Versioun muss nees ugewise ginn.",
        "confirmemail_body_set": "Iergendeen, wahrscheinlech Dir selwer, vun der IP-Adress $1,\nhuet d'E-Mail-Adress vum Benotzerkont \"$2\" op dës Adress op {{SITENAME}} geännert.\n\nFir ze confirméieren datt dëse Benotzerkont Iech wierklech gehéiert a fir d'E-Mailfonctiounen op {{SITENAME}} ze reaktivéieren, maacht dës Link an Ärem Browser op:\n\n$3\n\nWann de Benotzerkont Iech *net* gehéiert, da klickt op dëse Link fir d'Confirmatioun vun der E-Mail-Adress auszeschalten:\n\n$5\n\nDëse Confirmatiounscode leeft den $4 of.",
        "confirmemail_invalidated": "Confirmatioun vun der E-Mail-Adress annulléiert",
        "invalidateemail": "Annulléier d'E-Mailconfirmation",
+       "notificationemail_subject_removed": "D'E-Mail-Adress déi op {{SITENAME}} enregistréiert war gouf ewechgeholl",
        "scarytranscludedisabled": "[Interwiki-Abannung ass ausgeschalt]",
        "scarytranscludefailed": "[D'Siche no der Schabloun fir $1 huet net funktionéiert]",
        "scarytranscludefailed-httpstatus": "[D'Opruffe vun der Schabloun $1: HTTP $2 huet net funktionéiert]",
        "version-poweredby-others": "anerer",
        "version-poweredby-translators": "translatewiki.net Iwwersetzer",
        "version-credits-summary": "Mir soen dëse Persoune 'Merci' fir hir Mataarbecht u [[Special:Version|MediaWiki]].",
-       "version-license-info": "MediaWiki ass fräi Software; Dir kënnt se weiderginn an/oder s'änneren ënner de Bedingunge vun der GNU-General Public License sou wéi se vun der Free Softare Foundation publizéiert ass; entweder ënner der Versioun 2 vun der Lizenz, oder (no Ärem Choix) enger spéiderer Versioun.\n\nMediaWiki gëtt verdeelt an der Hoffnung datt se nëtzlech ass, awer OUNI IERGENDENG GARANTIE; ouni eng implizit Garantie vu Commercialisatioun oder Eegnung fir e bestëmmte Gebrauch. Kuckt d'GPL General Public License fir méi Informatiounen.\n\nDir misst eng [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun der GNU General Public License] mat dësem Programm kritt hunn; wann net da schreift der Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oder [//www.gnu.org/licenses/old-licenses/gpl-2.0.html liest se online].",
+       "version-license-info": "MediaWiki ass eng fräi Software. Dir kënnt se weiderginn an/oder ënner de Bedingungen vun der GNU-General Public License, änneren, sou wéi se vun der Free Software Foundation publizéiert ass; entweder ënner der Versioun 2 vun der Lizenz, oder (no Ärem Choix) enger spéiderer Versioun.\n\nMediaWiki gëtt verdeelt, an der Hoffnung datt se nëtzlech ass, awer OUNI IERGENDENG GARANTIE an ouni eng implizit Garantie vu Commercialisatioun oder Eegnung fir e bestëmmte Gebrauch. Kuckt d'GPU General Public License fir méi Informatiounen.\n\nDir misst eng [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun der GNU General Public License] mat dësem Programm kritt hunn. Wann net da schreift der Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oder [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html liest se online].",
        "version-software": "Installéiert Software",
        "version-software-product": "Produkt",
        "version-software-version": "Versioun",
        "logentry-newusers-byemail": "De Benotzerkont $3 gouf vum $1 {{GENDER:$2|ugeluecht}} an d'Passwuert gouf per E-Mail geschéckt.",
        "logentry-newusers-autocreate": "De Benotzerkont $1 gouf automatesch {{GENDER:$2|ugeluecht}}",
        "logentry-protect-protect": "$1 {{GENDER:$2|huet}} d'Säit $3 $4 gespaart",
-       "logentry-protect-protect-cascade": "$1 {{GENDER:$2|huet}} d'Säit $3 $4 gepaart [Kaskadespär]",
+       "logentry-protect-protect-cascade": "$1 {{GENDER:$2|huet}} d'Säit $3 $4 gespaart [Kaskadespär]",
        "logentry-rights-rights": "$1 {{GENDER:$2|huet}} d'Gruppen zou deenen {{GENDER:$3|d'|de}} $3 gehéiert vu(n) $4 op $5 geännert",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|huet}} d'Gruppen zou deenen de Benotzer $3 gehéiert geännert",
        "logentry-rights-autopromote": "De Benotzer $1 {{GENDER:$2|krut}} d'Benotzerrechter automatesch vu(n) $4 op $5 geännert",
        "log-action-filter-block-reblock": "Ännere vun enger Spär",
        "log-action-filter-block-unblock": "Spär ophiewen",
        "log-action-filter-delete-delete": "Säite läschen",
+       "log-action-filter-import-interwiki": "Transwiki-Import",
+       "log-action-filter-move-move_redir": "Réckele mat Iwwerschreiwe vu Viruleedungen",
        "log-action-filter-patrol-patrol": "Manuell Kontroll",
        "log-action-filter-patrol-autopatrol": "Automatesch Kontroll",
        "log-action-filter-protect-protect": "Spär",
        "log-action-filter-protect-modify": "Spär-pÄnnerung",
+       "log-action-filter-protect-move_prot": "Geréckelt Spär",
+       "log-action-filter-rights-rights": "Manuell Ännerung",
        "log-action-filter-upload-upload": "Neien Upload",
        "log-action-filter-upload-overwrite": "Nees eroplueden"
 }
index 748c9d0..62e24b2 100644 (file)
        "categories": "Categorieë",
        "categoriespagetext": "De volgende {{PLURAL:$1|categorie bevat|categorieë bevatte}} pazjena's of mediabestenj.\n[[Special:UnusedCategories|Óngebroekde categorieë]] waere hie neet weergegaeve.\nZuuch ouch [[Special:WantedCategories|neet-bestaondje categorieë mit verwiezinge]].",
        "categoriesfrom": "Categorië waergaeve vanaaf:",
-       "special-categories-sort-count": "op aantal sortere",
-       "special-categories-sort-abc": "alfabetisch sortere",
        "deletedcontributions": "Eweggesjafde gebroekersbiedrages",
        "deletedcontributions-title": "Eweggesjafde gebroekersbiedrages",
        "sp-deletedcontributions-contribs": "biedraag",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|versie|versies}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versie|versies}} van $2",
        "javascripttest": "Tes JavaScript",
-       "javascripttest-pagetext-noframework": "Dees pagina is gerizzerveerd veur 't oetveure van JavaScriptteste.",
-       "javascripttest-pagetext-unknownframework": "Ónbekèndje testframework \"$1\".",
-       "javascripttest-pagetext-frameworks": "Kees ein vanne volgende tesframeworks: $1",
-       "javascripttest-pagetext-skins": "Kees 'n oeterlik óm de teste op te laote loupe:",
        "javascripttest-qunit-intro": "Zuuch de [$1 tesdocumentatie] op mediawiki.org.",
        "tooltip-pt-userpage": "Dien gebroekerspagina",
        "tooltip-pt-anonuserpage": "De gebroekerspazjena veur dit IP adres",
        "version-entrypoints-header-url": "URL",
        "fileduplicatesearch": "Zeuk veur döbbelbestaondje bestenj",
        "fileduplicatesearch-summary": "Zeuk veur döbbel bestaondje bestenj op basis van zien hashwaarde.",
-       "fileduplicatesearch-legend": "Zeuk veur 'ne döbbele",
        "fileduplicatesearch-filename": "Bestandjsnaam:",
        "fileduplicatesearch-submit": "Zeuk",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />Bestandjsgrootte: $3<br />MIME type: $4",
index 9c11f7c..ced7c58 100644 (file)
        "categories-submit": "نیشان دائن",
        "categoriespagetext": "{{PLURAL:$1|ردهٔ|رده‌های}} زیر دارای صفحات یا پرونده‌هایی {{PLURAL:$1|است|هستند}}.\n[[Special:UnusedCategories|رده‌های استفاده‌نشده]] در اینجا نمایش داده نشده‌اند.\nهمچنین [[Special:WantedCategories|رده‌های مورد نیاز]] را ببینید.",
        "categoriesfrom": "نمایش رده‌ها با شروع از:",
-       "special-categories-sort-count": "مرتب کردن بر اساس تعداد",
-       "special-categories-sort-abc": "مرتب کردن الفبایی",
        "deletedcontributions": "مشارکت‌های حذف‌شده",
        "deletedcontributions-title": "مشارکت‌های حذف‌شده",
        "sp-deletedcontributions-contribs": "مشارکت‌ها",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|نسخه|نسخه ها}} واردشده",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|نسخه|نسخه ها}} واردشده از $2",
        "javascripttest": "آزمایش جاوا اسکریپت",
-       "javascripttest-pagetext-noframework": "این صفحه برای اجرای آزمایش‌های جاوا اسکریپت کنار گذاشته شده‌است.",
-       "javascripttest-pagetext-unknownframework": "چارچوب آزمایشی ناشناخته «$1».",
        "javascripttest-pagetext-unknownaction": "تابع ناشناختهٔ \"$1\".",
-       "javascripttest-pagetext-frameworks": "لطفاً یکی از چارچوب‌های آزمایش زیر را انتخاب کنید: $1",
-       "javascripttest-pagetext-skins": "پوسته‌ای را برای اجرای آزمایش‌ها انتخاب کنید:",
        "javascripttest-qunit-intro": "[$1 مستندات آزمایش] را در mediawiki.org ببینید.",
        "tooltip-pt-userpage": "وةڵگة کاربۀری هؤمۀ",
        "tooltip-pt-anonuserpage": "صفحهٔ کاربری نشانی آی‌پی‌ای که با آن ویرایش می‌کنید",
        "version-libraries-description": "توضیحةل",
        "version-libraries-authors": "نویسندگان",
        "redirect": "تغییرمسیر توسط پرونده، کاربر، صفحه یا شناسهٔ نسخه",
-       "redirect-legend": "تغییرمسیر به یک پرونده یا صفحه",
        "redirect-summary": "این صفحهٔ ویژه به پرونده (نام پرونده داده‌شده)، صفحه (شماره شناسهٔ صفحه یا شماره نسخهٔ داده‌شده) یا صفحهٔ کاربری (شناسهٔ عددی کاربری داده‌شده) تغییرمسیر می‌یابد. طرز استفاده: [[{{#Special:Redirect}}/file/Example.jpg]]، \n[[{{#Special:Redirect}}/page/64308]]، [[{{#Special:Redirect}}/revision/328429]] یا [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "بِچۆ",
        "redirect-lookup": "مِنِی کِردِن(گێردین):",
        "redirect-not-exists": "مقدار پیدا نشد",
        "fileduplicatesearch": "جستجو برای پرونده‌های تکراری",
        "fileduplicatesearch-summary": "جستجو برای پرونده‌های تکراری بر اساس مقدار درهم‌شدهٔ آن‌ها صورت می‌گیرد.",
-       "fileduplicatesearch-legend": "جستجوی موارد تکراری",
        "fileduplicatesearch-filename": "نام پرونده:",
        "fileduplicatesearch-submit": "مِنِی کِردِن(گێردین)",
        "fileduplicatesearch-info": "<span dir=\"ltr\">$1 × $2</span> پیکسل<br />اندازهٔ پرونده: $3<br />نوع MIME: $4",
index ab7b410..a835f91 100644 (file)
        "categories": "دسه يا",
        "categoriespagetext": "{{PLURAL:$1|دسه|دسه یا}} هاری دشو جانیایا یا بلگه {{PLURAL:$1|هئ|هیئن}}.\n[[Special:UnusedCategories|دسه یا وه کار نگرته بیه]] د ایچه نیئن.\nهمچنو[[Special:WantedCategories|دسه یا حاستنی نه]] بوینیت.",
        "categoriesfrom": "دسه یایی که د شرو بینه نشو بیه:",
-       "special-categories-sort-count": "سرجاخودگری د اساس شمارشت",
-       "special-categories-sort-abc": "سرجاخودگری د اساس الفبا",
        "deletedcontributions": "هومیاریا پاکسا بیه کارور",
        "deletedcontributions-title": "هومیاریا پاک بیه کارور",
        "sp-deletedcontributions-contribs": "هومیاریا",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|وانئری|وانئریا}} وامین اومانه",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|وانئری|وانئریا}} د $2 وامین اومائنه",
        "javascripttest": "ازمایشت کردن جاوا اسکریپت",
-       "javascripttest-pagetext-noframework": "ای بلگه سی انجوم دئن ازمایشتیا جاوا اسکریپت اماییه کاری بیه.",
-       "javascripttest-pagetext-unknownframework": "چوئه کار نادیار ازمایشت \"$1\"",
        "javascripttest-pagetext-unknownaction": "کنشتکاری نادیار \"$1\".",
-       "javascripttest-pagetext-frameworks": "لطفن یه گل د چوئه یا ازمایشت هاری نه انتخاو بکیت :$1",
-       "javascripttest-pagetext-skins": "یه گل پوسه نه سی انجوم دئن ازمایشتا انتخاو بکیت:",
        "javascripttest-qunit-intro": "[$1 مستندیا ازمایشت] نه د mediawiki.org سیل بکیت.",
        "tooltip-pt-userpage": "بلگه کاریاریتو",
        "tooltip-pt-anonuserpage": "بلگه کاریاری تیرنشون آی پی ای که دش ویرایشت می کید",
        "version-libraries-library": "کتاوگه",
        "version-libraries-version": "نسقه",
        "redirect": "واگردونی وا جانیا،بلگه یا وانیئری نوم دیارکو",
-       "redirect-legend": "واگردونی د جانیا یا بلگه",
        "redirect-summary": "ای بلگه ویجه وا جانیا (نوم جانیا هیئش)، بلگه (شماره شناسیار بلگه یا شماره نسقه دیار بیه) یا بلگه کاریاری (شناسیار عددی کاریاری دیار بیه) واگردونی بوئه. طرز وه کار گرتن: [[{{#Special:Redirect}}/file/Example.jpg]]، \n[[{{#Special:Redirect}}/page/64308]]، [[{{#Special:Redirect}}/revision/328429]] یا [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "رو",
        "redirect-lookup": "پی جوری:",
        "redirect-not-exists": "انازه که پیدا نبی",
        "fileduplicatesearch": "پی جوری سی جانیایا دوکونه",
        "fileduplicatesearch-summary": "پی جوری سی جانیایا تکراری د پایه انازه د یک شیوسه ونو انجومگر بوئه.",
-       "fileduplicatesearch-legend": "پی جوری سی دوکونه",
        "fileduplicatesearch-filename": "نوم جانیا:",
        "fileduplicatesearch-submit": "پی جوری",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />انازه جانیا: $3<br />MIME type: $4",
index c2529dd..3daa2d9 100644 (file)
        "categories-submit": "Rodyti",
        "categoriespagetext": "{{PLURAL:$1|Ši kategorija|Šios kategorijos}} turi puslapių ar failų.\n[[Special:UnusedCategories|Nenaudojamos kategorijos]] čia nerodomos.\nTaip pat žiūrėkite [[Special:WantedCategories|trokštamas kategorijas]].",
        "categoriesfrom": "Vaizduoti kategorijas pradedant nuo:",
-       "special-categories-sort-count": "rikiuoti pagal skaičių",
-       "special-categories-sort-abc": "rikiuoti pagal abėcėlę",
        "deletedcontributions": "Ištrintas naudotojo indėlis",
        "deletedcontributions-title": "Ištrintas naudotojo indėlis",
        "sp-deletedcontributions-contribs": "indėlis",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|keitimas|keitimai}} importuoti",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|keitimas|keitimai}} importuoti iš $2",
        "javascripttest": "JavaScript testavimas",
-       "javascripttest-pagetext-noframework": "Šis puslapis yra skirtas vykdyti JavaScript testavimus.",
-       "javascripttest-pagetext-unknownframework": "Nežinoma \"$1\" testavimo struktūra.",
        "javascripttest-pagetext-unknownaction": "Nežinomas veiksmas „$1“.",
-       "javascripttest-pagetext-frameworks": "Prašome pasirinkti vieną iš išvardintų testavimo struktūrų: $1",
-       "javascripttest-pagetext-skins": "Pasirinkite naudotojo sąsajos išvaizdą, kuriai atliksite testavimą:",
        "javascripttest-qunit-intro": "Peržiūrėkite [$1 testavimo dokumentaciją]",
        "tooltip-pt-userpage": "{{GENDER:|Jūsų naudotojo}} puslapis",
        "tooltip-pt-anonuserpage": "Naudotojo puslapis jūsų IP adresui",
        "version-libraries-description": "Aprašymas",
        "version-libraries-authors": "Autoriai",
        "redirect": "Nukreiptas iš failo, naudotojo, versijos arba žurnalo įrašo ID",
-       "redirect-legend": "Nukreipti į failą ar puslapį",
        "redirect-summary": "Šis specialus puslapis peradresuoją į failą (nurodant failo pavadinimą), puslapį (nurodant versijos ID ar puslapio ID), naudotojo puslapį (nurodant skaitinį naudotojo ID), arba žurnalo įrašą (nurodant žurnalo įrašo ID).\nNaudojimas: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], arba[[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Eiti",
        "redirect-lookup": "Peržvalgos:",
        "redirect-not-exists": "Vertė nėra nustatyta",
        "fileduplicatesearch": "Ieškoti dublikuotų failų",
        "fileduplicatesearch-summary": "Pasikartojančių failų paieška pagal jų kontrolinę sumą.",
-       "fileduplicatesearch-legend": "Ieškoti dublikatų",
        "fileduplicatesearch-filename": "Failo vardas:",
        "fileduplicatesearch-submit": "Ieškoti",
        "fileduplicatesearch-info": "$1 × $2 pikselių<br />Failo dydis: $3<br />MIME tipas: $4",
index 309ccd4..740b149 100644 (file)
        "categories": "Pawlte",
        "categoriespagetext": "A hnuaia pawl{{PLURAL:$1||te}} hian phêk emaw media a{{PLURAL:$1||n}} nei.\nHetah hian [[Special:UnusedCategories|pawl hman lohho]] pholan tel a ni lo.\n[[Special:WantedCategories|Pawl mamawhho]] en bawk la.",
        "categoriesfrom": "Hemi-a inṭan pawlho hi pholang rawh:",
-       "special-categories-sort-count": "a chhúnga thil awm zât azirin thliar rawh",
-       "special-categories-sort-abc": "a-aw-b indawtin",
        "deletedcontributions": "Hmangtu kutthawhna paihbo tawhte",
        "deletedcontributions-title": "Hmangtu kutthawhna paihbo tawhte",
        "sp-deletedcontributions-contribs": "kutthawhnate",
index 008168f..3116082 100644 (file)
@@ -23,7 +23,8 @@
                        "아라",
                        "Macofe",
                        "Nitalynx",
-                       "Silraks"
+                       "Silraks",
+                       "Zuiks"
                ]
        },
        "tog-underline": "Pasvītrot saites:",
        "accmailtext": "Nejauši ģenerēta parole lietotājam [[User talk:$1|$1]] tika nosūtīta uz $2.\n\nŠī konta paroli pēc ielogošanās varēs nomainīt ''[[Special:ChangePassword|šeit]]''.",
        "newarticle": "(Jauns raksts)",
        "newarticletext": "Šajā projektā vēl nav lapas ar šādu nosaukumu.\nLai izveidotu lapu, sāc rakstīt teksta logā apakšā (par teksta formatēšanu un sīkākai informācija skatīt [$1 palīdzības lapu]).\nJa tu šeit nonāci kļūdas pēc, vienkārši uzspied <strong>back</strong> pogu pārlūkprogrammā.",
-       "anontalkpagetext": "----''Šī ir diskusiju lapa anonīmam lietotājam, kurš vēl nav kļuvis par reģistrētu lietotāju vai arī neizmanto savu lietotājvārdu. Tādēļ mums ir jāizmanto skaitliskā IP adrese, lai viņu identificētu.\nŠāda IP adrese var būt vairākiem lietotājiem.\nJa tu esi anonīms lietotājs un uzskati, ka tev ir adresēti neatbilstoši komentāri, lūdzu, [[Special:UserLogin/signup|kļūsti par lietotāju]] vai arī [[Special:UserLogin|izmanto jau izveidotu lietotājvārdu]], lai izvairītos no turpmākām neskaidrībām un tu netiktu sajaukts ar citiem anonīmiem lietotājiem.''",
+       "anontalkpagetext": "----''Šī ir diskusiju lapa anonīmam dalībniekam, kurš vēl nav kļuvis par reģistrētu dalībnieku vai arī neizmanto savu dalībnieka vārdu. Tādēļ mums ir jāizmanto skaitliskā IP adrese, lai viņu identificētu.\nŠāda IP adrese var būt vairākiem dalībniekiem.\nJa tu esi anonīms dalībnieks un uzskati, ka tev ir adresēti neatbilstoši komentāri, lūdzu, [[Special:UserLogin/signup|kļūsti par dalībnieku]] vai arī [[Special:UserLogin|izmanto jau izveidotu dalībnieka vārdu]], lai izvairītos no turpmākām neskaidrībām un tu netiktu sajaukts ar citiem anonīmiem dalībniekiem.''",
        "noarticletext": "Šajā lapā šobrīd nav nekāda teksta, tu vari [[Special:Search/{{PAGENAME}}|meklēt citās lapās pēc šīs lapas nosaukuma]], <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saistītos reģistru ierakstos] vai arī [{{fullurl:{{FULLPAGENAME}}|action=edit}} sākt rediģēt šo lapu]</span>.",
        "noarticletext-nopermission": "Šajā lapā pašlaik nav nekāda teksta.\nTu vari [[Special:Search/{{PAGENAME}}|meklēt šīs lapas nosaukumu]] citās lapās,\nvai <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saistītus reģistru ierakstus]</span>, bet jums nav atļauja izveidot si lapu.",
        "userpage-userdoesnotexist": "Lietotājs \"<nowiki>$1</nowiki>\" nav reģistrēts.\nLūdzu, pārliecinies vai vēlies izveidot/izmainīt šo lapu.",
        "categories-submit": "Rādīt",
        "categoriespagetext": "{{PLURAL:$1|Šīs kategorijas|Šī kategorija|Šīs kategorijas}} satur lapas vai failus.\nŠeit nav parādītas [[Special:UnusedCategories|neizmantotās kategorijas]].\nSkatīt arī [[Special:WantedCategories|''sarkanās'' kategorijas]].",
        "categoriesfrom": "Parādīt kategorijas sākot ar:",
-       "special-categories-sort-count": "kārtot pēc skaita",
-       "special-categories-sort-abc": "kārtot alfabētiskā secībā",
        "deletedcontributions": "Dzēstais dalībnieka devums",
        "deletedcontributions-title": "Dzēstais dalībnieka devums",
        "sp-deletedcontributions-contribs": "devums",
        "listusers-noresult": "Neviens dalībnieks nav atrasts.",
        "listusers-blocked": "(bloķēts)",
        "activeusers": "Aktīvo dalībnieku saraksts",
-       "activeusers-intro": "Šis ir dalībnieku saraksts, kas veikuši kādu darbību {{PLURAL:daudzskaitlī:$1|pēdējā|pēdējās}} $1 {{PLURAL:daudzskaitlī:$1|dienā|dienās}}.",
+       "activeusers-intro": "Šis ir to dalībnieku saraksts, kuri veikuši kādu darbību {{PLURAL:daudzskaitlī:$1|pēdējā|pēdējās}} $1 {{PLURAL:daudzskaitlī:$1|dienā|dienās}}.",
        "activeusers-count": "$1 {{PLURAL:$1|darbību|darbība|darbības}} {{PLURAL:$3|pēdējās $3 dienās|pēdējā $3 dienā|pēdējās $3 dienās}}",
        "activeusers-from": "Parādīt dalībniekus, sākot ar:",
        "activeusers-hidebots": "Paslēpt botus",
        "activeusers-hidesysops": "Paslēpt administratorus",
        "activeusers-noresult": "Neviens dalībnieks nav atrasts.",
+       "activeusers-submit": "Parādīt aktīvos dalībniekus",
        "listgrouprights": "Lietotāju grupu tiesības",
        "listgrouprights-summary": "Šis ir šajā viki definēto dalībnieku grupu uzskaitījums, kopā ar tām atbilstošajām piekļuves tiesībām.\nPapildu informāciju par katru individuālu piekļuves tiesību veidu, iespējams, var atrast [[{{MediaWiki:Listgrouprights-helppage}}|šeit]].",
        "listgrouprights-group": "Grupa",
index d4bd82c..7ba9c6b 100644 (file)
        "categories": "संवर्ग सभ",
        "categoriespagetext": "ई {{PLURAL:$1|संवर्गमे अछि|संवर्ग सभमे अछि}} पन्ना वा मीडिया।\n[[Special:UnusedCategories|Unused categories]] एतए देखाएल नै अछि।\nईहो देखू [[Special:WantedCategories|wanted categories]]।",
        "categoriesfrom": "पन्ना प्रदर्शन प्रारम्भ भेल:",
-       "special-categories-sort-count": "गानि कऽ छाँटू",
-       "special-categories-sort-abc": "वर्णाक्षरानुसार छाँटू",
        "deletedcontributions": "मेटाएल प्रयोक्ता योगदान सभ",
        "deletedcontributions-title": "मेटाएल प्रयोक्ता योगदान सभ",
        "sp-deletedcontributions-contribs": "योगदान सभ",
        "redirect-not-exists": "बैनर नैं मिल्ल",
        "fileduplicatesearch": "द्वितीयक संचिका ताकू",
        "fileduplicatesearch-summary": "हैश मानक आधारपर द्वितीयक संचिका ताकू।",
-       "fileduplicatesearch-legend": "द्वितीयक ताकू",
        "fileduplicatesearch-filename": "संचिकानाम:",
        "fileduplicatesearch-submit": "ताकू",
        "fileduplicatesearch-info": "$1 × $2 चित्राणु<br /> फाइल आकार: $3<br /> माइम प्रकार: $4",
index e6d20bd..bd32f5a 100644 (file)
        "categories": "Категориет",
        "categoriespagetext": "{{PLURAL:$1|Тя категориень|ся категориетнень}} эса улихть лопат эли медиат.\n[[Special:UnusedCategories|тевс апак нолдак категориятне]] тяса аф няфневихть.\nСтане ина ватт [[Special:WantedCategories|вешема категориет]].",
        "categoriesfrom": "Няфтемс категориет тяста ушедозь:",
-       "special-categories-sort-count": "арафтомс луфть коряс",
-       "special-categories-sort-abc": "арафтомс алфавитонь коряс",
        "deletedcontributions": "Нардаф тиихнень путкссна",
        "deletedcontributions-title": "Нардаф тиихнень путкссна",
        "linksearch": "Ушеширень сюлмафксне",
        "version-software-version": "Верзие",
        "fileduplicatesearch": "Вешендемс кафонзаф файлхне",
        "fileduplicatesearch-summary": "Вешендемс кафонзаф файлхнень хэш-кодонь лувкс коряс.",
-       "fileduplicatesearch-legend": "Вешендемс кафонзафкс",
        "fileduplicatesearch-filename": "Файллем:",
        "fileduplicatesearch-submit": "Вешендемс",
        "fileduplicatesearch-info": "$1 × $2 пиксель<br />Файл кувалмоц: $3<br />MIME сорт: $4",
index f1b3a37..b7a8909 100644 (file)
        "categories-submit": "Aseho",
        "categoriespagetext": "{{PLURAL:$1}}Ampiasain'ny rakitra na pejy ireo sokajy manaraka ireo.\nTsy hiseho eto ny [[Special:UnusedCategories|sokajy tsy miasa]].\nVangio koa ny [[Special:WantedCategories|sokajy ilaina]].",
        "categoriesfrom": "Haneho ny sokajy manomboka amin'ny :",
-       "special-categories-sort-count": "afantina amin'ny isan-javatra",
-       "special-categories-sort-abc": "famantinana ara-abidy",
        "deletedcontributions": "Fandraisan'anjara voafafa",
        "deletedcontributions-title": "fandraisan'anjara voafafa",
        "sp-deletedcontributions-contribs": "fandraisan'anjara",
        "importlogpagetext": "Fampidirana ara-pandraharahana ny pejy miaraka amin'ny tantaram-panvany avy any amin'ny wiki hafa.",
        "javascripttest": "Fanandramana JavaScript",
        "javascripttest-pagetext-unknownaction": "Asa tsy fantatra \"$1\".",
-       "javascripttest-pagetext-skins": "Mifidia skin hanaovana ny fanandramana:",
        "javascripttest-qunit-intro": "Jereo ny [$1 fanoroana mikasika ny andrana] eo amin'i mediawiki.org.",
        "tooltip-pt-userpage": "Ny pejim-pikambanao",
        "tooltip-pt-anonuserpage": "Ny pejim-bikamban'ny IP andraisanao anjara",
        "redirect-logid": "ID laogy",
        "redirect-not-exists": "Sanda tsy hita",
        "fileduplicatesearch": "Hitady rakitra mitovy endrika",
-       "fileduplicatesearch-legend": "Hitady mitovy endrika",
        "fileduplicatesearch-filename": "Anaran-drakitra :",
        "fileduplicatesearch-submit": "Hikaroka",
        "fileduplicatesearch-info": "piksely $1 × $2<br />Haben'ilay rakitra : $3 <br />Karazana MIME : $4",
index 68716bc..7b6abe6 100644 (file)
        "categories": "Kategori",
        "categoriespagetext": "{{PLURAL:$1|Isi kategori}} ko ado laman atau media.\n[[Special:UnusedCategories|Kategori nan indak tapakai]] indak nampak di siko.\nLihek pulo [[Special:WantedCategories|kategori nan diinginan]].",
        "categoriesfrom": "Tunjuakan kategori mulai jo:",
-       "special-categories-sort-count": "uruikan manuruik jumlah",
-       "special-categories-sort-abc": "uruikan manuruik abjad",
        "deletedcontributions": "Jariah nan dihapuih",
        "deletedcontributions-title": "Jariah nan dihapuih",
        "sp-deletedcontributions-contribs": "Jariah",
index 8675f12..902150a 100644 (file)
        "toc": "Содржина",
        "showtoc": "прикажи",
        "hidetoc": "скриј",
-       "collapsible-collapse": "Собери",
+       "collapsible-collapse": "собери",
        "collapsible-expand": "прикажи",
        "confirmable-confirm": "Дали {{GENDER:$1|сте}} сигурни?",
        "confirmable-yes": "Да",
        "apisandbox-intro": "Страницава служи за вршење проби со '''Извршник на МедијаВики'''.\n\nПовеќе за употребата на овој извршник ќе најдете во [//www.mediawiki.org/wiki/API:Main_page неговата документација].  Пример: [//www.mediawiki.org/wiki/API#A_simple_example преземање на содржината на главната страница].  Одберете дејство за да видите повеќе примери.\n\nИмајте предвид дека она шо го правите на страницава може да се одрази врз викито, иако ова е песочник.",
        "apisandbox-submit": "Постави барање",
        "apisandbox-reset": "Исчисти",
-       "apisandbox-examples": "Пример",
-       "apisandbox-results": "Извод",
+       "apisandbox-examples": "Примери",
+       "apisandbox-dynamic-parameters": "Дополнителни параметри",
+       "apisandbox-dynamic-parameters-add-label": "Додај параметар:",
+       "apisandbox-dynamic-parameters-add-placeholder": "Назив на параметарот",
+       "apisandbox-results": "Исход",
        "apisandbox-request-url-label": "URL на барањето:",
        "apisandbox-request-time": "Време за барањето: $1",
        "booksources": "Печатени извори",
        "categories-submit": "Прикажи",
        "categoriespagetext": "{{PLURAL:$1|Следната категорија содржи|Следните категории содржат}} страници или мултимедијални податотеки.\n[[Special:UnusedCategories|Неискористените категории]] не се прикажани овде.\nПогледајте ги и [[Special:WantedCategories|потребните категории]].",
        "categoriesfrom": "Приказ на категории почнувајќи од:",
-       "special-categories-sort-count": "подреди по број",
-       "special-categories-sort-abc": "подреди азбучно",
        "deletedcontributions": "Избришани кориснички придонеси",
        "deletedcontributions-title": "Избришани кориснички придонеси",
        "sp-deletedcontributions-contribs": "придонеси",
index 6283267..560ecb0 100644 (file)
        "categories-submit": "പ്രദർശിപ്പിക്കുക",
        "categoriespagetext": "താഴെ കൊടുത്തിരിക്കുന്ന {{PLURAL:$1|വർഗ്ഗത്തിൽ|വർഗ്ഗങ്ങളിൽ}} താളുകളും പ്രമാണങ്ങളുമുണ്ട്.\n[[Special:UnusedCategories|ഉപയോഗിക്കപ്പെടാത്ത വർഗ്ഗങ്ങൾ]] ഇവിടെ കാണിക്കുന്നില്ല.\n[[Special:WantedCategories|അവശ്യവർഗ്ഗങ്ങൾ]] കൂടി കാണുക.",
        "categoriesfrom": "ഇങ്ങനെ തുടങ്ങുന്ന വർഗ്ഗങ്ങൾ കാട്ടുക:",
-       "special-categories-sort-count": "എണ്ണത്തിനനുസരിച്ച് ക്രമപ്പെടുത്തുക",
-       "special-categories-sort-abc": "അക്ഷരമാലാക്രമത്തിൽ ക്രമീകരിക്കുക",
        "deletedcontributions": "മായ്ക്കപ്പെട്ട ഉപയോക്തൃസംഭാവനകൾ",
        "deletedcontributions-title": "മായ്ക്കപ്പെട്ട ഉപയോക്തൃസംഭാവനകൾ",
        "sp-deletedcontributions-contribs": "സം‌ഭാവനകൾ",
        "import-logentry-upload-detail": "{{PLURAL:$1|ഒരു പതിപ്പ്|$1 പതിപ്പുകൾ}} ഇറക്കുമതി ചെയ്തു",
        "import-logentry-interwiki-detail": "$2 എന്നതിൽ നിന്ന് {{PLURAL:$1|ഒരു പതിപ്പ്|$1 പതിപ്പുകൾ}} ഇറക്കുമതി ചെയ്തു",
        "javascripttest": "ജാവാസ്ക്രിപ്റ്റ് പരീക്ഷണം",
-       "javascripttest-pagetext-noframework": "ഈ താൾ ജാവാസ്ക്രിപ്റ്റ് പരീക്ഷണങ്ങൾ നടത്താനായി മാറ്റിവെച്ചിരിക്കുന്നതാണ്.",
-       "javascripttest-pagetext-unknownframework": "അപരിചിതമായ പരീക്ഷണ ചട്ടക്കൂട് \"$1\".",
        "javascripttest-pagetext-unknownaction": "അജ്ഞാതമായ പ്രവൃത്തി \"$1\".",
-       "javascripttest-pagetext-frameworks": "താഴെക്കൊടുത്തിരിക്കുന്നവയിൽ ഒരു പരീക്ഷണ ചട്ടക്കൂട് തിരഞ്ഞെടുക്കുക: $1",
-       "javascripttest-pagetext-skins": "പരീക്ഷണങ്ങൾ നടത്താനുള്ള ദൃശ്യരൂപം തിരഞ്ഞെടുക്കുക:",
        "javascripttest-qunit-intro": "mediawiki.org-ലെ [$1 പരീക്ഷണ സഹായി] കാണുക.",
        "tooltip-pt-userpage": "{{GENDER:|താങ്കളുടെ}} ഉപയോക്തൃതാൾ",
        "tooltip-pt-anonuserpage": "താങ്കളുടെ ഐ.പി. വിലാസത്തിന്റെ ഉപയോക്തൃതാൾ",
        "version-libraries-description": "വിവരണം",
        "version-libraries-authors": "രചയിതാക്കൾ",
        "redirect": "പ്രമാണത്താൽ, ഉപയോക്താവിനാൽ, താളിനാൽ, നാൾപ്പതിപ്പിനാൽ അല്ലെങ്കിൽ രേഖയുടെ ഐ.ഡി.യാൽ ചെയ്യുന്ന തിരിച്ചുവിടൽ",
-       "redirect-legend": "ഒരു പ്രമാണത്തിലോട്ടോ താളിലോട്ടോ ഉള്ള തിരിച്ചുവിടൽ",
        "redirect-summary": "ഈ പ്രത്യേക താൾ ഒരു പ്രമാണത്തിലേയ്ക്കോ (പ്രമാണത്തിന്റെ പേര് തന്നിട്ടുണ്ട്), ഒരു താളിലേയ്ക്കോ (നാൾപ്പതിപ്പിന്റെ ഐ.ഡി. അല്ലെങ്കിൽ താൾ തന്നിട്ടുണ്ട്), ഒരു ഉപയോക്തൃതാളിലേയ്ക്കോ (ഉപയോക്താവിന്റെ സംഖ്യാ ഐ.ഡി. തന്നിട്ടുണ്ട്), ഒരു രേഖയിലെ ഉൾപ്പെടുത്തലിലേക്കോ (രേഖയുടെ ഐ.ഡി. തന്നിട്ടുണ്ട്) തിരിച്ചുവിടുന്നു. ഉപയോഗം: [[{{#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-not-exists": "വില കണ്ടെത്താൻ കഴിഞ്ഞില്ല",
        "fileduplicatesearch": "ഒരേ പ്രമാണത്തിന്റെ പലപകർപ്പുകളുണ്ടോയെന്നു തിരയുക",
        "fileduplicatesearch-summary": "ഒരേ പ്രമാണം തന്നെ വിവിധ പേരിലുണ്ടോയെന്നു ഹാഷ് വാല്യൂവധിഷ്ഠിതമായി തിരയുക.",
-       "fileduplicatesearch-legend": "പകർപ്പുണ്ടോയെന്ന് തിരയുക",
        "fileduplicatesearch-filename": "പ്രമാണത്തിന്റെ പേര്:",
        "fileduplicatesearch-submit": "തിരയൂ",
        "fileduplicatesearch-info": "$1 × $2 ബിന്ദു<br /> പ്രമാണത്തിന്റെ വലിപ്പം: $3<br />മൈം തരം: $4",
index abe9087..5b990cc 100644 (file)
        "categories": "Ангиллууд",
        "categoriespagetext": "Дараах {{PLURAL:$1|ангилалд|ангиллуудад}} хуудас эсвэл медиа файл агуулагдаж байна.\n[[Special:UnusedCategories|Хэрэглэгдэхгүй байгаа]] ангиллуудыг энд харуулсангүй.\n[[Special:WantedCategories|Хэрэгтэй ангиллууд]] гэдгийг харна уу.",
        "categoriesfrom": "Эхний анги:",
-       "special-categories-sort-count": "тоогоор ялгах",
-       "special-categories-sort-abc": "үсгийн дарааллаар ялгах",
        "deletedcontributions": "Устгагдсан хэрэглэгчийн хувь нэмэр",
        "deletedcontributions-title": "Устгагдсан хэрэглэгчийн хувь нэмэр",
        "sp-deletedcontributions-contribs": "хувь нэмэр",
        "import-logentry-upload-detail": "$1 засвар",
        "import-logentry-interwiki-detail": "$2-с авсан $1 засвар",
        "javascripttest": "JavaScript туршилт",
-       "javascripttest-pagetext-noframework": "Уг хуудсыг JavaScript тест хийхэд ашиглана.",
-       "javascripttest-pagetext-unknownframework": "\"$1\" мэдэхгүй тест фреймворк байна.",
        "tooltip-pt-userpage": "Таны хэрэглэгчийн хуудас",
        "tooltip-pt-anonuserpage": "Таны хэрэглэж буй IP хаягийн хэрэглэгчийн хуудас",
        "tooltip-pt-mytalk": "Таны ярианы хуудас",
        "version-software-version": "Хувилбар",
        "fileduplicatesearch": "Давхардсан файлуудыг хайх",
        "fileduplicatesearch-summary": "Хэш кодыг ашиглан давхардсан файлуудын хайна.",
-       "fileduplicatesearch-legend": "Давхардалтыг хайх",
        "fileduplicatesearch-filename": "Файлын нэр:",
        "fileduplicatesearch-submit": "Хайх",
        "fileduplicatesearch-info": "$1 × $2 пиксэл<br />Файлын хэмжээ: $3<br />MIME төрөл: $4",
index 998817a..a4e9ab6 100644 (file)
        "categories-submit": "दाखवा",
        "categoriespagetext": "विकिवर खालील वर्ग {{PLURAL:$1|आहे|आहेत}}.\n[[Special:UnusedCategories|न वापरलेले वर्ग]] येथे दाखवलेले नाहीत.\nहेही पहा: [[Special:WantedCategories|पाहिजे असलेले वर्ग]].",
        "categoriesfrom": "या शब्दापासून सुरू होणारे वर्ग दाखवा:",
-       "special-categories-sort-count": "मोजणीनुसार निवडा",
-       "special-categories-sort-abc": "अकारविल्हे निवडा",
        "deletedcontributions": "वगळलेली सदस्य संपादने",
        "deletedcontributions-title": "वगळलेली सदस्य संपादने",
        "sp-deletedcontributions-contribs": "संपादने",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|आवर्तन|आवर्तने}}आयात केलीत",
        "import-logentry-interwiki-detail": "$2 पासून $1 {{PLURAL:$1|आवर्तन|आवर्तने}} आयात केलीत",
        "javascripttest": "जावा स्क्रिप्ट तपासणी",
-       "javascripttest-pagetext-noframework": "हे पान जावा स्क्रिप्ट तपासणी साठी सुरक्षित केले आहे",
-       "javascripttest-pagetext-unknownframework": "अज्ञात तपासणीचे ठिकाण $1",
        "javascripttest-pagetext-unknownaction": "अनोळखी क्रिया \"$1\".",
-       "javascripttest-pagetext-frameworks": "कृपया टेस्टिंग साठी पुढील पैकी व्यवस्था / पद्धत निवडावी: $1",
-       "javascripttest-pagetext-skins": "टेस्ट करण्यासाठी योग्य ती स्कीन निवडावी",
        "javascripttest-qunit-intro": "mediawiki.org वर [$1 testing documentation] पहा",
        "tooltip-pt-userpage": "{{GENDER:|आपले सदस्य}} पान",
        "tooltip-pt-anonuserpage": "तुम्ही ज्या अंकपत्त्यान्वये संपादित करत आहात त्याकरिता हे सदस्य पान",
        "version-libraries-description": "वर्णन",
        "version-libraries-authors": "लेखक",
        "redirect": "संचिका,सदस्य किंवा आवृत्ती या ओळखणीनुसार पुनर्निर्देशन",
-       "redirect-legend": "संचिका अथवा पानास पुनर्निर्देशन",
        "redirect-summary": "हे विशेष पान एक संचिकेस पुनर्निर्देशित करते(दिलेले संचिकानाम),एक पान(दिलेली आवृत्ती किंवा पान ओळखण) किंवा एक सदस्यपान(दिलेला सदस्य अंक).\nवापर:[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], किंवा [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "जा",
        "redirect-lookup": "बघा:",
        "redirect-not-exists": "(योग्य)मुल्य (व्हॅल्यु) सापडले नाही",
        "fileduplicatesearch": "जुळ्या संचिका शोधा",
        "fileduplicatesearch-summary": "हॅश किंमतीप्रमाणे जुळ्या संचिका शोधा.",
-       "fileduplicatesearch-legend": "जुळी संचिका शोधा",
        "fileduplicatesearch-filename": "संचिकानाव:",
        "fileduplicatesearch-submit": "शोधा",
        "fileduplicatesearch-info": "$1 × $2 पीक्सेल<br />संचिकेचा आकार: $3<br />MIME प्रकार: $4",
index ec59953..d4b395e 100644 (file)
        "categories": "Kategori",
        "categoriespagetext": "{{PLURAL:$1|Kategori|Kategori-kategori}} berikut mengandungi laman atau media.\n[[Special:UnusedCategories|Kategori yang tidak digunakan]] tidak dipaparkan di sini.\nLihat juga [[Special:WantedCategories|kategori yang dikehendaki]].",
        "categoriesfrom": "Paparkan kategori bermula daripada:",
-       "special-categories-sort-count": "susun mengikut tertib bilangan",
-       "special-categories-sort-abc": "susun mengikut tertib abjad",
        "deletedcontributions": "Sumbangan dihapuskan",
        "deletedcontributions-title": "Sumbangan dihapuskan",
        "sp-deletedcontributions-contribs": "sumbangan",
        "import-logentry-upload-detail": "$1 semakan diimportkan",
        "import-logentry-interwiki-detail": "$1 semakan diimportkan daripada $2",
        "javascripttest": "Ujian JavaScript",
-       "javascripttest-pagetext-noframework": "Laman ini ditempah untuk menjalankan ujian JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Kerangka \"$1\" tidak dikenali.",
        "javascripttest-pagetext-unknownaction": "Tindakan \"$1\" tidak dikenali.",
-       "javascripttest-pagetext-frameworks": "Sila pilih salah satu kerangka yang berikut: $1",
-       "javascripttest-pagetext-skins": "Sila pilih satu kulit untuk menjalankan ujian:",
        "javascripttest-qunit-intro": "Lihat [$1 pendokumenan ujian] di mediawiki.org.",
        "tooltip-pt-userpage": "Laman pengguna anda",
        "tooltip-pt-anonuserpage": "Laman pengguna bagi alamat IP anda",
        "version-libraries-description": "Keterangan",
        "version-libraries-authors": "Pengarang",
        "redirect": "Lencongkan mengikut ID fail, pengguna, halaman atau semakan",
-       "redirect-legend": "Lencongkan ke fail atau halaman",
        "redirect-summary": "Halaman khas ini melencong kepada fail (dengan nama fail), halaman (dengan ID semakan atau ID halaman) atau halaman pengguna (dengan ID pengguna berangka). Penggunaan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], atau [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Pergi",
        "redirect-lookup": "Cari:",
        "redirect-not-exists": "Nilai tidak dijumpai",
        "fileduplicatesearch": "Cari fail serupa",
        "fileduplicatesearch-summary": "Anda boleh mencari fail serupa berdasarkan nilai cincangannya.",
-       "fileduplicatesearch-legend": "Cari fail serupa",
        "fileduplicatesearch-filename": "Nama fail:",
        "fileduplicatesearch-submit": "Cari",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Saiz fail: $3<br />Jenis MIME: $4",
index 8e3780b..ed8281a 100644 (file)
        "may": "Mejj",
        "jun": "Ġun",
        "jul": "Lul",
-       "aug": "Awwi",
+       "aug": "Aww",
        "sep": "Sett",
        "oct": "Ott",
        "nov": "Nov",
        "newmessageslinkplural": "{{PLURAL:$1|messaġġ ġdid|999=messaġġi ġodda}}",
        "newmessagesdifflinkplural": "l-aħħar {{PLURAL:$1|bidla|999=bidliet}}",
        "youhavenewmessagesmulti": "Għandek messaġġi ġodda fuq $1",
-       "editsection": "editja",
+       "editsection": "immodifika",
        "editold": "editja",
        "viewsourceold": "ara s-sors",
        "editlink": "editja",
        "nstab-template": "Mudell",
        "nstab-help": "Paġna tal-għajnuna",
        "nstab-category": "Kategorija",
+       "mainpage-nstab": "Il-Paġna prinċipali",
        "nosuchaction": "Ma teżistix din l-azzjoni",
        "nosuchactiontext": "L-azzjoni speċifikata mill-URL mhijiex valida.\nJista' jkun li tkun ktibt ħażin il-URL, jew ġejt imwassal għal ħolqa ħażina.\nDan jista' jindika wkoll bug fis-softwer użat fil-{{SITENAME}}.",
        "nosuchspecialpage": "L-ebda paġna speċjali",
        "newarticle": "(Ġdid)",
        "newarticletext": "Inti segwejt link għal paġna li għadha ma ġietx maħluqa.\nSabiex toħloq il-paġna, ikteb fil-kaxxa li tinsab hawn taħt (ara [$1 paġna tal-għajnuna] għal aktar informazzjoni).\nJekk wasalt hawn biż-żball, agħfas il-buttuna '''lura''' (''back'') fuq il-browser tiegħek.",
        "anontalkpagetext": "----''Din hija l-paġna ta' diskussjoni ta' utent anonimu li għadu ma ħoloqx kont, jew inkella li ma jużahx.\nGħaldaqstant biex nidentifikawh ikollna nużaw l-indirizz tal-IP tiegħu/tagħha.\nL-istess indirizz tal-IP jista' jkun użat minn bosta utenti differenti.\nJekk int utent anonimu u tħoss li qiegħed tirċievi kummenti irrelevanti jew li ma jagħmlux sens, jekk jogħġbok [[Special:UserLogin|idħol fil-kont tiegħek]] jew [[Special:UserLogin/signup|oħloq wieħed]] sabiex tevita li fil-futur tiġi konfuż ma' utenti anonimi oħra.''",
-       "noarticletext": "Bħalissa m'hemm l-ebda test f'din il-paġna.\nInti tista' [[Special:Search/{{PAGENAME}}|tfittex it-titlu ta' din il-paġna]] f'paġni oħra, jew <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tfittex ir-reġistri relatati], jew [{{fullurl:{{FULLPAGENAME}}|action=edit}} timmodifika din il-paġna]</span>.",
+       "noarticletext": "Bħalissa m'hemm l-ebda test f'din il-paġna.\nTista' [[Special:Search/{{PAGENAME}}|tfittex it-titlu ta' din il-paġna]] f'paġni oħra, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tfittex ir-reġistri relatati], jew [{{fullurl:{{FULLPAGENAME}}|action=edit}} toħloq dil-paġna]</span>.",
        "noarticletext-nopermission": "Bħalissa m'hemm l-ebda test f'din il-paġna. Inti tista' [[Special:Search/{{PAGENAME}}|tfittex dan it-titlu tal-paġna]] f'paġni oħra, jew <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tfittex ir-reġistri relatati]</span>, imma m'għandikx permess toħloq dil-paġna.",
        "missing-revision": "Ir-reviżjoni #$1 tal-paġna bl-isem \"{{FULLPAGENAME}}\" ma teżistix.\n\nDan ħafna drabi jiġri minħabba li tkun segwejt ħolqa lejn paġna mħassra, f'kronoloġija li mhix aġġornata.\nId-detallji tista' ssibhom fir-[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} reġistru tat-tħassir].",
        "userpage-userdoesnotexist": "Il-kont tal-utent \"<nowiki>$1</nowiki>\" mhux reġistrat.\nJekk jogħġbok, ara jekk verament tridx toħloq/timodifika din il-paġna.",
        "searchprofile-images-tooltip": "Fittex għal fajls",
        "searchprofile-everything-tooltip": "Fittex kullimkien (inklużi l-paġni ta' diskussjoni)",
        "searchprofile-advanced-tooltip": "Fittex fi spazji tal-isem personalizzati",
-       "search-result-size": "$1 ({{PLURAL:$2|1 word|$2 kliem}})",
+       "search-result-size": "$1 ({{PLURAL:$2|1 kelma|$2 kliem}})",
        "search-result-category-size": "{{PLURAL:$1|membru wieħed|$1 membri}} ({{PLURAL:$2|sottokategorija waħda|$2 sottokategoriji}}, {{PLURAL:$3|fajl wieħed|$3 fajls}})",
        "search-redirect": "(rindirizza $1)",
        "search-section": "(sezzjoni $1)",
        "categories": "Kategoriji",
        "categoriespagetext": "Il-{{PLURAL:$1|kategorija segwenti għandha|kategoriji segwenti għandhom}} paġni jew fajls multimedjali.<br />\nIl-[[Special:UnusedCategories|kategoriji vojta]] ma jidhrux hawnhekk.\nAra wkoll il-[[Special:WantedCategories|kategoriji rikjesti]].",
        "categoriesfrom": "Uri kategoriji minn:",
-       "special-categories-sort-count": "irranġa skont in-numru",
-       "special-categories-sort-abc": "irranġa skont l-alfabett",
        "deletedcontributions": "Kontribuzzjonijiet imħassra tal-utent",
        "deletedcontributions-title": "Kontribuzzjonijiet imħassra tal-utent",
        "sp-deletedcontributions-contribs": "kontribuzzjonijiet",
        "contributions": "Kontributi tal-{{GENDER:$1|utent}}",
        "contributions-title": "Kontribuzzjonijiet tal-utent għal $1",
        "mycontris": "Kontributi",
+       "anoncontribs": "Kontribuzzjonijiet",
        "contribsub2": "Għal {{GENDER:$3|$1}} ($2)",
        "contributions-userdoesnotexist": "L-utent \"$1\" mhuwiex reġistrat.",
        "nocontribs": "L-Ebda modifiki li jisodisfa l-kriterji tat-tfittxija.",
        "import-logentry-upload-detail": "{{PLURAL:$1|Reviżjoni waħda importata|$1 reviżjonijiet importati}}",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|reviżjoni|$1 reviżjonijiet}} minn $2",
        "javascripttest": "Testjar tal-JavaScript",
-       "javascripttest-pagetext-noframework": "Din il-paġna hi riservata għall-eżekuzzjoni tat-testijiet tal-JavaScript.",
        "javascripttest-pagetext-unknownaction": "Azzjoni \"$1\" mhux magħrufa.",
-       "javascripttest-pagetext-frameworks": "Jekk jogħġbok agħżel wieħed mill-oqsma tal-ittestjar: $1",
-       "javascripttest-pagetext-skins": "Agħżel aspett grafiku fuq liema tesegwixxi testijiet:",
        "javascripttest-qunit-intro": "Ara d-[$1 dokumentazzjoni dwar it-test] fuq mediawiki.org.",
-       "tooltip-pt-userpage": "Il-paġna tal-utent tiegħek",
+       "tooltip-pt-userpage": "Il-paġna tiegħek ta' utent",
        "tooltip-pt-anonuserpage": "Il-Paġna tal-utent ta' dan l-indirizz tal-IP",
        "tooltip-pt-mytalk": "Il-paġna ta' diskussjoni tiegħek",
        "tooltip-pt-anontalk": "Diskussjoni dwar il-modifiki magħmula minn dan l-indirizz tal-IP",
        "tooltip-pt-logout": "Oħroġ (illogja 'l barra)",
        "tooltip-pt-createaccount": "Nagħtuk parir toħloq kont u tidħol fih; però dan mhux obligatorju.",
        "tooltip-ca-talk": "Diskussjoni dwar il-paġna ta' kontenut",
-       "tooltip-ca-edit": "Tista' timmodifika din il-paġna. Jekk jogħġbok uża l-buttuna tad-dehra proviżorja qabel ma ssalva l-modifiki.",
+       "tooltip-ca-edit": "Immodifika din il-paġna",
        "tooltip-ca-addsection": "Ibda sezzjoni ġdida",
        "tooltip-ca-viewsource": "Din il-paġna hija protetta. Tista' tara s-sors tagħha.",
        "tooltip-ca-history": "Verżjonijiet preċedenti ta' din il-paġna",
        "tooltip-ca-move": "Mexxi din il-paġna",
        "tooltip-ca-watch": "Żid din il-paġna mal-lista ta' osservazzjoni tiegħek",
        "tooltip-ca-unwatch": "Neħħi din il-paġna mill-osservazzjonijiet speċjali tiegħek",
-       "tooltip-search": "Fittex fil-{{SITENAME}}",
+       "tooltip-search": "Fittex fis-sit: {{SITENAME}}",
        "tooltip-search-go": "Mur fil-paġna b'dan it-titlu eżatt, jekk teżisti",
        "tooltip-search-fulltext": "Fittex dan it-test fil-paġni",
        "tooltip-p-logo": "Żur il-paġna prinċipali",
        "tooltip-n-mainpage-description": "Żur il-paġna prinċipali",
        "tooltip-n-portal": "Dwar il-proġett, x'tista' tagħmel, fejn tista' ssib l-affarijiet",
        "tooltip-n-currentevents": "Sib aktar informazzjoni dwar il-ġrajjiet kurrenti",
-       "tooltip-n-recentchanges": "Il-lista tal-bidliet riċenti fil-wiki",
+       "tooltip-n-recentchanges": "Lista tal-bidliet riċenti fil-wiki",
        "tooltip-n-randompage": "Uri paġna kwalunkwe",
        "tooltip-n-help": "Il-post fejn issir taf iżjed.",
        "tooltip-t-whatlinkshere": "Lista tal-paġni tal-wiki kollha li jwasslu hawn",
-       "tooltip-t-recentchangeslinked": "Link għal modifiki riċenti ta' paġni relatati",
+       "tooltip-t-recentchangeslinked": "Modifiki riċenti f'paġni b'ħolqa minn din il-paġna",
        "tooltip-feed-rss": "Feed RSS għal din il-paġna",
        "tooltip-feed-atom": "Feed Atom għal din il-paġna",
-       "tooltip-t-contributions": "Uri l-lista tal-kontribuzzjonijiet ta' dan l-utent",
+       "tooltip-t-contributions": "Lista tal-kontribuzzjonijiet ta' {{GENDER:$1|dal-utent}}",
        "tooltip-t-emailuser": "Ibgħat posta elettronika lil dan l-utent",
        "tooltip-t-info": "Aktar informazzjoni fuq din il-paġna",
        "tooltip-t-upload": "Tella' fajls",
        "tooltip-ca-nstab-main": "Uri l-paġna ta' kontenut",
        "tooltip-ca-nstab-user": "Uri l-paġna tal-utent",
        "tooltip-ca-nstab-media": "Uri l-paġna tal-medja",
-       "tooltip-ca-nstab-special": "Din hija paġna speċjali, ma tistax tagħmel modifiki f'din il-paġna",
+       "tooltip-ca-nstab-special": "Din paġna speċjali, u ma tistax tiġi mmodifikata",
        "tooltip-ca-nstab-project": "Uri l-paġna tal-proġett",
        "tooltip-ca-nstab-image": "Uri l-paġna tal-fajl",
        "tooltip-ca-nstab-mediawiki": "Uri l-messaġġ tas-sistema",
        "version-libraries-library": "Librerija",
        "version-libraries-version": "Verżjoni",
        "redirect": "Irrindirizza lejn fajl, utent, paġna jew reviżjoni",
-       "redirect-legend": "Irrindirizza lejn fajl jew paġna",
        "redirect-summary": "Din il-paġna speċjali tirrindirizza lejn fajl (meta tispeċifika isem ta' fajl), paġna (meta tispeċifika l-ID tar-reviżjoni jew l-ID tal-paġna) jew paġna tal-utent (meta tispeċifika l-ID numeriku tal-utent). Użu: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], jew [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Mur",
        "redirect-lookup": "Fittex:",
        "redirect-not-exists": "Il-valur ma nstabx",
        "fileduplicatesearch": "Fittex fajls duplikati",
        "fileduplicatesearch-summary": "Fittex fajls duplikati fil-bażi għal valur ''hash''.",
-       "fileduplicatesearch-legend": "Fittex għal duplikat",
        "fileduplicatesearch-filename": "Isem il-fajl:",
        "fileduplicatesearch-submit": "Fittex",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />Daqs tal-fajl: $3<br />tip MIME: $4",
index f94f79c..c1cf019 100644 (file)
        "categories": "ကဏ္ဍများ",
        "categories-submit": "ပြသရန်",
        "categoriesfrom": "ဤမှစသော အမျိုးအစားများကို ပြရန် -",
-       "special-categories-sort-count": "အနည်းအများအလိုက်စီရန်",
-       "special-categories-sort-abc": "အက္ခရာစဉ်အလိုက်စီရန်",
        "deletedcontributions": "ဖျက်လိုက်သော ပံ့ပိုးမှုများ",
        "deletedcontributions-title": "ဖျက်လိုက်သော ပံ့ပိုးမှုများ",
        "sp-deletedcontributions-contribs": "ပံ့ပိုးထားမှုများ",
index 0ad8805..9f40bf4 100644 (file)
        "allpages-bad-ns": "{{SITENAME}} сайтсэнть арась лем потмо \"$1\".",
        "categories": "Категорият",
        "categoriespagetext": "{{PLURAL:$1|Те категориясонть|Неть категориятнесэ}} улить лопат эли медият.\n[[Special:UnusedCategories|тевс апак нолда категориятне]] тесэ а невтевить.\nИстяжо ванытя [[Special:WantedCategories|вешема категориятнень]].",
-       "special-categories-sort-count": "аравтомс цётонь коряс",
-       "special-categories-sort-abc": "аравтомс альфавитэнь коряс",
        "sp-deletedcontributions-contribs": "путовксонзо",
        "linksearch": "Ушо ёндонь сюлмавомапенень вешнема",
        "linksearch-pat": "Вешнемкс парцун:",
        "version-software-product": "Шкавкс-нолдавкс",
        "version-software-version": "Верзия",
        "fileduplicatesearch": "Вешнемс кавтаське файлат",
-       "fileduplicatesearch-legend": "Вешнемс кавтаське",
        "fileduplicatesearch-filename": "Файла лем:",
        "fileduplicatesearch-submit": "Вешнемс",
        "specialpages": "Башка тевень лопат",
index 8bcfce5..01c2df0 100644 (file)
        "searchprofile-everything-tooltip": "Chhoē choân-pō͘ (pau-koat thó-lūn-ia̍h)",
        "searchprofile-advanced-tooltip": "佇你家己設的名空間內底揣",
        "search-result-size": "$1 ({{PLURAL:$2|1 jī-goân|$2 jī-goân}})",
-       "search-redirect": "(轉去 $1)",
+       "search-redirect": "($1 轉)",
        "search-section": "(toān-lo̍h $1)",
        "searchall": "choân-pō·",
        "showingresults": "Ē-kha tùi #<b>$2</b> khai-sí hián-sī <b>$1</b> hāng kiat-kó.",
index e9a257c..c0886a6 100644 (file)
        "categories-submit": "Faje vedé",
        "categoriespagetext": "{{PLURAL:$1|'A categurìa 'nnecata 'e seguito cuntiene|'E categurìe 'nnecate 'e seguito cuntengono}} paggene o file multimediale.\n'E [[Special:UnusedCategories|categurìe vuote]] nun song mostrate ccà.\nVere anche 'e [[Special:WantedCategories|categurìe richieste]].",
        "categoriesfrom": "Fà vedè 'e categurìe partenno 'a:",
-       "special-categories-sort-count": "arricetta pe' cunteggio",
-       "special-categories-sort-abc": "arricetta arfabbeticamente",
        "deletedcontributions": "Contribbute utente scancellate",
        "deletedcontributions-title": "Contribbute utente scancellate",
        "sp-deletedcontributions-contribs": "contribbute",
index 1073491..d3ec649 100644 (file)
        "categories-submit": "Vis",
        "categoriespagetext": "Følgende {{PLURAL:$1|kategori|kategorier}} inneholder sider eller media.\n[[Special:UnusedCategories|Ubrukte kategorier]] vises ikke her.\nSe også [[Special:WantedCategories|ønskede kategorier]].",
        "categoriesfrom": "Vis kategorier fra og med:",
-       "special-categories-sort-count": "soter etter antall",
-       "special-categories-sort-abc": "sorter alfabetisk",
        "deletedcontributions": "Slettede brukerbidrag",
        "deletedcontributions-title": "Slettede brukerbidrag",
        "sp-deletedcontributions-contribs": "bidrag",
        "import-logentry-upload-detail": "{{PLURAL:$1|Én revisjon|$1 revisjoner}} er importert",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|Én revisjon|$1 revisjoner}} er importert fra $2",
        "javascripttest": "JavaScript-testing",
-       "javascripttest-pagetext-noframework": "Denne siden er reservert for å kjøre JavaScript-tester.",
-       "javascripttest-pagetext-unknownframework": "Ukjent testerammeverk \"$1\".",
        "javascripttest-pagetext-unknownaction": "Ukjent handling «$1».",
-       "javascripttest-pagetext-frameworks": "Vennligst velg en av følgende testerammeverk: $1",
-       "javascripttest-pagetext-skins": "Velg et utseende for testene:",
        "javascripttest-qunit-intro": "Se [$1 testedokumentasjonen] på mediawiki.org.",
        "tooltip-pt-userpage": "{{GENDER:|Din brukerside}}",
        "tooltip-pt-anonuserpage": "Brukersiden for IP-adressen du redigerer fra",
        "version-libraries-description": "Beskrivelse",
        "version-libraries-authors": "Forfattere",
        "redirect": "Omdiriger via filnavn, bruker eller versjonsid",
-       "redirect-legend": "Omdiriger til en fil eller side",
        "redirect-summary": "Denne spesialsiden omdirigerer til en fil (hvis et filnavn angis), en side (hvis et redigeringsnummer angis) eller en brukerside (hvis en numerisk brukeridentifikator angis).\nEksempler:[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Gå",
        "redirect-lookup": "Oppslag:",
        "redirect-not-exists": "Verdi er ikke funnet",
        "fileduplicatesearch": "Søk etter duplikatfiler",
        "fileduplicatesearch-summary": "Søk etter duplikatfiler basert på dets hash-verdi.",
-       "fileduplicatesearch-legend": "Søk etter en duplikatfil",
        "fileduplicatesearch-filename": "Filnavn:",
        "fileduplicatesearch-submit": "Søk",
        "fileduplicatesearch-info": "$1 × $2 piksler<br />Filstørrelse: $3<br />MIME-type: $4",
index f53d44c..754f6da 100644 (file)
        "categories": "Kategorieën",
        "categoriespagetext": "De de volgende {{PLURAL:$1|kategorie steet|kategorieën staon}} ziejen of mediabestaanden.\n[[Special:UnusedCategories|ongebruukten kategorieën]] zie'j hier niet.\nZie oek [[Special:WantedCategories|gewunste kategorieën]].",
        "categoriesfrom": "Laot kategorieën zien vanaof:",
-       "special-categories-sort-count": "op antal sorteren",
-       "special-categories-sort-abc": "alfebeties sorteren",
        "deletedcontributions": "Vortedaone gebrukersbiedragen",
        "deletedcontributions-title": "Vortedaone gebrukersbiedragen",
        "sp-deletedcontributions-contribs": "biedragen",
index f21090f..40f07fd 100644 (file)
        "categories": "Kategorien",
        "categoriespagetext": "In disse Kategorien staht Sieden oder Mediendatein.\n[[Special:UnusedCategories|Nich bruukte Kategorien]] warrt hier nich wiest.\nKiek ok bi de [[Special:WantedCategories|wünschten Kategorien]].",
        "categoriesfrom": "Wies Kategorien anfungen mit:",
-       "special-categories-sort-count": "na Tall sorteren",
-       "special-categories-sort-abc": "alphabeetsch sorteren",
        "deletedcontributions": "Wegsmetene Bidrääg vun’n Bruker",
        "deletedcontributions-title": "Wegsmetene Bidrääg vun’n Bruker",
        "sp-deletedcontributions-contribs": "Bidrääg",
        "version-entrypoints-header-url": "URL",
        "fileduplicatesearch": "Söök na Datein, de jüst gliek sünd",
        "fileduplicatesearch-summary": "Söök na Datein, de na jemehr Hash-Tallen jüst gliek sünd.",
-       "fileduplicatesearch-legend": "Söök na Datein, de jüst gliek sünd",
        "fileduplicatesearch-filename": "Dateinaam:",
        "fileduplicatesearch-submit": "Söken",
        "fileduplicatesearch-info": "$1 × $2 Pixel<br />Dateigrött: $3<br />MIME-Typ: $4",
index 4d9877f..470c288 100644 (file)
        "categories-submit": "देखाउनुहोस्",
        "categoriespagetext": "निम्नलिखित {{PLURAL:$1|श्रेणी|श्रेणीहरू}}मा पृष्ठ वा मीडिया छन् । जुन [[Special:UnusedCategories|प्रयोग नगरिएका श्रेणीहरू]] यहाँ देखाइएको छैन।  [[Special:WantedCategories|चाहिएको श्रेणीहरू]] पनि हेर्नुहोस।",
        "categoriesfrom": "श्रेणीहरू देखाउन शुरु हुने यहाँ:",
-       "special-categories-sort-count": "गणना क्रममा राख्नुहोस्",
-       "special-categories-sort-abc": "वर्णानुक्रम अनुसार मिलाउने",
        "deletedcontributions": "प्रयोगकर्ताका मेटिएका योगदानहरू",
        "deletedcontributions-title": "प्रयोगकर्ताका मेटाइएका योगदानहरू",
        "sp-deletedcontributions-contribs": "योगदानहरू",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|संशोधन|संशोधनहरू}} आयात भयो",
        "import-logentry-interwiki-detail": "$2 देखि $1 {{PLURAL:$1|पुनरावलोकन|पुनरावलोकनहरु}} आयात भयो",
        "javascripttest": "JavaScript जाँच गरिदै",
-       "javascripttest-pagetext-noframework": "यो पृष्ठ जाभास्क्रिपट जाँचहरूको लागी जगेडामा राखिएको छ ।",
-       "javascripttest-pagetext-unknownframework": "अज्ञात जाँच खाँका \"$1\" ।",
        "javascripttest-pagetext-unknownaction": "अज्ञात कारवाही \"$1\" ।",
-       "javascripttest-pagetext-frameworks": "कृपया निम्न परीक्षण ढाँचाहरू मध्ये एउटा छान्नुहोस्: $1",
-       "javascripttest-pagetext-skins": "परीक्षणको लागि खोल छान्नुहोस्:",
        "javascripttest-qunit-intro": "mediawiki.org मा [$1 जाँचको कागजात] हेर्नुहोस् ।",
        "tooltip-pt-userpage": "तपाईंको प्रयोगकर्ता पृष्ठ",
        "tooltip-pt-anonuserpage": "तपाईँ जुन IP ठेगानाको रुपमा सम्पादन गर्दै हुनुहुन्छ , त्यसको प्रयोगकर्ता पृष्ठ निम्न छ :",
        "version-libraries-description": "वर्णन",
        "version-libraries-authors": "लेखकहरू",
        "redirect": "फाइल, प्रयोगकर्ता, वा संशोधन आइडीको आधारमा अनुप्रेषित गर्ने",
-       "redirect-legend": "फाइल वा पृष्ठमा रिडाइरेक्ट",
        "redirect-summary": "यस विशेष पृष्ठ (प्रदान गरिएको फाइलनाम), पृष्ठको (पृष्ठ आइडी अथवा अवतरण आइडी), वा (प्रयोगकर्ता आइडी) राख्दा प्रयोगकर्तापृष्ठमा मा सारिनेछ। उदाहरण: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], वा [[{{#Special:Redirect}}/user/101]]।",
        "redirect-submit": "जाने",
        "redirect-lookup": "खोजी:",
        "redirect-not-exists": "मान पत्ता लागेन",
        "fileduplicatesearch": "नक्कल फाइल खोज्ने",
        "fileduplicatesearch-summary": "ह्यास मानको आधारमा दुरुस्त नक्कल फाइहरु खोज्ने ।",
-       "fileduplicatesearch-legend": " नक्कल खोज्नुहोस्",
        "fileduplicatesearch-filename": "फाइलनाम:",
        "fileduplicatesearch-submit": "खोजी गर्नुहोस्",
        "fileduplicatesearch-info": "$1 × $2 पिक्सेल<br />फाइल आकार: $3<br />MIME प्रकार: $4",
index 5d89216..4dd5546 100644 (file)
@@ -74,7 +74,8 @@
                        "Robin van der Vliet",
                        "Catrope",
                        "Edoderoo",
-                       "Nemo bis"
+                       "Nemo bis",
+                       "Lemondoge"
                ]
        },
        "tog-underline": "Koppelingen onderstrepen:",
@@ -92,6 +93,7 @@
        "tog-watchdefault": "Pagina’s en bestanden die ik bewerk automatisch volgen",
        "tog-watchmoves": "Pagina’s en bestanden die ik hernoem automatisch volgen",
        "tog-watchdeletion": "Pagina’s en bestanden die ik verwijder automatisch volgen",
+       "tog-watchuploads": "Nieuwe bestanden die ik upload toevoegen aan mijn volglijst",
        "tog-watchrollback": "Pagina's waarop ik heb teruggedraaid automatisch volgen",
        "tog-minordefault": "Mijn bewerkingen standaard als kleine bewerking markeren",
        "tog-previewontop": "Voorvertoning boven bewerkingsveld weergeven",
        "noemail": "Er is geen e-mailadres bekend voor gebruiker \"$1\".",
        "noemailcreate": "U moet een geldig e-mailadres opgeven",
        "passwordsent": "Het wachtwoord is verzonden naar het e-mailadres voor \"$1\".\nMeld u aan nadat u het hebt ontvangen.",
-       "blocked-mailpassword": "Uw IP-adres is geblokkeerd voor het maken van wijzigingen.\nOm misbruik te voorkomen is het niet mogelijk om een nieuw wachtwoord aan te vragen.",
+       "blocked-mailpassword": "Uw IP-adres is geblokkeerd voor het maken van wijzigingen. Om misbruik te voorkomen is het niet mogelijk om een nieuw wachtwoord aan te vragen.",
        "eauthentsent": "Er is ter bevestiging een e-mail naar het opgegeven e-mailadres gezonden.\nVolg de aanwijzingen in de e-mail om aan te geven dat het uw e-mailadres is.\nTot die tijd worden er geen e-mails naar het e-mailadres gezonden.",
        "throttled-mailpassword": "In {{PLURAL:$1|het laatste uur|de laatste $1 uur}} is al een wachtwoordherinnering verzonden.\nOm misbruik te voorkomen wordt er slechts één wachtwoordherinnering per {{PLURAL:$1|uur|$1 uur}} verzonden.",
        "mailerror": "Fout bij het verzenden van e-mail: $1",
        "createaccount-title": "Gebruikers registreren voor {{SITENAME}}",
        "createaccount-text": "Iemand heeft een gebruiker op {{SITENAME}} ($4) aangemaakt met de naam \"$2\" en uw e-mailadres.\nHet wachtwoord voor \"$2\" is \"$3\".\nMeld u aan en wijzig uw wachtwoord.\n\nNegeer dit bericht als deze gebruiker zonder uw medeweten is aangemaakt.",
        "login-throttled": "U heeft recentelijk te veel mislukte aanmeldpogingen gedaan.\nWacht alstublieft $1 voordat u het opnieuw probeert.",
-       "login-abort-generic": "U bent niet aangemeld. De procedure is afgebroken.",
+       "login-abort-generic": "Uw aanmelding is mislukt - Afgebroken",
        "login-migrated-generic": "Uw gebruikersnaam is hernoemd, en uw gebruikersnaam bestaat niet langer op deze wiki.",
        "loginlanguagelabel": "Taal: $1",
        "suspicious-userlogout": "Uw verzoek om af te melden is genegeerd, omdat het lijkt alsof het verzoek is verzonden door een browser of cacheproxy die stuk is.",
        "newpassword": "Nieuw wachtwoord:",
        "retypenew": "Herhaling nieuwe wachtwoord:",
        "resetpass_submit": "Wachtwoord instellen en aanmelden",
-       "changepassword-success": "Uw wachtwoord is gewijzigd.",
+       "changepassword-success": "Uw wachtwoord is gewijzigd!",
        "changepassword-throttled": "U heeft recentelijk te veel mislukte aanmeldpogingen gedaan.\nWacht alstublieft $1 voordat u het opnieuw probeert.",
        "botpasswords": "Botwachtwoorden",
        "botpasswords-summary": "<em>Botwachtwoorden</em> zorgen voor toegang tot de API via een gebruikersaccount zonder gebruik te maken van de aanmeldgegevens van dat account. De gebruikersrechten die beschikbaar zijn kunnen afwijken indien er aangemeld is met een botwachtwoord.\n\nAls u niet weet wat de gevolgen hiervan zijn, is het handiger om dit ook dan niet te doen. Niemand hoort u te vragen om een botwachtwoord aan te maken en deze vervolgens aan hem of haar te geven.",
        "botpasswords-insert-failed": "Toevoegen van botnaam \"$1\" mislukt. Is deze misschien al toegevoegd?",
        "botpasswords-update-failed": "Bijwerken van botnaam \"$1\" mislukt. Is deze misschien verwijderd?",
        "botpasswords-created-title": "Botwachtwoord aangemaakt",
-       "botpasswords-created-body": "Het botwachtwoord \"$1\" is succesvol aangemaakt.",
+       "botpasswords-created-body": "Het botwachtwoord voor botnaam \"$1\" van gebruiker \"$2\" is gemaakt.",
        "botpasswords-updated-title": "Botwachtwoord bijgewerkt",
        "botpasswords-updated-body": "Het botwachtwoord \"$1\" is succesvol bijgewerkt.",
        "botpasswords-deleted-title": "Botwachtwoord verwijderd",
        "revdelete-unsuppress": "Beperkingen op teruggeplaatste wijzigingen verwijderen",
        "revdelete-log": "Reden:",
        "revdelete-submit": "Toepassen op de geselecteerde {{PLURAL:$1|bewerking|bewerkingen}}",
-       "revdelete-success": "Deze zichtbaarheid van de wijziging is bijgewerkt.",
+       "revdelete-success": "Zichtbaarheid van wijziging bijgewerkt.",
        "revdelete-failure": "De zichtbaarheid van de wijziging kon niet bijgewerkt worden:\n$1",
        "logdelete-success": "De zichtbaarheid van de gebeurtenis is ingesteld.",
        "logdelete-failure": "De zichtbaarheid van de logboekregel kon niet ingesteld worden:\n$1",
        "uploadstash-clear": "Verborgen bestanden weggooien",
        "uploadstash-nofiles": "Er zijn geen verborgen bestanden.",
        "uploadstash-badtoken": "Het uitvoeren van de handeling is mislukt. Dit komt mogelijk doordat uw bewerkingsreferenties zijn verlopen. Probeer het opnieuw.",
-       "uploadstash-errclear": "Het verwijderen van de bestanden is mislukt.",
+       "uploadstash-errclear": "Het wissen van de bestanden is mislukt.",
        "uploadstash-refresh": "Lijst met bestanden bijwerken",
+       "uploadstash-thumbnail": "miniatuurafbeelding weergeven",
        "invalid-chunk-offset": "Ongeldige chunkoffset",
        "img-auth-accessdenied": "Toegang geweigerd",
        "img-auth-nopathinfo": "PATH_INFO ontbreekt.\nUw server is niet ingesteld om deze gegevens door te geven.\nMisschien gebruikt deze CGI, en dan wordt img_auth niet ondersteund.\nZie https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization voor meer informatie.",
        "categories-submit": "Weergeven",
        "categoriespagetext": "De volgende {{PLURAL:$1|categorie bevat|categorieën bevatten}} pagina's of mediabestanden.\n[[Special:UnusedCategories|Ongebruikte categorieën]] worden hier niet weergegeven.\nZie ook [[Special:WantedCategories|niet-bestaande categorieën met koppelingen]].",
        "categoriesfrom": "Categorieën weergeven vanaf:",
-       "special-categories-sort-count": "op aantal sorteren",
-       "special-categories-sort-abc": "alfabetisch sorteren",
        "deletedcontributions": "Verwijderde bijdragen",
        "deletedcontributions-title": "Verwijderde gebruikersbijdragen",
        "sp-deletedcontributions-contribs": "bijdragen",
        "delete-toobig": "Deze pagina heeft een lange bewerkingsgeschiedenis, meer dan $1 {{PLURAL:$1|versie|versies}}.\nHet verwijderen van dit soort pagina's is met rechten beperkt om het per ongeluk verstoren van de werking van {{SITENAME}} te voorkomen.",
        "delete-warning-toobig": "Deze pagina heeft een lange bewerkingsgeschiedenis, meer dan $1 {{PLURAL:$1|versie|versies}}.\nHet verwijderen van deze pagina kan de werking van de database van {{SITENAME}} verstoren.\nWees voorzichtig.",
        "deleteprotected": "U kunt deze pagina niet verwijderen omdat hij is beveiligd.",
-       "deleting-backlinks-warning": "'''Waarschuwing:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|andere pagina's]] gebruiken of verwijzen naar de pagina die u wilt verwijderen.",
+       "deleting-backlinks-warning": "<strong>Waarschuwing:</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|andere pagina's]] gebruiken of verwijzen naar de pagina die u wilt verwijderen.",
        "rollback": "Wijzigingen ongedaan maken",
        "rollbacklink": "terugdraaien",
        "rollbacklinkcount": "{{PLURAL:$1|één bewerking|$1 bewerkingen}} terugdraaien",
        "ipb-unblock": "Een gebruiker of IP-adres deblokkeren",
        "ipb-blocklist": "Bestaande blokkades bekijken",
        "ipb-blocklist-contribs": "Bijdragen van {{GENDER:$1|$1}}",
+       "ipb-blocklist-duration-left": "$1 te gaan",
        "unblockip": "Gebruiker deblokkeren",
        "unblockiptext": "Gebruik het onderstaande formulier om opnieuw schrijftoegang te geven aan een geblokkeerde gebruiker of IP-adres.",
        "ipusubmit": "Blokkade opheffen",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|versie|versies}} geïmporteerd",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versie|versies}} geïmporteerd uit $2",
        "javascripttest": "JavaScript testen",
-       "javascripttest-pagetext-noframework": "Deze pagina is gereserveerd voor het uitvoeren van JavaScripttesten.",
-       "javascripttest-pagetext-unknownframework": "Onbekend testframework \"$1\".",
        "javascripttest-pagetext-unknownaction": "Onbekende handeling \"$1\".",
-       "javascripttest-pagetext-frameworks": "Kies een van de volgende testframeworks: $1",
-       "javascripttest-pagetext-skins": "Kies een vormgeving om de tests mee uit te voeren:",
        "javascripttest-qunit-intro": "Zie de [$1 testdocumentatie] op mediawiki.org.",
        "tooltip-pt-userpage": "{{GENDER:|Uw}} gebruikerspagina",
        "tooltip-pt-anonuserpage": "Gebruikerspagina voor uw IP-adres",
        "version-libraries-description": "Beschrijving",
        "version-libraries-authors": "Auteurs",
        "redirect": "Doorverwijzen op bestandsnaam, gebruikers-, pagina-, versie- of logboekregelnummer",
-       "redirect-legend": "Doorverwijzen naar een bestand of pagina",
        "redirect-summary": "Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een paginanummer of versienummer wordt opgegeven), een gebruikerspagina (als een gebruikersnummer wordt opgegeven) of een logboekregel (als een logboekregel-ID wordt opgegeven). Gebruik: [[{{#Special:Redirect}}/file/Voorbeeld.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] of [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "OK",
        "redirect-lookup": "Opzoeken:",
        "redirect-not-exists": "Waarde niet gevonden",
        "fileduplicatesearch": "Duplicaatbestanden zoeken",
        "fileduplicatesearch-summary": "Duplicaatbestanden zoeken op basis van de hashwaarde.",
-       "fileduplicatesearch-legend": "Duplicaatbestanden zoeken",
        "fileduplicatesearch-filename": "Bestandsnaam:",
        "fileduplicatesearch-submit": "Zoeken",
        "fileduplicatesearch-info": "$1 × $2 pixels<br />Bestandsgrootte: $3<br />MIME-type: $4",
        "api-error-unknownerror": "Onbekende fout: \"$1\"",
        "api-error-uploaddisabled": "Uploaden is niet mogelijk in deze wiki.",
        "api-error-verification-error": "Dit bestand is mogelijk beschadigd of heeft een onjuiste extensie.",
+       "api-error-was-deleted": "Een bestand met deze naam is al eerder geüpload en vervolgens verwijderd.",
        "duration-seconds": "$1 {{PLURAL:$1|seconde|seconden}}",
        "duration-minutes": "$1 {{PLURAL:$1|minuut|minuten}}",
        "duration-hours": "$1 {{PLURAL:$1|uur|uren}}",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-symbols": "Symbolen",
        "special-characters-group-greek": "Grieks",
+       "special-characters-group-greekextended": "Grieks-uitgebreid",
        "special-characters-group-cyrillic": "Cyrillisch",
        "special-characters-group-arabic": "Arabisch",
        "special-characters-group-arabicextended": "Arabisch uitgebreid",
        "sessionprovider-generic": "$1 sessies",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sessies gebaseerd op cookies",
        "sessionprovider-nocookies": "Cookies kunnen uitgeschakeld zijn. Zorg ervoor dat u cookies hebt ingeschakeld en probeer het opnieuw.",
-       "randomrootpage": "Willekeurige hoofdpagina"
+       "randomrootpage": "Willekeurige hoofdpagina",
+       "log-action-filter-block": "Soort blokkade:",
+       "log-action-filter-delete": "Soort verwijdering:",
+       "log-action-filter-managetags": "Type labelbeheerhandeling:",
+       "log-action-filter-move": "Soort hernoeming:",
+       "log-action-filter-newusers": "Type accountaanmaak:",
+       "log-action-filter-patrol": "Soort markering:",
+       "log-action-filter-protect": "Soort beveiliging:",
+       "log-action-filter-all": "Alles",
+       "log-action-filter-block-block": "Blokkade",
+       "log-action-filter-block-reblock": "Aanpassing van blokkade",
+       "log-action-filter-block-unblock": "Opheffing van blokkade",
+       "log-action-filter-delete-delete": "Verwijderen van pagina",
+       "log-action-filter-delete-restore": "Terugplaatsen van pagina",
+       "log-action-filter-newusers-autocreate": "Automatische aanmaak",
+       "log-action-filter-patrol-patrol": "Handmatige markering",
+       "log-action-filter-patrol-autopatrol": "Automatische markering",
+       "log-action-filter-protect-protect": "Beveiliging",
+       "log-action-filter-protect-modify": "Aanpassing van beveiliging",
+       "log-action-filter-protect-unprotect": "Opheffen van beveliging",
+       "log-action-filter-protect-move_prot": "Beveiliging verplaatst",
+       "log-action-filter-rights-rights": "Handmatige aanpassing",
+       "log-action-filter-rights-autopromote": "Automatische aanpassing",
+       "log-action-filter-upload-upload": "Nieuwe upload",
+       "log-action-filter-upload-overwrite": "Herupload"
 }
index 66d205d..c01b64a 100644 (file)
        "edit-conflict": "Endringskonflikt.",
        "edit-no-change": "Endringa di vart ignorert fordi det ikkje vart gjort endringar i teksten.",
        "postedit-confirmation-created": "Sida vart oppretta.",
+       "postedit-confirmation-restored": "Sida vart attoppretta.",
        "postedit-confirmation-saved": "Endringa di vart lagra.",
        "edit-already-exists": "Kunne ikkje opprette ny side fordi ho alt eksisterer.",
        "defaultmessagetext": "Standard meldingstekst",
        "categories-submit": "Vis",
        "categoriespagetext": "Følgjande {{PLURAL:$1|category contains|kategoriar inneheld}} sider eller media.\n[[Special:UnusedCategories|Unytta kategoriar]] vert ikkje vist her.\nSjå òg [[Special:WantedCategories|ønska kategoriar]].",
        "categoriesfrom": "Vis kategoriar frå og med:",
-       "special-categories-sort-count": "sorter etter storleik",
-       "special-categories-sort-abc": "sorter alfabetisk",
        "deletedcontributions": "Sletta brukarbidrag",
        "deletedcontributions-title": "Sletta brukarbidrag",
        "sp-deletedcontributions-contribs": "bidrag",
        "redirect-not-exists": "Fann ikkje verdi",
        "fileduplicatesearch": "Søk etter duplikatfiler",
        "fileduplicatesearch-summary": "Søk etter duplikatfiler basert på hash-verdiane deira.",
-       "fileduplicatesearch-legend": "Søk etter ei duplikatfil",
        "fileduplicatesearch-filename": "Filnamn:",
        "fileduplicatesearch-submit": "Søk",
        "fileduplicatesearch-info": "$1 × $2 pikslar<br />Filstorleik: $3<br />MIME-type: $4",
index 41bbf8b..e16a822 100644 (file)
        "categories": "Categorias",
        "categoriespagetext": "{{PLURAL:$1|La categoria seguenta es utilizada|Las categorias seguentas son utilizadas}} per de paginas o de fichièrs.\n[[Special:UnusedCategories|Las categorias inutilizadas]] son pas afichadas aicí.\nVejatz tanben [[Special:WantedCategories|las categorias demandadas]].",
        "categoriesfrom": "Afichar las categorias que començan a :",
-       "special-categories-sort-count": "triada per compte",
-       "special-categories-sort-abc": "triada alfabetica",
        "deletedcontributions": "Contribucions suprimidas d’un utilizaire",
        "deletedcontributions-title": "Contribucions suprimidas d’un utilizaire",
        "sp-deletedcontributions-contribs": "contribucions",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|revision importada|revisions importadas}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revision importada|revisions importadas}} dempuèi $2",
        "javascripttest": "Tèst de JavaScript",
-       "javascripttest-pagetext-noframework": "Aquesta pagina es reservada per l'execucion dels tèsts JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Estructura « $1 » desconeguda.",
        "javascripttest-pagetext-unknownaction": "Accion « $1 » desconeguda.",
-       "javascripttest-pagetext-frameworks": "Causissètz una de las estructuras de tèst seguentas : $1",
-       "javascripttest-pagetext-skins": "Causissètz un abilhatge amb lo qual cal aviar los tèsts :",
        "javascripttest-qunit-intro": "Veire [$1 la documentacion de tèst] sus mediawiki.org.",
        "tooltip-pt-userpage": "Vòstra pagina d'{{GENDER:|utilizaire|utilizaira}}",
        "tooltip-pt-anonuserpage": "La pagina d'utilizare de l’IP amb la quala contribuissètz",
        "version-libraries-description": "Descripcion",
        "version-libraries-authors": "Autors",
        "redirect": "Redirigit per fichièr, utilizaire, pagina o ID de revision.",
-       "redirect-legend": "Redirigir cap a una pagina o un fichièr",
        "redirect-submit": "Validar",
        "redirect-lookup": "Recèrca :",
        "redirect-value": "Valor :",
        "redirect-not-exists": "Valor pas trobada",
        "fileduplicatesearch": "Recèrca dels fichièrs en doble",
        "fileduplicatesearch-summary": "Recèrca de las còpias de fichièrs identics d'aprèp lor emprenta de hachatge.",
-       "fileduplicatesearch-legend": "Recèrca d’un doble",
        "fileduplicatesearch-filename": "Nom del fichièr :",
        "fileduplicatesearch-submit": "Recercar",
        "fileduplicatesearch-info": "$1 × $2 pixèls<br />Talha del fichièr : $3<br />MIME type : $4",
index bb3707a..d711ecd 100644 (file)
        "right-rollback": "ଏକ ନିର୍ଦ୍ଦିଷ୍ଟ ପୃଷ୍ଠାକୁ ବଦଳାଇଥିବା ଶେଷ ସଭ୍ୟଙ୍କ ସମ୍ପାଦନାକୁ ସଙ୍ଗେସଙ୍ଗେ ପୁରାପୁରି ପଛକୁ ଫେରାଇଦେବେ",
        "right-markbotedits": "ପୁରାପୁରି ପଛକୁ ଫେରାଇବା ବଦଳଗୁଡ଼ିକ ଆପେ ଆପେ କରା ବଦଳ ବୋଲି ଗଣିବେ",
        "right-noratelimit": "ବିରଳ ସୀମା ଦେଇ ପ୍ରଭାବିତ ହୋଇ ନଥିବା",
-       "right-import": "ବାà¬\95ି à¬\89à¬\87à¬\95ିରà­\81 à¬ªà­\83ଷà­\8dଠାମାନ à¬\86ମଦାନà­\80 କରିବେ",
+       "right-import": "ବାà¬\95ି à¬\89à¬\87à¬\95ିରà­\81 à¬ªà­\83ଷà­\8dଠାମାନ à¬\86ମଦାନି କରିବେ",
        "right-importupload": "ଏକ ଫାଇଲ ଅପଲୋଡ଼ରୁ ଏହି ପୃଷ୍ଠାସବୁ ଆଣିବେ",
        "right-patrol": "ବାକି ମାନଙ୍କ ବଦଳକୁ ଜଗାଯାଇଥିବା ବଦଳ ବୋଲି ଚିହ୍ନିତ କରିବେ",
        "right-autopatrol": "ଜଣକର ଆପଣା ସମ୍ପାଦନାସବୁ ଜଗାଯାଇଅଛି ବୋଲି ଚିହ୍ନିତ ହୋଇଯାଉ",
        "specialpage-empty": "ଏହି ଅନୁରୋଧ ପାଇଁ କିଛି ଫଳାଫଳ ମିଳିଲା ନାହିଁ ।",
        "lonelypages": "ଅନାଥ ପୃଷ୍ଠା ସବୁ",
        "lonelypagestext": "ତଲାଲିଖିତ ପୃଷ୍ଠାମାନ {{SITENAME}}ରେ ଥିବା ବାକି ପୃଷ୍ଠାମାନଙ୍କ ସହ ଯୋଡ଼ାଯାଇନାହିଁ ବା କେବଳ ସେଥିରେ ବ୍ୟବହାର କରାଯାଇନାହିଁ ।",
-       "uncategorizedpages": "ଶà­\8dରà­\87ଣà­\80ହିନ ପୃଷ୍ଠାସମୂହ",
-       "uncategorizedcategories": "ଶà­\8dରà­\87ଣà­\80ହିନ ଶ୍ରେଣୀସମୂହ",
+       "uncategorizedpages": "ଶà­\8dରà­\87ଣà­\80ହà­\80ନ ପୃଷ୍ଠାସମୂହ",
+       "uncategorizedcategories": "ଶà­\8dରà­\87ଣà­\80ହà­\80ନ ଶ୍ରେଣୀସମୂହ",
        "uncategorizedimages": "ଶ୍ରେଣୀହୀନ ଫାଇଲସମୂହ",
-       "uncategorizedtemplates": "ଶà­\8dରà­\87ଣà­\80ହିନ ଛାଞ୍ଚସବୁ",
+       "uncategorizedtemplates": "ଶà­\8dରà­\87ଣà­\80ହà­\80ନ ଛାଞ୍ଚସବୁ",
        "unusedcategories": "ବ୍ୟବହାର ହେଉନଥିବା ଶ୍ରେଣୀସମୂହ",
        "unusedimages": "ବ୍ୟବହାର ହେଉନଥିବା ଫାଇଲସମୂହ",
        "wantedcategories": "ଦରକାରୀ ଶ୍ରେଣୀସମୂହ",
-       "wantedpages": "ଦରà¬\95ାରି ପୃଷ୍ଠା",
+       "wantedpages": "ଦରà¬\95ାରà­\80 ପୃଷ୍ଠା",
        "wantedpages-badtitle": "$1 ଉତ୍ତରସବୁରେ ଥିବା ଭୁଲ ଟାଇଟଲ",
-       "wantedfiles": "ଦରà¬\95ାରି ଫାଇଲ",
+       "wantedfiles": "ଦରà¬\95ାରà­\80 ଫାଇଲ",
        "wantedfiletext-cat": "ନିମ୍ନଲିଖିତ ଫାଇଲଗୁଡିକ ବ୍ୟବହୃତ ହେଇଛି ହଲେ ନାହିଁ । ରହିଥିବା ଫାଇଲ ବଦଳରେ ବାହାରେ ଥିବା ଫାଇଲଗୁଡିକ ତାଲିକାଭୁକ୍ତ ହେଇଛି । ଏହିଭଳି ଭୁଲ ସତ୍ୟଗୁଡିକ <del>struck out</del> ହେଇଯିବ । ଅଧିକନ୍ତୁ, ପ୍ରକୃତରେ ନଥିବା ଫାଇଲଗୁଡିକର ପୃଷ୍ଠାଗୁଡିକ [[:$1]]ରେ ତାଲିକାଭୁକ୍ତ ହୋଇଛି ।",
        "wantedfiletext-cat-noforeign": "ଏହି ଫାଇଲସବୁ ତିଆରି ନ କରାଯାଇ ବ୍ୟବହାର କରାଯାଇଛି । ଏଥି ସହିତ, ତିଆରି ହୋଇନଥିବା ଫାଇଲକୁ ଏମବେଡ଼ କରିଥିବା ପୃଷ୍ଠାସବୁର ତାଲିକା [[:$1]]ରେ ରହିଛି ।",
        "wantedfiletext-nocat": "ନିମ୍ନଲିଖିତ ଫାଇଲଗୁଡିକ ବ୍ୟବହୃତ ହେଇଛି ହଲେ ନାହିଁ । ରହିଥିବା ଫାଇଲ ବଦଳରେ ବାହାରେ ଥିବା ଫାଇଲଗୁଡିକ ତାଲିକାଭୁକ୍ତ ହେଇଛି । ଏହିଭଳି ଭୁଲ ସତ୍ୟଗୁଡିକ <del>struck out</del> ହେଇଯିବ ।",
        "categories": "ଶ୍ରେଣୀସମୂହ",
        "categoriespagetext": "ତଳଲିଖିତ {{PLURAL:$1|ଶ୍ରେଣୀ|ଶ୍ରେଣୀସମୂହ}}ରେ ପୃଷ୍ଠା ବା ମିଡ଼ିଆ ରହିଅଛି ।\n[[Special:UnusedCategories|ବ୍ୟବହାର ହୋଇନଥିବା ଶ୍ରେଣୀସବୁ]] ଦେଖାଯାଇନାହିଁ ।\n[[Special:WantedCategories|ଦରକାରୀ ଶ୍ରେଣୀସମୂହ]] ସବୁ ଦେଖନ୍ତୁ ।",
        "categoriesfrom": "ଏହି ନାମରେ ଆରମ୍ଭ ହେଉଥିବା ଶ୍ରେଣୀଗୁଡ଼ିକୁ ଦେଖାଇବେ:",
-       "special-categories-sort-count": "ଗଣନ କରି ସଜାଇବେ",
-       "special-categories-sort-abc": "ଅକ୍ଷରର କ୍ରମ ଅନୁସାରେ ସଜାଇବେ",
        "deletedcontributions": "ଲିଭାଇ ଦିଆଯାଇଥିବା ସଭ୍ୟଙ୍କ ଅବଦାନ",
        "deletedcontributions-title": "ଲିଭାଇ ଦିଆଯାଇଥିବା ସଭ୍ୟଙ୍କ ଅବଦାନସମୂହ",
        "sp-deletedcontributions-contribs": "ଅବଦାନସମୂହ",
        "import-interwiki-sourcepage": "ମୂଳ ପୃଷ୍ଠା:",
        "import-interwiki-history": "ଏହି ପୃଷ୍ଠା ନିମନ୍ତେ ସବୁଯାକ ସଂସ୍କରଣ ଇତିହାସ ନକଲ କରିନିଅନ୍ତୁ",
        "import-interwiki-templates": "ସବୁଯାକ ଛାଞ୍ଚ ଏହା ଭିତରେ ରଖିବେ",
-       "import-interwiki-submit": "à¬\86ମଦାନà­\80",
+       "import-interwiki-submit": "à¬\86ମଦାନି",
        "import-upload-filename": "ଫାଇଲ ନାମ:",
        "import-comment": "ମତାମତ:",
        "importtext": "[[Special:Export|ରପ୍ତାନି ସୁବିଧା]] ବ୍ୟବହାର କରି ମୂଳ ଉଇକିରୁ ଫାଇଲଟି ରପ୍ତାନି କରନ୍ତୁ ।\nତାହାକୁ ଆପଣା କମ୍ପୁଟରରେ ସାଇତି ଏଠାରେ ଅପଲୋଡ଼ କରନ୍ତୁ ।",
        "importstart": "ପୃଷ୍ଠା ଆମଦାନି କରୁଛୁ...",
        "import-revision-count": "$1 ଗୋଟି {{PLURAL:$1|ସଂସ୍କରଣ|ସଂସ୍କରଣ}}",
        "importnopages": "ଆମଦାନି କରିବା ନିମନ୍ତେ ପୃଷ୍ଠା ନାହିଁ ।",
-       "imported-log-entries": "$1 à¬\97à­\8bà¬\9fି {{PLURAL:$1|à¬\87ତିହାସ|à¬\87ତିହାସ}}ର à¬¨à¬¿à¬¬à­\87ଶ à¬\86ମଦାନà­\80 କରାଗଲା ।",
+       "imported-log-entries": "$1 à¬\97à­\8bà¬\9fି {{PLURAL:$1|à¬\87ତିହାସ|à¬\87ତିହାସ}}ର à¬¨à¬¿à¬¬à­\87ଶ à¬\86ମଦାନି କରାଗଲା ।",
        "importfailed": "ଆମଦାନି ବିଫଳ ହେଲା: <nowiki>$1</nowiki>",
-       "importunknownsource": "à¬\85à¬\9cଣା à¬\86ମଦାନà­\80 à¬®à­\82ଳାଧାର à¬ªà­\8dରà¬\95ାର",
+       "importunknownsource": "à¬\86ମଦାନି à¬®à­\82ଳାଧାର à¬ªà­\8dରà¬\95ାର à¬\85à¬\9cଣା",
        "importcantopen": "ଆହରଣ ଫାଇଲଟି ଖୋଲି ପାରିଲୁ ନାହିଁ",
        "importbadinterwiki": "ଖରାପ ଇଣ୍ଟରଉଇକି ଲିଙ୍କ",
        "importsuccess": "ଆହରଣ ଶେଷ ହେଲା!",
        "redirect-not-exists": "ମୂଳ୍ୟ ମିଳିଲା ନାହିଁ",
        "fileduplicatesearch": "ଏହାର ନକଲ ପୃଷ୍ଠା ଖୋଜିବେ ।",
        "fileduplicatesearch-summary": "ହାସ୍ ମୂଲ୍ୟକୁ ନେଇ ଦୁଇଥର ଥିବା ଫାଇଲ ଖୋଜନ୍ତୁ ।",
-       "fileduplicatesearch-legend": "ନକଲ ପାଇଁ ଖୋଜନ୍ତୁ ।",
        "fileduplicatesearch-filename": "ଫାଇଲ ନାମ:",
        "fileduplicatesearch-submit": "ଖୋଜନ୍ତୁ",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />ଫାଇଲ ପ୍ରକାର: $3<br />MIME ପ୍ରକାର: $4",
index a160c58..9bb2e21 100644 (file)
        "categories": "ਸ਼੍ਰੇਣੀਆਂ",
        "categories-submit": "ਦਿਖਾਓ",
        "categoriesfrom": "ਇਸਤੋਂ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲ਼ੀਆਂ ਕੈਟੇਗਰੀਆਂ ਵਖਾਓ:",
-       "special-categories-sort-count": "ਗਿਣਤੀ ਮੁਤਾਬਕ ਤਰਤੀਬ ਦੇਵੋ",
-       "special-categories-sort-abc": "ਅੱਖਰਾਂ ਮੁਤਾਬਕ ਤਰਤੀਬ ਦਿਓ",
        "deletedcontributions": "ਮਿਟਾਏ ਹੋਏ ਵਰਤੋਂਕਾਰ ਯੋਗਦਾਨ",
        "deletedcontributions-title": "ਮਿਟਾਏ ਹੋਏ ਵਰਤੋਂਕਾਰ ਯੋਗਦਾਨ",
        "sp-deletedcontributions-contribs": "ਯੋਗਦਾਨ",
        "version-software-version": "ਵਰਜਨ",
        "version-entrypoints-header-entrypoint": "ਦਾਖ਼ਲਾ ਬਿੰਦੂ",
        "version-entrypoints-header-url": "ਯੂ.ਆਰ.ਐੱਲ",
-       "redirect-legend": "ਕਿਸੇ ਸਫ਼ੇ ਜਾਂ ਫ਼ਾਈਲ ਵੱਲ ਰੀਡਾਇਰੈਕਟ ਕਰੋ",
        "redirect-submit": "ਜਾਓ",
        "redirect-lookup": "ਲੱਭੋ:",
        "redirect-value": "ਮੁੱਲ:",
        "redirect-file": "ਫ਼ਾਈਲ ਦਾ ਨਾਂ",
        "redirect-not-exists": "ਮੁੱਲ ਲੱਭਿਆ ਨਹੀਂ",
        "fileduplicatesearch": "ਨਕਲੀ ਫ਼ਾਈਲਾਂ ਲਈ ਖੋਜ ਕਰੋ",
-       "fileduplicatesearch-legend": "ਕਿਸੇ ਨਕਲ ਲਈ ਖੋਜੋ",
        "fileduplicatesearch-filename": "ਫ਼ਾਈਲ ਦਾ ਨਾਂ:",
        "fileduplicatesearch-submit": "ਖੋਜ",
        "fileduplicatesearch-noresults": "\"$1\" ਨਾਂ ਦੀ ਕੋਈ ਫ਼ਾਈਲ ਨਹੀਂ ਲੱਭੀ।",
index c9bf45c..6e60056 100644 (file)
        "allpages-bad-ns": "Ing {{SITENAME}} ala lang pirinan lagyung (namespace) \"$1\".",
        "categories": "Kategoriya",
        "categoriespagetext": "Deng tutuking categoria atin lang bulung o media\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
-       "special-categories-sort-count": "surian tukituki agpang keng bilang",
-       "special-categories-sort-abc": "surian lang tukituki agpang keng kulitan",
        "deletedcontributions": "Deng ambag da reng talagamit a mebura",
        "deletedcontributions-title": "Deng ambag da reng talagamit a mebura",
        "linksearch": "Suglung palual",
        "version-software-version": "Bersion",
        "version-libraries-license": "Lisensya",
        "fileduplicatesearch": "Maintun simpan (file) a kapareu",
-       "fileduplicatesearch-legend": "Maintun kapareu",
        "fileduplicatesearch-filename": "Lagyungsimpan (filename):",
        "fileduplicatesearch-submit": "Maintun",
        "fileduplicatesearch-result-1": "Ala yang eksaktung kapareu ing simpan (file) a \"$1\".",
index 4c791e9..23272b7 100644 (file)
@@ -84,7 +84,8 @@
                        "Expert3222",
                        "Mateuszek045",
                        "Sethakill",
-                       "Mateon1"
+                       "Mateon1",
+                       "Jdx"
                ]
        },
        "tog-underline": "Podkreślenie linków:",
        "tog-watchdefault": "Dodawaj do obserwowanych strony i pliki, które edytuję",
        "tog-watchmoves": "Dodawaj do obserwowanych strony i pliki, które przenoszę",
        "tog-watchdeletion": "Dodawaj do obserwowanych strony i pliki, które usuwam",
+       "tog-watchuploads": "Dodawaj do obserwowanych przesyłane przeze mnie nowe pliki",
        "tog-watchrollback": "Dodawaj do obserwowanych strony, w których {{GENDER:|wycofałem|wycofałam}} edycję",
        "tog-minordefault": "Wszystkie edycje domyślnie oznaczaj jako drobne",
        "tog-previewontop": "Pokazuj podgląd powyżej obszaru edycji",
        "noemail": "Brak zdefiniowanego adresu e‐mail dla użytkownika „$1”.",
        "noemailcreate": "Musisz podać prawidłowy adres e‐mail",
        "passwordsent": "Nowe hasło zostało wysłane na adres e‐mail użytkownika „$1”.\nPo otrzymaniu go zaloguj się ponownie.",
-       "blocked-mailpassword": "Twój adres IP został zablokowany i nie możesz używać funkcji odzyskiwania hasła z powodu możliwości jej nadużywania.",
+       "blocked-mailpassword": "Edycja z twojego adresu IP jest zablokowana. Aby zapobiec nadużyciom, dla tego adresu IP funkcja odzyskiwania hasła nie jest możliwa.",
        "eauthentsent": "Potwierdzenie zostało wysłane na adres e‐mail.\nZanim jakiekolwiek inne wiadomości zostaną wysłane na ten adres, należy wykonać zawarte w mailu instrukcje. Potwierdzisz w ten sposób, że ten adres e‐mail należy do Ciebie.",
        "throttled-mailpassword": "Przypomnienie hasła zostało już wysłane w ciągu {{PLURAL:$1|ostatniej godziny|ostatnich $1 godzin}}.\nAby zapobiec nadużyciom nadużyć możliwość wysyłania przypomnień została ograniczona do jednego na {{PLURAL:$1|godzinę|$1 godziny|$1 godzin}}.",
        "mailerror": "W trakcie wysyłania wiadomości e‐mail wystąpił błąd: $1",
        "botpasswords-label-delete": "Usuń",
        "botpasswords-label-resetpassword": "Zresetuj hasło",
        "botpasswords-label-grants": "Zastosowane uprawnienia:",
+       "botpasswords-label-restrictions": "Ograniczenia użytkowania:",
        "botpasswords-label-grants-column": "Przyznane",
        "botpasswords-bad-appid": "Nazwa bota \"$1\" nie jest prawidłowa.",
        "botpasswords-created-title": "Hasło bota stworzone",
        "botpasswords-updated-body": "Hasło bota \"$1\" użytkownika \"$2\" zostało zaktualizowane.",
        "botpasswords-deleted-title": "Hasło bota usunięte",
        "botpasswords-deleted-body": "Hasło bota \"$1\" użytkownika \"$2\" zostało usunięte.",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider nie jest dostępne.",
+       "botpasswords-restriction-failed": "Logowanie nie powiodło się z powodu ograniczeń na hasło bota.",
        "botpasswords-not-exist": "Użytkownik \"$1\" nie ma hasła dla bota o nazwie \"$2\".",
        "resetpass_forbidden": "Hasła nie mogą zostać zmienione",
        "resetpass-no-info": "Musisz być zalogowany, by uzyskać bezpośredni dostęp do tej strony.",
        "recentchangeslinked-page": "Tytuł strony:",
        "recentchangeslinked-to": "Pokaż zmiany nie na stronach linkowanych, a na stronach linkujących do podanej strony",
        "recentchanges-page-added-to-category": "dodano [[:$1]] do kategorii",
-       "recentchanges-page-added-to-category-bundled": "dodano [[:$1]] oraz [[Special:WhatLinksHere/$1|{{PLURAL:$2|jedną stronę|$2 strony|$2 stron}}]] do kategorii",
+       "recentchanges-page-added-to-category-bundled": "dodano [[:$1]] do kategorii, [[Special:WhatLinksHere/$1|ta strona jest zawarta w innych stronach]]",
        "recentchanges-page-removed-from-category": "usunięto [[:$1]] z kategorii",
-       "recentchanges-page-removed-from-category-bundled": "usunięto [[:$1]] oraz [[Special:WhatLinksHere/$1|{{PLURAL:$2|jedną stronę|$2 strony|$2 stron}}]] z kategorii",
+       "recentchanges-page-removed-from-category-bundled": "usunięto [[:$1]] z kategorii, [[Special:WhatLinksHere/$1|ta strona jest zawarta w innych stronach]]",
        "autochange-username": "Automatyczna zmiana MediaWiki",
        "upload": "Prześlij plik",
        "uploadbtn": "Prześlij plik",
        "uploaddisabledtext": "Możliwość przesyłania plików została wyłączona.",
        "php-uploaddisabledtext": "Przesyłanie plików PHP zostało zablokowane. Sprawdź ustawienie „file_uploads”.",
        "uploadscripted": "Plik zawiera kod HTML lub skrypt, który może zostać błędnie zinterpretowany przez przeglądarkę internetową.",
+       "upload-scripted-pi-callback": "Nie można przesłać pliku, zawierającego instrukcję obsługi arkusza stylów XML.",
        "uploaded-script-svg": "Znaleziono element skryptowy „$1” we przesyłanym pliku SVG.",
        "uploaded-hostile-svg": "Znaleziono niebezpieczny kod CSS w przesyłanym pliku SVG.",
        "uploadscriptednamespace": "Ten plik SVG zawiera niedozwoloną przestrzeń nazw '$1'",
        "apisandbox-reset": "Wyczyść",
        "apisandbox-retry": "Ponów próbę",
        "apisandbox-loading": "Ładowanie informacji o module API „$1”…",
+       "apisandbox-load-error": "Wystąpił błąd podczas pobierania informacji dla modułu API „$1”: $2",
        "apisandbox-no-parameters": "Ten moduł API nie posiada parametrów.",
        "apisandbox-helpurls": "Linki pomocy",
        "apisandbox-examples": "Przykłady",
        "apisandbox-results": "Wyniki",
        "apisandbox-sending-request": "Wysyłanie zapytania API…",
        "apisandbox-loading-results": "Pobieranie wyników API...",
+       "apisandbox-results-error": "Wystąpił błąd podczas pobierania odpowiedzi na zapytanie API: $1.",
        "apisandbox-request-url-label": "URL zapytania:",
        "apisandbox-request-time": "Czas przetwarzania zapytania: {{PLURAL:$1|$1 ms}}",
        "apisandbox-results-fixtoken": "Popraw token i wyślij ponownie",
        "categories-submit": "Pokaż",
        "categoriespagetext": "Strona przedstawia {{PLURAL:$1|kategorię zawierającą|listę kategorii zawierających}} strony lub pliki.\n[[Special:UnusedCategories|Nieużywane kategorie]] zostały ukryte.\nZobacz również [[Special:WantedCategories|brakujące kategorie]].",
        "categoriesfrom": "Wyświetl kategorie, zaczynając od:",
-       "special-categories-sort-count": "sortowanie według liczby",
-       "special-categories-sort-abc": "sortowanie alfabetyczne",
        "deletedcontributions": "Usunięty wkład użytkownika",
        "deletedcontributions-title": "Usunięty wkład użytkownika",
        "sp-deletedcontributions-contribs": "wkład",
        "exif-colorspace": "Przestrzeń kolorów",
        "exif-componentsconfiguration": "Znaczenie składowych",
        "exif-compressedbitsperpixel": "Skompresowanych bitów na piksel",
-       "exif-pixelxdimension": "Prawidłowa szerokość obrazu",
-       "exif-pixelydimension": "Prawidłowa wysokość obrazu",
+       "exif-pixelxdimension": "Szerokość obrazu",
+       "exif-pixelydimension": "Wysokość obrazu",
        "exif-usercomment": "Komentarz użytkownika",
        "exif-relatedsoundfile": "Powiązany plik audio",
        "exif-datetimeoriginal": "Data i czas utworzenia oryginału",
        "logentry-protect-protect-cascade": "$1 {{GENDER:$2|zabezpieczył|zabezpieczyła|zabezpieczył(a)}} $3 $4 [kaskadowo]",
        "logentry-protect-modify": "$1 {{GENDER:$2|zmienił|zmieniła|zmienił(a)}} poziom zabezpieczenia dla $3 $4",
        "logentry-protect-modify-cascade": "$1 {{GENDER:$2|zmienił|zmieniła|zmienił(a)}} poziom zabezpieczenia dla $3 $4 [kaskadowo]",
-       "logentry-rights-rights": "$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup ($4 → $5)",
+       "logentry-rights-rights": "$1 {{GENDER:$2|zmienił|zmieniła|zmienił(a)}} przynależność {{GENDER:$3|$3}} do grupy z $4 do $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup",
        "logentry-rights-autopromote": "$1 automatycznie {{GENDER:$2|zmienił|zmieniła}} przynależność ($4 → $5)",
        "logentry-upload-upload": "$1 {{GENDER:$2|przesłał|przesłała}} $3",
        "expand_templates_generate_rawhtml": "Pokaż surowy HTML",
        "expand_templates_preview": "Podgląd",
        "expand_templates_preview_fail_html": "<em>Ponieważ {{SITENAME}} ma włączony surowy kod HTML i zaistniała strata danych z sesji, podgląd jest ukryty jako zabezpieczenie przed atakiem JavaScript.</em>\n\n<strong>Jeśli to jest próba słusznego podglądu, proszę spróbować ponownie.</strong>\nJeśli to nie pomoże – spróbuj [[Special:UserLogout|wylogować się]] i zalogować ponownie, a także upewnij się, że twoja przeglądarka akceptuje ciasteczka z tej witryny.",
+       "expand_templates_input_missing": "Trzeba wpisać jakiś tekst.",
        "pagelanguage": "Zmiana języka strony",
        "pagelang-name": "Strona",
        "pagelang-language": "Język",
        "mw-widgets-titleinput-description-new-page": "strona jeszcze nie istnieje",
        "mw-widgets-titleinput-description-redirect": "przekierowanie do $1",
        "api-error-blacklisted": "Wybierz inny, opisowy tytuł.",
+       "sessionmanager-tie": "Nie można łączyć kilku rodzajów uwierzytelniania dla zapytania: $1.",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "sesje na podstawie cookie",
+       "sessionprovider-nocookies": "Być może cookies są wyłączone. Upewnij się, że masz włączone cookies i zacznij od nowa.",
        "randomrootpage": "Losowa strona (bez podstron)",
        "log-action-filter-block": "Rodzaj blokady:",
        "log-action-filter-delete": "Rodzaj usunięcia:",
        "log-action-filter-delete-restore": "Odtworzenie strony",
        "log-action-filter-delete-event": "Usunięcie wpisu rejestru",
        "log-action-filter-delete-revision": "Usunięcie wersji",
+       "log-action-filter-import-interwiki": "Import transwiki",
+       "log-action-filter-managetags-create": "Utworzenie znacznika",
+       "log-action-filter-managetags-delete": "Usunięcie znacznika",
+       "log-action-filter-managetags-activate": "Aktywacja znacznika",
+       "log-action-filter-managetags-deactivate": "Deaktywacja znacznika",
        "log-action-filter-protect-protect": "Zabezpieczenie",
        "log-action-filter-protect-modify": "Zmiana zabezpieczenia",
        "log-action-filter-protect-unprotect": "Odbezpieczenie",
index c76a11b..f127930 100644 (file)
        "categories": "Categorìe",
        "categoriespagetext": "{{PLURAL:$1|Costa categorìa a conten|Coste categorìe a conten-o}} dle pàgine ò dj'archivi.\n[[Special:UnusedCategories|Le categorìe nen dovrà]] a son pa mostrà ambelessì.\nCh'a bèica ëdcò [[Special:WantedCategories|le categorìe domandà]].",
        "categoriesfrom": "Smon-e le categorìe an partend da:",
-       "special-categories-sort-count": "ordiné për nùmer",
-       "special-categories-sort-abc": "rangé la lista an órdin alfabétich",
        "deletedcontributions": "Modìfiche faite da utent scancelà",
        "deletedcontributions-title": "Modìfiche faite da utent scancelà",
        "sp-deletedcontributions-contribs": "contribussion",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|revision}} amportà",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revision}} amportà da $2",
        "javascripttest": "Preuva ëd JavaScript",
-       "javascripttest-pagetext-noframework": "Costa pàgina a l'é arservà për fé dle preuve JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Strutura ëd preuva pa conossùa «$1».",
        "javascripttest-pagetext-unknownaction": "Assion nen conossùa «$1».",
-       "javascripttest-pagetext-frameworks": "Për piasì, ch'a serna un-a dle struture ëd preuva sì-dapress: $1",
-       "javascripttest-pagetext-skins": "Ch'a serna na pel për fé le preuve:",
        "javascripttest-qunit-intro": "Vëdde [$1 la documentassion dle preuve] dzora a mediawiki.org.",
        "tooltip-pt-userpage": "Soa pàgina utent",
        "tooltip-pt-anonuserpage": "La pàgina utent për l'IP con ël qual chiel a contribuiss",
        "version-libraries-library": "Biblioteca",
        "version-libraries-version": "Version",
        "redirect": "Ridirigiù da archivi, utent, pàgina o ID ëd revision",
-       "redirect-legend": "Ridirige a n'archivi o na pàgina",
        "redirect-summary": "Costa pàgina special a ponta a n'archivi (dàit ël nòm dl'archivi), na pàgina (dàit n'ID ëd revision o n'ID ëd pàgina) o na pàgina d'utent (dàit n'identificativ numérich a l'utent). Usagi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Andé",
        "redirect-lookup": "Arserca:",
        "redirect-not-exists": "Valor nen trovà",
        "fileduplicatesearch": "Arsërca dj'archivi dobi",
        "fileduplicatesearch-summary": "Arsërca dj'archivi dobi a parte dal valor d'ordinament.",
-       "fileduplicatesearch-legend": "Arsërca ëd na dobia",
        "fileduplicatesearch-filename": "Nòm dl'archivi:",
        "fileduplicatesearch-submit": "Arsërca",
        "fileduplicatesearch-info": "$1 × $2 pontin<br />Amzure: $3<br />Sòrt MIME: $4",
index 20dfd63..3ef60e7 100644 (file)
        "categories": "گٹھاں",
        "categoriespagetext": "تھلے {{PLURAL:$1|گٹھ چ|گٹھاں چ}} صفے یا میڈیا۔\n[[Special:UnusedCategories|ناں ورتیاں گٹھاں]] ایتھے نئیں دسے گۓ۔\nایہ وی ویکھو [[Special:WantedCategories|چائیدیاں گٹھاں]]",
        "categoriesfrom": "گٹھاں وکھاؤ جیہڑیاں شروع ہون:",
-       "special-categories-sort-count": "گنتی سعاب نال وکھریاں کرو",
-       "special-categories-sort-abc": "ا ب دے سعاب نال ونڈو",
        "deletedcontributions": "ورتن والے دے کم مٹادتے گۓ۔",
        "deletedcontributions-title": "ورتن والے دے کم مٹادتے گۓ۔",
        "sp-deletedcontributions-contribs": " کم",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|ریوین|ریویناں}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|ریوین|ریویناں }} $2 توں",
        "javascripttest": "JavaScript ٹیسٹنگ",
-       "javascripttest-pagetext-noframework": "ایہ صفہ JavaScript  ٹیسٹاں لئی بچایا گیا اے۔",
-       "javascripttest-pagetext-unknownframework": "\"$1\" انجانا ٹیسٹنگ فریمورک۔",
-       "javascripttest-pagetext-frameworks": "مہربانی کرکے تھلے دتے گۓ ٹیسٹ فریمورکاں چوں اک چنو : $1",
-       "javascripttest-pagetext-skins": "اپنی پسند دا کوئی نمونہ چنو جیدے تے ٹیسٹ چلن:",
        "javascripttest-qunit-intro": "mediawiki.org تے [$1 ٹسٹنگ ڈوکومنٹیشن] ویکھو۔",
        "tooltip-pt-userpage": "میرا صفہ",
        "tooltip-pt-anonuserpage": "ورتن صفہ IP  پتے لئی تسی تبدیل کر رۓ او۔۔۔",
        "version-software-version": "ورژن",
        "fileduplicatesearch": "دوہری فائلاں دی کھوج کرو",
        "fileduplicatesearch-summary": "دوہریاں فائلاں دی کھوج ہیش ویلیو تے اے۔",
-       "fileduplicatesearch-legend": "دوہری  دی کھوج کرو۔",
        "fileduplicatesearch-filename": "فائل دا ناں",
        "fileduplicatesearch-submit": "کھوج",
        "fileduplicatesearch-info": "$1 × $2 پکسل<br />فائل ناپ: $3<br />مائم ٹائپ: $4",
index cb2a061..698cbc1 100644 (file)
        "allpages-bad-ns": "En {{SITENAME}} ni ast tītelin plattibi \"$1\".",
        "categories": "Kategōrijas",
        "categoriesfrom": "Waidinnais kategōrijans pagaūnintins sen:",
-       "special-categories-sort-count": "rikaūjais pa gīrbin",
-       "special-categories-sort-abc": "rikaūjais pa alfabētan",
        "deletedcontributions": "Aupausintā tērpautajas ēndija",
        "deletedcontributions-title": "Aupausintā tērpautajas ēndija",
        "sp-deletedcontributions-contribs": "ēndija",
        "version-software-version": "Wersiōni",
        "fileduplicatesearch": "Laukīs dwigubbintans zūrbrukins",
        "fileduplicatesearch-summary": "Laukīs dwigubbintans zūrbrukins pa tenēisan kōntrōlingin summin.",
-       "fileduplicatesearch-legend": "Laukīs dwigubbintans zūrbrukins",
        "fileduplicatesearch-filename": "Zūrbrukes pabilisnā:",
        "fileduplicatesearch-submit": "Laukīs",
        "fileduplicatesearch-info": "$1 × $2 pikselai<br />Zūrbrukis debban: $3<br />MIME tīps: $4",
index 228af6c..8e677db 100644 (file)
        "categories-submit": "ښکاره کول",
        "categoriespagetext": "دا لاندينۍ {{PLURAL:$1|وېشنيزه|وېشنيزې}} مخونه يا رسنيزې دوتنې لري.\nدلته [[Special:UnusedCategories|ناکارېدلې وېشنيزې]] نه دي ښکاره شوي.\n[[Special:WantedCategories|غوښتلې وېشنيزې]] هم وگورۍ.",
        "categoriesfrom": "هغه وېشنيزې کتل چې پېلېږي په:",
-       "special-categories-sort-count": "د شمېر له مخې اوډل",
-       "special-categories-sort-abc": "د ابېڅو له مخې اوډل",
        "deletedcontributions": "ړنگېدلې کارن ونډې",
        "deletedcontributions-title": "ړنگېدلې کارن ونډې",
        "sp-deletedcontributions-contribs": "ونډې",
        "redirect-logid": "پېژند يادښت",
        "redirect-not-exists": "ارزښت و نه موندل شو",
        "fileduplicatesearch": "د دوه گونو دوتنو پلټنه",
-       "fileduplicatesearch-legend": "د دوه گونو دوتنو پلټنه",
        "fileduplicatesearch-filename": "د دوتنې نوم:",
        "fileduplicatesearch-submit": "پلټل",
        "fileduplicatesearch-info": "<span dir=\"ltr\">$1 × $2</span> پېکسل<br />د دوتنې کچه: $3<br />ډول MIME: $4",
index 456e111..6000918 100644 (file)
        "nstab-user": "Página d{{GENDER:{{BASEPAGENAME}}|o usuário|a usuária|e usuário(a)}}",
        "nstab-media": "Página de mídia",
        "nstab-special": "Página especial",
-       "nstab-project": "Página de projeto",
+       "nstab-project": "Página do projeto",
        "nstab-image": "Arquivo",
        "nstab-mediawiki": "Mensagem",
        "nstab-template": "Predefinição",
        "categories-submit": "Exibir",
        "categoriespagetext": "{{PLURAL:$1|A seguinte categoria contém|As seguintes contém}} páginas ou mídia.\n[[Special:UnusedCategories|Categorias não utilizadas]] não são mostradas aqui.\nVeja também [[Special:WantedCategories|categorias pedidas]].",
        "categoriesfrom": "Listar categorias começando por:",
-       "special-categories-sort-count": "ordenar por contagem",
-       "special-categories-sort-abc": "ordenar alfabeticamente",
        "deletedcontributions": "Edições eliminadas",
        "deletedcontributions-title": "Contribuições eliminadas",
        "sp-deletedcontributions-contribs": "contribuições",
index eb05ee9..66a5bb5 100644 (file)
@@ -87,6 +87,7 @@
        "tog-watchdefault": "Adicionar as páginas e ficheiros que eu editar às minhas páginas vigiadas",
        "tog-watchmoves": "Adicionar as páginas e ficheiros que eu mover às minhas páginas vigiadas",
        "tog-watchdeletion": "Adicionar as páginas e ficheiros que eu eliminar às minhas páginas vigiadas",
+       "tog-watchuploads": "Adicionar novos ficheiros carregados por mim à minha lista de artigos vigiados",
        "tog-watchrollback": "Adicionar páginas onde fiz uma reversão às minhas páginas vigiadas",
        "tog-minordefault": "Por omissão, marcar todas as edições como menores",
        "tog-previewontop": "Mostrar a antevisão antes da caixa de edição",
        "nstab-user": "Página d{{GENDER:{{BASEPAGENAME}}|o utilizador|a utilizadora|e utilizador(a)}}",
        "nstab-media": "Multimédia",
        "nstab-special": "Página especial",
-       "nstab-project": "Página de projeto",
+       "nstab-project": "Página do projeto",
        "nstab-image": "Ficheiro",
        "nstab-mediawiki": "Mensagem",
        "nstab-template": "Predefinição",
        "recentchangeslinked-page": "Nome da página:",
        "recentchangeslinked-to": "Inversamente, mostrar mudanças às páginas que contêm ligações para esta",
        "recentchanges-page-added-to-category": "[[:$1]] foi adicionada à categoria",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|uma outra página|$2 outras páginas}}]] foram adicionadas à categoria",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] adicionada à categoria; [[Special:WhatLinksHere/$1|esta página está incluída noutras]]",
        "recentchanges-page-removed-from-category": "[[:$1]] foi removida da categoria",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|uma outra página|$2 outras páginas}}]] foram removidas da categoria",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] removida da categoria; [[Special:WhatLinksHere/$1|esta página está incluída noutras]]",
        "autochange-username": "Alteração automática do MediaWiki",
        "upload": "Carregar ficheiro",
        "uploadbtn": "Carregar ficheiro",
        "apisandbox-results": "Resultados",
        "apisandbox-request-url-label": "URL do pedido:",
        "apisandbox-request-time": "Tempo de processamento: {{PLURAL:$1|$1 ms}}",
+       "apisandbox-alert-field": "O valor deste campo não é válido.",
        "booksources": "Fontes bibliográficas",
        "booksources-search-legend": "Pesquisar referências bibliográficas",
        "booksources-search": "Pesquisar",
        "categories-submit": "Mostrar",
        "categoriespagetext": "{{PLURAL:$1|A seguinte categoria contém páginas ou ficheiros multimédia|As seguintes categorias contêm páginas ou ficheiros multimédia}}.\nAs [[Special:UnusedCategories|categorias não utilizadas]] não são apresentadas nesta lista.\nVeja também as [[Special:WantedCategories|categorias desejadas]].",
        "categoriesfrom": "Mostrar categorias que comecem por:",
-       "special-categories-sort-count": "ordenar por contagem",
-       "special-categories-sort-abc": "ordenar alfabeticamente",
        "deletedcontributions": "Edições eliminadas",
        "deletedcontributions-title": "Edições eliminadas",
        "sp-deletedcontributions-contribs": "contribuições",
        "changecontentmodel-submit": "Alterar",
        "changecontentmodel-success-title": "O modelo de conteúdo foi alterado",
        "changecontentmodel-success-text": "O tipo de conteúdo de [[:$1]] foi alterado.",
+       "changecontentmodel-cannot-convert": "O conteúdo em [[:$1]] não pode ser convertido para um tipo de $2.",
+       "changecontentmodel-nodirectediting": "O modelo de conteúdo $1 não suporta edição direta",
+       "log-name-contentmodel": "Registo de alteração de modelo de conteúdo",
+       "log-description-contentmodel": "Eventos relacionados com os modelos de conteúdo de uma página",
+       "logentry-contentmodel-new": "$1 {{GENDER:$2|criou}} a página $3 com o modelo de conteúdo desconhecido \"$5\"",
+       "logentry-contentmodel-change": "$1 {{GENDER:$2|alterou}} o modelo de conteúdo da página $3 de \"$4\" para \"$5\"",
        "logentry-contentmodel-change-revertlink": "reverter",
        "logentry-contentmodel-change-revert": "reverter",
        "protectlogpage": "Registo de proteção",
        "ipb-unblock": "Desbloquear um utilizador ou endereço IP",
        "ipb-blocklist": "Ver bloqueios em vigência",
        "ipb-blocklist-contribs": "Contribuições de {{GENDER:$1|$1}}",
+       "ipb-blocklist-duration-left": "resta $1",
        "unblockip": "Desbloquear utilizador",
        "unblockiptext": "Utilize o formulário abaixo para restaurar o acesso de escrita de um endereço IP ou utilizador previamente bloqueado.",
        "ipusubmit": "Remover este bloqueio",
        "exif-colorspace": "Espaço de cores",
        "exif-componentsconfiguration": "Significado de cada componente",
        "exif-compressedbitsperpixel": "Modo de compressão da imagem",
-       "exif-pixelxdimension": "Largura válida da imagem",
-       "exif-pixelydimension": "Altura válida da imagem",
+       "exif-pixelxdimension": "Largura da imagem",
+       "exif-pixelydimension": "Altura da imagem",
        "exif-usercomment": "Comentários de utilizadores",
        "exif-relatedsoundfile": "Ficheiro áudio relacionado",
        "exif-datetimeoriginal": "Data e hora de geração de dados",
        "watchlistedit-raw-done": "A sua lista de páginas vigiadas foi atualizada.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Foi adicionada uma página|Foram adicionadas $1 páginas}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Foi removida uma página|Foram removidas $1 páginas}}:",
-       "watchlistedit-clear-title": "Lista de páginas vigiadas limpa",
+       "watchlistedit-clear-title": "Limpar lista de páginas vigiadas",
        "watchlistedit-clear-legend": "Limpar lista de páginas vigiadas",
        "watchlistedit-clear-explain": "Todos os títulos serão removidos da sua lista de páginas vigiadas.",
        "watchlistedit-clear-titles": "Páginas:",
        "logentry-protect-protect-cascade": "$1 {{GENDER:$2|protegeu}} $3 $4 [em cascata]",
        "logentry-protect-modify": "$1 {{GENDER:$2|alterou}} o nível de proteção para $3 $4",
        "logentry-protect-modify-cascade": "$1 {{GENDER:$2|alterou}} o nível de proteção para $3 $4 [em cascata]",
-       "logentry-rights-rights": "$1 modificou os privilégios do utilizador $3 de $4 para $5",
+       "logentry-rights-rights": "$1 {{GENDER:$2|modificou}} os privilégios {{GENDER:$3|do utilizador $3|da utilizadora $3|do(a) utilizador(a) $3}} de $4 para $5",
        "logentry-rights-rights-legacy": "$1 alterou os grupos de $3",
        "logentry-rights-autopromote": "$1 foi automaticamente {{GENDER:$2|promovido|promovida}} de $4 a $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|carregou}} $3",
        "logentry-managetags-activate": "$1 {{GENDER:$2|ativou}} a etiqueta \"$4\" para uso de utilizadores e robôs.",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|desativou}} a etiqueta \"$4\" para uso de utilizadores e robôs.",
        "log-name-tag": "Registo de etiquetas",
+       "log-description-tag": "Esta página mostra utilizadores adicionam ou removem [[Special:Tags|etiquetas]] a partir de revisões individuais ou entradas de registo. O registo não lista ações relacionadas com as etiquetas quando estas ocorrem como parte de uma edição, eliminação ou ação semelhante.",
        "logentry-tag-update-add-revision": "$1 {{GENDER:$2|adicionou}} {{PLURAL:$7|a etiqueta|as etiquetas}} $6 à revisão $4 da página $3",
        "logentry-tag-update-add-logentry": "$1 {{GENDER:$2|adicionou}} {{PLURAL:$7|a etiqueta|as etiquetas}} $6 à entrada de registo $5 da página $3",
        "logentry-tag-update-remove-revision": "$1 {{GENDER:$2|removeu}} {{PLURAL:$9|a etiqueta|as etiquetas}} $8 da revisão $4 da página $3",
        "api-error-unknownerror": "Erro desconhecido: \"$1\".",
        "api-error-uploaddisabled": "Esta wiki não está configurada para poder receber ficheiros.",
        "api-error-verification-error": "Este ficheiro pode estar corrompido, ou ter a extensão errada.",
+       "api-error-was-deleted": "Um ficheiro com este nome foi carregado anteriormente e posteriormente eliminado.",
        "duration-seconds": "$1 {{PLURAL:$1|segundo|segundos}}",
        "duration-minutes": "$1 {{PLURAL:$1|minuto|minutos}}",
        "duration-hours": "$1 {{PLURAL:$1|hora|horas}}",
        "sessionprovider-nocookies": "Os cookies podem estar desativados. Certifique-se de que os cookies estão ativados e inicie novamente.",
        "randomrootpage": "Página raiz aleatória",
        "log-action-filter-block": "Tipo de bloqueio:",
+       "log-action-filter-contentmodel": "Tipo de alteração de modelo de conteúdo:",
        "log-action-filter-delete": "Tipo de eliminação:",
+       "log-action-filter-import": "Tipo de importação:",
+       "log-action-filter-managetags": "Tipo de ação de gestão de etiqueta:",
+       "log-action-filter-move": "Tipo do movimento:",
+       "log-action-filter-newusers": "Tipo de criação de conta:",
        "log-action-filter-patrol": "Tipo de patrulha:",
        "log-action-filter-protect": "Tipo de proteção:",
+       "log-action-filter-rights": "Tipo de alteração de privilégio",
+       "log-action-filter-suppress": "Tipo de supressão",
        "log-action-filter-upload": "Tipo de carregamento:",
        "log-action-filter-all": "Todas",
        "log-action-filter-block-block": "Bloquear",
        "log-action-filter-block-reblock": "Alteração de bloqueio",
        "log-action-filter-block-unblock": "Desbloquear",
+       "log-action-filter-contentmodel-change": "Edição de modelo de conteúdo",
+       "log-action-filter-contentmodel-new": "Criação de página com modelo de conteúdo desconhecido",
        "log-action-filter-delete-delete": "Eliminação de página",
        "log-action-filter-delete-restore": "Restauro de página",
        "log-action-filter-delete-event": "Eliminação de registo",
        "log-action-filter-delete-revision": "Eliminação de revisão",
+       "log-action-filter-import-interwiki": "Importação de transwiki",
+       "log-action-filter-import-upload": "Importação por carregamento XML",
+       "log-action-filter-managetags-create": "Criação de etiqueta",
+       "log-action-filter-managetags-delete": "Eliminação de etiqueta",
+       "log-action-filter-managetags-activate": "Ativação de etiqueta",
+       "log-action-filter-managetags-deactivate": "Desativação de etiqueta",
+       "log-action-filter-newusers-create": "Criação por utilizador anónimo",
+       "log-action-filter-newusers-create2": "Criação por utilizador registado",
+       "log-action-filter-newusers-autocreate": "Criação automática",
+       "log-action-filter-newusers-byemail": "Criação com palavra-passe enviada por correio eletrónico",
        "log-action-filter-patrol-patrol": "Patrulha manual",
        "log-action-filter-patrol-autopatrol": "Patrulha automática",
        "log-action-filter-protect-protect": "Proteção",
        "log-action-filter-protect-modify": "Alteração da proteção",
        "log-action-filter-protect-unprotect": "Desproteção",
+       "log-action-filter-protect-move_prot": "Proteção de movimentos",
+       "log-action-filter-rights-rights": "Alteração manual",
+       "log-action-filter-rights-autopromote": "Alteração automática",
+       "log-action-filter-suppress-event": "Supressão de registo",
+       "log-action-filter-suppress-delete": "Supressão de página",
        "log-action-filter-upload-upload": "Novo carregamento",
        "log-action-filter-upload-overwrite": "Recarregar"
 }
index 71dc9b7..ee3bd1e 100644 (file)
                        "Ciencia Al Poder",
                        "Aursani",
                        "Robin van der Vliet",
-                       "Conquistador"
+                       "Conquistador",
+                       "Frigory"
                ]
        },
        "sidebar": "{{notranslate}}",
        "tog-watchdefault": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add edited pages to watchlist. {{Gender}}",
        "tog-watchmoves": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add moved pages to watchlist. {{Gender}}",
        "tog-watchdeletion": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add deleted pages to watchlist. {{Gender}}",
+       "tog-watchuploads": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add their uploaded files to watchlist. {{Gender}}",
        "tog-watchrollback": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add pages where the user has rollbacked an edit to watchlist. {{Gender}}\n\nSee also {{msg-mw|tog-watchdefault}}, {{msg-mw|tog-watchcreations}}.",
        "tog-minordefault": "[[Special:Preferences]], tab 'Edit'. Offers user to mark all edits minor by default.  {{Gender}}",
        "tog-previewontop": "Toggle option used in [[Special:Preferences]]. {{Gender}}",
        "category-article-count-limited": "This message is displayed at the top of a category page showing the number of pages in the category when not all pages in a category are counted.\n\nParameters:\n* $1 - number of pages shown",
        "category-file-count": "This message is displayed at the top of a category page showing the number of pages in the category.\n\nParameters:\n* $1 – number of files shown\n* $2 – total number of files in category",
        "category-file-count-limited": "This message is displayed at the top of a category page showing the number of pages in the category when not all pages in a category are counted.\n\nParameters:\n* $1 - number of files shown",
-       "listingcontinuesabbrev": "Shown in contiuation of each first letter group. This message follows the first letter.\n\nSee http://test.wikipedia.org/wiki/Category:Test_ko?uselang={{SUBPAGENAME}}, for example.",
+       "listingcontinuesabbrev": "Shown in continuation of each first letter group. This message follows the first letter.\n\nSee http://test.wikipedia.org/wiki/Category:Test_ko?uselang={{SUBPAGENAME}}, for example.",
        "index-category": "Name of the [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages with the <nowiki>__INDEX__</nowiki> behavior switch are listed.\n\nFor description of this behavior switch see [[mw:Special:MyLanguage/Help:Magic_words#Behavior_switches|MediaWiki]].\n\nSee also:\n* {{msg-mw|Index-category-desc}}",
        "noindex-category": "Name of the [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages with the <nowiki>__NOINDEX__</nowiki> behavior switch are listed.\n\nFor description of this behavior switch see [[mw:Special:MyLanguage/Help:Magic_words#Behavior_switches|MediaWiki]].\n\nSee also:\n* {{msg-mw|Noindex-category-desc}}",
        "broken-file-category": "Name of [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages that embed files that do not exist (\"broken images\") are listed.\n\nSee also:\n* {{msg-mw|Broken-file-category-desc}}",
        "recentchangeslinked-page": "{{Identical|Page name}}",
        "recentchangeslinked-to": "Checkbox in [[Special:RecentChangesLinked]].",
        "recentchanges-page-added-to-category": "Comment message for pages added to a category\n\nParameters:\n* $1 - name of the page being added",
-       "recentchanges-page-added-to-category-bundled": "Comment message for template embedded by other pages added to a category\n\nParameters:\n* $1 - name of the page being added\n* $2 - number of additional pages being affected",
+       "recentchanges-page-added-to-category-bundled": "Comment message for template embedded by other pages added to a category\n\nParameters:\n* $1 - name of the page being added",
        "recentchanges-page-removed-from-category": "Comment message for pages removed from a category\n\nParameters:\n* $1 - name of the page being removed",
-       "recentchanges-page-removed-from-category-bundled": "Comment message for templates embeddedby other pages removed from a category\n\nParameters:\n* $1 - name of the page being added\n* $2 - number of additional pages being affected",
+       "recentchanges-page-removed-from-category-bundled": "Comment message for templates embedded by other pages removed from a category\n\nParameters:\n* $1 - name of the page being added",
        "autochange-username": "Used as bot / unknown username.",
        "upload": "Display name for link to [[Special:Upload]] for uploading files to the wiki.\n\nSee also:\n* {{msg-mw|Upload}}\n* {{msg-mw|Accesskey-t-upload}}\n* {{msg-mw|Tooltip-t-upload}}\n{{Identical|Upload file}}",
        "uploadbtn": "Button name in [[Special:Upload]].\n\nSee also:\n* {{msg-mw|Uploadbtn}}\n* {{msg-mw|Accesskey-upload}}\n* {{msg-mw|Tooltip-upload}}\n{{Identical|Upload file}}",
        "categories-submit": "Submit button on [[Special:Categories]]\n{{Identical|Show}}",
        "categoriespagetext": "{{doc-important|Do not translate or change links.}}\nText displayed in [[Special:Categories]].\n\nIn order to translate \"Unused categories\" and \"wanted categories\" see {{msg-mw|Unusedcategories}} and {{msg-mw|Wantedcategories}}.\n\nParameters:\n* $1 - number of categories",
        "categoriesfrom": "Used as label for the input box in [[Special:Categories]].\n\nThis message follows the fieldset label {{msg-mw|categories}}, and is followed by the input box.",
-       "special-categories-sort-count": "Commented out at this time.\n\nThis message is used on [[Special:Categories]] to sort the list by the number of members in the categories.\n\nSee also:\n* {{msg-mw|Special-categories-sort-abc}}",
-       "special-categories-sort-abc": "Commented out at this time.\n\nThis message is used on [[Special:Categories]] to sort the list by the category name.\n\nSee also:\n* {{msg-mw|Special-categories-sort-count}}\n{{Identical|Sort alphabetically}}",
        "deletedcontributions": "The message is shown as a link on [[Special:SpecialPages]] to [[Special:DeletedContributions]].\n\n{{Identical|Deleted user contributions}}",
        "deletedcontributions-summary": "{{doc-specialpagesummary|deletedcontributions}}",
        "deletedcontributions-title": "Title of [[Special:DeletedContributions]] (extension), a special page with a list of edits to pages which were deleted. Only viewable by sysops.\n\n{{Identical|Deleted user contributions}}",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "Description of the sessions provided by the CookieSessionProvider class, which use HTTP cookies. Should be phrased to make sense when added to a message such as {{msg-mw|cannotloginnow-text}}.",
        "sessionprovider-nocookies": "Used to inform the user that sessions may be missing due to lack of cookies.",
        "randomrootpage": "{{doc-special|RandomRootPage}}",
-       "log-action-filter-block": "Which type of action to filter for in this log",
-       "log-action-filter-contentmodel": "Which type of action to filter for in this log",
-       "log-action-filter-delete": "Which type of action to filter for in this log",
-       "log-action-filter-import": "Which type of action to filter for in this log",
-       "log-action-filter-managetags": "Which type of action to filter for in this log",
-       "log-action-filter-move": "Which type of action to filter for in this log",
-       "log-action-filter-newusers": "Which type of action to filter for in this log",
-       "log-action-filter-patrol": "Which type of action to filter for in this log",
-       "log-action-filter-protect": "Which type of action to filter for in this log",
-       "log-action-filter-rights": "Which type of action to filter for in this log",
-       "log-action-filter-suppress": "Which type of action to filter for in this log",
-       "log-action-filter-upload": "Which type of action to filter for in this log",
-       "log-action-filter-all": "All types of action are allowed\n{{Identical|All}}",
-       "log-action-filter-block-block": "Action to filter for in this log\n{{Identical|Block}}",
-       "log-action-filter-block-reblock": "Action to filter for in this log",
-       "log-action-filter-block-unblock": "Action to filter for in this log\n{{Identical|Unblock}}",
-       "log-action-filter-contentmodel-change": "Action to filter for in this log",
-       "log-action-filter-contentmodel-new": "Action to filter for in this log",
-       "log-action-filter-delete-delete": "Action to filter for in this log",
-       "log-action-filter-delete-restore": "Action to filter for in this log",
-       "log-action-filter-delete-event": "Action to filter for in this log",
-       "log-action-filter-delete-revision": "Action to filter for in this log",
-       "log-action-filter-import-interwiki": "Action to filter for in this log",
-       "log-action-filter-import-upload": "Action to filter for in this log",
-       "log-action-filter-managetags-create": "Action to filter for in this log",
-       "log-action-filter-managetags-delete": "Action to filter for in this log",
-       "log-action-filter-managetags-activate": "Action to filter for in this log",
-       "log-action-filter-managetags-deactivate": "Action to filter for in this log",
-       "log-action-filter-move-move": "Action to filter for in this log",
-       "log-action-filter-move-move_redir": "Action to filter for in this log",
-       "log-action-filter-newusers-create": "Action to filter for in this log",
-       "log-action-filter-newusers-create2": "Action to filter for in this log",
-       "log-action-filter-newusers-autocreate": "Action to filter for in this log",
-       "log-action-filter-newusers-byemail": "Action to filter for in this log",
-       "log-action-filter-patrol-patrol": "Action to filter for in this log",
-       "log-action-filter-patrol-autopatrol": "Action to filter for in this log",
-       "log-action-filter-protect-protect": "Action to filter for in this log",
-       "log-action-filter-protect-modify": "Action to filter for in this log",
-       "log-action-filter-protect-unprotect": "Action to filter for in this log",
-       "log-action-filter-protect-move_prot": "Action to filter for in this log",
-       "log-action-filter-rights-rights": "Action to filter for in this log",
-       "log-action-filter-rights-autopromote": "Action to filter for in this log",
-       "log-action-filter-suppress-event": "Action to filter for in this log",
-       "log-action-filter-suppress-revision": "Action to filter for in this log",
-       "log-action-filter-suppress-delete": "Action to filter for in this log",
-       "log-action-filter-suppress-block": "Action to filter for in this log",
-       "log-action-filter-suppress-reblock": "Action to filter for in this log",
-       "log-action-filter-upload-upload": "Action to filter for in this log",
-       "log-action-filter-upload-overwrite": "Action to filter for in this log"
+       "log-action-filter-block": "{{doc-log-action-filter-type|block}}",
+       "log-action-filter-contentmodel": "{{doc-log-action-filter-type|contentmodel}}",
+       "log-action-filter-delete": "{{doc-log-action-filter-type|delete}}",
+       "log-action-filter-import": "{{doc-log-action-filter-type|import}}",
+       "log-action-filter-managetags": "{{doc-log-action-filter-type|managetags}}",
+       "log-action-filter-move": "{{doc-log-action-filter-type|move}}",
+       "log-action-filter-newusers": "{{doc-log-action-filter-type|newusers}}",
+       "log-action-filter-patrol": "{{doc-log-action-filter-type|patrol}}",
+       "log-action-filter-protect": "{{doc-log-action-filter-type|protect}}",
+       "log-action-filter-rights": "{{doc-log-action-filter-type|rights}}",
+       "log-action-filter-suppress": "{{doc-log-action-filter-type|suppress}}",
+       "log-action-filter-upload": "{{doc-log-action-filter-type|upload}}",
+       "log-action-filter-all": "{{doc-log-action-filter-type|all}}\n{{Identical|All}}",
+       "log-action-filter-block-block": "{{doc-log-action-filter-action|block|block}}\n{{Identical|Block}}",
+       "log-action-filter-block-reblock": "{{doc-log-action-filter-action|block|reblock}}",
+       "log-action-filter-block-unblock": "{{doc-log-action-filter-action|block|unblock}}\n{{Identical|Unblock}}",
+       "log-action-filter-contentmodel-change": "{{doc-log-action-filter-action|contentmodel|change}}",
+       "log-action-filter-contentmodel-new": "{{doc-log-action-filter-action|contentmodel|new}}",
+       "log-action-filter-delete-delete": "{{doc-log-action-filter-action|delete|delete}}",
+       "log-action-filter-delete-restore": "{{doc-log-action-filter-action|delete|restore}}",
+       "log-action-filter-delete-event": "{{doc-log-action-filter-action|delete|event}}",
+       "log-action-filter-delete-revision": "{{doc-log-action-filter-action|delete|revision}}",
+       "log-action-filter-import-interwiki": "{{doc-log-action-filter-action|import|interwiki}}",
+       "log-action-filter-import-upload": "{{doc-log-action-filter-action|import|upload}}",
+       "log-action-filter-managetags-create": "{{doc-log-action-filter-action|managetags|create}}",
+       "log-action-filter-managetags-delete": "{{doc-log-action-filter-action|managetags|delete}}",
+       "log-action-filter-managetags-activate": "{{doc-log-action-filter-action|managetags|activate}}",
+       "log-action-filter-managetags-deactivate": "{{doc-log-action-filter-action|managetags|deactivate}}",
+       "log-action-filter-move-move": "{{doc-log-action-filter-action|move|move}}",
+       "log-action-filter-move-move_redir": "{{doc-log-action-filter-action|move|move_redir}}",
+       "log-action-filter-newusers-create": "{{doc-log-action-filter-action|newusers|create}}",
+       "log-action-filter-newusers-create2": "{{doc-log-action-filter-action|newusers|create2}}",
+       "log-action-filter-newusers-autocreate": "{{doc-log-action-filter-action|newusers|autocreate}}",
+       "log-action-filter-newusers-byemail": "{{doc-log-action-filter-action|newusers|byemail}}",
+       "log-action-filter-patrol-patrol": "{{doc-log-action-filter-action|patrol|patrol}}",
+       "log-action-filter-patrol-autopatrol": "{{doc-log-action-filter-action|patrol|autopatrol}}",
+       "log-action-filter-protect-protect": "{{doc-log-action-filter-action|protect|protect}}",
+       "log-action-filter-protect-modify": "{{doc-log-action-filter-action|protect|modify}}",
+       "log-action-filter-protect-unprotect": "{{doc-log-action-filter-action|protect|unprotect}}",
+       "log-action-filter-protect-move_prot": "{{doc-log-action-filter-action|protect|move_prot}}",
+       "log-action-filter-rights-rights": "{{doc-log-action-filter-action|rights|rights}}",
+       "log-action-filter-rights-autopromote": "{{doc-log-action-filter-action|rights|autopromote}}",
+       "log-action-filter-suppress-event": "{{doc-log-action-filter-action|suppress|event}}",
+       "log-action-filter-suppress-revision": "{{doc-log-action-filter-action|suppress|revision}}",
+       "log-action-filter-suppress-delete": "{{doc-log-action-filter-action|suppress|delete}}",
+       "log-action-filter-suppress-block": "{{doc-log-action-filter-action|suppress|block}}",
+       "log-action-filter-suppress-reblock": "{{doc-log-action-filter-action|suppress|reblock}}",
+       "log-action-filter-upload-upload": "{{doc-log-action-filter-action|upload|upload}}",
+       "log-action-filter-upload-overwrite": "{{doc-log-action-filter-action|upload|overwrite}}"
 }
index 66dd008..65d39e5 100644 (file)
        "categories": "Katiguriyakuna",
        "categoriespagetext": "Kay qatiq {{PLURAL:$1|katiguriyaqa|katiguriyakunaqa}} p'anqayuqmi icha midyayuqmi.\n[[Special:UnusedCategories|Ch'usaq katiguriyakunataqa]] kaypi manam rikunkichu.\n[[Special:WantedCategories|Muchusqa katiguriyakunatapas]] qhaway.",
        "categoriesfrom": "Katiguriyakunata rikuchiy kaywan qallarispa:",
-       "special-categories-sort-count": "yupaykama allichay",
-       "special-categories-sort-abc": "qallarina sanampakama allichay",
        "deletedcontributions": "Qullusqa ruraqpa hukchasqankuna",
        "deletedcontributions-title": "Qullusqa ruraqpa hukchasqankuna",
        "sp-deletedcontributions-contribs": "llamk'apusqakuna",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|hukchasqa|hukchasqakuna}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|hukchasqa|hukchasqakuna}} $2-manta",
        "javascripttest": "JavaScript llanchiy",
-       "javascripttest-pagetext-noframework": "Kay p'anqaqa JavaScript llanchina purichinallapaqmi kachun.",
-       "javascripttest-pagetext-unknownframework": "Mana riqsisqa \"$1\" nisqa llanchina inchu ruray",
-       "javascripttest-pagetext-frameworks": "Ama hina kaspa, kay qatiq llanchina inchu ruraykunamanta hukta akllay: $1",
-       "javascripttest-pagetext-skins": "Qarata akllay llanchiykunata paywan purichinaykipaq:",
        "javascripttest-qunit-intro": "Qhaway [$1 llanchina yachachinapi], mediawiki.org nisqapi kaq.",
        "tooltip-pt-userpage": "Qampa ruraqpa p'anqayki",
        "tooltip-pt-anonuserpage": "IP huchhaykipaq ruraqpa p'anqan",
        "version-entrypoints-header-entrypoint": "Yaykuna t'uksi",
        "version-entrypoints-header-url": "URL tiyay",
        "redirect": "Willañiqikama, ruraqkama icha musuqchay ID-kama pusapuy",
-       "redirect-legend": "Willañiqiman icha p'anqaman pusapuy",
        "redirect-submit": "Riy",
        "redirect-lookup": "Maskay:",
        "redirect-value": "Chani:",
        "redirect-not-exists": "Chaniqa manam tarisqachu",
        "fileduplicatesearch": "Iskaychasqa willañiqikunata maskay",
        "fileduplicatesearch-summary": "Iskaychasqa willañiqikunata maskay ''hash'' chaninpi tiksispa.",
-       "fileduplicatesearch-legend": "Iskaychasqata maskay",
        "fileduplicatesearch-filename": "Willañiqip sutin:",
        "fileduplicatesearch-submit": "Maskay",
        "fileduplicatesearch-info": "$1 × $2 iñu<br />Willañiqip chhikan kaynin: $3<br />MIME laya: $4",
index 4b379a4..73f33af 100644 (file)
        "categories": "Categorias",
        "categoriespagetext": "{{PLURAL:$1|Suandanta categoria cuntegna|Suandantas categorias cuntegnan}} paginas u multimedia.\n[[Special:UnusedCategories|Categorias betg utilisadas]] na vegnan betg mussadas qua.\nGuarda era las [[Special:WantedCategories|categorias giavischadas]].",
        "categoriesfrom": "Mussar las categorias davent da:",
-       "special-categories-sort-count": "zavrar tenor dumber",
-       "special-categories-sort-abc": "zavrar alfabeticamain",
        "deletedcontributions": "Contribuziuns d'utilisaders stidadas",
        "deletedcontributions-title": "Contribuziuns dad utilisaders stizzadas",
        "sp-deletedcontributions-contribs": "contribuziuns",
        "import-logentry-upload-detail": "{{PLURAL:$1|Ina versiun|$1 versiuns}}",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|Ina versiun|$1 versiuns}} da $2",
        "javascripttest": "Test da JavaScript",
-       "javascripttest-pagetext-noframework": "Questa pagina è reservada per exequir tests da JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Framework da test nunenconuschent \"$1\".",
-       "javascripttest-pagetext-frameworks": "Tscherna per plaschair in dals suandantas frameworks da test: $1",
-       "javascripttest-pagetext-skins": "Tscherna in skin che duai vegnir utilisà per ils tests:",
        "javascripttest-qunit-intro": "Legia la [$1 documentaziun da tests] sin mediawiki.org.",
        "tooltip-pt-userpage": "Mussar tia pagina d'utilisader",
        "tooltip-pt-anonuserpage": "La pagina d'utilisader per l'adressa IP cun la quala che ti fas modificaziuns",
        "version-entrypoints-header-url": "URL",
        "fileduplicatesearch": "Tschertgar datotecas dublas",
        "fileduplicatesearch-summary": "Tschertgar datotecas dublas a basa da valurs da hash.",
-       "fileduplicatesearch-legend": "Tschertgar duplicats",
        "fileduplicatesearch-filename": "Num da datoteca:",
        "fileduplicatesearch-submit": "Tschertgar",
        "fileduplicatesearch-info": "$1 x $2 pixels<br />Grondezza da datoteca: $3<br />Tip da MIME: $4",
index 7390ae8..af03e7f 100644 (file)
        "botpasswords": "Parole roboți",
        "botpasswords-summary": "<em>Parolele de roboți</em> permit accesul la un cont de utilizator prin intermediul API-ului fără utilizarea identificatorilor de conectare principali ai contului. Este posibil ca drepturile de utilizator disponibile după conectarea cu parole de roboți să fie restricționate.\n\nDacă nu știți exact de ce ați recurge la această metodă, probabil ar trebui să nu o faceți. Nimeni nu ar trebui să vă ceară vreodată să generați acest tip de parolă și să le-o furnizați.",
        "botpasswords-disabled": "Parolele de roboți sunt dezactivate.",
+       "botpasswords-no-central-id": "Pentru a folosi parole pentru roboți, trebuie să fiți logat într-un cont centralizat.",
        "botpasswords-existing": "Parole de robot existente",
        "botpasswords-label-appid": "Numele robotului:",
        "botpasswords-label-create": "Creare",
        "categories-submit": "Afișează",
        "categoriespagetext": "{{PLURAL:$1|Următoarea categorie conține|Următoarele categorii conțin}} pagini sau fișiere.\n[[Special:UnusedCategories|Categoriile neutilizate]] nu apar aici.\nVedeți și [[Special:WantedCategories|categoriile dorite]].",
        "categoriesfrom": "Arată categoriile pornind de la:",
-       "special-categories-sort-count": "ordonează după număr",
-       "special-categories-sort-abc": "sortează alfabetic",
        "deletedcontributions": "Contribuții șterse",
        "deletedcontributions-title": "Contribuții șterse",
        "sp-deletedcontributions-contribs": "contribuții",
        "redirect-not-exists": "Valoarea nu a fot găsită",
        "fileduplicatesearch": "Căutare fișiere duplicate",
        "fileduplicatesearch-summary": "Căutarea fișierelor duplicate bazată pe valorile hash.",
-       "fileduplicatesearch-legend": "Căutare duplicat",
        "fileduplicatesearch-filename": "Nume fișier:",
        "fileduplicatesearch-submit": "Caută",
        "fileduplicatesearch-info": "$1 × $2 pixeli<br />Mărime fișier: $3<br />Tip MIME: $4",
        "sessionprovider-generic": "sesiuni $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sesiuni pe bază de module cookie.",
        "sessionprovider-nocookies": "Modulele cookie par dezactivate. Asigurați-vă că ați activat modulele cookie și începeți din nou.",
-       "randomrootpage": "Pagină-rădăcină aleatorie"
+       "randomrootpage": "Pagină-rădăcină aleatorie",
+       "log-action-filter-block": "Tip de blocare:",
+       "log-action-filter-contentmodel": "Tip de modificare a modelului de conținut:",
+       "log-action-filter-delete": "Tip de ștergere:",
+       "log-action-filter-import": "Tip de import:",
+       "log-action-filter-move": "Tip de mutare:",
+       "log-action-filter-newusers": "Tip de creare de cont:",
+       "log-action-filter-patrol": "Tip de patrulare:",
+       "log-action-filter-protect": "Tip de protecție:",
+       "log-action-filter-rights": "Tip de schimbare de drepturi",
+       "log-action-filter-upload": "Tip de încărcare:",
+       "log-action-filter-all": "Toate",
+       "log-action-filter-block-block": "Blocare",
+       "log-action-filter-block-reblock": "Modificare a unei blocări",
+       "log-action-filter-block-unblock": "Deblocare",
+       "log-action-filter-delete-delete": "Ștergere a paginii",
+       "log-action-filter-delete-restore": "Recuperare a paginii",
+       "log-action-filter-delete-event": "Ștergere a logului",
+       "log-action-filter-delete-revision": "Ștergere a reviziei",
+       "log-action-filter-import-interwiki": "Import transwiki",
+       "log-action-filter-import-upload": "Import prin încărcare de XML",
+       "log-action-filter-managetags-create": "Creare tag",
+       "log-action-filter-managetags-delete": "Ștergere tag",
+       "log-action-filter-managetags-activate": "Activare tag",
+       "log-action-filter-managetags-deactivate": "Dezactivare tag",
+       "log-action-filter-patrol-patrol": "Patrulă manuală",
+       "log-action-filter-patrol-autopatrol": "Patrulă automată",
+       "log-action-filter-protect-protect": "Protecție",
+       "log-action-filter-protect-modify": "Modificarea protecției",
+       "log-action-filter-protect-unprotect": "Deprotejare",
+       "log-action-filter-protect-move_prot": "Mutarea protecției",
+       "log-action-filter-rights-rights": "Modificare manuală",
+       "log-action-filter-rights-autopromote": "Schimbare automată",
+       "log-action-filter-upload-upload": "Încărcare nouă",
+       "log-action-filter-upload-overwrite": "Reîncărcare"
 }
index c575d07..f9515d4 100644 (file)
        "recentchangeslinked-page": "Nome d'a vôsce:",
        "recentchangeslinked-to": "Fa vedè le cangiaminde de le pàggene colleghete a 'na certa pàgene",
        "recentchanges-page-added-to-category": "[[:$1]] aggiunde a categorije",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] luate da 'a categorije, [[Special:WhatLinksHere/$1|sta vôsce ste sckaffate jndr'à otre pàggene]]",
        "upload": "Careche 'u file",
        "uploadbtn": "Careche 'nu fail",
        "reuploaddesc": "Scangille 'u carecamende e tuerne a 'a schermete de le carecaminde",
        "categories": "Le Categorije",
        "categoriespagetext": "{{PLURAL:$1|'A seguende categorije tène|Le seguende categorije tènene}} pàggene o media.\n[[Special:UnusedCategories|Categorije non ausate]] non ge se vèdene aqquà.\nVide pure [[Special:WantedCategories|Categorije cercate]].",
        "categoriesfrom": "Fà vedè le categorije partenne da:",
-       "special-categories-sort-count": "ordere pe condegge",
-       "special-categories-sort-abc": "ordere alfabbeticamende",
        "deletedcontributions": "Condrebbute de l'utende scangellete",
        "deletedcontributions-title": "Condrebbute de l'utende scangellate",
        "sp-deletedcontributions-contribs": "condrebbute",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|revisione|revisiune}} 'mbortate",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisione|revisiune}} 'mbortate da $2",
        "javascripttest": "Test de JavaScript",
-       "javascripttest-pagetext-noframework": "Sta pàgene jè riservate pe le esecuziune de le test de Javascript.",
-       "javascripttest-pagetext-unknownframework": "Ambiende de teste scanusciute \"$1\".",
        "javascripttest-pagetext-unknownaction": "Aziona scanusciute \"$1\"",
-       "javascripttest-pagetext-frameworks": "Pe piacere scacchie une de le seguende ambiende de test: $1",
-       "javascripttest-pagetext-skins": "Scacchie 'n'aspette pe eseguì le test cu:",
        "javascripttest-qunit-intro": "Vide 'a [$1 documendazione d'u test] sus a mediawiki.org.",
        "tooltip-pt-userpage": "'A pàgene utende meje",
        "tooltip-pt-anonuserpage": "'A pàgene utende pe l'IP ca tu ste cange cumme",
        "version-libraries-description": "Descrizione",
        "version-libraries-authors": "Auture",
        "redirect": "Redirette da 'u file, utende o ID d'a revisione",
-       "redirect-legend": "Redirette a 'nu file o 'na pàgene",
        "redirect-summary": "Sta pàgena speciale redirezione a 'nu file (date 'u nome d'u file), 'na pàgene (date 'n'ID de revisione), o 'na pàgene utende (date 'n'ID numeriche de l'utende). Ause: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Véje",
        "redirect-lookup": "Mappature:",
        "redirect-not-exists": "Valore non acchiate",
        "fileduplicatesearch": "Cirche pe le file duplichete",
        "fileduplicatesearch-summary": "Cirche pe file duplichete sus a base d'u valore hash.",
-       "fileduplicatesearch-legend": "Cirche pe 'nu duplichete",
        "fileduplicatesearch-filename": "Nome d'u faile:",
        "fileduplicatesearch-submit": "Cirche",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />Dimenzione d'u file: $3<br />Tipe de MIME: $4",
index a689b5e..012ee84 100644 (file)
@@ -88,7 +88,9 @@
                        "Краснорядцева Елена",
                        "Frhdkazan",
                        "Ядерный Трамвай",
-                       "Исмаил Садуев"
+                       "Исмаил Садуев",
+                       "Lemondoge",
+                       "SamGold"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "tog-watchdefault": "Добавлять в список наблюдения изменённые мной страницы и описания файлов",
        "tog-watchmoves": "Добавлять в список наблюдения переименованные мной страницы и файлы",
        "tog-watchdeletion": "Добавлять в список наблюдения удалённые мной страницы и файлы",
+       "tog-watchuploads": "Добавлять закачанные мною файлы в список наблюдения",
        "tog-watchrollback": "Добавлять страницы, где я выполнил откат, в мой список наблюдения",
        "tog-minordefault": "Помечать по умолчанию правки как малозначимые",
        "tog-previewontop": "Помещать предпросмотр перед окном редактирования",
        "site-atom-feed": "$1 — Atom-лента",
        "page-rss-feed": "«$1» — RSS-лента",
        "page-atom-feed": "«$1» — Atom-лента",
+       "feed-atom": "Атом",
        "red-link-title": "$1 (страница не существует)",
        "sort-descending": "Упорядочить по убыванию",
        "sort-ascending": "Упорядочить по возрастанию",
        "recentchangeslinked-page": "Название страницы:",
        "recentchangeslinked-to": "Наоборот, показать изменения на страницах, которые ссылаются на указанную страницу",
        "recentchanges-page-added-to-category": "[[:$1]] добавлена в категорию",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] Ð¸ [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|Ñ\81Ñ\82Ñ\80аниÑ\86а|Ñ\81Ñ\82Ñ\80аниÑ\86\81Ñ\82Ñ\80аниÑ\86Ñ\8b}}]] Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ\8b Ð² ÐºÐ°Ñ\82егоÑ\80иÑ\8e",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° Ð² ÐºÐ°Ñ\82егоÑ\80иÑ\8e, [[Special:WhatLinksHere/$1|Ñ\8dÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а Ð²ÐºÐ»Ñ\8eÑ\87ена Ð² Ð´Ñ\80Ñ\83гие Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b]]",
        "recentchanges-page-removed-from-category": "[[:$1]] убрана из категории",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] и [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|страница|страниц|страницы}}]] удалены из категории",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] удалена из категории, [[Special:WhatLinksHere/$1|эта страница включена в другие страницы]]",
        "autochange-username": "Автоматическое изменение MediaWiki",
        "upload": "Загрузить файл",
        "uploadbtn": "Загрузить файл",
        "shared-repo-from": "из $1",
        "shared-repo": "общего хранилища",
        "shared-repo-name-wikimediacommons": "Викисклада",
+       "filepage.css": "/* CSS и помещены сюда входит на странице описания файла, также на зарубежного заказчика Вики */",
        "upload-disallowed-here": "Вы не можете перезаписать этот файл.",
        "filerevert": "Возврат к старой версии $1",
        "filerevert-legend": "Возвратить версию файла",
        "categories-submit": "Показать",
        "categoriespagetext": "{{PLURAL:$1|1=Следующая категория содержит|Следующие категории содержат}} страницы или медиафайлы.\nЗдесь не показаны [[Special:UnusedCategories|неиспользуемые категории]].\nСм. также [[Special:WantedCategories|список требуемых категорий]].",
        "categoriesfrom": "Показать категории, начинающиеся с:",
-       "special-categories-sort-count": "упорядочить по количеству",
-       "special-categories-sort-abc": "упорядочить по алфавиту",
        "deletedcontributions": "Удалённый вклад участника",
        "deletedcontributions-title": "Удалённый вклад",
        "sp-deletedcontributions-contribs": "вклад",
        "print.css": "/* Размещённый здесь CSS будет применяться к версии для печати */",
        "noscript.css": "/* Размещённый здесь CSS будет применяться для участников с отключенным JavaScript  */",
        "group-autoconfirmed.css": "/* Размещённый здесь CSS будет применяться для автоподтверждённых участников */",
+       "group-user.css": "/* CSS для размещен здесь затронут только для зарегистрированных пользователей */",
        "group-bot.css": "/* Размещённый здесь CSS будет применяться только для ботов */",
        "group-sysop.css": "/* Размещённый здесь CSS будет применяться только для администраторов */",
        "group-bureaucrat.css": "/* Размещённый здесь CSS будет применяться только для бюрократов */",
        "common.js": "/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */",
        "group-autoconfirmed.js": "/* Размещённый здесь код JavaScript будет загружаться только участникам, имеющим статус автоподтверждённых (autoconfirmed) */",
+       "group-user.js": "/* Здесь любой JavaScript будет загружаться только для зарегистрированных пользователей */",
        "group-bot.js": "/* Размещённый здесь код JavaScript будет загружаться только участникам, имеющим статус ботов (bots) */",
        "group-sysop.js": "/* Размещённый здесь код JavaScript будет загружаться только участникам, имеющим статус администраторов (sysops) */",
        "group-bureaucrat.js": "/* Размещённый здесь код JavaScript будет загружаться только участникам, имеющим статус бюрократов (bureaucrats) */",
        "sunday-at": "в воскресенье в $1",
        "yesterday-at": "Вчера в $1",
        "bad_image_list": "Формат должен быть следующим:\n\nБудут учитываться только элементы списка (строки, начинающиеся на символ *).\nПервая ссылка строки должна быть ссылкой на запрещённое для вставки изображение.\nПоследующие ссылки в той же строке будут рассматриваться как исключения, то есть статьи, куда изображение может быть включено.",
+       "variantname-zh-hans": "его",
        "metadata": "Метаданные",
        "metadata-help": "Файл содержит дополнительные данные, обычно добавляемые цифровыми камерами или сканерами. Если файл после создания редактировался, то некоторые параметры могут не соответствовать текущему изображению.",
        "metadata-expand": "Показать дополнительные данные",
        "exif-copyrighted-true": "Охраняется авторским правом",
        "exif-copyrighted-false": "Авторско-правовой статус не задан",
        "exif-photometricinterpretation-1": "Чёрный и белый (чёрный — 0)",
+       "exif-photometricinterpretation-4": "Маска прозрачности",
+       "exif-photometricinterpretation-5": "Разделены (видимо в CMYK)",
        "exif-unknowndate": "Неизвестная дата",
        "exif-orientation-1": "Нормальная",
        "exif-orientation-2": "Отражено по горизонтали",
        "confirmemail_body_set": "Кто-то (возможно вы) с IP-адресом $1\nуказал данный адрес электронной почты для учётной записи «$2» в проекте «{{SITENAME}}».\n\nЧтобы подтвердить, что эта учётная запись действительно принадлежит вам,\nи включить возможность отправки писем с сайта «{{SITENAME}}», откройте в браузере приведённую ниже ссылку:\n\n$3\n\nЕсли данная учётная запись *не* относится к вам, то перейдите по следующей ссылке,\nчтобы отменить подтверждение адреса электронной почты:\n\n$5\n\nКод подтверждения действителен до $4.",
        "confirmemail_invalidated": "Подтверждение адреса электронной почты отменено.",
        "invalidateemail": "Отмена подтверждения адреса электронной почты",
+       "notificationemail_subject_changed": "{{SITENAME}} зарегистрированный адрес электронной почты был изменен",
        "scarytranscludedisabled": "[Интервики-включение отключено]",
        "scarytranscludefailed": "[Ошибка обращения к шаблону $1]",
        "scarytranscludefailed-httpstatus": "[Не удалось загрузить шаблон для $1: HTTP $2]",
        "randomrootpage": "Случайная корневая страница",
        "log-action-filter-block": "Тип блокировки:",
        "log-action-filter-delete": "Тип удаления:",
+       "log-action-filter-import": "Тип импорта:",
+       "log-action-filter-managetags": "Тип тега управленческих действий:",
+       "log-action-filter-move": "Тип переименования:",
+       "log-action-filter-newusers": "Тип создания учётной записи:",
        "log-action-filter-patrol": "Тип патрулирования:",
        "log-action-filter-protect": "Тип защиты:",
+       "log-action-filter-rights": "Тип изменения прав",
+       "log-action-filter-suppress": "Тип сокрытия",
        "log-action-filter-upload": "Тип загрузки:",
        "log-action-filter-all": "Все",
        "log-action-filter-block-block": "Блокировка",
        "log-action-filter-block-reblock": "Изменение блокировки",
        "log-action-filter-block-unblock": "Разблокировка",
+       "log-action-filter-contentmodel-change": "Изменение модели содержимого",
        "log-action-filter-delete-delete": "Удаления страницы",
        "log-action-filter-delete-restore": "Восстановление страницы",
        "log-action-filter-delete-event": "Удаление журнала",
        "log-action-filter-delete-revision": "Удаление версии",
+       "log-action-filter-managetags-deactivate": "Отключение тега",
+       "log-action-filter-move-move": "Двигаться без перезаписи переадресаций",
+       "log-action-filter-move-move_redir": "Переместить с заменой переадресаций",
+       "log-action-filter-newusers-create": "Создание анонимным участником",
+       "log-action-filter-newusers-create2": "Создание зарегистрированным участником",
+       "log-action-filter-newusers-autocreate": "Автоматическое создание",
        "log-action-filter-patrol-patrol": "Ручное патрулирование",
        "log-action-filter-patrol-autopatrol": "Автоматическое патрулирование",
        "log-action-filter-protect-protect": "Защита",
        "log-action-filter-protect-modify": "Изменение защиты",
        "log-action-filter-protect-unprotect": "Снятие защиты",
+       "log-action-filter-rights-rights": "Ручное изменение",
+       "log-action-filter-rights-autopromote": "Автоматическое изменение",
+       "log-action-filter-suppress-revision": "Сокрытие версии",
+       "log-action-filter-suppress-delete": "Сокрытие страницы",
        "log-action-filter-upload-upload": "Новая загрузка",
        "log-action-filter-upload-overwrite": "Повторно загрузить"
 }
index a0ea840..60b2992 100644 (file)
        "categories": "Катеґорії",
        "categoriespagetext": "{{PLURAL:$1|Наслїдуюча катеґорія|Наслїдуючі катеґорії}} {{PLURAL:$1|обсягує|обсягують}} сторінкы або файлы.\nНевказаны суть то [[Special:UnusedCategories|нехоснованы катеґорії]].\nПосмотьте ся тыж на [[Special:WantedCategories|жаданы катеґорії]].",
        "categoriesfrom": "Вказати сторінкы, што ся зачінають на:",
-       "special-categories-sort-count": "упорядковати за кількостёв",
-       "special-categories-sort-abc": "упорядковати за алфавітом",
        "deletedcontributions": "Вымазаны приспевкы хоснователя",
        "deletedcontributions-title": "Вымазаны приспевкы хоснователя",
        "sp-deletedcontributions-contribs": "приспевкы",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|ревізія|ревізії|ревізій}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|ревізія|ревізії|ревізій}} з $2",
        "javascripttest": "Тестованя JavaScript",
-       "javascripttest-pagetext-noframework": "Тота сторінка є резервована про тестованя JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Незнаный фреймворк тестованя „$1“.",
-       "javascripttest-pagetext-frameworks": "Просиме, звольте єден з наступных фреймворків тестованя : $1",
-       "javascripttest-pagetext-skins": "Звольте взгляд під котрым ся мають тесты спустити:",
        "javascripttest-qunit-intro": "Смотьте [$1 документацію тестованя] на mediawiki.org",
        "tooltip-pt-userpage": "Ваша сторінка хоснователя",
        "tooltip-pt-anonuserpage": "Сторінка хоснователя про IP-адресу, з котрой едітуєте",
        "version-entrypoints-header-entrypoint": "Вступный пункт",
        "version-entrypoints-header-url": "URL",
        "redirect": "Напрямлїня за файлом, хоснователям або ID ревізії",
-       "redirect-legend": "Напрямити на файл або сторінку",
        "redirect-summary": "Тота шпеціална сторінка напрямує на файл (по назві), сторінку (по ID ревізії) або хоснователя (по чіселнім хоснователёвім ID).",
        "redirect-submit": "Перейти",
        "redirect-lookup": "Найти:",
        "redirect-not-exists": "Значіня ся не нашло",
        "fileduplicatesearch": "Гляданя дуплікатных файлів",
        "fileduplicatesearch-summary": "Гляданя дупліцітных файлів ся базує на їх геш функції.",
-       "fileduplicatesearch-legend": "Гляданя дуплікатів",
        "fileduplicatesearch-filename": "Назва файлу:",
        "fileduplicatesearch-submit": "Глядати",
        "fileduplicatesearch-info": "$1 × $2 пікселів<br />Розмір файлу: $3<br />MIME-тіп: $4",
index da4e81f..52c19c7 100644 (file)
        "listfiles_search_for": "माध्यमनामधेयार्थम् अन्विषतु ।",
        "listfiles-userdoesnotexist": "\"$1\" इत्यषा सदस्यलेखा पञ्जीकृता नास्ति ।",
        "imgfile": "संचिका",
-       "listfiles": "सञ्चिकावली ।",
+       "listfiles": "सञ्चिकावली",
        "listfiles_thumb": "अंगुष्ठनखाकारम् ।",
        "listfiles_date": "दिनाङ्क",
        "listfiles_name": "नाम",
        "categories": "वर्गाः",
        "categoriespagetext": "निम्नोक्ताः {{PLURAL:$1|श्रेणी|श्रेणयः}} पुटानि माध्यमान् वा युक्ताः ।\nयस्याः श्रेण्याः [[Special:UnusedCategories|अप्रयुक्तश्रेण्यः]] अत्र न सन्ति ।\n[[Special:WantedCategories|अपेक्षितश्रेण्यः]] अपि पश्यतु ।",
        "categoriesfrom": "इत्यस्मात् आरभ्यमाणानि पृष्ठानि दर्श्यन्ताम्:",
-       "special-categories-sort-count": "गणनानुगुणं वर्गीकरोतु ।",
-       "special-categories-sort-abc": "अकारदिक्रमेण वर्गीकरोतु ।",
        "deletedcontributions": "अपमर्जितानि योजकयोगदानानि ।",
        "deletedcontributions-title": "अपमर्जितानि योजकयोगदानानि ।",
        "sp-deletedcontributions-contribs": "योगदानानि ।",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|संस्करणस्य|संस्करणानाम्}} आयातः अभवत्",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|संस्करणस्य|संस्करणानाम्}} आयातः अभवत् $2",
        "javascripttest": "जावालिपिपरीक्षणम् ।",
-       "javascripttest-pagetext-noframework": "जावलिपिचालनपरीक्षार्थम् एतत्पुटम् आरक्षितम् ।",
-       "javascripttest-pagetext-unknownframework": "अज्ञातपरीक्षाप्रक्रिया  $1",
        "javascripttest-pagetext-unknownaction": "\"$1\" अज्ञातक्रिया ।",
-       "javascripttest-pagetext-frameworks": "अधो दत्तेषु कञ्चिदेकां परीक्षाप्रक्रियां चिनोतु : $1",
-       "javascripttest-pagetext-skins": "अनेन सह परीक्षां सञ्चालयितुं  काचित् त्वक् चिनोतु ।",
        "javascripttest-qunit-intro": "mediawiki.org. [$1 अभिलेखपरीक्षा] इत्यत्र पश्यतु ।",
        "tooltip-pt-userpage": "{{GENDER:|भवतः/भवत्याः सदस्यपृष्ठम्}}",
        "tooltip-pt-anonuserpage": "ऐपिसङ्केतार्थं योजकपुटं भवान् सम्पादयति एवम्..",
        "version-libraries-library": "ग्रन्थालयः",
        "version-libraries-version": "संस्करणम्",
        "redirect": "सञ्चिका-सदस्य-पृष्ठेभ्यः उत संस्करणात् पुनर्निर्दिष्टम्",
-       "redirect-legend": "सञ्चिकायाः, पृष्ठात् वा पुनर्निर्दिष्टम्",
        "redirect-summary": "एतत् विशिष्टपृष्ठं सञ्चिकां (सञ्चिकायाः नाम प्रदत्तम्) प्रति पुनर्निर्दिष्टम् अस्ति । पृष्ठं (अभिज्ञापकस्य संस्करणम् उत पृष्ठाभिज्ञापकं प्रदत्तम्), उत सदस्यपृष्ठम् (सङ्ख्यात्मकं सदस्याभिज्ञापकं प्रदत्तम्) । उपयोगः : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], उत [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "गम्यताम्",
        "redirect-lookup": "अन्विष्याम् :",
        "redirect-not-exists": "मूल्यं न प्राप्तम्",
        "fileduplicatesearch": "प्रतिकृतिसञ्चिकार्थम् अन्विषतु ।",
        "fileduplicatesearch-summary": "सम्मिश्रमौल्यामूलयुतर्थं  प्रतिकृतिसञ्चिकार्थम् अन्विषतु ।",
-       "fileduplicatesearch-legend": "प्रतिकृत्यर्थम् अन्विषतु ।",
        "fileduplicatesearch-filename": "सञ्चिकानाम:",
        "fileduplicatesearch-submit": "अन्वेषणम्",
        "fileduplicatesearch-info": "$1 × $2 पिक्सेलानि, संचिकायाः आकारः: $3, MIME-प्रकारः: $4",
index 9fd097f..6a155bb 100644 (file)
        "categories-submit": "Көрдөр",
        "categoriespagetext": "Бу {{PLURAL:$1|категория иһигэр|категориялар истэригэр}} сирэйдэр эбэтэр медиа-билэлэр бааллар.\n[[Special:UnusedCategories|Туттуллубат категориялар]] манна көстүбэттэр.\nӨссө маны көр: [[Special:WantedCategories|Баар буолуохтаах категориялар тиһиктэрэ]].",
        "categoriesfrom": "Мантан саҕаланар категориялары көрдөр:",
-       "special-categories-sort-count": "ахсаанынан бэрээдэктээһин",
-       "special-categories-sort-abc": "алпабыытынан бэрээдэктээһин",
        "deletedcontributions": "Сотуллубут көннөрүү",
        "deletedcontributions-title": "Сотуллубут көннөрүү",
        "sp-deletedcontributions-contribs": "киллэриитэ (суруйуута)",
        "redirect-not-exists": "Суолта көстүбэтэ",
        "fileduplicatesearch": "Хос билэлэри көрдөөһүн",
        "fileduplicatesearch-summary": "Тэҥ билэлэри хэш-куодтарынан көрдөөһүн.",
-       "fileduplicatesearch-legend": "Хатылааһыннары көрдөөһүн",
        "fileduplicatesearch-filename": "Билэ аата:",
        "fileduplicatesearch-submit": "Бул",
        "fileduplicatesearch-info": "$1 × $2 пииксэл<br />Билэ кээмэйэ: $3<br />MIME-тиип: $4",
index fae4d99..b50b5b1 100644 (file)
        "categories": "Catigurìi",
        "categoriespagetext": "{{PLURAL:$1|La catigurìa ccassutta cunteni|Li catigurìi ccassutta cuntèninu}} pàggini o file multimidiali.\nLi [[Special:UnusedCategories|catigurìi vacanti]] nun sunnu ammustrati ccà.\nTalìa macari li [[Special:WantedCategories|catigurìi addumannati]].",
        "categoriesfrom": "Ammustra li catigurìi a pàrtiri di:",
-       "special-categories-sort-count": "òrdina pi cuntiggiu",
-       "special-categories-sort-abc": "ordina alfabbeticamenti",
        "deletedcontributions": "Cuntribbuti di l'utenti cancillati",
        "deletedcontributions-title": "Cuntribbuti di l'utenti cancillati",
        "sp-deletedcontributions-contribs": "cuntribbuti",
        "import-logentry-upload-detail": "{{PLURAL:$1|na virsioni mpurtata|$1 virsioni mpurtati}}",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|na virsioni mpurtata|$1 virsioni mpurtati}} di $2",
        "javascripttest": "Virìfichi JavaScript",
-       "javascripttest-pagetext-noframework": "Sta pàggina è risirvata pi l'esicuzzioni dî virìfichi JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Framework di virìfica \"$1\" scanusciutu.",
        "javascripttest-pagetext-unknownaction": "Azzioni scanusciuta \"$1\".",
-       "javascripttest-pagetext-frameworks": "Pi favuri scegghi unu dî framework siguenti di virìfica: $1",
-       "javascripttest-pagetext-skins": "Scegghi na peddi câ quali esiguiri li virìfichi:",
        "javascripttest-qunit-intro": "Talìa [$1 la ducumintazzioni a prupositu dî virìfichi] supra a mediawiki.org.",
        "tooltip-pt-userpage": "La tò pàggina utenti",
        "tooltip-pt-anonuserpage": "La pàggina utenti di stu ndirizzu IP",
        "version-libraries-description": "Discrizzioni",
        "version-libraries-authors": "Autura",
        "redirect": "Rimannu pi nomu di file o còdici di utenti, di pàggina o di virsioni",
-       "redirect-legend": "Rimannari a nu file o na pàggina",
        "redirect-summary": "Sta pàggina spiciali rimanna a nu file (datu lu nomu dû file), a na pàggina (datu n'ID di virsioni o n'ID di pàggina), o puru â pàggina di n'utenti (datu n'ID nummèricu d'utenti). Esempî d'usu: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Vai",
        "redirect-lookup": "Arricerca:",
        "redirect-not-exists": "Valuri nun attruvatu",
        "fileduplicatesearch": "Arricerca dê file duppiuni",
        "fileduplicatesearch-summary": "Circata di pussìbbili dupppiuni dû file 'n basi ô valuri di ''hash''.",
-       "fileduplicatesearch-legend": "Circata di nu duppiuni",
        "fileduplicatesearch-filename": "Nomu dû file:",
        "fileduplicatesearch-submit": "Circata",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />Diminzioni: $3<br />Tipu MIME: $4",
index b22fa63..4b69dfe 100644 (file)
        "categories": "Categeries",
        "categoriespagetext": "The follaein {{PLURAL:$1|categerie contains|categeries contain}} pages or media.\n[[Special:UnusedCategories|Onuised categeries]] arna shawn here.\nSee [[Special:WantedCategories|wanted categeries]] ava.",
        "categoriesfrom": "Displey categeries stairtin at:",
-       "special-categories-sort-count": "sairt bi coont",
-       "special-categories-sort-abc": "sairt bi the alphabet",
        "deletedcontributions": "Delytit uiser contreebutions",
        "deletedcontributions-title": "Delytit uiser contreebutions",
        "sp-deletedcontributions-contribs": "contreebutions",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|reveesion|reveesions}} importit",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|reveesion|reveesions}} importit fae $2",
        "javascripttest": "JavaScript testin",
-       "javascripttest-pagetext-noframework": "This page is reserved fer rinnin JavaScript tests.",
-       "javascripttest-pagetext-unknownframework": "Onkent testin framewairk \"$1\".",
-       "javascripttest-pagetext-frameworks": "Please chuise yin o the follaein testin framewairks: $1",
-       "javascripttest-pagetext-skins": "Chuise ae skin tae rin the tests wi:",
        "javascripttest-qunit-intro": "See [$1 testin documentation] oan mediawiki.org.",
        "tooltip-pt-userpage": "Yer uiser page",
        "tooltip-pt-anonuserpage": "The uiser page fer the IP address that ye'r eeditin aes",
        "version-entrypoints-header-entrypoint": "Entrie point",
        "version-entrypoints-header-url": "URL",
        "redirect": "Reguidal bi file, uiser, page or reveesion ID",
-       "redirect-legend": "Reguidal til ae file or page",
        "redirect-summary": "This byordiair page reguides til ae file (gien the file name), ae page (gien ae reveesion ID or page ID), or ae uiser page (gien ae numereec uiser ID). Uissage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/reveesion/328429]], or [[{{#Special:Redirect}}/uiser/101]].",
        "redirect-submit": "Gang",
        "redirect-lookup": "Luikup:",
        "redirect-not-exists": "Value na foond",
        "fileduplicatesearch": "Rake fer dupleecate files",
        "fileduplicatesearch-summary": "Rake fer dupleecate files based oan hash values.",
-       "fileduplicatesearch-legend": "Rake fer ae dupleecate",
        "fileduplicatesearch-filename": "Filename:",
        "fileduplicatesearch-submit": "Rake",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />File size: $3<br />MIME type: $4",
index 5b6fe26..2488e06 100644 (file)
        "categories": "Dumey",
        "categoriespagetext": "Ne {{PLURAL:$1|dumoo goo nda|dumey  goo nda}} mooyaŋ wala hẽenandi haya.\n[[Special:UnusedCategories|Dumey kaŋ ši goy]] ga cebandi ne.\nDii da [[Special:WantedCategories|dumey kaŋ ga ceecandi]].",
        "categoriesfrom": "Dumey cebe kaŋ ga šintin ne:",
-       "special-categories-sort-count": "fay kabu bande \\",
-       "special-categories-sort-abc": "fay abaca bande",
        "deletedcontributions": "Goykaw kanbuzaama tuusantey",
        "deletedcontributions-title": "Goykaw kanbuzaama tuusantey",
        "sp-deletedcontributions-contribs": "kanbuzaamawey",
        "import-logentry-upload-detail": "{{PLURAL:$1|Filla}} $1 ka huru",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|Filla}} $1 huru ka hun $2 ga",
        "javascripttest": "JavaScript šiiyan",
-       "javascripttest-pagetext-noframework": "Moɲoo woo n' ka lanbandi ka JavaScript šiiyaney tee.",
-       "javascripttest-pagetext-unknownframework": "Kungagoy \"$1\" šiiyan ši bayandi.",
-       "javascripttest-pagetext-frameworks": "Šiiyan kungagoy šiiyaney wey affoo suuba: $1",
-       "javascripttest-pagetext-skins": "Kuuru foo suuba ka šiiyaney tee nd'a:",
        "javascripttest-qunit-intro": "Guna [$1 šiiyan fahamandi tiira] mediawiki.org ga.",
        "tooltip-pt-userpage": "War goykaw moɲoo",
        "tooltip-pt-anonuserpage": "Goykaw moo IP aderesoo kaŋ war goo m'a fasal sanda",
        "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Article path]",
        "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Script path]",
        "redirect": "Tuku, goykaw, moo wala boŋtammaasa filla n'a kuubi",
-       "redirect-legend": "Kuubi tuku wala moo ga",
        "redirect-summary": "Moo cerecerante ga kuubi tuku ga (tuku maa bande), moo (sanda boŋtammaasa wala boŋtammaasa moo), wala goykaw moo (sanda hinna goykaw boŋtammaasa). Goyyan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/moo/64308]], [[{{#Special:Redirect}}/filla/328429]], wala [[{{#Special:Redirect}}/goykaw/101]].",
        "redirect-submit": "Koy",
        "redirect-lookup": "Guna:",
        "redirect-not-exists": "Hinna mana duwandi",
        "fileduplicatesearch": "Tuku fillantey ceeci",
        "fileduplicatesearch-summary": "Tuku fillantey kaŋ ga hanga hanga hinnawey ceeci.",
-       "fileduplicatesearch-legend": "Ize fillante ceeci",
        "fileduplicatesearch-filename": "Tukumaa:",
        "fileduplicatesearch-submit": "Ceeci",
        "fileduplicatesearch-info": "biitonbi $1 × $2 <br />Tuku azzaati: $3<br />MIME dumi: $4",
index 9ecd27b..b994d26 100644 (file)
        "redirect-revision": "Poslapė versėjė",
        "redirect-file": "Abruozdėlė vards",
        "fileduplicatesearch": "Ėiškuotė doblikoutu failu",
-       "fileduplicatesearch-legend": "Ėiškuotė doblėkatu",
        "fileduplicatesearch-filename": "Faila vards:",
        "fileduplicatesearch-submit": "Ėiškuotė",
        "fileduplicatesearch-info": "$1 × $2 pėkseliu<br />Faila dėdoms: $3<br />MIME tėps: $4",
index b2c99a6..26fea82 100644 (file)
        "categories": "Kategorije",
        "categoriespagetext": "{{PLURAL:$1|Slijedeća kategorija sadrži|Slijedeće kategorije sadrže}} stranice ili multimedijalne datoteke.\n[[Special:UnusedCategories|Nekorištene kategorije]] nisu prikazane ovdje.\nVidi također [[Special:WantedCategories|zatražene kategorije]].",
        "categoriesfrom": "Prikaži kategorije počev od:",
-       "special-categories-sort-count": "sortiranje po broju",
-       "special-categories-sort-abc": "sortiraj po abecedi",
        "deletedcontributions": "Obrisani doprinosi korisnika",
        "deletedcontributions-title": "Obrisani doprinosi korisnika",
        "sp-deletedcontributions-contribs": "doprinosi",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|revizija|revizije|revizija}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revizija|revizije|revizija}} sa $2",
        "javascripttest": "Javaskript test",
-       "javascripttest-pagetext-noframework": "Ova stranica je rezervisana za izvršavanje javaskript testova.",
-       "javascripttest-pagetext-unknownframework": "Nepoznati radni okvir „$1“.",
-       "javascripttest-pagetext-frameworks": "Izaberite jedan od sledećih radnih okvira: $1",
-       "javascripttest-pagetext-skins": "Izaberite s kojim skinom (interfejsom) želite da pokrenete probu:",
        "javascripttest-qunit-intro": "Pogledajte [$1 dokumentaciju za testiranje] na mediawiki.org.",
        "tooltip-pt-userpage": "{{GENDER:|Vaša korisnička}} stranica",
        "tooltip-pt-anonuserpage": "Korisnička stranica za ip koju Vi uređujete kao",
        "version-entrypoints-header-entrypoint": "Ulazna tačka",
        "version-entrypoints-header-url": "URL",
        "redirect": "Preusmjeravanje preko datoteke, korisnika ili ID-a izmjene",
-       "redirect-legend": "Preusmjeravanje na datoteku ili stranicu",
        "redirect-summary": "Ova posebna stranica preusmjerava na datoteku (ako je navedeno ime datoteke), stranicu (ako postoji ID revizije) ili korisničku stranicu (ako postoji brojčani ID korisnika).",
        "redirect-submit": "Idi",
        "redirect-lookup": "Pregled:",
        "redirect-not-exists": "Vrijednost nije pronađena",
        "fileduplicatesearch": "Potraga za duplim datotekama",
        "fileduplicatesearch-summary": "Pretraga duplih datoteka na bazi njihove haš vrijednosti.",
-       "fileduplicatesearch-legend": "Pretraga dvojnika",
        "fileduplicatesearch-filename": "Ime datoteke:",
        "fileduplicatesearch-submit": "Traži",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Veličina datoteke: $3<br />MIME vrsta: $4",
index f5c2b71..e4c3484 100644 (file)
        "categories-submit": "පෙන්වන්න",
        "categoriespagetext": "පහත {{PLURAL:$1|ප්‍රවර්ගයෙහි අන්තර්ගතය |ප්‍රවර්ගයන්හි අන්තර්ගතයන්}} වනුයේ පිටු හෝ මාධ්‍යයන්ය.\n[[Special:UnusedCategories|භාවිතනොවූ  ප්‍රවර්ගයන්]] මෙහි පෙන්වා දක්වා නොමැත.\n [[Special:WantedCategories|අවශ්‍ය ප්‍රවර්ගයන්]]ද බලන්න.",
        "categoriesfrom": "මෙහිදී ඇරඹෙන ප්‍රවර්ග පෙන්වන්න:",
-       "special-categories-sort-count": "ගණණය පරිදි  සුබෙදුම",
-       "special-categories-sort-abc": "අකාරාදියේ පිළිවෙලට සකසන්න",
        "deletedcontributions": "මකාදැමූ පරිශීලක දායකත්වයන්",
        "deletedcontributions-title": "මකාදැමූ පරිශීලක දායකත්වයන්",
        "sp-deletedcontributions-contribs": "දායකත්වයන්",
        "import-logentry-upload-detail": " {{PLURAL:$1|සංශෝධනය|සංශෝධන $1 ක්}}",
        "import-logentry-interwiki-detail": "$2 වෙතින් {{PLURAL:$1|එක් සංශෝධනයක්|සංශෝධන $1 ක්}}",
        "javascripttest": "ජාවාස්ක්‍රිප්ට් පරික්ෂාකරමින්",
-       "javascripttest-pagetext-noframework": "මෙම පිටුව ජාවාස්ක්‍රිප්ට් පරික්ෂණ සිදුකිරීම සඳහා වෙන්කර ඇත.",
        "tooltip-pt-userpage": "ඔබගේ පරිශීලක පිටුව",
        "tooltip-pt-anonuserpage": "සංස්කරණයට ඔබ භාවිතා කරමින් පවතින අන්තර්ජාල ලිපිනය සඳහා පරිශීලක පිටුව",
        "tooltip-pt-mytalk": "ඔබගේ සංවාද පිටුව",
        "redirect-not-exists": "අගය හමු නොවුණි",
        "fileduplicatesearch": "අනුපිටපත් ගොනු සඳහා ගවේෂණය කරන්න",
        "fileduplicatesearch-summary": "එහි පූරක අගය පාදක කර ගෙන අනුපිටපත් ගොනු සඳහා ගවේෂණය කරන්න.",
-       "fileduplicatesearch-legend": "අනුපිටපතක් සඳහා ගවේෂණය කරන්න",
        "fileduplicatesearch-filename": "ගොනු-නාමය:",
        "fileduplicatesearch-submit": "ගවේෂණය",
        "fileduplicatesearch-info": "$1 × $2 පික්සල<br />ගොනු විශාලත්වය: $3<br />MIME ශෛලිය: $4",
index 02494f2..1fcafaa 100644 (file)
        "categories-submit": "Zobraziť",
        "categoriespagetext": "{{PLURAL:$1|Nasledovná kategória obsahuje|Nasledovné kategórie obsahujú}} stránky alebo multimediálne súbory.\nNie sú tu zobrazené [[Special:UnusedCategories|nepoužité kategórie]].\nPozri aj [[Special:WantedCategories|žiadané kategórie]].",
        "categoriesfrom": "Zobraziť kategórie počnúc:",
-       "special-categories-sort-count": "zoradiť podľa počtu",
-       "special-categories-sort-abc": "zoradiť podľa abecedy",
        "deletedcontributions": "Zmazané príspevky používateľa",
        "deletedcontributions-title": "Zmazané príspevky používateľa",
        "sp-deletedcontributions-contribs": "príspevky",
        "redirect-not-exists": "Hodnota nebola nájdená",
        "fileduplicatesearch": "Hľadať duplicitné súbory",
        "fileduplicatesearch-summary": "Hľadanie duplicitných súborov na základe ich haš hodnôt.",
-       "fileduplicatesearch-legend": "Hľadať duplicity",
        "fileduplicatesearch-filename": "Názov súboru:",
        "fileduplicatesearch-submit": "Hľadať",
        "fileduplicatesearch-info": "$1 × $2 pixelov<br />Veľkosť súboru: $3<br />Typ MIME: $4",
index 83b8566..531eb67 100644 (file)
@@ -29,6 +29,7 @@
        "tog-watchdefault": "Na spisek nadzorov dodaj vse članke in datoteke, ki sem jih spremenil/-a",
        "tog-watchmoves": "Dodaj strani in datoteke, ki jih premaknem, na moj spisek nadzorov",
        "tog-watchdeletion": "Dodaj strani in datoteke, ki jih izbrišem, na moj spisek nadzorov",
+       "tog-watchuploads": "Dodaj nove datoteke, ki jih naložim, na moj spisek nadzorov",
        "tog-watchrollback": "Dodaj strani, na katerih sem izvedel vrnitev, na moj spisek nadzorov",
        "tog-minordefault": "Vsa urejanja označi kot manjša",
        "tog-previewontop": "Prikaži predogled pred urejevalnim poljem",
        "recentchangeslinked-page": "Naslov strani:",
        "recentchangeslinked-to": "Prikaži spremembe na določeno stran povezanih strani",
        "recentchanges-page-added-to-category": "[[:$1]] dodano v kategorijo",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] in [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|stran|strani}}]] {{PLURAL:$2|dodana|dodani|dodane|dodanih}} v kategorijo",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] dodana v kategorijo; [[Special:WhatLinksHere/$1|stran je vključena v druge strani]]",
        "recentchanges-page-removed-from-category": "[[:$1]] odstranjeno iz kategorije",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] in [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|stran|strani}}]] {{PLURAL:$2|odstranjena|odstranjeni|odstranjene|odstranjenih}} iz kategorije",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] odstranjena iz kategorije; [[Special:WhatLinksHere/$1|stran je vključena v druge strani]]",
        "autochange-username": "Samodejna sprememba MediaWiki",
        "upload": "Naloži datoteko",
        "uploadbtn": "Naloži datoteko",
        "categories-submit": "Prikaži",
        "categoriespagetext": "{{PLURAL:$1|Naslednja $1 kategorija vsebuje|Naslednji $1 kategoriji vsebujeta|Naslednje $1 kategorije vsebujejo|Naslednjih $1 kategorij vsebuje}} strani ali datoteke.\n[[Special:UnusedCategories|Neuporabljene kategorije]] niso prikazane.\nGlej tudi [[Special:WantedCategories|želene kategorije]].",
        "categoriesfrom": "Prikaži kategorije, ki se začnejo na:",
-       "special-categories-sort-count": "razvrsti po številu",
-       "special-categories-sort-abc": "razvrsti po abecedi",
        "deletedcontributions": "Izbrisani uporabnikovi prispevki",
        "deletedcontributions-title": "Izbrisani uporabnikovi prispevki",
        "sp-deletedcontributions-contribs": "prispevki",
        "confirmemail_body_set": "Nekdo, najverjetneje vi, je z IP-naslova $1\nna strani {{SITENAME}} nastavil e-poštni naslov računa »$2« na ta naslov.\n\nDa potrdite lastništvo tega računa in aktivirate\ne-poštne funkcije na {{GRAMMAR:dajalnik|{{SITENAME}}}}, odprite to povezavo v vašem brskalniku:\n\n$3\n\nČe omenjeni račun *ni* vaš, sledite spodnji povezavi za preklic\npotrditve e-poštnega naslova:\n\n$5\n\nPotrditvena koda poteče $4.",
        "confirmemail_invalidated": "Potrditev e-poštnega naslova preklicana",
        "invalidateemail": "Prekliči potrditev e-poštnega naslova",
+       "notificationemail_subject_changed": "Spremenjen e-poštni naslov, registriran na {{SITENAME}}",
+       "notificationemail_subject_removed": "Odstranjen e-poštni naslov, registriran na {{SITENAME}}",
+       "notificationemail_body_changed": "Nekdo, najverjetneje vi, je z IP-naslova $1 spremenil e-poštni naslov računa »$2« na »$3« na strani {{SITENAME}}.\n\nČe to niste bili vi, takoj stopite v stik s skrbnikom strani.",
+       "notificationemail_body_removed": "Nekdo, najverjetneje vi, je z IP-naslova $1 odstranil e-poštni naslov računa »$2« na strani {{SITENAME}}.\n\nČe to niste bili vi, takoj stopite v stik s skrbnikom strani.",
        "scarytranscludedisabled": "[Prevključevanje med wikiji je onemogočeno]",
        "scarytranscludefailed": "[Pridobivanje predloge za $1 ni uspelo]",
        "scarytranscludefailed-httpstatus": "[Pridobivanje predloge za $1 ni uspelo: HTTP $2]",
        "watchlistedit-raw-done": "Vaš spisek nadzorov je bil posodobljen.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Dodana je bila $1 stran|Dodani sta bili $1 strani|Dodane so bile $1 strani|Dodanih je bilo $1 strani}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Odstranjena je bila $1 stran|Odstranjeni sta bili 2 strani|Odstranjene so bile $1 strani|Odstranjenih je bilo $1 strani}}:",
-       "watchlistedit-clear-title": "Čiščenje spiska nadzorov",
+       "watchlistedit-clear-title": "Počisti spisek nadzorov",
        "watchlistedit-clear-legend": "Počistite spisek nadzorov",
        "watchlistedit-clear-explain": "Vse naslove bomo odstranili z vašega spiska nadzorov",
        "watchlistedit-clear-titles": "Naslovi:",
        "sessionprovider-nocookies": "Piškotki so morda onemogočeni. Prepričaje se, da imate piškotke omogočene, in začnite znova.",
        "randomrootpage": "Naključna korenska stran",
        "log-action-filter-block": "Vrsta blokade:",
+       "log-action-filter-contentmodel": "Vrsta spremembe modelastrani:",
        "log-action-filter-delete": "Vrsta izbrisa:",
+       "log-action-filter-import": "Vrsta uvoza:",
+       "log-action-filter-managetags": "Vrsta dejanja upravljanja oznak:",
+       "log-action-filter-move": "Vrsta premika:",
+       "log-action-filter-newusers": "Vrsta ustvarjanja računa:",
        "log-action-filter-patrol": "Vrsta nadzora:",
        "log-action-filter-protect": "Vrsta zaščite:",
+       "log-action-filter-rights": "Vrsta spremembe pravic",
+       "log-action-filter-suppress": "Vrsta zatrtja",
        "log-action-filter-upload": "Vrsta nalaganja:",
        "log-action-filter-all": "Vse",
        "log-action-filter-block-block": "Blokada",
        "log-action-filter-block-reblock": "Sprememba blokade",
        "log-action-filter-block-unblock": "Odstranitev blokade",
+       "log-action-filter-contentmodel-change": "Sprememba Modelastrani",
+       "log-action-filter-contentmodel-new": "Ustvarjanje strani z nestandardnim Modelomstrani",
        "log-action-filter-delete-delete": "Izbris strani",
        "log-action-filter-delete-restore": "Obnovitev strani",
        "log-action-filter-delete-event": "Dnevnik brisanja",
        "log-action-filter-delete-revision": "Izbris redakcije",
+       "log-action-filter-import-interwiki": "Uvoz med wikiji",
+       "log-action-filter-import-upload": "Uvoz z nalaganjem XML",
+       "log-action-filter-managetags-create": "Ustvarjanje oznake",
+       "log-action-filter-managetags-delete": "Izbris oznake",
+       "log-action-filter-managetags-activate": "Aktivacija oznake",
+       "log-action-filter-managetags-deactivate": "Dezaktivacija oznake",
+       "log-action-filter-move-move": "Premik brez prepisa preusmeritev",
+       "log-action-filter-move-move_redir": "Premik s prepisom preusmeritev",
+       "log-action-filter-newusers-create": "Ustvaril brezimni uporabnik",
+       "log-action-filter-newusers-create2": "Ustvaril registriran uporabnik",
+       "log-action-filter-newusers-autocreate": "Samodejno ustvarjeno",
+       "log-action-filter-newusers-byemail": "Ustvarjeno z geslom, poslanim po e-pošti",
        "log-action-filter-patrol-patrol": "Ročni nadzor",
        "log-action-filter-patrol-autopatrol": "Samodejni nadzor",
        "log-action-filter-protect-protect": "Zaščita",
        "log-action-filter-protect-modify": "Sprememba zaščite",
        "log-action-filter-protect-unprotect": "Odstranitev zaščite",
+       "log-action-filter-protect-move_prot": "Prestavljena zaščita",
+       "log-action-filter-rights-rights": "Ročna sprememba",
+       "log-action-filter-rights-autopromote": "Samodejna sprememba",
+       "log-action-filter-suppress-event": "Zatrtje dnevnika",
+       "log-action-filter-suppress-revision": "Zatrtje redakcije",
+       "log-action-filter-suppress-delete": "Zatrtje strani",
+       "log-action-filter-suppress-block": "Zatrtje uporabnika z blokado",
+       "log-action-filter-suppress-reblock": "Zatrtje uporabnika s ponovno blokado",
        "log-action-filter-upload-upload": "Novo nalaganje",
        "log-action-filter-upload-overwrite": "Ponovno nalaganje"
 }
index 59cb1fb..25e1648 100644 (file)
        "categories": "Kategoria",
        "categoriespagetext": "Fulgende {{PLURAL:$1|Kategorie enthält|Kategorien enthaaln}} Seita oder Dateien.\n[[Special:UnusedCategories|Unbenutzte Kategorien]] waan hier nee uffgefiehrt.\nSiehe au de Liste der [[Special:WantedCategories|gewinschta Kategorien]].",
        "categoriesfrom": "Zeige Kategorien ob:",
-       "special-categories-sort-count": "Sortierung noach Oazoahl",
-       "special-categories-sort-abc": "Sortierung noach Alphabet",
        "deletedcontributions": "Geläschte Beiträge",
        "deletedcontributions-title": "Geläschte Beiträge",
        "linksearch-ns": "Noamensraum:",
        "version-hook-name": "Schnittstallanoame",
        "version-hook-subscribedby": "Uffruff vu",
        "fileduplicatesearch-summary": "Suche noach Dateiduplikaten uff Basis ihres Hashwertes.",
-       "fileduplicatesearch-legend": "Suche noach Duplikata",
        "fileduplicatesearch-filename": "Dateinoame:",
        "fileduplicatesearch-submit": "Sucha",
        "fileduplicatesearch-info": "$1 × $2 Pixel<br />Dateigreeße: $3<br />MIME-Typ: $4",
index 16042c6..d17130e 100644 (file)
        "categories": "Kategori",
        "categoriespagetext": "{{PLURAL:$1|kategoria në vijim përmban|kategoritë në vikim përmbajnë}} faqe ose media.\n[[Special:UnusedCategories|Kategoritë e pa përdorura]] nuk janë të paraqitura këtu.\nShikoni edhe [[Special:WantedCategories|kategoritë e dëshiruara]].",
        "categoriesfrom": "Paraqit kategoritë duke filluar në:",
-       "special-categories-sort-count": "radhit sipas numrit",
-       "special-categories-sort-abc": "radhiti sipas alfabetit",
        "deletedcontributions": "Kontribute të grisura",
        "deletedcontributions-title": "Kontribute të grisura",
        "sp-deletedcontributions-contribs": "kontributet",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|version|versione}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$!1|version|versione}} nga $2",
        "javascripttest": "Duke testuar JavaScript",
-       "javascripttest-pagetext-noframework": "Kjo faqe është rezervuar për kryerjen e testimeve JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Kornizë pune e panjohur testuese \"$1\".",
-       "javascripttest-pagetext-frameworks": "Ju lutemi zgjidhni njërën nga kornizat vijuese punuese të testimit: $1",
-       "javascripttest-pagetext-skins": "Zgjidhni një mostër për t'i kryer testimet:",
        "javascripttest-qunit-intro": "Shiko [$1 dokumentacionin e testimit] në mediawiki.org.",
        "tooltip-pt-userpage": "Faqja jote e përdoruesit",
        "tooltip-pt-anonuserpage": "Faqja e përdoruesve anonim nga kjo adresë IP",
        "version-entrypoints-header-url": "URL",
        "fileduplicatesearch": "Kërkoni për skeda të dyfishta",
        "fileduplicatesearch-summary": "Kërkoni për dyfishime të skedave në bazë të vlerës përmbledhëse («hash»).",
-       "fileduplicatesearch-legend": "Kërko për dyfishime",
        "fileduplicatesearch-filename": "Emri i skedës:",
        "fileduplicatesearch-submit": "Kërko",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />Madhësia e skedës: $3<br />Lloji MIME: $4",
index 06b1dc2..49d865a 100644 (file)
@@ -48,6 +48,7 @@
        "tog-watchdefault": "Додај странице и датотеке које изменим у списак надгледања",
        "tog-watchmoves": "Додај странице и датотеке које преместим у списак надгледања",
        "tog-watchdeletion": "Додај странице и датотеке које обришем у списак надгледања",
+       "tog-watchuploads": "Додај датотеке које отпремим у списак надгледања",
        "tog-watchrollback": "Додај странице на којима сам вратио измене у списак надгледања",
        "tog-minordefault": "Означавај све измене као мање",
        "tog-previewontop": "Прикажи преглед пре оквира за уређивање",
        "backend-fail-read": "Не могу да прочитам датотеку $1.",
        "backend-fail-create": "Не могу да запишем датотеку $1.",
        "backend-fail-maxsize": "Не могу да запишем датотеку $1 јер је већа од {{PLURAL:$2|$2 бајта|$2 бајта|$2 бајтова}}.",
-       "backend-fail-readonly": "Складишна основа „$1“ тренутно не може да се записује. Наведени разлог гласи: „$2“",
+       "backend-fail-readonly": "Складишна основа „$1“ тренутно не може да се записује. Наведени разлог гласи: <em>$2</em>",
        "backend-fail-synced": "Датотека „$1“ је недоследна између унутрашњих складишних основа",
        "backend-fail-connect": "Не могу да се повежем са складишном основом „$1“.",
        "backend-fail-internal": "Дошло је до непознате грешке у складишној основи „$1“.",
        "categories-submit": "Прикажи",
        "categoriespagetext": "{{PLURAL:$1|1=Следећа категорија садржи|Следеће категорије садрже}} странице или датотеке.\n[[Special:UnusedCategories|Некоришћене категорије]] нису приказане овде.\nПогледајте и [[Special:WantedCategories|тражене категорије]].",
        "categoriesfrom": "Прикажи категорије почев од:",
-       "special-categories-sort-count": "поређај по броју",
-       "special-categories-sort-abc": "поређај по азбучном реду",
        "deletedcontributions": "Обрисани кориснички доприноси",
        "deletedcontributions-title": "Обрисани кориснички доприноси",
        "sp-deletedcontributions-contribs": "доприноси",
        "unblock": "Деблокирање корисника",
        "blockip": "Блокирај {{GENDER:$1|корисника|корисницу}}",
        "blockip-legend": "Блокирај корисника",
-       "blockiptext": "Користите доњи образац да бисте забранили приступ за писање с одређене ИП адресе или корисничког имена.\nОво би требало да вршите само ради спречавања вандализма, у складу са [[{{MediaWiki:Policy-url}}|смерницама]].\nИзаберите конкретан разлог испод (пример: навођење конкретних страница које су вандализоване).",
+       "blockiptext": "Користите доњи образац да бисте забранили приступ за писање с одређене ИП адресе или корисничког имена.\nОво би требало да вршите само ради спречавања вандализма, у складу са [[{{MediaWiki:Policy-url}}|смерницама]].\nИзаберите конкретан разлог испод (пример: навођење конкретних страница које су вандализоване). Можете блокирати опсеге ИП адреса помоћу [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] синтаксе, највећи дозвољени опсег за IPv4 је /$1 односно /$2 за IPv6.",
        "ipaddressorusername": "ИП адреса или корисничко име:",
        "ipbexpiry": "Истиче:",
        "ipbreason": "Разлог:",
        "api-error-blacklisted": "Изаберите другачији, описан назив.",
        "randomrootpage": "Случајна коренска страница",
        "log-action-filter-block": "Тип блокирања:",
+       "log-action-filter-contentmodel": "Тип промене модела садржаја:",
        "log-action-filter-delete": "Тип брисања:",
+       "log-action-filter-import": "Тип увоза:",
+       "log-action-filter-managetags": "Тип уређивања ознака:",
+       "log-action-filter-move": "Тип премештања:",
+       "log-action-filter-newusers": "Тип новог налога:",
        "log-action-filter-patrol": "Тип патролирања:",
        "log-action-filter-protect": "Тип закључавања:",
+       "log-action-filter-rights": "Тип промене корисничких права:",
        "log-action-filter-upload": "Тип отпремања:",
        "log-action-filter-all": "све",
        "log-action-filter-block-block": "блокирање",
        "log-action-filter-delete-restore": "враћање странице",
        "log-action-filter-delete-event": "брисање уноса у дневницима",
        "log-action-filter-delete-revision": "брисање измене",
+       "log-action-filter-managetags-create": "нова ознака",
+       "log-action-filter-managetags-delete": "брисање ознаке",
+       "log-action-filter-managetags-activate": "активирање ознаке",
+       "log-action-filter-managetags-deactivate": "деактивирање ознаке",
+       "log-action-filter-move-move": "премештање без преснимавања преусмерења",
+       "log-action-filter-move-move_redir": "премештање са преснимавањем преусмерења",
+       "log-action-filter-newusers-create": "отворио анониман корисник",
+       "log-action-filter-newusers-create2": "отворио регистрован корисник",
+       "log-action-filter-newusers-autocreate": "аутоматски отворен",
        "log-action-filter-patrol-patrol": "ручно",
        "log-action-filter-patrol-autopatrol": "аутоматско",
        "log-action-filter-protect-protect": "закључавање",
        "log-action-filter-protect-modify": "измена закључавања",
        "log-action-filter-protect-unprotect": "уклањање закључавања",
+       "log-action-filter-protect-move_prot": "премештање заштите",
+       "log-action-filter-rights-rights": "ручно",
+       "log-action-filter-rights-autopromote": "аутоматски",
        "log-action-filter-upload-upload": "ново",
        "log-action-filter-upload-overwrite": "промена постојећег"
 }
index 6dd8700..aa2c828 100644 (file)
        "backend-fail-read": "Ne mogu da pročitam datoteku $1.",
        "backend-fail-create": "Ne mogu da zapišem datoteku $1.",
        "backend-fail-maxsize": "Ne mogu da zapišem datoteku $1 jer je veća od {{PLURAL:$2|$2 bajta|$2 bajta|$2 bajtova}}.",
-       "backend-fail-readonly": "Skladišna osnova „$1“ trenutno ne može da se zapisuje. Navedeni razlog glasi: „$2“",
+       "backend-fail-readonly": "Skladišna osnova „$1“ trenutno ne može da se zapisuje. Navedeni razlog glasi: <em>$2</em>",
        "backend-fail-synced": "Datoteka „$1“ je nedosledna između unutrašnjih skladišnih osnova",
        "backend-fail-connect": "Ne mogu da se povežem sa skladišnom osnovom „$1“.",
        "backend-fail-internal": "Došlo je do nepoznate greške u skladišnoj osnovi „$1“.",
        "categories-submit": "Prikaži",
        "categoriespagetext": "{{PLURAL:$1|1=Sledeća kategorija sadrži|Sledeće kategorije sadrže}} stranice ili datoteke.\n[[Special:UnusedCategories|Nekorišćene kategorije]] nisu prikazane ovde.\nPogledajte i [[Special:WantedCategories|tražene kategorije]].",
        "categoriesfrom": "Prikaži kategorije počev od:",
-       "special-categories-sort-count": "poređaj po broju",
-       "special-categories-sort-abc": "poređaj po azbučnom redu",
        "deletedcontributions": "Obrisani korisnički doprinosi",
        "deletedcontributions-title": "Obrisani korisnički doprinosi",
        "sp-deletedcontributions-contribs": "doprinosi",
        "unblock": "Deblokiraj korisnika",
        "blockip": "Blokiraj korisnika",
        "blockip-legend": "Blokiraj korisnika",
-       "blockiptext": "Koristite donji obrazac da biste zabranili pristup za pisanje s određene IP adrese ili korisničkog imena.\nOvo bi trebalo da vršite samo radi sprečavanja vandalizma, u skladu sa [[{{MediaWiki:Policy-url}}|smernicama]].\nIzaberite konkretan razlog ispod (primer: navođenje konkretnih stranica koje su vandalizovane).",
+       "blockiptext": "Koristite donji obrazac da biste zabranili pristup za pisanje s određene IP adrese ili korisničkog imena.\nOvo bi trebalo da vršite samo radi sprečavanja vandalizma, u skladu sa [[{{MediaWiki:Policy-url}}|smernicama]].\nIzaberite konkretan razlog ispod (primer: navođenje konkretnih stranica koje su vandalizovane). Možete blokirati opsege IP adresa pomoću [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] sintakse, najveći dozvoljeni opseg za IPv4 je /$1 odnosno /$2 za IPv6.",
        "ipaddressorusername": "IP adresa ili korisničko ime:",
        "ipbexpiry": "Ističe:",
        "ipbreason": "Razlog:",
index 50c3bf9..0df794d 100644 (file)
        "categories": "Kategorien",
        "categoriespagetext": "Foulgjende {{PLURAL:$1|Kategorie änthoalt|Kategorien änthoolde}} Sieden of Doatäie.\n[[Special:UnusedCategories|Nit benutsede Kategorien]] wäide hier nit apfierd.\nSjuch uk ju Lieste fon do [[Special:WantedCategories|wonskede Kategorien]].",
        "categoriesfrom": "Wies Kategorien siet:",
-       "special-categories-sort-count": "Sortierenge ätter Antaal",
-       "special-categories-sort-abc": "Sortierenge ätter Alphabet",
        "deletedcontributions": "Läskede Benutserbiedraage",
        "deletedcontributions-title": "Läskede Benutserbiedraage",
        "sp-deletedcontributions-contribs": "Benutserbiedraage",
        "version-software-version": "Version",
        "fileduplicatesearch": "Doatäi-Duplikoat-Säike",
        "fileduplicatesearch-summary": "Säike ätter Doatäi-Duplikoate ap Basis fon hieren Hash-Wäid.",
-       "fileduplicatesearch-legend": "Säike ätter Duplikoate",
        "fileduplicatesearch-filename": "Doatäinoome:",
        "fileduplicatesearch-submit": "Säike (016)",
        "fileduplicatesearch-info": "$1 × $2 Pixel<br />Doatäigrööte: $3<br />MIME-Typ: $4",
index d5e4dee..ce6ca9d 100644 (file)
        "newarticle": "(anyar)",
        "newarticletext": "Anjeun geus nuturkeun tutumbu ka kaca nu can aya.\nPikeun nyieun kaca, mimitian ku ngetik jeroeun kotak di handap\n(tempo [$1 kaca pitulung] pikeun leuwih écés).\nMun anjeun ka dieu teu ngahaja, klik baé tombol '''back''' na panyungsi anjeun.",
        "anontalkpagetext": "----\n<em>Ieu mangrupa kaca sawala pikeun pamaké anonim anu can nyieun akun, atawa anu henteu maké.</em>\nKu kituna kapaksa make alamat IP pikeun nyirikeun anjeunna. Alamat IP ieu bisa dipaké ku sababaraha jalma. Lamun anjeun salasahiji pamaké anonim sarta ngarasa aya koméntar nu teu pakait geus ditujukeun ka anjeun, mangga [[Special:UserLogin/signup|nyieun akun]] atawa [[Special:UserLogin|asup log]] sangkan teu pacorok jeung pamaké anonim lianna.",
-       "noarticletext": "Kiwari can aya téks dina ieu kaca.\nAnjeun bisa [[Special:Search/{{PAGENAME}}|nyusud judul ieu kaca]] dina kaca séjén,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nyusud log nu tumali],\natawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} ngédit ieu kaca]</span>.",
+       "noarticletext": "Kiwari can aya téks dina ieu kaca.\nAnjeun bisa [[Special:Search/{{PAGENAME}}|nyusud judul ieu kaca]] dina kaca séjén,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nyusud log nu tumali],\natawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} nyieun ieu kaca]</span>.",
        "noarticletext-nopermission": "Kiwari can aya téks dina ieu kaca.\nAnjeun bisa [[Special:Search/{{PAGENAME}}|nyusud judul ieu kaca]] dina kaca séjén,atawa <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nyusud log nu tumali]</span>, tapi teu wenang pikeun nyieun ieu kaca.",
        "missing-revision": "Révisi #$1 kaca \"{{FULLPAGENAME}}\" teu aya.\n\nKajadian ieu biasana kusabab nuturkeun tutumbu jujutan kaca anu geus dihapus.\nWincikanana bisa ditempo di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log hapusan].",
        "userpage-userdoesnotexist": "Rekening pamaké \"<nowiki>$1</nowiki>\" tacan kadaptar. Mangga tilikan lamun anjeun hoyong ngadamel/ngédit kaca ieu.",
        "categories": "Kategori",
        "categoriespagetext": "{{PLURAL:$1|Kategori|Kategori}} ngandung kaca atawa média.\n[[Special:UnusedCategories|Kategori nu teu kapaké]] henteu ditémbongkeun di dieu.\nBaca ogé [[Special:WantedCategories|kategori nu dipikabutuh]].",
        "categoriesfrom": "Tembongkeun kategori-kategori dimimitian ku:",
-       "special-categories-sort-count": "ngurut numutkeun jumlah",
-       "special-categories-sort-abc": "runtuykeun dumasar abjad",
        "deletedcontributions": "Kontribusi nu dihapus",
        "deletedcontributions-title": "Kontribusi nu dihapus",
        "sp-deletedcontributions-contribs": "kontribusi",
        "undelete-show-file-submit": "Enya",
        "namespace": "Ngaranspasi:",
        "invert": "Balikkeun pilihan",
+       "tooltip-invert": "Contang ieu kotak pikeun nyumputkeun parobahan kaca-kaca dina ruang nama anu dipilih (jeung ruang nama anu tumali, lamun dicontang)",
        "blanknamespace": "(Utama)",
        "contributions": "Kontribusi {{GENDER:$1|pamaké}}",
        "contributions-title": "Sumbangan tulisan ti $1",
        "version-software-product": "Produk",
        "version-software-version": "Vérsi",
        "fileduplicatesearch": "Sungsi gambar duplikat",
-       "fileduplicatesearch-legend": "Sungsi duplikat",
        "fileduplicatesearch-filename": "Ngaran koropak:",
        "fileduplicatesearch-submit": "Sungsi",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Ukuran koropak: $3<br />Tipeu MIME: $4",
index f7119bf..48b4500 100644 (file)
        "viewdeleted": "Visa $1?",
        "restorelink": "{{PLURAL:$1|en raderad version|$1 raderade versioner}}",
        "feedlinks": "Flöde:",
-       "feed-invalid": "Ogiltig flödestyp.",
+       "feed-invalid": "Ogiltig flödestyp för prenumeration.",
        "feed-unavailable": "Syndikerade flöden är inte tillgängliga",
        "site-rss-feed": "$1 RSS-flöde",
        "site-atom-feed": "$1 Atom-flöde",
        "categories-submit": "Visa",
        "categoriespagetext": "Följande {{PLURAL:$1|kategori|kategorier}} innehåller sidor eller media.\n[[Special:UnusedCategories|Oanvända kategorier]] visas inte här.\nSe även [[Special:WantedCategories|önskade kategorier]].",
        "categoriesfrom": "Visa kategorier från och med:",
-       "special-categories-sort-count": "sortera efter storlek",
-       "special-categories-sort-abc": "sortera alfabetiskt",
        "deletedcontributions": "Raderade användarbidrag",
        "deletedcontributions-title": "Raderade användarbidrag",
        "sp-deletedcontributions-contribs": "bidrag",
        "confirmemail_body_set": "Någon, förmodligen du, från IP-adressen $1,\nhar angivit e-postadressen till kontot \"$2\" till den här adressen på {{SITENAME}}.\n\nFör att bekräfta att kontot verkligen tillhör dig, bör du aktivera e-postfunktionerna på {{SITENAME}}, öppna denna länk i din webbläsare:\n\n$3\n\nOm kontot *inte* tillhör dig, följ den här länken för att avbryta bekräftelsen av e-postadressen:\n\n$5\n\nDenna bekräftelsekod kommer att sluta fungera efter $4.",
        "confirmemail_invalidated": "Bekräftelsen av e-postadressen har ogiltigförklarats",
        "invalidateemail": "Avbryt bekräftelse av e-postadress",
+       "notificationemail_subject_changed": "Registrerad e-postadress på {{SITENAME}} har ändrats",
+       "notificationemail_subject_removed": "Registrerad e-postadress på {{SITENAME}} har tagits bort",
+       "notificationemail_body_changed": "Någon, förmodligen du, har ändrat e-postadressen\nför kontot \"$2\" till \"$3\" på {{SITENAME}} från IP-adressen $1.\n\nOm det inte var du bör du kontakta en webbplatsadministratör genast.",
+       "notificationemail_body_removed": "Någon, förmodligen du, har tagit bort e-postadressen\nför kontot \"$2\" på {{SITENAME}} från IP-adressen $1.\n\nOm det inte var du bör du kontakta en webbplatsadministratör genast.",
        "scarytranscludedisabled": "[Interwiki-inklusion är inte aktiverad]",
        "scarytranscludefailed": "[Hämtning av mall för $1 misslyckades]",
        "scarytranscludefailed-httpstatus": "[Hämtning av mall för $1 misslyckades: HTTP $2]",
        "randomrootpage": "Slumprotsida",
        "log-action-filter-block": "Typ av blockering:",
        "log-action-filter-delete": "Typ av radering:",
+       "log-action-filter-import": "Importeringstyp:",
+       "log-action-filter-move": "Flyttningstyp:",
+       "log-action-filter-newusers": "Typ av kontoskapande:",
        "log-action-filter-patrol": "Typ av patrullering:",
        "log-action-filter-protect": "Typ av skydd:",
+       "log-action-filter-suppress": "Censurtyp",
        "log-action-filter-upload": "Typ av uppladdning:",
        "log-action-filter-all": "Alla",
        "log-action-filter-block-block": "Blockering",
        "log-action-filter-block-reblock": "Blockeringsändring",
        "log-action-filter-block-unblock": "Tog bort blockering",
+       "log-action-filter-contentmodel-change": "Ändring av innehållsmodell",
        "log-action-filter-delete-delete": "Radering av sida",
        "log-action-filter-delete-restore": "Återställde sida",
        "log-action-filter-delete-event": "Radering av logg",
        "log-action-filter-delete-revision": "Radering av sidversion",
+       "log-action-filter-move-move": "Flyttning utan att skriva över omdirigeringar",
+       "log-action-filter-move-move_redir": "Flyttning med att skriva över omdirigeringar",
+       "log-action-filter-newusers-create": "Skapade av anonyma användare",
+       "log-action-filter-newusers-create2": "Skapade av registrerade användare",
+       "log-action-filter-newusers-autocreate": "Skapades automatiskt",
        "log-action-filter-patrol-patrol": "Manuell patrullering",
        "log-action-filter-patrol-autopatrol": "Automatisk patrullering",
        "log-action-filter-protect-protect": "Skydd",
        "log-action-filter-protect-modify": "Ändring av skydd",
        "log-action-filter-protect-unprotect": "Tog bort skydd",
+       "log-action-filter-protect-move_prot": "Flyttade skydd",
+       "log-action-filter-rights-rights": "Manuell ändring",
+       "log-action-filter-rights-autopromote": "Automatisk ändring",
        "log-action-filter-upload-upload": "Ny uppladdning",
        "log-action-filter-upload-overwrite": "Återuppladdning"
 }
index 33d97e7..c39fa4e 100644 (file)
        "categories": "Jamii",
        "categoriespagetext": "Jamii {{PLURAL:$1|inayofuata ina|zinazofuata zina}} kurasa au mafaili ya picha au sauti.\n[[Special:UnusedCategories|Jamii zisizotumiwa]] hazitandazwi hapa.\nTazama pia [[Special:WantedCategories|jamii zinazohitajika]].",
        "categoriesfrom": "Tandaza jamii kuanzia na:",
-       "special-categories-sort-count": "panga kwa idadi",
-       "special-categories-sort-abc": "panga kwa herufi",
        "deletedcontributions": "Michango ya mtumiaji aliyefutwa",
        "deletedcontributions-title": "Michango ya mtumiaji aliyefutwa",
        "sp-deletedcontributions-contribs": "michango",
        "redirect-submit": "Nenda",
        "fileduplicatesearch": "Tafuta mafaili ya nakili",
        "fileduplicatesearch-summary": "Kutafuta mafaili ya nakili kwa kuzingatia thamani za reli.",
-       "fileduplicatesearch-legend": "Kutafuta kifani",
        "fileduplicatesearch-filename": "Jina la faili:",
        "fileduplicatesearch-submit": "Tafuta",
        "fileduplicatesearch-info": "Piseli $1 × $2<br />Ukubwa wa faili: $3<br />Aina ya MIME: $4",
index 2d3e184..589adc0 100644 (file)
        "categories": "Kategoryje",
        "categoriespagetext": "Zajta przedstowjo lista katygoryji s zajtůma a plikůma.\n[[Special:UnusedCategories|Ńyużywane kategoryj]] ńy zostoły tukej pokozane.\nKukńij tyż [[Special:WantedCategories|ńyistńyjůnce kategoryje]].",
        "categoriesfrom": "Pokož kategoryje začynajůnc uod:",
-       "special-categories-sort-count": "sortowanie wedle ličby",
-       "special-categories-sort-abc": "sortowanie wedle alfabyta",
        "deletedcontributions": "Wyćepane sprowjyńa użytkowńika",
        "deletedcontributions-title": "Wyćepane sprowjyńa użytkowńika",
        "linksearch": "Necowe uodwołańa",
        "version-software-version": "Wersjo",
        "fileduplicatesearch": "Šnupej za duplikatym plika",
        "fileduplicatesearch-summary": "Šnupej za duplikatůma plika na podstawje wartośći fůnkcyji skrůtu.",
-       "fileduplicatesearch-legend": "Šnupej za duplikatůma plika",
        "fileduplicatesearch-filename": "Mjano pliku:",
        "fileduplicatesearch-submit": "Šnupej",
        "fileduplicatesearch-info": "$1 × $2 pikseli<br />Wjelgość plika: $3<br />Typ MIME: $4",
index c75952a..ddb6571 100644 (file)
@@ -47,7 +47,8 @@
                        "Sharanrajindia",
                        "Maathavan",
                        "தமிழ்க்குரிசில்",
-                       "Nemo bis"
+                       "Nemo bis",
+                       "JAaron95"
                ]
        },
        "tog-underline": "இணைப்புகளுக்கு அடிக்கோடிடு",
        "nocookieslogin": "{{SITENAME}} தளம் பயனர்களைப் புகுபதிகை செய்வதற்கு ஞாபகிகளைப் (குக்கிகள்) பயன்படுத்துகிறது. நீங்கள் ஞாபகிகளைச் செயலிழக்கச் செய்துள்ளீர்கள். தயவுசெய்து அவற்றைச் செயற்பாடுள்ளதாக்கித் திரும்பவும் முயலுங்கள்.",
        "nocookiesfornew": "பயனர் கணக்கு உருவாக்கப்படவில்லை, அதே போல அதன் மூலத்தை எங்களால் உறுதிசெய்ய இயலவில்லை.நீங்கள் குக்கிகள் (cookies) இயங்கச்செய்யப்பட்டிருப்பதை  உறுதிசெய்யவும்,இப்பக்கத்தை reload செய்யவும் மற்றும் மீண்டும் முயற்சிக்கவும்.",
        "noname": "நீங்கள் கொடுத்த பயனர் பெயர் செல்லுபடியற்றது.",
-       "loginsuccesstitle": "புகுபதிகை வெற்றி",
+       "loginsuccesstitle": "புகுபதிகையில் உள்ளீர்கள்.",
        "loginsuccess": "நீங்கள் தற்பொழுது {{SITENAME}} தளத்தில் \"$1\" கணக்கினூடாக புகுபதிகை செய்துள்ளீர்கள்.",
        "nosuchuser": "\"$1\" என்ற பெயரில் பயனர் எவருமில்லை.\n\nபயனர் பெயர், பெரிய எழுத்து,  சிறிய எழுத்து என்ற வித்தியாசத்திற்குட்பட்டது.\n\nஎழுத்துப் பிழைகளைச் சரி பார்க்கவும், அல்லது [[Special:UserLogin/signup|புதிய பயனர் கணக்கொன்றை உருவாக்கவும்]].",
        "nosuchusershort": "\"$1\" என்ற பெயரில் பயனர் யாரும் இல்லை. நீங்கள் உள்ளிட்ட பெயரைச் சரி பார்க்கவும்.",
        "noemail": "\"$1\" பயனருக்கு மின்னஞ்சல் முகவரி எதுவும் பதியப்பட்டிருக்கவில்லை.",
        "noemailcreate": "ஒரு செல்லத்தக்க மின்னஞ்சல் முகவரியை நீங்கள் தரவேண்டும்.",
        "passwordsent": "\"$1\" பயனருக்கான மின்னஞ்சல் முகவரிக்கு ஒரு புதிய கடவுச்சொல் அனுப்பப்பட்டுள்ளது. பெற்றுக்கொண்டதும் தயவுசெய்து மீண்டும் புகுபதிகை செய்யவும்.",
-       "blocked-mailpassword": "à®\89à®\99à¯\8dà®\95ளà¯\8d à®\90.பி. à®®à¯\81à®\95வரி à®¤à®\9fà¯\81à®\95à¯\8dà®\95பà¯\8dபà®\9fà¯\8dà®\9fà¯\81ளà¯\8dளதà¯\81, விசம செயற்பாடுகளைத் தவிர்க்க கடவுச்சொல் மீட்புச் செயலியை நீங்கள் பயன்படுத்து அனுமதிக்கப்படவில்லை.",
+       "blocked-mailpassword": "à®\89à®\99à¯\8dà®\95ளà¯\8d à®\90.பி. à®®à¯\81à®\95வரி à®¤à¯\8aà®\95à¯\81பà¯\8dபதிலிரà¯\81நà¯\8dதà¯\81 à®¤à®\9fà¯\88 à®\9aà¯\86யà¯\8dயபà¯\8dபà®\9fà¯\8dà®\9fà¯\81ளà¯\8dளதà¯\81. விசம செயற்பாடுகளைத் தவிர்க்க கடவுச்சொல் மீட்புச் செயலியை நீங்கள் பயன்படுத்து அனுமதிக்கப்படவில்லை.",
        "eauthentsent": "உறுதிப்படுத்தல் மின்னஞ்சலொன்று நீங்கள் கொடுத்த மின்னஞ்சல் முகவரிக்கு அனுப்பப் பட்டுள்ளது.\nமேலும் மின்னஞ்சல்கள் இந்த முகவரிக்கு அனுப்பப்படும் முன்னர், மின்னஞ்சலில் கொடுக்கப்பட்டுள்ள வழிமுறைகளை பின்பற்றி, இம்மின்னஞ்சல் முகவரி உங்களுடையது தான் என்பதை உறுதிப்படுத்தவும்.",
        "throttled-mailpassword": "கடந்த {{PLURAL:$1|மணிநேரத்துக்குள்|$1 மணிநேரங்களுக்குள்}} ஒரு கடவுச்சொல் நினைவூட்டல் மின்னஞ்சல் ஏற்கனவே அனுப்பப்பட்டுவிட்டது. விசமப் பயன்பாடுகளைத் தவிர்ப்பதற்காக {{PLURAL:$1|மணிநேரத்திற்கு|$1 மணிநேரங்களுக்கு}} ஒரு கடவுச்சொல் நினைவூட்டல் மின்னஞ்சல் மட்டுமே அனுப்பப்படும்.",
        "mailerror": "மின்னஞ்சல் அனுப்புவதில் தவறு: $1",
        "createaccount-title": "{{SITENAME}} தளத்துக்கான கணக்கு தொடக்கம்",
        "createaccount-text": "யாரோ ஒருவர் உங்கள் மின்னஞ்சல் முவரிக்காக {{SITENAME}} ($4) தளத்தில் கணக்கொண்றை தொடங்கியுள்ளார். கணக்கின் பெயர் \"$2\", கடவுச்சொல் \"$3\". நீங்கள் இப்போது புகுபதிகைச் செய்து கடவுச்சொல்லை மாற்ற வேண்டும்.\n\nஇக்கணக்கு தவறுதலாக தொடங்கப்பட்டிருந்தால், இத்தகவலைப் புறக்கணிக்கலாம்.",
        "login-throttled": "தாங்கள் மிக அண்மையில் பலமுறை புகுபதிகை செய்ய முயற்சி செய்துள்ளீர்கள்.\n\nமீண்டும் முயற்சிக்கும் முன் $1 காத்திருக்கவும்.",
-       "login-abort-generic": "உங்கள் உள்நுழைவு தோல்வியுற்றது - Aborted",
+       "login-abort-generic": "உங்கள் உள்நுழைவு தோல்வியுற்றது - ரத்து செய்யபட்டது",
        "login-migrated-generic": "உங்கள் கணக்கு நகர்த்தப்பட்டுள்ளது, மேலும் உங்கள் பயனர்பெயரில் இந்த விக்கியில் இல்லை.",
        "loginlanguagelabel": "மொழி: $1",
        "suspicious-userlogout": "உங்கள் விடுபதிகை கோரிக்கை மறுக்கப்பட்டது ஏனென்றால் அது அறுபட்ட உலாவி அல்லது மாற்று இடைக்கிடங்கியால் அனுப்பப்பட்டுள்ளது.",
        "categories-submit": "காட்டு",
        "categoriespagetext": "கீழே கொடுத்துள்ள பக்கங்கள் அல்லது ஊடகங்கள் இந்த {{PLURAL:$1|பகுப்பை|பகுப்புக்களை}} கொண்டுள்ளது.\n[[Special:UnusedCategories|உபயோகப்படுத்தப்படாத  பகுப்புகள்]] இங்கே காண்பிக்கப்படவில்லை.\nஇத்துடன் [[Special:WantedCategories|தேவைப்படும் பகுப்புகளையும்]] பார்க்கவும்.",
        "categoriesfrom": "இதில் தொடங்கும் பகுப்புக்களைக் காட்டவும்:",
-       "special-categories-sort-count": "எண்ணிக்கையின் படி ஒழுங்குப் படுத்துக",
-       "special-categories-sort-abc": "அகரவரிசைப்படி ஒழுங்குப் படுத்துக",
        "deletedcontributions": "பயனரின் நீக்கப்பட்ட பங்களிப்புகள்",
        "deletedcontributions-title": "பயனரின நீக்கப்பட்ட பங்களிப்புக்கள்",
        "sp-deletedcontributions-contribs": "பங்களிப்புக்கள்",
index 220a009..4f5de01 100644 (file)
        "categories-submit": "చూపించు",
        "categoriespagetext": "ఈ క్రింది {{PLURAL:$1|వర్గం పేజీలను లేదా మాధ్యమాలను కలిగివుంది|వర్గాలు పేజీలను లేదా మాధ్యమాలను కలిగివున్నాయి}}.\n[[Special:UnusedCategories|వాడుకలో లేని వర్గాలని]] ఇక్కడ చూపించట్లేదు.\n[[Special:WantedCategories|కోరుతున్న వర్గాలను]] కూడా చూడండి.",
        "categoriesfrom": "ఇక్కడనుండి మొదలుకొని వర్గాలు చూపించు:",
-       "special-categories-sort-count": "సంఖ్యల ప్రకారం క్రమపరచు",
-       "special-categories-sort-abc": "అకారాది క్రమంలో అమర్చు",
        "deletedcontributions": "తొలగించబడిన వాడుకరి రచనలు",
        "deletedcontributions-title": "తొలగించబడిన వాడుకరి రచనలు",
        "sp-deletedcontributions-contribs": "మార్పుచేర్పులు",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|కూర్పు|కూర్పులు}}",
        "import-logentry-interwiki-detail": "$2 నుండి {{PLURAL:$1|ఒక కూర్పు|$1 కూర్పులు}}",
        "javascripttest": "జావాస్క్రిప్ట్ పరీక్ష",
-       "javascripttest-pagetext-noframework": "ఈ పేజీ JavaScript పరీక్షల కోసం ఉద్దేశించబడింది.",
-       "javascripttest-pagetext-unknownframework": "తెలియని పరీక్షా ఫ్రేమ్‍వర్కు \"$1\".",
        "javascripttest-pagetext-unknownaction": "తెలియని చర్య \"$1\".",
-       "javascripttest-pagetext-frameworks": "కింది పరీక్షా ఫ్రేమ్‍వర్కులలో ఒకదాన్ని ఎంచుకోండి: $1",
-       "javascripttest-pagetext-skins": "పరీక్షలు నడిపేందుకు ఓ రూపును ఎంచుకోండి:",
        "javascripttest-qunit-intro": "mediawiki.org లోని [$1 పరీక్షా డాక్యుమెంటేషన్] చూడండి.",
        "tooltip-pt-userpage": "మీ వాడుకరి పేజీ",
        "tooltip-pt-anonuserpage": "మీ ఐపీ చిరునామాకి సంబంధించిన వాడుకరి పేజీ",
        "version-libraries-description": "వివరణ",
        "version-libraries-authors": "రచయితలు",
        "redirect": "ఫైలు, వాడుకరి, పేజీ లేదా కూర్పు ఐడీ ప్రకారం దారిమార్పు",
-       "redirect-legend": "ఫైలు లేదా పేజీకి దారిమార్పు",
        "redirect-submit": "వెళ్ళు",
        "redirect-lookup": "చూడు:",
        "redirect-value": "విలువ:",
        "redirect-not-exists": "విలువ కనబడలేదు",
        "fileduplicatesearch": "ఫైళ్ల మారుప్రతుల కోసం వెతుకు",
        "fileduplicatesearch-summary": "మారుప్రతుల కోసం ఫైళ్ల హాష్ విలువ ఆధారంగా వెతుకు.",
-       "fileduplicatesearch-legend": "మారుప్రతి కొరకు వెతుకు",
        "fileduplicatesearch-filename": "ఫైలు పేరు:",
        "fileduplicatesearch-submit": "వెతుకు",
        "fileduplicatesearch-info": "$1 × $2 పిక్సెళ్లు<br />దస్త్రపు పరిమాణం: $3<br />MIME రకం: $4",
index a885bdc..70b9b62 100644 (file)
        "categories": "Гурӯҳҳо",
        "categoriespagetext": "Гурӯҳҳои зерин дар вики вуҷуд доранд.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
        "categoriesfrom": "Намоиши гурӯҳҳо бо шурӯъ аз:",
-       "special-categories-sort-count": "муратаб кардан бар асоси теъдод",
-       "special-categories-sort-abc": "муратаб кардани алифбоӣ",
        "deletedcontributions": "Ҳиссагузориҳои ҳазфшудаи корбар",
        "deletedcontributions-title": "Ҳиссагузориҳои ҳазфшудаи корбар",
        "linksearch": "Ҷустуҷӯи пайвандҳои беруна",
        "version-software-version": "Нусха",
        "fileduplicatesearch": "Ҷустуҷӯ барои парвандаҳои такрорӣ",
        "fileduplicatesearch-summary": "Ҷустуҷӯ барои парвандаҳои такрорӣ бар асоси миқдори дар ҳам шудаи онҳо сурат мегирад.",
-       "fileduplicatesearch-legend": "Ҷустуҷӯи мавориди такрорӣ",
        "fileduplicatesearch-filename": "Номи парванда:",
        "fileduplicatesearch-submit": "Ҷустуҷӯ",
        "fileduplicatesearch-info": "$1 × $2 пиксел<br />Андозаи парванда: $3<br />Навъи MIME: $4",
index 30f212b..981c7ca 100644 (file)
        "allpages-bad-ns": "{{SITENAME}} doroi fazoinom \"$1\" nest.",
        "categories": "Gurūhho",
        "categoriesfrom": "Namoişi gurūhho bo şurū' az:",
-       "special-categories-sort-count": "muratab kardan bar asosi te'dod",
-       "special-categories-sort-abc": "muratab kardani alifboī",
        "deletedcontributions": "Hissaguzorihoi hazfşudai korbar",
        "deletedcontributions-title": "Hissaguzorihoi hazfşudai korbar",
        "linksearch": "Pajvandhoi beruna",
        "version-software-version": "Nusxa",
        "fileduplicatesearch": "Çustuçū baroi parvandahoi takrorī",
        "fileduplicatesearch-summary": "Çustuçū baroi parvandahoi takrorī bar asosi miqdori dar ham şudai onho surat megirad.",
-       "fileduplicatesearch-legend": "Çustuçūi mavoridi takrorī",
        "fileduplicatesearch-filename": "Nomi parvanda:",
        "fileduplicatesearch-submit": "Çustuçū",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Andozai parvanda: $3<br />Nav'i MIME: $4",
index 23fa56b..c81200a 100644 (file)
        "categories-submit": "แสดง",
        "categoriespagetext": "{{PLURAL:$1|หมวดหมู่นี้|หมวดหมู่ต่อไปนี้}}มีหน้าหรือสื่อต่าง ๆ\n[[Special:UnusedCategories|หมวดหมู่ที่ไม่ได้ใช้]]จะไม่แสดงในที่นี้\nดูเพิ่มที่ [[Special:WantedCategories|หมวดหมู่ที่ต้องการ]]",
        "categoriesfrom": "แสดงหมวดหมู่เริ่มจาก:",
-       "special-categories-sort-count": "เรียงตามจำนวน",
-       "special-categories-sort-abc": "เรียงตามตัวอักษร",
        "deletedcontributions": "เรื่องที่เขียนของผู้ใช้ที่ถูกลบ",
        "deletedcontributions-title": "เรื่องที่เขียนของผู้ใช้ที่ถูกลบ",
        "sp-deletedcontributions-contribs": "เรื่องที่เขียน",
        "import-logentry-upload-detail": "นำเข้า $1 {{PLURAL:$1|รุ่นการแก้ไข|รุ่นการแก้ไข}}",
        "import-logentry-interwiki-detail": "นำเข้า $1 {{PLURAL:$1|รุ่นการแก้ไข|รุ่นการแก้ไข}}จาก $2",
        "javascripttest": "การทดสอบจาวาสคริปต์",
-       "javascripttest-pagetext-noframework": "หน้านี้สงวนไว้สำหรับดำเนินงานการทดสอบจาวาสคริปต์",
-       "javascripttest-pagetext-skins": "เลือกสกินที่จะดำเนินงานการทดสอบ:",
        "javascripttest-qunit-intro": "ดู[$1 เอกสารกำกับการทดสอบ]บน mediawiki.org",
        "tooltip-pt-userpage": "หน้าผู้ใช้ของคุณ",
        "tooltip-pt-anonuserpage": "หน้าผู้ใช้ของเลขที่อยู่ไอพีที่คุณกำลังใช้แก้ไข",
        "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath เส้นทางบทความ]",
        "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath เส้นทางสคริปต์]",
        "redirect": "การเปลี่ยนทางตามชื่อไฟล์ รหัสประจำผู้ใช้ หน้า รุ่นหรือปูม",
-       "redirect-legend": "การเปลี่ยนทางไปยังไฟล์หรือหน้า",
        "redirect-summary": "หน้าพิเศษนี้เปลี่ยนทางไปยังไฟล์ (ระบุเป็นชื่อไฟล์) หน้า (ระบุเป็นรหัสรุ่นหรือรหัสหน้า) หรือหน้าผู้ใช้ (ระบุเป็นรหัสผู้ใช้ตัวเลข) การใช้งาน: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] หรือ [[{{#Special:Redirect}}/user/101]]",
        "redirect-submit": "ไป",
        "redirect-lookup": "ค้นดู:",
        "redirect-not-exists": "ไม่พบค่า",
        "fileduplicatesearch": "ค้นหาไฟล์ซ้ำซ้อน",
        "fileduplicatesearch-summary": "ค้นหาไฟล์ซ้ำกันตามค่าแฮช",
-       "fileduplicatesearch-legend": "ค้นหาไฟล์ที่ซ้ำกัน",
        "fileduplicatesearch-filename": "ชื่อไฟล์:",
        "fileduplicatesearch-submit": "ค้นหา",
        "fileduplicatesearch-info": "$1 × $2 พิกเซล<br />ขนาดไฟล์: $3<br />ชนิดของไมม์: $4",
index 21dafb8..590dbe2 100644 (file)
        "categories": "Kategoriýalar",
        "categoriespagetext": "Aşakdaky {{PLURAL:$1|kategoriýada|kategoriýalarda}} sahypa ýa-da media faýllary bardyr.\n[[Special:UnusedCategories|Ulanylmaýan kategoriýalar]] şu ýerde görkezilmeýär.\nŞeýle-de [[Special:WantedCategories|Talap edilýän kategoriýalara]] serediň.",
        "categoriesfrom": "Şunuň bilen başlaýan kategoriýalary görkez:",
-       "special-categories-sort-count": "mukdar boýunça tertiple",
-       "special-categories-sort-abc": "elipbiý boýunça tertiple",
        "deletedcontributions": "Öçürilen ulanyjy goşantlary",
        "deletedcontributions-title": "Öçürilen ulanyjy goşantlary",
        "sp-deletedcontributions-contribs": "goşantlar",
        "version-software-version": "Wersiýa",
        "fileduplicatesearch": "Dublikat faýllaryň gözlegi",
        "fileduplicatesearch-summary": "Heş kodlary boýunça meňzeş faýllary gözle.",
-       "fileduplicatesearch-legend": "Dublikatyny gözle",
        "fileduplicatesearch-filename": "Faýlyň ady:",
        "fileduplicatesearch-submit": "Gözle",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Faýlyň ölçegi: $3<br />MIME tipi: $4",
index 6e622a8..ca3e47b 100644 (file)
        "categories": "Mga kategorya",
        "categoriespagetext": "Naglalaman ang sumusunod na {{PLURAL:$1|kategorya|mga kategorya}} ng mga pahina o midya.\nHindi ipinapakita rito ang [[Special:UnusedCategories|mga kategoryang hindi ginagamit]].\nTingnan din ang [[Special:WantedCategories|ninanais na mga kategorya]].",
        "categoriesfrom": "Ipakita ang mga kategoryang nagsisimula sa:",
-       "special-categories-sort-count": "ayusin sa pamamagitan ng bilang",
-       "special-categories-sort-abc": "ayusin sa pamamagitan ng alpabeto",
        "deletedcontributions": "Naburang ambag ng tagagamit",
        "deletedcontributions-title": "Naburang ambag ng tagagamit",
        "sp-deletedcontributions-contribs": "mga ambag",
index bd1e9fe..9bc092e 100644 (file)
        "may": "May",
        "jun": "Haz",
        "jul": "Tem",
-       "aug": "Agu",
+       "aug": "Ağu",
        "sep": "Eyl",
        "oct": "Eki",
        "nov": "Kas",
        "october-date": "$1 Ekim",
        "november-date": "$1 Kasım",
        "december-date": "$1 Aralık",
+       "period-am": "ÖÖ",
+       "period-pm": "ÖS",
        "pagecategories": "{{PLURAL:$1|Kategori|Kategoriler}}",
        "category_header": "\"$1\" kategorisindeki sayfalar",
        "subcategories": "Alt kategoriler",
        "createacct-benefit-heading": "{{SITENAME}} sizin gibi insanlar tarafından geliştirilir.",
        "createacct-benefit-body1": "{{PLURAL:$1|düzenleme|düzenleme}}",
        "createacct-benefit-body2": "{{PLURAL:$1|madde|madde}}",
-       "createacct-benefit-body3": "en son {{PLURAL:$1|katkıda bulunan|katkıda bulunan}} kişi sayısı",
+       "createacct-benefit-body3": "yakın zamanda {{PLURAL:$1|katkı yapan|katkı yapan}} kişi",
        "badretype": "Girdiğiniz şifreler birbirleriyle uyuşmuyor.",
        "usernameinprogress": "Bu kullanıcı adı için bir hesap oluşturma zaten sürüyor. Lütfen bekleyin.",
        "userexists": "Girdiğiniz kullanıcı adı zaten kullanımda.\nLütfen farklı bir kullanıcı adı seçiniz.",
        "newarticle": "(Yeni)",
        "newarticletext": "Henüz varolmayan bir sayfaya konulmuş bir bağlantıya tıkladınız.\nSayfayı oluşturmak için aşağıdaki metin kutusunu kullanın. ([$1 yardım sayfasına] bakınız).\nBuraya yanlışlıkla geldiyseniz tarayıcınızın  <strong>geri </strong> tuşuna tıklayın.",
        "anontalkpagetext": "----''Bu sayfa henüz bir kullanıcı hesabı oluşturmamış veya hesabını kullanmayan bir anonim kullanıcının mesaj sayfasıdır. Bu nedenle bu kişiyi belirtmek için rakamsal IP adresini kullanmak zorundayız. Bu gibi IP adresleri birçok kullanıcı tarafından paylaşılabilir. Eğer siz de bir anonim kullanıcıysanız ve size sizin ilginiz olmayan iletiler geliyorsa, lütfen diğer anonim kullanıcılarla olabilecek olan karmaşayı önlemek için [[Special:UserLogin/signup|bir hesap edinin]] veya [[Special:UserLogin|oturum açın]].''",
-       "noarticletext": "Bu sayfa şu anda boştur.\nBu başlığı [[Special:Search/{{PAGENAME}}|diğer sayfalarda arayabilir]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ilgili kayıtları arayabilir],\nya da bu sayfayı [{{fullurl:{{FULLPAGENAME}}|action=edit}} değiştirebilirsiniz]</span>.",
+       "noarticletext": "Bu sayfa şu anda boştur.\nBu başlığı [[Special:Search/{{PAGENAME}}|diğer sayfalarda arayabilir]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ilgili kayıtları arayabilir],\nya da bu sayfayı [{{fullurl:{{FULLPAGENAME}}|action=edit}} oluşturabilirsiniz]</span>.",
        "noarticletext-nopermission": "Bu sayfa şu anda boştur. \nBu başlığı [[Special:Search/{{PAGENAME}}|diğer sayfalarda arayabilir]] ya da <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ilgili kayıtları tarayabilirsiniz]</span>, fakat sayfayı oluşturma yetkiniz bulunmamaktadır.",
        "missing-revision": "\"{{FULLPAGENAME}}\" sayfasının #$1 sürümü yok.\n\nBu duruma genellikle silinmiş bir sayfaya eski tarihli bir bağlantının takip edilmesi neden olur.\n\nDaha fazla detaylı bilgi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sayfasında bulunabilir].",
        "userpage-userdoesnotexist": "\"<nowiki>$1</nowiki>\" kullanıcı hesabı kayıtlı değil. Bu sayfayı oluşturmak/değiştirmek istiyorsanız lütfen kontrol edin.",
        "newpageletter": "Y",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 izlenilen {{PLURAL:$1|kullanıcı|kullanıcı}}]",
-       "rc_categories": "Kategorilere sınırla (\"|\" ile ayır)",
-       "rc_categories_any": "Herhangi",
+       "rc_categories": "Kategorileri sınırla (\"|\" ile ayır)",
+       "rc_categories_any": "Seçilen herhangi bir",
        "rc-change-size-new": "Değişiklikten sonraki boyut: $1 {{PLURAL:$1|bayt|bayt}}",
        "newsectionsummary": "/* $1 */ yeni başlık",
        "rc-enhanced-expand": "Ayrıntıları göster",
        "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",
-       "special-categories-sort-abc": "alfabetik olarak sırala",
        "deletedcontributions": "Kullanıcının silinen katkıları",
        "deletedcontributions-title": "Kullanıcının silinen katkıları",
        "sp-deletedcontributions-contribs": "katkılar",
        "redirect-not-exists": "Değer bulunamadı",
        "fileduplicatesearch": "Benzer dosyaları ara",
        "fileduplicatesearch-summary": "Sağlama değeri tabanında benzer dosyaları ara.",
-       "fileduplicatesearch-legend": "Bir benzerini ara",
        "fileduplicatesearch-filename": "Dosya adı:",
        "fileduplicatesearch-submit": "Ara",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Dosya boyutu: $3<br />MIME tipi: $4",
index 08c0e0f..3bf57f7 100644 (file)
        "noemail": "$1 исемле кулланучы өчен электрон почта адресы язылмаган.",
        "noemailcreate": "Сез дөрес e-mail адресы күрсәтергә тиеш",
        "passwordsent": "Яңа серсүз $1 исемле кулланучының электрон почта адресына җибәрелде.\n\nЗинһар, серсүзне алгач, системага яңадан керегез.",
-       "blocked-mailpassword": "Сезнең IP адресыгыз белән битләр үзгәртеп һәм серсүзне яңартып булмый.",
+       "blocked-mailpassword": "Сезнең IP адресыгыздан төзәтмәләр кертү тыелган. Кирәксез эшләрдән саклау өчен бу IP адрес өчен шулай ук серсүзне кайтару мөмкинлеге дә ябылган.",
        "eauthentsent": "Күрсәтелгән электрон почта адресына үзгәртүләрне раслау өчен хат җибәрелде. Киләчәктәдә хатлар кабул итү өчен, раслауны үтегез.",
        "throttled-mailpassword": "Серсүзне электрон почтага җибәрү гамәлен сез {{PLURAL:$1|1=соңгы $1 сәгать}} эчендә кулландыгыз инде. Бу гамәлне явызларча куллануны кисәтү максатыннан аны $1 {{PLURAL:$1|сәгать}} аралыгында бер генә тапкыр башкарып була.",
        "mailerror": "Хат җибәрү хатасы: $1",
        "categories": "Төркемнәр",
        "categories-submit": "Күрсәт",
        "categoriespagetext": "{{PLURAL:$1|1=Әлеге төркем үз өченә|Әлеге төркемнәр  үз өченә}}   битләрне һәм медиа-файлларны ала.\nАста [[Special:UnusedCategories|кулланылмаган төркемнәр]] кәрсәтелгән.\nШулай ук  [[Special:WantedCategories|кирәкле төркемнәр исемлегендә]] карагыз.",
-       "special-categories-sort-count": "исәп буенча тәртипләү",
-       "special-categories-sort-abc": "әлифба буенча тәртипләү",
        "deletedcontributions": "Кулланучының бетерелгән кертеме",
        "deletedcontributions-title": "Бетерелгән кертем",
        "sp-deletedcontributions-contribs": "кертем",
index 87298ce..2461405 100644 (file)
        "allpagesprefix": "Alquşımçalı bitlärne kürsätü:",
        "categories": "Törkemnär",
        "categoriespagetext": "{{PLURAL:$1|Älege törkem üz öçenä|Älege törkemnär  üz öçenä}}   bitlärne häm media-fayllarnı ala.\nAsta [[Special:UnusedCategories|qullanılmağan törkemnär]] kärsätelgän.\nŞulay uq  [[Special:WantedCategories|kiräkle törkemnär isemlegendä]] qarağız.",
-       "special-categories-sort-count": "isäp buyınça tärtipläw",
-       "special-categories-sort-abc": "älifba buyınça tärtipläw",
        "sp-deletedcontributions-contribs": "kertem",
        "linksearch": "Tışqı sıltamalar",
        "linksearch-pat": "Ezläw öçen ürnäk:",
index 3acf4d0..ae20f1d 100644 (file)
        "categories": "تۈرلەر",
        "categoriespagetext": "تۆۋەندىكى {{PLURAL:$1|كاتېگورىيە|كاتېگورىيە}}دە بەت ياكى ۋاسىتە بار.\n[[Special:UnusedCategories|ئىشلىتىلمىگەن كاتېگورىيە]] بۇ جايدا كۆرسىتىلمەيدۇ.\nشۇنىڭ بىلەن بىللە [[Special:WantedCategories|لازىملىق كاتېگورىيە]] نى كۆرۈڭ.",
        "categoriesfrom": "بۇ كاتېگورىيەدىن باشلانغاننى كۆرسەت:",
-       "special-categories-sort-count": "سانى بويىچە تەرتىپلە",
-       "special-categories-sort-abc": "ئېلىپبە بويىچە تەرتىپلە",
        "deletedcontributions": "ئۆچۈرۈلگەن ئىشلەتكۈچى تۆھپىسى",
        "deletedcontributions-title": "ئۆچۈرۈلگەن ئىشلەتكۈچى تۆھپىسى",
        "sp-deletedcontributions-contribs": "تۆھپە",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|تۈزىتىش|تۈزىتىش}}",
        "import-logentry-interwiki-detail": "$2 دىن كەلگەن $1 {{PLURAL:$1|تۈزىتىش|تۈزىتىش}}",
        "javascripttest": "JavaScript سىناش",
-       "javascripttest-pagetext-noframework": "بۇ بەت JavaScript ئىجرا قىلىپ سىناشقا قالدۇرۇلغان.",
-       "javascripttest-pagetext-unknownframework": "يوچۇن سىناق قۇرۇلما \"$1\".",
-       "javascripttest-pagetext-frameworks": "تۆۋەندىكى قۇرۇلمىدىن بىرنى تاللاڭ: $1",
-       "javascripttest-pagetext-skins": "بىر تېرە تاللاپ سىناقنى ئىجرا قىلىڭ:",
        "javascripttest-qunit-intro": "mediawiki.org دىكى [$1 سىناش قوللانمىسى]نى كۆرۈڭ.",
        "tooltip-pt-userpage": "ئىشلەتكۈچى بېتىڭىز",
        "tooltip-pt-anonuserpage": "بۇ بېكەتنى تەھرىرلىگەندە ئىشلەتكەن IP ماس كەلگەن ئىشلەتكۈچى بېتى",
        "redirect-not-exists": "قىممىتى تېپىلمىدى",
        "fileduplicatesearch": "تەكرار ھۆججەت ئىزدە",
        "fileduplicatesearch-summary": "چاچما (hash) قىممىتىگە ئاساسەن تەكرار ھۆججەت ئىزدە.",
-       "fileduplicatesearch-legend": "تەكرار ھۆججەت ئىزدە",
        "fileduplicatesearch-filename": ":ھۆججەت ئاتى",
        "fileduplicatesearch-submit": "ئىزدە",
        "fileduplicatesearch-info": "$1 × $2 نۇقتا<br />ھۆججەت چوڭلۇقى: $3<br />MIME تىپى: $4",
index 08e281c..9e1f36c 100644 (file)
@@ -83,6 +83,7 @@
        "tog-watchdefault": "Додавати змінені мною сторінки та файли до мого списку спостереження",
        "tog-watchmoves": "Додавати перейменовані мною сторінки та файли до мого списку спостереження",
        "tog-watchdeletion": "Додавати вилучені мною сторінки та файли до мого списку спостереження",
+       "tog-watchuploads": "Додавати до мого списку спостереження нові файли, завантажені мною",
        "tog-watchrollback": "Додавати відкочені мною сторінки до мого списку спостереження",
        "tog-minordefault": "Позначати всі зміни як незначні за замовчуванням",
        "tog-previewontop": "Показувати попередній перегляд перед вікном редагування, а не після",
        "recentchangeslinked-page": "Назва сторінки:",
        "recentchangeslinked-to": "Показати зміни на сторінках, пов'язаних з даною",
        "recentchanges-page-added-to-category": "[[:$1]] Додано до категорії",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] та ще [[Special:WhatLinksHere/$1|{{PLURAL:$2|$2 сторінку|$2 сторінки|$2 сторінок|1=одну сторінку}}]] було додано до категорії",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] додано до категорії, [[Special:WhatLinksHere/$1|ця сторінка включена в інші сторінки]]",
        "recentchanges-page-removed-from-category": "[[:$1]] було вилучено з категорії",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] та ще [[Special:WhatLinksHere/$1|{{PLURAL:$2|$2 сторінку|$2 сторінки|$2 сторінок|1=одну сторінку}}]] було вилучено з категорії",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] вилучено з категорії, [[Special:WhatLinksHere/$1|ця сторінка включена в інші сторінки]]",
        "autochange-username": "Автоматичні редагування MediaWiki",
        "upload": "Завантажити файл",
        "uploadbtn": "Завантажити файл",
        "categories-submit": "Показати",
        "categoriespagetext": "{{PLURAL:$1|1=Наступна категорія містить|Наступні категорії містять}} сторінки або медіа-файли.\nТут не показані [[Special:UnusedCategories|категорії, що не використовуються]].\nДив. також [[Special:WantedCategories|список необхідних категорій]].",
        "categoriesfrom": "Показати категорії, що починаються з:",
-       "special-categories-sort-count": "упорядкувати за кількістю",
-       "special-categories-sort-abc": "упорядкувати за алфавітом",
        "deletedcontributions": "Вилучений внесок користувача",
        "deletedcontributions-title": "Вилучений внесок користувача",
        "sp-deletedcontributions-contribs": "внесок",
        "sessionprovider-nocookies": "Куки можуть бути відключені. Переконайтеся, що у Вас включені cookies і почніть знову.",
        "randomrootpage": "Випадкова коренева сторінка",
        "log-action-filter-block": "Тип блокування:",
+       "log-action-filter-contentmodel": "Тип модифікації contentmodel:",
        "log-action-filter-delete": "Тип вилучення:",
+       "log-action-filter-import": "Тип імпорту:",
+       "log-action-filter-managetags": "Тип дії з управління тегами:",
+       "log-action-filter-move": "Тип перейменування:",
+       "log-action-filter-newusers": "Тип створення облікового запису:",
        "log-action-filter-patrol": "Тип патрулювання:",
        "log-action-filter-protect": "Тип захисту:",
+       "log-action-filter-rights": "Тип зміни прав",
+       "log-action-filter-suppress": "Тип приховування",
        "log-action-filter-upload": "Тип завантаження:",
        "log-action-filter-all": "Усі",
        "log-action-filter-block-block": "Блокування",
        "log-action-filter-block-reblock": "Зміна блокування",
        "log-action-filter-block-unblock": "Розблокування",
+       "log-action-filter-contentmodel-change": "Зміна Contentmodel",
+       "log-action-filter-contentmodel-new": "Створення сторінки з нестандартною моделлю Contentmodel",
        "log-action-filter-delete-delete": "Видалення сторінки",
        "log-action-filter-delete-restore": "Відновлення сторінки",
        "log-action-filter-delete-event": "Вилучення журналу",
        "log-action-filter-delete-revision": "Вилучення версії",
+       "log-action-filter-import-interwiki": "Трансвікі-імпорт",
+       "log-action-filter-import-upload": "Імпорт через завантаження XML",
+       "log-action-filter-managetags-create": "Створення тегів",
+       "log-action-filter-managetags-delete": "Вилучення тегів",
+       "log-action-filter-managetags-activate": "Активація тегів",
+       "log-action-filter-managetags-deactivate": "Деактивація тегів",
+       "log-action-filter-move-move": "Перейменування без перезапису сторінок-перенаправлень",
+       "log-action-filter-move-move_redir": "Перейменування з перезаписом сторінок-перенаправлень",
+       "log-action-filter-newusers-create": "Створення анонімним користувачем",
+       "log-action-filter-newusers-create2": "Створення зареєстрованим користувачем",
+       "log-action-filter-newusers-autocreate": "Автоматичне створення",
+       "log-action-filter-newusers-byemail": "Створення з паролем, надісланим електронною поштою",
        "log-action-filter-patrol-patrol": "Ручне патрулювання",
        "log-action-filter-patrol-autopatrol": "Автоматичне патрулювання",
        "log-action-filter-protect-protect": "Захист",
        "log-action-filter-protect-modify": "Зміна захисту",
        "log-action-filter-protect-unprotect": "Зняття захисту",
+       "log-action-filter-protect-move_prot": "Перенесення захисту",
+       "log-action-filter-rights-rights": "Ручна зміна",
+       "log-action-filter-rights-autopromote": "Автоматична зміна",
+       "log-action-filter-suppress-event": "Приховування журналу",
+       "log-action-filter-suppress-revision": "Приховування версії",
+       "log-action-filter-suppress-delete": "Приховування сторінки",
+       "log-action-filter-suppress-block": "Приховування користувача через блокування",
+       "log-action-filter-suppress-reblock": "Приховування користувача через повторне блокування",
        "log-action-filter-upload-upload": "Нове завантаження",
        "log-action-filter-upload-overwrite": "Повторне завантаження"
 }
index 5ce9483..5bcc052 100644 (file)
        "categories": "Categorie",
        "categoriespagetext": "{{PLURAL:$1|Sta categoria qua soto la|Ste categorie qua soto le}} gà drento pagine o file multimediài.\nLe [[Special:UnusedCategories|categorie mìa doparà]] no le vien mìa fate védar.\nVarda anca le [[Special:WantedCategories|categorie domandà]].",
        "categoriesfrom": "Mostra le categorie tacando da :",
-       "special-categories-sort-count": "ordina par nùmaro",
-       "special-categories-sort-abc": "ordina alfabeticamente",
        "deletedcontributions": "Contributi utente scancelà",
        "deletedcontributions-title": "Contributi utente scancelà",
        "sp-deletedcontributions-contribs": "contributi",
        "import-logentry-upload-detail": "{{PLURAL:$1|una revixion importà|$1 revixion importae}}",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|una revixion importà|$1 revixion importae}} da $2",
        "javascripttest": "Sperimentasion JavaScript",
-       "javascripttest-pagetext-noframework": "Sta pàjina ła xe riservà a l'execusion de test de JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Framework de test sconosùo \"$1\".",
-       "javascripttest-pagetext-frameworks": "Par piasere, siełi uno de i seguenti framework pa' i test: $1",
-       "javascripttest-pagetext-skins": "Siełi na skin có cui exeguir i test:",
        "javascripttest-qunit-intro": "Varda so mediawiki.org ła [$1 documentasion rivardante i test].",
        "tooltip-pt-userpage": "La {{GENDER:|to}} pagina utente",
        "tooltip-pt-anonuserpage": "La pàxena utente de sto indirizo IP",
        "version-libraries-description": "Descrision",
        "version-libraries-authors": "Autori",
        "redirect": "Rimando par file, utente, pagina o ID de version.",
-       "redirect-legend": "Rimandar a un file o na pagina",
        "redirect-summary": "Sta pagina speciale la rimanda a un file (dato el nome del file), a na pagina (dato l'ID de la revision), o a na pagina utente (dato l'ID de l'utente).",
        "redirect-submit": "Và",
        "redirect-lookup": "Ciave de riserca:",
        "redirect-not-exists": "Valor mia catà",
        "fileduplicatesearch": "Riçerca dei file duplicà",
        "fileduplicatesearch-summary": "Riçerca de eventuali duplicati del file in base al valor de ''hash''.",
-       "fileduplicatesearch-legend": "Riçerca de un duplicato",
        "fileduplicatesearch-filename": "Nome del file:",
        "fileduplicatesearch-submit": "Riçerca",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />Dimension: $3<br />Tipo MIME: $4",
index 5419b68..2b12101 100644 (file)
        "categories": "Kategorijad",
        "categoriespagetext": "{{PLURAL:$1|Neciš kategorijas|Neniš kategorijoiš }} om lehtpolid vai mediafailoid.\n[[Special:UnusedCategories|Kävumatomid kategorijoid]] ei ozutagoi naku.\nKc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].",
        "categoriesfrom": "Ozutada kategorijad, necišpäi augotaden:",
-       "special-categories-sort-count": "järgeta lugumäran mödhe",
-       "special-categories-sort-abc": "järgeta kirjamišton mödhe",
        "deletedcontributions": "Čutud tond",
        "deletedcontributions-title": "Čutud tond",
        "sp-deletedcontributions-contribs": "tond",
index 3ca8f0c..d788a2f 100644 (file)
        "noemail": "Thành viên “$1” không ghi thư điện tử.",
        "noemailcreate": "Bạn cần cung cấp một địa chỉ thư điện tử hợp lệ",
        "passwordsent": "Mật khẩu mới đã được gửi tới thư điện tử của thành viên “$1”. Xin đăng nhập lại sau khi nhận thư.",
-       "blocked-mailpassword": "Địa chỉ IP của bạn bị cấm không được sửa đổi, do đó cũng không được phép dùng chức năng phục hồi mật khẩu để tránh sai phạm.",
+       "blocked-mailpassword": "Địa chỉ IP của bạn bị cấm không được sửa đổi. Để ngăn ngừa việc lạm dụng, sẽ không được phép dùng chức năng phục hồi mật khẩu từ địa chỉ IP này.",
        "eauthentsent": "Thư xác nhận đã được gửi cho địa chỉ thư điện tử được chỉ định. Trước khi bạn có thể nhận thư, bạn cần thực hiện hướng dẫn trong thư để xác nhận tài khoản thuộc về bạn.",
        "throttled-mailpassword": "Mật khẩu đã được gửi đến cho bạn trong vòng {{PLURAL:$1|$1 giờ|$1 giờ}} đồng hồ trở lại. Để tránh lạm dụng, chỉ có thể gửi mật khẩu $1 giờ đồng hồ một lần.",
        "mailerror": "Lỗi gửi thư : $1",
        "categories-submit": "Xem",
        "categoriespagetext": "{{PLURAL:$1|Thể loại|Các thể loại}} dưới đây có trang hoặc tập tin phương tiện.\nNhững [[Special:UnusedCategories|thể loại trống]] không được hiển thị tại đây.\nXem thêm [[Special:WantedCategories|thể loại cần thiết]].",
        "categoriesfrom": "Hiển thị thể loại bằng đầu từ:",
-       "special-categories-sort-count": "xếp theo số trang",
-       "special-categories-sort-abc": "xếp theo vần",
        "deletedcontributions": "Đóng góp đã bị xóa của thành viên",
        "deletedcontributions-title": "Đóng góp đã bị xóa của thành viên",
        "sp-deletedcontributions-contribs": "đóng góp",
        "import-logentry-upload-detail": "Đã nhập $1 phiên bản",
        "import-logentry-interwiki-detail": "Đã nhập $1 phiên bản từ $2",
        "javascripttest": "Kiểm thử JavaScript",
-       "javascripttest-pagetext-noframework": "Trang này dành cho việc chạy các ca kiểm thử JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Nền tảng kiểm thử không rõ “$1”.",
        "javascripttest-pagetext-unknownaction": "Tác vụ không rõ “$1”.",
-       "javascripttest-pagetext-frameworks": "Hãy chọn một trong những nền tảng kiểm thử sau: $1",
-       "javascripttest-pagetext-skins": "Hãy chọn giao diện để sử dụng với các ca kiểm thử:",
        "javascripttest-qunit-intro": "Xem [$1 tài liệu kiểm thử] tại mediawiki.org.",
        "tooltip-pt-userpage": "Trang cá nhân của tôi",
        "tooltip-pt-anonuserpage": "Trang của IP bạn đang dùng",
        "version-libraries-description": "Miêu tả",
        "version-libraries-authors": "Tác giả",
        "redirect": "Đổi hướng đến tập tin, người dùng, trang, hoặc ID đăng nhập",
-       "redirect-legend": "Đổi hướng đến tập tin hoặc trang",
        "redirect-summary": "Trang đặc biệt này đổi hướng đến một tập tin (theo tên tập tin được cho vào), trang (theo số phiên bản hoặc số trang được cho vào), trang cá nhân (theo số thành viên), hoặc mục nhật trình (theo số mục nhật trình). Cách sử dụng: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], hoặc [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Đi",
        "redirect-lookup": "Tra cứu:",
        "redirect-not-exists": "Không tìm thấy giá trị",
        "fileduplicatesearch": "Tìm kiếm các tập tin trùng lắp",
        "fileduplicatesearch-summary": "Tìm kiếm các bản sao y hệt với tập tin khác, theo giá trị băm của nó.",
-       "fileduplicatesearch-legend": "Tìm kiếm tập tin trùng lắp",
        "fileduplicatesearch-filename": "Tên tập tin:",
        "fileduplicatesearch-submit": "Tìm kiếm",
        "fileduplicatesearch-info": "$1×$2 điểm ảnh<br />Kích thước tập tin: $3<br />Kiểu MIME: $4",
        "sessionprovider-generic": "phiên $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "phiên dựa trên cookie",
        "sessionprovider-nocookies": "Cookie có thể bị vô hiệu hóa. Đảm bảo bạn đã bật cookie và bắt đầu một lần nữa.",
-       "randomrootpage": "Trang gốc ngẫu nhiên"
+       "randomrootpage": "Trang gốc ngẫu nhiên",
+       "log-action-filter-protect": "Loại bảo vệ:",
+       "log-action-filter-upload": "Loại tải lên:",
+       "log-action-filter-all": "Tất cả",
+       "log-action-filter-block-block": "Khối",
+       "log-action-filter-import-upload": "Nhập bằng cách tải lên XML",
+       "log-action-filter-newusers-create": "Tạo bởi người dùng vô danh",
+       "log-action-filter-newusers-create2": "Tạo bởi người dùng đã đăng ký",
+       "log-action-filter-newusers-byemail": "Tạo với mật khẩu được gửi qua thư điện tử",
+       "log-action-filter-protect-protect": "Bảo vệ",
+       "log-action-filter-rights-autopromote": "Tự động thay đổi",
+       "log-action-filter-upload-upload": "Tải lên mới",
+       "log-action-filter-upload-overwrite": "Tải lên lại"
 }
index cad647b..998e2c5 100644 (file)
        "categories": "Klads",
        "categoriespagetext": "Klads sököl labons padis u ragivis.\n[[Special:UnusedCategories|Klads no pageböls]] no pajonons is.\nLogolös i [[Special:WantedCategories|klads pevilöl]].",
        "categoriesfrom": "Jonön padis primölo de:",
-       "special-categories-sort-count": "leodükön ma num",
-       "special-categories-sort-abc": "leodükön ma lafab",
        "deletedcontributions": "Gebanakeblünots pemoüköl",
        "deletedcontributions-title": "Gebanakeblünots pemoüköl",
        "sp-deletedcontributions-contribs": "keblünots",
        "redirect-file": "Ragivanem",
        "fileduplicatesearch": "Sukön ragivis petelüköl",
        "fileduplicatesearch-summary": "Sukön ragivis petelüköl stabü völad kontrolasaedota onsik.",
-       "fileduplicatesearch-legend": "Sukön telükoti",
        "fileduplicatesearch-filename": "Ragivanem:",
        "fileduplicatesearch-submit": "Sukön",
        "fileduplicatesearch-info": "pixels $1 × $2 <br />Ragivagretot: $3<br />MIME-sot: $4",
index a397552..87f978b 100644 (file)
        "summary-preview": "摘要预览:",
        "subject-preview": "主题预览:",
        "blockedtitle": "用户拨查封",
-       "blockedtext": "侬个用户名或IP地址已经拨$1查封。\n\n箇趟查封是由$1所封个。原因是''$2''。\n\n* 箇趟查封开始个辰光是:$8\n* 箇趟查封到期个辰光是:$6\n* 对于畀查封者:$7\n\n侬可以联络$1或者其他个 [[{{MediaWiki:Grouppage-sysop}}|管理员]],讨论箇趟查封。\n除非侬已经垃侬个 [[Special:Preferences|个人设置]]里向设置仔一只有效个电子邮件地址,弗然侬弗好使用「e-mail箇位用户」功能。当设置了一只有效个电子邮件地址之后,箇只功能是弗会畀封锁个。\n\n侬个IP地址是$3,而该查封ID是 #$5。 请垃拉侬个查询里向注明以上所有资料。",
-       "autoblockedtext": "侬个IP地址已经自动查封,由于之前另一位 搭侬用一样IP个用户畀$1所查封。\n而查封个原因是:\n\n:''$2''\n\n* 箇趟查封个开始辰光是:$8\n* 箇趟查封个到期辰光是:$6\n* 对于畀查封者:$7\n\n侬可以联络$1或者其他个 [[{{MediaWiki:Grouppage-sysop}}|管理员]],讨论箇趟查封。\n除非侬已经垃侬个 [[Special:Preferences|个人设置]]里向设置仔一只有效个电子邮件地址,弗然侬弗好使用「e-mail箇位用户」功能。当设置了一只有效个电子邮件地址之后,箇只功能是弗会畀封锁个。\n\n侬个IP地址是$3,而该查封ID是 #$5。 请垃拉侬个查询里向注明以上所有资料。",
+       "blockedtext": "<strong>侬个用户名或IP地址已经畀查封。</strong>\n\n由$1查封。畀出个原因是<em>$2</em>。\n\n* 查封开始辰光:$8\n* 查封到期辰光:$6\n* 目标查封对象:$7\n\n侬可以联络$1或者其他个[[{{MediaWiki:Grouppage-sysop}}|管理员]],讨论箇趟查封。侬弗好使用“电邮联系箇位用户”功能,除非侬已经垃侬个[[Special:Preferences|账号设置]]里向指定仔一只有效个电邮地址并且朆畀禁止使用箇只功能。侬当前个IP地址是$3,而该查封ID是#$5。请垃拉侬个查询里向注明以上所有资料。",
+       "autoblockedtext": "侬个IP地址已经畀自动查封,因为之前另一位畀$1查封个用户搭侬用一样个IP地址。查封个原因是:\n\n:<em>$2</em>\n\n* 查封开始辰光:$8\n* 查封到期辰光:$6\n* 目标查封对象:$7\n\n侬可以联络$1或者其他个[[{{MediaWiki:Grouppage-sysop}}|管理员]],讨论箇趟查封。\n\n注意侬弗好使用“电邮联系箇位用户”功能,除非侬已经垃侬个[[Special:Preferences|账号设置]]里向指定仔一只有效个电邮地址并且朆畀禁止使用箇只功能。\n\n侬当前个IP地址是$3,而该查封ID是#$5。请垃拉侬个查询里向注明以上所有资料。",
        "blockednoreason": "朆畀出原因",
        "whitelistedittext": "请$1编辑。",
        "confirmedittext": "垃拉编辑此页之前侬必须确认侬个邮箱地址。请通过[[Special:Preferences|个人设置]]设置并验证侬个邮箱地址。",
        "noarticletext-nopermission": "箇只页面目前呒不文本。侬可以垃拉其他页面高头[[Special:Search/{{PAGENAME}}|寻箇页标题]],或者<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 寻相关日志]</span>,但必过侬呒不权限建立箇只页面。",
        "userpage-userdoesnotexist": "用户账户“<nowiki>$1</nowiki>”弗曾创建。请垃拉创建/编辑迭个页面前头先检查一记。",
        "userpage-userdoesnotexist-view": "用户账户“$1”弗曾创建。",
-       "blocked-notice-logextract": "箇位用户箇歇畀封锁垃许。\n下头有最近个封锁纪录以供参考:",
+       "blocked-notice-logextract": "箇位用户箇歇畀封锁垃许。下头有最近个封锁纪录以供参考:",
        "clearyourcache": "<strong>注意:</strong>垃拉保存之后,侬作兴要清除浏览器个缓存才好看见改变。\n* <strong>Firefox或Safari:</strong>揿牢“Shift”个同时点击“刷新”,或揿“Ctrl-F5”或“Ctrl-R”(Mac上是“⌘-R”)\n* <strong>Google Chrome:</strong>揿“Ctrl-Shift-R”(Mac上是“⌘-Shift-R”)\n* <strong>Internet Explorer:</strong>揿牢“Ctrl”个同时点击“刷新”,或揿“Ctrl-F5”\n* <strong>Opera:</strong>垃拉“工具→首选项”里向清除缓存",
        "usercssyoucanpreview": "'''提示:''' 垃拉保存之前请用“{{int:showpreview}}”揿钮来测试新 CSS 。",
        "userjsyoucanpreview": "'''提示:''' 垃拉保存之前请用“{{int:showpreview}}”揿钮来测试新 JavaScript 。",
        "page_first": "最前",
        "page_last": "阿末",
        "histlegend": "选择比较版本:标记要比较个两只版本,回车或者揿页面底里个揿钮。<br /> 图例:(当前) = 搭当前版本有啥两样, (上个) = 搭上个版本有啥两样,小 = 小改动。",
-       "history-fieldset-title": "浏览史",
+       "history-fieldset-title": "浏览史",
        "history-show-deleted": "只显示删脱个",
        "histfirst": "顶早",
        "histlast": "顶晏",
        "mergelog": "合并日志",
        "revertmerge": "反合并",
        "mergelogpagetext": "下底是只最近发生个页面历史合并个记录列表。",
-       "history-title": "“$1”的版本历史",
+       "history-title": "“$1”个修订历史",
        "difference-title": "“$1”版本间个差别",
        "difference-title-multipage": "页面“$1”搭“$2”之间个差别",
        "difference-multipage": "(页面间个差别)",
        "nextn-title": "后$1个结果",
        "shown-title": "一页显示$1个结果",
        "viewprevnext": "望($1 {{int:pipe-separator}} $2)($3)",
-       "searchmenu-exists": "'''箇wiki里有一页名字“[[:$1]]”哉'''",
+       "searchmenu-exists": "<strong>箇wiki里有只叫“[[:$1]]”个页面哉。</strong>{{PLURAL:$2|0=|另见寻着个结果。}}",
        "searchmenu-new": "<strong>登箇Wiki上建“[[:$1]]”页!</strong>{{PLURAL:$2|0=|另见寻着个页面。|另见搜寻个结果。}}",
        "searchprofile-articles": "内容页",
        "searchprofile-images": "多媒体",
        "log": "记录",
        "alllogstext": "所有{{SITENAME}}公开日志个联合展示。侬可以选择日志类型、用户名(区分大小写)或者相关页面(区分大小写)来缩小搜寻范围。",
        "allpages": "全部页面",
-       "nextpage": "下页 ($1)",
+       "nextpage": "下一页($1)",
        "prevpage": "上一页($1)",
        "allpagesfrom": "显示个页面开始于:",
        "allpagesto": "显示从此地结束个页面:",
        "table_pager_first": "头一页",
        "table_pager_last": "阿末一页",
        "table_pager_limit": "显示 $1 条每页",
-       "autoredircomment": "重定向页面[[$1]]",
+       "autoredircomment": "重定向页面[[$1]]",
        "autosumm-new": "新页面:“$1”",
        "watchlistedit-normal-title": "编辑监视列表",
        "watchlistedit-normal-legend": "从关注表里向拿脱标题",
index dd0b17d..ef1552c 100644 (file)
        "categories-submit": "ווייזן",
        "categoriespagetext": "די פֿאלגענדע {{PLURAL:$1| קאַטעגאָריע אַנטהאַלט|קאַטעגאָריעס אַנטהאַלטן}} בלעטער אדער מעדיע.\n[[Special:UnusedCategories|אומבאַניצטע קאַטעגאריעס]] זענען נישט געוויזן דא.\nזעט אויך [[Special:WantedCategories|געזוכטע קאַטעגאריעס]].",
        "categoriesfrom": "ווײַזן קאַטעגאריעס אָנהייבנדיג פֿון:",
-       "special-categories-sort-count": "סארטיר לויטן צאל בלעטער",
-       "special-categories-sort-abc": "סארטירן אַלפֿאַבעטיש",
        "deletedcontributions": "אויסגעמעקטע באַניצער בײַשטײַערונגען",
        "deletedcontributions-title": "אויסגעמעקטע באַניצער בײַשטײַערונגען",
        "sp-deletedcontributions-contribs": "בײַשטײַערונגען",
        "redirect-not-exists": "ווערט נישט געטראפן",
        "fileduplicatesearch": "זוכן דופליקאַטע טעקעס",
        "fileduplicatesearch-summary": "זוכן דופליקאטע טעקעס באזירט אויף האש־ווערטן.",
-       "fileduplicatesearch-legend": "זוכן א דופליקאַט",
        "fileduplicatesearch-filename": "טעקע:",
        "fileduplicatesearch-submit": "זוכן",
        "fileduplicatesearch-info": "$1 × $2 פיקסעל<br />טעקע גרייס: $3<br /> טיפ MIME: $4",
index 4afce94..3b75367 100644 (file)
        "categories": "Àwọn ẹ̀ka",
        "categoriespagetext": "{{PLURAL:$1|Ẹ̀ka|Àwọn ẹ̀ka}} yìí ní ojúewé tàbí amóhùnmáwòrán.\n[[Special:UnusedCategories|Àwọn ẹ̀ka aláìlò]] kò hàn níbí.\nBákannáà ẹ wo [[Special:WantedCategories|àwọn ẹ̀ka wíwá]].",
        "categoriesfrom": "Ìfihàn àwọn ẹ̀ka nípa bíbẹ̀rẹ̀ láti:",
-       "special-categories-sort-count": "títò bíi nọ́mbà",
-       "special-categories-sort-abc": "títò bíi lẹ́tà",
        "deletedcontributions": "Àwọn àfikún píparẹ́ oníṣe",
        "deletedcontributions-title": "Àwọn àfikún píparẹ́ oníṣe",
        "sp-deletedcontributions-contribs": "àwọn àfikún",
        "import-logentry-upload-detail": "{{PLURAL:$1|Àtúnyẹ̀wò|Àwọn àtúnyẹ̀wò}} $1",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|Àtúnyẹ̀wò|Àwọn àtúnyẹ̀wò}} $1 láti $2",
        "javascripttest": "Ìdánwò JavaScript",
-       "javascripttest-pagetext-noframework": "Ojúewé yìí jẹ́ dídásílẹ̀ fún ṣíṣe ìdánwò JavaScript.",
-       "javascripttest-pagetext-skins": "Ẹ mú irú ojú ara tí ẹ fẹ́ lò láti ṣe àdánwò náà:",
        "javascripttest-qunit-intro": "Ẹ wo [$1 ìwé aṣàlàyé ìdánwò] ní mediawiki.org.",
        "tooltip-pt-userpage": "Ojúewé oníṣe yín",
        "tooltip-pt-anonuserpage": "Ojúewé oníṣe fún àdírẹ́ẹ̀sì IP tí ẹ únlò láti ṣàtúnṣe",
        "version-entrypoints-header-url": "URL",
        "fileduplicatesearch": "Ìṣàwárí fún àwọn fáìlì àdáwòkọ",
        "fileduplicatesearch-summary": "Ìṣàwárí fún àwọn fáìlì àdáwòkọ gẹ́gẹ́bí nọ́mbà hash",
-       "fileduplicatesearch-legend": "Ìṣàwárí fún àdáwòkọ kan",
        "fileduplicatesearch-filename": "Orúkọ fáìlì:",
        "fileduplicatesearch-submit": "Àwárí",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />Ìtóbi fáìlì: $3<br />Irú MIME: $4",
index bb65fac..1e1cd61 100644 (file)
        "categories": "類",
        "categoriespagetext": "下面嘅{{PLURAL:$1|類}}有版或媒體。\n[[Special:UnusedCategories|未用類]]唔會響呢度列示。\n請同時參閱[[Special:WantedCategories|需要嘅分類]]。",
        "categoriesfrom": "顯示由呢項起嘅類:",
-       "special-categories-sort-count": "跟數量排",
-       "special-categories-sort-abc": "跟字母排",
        "deletedcontributions": "已經刪除咗嘅用戶貢獻",
        "deletedcontributions-title": "已經刪除咗嘅用戶貢獻",
        "sp-deletedcontributions-contribs": "貢獻",
        "import-logentry-upload-detail": "$1個修訂都已經倒入咗",
        "import-logentry-interwiki-detail": "由$2倒入嘅$1個修訂",
        "javascripttest": "JavaScript測試",
-       "javascripttest-pagetext-noframework": "呢頁留畀行JavaScript測試。",
-       "javascripttest-pagetext-unknownframework": "唔知嘅測試框架「$1」。",
        "javascripttest-pagetext-unknownaction": "唔知嘅動作「$1」。",
-       "javascripttest-pagetext-frameworks": "請揀一個測試框架:$1",
-       "javascripttest-pagetext-skins": "揀個外觀去行測試:",
        "javascripttest-qunit-intro": "睇 mediawiki.org 嘅 [$1 測試文檔]。",
        "tooltip-pt-userpage": "你嘅用戶頁",
        "tooltip-pt-anonuserpage": "你編輯呢個IP嘅對應用戶頁",
        "redirect-file": "檔名",
        "fileduplicatesearch": "㨂重覆檔案",
        "fileduplicatesearch-summary": "用重覆檔案嘅切細值去搵個檔案係唔係重覆。",
-       "fileduplicatesearch-legend": "搵重覆",
        "fileduplicatesearch-filename": "檔名:",
        "fileduplicatesearch-submit": "搵",
        "fileduplicatesearch-info": "$1 × $2 像素<br />檔案大細: $3<br />MIME類型: $4",
index 29aa7bf..89972ed 100644 (file)
        "tog-watchdefault": "添加我编辑的页面和文件至我的监视列表",
        "tog-watchmoves": "添加我移动的页面和文件至我的监视列表",
        "tog-watchdeletion": "添加我删除的页面和文件至我的监视列表",
+       "tog-watchuploads": "添加我上传的新文件至我的监视列表",
        "tog-watchrollback": "添加我执行过回退的页面至我的监视列表",
        "tog-minordefault": "默认标记所有编辑为小编辑",
        "tog-previewontop": "在编辑框上方显示预览",
        "retrievedfrom": "取自“$1”",
        "youhavenewmessages": "{{PLURAL:$3|您}}有$1($2)。",
        "youhavenewmessagesfromusers": "{{PLURAL:$4|您}}有来自{{PLURAL:$3|其他用户|$3个用户}}的$1($2)。",
-       "youhavenewmessagesmanyusers": "有来自多个用户的$1($2)。",
+       "youhavenewmessagesmanyusers": "有来自多个用户的$1($2)。",
        "newmessageslinkplural": "{{PLURAL:$1|新信息|999=新消息}}",
        "newmessagesdifflinkplural": "最后{{PLURAL:$1|更改|999=更改}}",
        "youhavenewmessagesmulti": "你在$1有新信息",
        "loginerror": "登录错误",
        "createacct-error": "账户创建出错",
        "createaccounterror": "无法建立账户:$1",
-       "nocookiesnew": "该用户帐户已被创建,但登录失败。{{SITENAME}}使用Cookie实现用户登录。您已禁用Cookie,请启用Cookie,然后使用的新用户名与密码登录。",
+       "nocookiesnew": "该用户帐户已被创建,但登录失败。{{SITENAME}}使用Cookie实现用户登录。您已禁用Cookie,请启用Cookie,然后使用的新用户名与密码登录。",
        "nocookieslogin": "{{SITENAME}}使用Cookie实现用户登录。您已停用Cookie。请启用Cookie后再试。",
        "nocookiesfornew": "该用户账户未被创建,我们不能确认它的来源。请确保你已启用Cookie,刷新本页后再试。",
        "noname": "未指定有效的用户名。",
        "loginsuccesstitle": "已登录",
        "loginsuccess": "<strong>您现在已经以\"$1\"的身份登录了{{SITENAME}}。</strong>",
        "nosuchuser": "没有名为“$1”的用户。用户名区分大小写。请检查你的拼写或[[Special:UserLogin/signup|创建新账户]]。",
-       "nosuchusershort": "没有名为“$1”的用户。请检查的拼写。",
+       "nosuchusershort": "没有名为“$1”的用户。请检查的拼写。",
        "nouserspecified": "您必须指定一个用户名。",
        "login-userblocked": "该用户已被封禁,禁止登录。",
        "wrongpassword": "您输入的密码错误。请重试。",
        "changeemail-throttled": "您最近尝试了太多次登录。请等待$1后再试。",
        "changeemail-nochange": "请输入一个不同的新的电子邮件地址。",
        "resettokens": "重置密钥",
-       "resettokens-text": "你可以在这里重置允许访问与你的账户有关的特定私人数据的密钥。\n\n如果你意外将它们分享给他人,或是你的账户已经被入侵,你应该重置它们。",
+       "resettokens-text": "您可以在这里重置允许访问与您的账户有关的特定私人数据的密钥。\n\n如果您意外将它们分享给他人,或是您的账户已经被入侵,您应该重置它们。",
        "resettokens-no-tokens": "没有可以重置的密钥。",
        "resettokens-tokens": "密钥:",
        "resettokens-token-label": "$1(当前值:$2)",
        "anoneditwarning": "<strong>警告:</strong>您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您<strong>[$1 登录]</strong>或<strong>[$2 创建]</strong>一个账户,您的编辑将归属于您的用户名,且将享受其他好处。",
        "anonpreviewwarning": "<em>您没有登录。保存将您的IP地址记录至此页面的编辑历史中。</em>",
        "missingsummary": "<strong>提示:</strong>您没有提供编辑摘要。如果您再次点击“{{int:savearticle}}”,您的编辑将不带摘要保存。",
-       "selfredirect": "<strong>警告:</strong>您正在将此页面重定向至它自己。\n您可能指定了错误的重定向目标,或者您正在编辑错误的页面。\n如果您再次点击“{{int:savearticle}}”,重定向将无论如何被创建。",
+       "selfredirect": "<strong>警告:</strong>您正在将此页面重定向至它自己。您可能指定了错误的重定向目标,或者您正在编辑错误的页面。如果您再次点击“{{int:savearticle}}”,重定向将无论如何被创建。",
        "missingcommenttext": "请在下面输入评论。",
        "missingcommentheader": "<strong>提示:</strong>您还没有为此评论提供一个标题。如果您再次点击“{{int:savearticle}}”,您的编辑将不带标题保存。",
        "summary-preview": "摘要预览:",
        "autoblockedtext": "您的IP地址因曾被一位被$1封禁的用户使用而被自动封禁。封禁原因:\n\n:<em>$2</em>\n\n* 开始时间:$8\n* 到期时间:$6\n* 目标用户:$7\n\n您可以联系$1或其他[[{{MediaWiki:Grouppage-sysop}}|管理员]]申诉该封禁。\n\n请注意,只有当您已在[[Special:Preferences|系统设置]]确认了电子邮件地址且未被禁止使用“电邮联系”功能时,才能发送电子邮件联系管理员。\n\n您当前的IP地址为$3,该封禁ID为#$5。\n请您在申诉内容中说明以上所有信息。",
        "blockednoreason": "未给出原因",
        "whitelistedittext": "请$1以编辑页面。",
-       "confirmedittext": "你必须确认你的电子邮件地址才能编辑页面。请通过[[Special:Preferences|系统设置]]设置并确认你的电子邮件地址。",
+       "confirmedittext": "您必须确认您的电子邮件地址才能编辑页面。请通过[[Special:Preferences|系统设置]]设置并确认您的电子邮件地址。",
        "nosuchsectiontitle": "没有这个段落",
        "nosuchsectiontext": "您尝试编辑的章节并不存在。\n可能是在您查看页面时已经移动或删除。",
        "loginreqtitle": "需要登录",
        "usercssyoucanpreview": "<strong>提示:</strong>在保存前请用“{{int:showpreview}}”按钮来测试您新的 CSS 。",
        "userjsyoucanpreview": "<strong>提示:</strong>在保存前请用“{{int:showpreview}}”按钮来测试您新的 JavaScript 。",
        "usercsspreview": "<strong>请记住您现在只是在预览你的用户CSS。它尚未保存!</strong>",
-       "userjspreview": "<strong>请记住你现在只是在测试/预览你的用户JavaScript。它尚未保存!</strong>",
+       "userjspreview": "<strong>请记住您现在只是在测试/预览您的用户JavaScript。它尚未保存!</strong>",
        "sitecsspreview": "<strong>请记住你现在只是在预览该CSS。它尚未保存!</strong>",
-       "sitejspreview": "<strong>请记住现在只是在预览该JavaScript代码。它尚未保存!</strong>",
+       "sitejspreview": "<strong>请记住现在只是在预览该JavaScript代码。它尚未保存!</strong>",
        "userinvalidcssjstitle": "<strong>警告:</strong>不存在皮肤“$1”。注意自定义的 .css 和 .js 页要使用小写标题,例如,{{ns:user}}:Foo/vector.css 不同于 {{ns:user}}:Foo/Vector.css。",
        "updated": "(已更新)",
        "note": "<strong>注意:</strong>",
        "editingsection": "编辑“$1(段落)”",
        "editingcomment": "编辑“$1”(新段落)",
        "editconflict": "编辑冲突:$1",
-       "explainconflict": "其他用户在你开始编辑后更改了该页面。上面的文字区含有该页面当前的文字。下面的文字区显示你的更改。你必须把你的更改合并至现有文字。'''只有'''当你单击“{{int:savearticle}}”后,上面的文字区中的文字才会被保存。",
+       "explainconflict": "其他用户在您开始编辑后更改了该页面。上面的文字区含有该页面当前的文字。下面的文字区显示您的更改。您必须把您的更改合并至现有文字。<strong>只有</strong>当您单击“{{int:savearticle}}”后,上面的文字区中的文字才会被保存。",
        "yourtext": "您的文字",
        "storedversion": "已保存的版本",
        "nonunicodebrowser": "<strong>警告:您的浏览器不兼容Unicode编码。</strong>这里有一个工作区将使您能安全地编辑页面:非ASCII字符将以十六进制编码方式出现在编辑框中。",
        "searchall": "所有",
        "showingresults": "下面显示从第<strong>$2</strong>条结果开始的<strong>$1</strong>条结果。",
        "showingresultsinrange": "下面显示区间#<strong>$2</strong>至#<strong>$3</strong>的<strong>$1</strong>条结果。",
-       "search-showingresults": "{{PLURAL:$4|<strong>$3</strong>条结果中的<strong>$1</strong>条|<strong>$3</strong>条结果中的<strong>$1~$2</strong>条}}",
+       "search-showingresults": "{{PLURAL:$4|第<strong>$1</strong>条结果,共<strong>$3</strong>条|第<strong>$1~$2</strong>条结果,共<strong>$3</strong>条}}",
        "search-nonefound": "找不到和查询相匹配的结果。",
        "search-nonefound-thiswiki": "在此网站找不到匹配查询的结果。",
        "powersearch-legend": "高级搜索",
        "prefs-help-gender": "该设置为可选项。软件根据该值在称呼您及对他人提及您时使用适当的语法性别。该信息会被公开。",
        "email": "电子邮件",
        "prefs-help-realname": "真实姓名是选填项目。如果提供,它可能用于署名您的贡献。",
-       "prefs-help-email": "电子邮件地址是选填项,但是当你忘记你的密码要重置密码时,需要该信息。",
+       "prefs-help-email": "电子邮件地址是选填项,但是当您忘记您的密码要重置密码时,需要该信息。",
        "prefs-help-email-others": "您也可以选择让其他用户通过您的用户或讨论页面上的链接用电子邮件联系您。其他用户联系您时您的电子邮件地址不会显示。",
        "prefs-help-email-required": "电子邮件地址是必填项目。",
        "prefs-info": "基本信息",
        "recentchangeslinked-page": "页面名称:",
        "recentchangeslinked-to": "显示链到所给出的页面",
        "recentchanges-page-added-to-category": "[[:$1]]已添加至分类",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]]å\8f\8a[[Special:WhatLinksHere/$1|å\85¶ä»\96{{PLURAL:$2|$2个页é\9d¢}}]]已添å\8a è\87³å\88\86ç±»",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]]已添å\8a è\87³å\88\86ç±»ï¼\8c[[Special:WhatLinksHere/$1|此页é\9d¢å\8c\85å\90«å\9c¨å\85¶ä»\96页é\9d¢ä¹\8bå\86\85]]",
        "recentchanges-page-removed-from-category": "[[:$1]]已从分类中移除",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]]å\8f\8a[[Special:WhatLinksHere/$1|å\85¶ä»\96{{PLURAL:$2|$2个页é\9d¢}}]]å·²ä»\8eå\88\86类中移é\99¤",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]]å·²ä»\8eå\88\86类中移é\99¤ï¼\8c[[Special:WhatLinksHere/$1|此页é\9d¢å\8c\85å\90«å\9c¨å\85¶ä»\96页é\9d¢ä¹\8bå\86\85]]",
        "autochange-username": "MediaWiki自动化更改",
        "upload": "上传文件",
        "uploadbtn": "上传文件",
        "showhideselectedlogentries": "更改选定日志记录的可见性",
        "log-edit-tags": "编辑选定日志记录的标签",
        "checkbox-select": "选择:$1",
-       "checkbox-all": "å\85¨é\83¨",
-       "checkbox-none": "",
+       "checkbox-all": "å\85¨é\80\89",
+       "checkbox-none": "全不选",
        "checkbox-invert": "反选",
        "allpages": "所有页面",
        "nextpage": "下一页($1)",
        "categories-submit": "显示",
        "categoriespagetext": "以下{{PLURAL:$1|分类包含}}页面或媒体文件。[[Special:UnusedCategories|未使用分类]]不在这里显示。另请见[[Special:WantedCategories|需要的分类]]。",
        "categoriesfrom": "显示分类开始于:",
-       "special-categories-sort-count": "按数量排列",
-       "special-categories-sort-abc": "按字母排列",
        "deletedcontributions": "被删除的用户贡献",
        "deletedcontributions-title": "被删除的用户贡献",
        "sp-deletedcontributions-contribs": "贡献",
        "enotif_lastvisited": "请浏览 $1 查看在你上次访问后的所有更改。",
        "enotif_lastdiff": "请浏览 $1 查看该更改。",
        "enotif_anon_editor": "匿名用户$1",
-       "enotif_body": "亲爱的$WATCHINGUSERNAME:\n\n你好!\n\n$PAGEINTRO$NEWPAGE\n编辑摘要:$PAGESUMMARY $PAGEMINOREDIT\n\n你可以通过以下方式联系编者:\n电子邮件:$PAGEEDITOR_EMAIL\n用户页面:$PAGEEDITOR_WIKI\n\n在你登录并访问该页面之前,我们不会发送新增更改的通知。\n你也可以重设你的监视列表中所有监视页面的通知标志。\n\n{{SITENAME}}通知系统\n--\n更改邮件通知设置:\n{{canonicalurl:{{#special:Preferences}}}}\n更改监视列表设置:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n从监视列表中删除该页面:\n$UNWATCHURL\n反馈与其他帮助:\n$HELPPAGE",
+       "enotif_body": "亲爱的$WATCHINGUSERNAME:\n\n您好!\n$PAGEINTRO$NEWPAGE\n\n编辑摘要:$PAGESUMMARY $PAGEMINOREDIT\n\n可通过以下方式联系编辑者:\n电子邮件:$PAGEEDITOR_EMAIL\n用户页面:$PAGEEDITOR_WIKI\n\n在您登录并访问该页面之前,我们不会发送新增更改的通知。您也可以重设您的监视列表中所有监视页面的通知标志。\n\n{{SITENAME}}通知系统\n\n--\n更改邮件通知设置:\n{{canonicalurl:{{#special:Preferences}}}}\n更改监视列表设置:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n从监视列表中删除该页面:\n$UNWATCHURL\n反馈与其他帮助:\n$HELPPAGE",
        "created": "创建",
        "changed": "更改",
        "deletepage": "删除页面",
        "delete-legend": "删除",
        "historywarning": "<strong>警告:</strong>您将要删除的页面有约$1次{{PLURAL:$1|修订}}的历史:",
        "historyaction-submit": "显示",
-       "confirmdeletetext": "您即将删除一个页面或图像以及其历史。\n请确定您要进行此项操作,并且了解其后果,同时您的行为符合[[{{MediaWiki:Policy-url}}]]。",
+       "confirmdeletetext": "您即将删除一个页面或图像以及其历史。请确定您要进行此项操作,并且了解其后果,同时您的行为符合[[{{MediaWiki:Policy-url}}|方针]]。",
        "actioncomplete": "操作完成",
        "actionfailed": "操作失败",
        "deletedtext": "“$1”已被删除。最近的删除日志请见$2。",
        "tooltip-p-logo": "访问首页",
        "tooltip-n-mainpage": "访问首页",
        "tooltip-n-mainpage-description": "访问首页",
-       "tooltip-n-portal": "关于本项目,你可做的事,何处找到你所需",
+       "tooltip-n-portal": "关于本项目,您可做的事,何处找到您所需",
        "tooltip-n-currentevents": "查看当前事件的背景信息",
        "tooltip-n-recentchanges": "本wiki最近更改的列表",
        "tooltip-n-randompage": "载入一个随机页面",
        "namespacesall": "所有",
        "monthsall": "所有",
        "confirmemail": "确认电子邮件地址",
-       "confirmemail_noemail": "你还没有在你的[[Special:Preferences|系统设置]]中设置有效的电子邮件地址。",
+       "confirmemail_noemail": "您还没有在您的[[Special:Preferences|系统设置]]中设置有效的电子邮件地址。",
        "confirmemail_text": "{{SITENAME}}要求您在使用邮件功能之前验证您的邮箱地址。\n点击以下按钮可向您的邮箱发送一封确认邮件。该邮件包含有一行代码链接;\n请在您的浏览器中加载此链接以确认您的邮箱地址是有效的。",
        "confirmemail_pending": "一个确认码已经被发送到您的邮箱,您可能需要等几分钟才能收到。如果无法收到,请再申请一个新的确认码。",
        "confirmemail_send": "邮件发送确认代码",
        "confirmemail_body_set": "拥有IP地址$1的用户(可能是您)在{{SITENAME}}将账户“$2”的电子邮箱地址设置为这个电子邮件地址。\n\n请确认这个账户是属于您的,并同时激活在{{SITENAME}}上的电子邮件功能。请\n在浏览器中打开下面的链接:\n\n$3\n\n如果这个账户*不是*属于您的,请打开下面的链接去取消电子邮件确认:\n\n$5\n\n确认码会在$4过期。",
        "confirmemail_invalidated": "电子邮件地址确认已取消",
        "invalidateemail": "取消电子邮件确认",
+       "notificationemail_subject_changed": "{{SITENAME}}注册的电子邮件地址已被更改",
+       "notificationemail_subject_removed": "{{SITENAME}}注册的电子邮件地址已被移除",
+       "notificationemail_body_changed": "来自IP地址$1的人(可能是您)在{{SITENAME}}上更改了账户“$2”的电子邮件地址至“$3”。\n\n如果这不是您,请立即联系一位网站管理员。",
+       "notificationemail_body_removed": "来自IP地址$1的人(可能是您)在{{SITENAME}}上移除了账户“$2”的电子邮件地址。\n\n如果这不是您,请立即联系一位网站管理员。",
        "scarytranscludedisabled": "[跨网站的编码转换不可用]",
        "scarytranscludefailed": "[提取$1失败]",
        "scarytranscludefailed-httpstatus": "[模板$1读取失败:HTTP $2]",
        "revdelete-uname-unhid": "公开用户名",
        "revdelete-restricted": "应用对管理员的限制",
        "revdelete-unrestricted": "删除对管理员的限制",
-       "logentry-block-block": "$1{{GENDER:$2|封禁了}}{{GENDER:$4|$3}},期限$5 $6",
+       "logentry-block-block": "$1{{GENDER:$2|封禁了}}{{GENDER:$4|$3}},期限$5 $6",
        "logentry-block-unblock": "$1{{GENDER:$2|解封了}}{{GENDER:$4|$3}}",
        "logentry-block-reblock": "$1将{{GENDER:$4|$3}}的封禁设置{{GENDER:$2|更改为}}持续时间$5 $6",
        "logentry-suppress-block": "$1{{GENDER:$2|封禁了}}{{GENDER:$4|$3}},持续时间$5 $6",
        "feedback-back": "返回",
        "feedback-bugcheck": "请检查本bug是否为[$1 已知bug]。",
        "feedback-bugnew": "我检查了。报告新bug",
-       "feedback-bugornote": "如果你准备好详细描述一个技术问题,请[$1 报告bug]。或者你可以使用下面的简单表格。你的评论将被添加至页面“[$3 $2]”,附有你的用户名。",
+       "feedback-bugornote": "如果您准备好详细描述一个技术问题,请[$1 报告bug]。或者您可以使用下面的简单表格。您的评论将被添加至页面“[$3 $2]”,附有您的用户名。",
        "feedback-cancel": "取消",
        "feedback-close": "完成",
        "feedback-external-bug-report-button": "提交技术报告",
        "sessionprovider-nocookies": "Cookie可能已被禁用。确保您已启用cookie,并重试。",
        "randomrootpage": "随机根页面",
        "log-action-filter-block": "封禁类型:",
+       "log-action-filter-contentmodel": "内容模型修改的类型:",
        "log-action-filter-delete": "删除类型:",
+       "log-action-filter-import": "导入的类型:",
+       "log-action-filter-managetags": "标签管理行为的类型:",
+       "log-action-filter-move": "移动的类型:",
+       "log-action-filter-newusers": "账户创建的类型:",
        "log-action-filter-patrol": "巡查类型:",
        "log-action-filter-protect": "保护类型:",
+       "log-action-filter-rights": "权限更改的类型",
+       "log-action-filter-suppress": "屏蔽的类型",
        "log-action-filter-upload": "上传类型:",
        "log-action-filter-all": "全部",
        "log-action-filter-block-block": "封禁",
        "log-action-filter-block-reblock": "封禁修改",
        "log-action-filter-block-unblock": "解封",
+       "log-action-filter-contentmodel-change": "内容类型的更改",
+       "log-action-filter-contentmodel-new": "带有非标准内容模型的页面的更改",
        "log-action-filter-delete-delete": "页面删除",
        "log-action-filter-delete-restore": "页面还原",
        "log-action-filter-delete-event": "日志删除",
        "log-action-filter-delete-revision": "修订版本删除",
+       "log-action-filter-import-interwiki": "跨wiki导入",
+       "log-action-filter-import-upload": "通过XML上传导入",
+       "log-action-filter-managetags-create": "标签创建",
+       "log-action-filter-managetags-delete": "标签删除",
+       "log-action-filter-managetags-activate": "标签激活",
+       "log-action-filter-managetags-deactivate": "标签取消激活",
+       "log-action-filter-move-move": "移动而不覆盖重定向",
+       "log-action-filter-move-move_redir": "移动并覆盖重定向",
+       "log-action-filter-newusers-create": "由匿名用户创建",
+       "log-action-filter-newusers-create2": "由已注册用户创建",
+       "log-action-filter-newusers-autocreate": "自动创建",
+       "log-action-filter-newusers-byemail": "带通过电子邮件发送密码的创建",
        "log-action-filter-patrol-patrol": "手动巡查",
        "log-action-filter-patrol-autopatrol": "自动巡查",
        "log-action-filter-protect-protect": "保护",
        "log-action-filter-protect-modify": "保护修改",
        "log-action-filter-protect-unprotect": "解除保护",
+       "log-action-filter-protect-move_prot": "已移动保护",
+       "log-action-filter-rights-rights": "手动更改",
+       "log-action-filter-rights-autopromote": "自动更改",
+       "log-action-filter-suppress-event": "日志屏蔽",
+       "log-action-filter-suppress-revision": "修订版本屏蔽",
+       "log-action-filter-suppress-delete": "页面屏蔽",
+       "log-action-filter-suppress-block": "通过封禁的用户屏蔽",
+       "log-action-filter-suppress-reblock": "通过再封禁的用户屏蔽",
        "log-action-filter-upload-upload": "新上传",
        "log-action-filter-upload-overwrite": "重新上传"
 }
index 456d23e..c3e5aaa 100644 (file)
@@ -88,6 +88,7 @@
        "tog-watchdefault": "將我編輯的頁面和檔案加入監視清單",
        "tog-watchmoves": "將我移動的頁面和檔案加入監視清單",
        "tog-watchdeletion": "將我刪除的頁面和檔案加入監視清單",
+       "tog-watchuploads": "加入我上傳的新檔案至我的監視清單",
        "tog-watchrollback": "將我曾經還原的頁面新增至監視清單",
        "tog-minordefault": "預設標記所有的編輯為小修訂",
        "tog-previewontop": "顯示預覽於編輯框上方",
        "noemail": "使用者 \"$1\" 沒有電子郵件地址記錄。",
        "noemailcreate": "您需要提供一個有效的電子郵件地址。",
        "passwordsent": "使用者 \"$1\" 的新密碼已寄至當出登記的電子郵件地址,\n請稍後收到郵件後再登入。",
-       "blocked-mailpassword": "æ\82¨ç\9a\84 IP ä½\8då\9d\80已被å°\81é\8e\96ä¸\8då\85\81許編輯ï¼\8cå¯\86碼復å\8e\9fç\9a\84å\8a\9fè\83½ä¹\9få\90\8c樣被ç¦\81止使ç\94¨ä»¥é\98²æ­¢è¢«濫用。",
+       "blocked-mailpassword": "æ\82¨ç\9a\84 IP ä½\8då\9d\80已被å°\81é\8e\96ä¸\8då\85\81許編輯ï¼\8cå·²ç¦\81æ­¢ä¾\86è\87ªæ­¤ IP ä½\8då\9d\80ç\9a\84å¯\86碼復å\8e\9få\8a\9fè\83½ä»¥é\98²æ­¢濫用。",
        "eauthentsent": "已寄出一封確認信到您所設定的電子郵件地址。\n在未收到其它電子郵件前,您必須先依照郵件中的指示,確認這個帳號確實是您本人。",
        "throttled-mailpassword": "密碼重設的電子郵件已經在最近 $1 小時內寄出。\n為防止濫用,$1 小時內只能寄出一次密碼重設信件。",
        "mailerror": "傳送電子郵件錯誤:$1",
        "recentchangeslinked-page": "頁面名稱:",
        "recentchangeslinked-to": "改顯示連結至指定頁面的變更",
        "recentchanges-page-added-to-category": "[[:$1]] 已加入至分類",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] 與[[Special:WhatLinksHere/$1|其他 {{PLURAL:$2|1 頁|$2 頁}}]]已加入至分類",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] 已加入至分類,[[Special:WhatLinksHere/$1|此頁面已被其他頁面引用]]",
        "recentchanges-page-removed-from-category": "[[:$1]] 已自分類移除",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] 與[[Special:WhatLinksHere/$1|其他 {{PLURAL:$2|1 頁|$2 頁}}]]已自分類移除",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] 已自分類移除,[[Special:WhatLinksHere/$1|此頁面已被其他頁面引用]]",
        "autochange-username": "MediaWiki 自動變更",
        "upload": "上傳檔案",
        "uploadbtn": "上傳檔案",
        "categories-submit": "顯示",
        "categoriespagetext": "下列為包含頁面或媒體的{{PLURAL:$1|分類}}。\n[[Special:UnusedCategories|未使用的分類]] 不會在此顯示。\n請參考 [[Special:WantedCategories|需要的分類]]。",
        "categoriesfrom": "顯示分類開始於:",
-       "special-categories-sort-count": "依數量排列",
-       "special-categories-sort-abc": "依字母排列",
        "deletedcontributions": "已刪除的使用者貢獻",
        "deletedcontributions-title": "已刪除的使用者貢獻",
        "sp-deletedcontributions-contribs": "貢獻",
        "ipb-unblock": "解除封鎖使用者名稱或 IP 位址",
        "ipb-blocklist": "檢視目前的封鎖",
        "ipb-blocklist-contribs": "{{GENDER:$1|$1}} 的貢獻",
+       "ipb-blocklist-duration-left": "剩下 $1",
        "unblockip": "解除封鎖使用者",
        "unblockiptext": "使用以下表單以還原之前被封鎖的 IP 位址或使用者名稱的寫入存取。",
        "ipusubmit": "移除此封鎖",
        "confirmemail_body_set": "不明人士 (可能是您自己,來自 IP 位址 $1) 已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件地址設定至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以開啟在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
        "confirmemail_invalidated": "已取消電子郵件地址確認",
        "invalidateemail": "取消電子郵件確認",
+       "notificationemail_subject_changed": "{{SITENAME}} 註冊的電子郵件位址已變更",
+       "notificationemail_subject_removed": "{{SITENAME}} 註冊的電子郵件位址已移除",
        "scarytranscludedisabled": "[Interwiki 轉換代碼不可用]",
        "scarytranscludefailed": "[模板 $1 讀取失敗]",
        "scarytranscludefailed-httpstatus": "[模板 $1 讀取失敗:HTTP $2]",
        "sessionprovider-nocookies": "Cookie 功能可能已被關閉,請確認您改開啟 Cookie 功能並重新啟動。",
        "randomrootpage": "隨機根頁面",
        "log-action-filter-block": "封鎖類型:",
+       "log-action-filter-contentmodel": "內容模型修改類型:",
        "log-action-filter-delete": "刪除類型:",
+       "log-action-filter-import": "匯入類型:",
+       "log-action-filter-managetags": "標籤管理動作類型:",
+       "log-action-filter-move": "移動類型:",
+       "log-action-filter-newusers": "帳號建立類型:",
        "log-action-filter-patrol": "巡查類型:",
        "log-action-filter-protect": "保護類型:",
+       "log-action-filter-rights": "權限變更類型:",
+       "log-action-filter-suppress": "禁止顯示類型:",
        "log-action-filter-upload": "上傳類型:",
        "log-action-filter-all": "全部",
        "log-action-filter-block-block": "封鎖",
        "log-action-filter-block-reblock": "封鎖修改",
        "log-action-filter-block-unblock": "解除封鎖",
+       "log-action-filter-contentmodel-change": "變更內容模型",
+       "log-action-filter-contentmodel-new": "使用非標準內容模型建立的頁面",
        "log-action-filter-delete-delete": "頁面刪除",
        "log-action-filter-delete-restore": "頁面取消刪除",
        "log-action-filter-delete-event": "日誌刪除",
        "log-action-filter-delete-revision": "修訂刪除",
+       "log-action-filter-import-interwiki": "Transwiki 匯入",
+       "log-action-filter-import-upload": "使用 XML 上傳匯入",
+       "log-action-filter-managetags-create": "標籤建立",
+       "log-action-filter-managetags-delete": "標籤刪除",
+       "log-action-filter-managetags-activate": "標籤啟動",
+       "log-action-filter-managetags-deactivate": "標籤取消啟動",
+       "log-action-filter-move-move": "移動不覆寫重新導向",
+       "log-action-filter-move-move_redir": "移動覆寫重新導向",
+       "log-action-filter-newusers-create": "由匿名使用者建立",
+       "log-action-filter-newusers-create2": "由註冊使用者建立",
+       "log-action-filter-newusers-autocreate": "自動建立",
+       "log-action-filter-newusers-byemail": "使用電子郵件發送密碼建立",
        "log-action-filter-patrol-patrol": "手動巡查",
        "log-action-filter-patrol-autopatrol": "自動巡查",
        "log-action-filter-protect-protect": "保護",
        "log-action-filter-protect-modify": "保護修改",
        "log-action-filter-protect-unprotect": "解除保護",
+       "log-action-filter-protect-move_prot": "已移動保護",
+       "log-action-filter-rights-rights": "手動變更",
+       "log-action-filter-rights-autopromote": "自動變更",
+       "log-action-filter-suppress-event": "日誌禁止顯示",
+       "log-action-filter-suppress-revision": "修訂禁止顯示",
+       "log-action-filter-suppress-delete": "頁面禁止顯示",
+       "log-action-filter-suppress-block": "由封鎖禁止顯示使用者",
+       "log-action-filter-suppress-reblock": "由重新封鎖禁止顯示使用者",
        "log-action-filter-upload-upload": "新上傳",
        "log-action-filter-upload-overwrite": "重新上傳"
 }
index 641250d..6931259 100644 (file)
@@ -92,7 +92,7 @@ class CapsCleanup extends TableCleanup {
                } else {
                        $mp = new MovePage( $current, $target );
                        $status = $mp->move( $this->user, 'Converting page titles to lowercase', true );
-                       $ok = $status->isOK() ? 'OK' : $status->getWikiText();
+                       $ok = $status->isOK() ? 'OK' : $status->getWikiText( false, false, 'en' );
                        $this->output( "\"$display\" -> \"$targetDisplay\": $ok\n" );
                }
                if ( $ok === true ) {
index 4ef7379..4219ed0 100644 (file)
@@ -97,7 +97,7 @@ class EditCLI extends Maintenance {
                        $exit = 1;
                }
                if ( !$status->isGood() ) {
-                       $this->output( $status->getWikiText() . "\n" );
+                       $this->output( $status->getWikiText( false, false, 'en' ) . "\n" );
                }
                exit( $exit );
        }
index 512c38c..c653a5f 100644 (file)
@@ -257,7 +257,7 @@ if ( $count > 0 ) {
                        $archive = $image->publish( $file, $flags, $publishOptions );
                        if ( !$archive->isGood() ) {
                                echo "failed. (" .
-                                       $archive->getWikiText() .
+                                       $archive->getWikiText( false, false, 'en' ) .
                                        ")\n";
                                $failed++;
                                continue;
index 3a1a72c..3c29689 100644 (file)
@@ -110,7 +110,7 @@ class MoveBatch extends Maintenance {
                        $mp = new MovePage( $source, $dest );
                        $status = $mp->move( $wgUser, $reason, !$noredirects );
                        if ( !$status->isOK() ) {
-                               $this->output( "\nFAILED: " . $status->getWikiText() );
+                               $this->output( "\nFAILED: " . $status->getWikiText( false, false, 'en' ) );
                        }
                        $this->commitTransaction( $dbw, __METHOD__ );
                        $this->output( "\n" );
index 82b362b..b9c797d 100644 (file)
@@ -29,8 +29,6 @@
  * @ingroup Maintenance
  */
 
-use MediaWiki\MediaWikiServices;
-
 require_once __DIR__ . '/Maintenance.php';
 
 /**
@@ -113,8 +111,9 @@ class RebuildLocalisationCache extends Maintenance {
                        $pid = ( $threads > 1 ) ? pcntl_fork() : -1;
 
                        if ( $pid === 0 ) {
-                               // Reset services, so we don't re-use connections.
-                               MediaWikiServices::resetChildProcessServices();
+                               // Child, reseed because there is no bug in PHP:
+                               // http://bugs.php.net/bug.php?id=42465
+                               mt_srand( getmypid() );
 
                                $this->doRebuild( $codes, $lc, $force );
                                exit( 0 );
index b50825a..24e5b78 100644 (file)
@@ -34,15 +34,37 @@ class RebuildRecentchanges extends Maintenance {
        public function __construct() {
                parent::__construct();
                $this->addDescription( 'Rebuild recent changes' );
+
+               $this->addOption(
+                       'from',
+                       "Don't empty the table, only insert rows in requested time range (in YYYYMMDDHHMMSS format)",
+                       false,
+                       true
+               );
+               $this->addOption(
+                       'to',
+                       "Don't empty the table, only insert rows in requested time range (in YYYYMMDDHHMMSS format)",
+                       false,
+                       true
+               );
        }
 
        public function execute() {
+               if (
+                       ( $this->hasOption( 'from' ) && !$this->hasOption( 'to' ) ) ||
+                       ( !$this->hasOption( 'from' ) && $this->hasOption( 'to' ) )
+               ) {
+                       $this->error( "Both 'from' and 'to' must be given, or neither", 1 );
+               }
+
                $this->rebuildRecentChangesTablePass1();
                $this->rebuildRecentChangesTablePass2();
                $this->rebuildRecentChangesTablePass3();
                $this->rebuildRecentChangesTablePass4();
                $this->rebuildRecentChangesTablePass5();
-               $this->purgeFeeds();
+               if ( !( $this->hasOption( 'from' ) && $this->hasOption( 'to' ) ) ) {
+                       $this->purgeFeeds();
+               }
                $this->output( "Done.\n" );
        }
 
@@ -52,21 +74,29 @@ class RebuildRecentchanges extends Maintenance {
        private function rebuildRecentChangesTablePass1() {
                $dbw = $this->getDB( DB_MASTER );
 
-               $dbw->delete( 'recentchanges', '*' );
+               if ( $this->hasOption( 'from' ) && $this->hasOption( 'to' ) ) {
+                       $this->cutoffFrom = wfTimestamp( TS_UNIX, $this->getOption( 'from' ) );
+                       $this->cutoffTo = wfTimestamp( TS_UNIX, $this->getOption( 'to' ) );
 
-               $this->output( "Loading from page and revision tables...\n" );
+                       $sec = $this->cutoffTo - $this->cutoffFrom;
+                       $days = $sec / 24 / 3600;
+                       $this->output( "Rebuilding range of $sec seconds ($days days)\n" );
 
-               global $wgRCMaxAge;
-
-               $this->output( '$wgRCMaxAge=' . $wgRCMaxAge );
-               $days = $wgRCMaxAge / 24 / 3600;
-               if ( intval( $days ) == $days ) {
-                       $this->output( " (" . $days . " days)\n" );
                } else {
-                       $this->output( " (approx. " . intval( $days ) . " days)\n" );
+                       global $wgRCMaxAge;
+
+                       $days = $wgRCMaxAge / 24 / 3600;
+                       $this->output( "Rebuilding \$wgRCMaxAge=$wgRCMaxAge seconds ($days days)\n" );
+
+                       $this->cutoffFrom = time() - $wgRCMaxAge;
+                       $this->cutoffTo = time();
+
+                       $this->output( "Clearing recentchanges table...\n" );
+                       $dbw->delete( 'recentchanges', '*' );
                }
 
-               $cutoff = time() - $wgRCMaxAge;
+               $this->output( "Loading from page and revision tables...\n" );
+
                $dbw->insertSelect( 'recentchanges', [ 'page', 'revision' ],
                        [
                                'rc_timestamp' => 'rev_timestamp',
@@ -90,7 +120,8 @@ class RebuildRecentchanges extends Maintenance {
                                'rc_deleted' => 'rev_deleted'
                        ],
                        [
-                               'rev_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $cutoff ) ),
+                               'rev_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+                               'rev_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ),
                                'rev_page=page_id'
                        ],
                        __METHOD__,
@@ -111,6 +142,8 @@ class RebuildRecentchanges extends Maintenance {
 
                # Fill in the rc_last_oldid field, which points to the previous edit
                $sql = "SELECT rc_cur_id,rc_this_oldid,rc_timestamp FROM $recentchanges " .
+                       "WHERE rc_timestamp > " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ) . ' ' .
+                       "AND rc_timestamp < " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ) . ' ' .
                        "ORDER BY rc_cur_id,rc_timestamp";
                $res = $dbw->query( $sql, DB_MASTER );
 
@@ -174,11 +207,10 @@ class RebuildRecentchanges extends Maintenance {
 
                $this->output( "Loading from user, page, and logging tables...\n" );
 
-               global $wgRCMaxAge, $wgLogTypes, $wgLogRestrictions;
+               global $wgLogTypes, $wgLogRestrictions;
                // Some logs don't go in RC. This should check for that
                $basicRCLogs = array_diff( $wgLogTypes, array_keys( $wgLogRestrictions ) );
 
-               $cutoff = time() - $wgRCMaxAge;
                list( $logging, $page ) = $dbw->tableNamesN( 'logging', 'page' );
                $dbw->insertSelect(
                        'recentchanges',
@@ -209,7 +241,8 @@ class RebuildRecentchanges extends Maintenance {
                                'rc_deleted' => 'log_deleted'
                        ],
                        [
-                               'log_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $cutoff ) ),
+                               'log_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+                               'log_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ),
                                'log_user=user_id',
                                'log_type' => $basicRCLogs,
                        ],
@@ -251,7 +284,9 @@ class RebuildRecentchanges extends Maintenance {
                        if ( !empty( $botusers ) ) {
                                $botwhere = implode( ',', $botusers );
                                $sql2 = "UPDATE $recentchanges SET rc_bot=1 " .
-                                       "WHERE rc_user_text IN($botwhere)";
+                                       "WHERE rc_user_text IN($botwhere) " .
+                                       "AND rc_timestamp > " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ) . ' ' .
+                                       "AND rc_timestamp < " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) );
                                $dbw->query( $sql2 );
                        }
                }
@@ -276,7 +311,9 @@ class RebuildRecentchanges extends Maintenance {
                        if ( !empty( $patrolusers ) ) {
                                $patrolwhere = implode( ',', $patrolusers );
                                $sql2 = "UPDATE $recentchanges SET rc_patrolled=1 " .
-                                       "WHERE rc_user_text IN($patrolwhere)";
+                                       "WHERE rc_user_text IN($patrolwhere) " .
+                                       "AND rc_timestamp > " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ) . ' ' .
+                                       "AND rc_timestamp < " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) );
                                $dbw->query( $sql2 );
                        }
                }
@@ -298,6 +335,8 @@ class RebuildRecentchanges extends Maintenance {
                                'ls_log_id = log_id',
                                'ls_field' => 'associated_rev_id',
                                'log_type' => 'upload',
+                               'log_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+                               'log_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ),
                        ],
                        __METHOD__
                );
index 8bfb94d..394f36e 100644 (file)
@@ -6,8 +6,7 @@
     "postdoc": "grunt copy:jsduck"
   },
   "devDependencies": {
-    "grunt": "0.4.5",
-    "grunt-cli": "0.1.13",
+    "grunt": "1.0.1",
     "grunt-banana-checker": "0.5.0",
     "grunt-contrib-copy": "1.0.0",
     "grunt-contrib-jshint": "1.0.0",
index 5cc5681..cb7adbe 100644 (file)
@@ -734,6 +734,7 @@ return [
        'moment' => [
                'scripts' => [
                        'resources/lib/moment/moment.js',
+                       'resources/src/moment-global.js',
                        'resources/src/moment-local-dmy.js',
                ],
                'languageScripts' => [
@@ -1200,6 +1201,7 @@ return [
                        'mediawiki.user',
                        'mediawiki.Upload',
                        'mediawiki.jqueryMsg',
+                       'mediawiki.widgets.StashedFileWidget'
                ],
                'messages' => [
                        'upload-form-label-infoform-title',
@@ -1852,6 +1854,7 @@ return [
                'position' => 'top',
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.search.js',
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.search.css',
+               'dependencies' => 'mediawiki.widgets.SearchInputWidget',
                'messages' => [
                        'powersearch-togglelabel',
                        'powersearch-toggleall',
@@ -2241,7 +2244,19 @@ return [
                'position' => 'top',
                'targets' => [ 'desktop', 'mobile' ],
        ],
-
+       'mediawiki.widgets.StashedFileWidget' => [
+               'scripts' => [
+                       'resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.js',
+               ],
+               'skinStyles' => [
+                       'default' => [
+                               'resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.less',
+                       ],
+               ],
+               'dependencies' => [
+                       'oojs-ui-core',
+               ],
+       ],
        /* es5-shim */
        'es5-shim' => [
                'scripts' => [
@@ -2264,6 +2279,7 @@ return [
        'oojs' => [
                'scripts' => [
                        'resources/lib/oojs/oojs.jquery.js',
+                       'resources/src/oojs-global.js',
                ],
                'targets' => [ 'desktop', 'mobile' ],
                'dependencies' => [
index 1d13c69..1accc2a 100644 (file)
        overflow: auto;
 }
 .oo-ui-textInputWidget [type="search"] {
-       -webkit-appearance: texfield;
+       -webkit-appearance: textfield;
 }
 .oo-ui-textInputWidget [type="search"]::-ms-clear {
        display: none;
index 074c1b2..431a9e4 100644 (file)
        overflow: auto;
 }
 .oo-ui-textInputWidget [type="search"] {
-       -webkit-appearance: texfield;
+       -webkit-appearance: textfield;
 }
 .oo-ui-textInputWidget [type="search"]::-ms-clear {
        display: none;
index ddc57ec..79e8731 100644 (file)
                                e.type === 'click' &&
                                options.linksPassthru &&
                                $.nodeName( e.target, 'a' ) &&
+                               $( e.target ).attr( 'href' ) &&
                                $( e.target ).attr( 'href' ) !== '#'
                        ) {
                                // Don't fire if a link with href !== '#' was clicked, if requested  (for premade togglers by default)
index abe912d..20bfa0e 100644 (file)
@@ -44,7 +44,7 @@
                                pending.abort();
                        }
 
-                       api.getToken( 'edit' ).then( stashEdit );
+                       api.getToken( 'csrf' ).then( stashEdit );
                }
 
                function onKeyPress( e ) {
index 77ecfcb..3e6ee56 100644 (file)
@@ -243,7 +243,6 @@ div.thumbinner {
        background-color: White;
        font-size: 94%;
        text-align: center;
-       overflow: hidden;
 }
 
 html .thumbimage {
@@ -256,6 +255,8 @@ html .thumbcaption {
        line-height: 1.4em;
        padding: 3px !important;
        font-size: 94%;
+       overflow: hidden;
+       word-wrap: break-word;
 }
 
 div.magnify {
index 5d637da..9adfba1 100644 (file)
@@ -90,7 +90,6 @@ div.thumbinner {
        background-color: #f9f9f9;
        font-size: 94%;
        text-align: center;
-       overflow: hidden;
 }
 
 html .thumbimage {
@@ -103,6 +102,8 @@ html .thumbcaption {
        padding: 3px;
        font-size: 94%;
        text-align: left;
+       overflow: hidden;
+       word-wrap: break-word;
 }
 
 div.magnify {
index 31c8fef..549a9ab 100644 (file)
@@ -591,5 +591,6 @@ function pluralRuleParser(rule, number) {
 
 /* pluralRuleParser ends here */
 mw.libs.pluralRuleParser = pluralRuleParser;
+module.exports = pluralRuleParser;
 
 } )( mediaWiki );
index e6f92a5..89f8745 100644 (file)
@@ -152,7 +152,6 @@ div.thumbinner {
        background-color: #f9f9f9;
        font-size: 94%;
        text-align: center;
-       overflow: hidden;
 }
 
 html .thumbimage {
@@ -164,6 +163,8 @@ html .thumbcaption {
        line-height: 1.4em;
        padding: 3px;
        font-size: 94%;
+       overflow: hidden;
+       word-wrap: break-word;
        /* Default styles when there's no .mw-content-ltr or .mw-content-rtl, overridden below */
        text-align: left;
 }
index ab83e1a..e809f2e 100644 (file)
@@ -3,7 +3,7 @@
  */
 ( function ( mw, $ ) {
        $( function () {
-               var $checkboxes, $headerLinks;
+               var $checkboxes, $headerLinks, updateHeaderLinks, searchWidget;
 
                // Emulate HTML5 autofocus behavior in non HTML5 compliant browsers
                if ( !( 'autofocus' in document.createElement( 'input' ) ) ) {
@@ -33,8 +33,8 @@
 
                // Change the header search links to what user entered
                $headerLinks = $( '.search-types a' );
-               $( '#searchText, #powerSearchText' ).change( function () {
-                       var searchterm = $( this ).val();
+               searchWidget = OO.ui.infuse( 'searchText' );
+               updateHeaderLinks = function ( value ) {
                        $headerLinks.each( function () {
                                var parts = $( this ).attr( 'href' ).split( 'search=' ),
                                        lastpart = '',
                                } else {
                                        prefix = '&search=';
                                }
-                               this.href = parts[ 0 ] + prefix + encodeURIComponent( searchterm ) + lastpart;
+                               this.href = parts[ 0 ] + prefix + encodeURIComponent( value ) + lastpart;
                        } );
-               } ).trigger( 'change' );
+               };
+               searchWidget.on( 'change', updateHeaderLinks );
+               updateHeaderLinks( searchWidget.getValue() );
 
                // When saving settings, use the proper request method (POST instead of GET).
                $( '#mw-search-powersearch-remember' ).change( function () {
index 8c89ed9..49af809 100644 (file)
                },
 
                timeout: function () {
-                       var $spinnerDestCheck;
+                       var $spinnerDestCheck, title;
                        if ( !ajaxUploadDestCheck || this.nameToCheck === '' ) {
                                return;
                        }
                        $spinnerDestCheck = $.createSpinner().insertAfter( '#wpDestFile' );
+                       title = mw.Title.newFromText( this.nameToCheck, mw.config.get( 'wgNamespaceIds' ).file );
 
                        ( new mw.Api() ).get( {
+                               formatversion: 2,
                                action: 'query',
-                               titles: ( new mw.Title( this.nameToCheck, mw.config.get( 'wgNamespaceIds' ).file ) ).getPrefixedText(),
+                               // If title is empty, user input is invalid, the API call will produce details about why
+                               titles: title ? title.getPrefixedText() : this.nameToCheck,
                                prop: 'imageinfo',
-                               iiprop: 'uploadwarning',
-                               indexpageids: true
+                               iiprop: 'uploadwarning'
                        } ).done( function ( result ) {
-                               var resultOut = '';
-                               if ( result.query ) {
-                                       resultOut = result.query.pages[ result.query.pageids[ 0 ] ].imageinfo[ 0 ];
+                               var
+                                       resultOut = '',
+                                       page = result.query.pages[ 0 ];
+                               if ( page.imageinfo ) {
+                                       resultOut = page.imageinfo[ 0 ].html;
+                               } else if ( page.invalidreason ) {
+                                       resultOut = mw.html.escape( page.invalidreason );
                                }
                                $spinnerDestCheck.remove();
                                uploadWarning.processResult( resultOut, uploadWarning.nameToCheck );
@@ -80,8 +86,8 @@
                },
 
                processResult: function ( result, fileName ) {
-                       this.setWarning( result.html );
-                       this.responseCache[ fileName ] = result.html;
+                       this.setWarning( result );
+                       this.responseCache[ fileName ] = result;
                },
 
                setWarning: function ( warning ) {
                        $spinnerLicense = $.createSpinner().insertAfter( '#wpLicense' );
 
                        ( new mw.Api() ).get( {
+                               formatversion: 2,
                                action: 'parse',
                                text: '{{' + license + '}}',
                                title: $( '#wpDestFile' ).val() || 'File:Sample.jpg',
                },
 
                processResult: function ( result, license ) {
-                       this.responseCache[ license ] = result.parse.text[ '*' ];
+                       this.responseCache[ license ] = result.parse.text;
                        this.showPreview( this.responseCache[ license ] );
                },
 
 
                                        $( '#mw-upload-thumbnail .fileinfo' ).text( info );
                                };
+                               img.onerror = function () {
+                                       // Can happen for example for invalid SVG files
+                                       clearPreview();
+                               };
                                img.src = dataURL;
                        }, mw.config.get( 'wgFileCanRotate' ) ? function ( data ) {
                                try {
index d0633ae..579bd5f 100644 (file)
@@ -27,8 +27,6 @@
 //
 // Styleguide 1.1.
 .mw-ui-input {
-       // turn off default input styling for input[type="search"] fields
-       -webkit-appearance: none;
        .box-sizing( border-box );
        display: block;
        width: 100%;
                border-color: @colorGray14;
                color: @colorGray12;
        }
+
+       // Normalize styling for `<input type="search">`
+       &[type="search"] {
+               // Correct the odd appearance in Chrome and Safari 5
+               -webkit-appearance: textfield;
+
+               // Remove proprietary clear button in IE 10-11
+               &::-ms-clear {
+                       display: none;
+               }
+
+               // Remove the inner padding and cancel buttons in Chrome on OS X and Safari on OS X
+               &::-webkit-search-cancel-button,
+               &::-webkit-search-decoration {
+                       -webkit-appearance: none;
+               }
+       }
 }
 
 textarea.mw-ui-input {
index 7f36137..01d3442 100644 (file)
@@ -55,6 +55,9 @@
                        config.formatter.format = '@' + config.type;
                }
 
+               // Early properties
+               this.type = config.type;
+
                // Parent constructor
                mw.widgets.datetime.DateTimeInputWidget[ 'super' ].call( this, config );
 
@@ -64,7 +67,6 @@
                OO.ui.mixin.PendingElement.call( this, config );
 
                // Properties
-               this.type = config.type;
                this.$handle = $( '<span>' );
                this.$fields = $( '<span>' );
                this.fields = [];
index 1f526e2..8c2b53a 100644 (file)
         * @constructor
         * @cfg {boolean} [pushPending=true] Visually mark the input field as "pending", while
         *  requesting suggestions.
+        * @cfg {boolean} [performSearchOnClick=true] If true, the script will start a search when-
+        *  ever a user hits a suggestion. If false, the text of the suggestion is inserted into the
+        *  text field only.
         */
        mw.widgets.SearchInputWidget = function MwWidgetsSearchInputWidget( config ) {
                config = $.extend( {
                        type: 'search',
                        icon: 'search',
-                       maxLength: undefined
+                       maxLength: undefined,
+                       performSearchOnClick: true
                }, config );
 
                // Parent constructor
                if ( !config.pushPending ) {
                        this.pushPending = false;
                }
+               if ( config.dataLocation ) {
+                       this.dataLocation = config.dataLocation;
+               }
+               if ( config.performSearchOnClick ) {
+                       this.performSearchOnClick = config.performSearchOnClick;
+               }
                this.setLookupsDisabled( !this.suggestions );
        };
 
         * @inheritdoc mw.widgets.TitleWidget
         */
        mw.widgets.SearchInputWidget.prototype.getSuggestionsPromise = function () {
-               var api = new mw.Api();
+               var api = new mw.Api(),
+                       promise,
+                       self = this;
 
                // reuse the searchSuggest function from mw.searchSuggest
-               return mw.searchSuggest.request( api, this.getQueryValue(), $.noop, this.limit );
+               promise = mw.searchSuggest.request( api, this.getQueryValue(), $.noop, this.limit );
+
+               // tracking purposes
+               promise.done( function ( data, jqXHR ) {
+                       self.requestType = jqXHR.getResponseHeader( 'X-OpenSearch-Type' );
+               } );
+
+               return promise;
        };
 
        /**
         * @inheritdoc mw.widgets.TitleInputWidget
         */
        mw.widgets.SearchInputWidget.prototype.getLookupCacheDataFromResponse = function ( response ) {
+               var resp;
+
                // mw.widgets.TitleInputWidget uses response.query, which doesn't exist for opensearch,
                // so return the whole response (titles only, and links)
-               return response || {};
+               resp = {
+                       data: response || {},
+                       metadata: {
+                               type: this.requestType || 'unknown',
+                               query: this.getQueryValue()
+                       }
+               };
+               this.requestType = undefined;
+
+               return resp;
        };
 
        /**
                // mw.widgets.TitleWidget does a lot more work here, because the TitleOptionWidgets can
                // differ a lot, depending on the returned data from the request. With the request used here
                // we get only the search results.
-               $.each( data[ 1 ], function ( i, result ) {
+               $.each( data.data[ 1 ], function ( i, result ) {
                        items.push( new mw.widgets.TitleOptionWidget(
                                // data[ 3 ][ i ] is the link for this result
-                               self.getOptionWidgetData( result, null, data[ 3 ][ i ] )
+                               self.getOptionWidgetData( result, null, data.data[ 3 ][ i ] )
                        ) );
                } );
 
                mw.track( 'mw.widgets.SearchInputWidget', {
                        action: 'impression-results',
                        numberOfResults: items.length,
-                       resultSetType: mw.searchSuggest.type
+                       resultSetType: data.metadata.type,
+                       query: data.metadata.query,
+                       inputLocation: this.dataLocation || 'header'
                } );
 
                return items;
                };
        };
 
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.SearchInputWidget.prototype.onLookupMenuItemChoose = function ( item ) {
+               var items;
+
+               // get items which was suggested before the input changes
+               items = this.lookupMenu.items;
+
+               mw.widgets.SearchInputWidget.parent.prototype.onLookupMenuItemChoose.apply( this, arguments );
+
+               mw.track( 'mw.widgets.SearchInputWidget', {
+                       action: 'click-result',
+                       numberOfResults: items.length,
+                       clickIndex: items.indexOf( item ) + 1
+               } );
+
+               if ( this.performSearchOnClick ) {
+                       this.$element.closest( 'form' ).submit();
+               }
+       };
+
 }( jQuery, mediaWiki ) );
diff --git a/resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.js b/resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.js
new file mode 100644 (file)
index 0000000..cdcf5a2
--- /dev/null
@@ -0,0 +1,158 @@
+/*!
+ * MediaWiki Widgets - StashedFileWidget class.
+ *
+ * @copyright 2011-2016 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+( function ( $, mw, OO ) {
+
+       /**
+        * Accepts a stashed file and displays the information for purposes of
+        * publishing the file at the behest of the user.
+        *
+        * Example use:
+        *     var widget = new mw.widgets.StashedFileWidget( {
+        *       filekey: '12r9e4rugeec.ddtmmp.1.jpg',
+        *     } );
+        *
+        *     widget.getValue(); // '12r9e4rugeec.ddtmmp.1.jpg'
+        *     widget.setValue( '12r9epfbnskk.knfiy7.1.jpg' );
+        *     widget.getValue(); // '12r9epfbnskk.knfiy7.1.jpg'
+        *
+        * Note that this widget will not finish an upload for you. Use mw.Upload
+        * and mw.Upload#setFilekey, then mw.Upload#finishStashUpload to accomplish
+        * that.
+        *
+        * @class mw.widgets.StashedFileWidget
+        * @extends OO.ui.Widget
+        */
+
+       /**
+        * @constructor
+        * @param {Object} config Configuration options
+        * @cfg {string} filekey The filekey of the stashed file.
+        * @cfg {Object} [api] API to use for thumbnails.
+        */
+       mw.widgets.StashedFileWidget = function MWWStashedFileWidget( config ) {
+               if ( !config.api ) {
+                       config.api = new mw.Api();
+               }
+
+               // Parent constructor
+               mw.widgets.StashedFileWidget.parent.call( this, config );
+
+               // Mixin constructors
+               OO.ui.mixin.IconElement.call( this, config );
+               OO.ui.mixin.LabelElement.call( this, config );
+               OO.ui.mixin.PendingElement.call( this, config );
+
+               // Properties
+               this.api = config.api;
+               this.$info = $( '<span>' );
+               this.setValue( config.filekey );
+               this.$label.addClass( 'mw-widgets-stashedFileWidget-label' );
+               this.$info
+                       .addClass( 'mw-widgets-stashedFileWidget-info' )
+                       .append( this.$icon, this.$label );
+
+               this.$thumbnail = $( '<div>' ).addClass( 'mw-widgets-stashedFileWidget-thumbnail' );
+               this.setPendingElement( this.$thumbnail );
+
+               this.$thumbContain = $( '<div>' )
+                       .addClass( 'mw-widgets-stashedFileWidget-thumbnail-container' )
+                       .append( this.$thumbnail, this.$info );
+
+               this.$element
+                       .addClass( 'mw-widgets-stashedFileWidget' )
+                       .append( this.$thumbContain );
+
+               this.updateUI();
+       };
+
+       OO.inheritClass( mw.widgets.StashedFileWidget, OO.ui.Widget );
+       OO.mixinClass( mw.widgets.StashedFileWidget, OO.ui.mixin.IconElement );
+       OO.mixinClass( mw.widgets.StashedFileWidget, OO.ui.mixin.LabelElement );
+       OO.mixinClass( mw.widgets.StashedFileWidget, OO.ui.mixin.PendingElement );
+
+       /**
+        * Get the current filekey.
+        *
+        * @return {string|null}
+        */
+       mw.widgets.StashedFileWidget.prototype.getValue = function () {
+               return this.filekey;
+       };
+
+       /**
+        * Set the filekey.
+        *
+        * @param {string|null} filekey
+        */
+       mw.widgets.StashedFileWidget.prototype.setValue = function ( filekey ) {
+               if ( filekey !== this.filekey ) {
+                       this.filekey = filekey;
+                       this.updateUI();
+                       this.emit( 'change', this.filekey );
+               }
+       };
+
+       mw.widgets.StashedFileWidget.prototype.updateUI = function () {
+               var $label, $filetype;
+
+               if ( this.filekey ) {
+                       this.$element.removeClass( 'mw-widgets-stashedFileWidget-empty' );
+                       $label = $( [] );
+                       $filetype = $( '<span>' )
+                               .addClass( 'mw-widgets-stashedFileWidget-fileType' );
+
+                       $label = $label.add(
+                               $( '<span>' )
+                                       .addClass( 'mw-widgets-stashedFileWidget-filekey' )
+                                       .text( this.filekey )
+                       ).add( $filetype );
+
+                       this.setLabel( $label );
+
+                       this.pushPending();
+                       this.loadAndGetImageUrl().done( function ( url, mime ) {
+                               this.$thumbnail.css( 'background-image', 'url( ' + url + ' )' );
+                               if ( mime ) {
+                                       $filetype.text( mime );
+                                       this.setLabel( $label );
+                               }
+                       }.bind( this ) ).fail( function () {
+                               this.$thumbnail.append(
+                                       new OO.ui.IconWidget( {
+                                               icon: 'attachment',
+                                               classes: [ 'mw-widgets-stashedFileWidget-noThumbnail-icon' ]
+                                       } ).$element
+                               );
+                       }.bind( this ) ).always( function () {
+                               this.popPending();
+                       }.bind( this ) );
+               } else {
+                       this.$element.addClass( 'mw-widgets-stashedFileWidget-empty' );
+                       this.setLabel( '' );
+               }
+       };
+
+       mw.widgets.StashedFileWidget.prototype.loadAndGetImageUrl = function () {
+               var filekey = this.filekey;
+
+               if ( filekey ) {
+                       return this.api.get( {
+                               action: 'query',
+                               prop: 'stashimageinfo',
+                               siifilekey: filekey,
+                               siiprop: [ 'size', 'url', 'mime' ],
+                               siiurlwidth: 220
+                       } ).then( function ( data ) {
+                               var sii = data.query.stashimageinfo[ 0 ];
+
+                               return $.Deferred().resolve( sii.thumburl, sii.mime );
+                       } );
+               }
+
+               return $.Deferred().reject( 'No filekey' );
+       };
+}( jQuery, mediaWiki, OO ) );
diff --git a/resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.less b/resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.less
new file mode 100644 (file)
index 0000000..cf9496f
--- /dev/null
@@ -0,0 +1,172 @@
+.mw-widgets-stashedFileWidget {
+       display: inline-block;
+       vertical-align: middle;
+       width: 100%;
+       max-width: 50em;
+       margin-right: 0.5em;
+
+       &:last-child {
+               margin-right: 0;
+       }
+
+       &.oo-ui-iconElement .mw-widgets-stashedFileWidget-info .mw-widgets-stashedFileWidget-label {
+               left: 2.875em;
+       }
+
+       &.oo-ui-indicatorElement .mw-widgets-stashedFileWidget-info .mw-widgets-stashedFileWidget-label {
+               right: 4.4625em;
+       }
+}
+
+.mw-widgets-stashedFileWidget-info {
+       height: 2.4em;
+       background-color: #ffffff;
+       border: 1px solid #cccccc;
+       border-radius: 2px;
+       width: 100%;
+       display: table-cell;
+       vertical-align: middle;
+       position: relative;
+       overflow: hidden;
+       -webkit-box-sizing: border-box;
+          -moz-box-sizing: border-box;
+               box-sizing: border-box;
+
+       > .mw-widgets-stashedFileWidget-label {
+               line-height: 2.3em;
+               margin: 0;
+               overflow: hidden;
+               white-space: nowrap;
+               -webkit-box-sizing: border-box;
+                  -moz-box-sizing: border-box;
+                               box-sizing: border-box;
+               text-overflow: ellipsis;
+               left: 0.5em;
+               right: 2.375em;
+               position: absolute;
+               top: 0;
+               bottom: 0;
+
+               > .mw-widgets-stashedFileWidget-fileName {
+                       float: left;
+               }
+               > .mw-widgets-stashedFileWidget-fileType {
+                       color: #888888;
+                       float: right;
+               }
+       }
+
+       > .oo-ui-indicatorElement-indicator,
+       > .oo-ui-iconElement-icon {
+               position: absolute;
+       }
+
+       > .oo-ui-indicatorElement-indicator {
+               right: 0;
+               top: 0;
+               width: 0.9375em;
+               height: 2.3em;
+               margin-right: 0.775em;
+       }
+
+       > .oo-ui-iconElement-icon {
+               top: 0;
+               width: 1.875em;
+               height: 2.3em;
+               margin-left: 0.5em;
+               left: 0;
+       }
+
+       &.oo-ui-widget-disabled {
+               .mw-widgets-stashedFileWidget-info {
+                       color: #cccccc;
+                       text-shadow: 0 1px 1px #ffffff;
+                       border-color: #dddddd;
+                       background-color: #f3f3f3;
+
+                       > .oo-ui-iconElement-icon,
+                       > .oo-ui-indicatorElement-indicator {
+                               opacity: 0.2;
+                       }
+               }
+       }
+}
+
+.mw-widgets-stashedFileWidget-thumbnail-container {
+       cursor: default;
+       height: 5.5em;
+       text-align: left;
+       padding: 0;
+       background-color: #ffffff;
+       border: 1px solid #cccccc;
+       margin-bottom: 0.5em;
+       vertical-align: middle;
+       overflow: hidden;
+       border-radius: 2px;
+
+       .mw-widgets-stashedFileWidget-thumbnail {
+               height: 5.5em;
+               width: 5.5em;
+               position: absolute;
+               background-size: cover;
+               background-position: center center;
+
+               &.oo-ui-pendingElement-pending {
+                       background-size: auto;
+               }
+
+               > .mw-widgets-stashedFileWidget-noThumbnail-icon {
+                       opacity: 0.4;
+                       background-color: #cccccc;
+                       height: 5.5em;
+                       width: 5.5em;
+               }
+       }
+
+       .mw-widgets-stashedFileWidget-info {
+               border: none;
+               background: none;
+               display: block;
+               height: 100%;
+               width: auto;
+               margin-left: 5.5em;
+
+               > .mw-widgets-stashedFileWidget-label {
+                       position: relative;
+
+                       > .mw-widgets-stashedFileWidget-fileName {
+                               display: block;
+                               float: none;
+                       }
+
+                       > .mw-widgets-stashedFileWidget-fileType {
+                               display: block;
+                               float: none;
+                       }
+               }
+       }
+}
+
+
+.mw-widgets-stashedFileWidget-empty {
+       .mw-widgets-stashedFileWidget-thumbnail-container {
+               text-align: center;
+
+               .mw-widgets-stashedFileWidget-thumbnail,
+               .mw-widgets-stashedFileWidget-info {
+                       margin: 0;
+                       display: none;
+               }
+       }
+
+       .mw-widgets-stashedFileWidget-label {
+               color: #cccccc;
+               right: 0.5em;
+       }
+
+       &.oo-ui-indicatorElement {
+               .mw-widgets-stashedFileWidget-label {
+                       right: 2em;
+               }
+       }
+}
index 64e5976..b4ff40a 100644 (file)
                        'import',
                        'options'
                ];
-               return $.inArray( action, csrfActions ) !== -1 ? 'csrf' : action;
+               if ( $.inArray( action, csrfActions ) !== -1 ) {
+                       mw.track( 'mw.deprecate', 'apitoken_' + action );
+                       mw.log.warn( 'Use of the "' + action + '" token is deprecated. Use "csrf" instead.' );
+                       return 'csrf';
+               }
+               return action;
        }
 
        // Pre-populate with fake ajax promises to save http requests for tokens
@@ -47,7 +52,7 @@
        promises[ defaultOptions.ajax.url ] = {};
        $.each( mw.user.tokens.get(), function ( key, value ) {
                // This requires #getToken to use the same key as user.tokens.
-               // Format: token-type + "Token" (eg. editToken, patrolToken, watchToken).
+               // Format: token-type + "Token" (eg. csrfToken, patrolToken, watchToken).
                promises[ defaultOptions.ajax.url ][ key ] = $.Deferred()
                        .resolve( value )
                        .promise( { abort: function () {} } );
                 * If we have a cached token try using that, and if it fails, blank out the
                 * cached token and start over. For example to change an user option you could do:
                 *
-                *     new mw.Api().postWithToken( 'options', {
+                *     new mw.Api().postWithToken( 'csrf', {
                 *         action: 'options',
                 *         optionname: 'gender',
                 *         optionvalue: 'female'
index 22affb1..60276cd 100644 (file)
@@ -6,7 +6,7 @@
        $.extend( mw.Api.prototype, {
 
                /**
-                * Post to API with edit token. If we have no token, get one and try to post.
+                * Post to API with csrf token. If we have no token, get one and try to post.
                 * If we have a cached token try using that, and if it fails, blank out the
                 * cached token and start over.
                 *
                 * @return {jQuery.Promise} See #post
                 */
                postWithEditToken: function ( params, ajaxOptions ) {
-                       return this.postWithToken( 'edit', params, ajaxOptions );
+                       return this.postWithToken( 'csrf', params, ajaxOptions );
                },
 
                /**
-                * API helper to grab an edit token.
+                * API helper to grab a csrf token.
                 *
                 * @return {jQuery.Promise}
                 * @return {Function} return.done
                 * @return {string} return.done.token Received token.
                 */
                getEditToken: function () {
-                       return this.getToken( 'edit' );
+                       return this.getToken( 'csrf' );
                },
 
                /**
index bd6fa06..0af2a75 100644 (file)
@@ -54,7 +54,7 @@
                                        }
                                } else {
                                        if ( value !== null ) {
-                                               deferreds.push( this.postWithToken( 'options', {
+                                               deferreds.push( this.postWithToken( 'csrf', {
                                                        formatversion: 2,
                                                        action: 'options',
                                                        optionname: name,
@@ -62,7 +62,7 @@
                                                } ) );
                                        } else {
                                                // Omitting value resets the option
-                                               deferreds.push( this.postWithToken( 'options', {
+                                               deferreds.push( this.postWithToken( 'csrf', {
                                                        formatversion: 2,
                                                        action: 'options',
                                                        optionname: name
@@ -72,7 +72,7 @@
                        }
 
                        if ( grouped.length ) {
-                               deferreds.push( this.postWithToken( 'options', {
+                               deferreds.push( this.postWithToken( 'csrf', {
                                        formatversion: 2,
                                        action: 'options',
                                        change: grouped
index 981a2e9..3c8b3f6 100644 (file)
                                                deferred.reject( 'ok-but-empty', 'No response from API on upload attempt.' );
                                        } else if ( result.error ) {
                                                if ( result.error.code === 'badtoken' ) {
-                                                       api.badToken( 'edit' );
+                                                       api.badToken( 'csrf' );
                                                }
 
                                                deferred.reject( result.error.code, result );
                        }
 
                        function finishUpload( moreData ) {
-                               data = $.extend( data, moreData );
-                               data.filekey = filekey;
-                               data.action = 'upload';
-                               data.format = 'json';
-
-                               if ( !data.filename ) {
-                                       throw new Error( 'Filename not included in file data.' );
-                               }
-
-                               return api.postWithEditToken( data ).then( function ( result ) {
-                                       if ( result.upload && result.upload.warnings ) {
-                                               return $.Deferred().reject( getFirstKey( result.upload.warnings ), result ).promise();
-                                       }
-                                       return result;
-                               } );
+                               api.uploadFromStash( filekey, $.extend( data, moreData ) );
                        }
 
                        return this.upload( file, { stash: true, filename: data.filename } ).then(
                        );
                },
 
+               /**
+                * Finish an upload in the stash.
+                *
+                * @param {string} filekey
+                * @param {Object} data
+                */
+               uploadFromStash: function ( filekey, data ) {
+                       data.filekey = filekey;
+                       data.action = 'upload';
+                       data.format = 'json';
+
+                       if ( !data.filename ) {
+                               throw new Error( 'Filename not included in file data.' );
+                       }
+
+                       return this.postWithEditToken( data ).then( function ( result ) {
+                               if ( result.upload && result.upload.warnings ) {
+                                       return $.Deferred().reject( getFirstKey( result.upload.warnings ), result ).promise();
+                               }
+                               return result;
+                       } );
+               },
+
                needToken: function () {
                        return true;
                }
index 6af0edf..2b28cb4 100644 (file)
@@ -61,6 +61,7 @@
         * @constructor
         * @param {Object} config Configuration options
         * @cfg {jQuery} [$overlay] Overlay to use for widgets in the booklet
+        * @cfg {string} [filekey] Sets the stashed file to finish uploading. Overrides most of the file selection process, and fetches a thumbnail from the server.
         */
        mw.Upload.BookletLayout = function ( config ) {
                // Parent constructor
@@ -68,6 +69,8 @@
 
                this.$overlay = config.$overlay;
 
+               this.filekey = config.filekey;
+
                this.renderUploadForm();
                this.renderInfoForm();
                this.renderInsertForm();
 
                this.clear();
                this.upload = this.createUpload();
+
                this.setPage( 'upload' );
 
+               if ( this.filekey ) {
+                       this.setFilekey( this.filekey );
+               }
+
                return this.upload.getApi().then(
                        function ( api ) {
                                // If the user can't upload anything, don't give them the option to.
                        layout = this,
                        file = this.getFile();
 
-               this.setFilename( file.name );
-
                this.setPage( 'info' );
 
+               if ( this.filekey ) {
+                       if ( file === null ) {
+                               // Someone gonna get-a hurt real bad
+                               throw new Error( 'filekey not passed into file select widget, which is impossible. Quitting while we\'re behind.' );
+                       }
+
+                       // Stashed file already uploaded.
+                       deferred.resolve();
+                       this.uploadPromise = deferred;
+                       this.emit( 'fileUploaded' );
+                       return deferred;
+               }
+
+               this.setFilename( file.name );
+
                this.upload.setFile( file );
                // The original file name might contain invalid characters, so use our sanitized one
                this.upload.setFilename( this.getFilename() );
                var fieldset,
                        layout = this;
 
-               this.selectFileWidget = new OO.ui.SelectFileWidget( {
-                       showDropTarget: true
-               } );
+               this.selectFileWidget = this.getFileWidget();
                fieldset = new OO.ui.FieldsetLayout();
                fieldset.addItems( [ this.selectFileWidget ] );
                this.uploadForm = new OO.ui.FormLayout( { items: [ fieldset ] } );
 
-               // Validation
+               // Validation (if the SFW is for a stashed file, this never fires)
                this.selectFileWidget.on( 'change', this.onUploadFormChange.bind( this ) );
 
                this.selectFileWidget.on( 'change', function () {
                return this.uploadForm;
        };
 
+       /**
+        * Gets the widget for displaying or inputting the file to upload.
+        *
+        * @return {OO.ui.SelectFileWidget|mw.widgets.StashedFileWidget}
+        */
+       mw.Upload.BookletLayout.prototype.getFileWidget = function () {
+               if ( this.filekey ) {
+                       return new mw.widgets.StashedFileWidget( {
+                               filekey: this.filekey
+                       } );
+               }
+
+               return new OO.ui.SelectFileWidget( {
+                       showDropTarget: true
+               } );
+       };
+
        /**
         * Updates the file preview on the info form when a file is added.
         *
                this.selectFileWidget.setValue( file );
        };
 
+       /**
+        * Sets the filekey of a file already stashed on the server
+        * as the target of this upload operation.
+        *
+        * @protected
+        * @param {string} filekey
+        */
+       mw.Upload.BookletLayout.prototype.setFilekey = function ( filekey ) {
+               this.upload.setFilekey( this.filekey );
+               this.selectFileWidget.setValue( filekey );
+
+               this.onUploadFormChange();
+       };
+
        /**
         * Clear the values of all fields
         *
index 4a463b0..23b0900 100644 (file)
                this.filename = filename;
        };
 
+       /**
+        * Set the stashed file to finish uploading.
+        *
+        * @param {string} filekey
+        */
+       UP.setFilekey = function ( filekey ) {
+               var upload = this;
+
+               this.setState( Upload.State.STASHED );
+               this.stashPromise = $.Deferred().resolve( function ( data ) {
+                       return upload.api.uploadFromStash( filekey, data );
+               } );
+       };
+
        /**
         * Sets the filename based on the filename as it was on the upload.
         */
index 9d799db..4aad2ba 100644 (file)
                         * @param {string} [moduleName] Name of currently executing module
                         * @return {jQuery.Promise}
                         */
-                       function queueModuleScript( src ) {
+                       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)
index 17a3b21..2d603bf 100644 (file)
                searchboxesSelectors = [
                        // Primary searchbox on every page in standard skins
                        '#searchInput',
-                       // Special:Search
-                       '#powerSearchText',
-                       '#searchText',
                        // Generic selector for skins with multiple searchboxes (used by CologneBlue)
                        // and for MediaWiki itself (special pages with page title inputs)
                        '.mw-searchInput'
index 9b3458b..2ad79eb 100644 (file)
                $oouiNodes = $( '[data-ooui]' );
                if ( $oouiNodes.length ) {
                        // FIXME: We should only load the widgets that are being infused
-                       mw.loader.using( [ 'mediawiki.widgets', 'mediawiki.widgets.UserInputWidget' ] ).done( function () {
+                       mw.loader.using( [
+                               'mediawiki.widgets',
+                               'mediawiki.widgets.UserInputWidget',
+                               'mediawiki.widgets.SearchInputWidget'
+                       ] ).done( function () {
                                $oouiNodes.each( function () {
                                        OO.ui.infuse( this );
                                } );
diff --git a/resources/src/moment-global.js b/resources/src/moment-global.js
new file mode 100644 (file)
index 0000000..ba01a24
--- /dev/null
@@ -0,0 +1,2 @@
+// Back-compat: Export module as global
+window.moment = module.exports;
diff --git a/resources/src/oojs-global.js b/resources/src/oojs-global.js
new file mode 100644 (file)
index 0000000..de156f0
--- /dev/null
@@ -0,0 +1,2 @@
+// Back-compat: Export module as global
+window.OO = module.exports;
index e53e5f3..312e745 100644 (file)
@@ -1,7 +1,7 @@
 /**
- * This script provides a function which is run to evaluate whether or not to
- * continue loading jQuery and the MediaWiki modules. This code should work on
- * even the most ancient of browsers, so be very careful when editing.
+ * Code in this file MUST work on even the most ancient of browsers!
+ *
+ * This file is where we decide whether to initialise the modern run-time.
  */
 /*jshint unused: false, evil: true */
 /*globals mw, RLQ: true, NORLQ: true, $VARS, $CODE, performance */
@@ -15,53 +15,60 @@ var mediaWikiLoadStart = ( new Date() ).getTime(),
 mwPerformance.mark( 'mwLoadStart' );
 
 /**
- * Returns false for Grade C supported browsers.
+ * See <https://www.mediawiki.org/wiki/Compatibility#Browsers>
+ *
+ * Capabilities required for modern run-time:
+ * - DOM Level 4 & Selectors API Level 1
+ * - HTML5 & Web Storage
+ * - DOM Level 2 Events
+ *
+ * Browsers we support in our modern run-time (Grade A):
+ * - Chrome
+ * - IE 9+
+ * - Firefox 3.5+
+ * - Safari 4+
+ * - Opera 10.5+
+ * - Mobile Safari (iOS 1+)
+ * - Android 2.0+
  *
- * This function should only be used by the Startup module, do not expand it to
- * be generally useful beyond startup.
+ * Browsers we support in our no-javascript run-time (Grade C):
+ * - IE 6+
+ * - Firefox 3+
+ * - Safari 3+
+ * - Opera 10+
+ * - WebOS < 1.5
+ * - PlayStation
+ * - Symbian-based browsers
+ * - NetFront-based browser
+ * - Opera Mini
+ * - Nokia's Ovi Browser
+ * - MeeGo's browser
+ * - Google Glass
  *
- * See also:
- * - https://www.mediawiki.org/wiki/Compatibility#Browsers
- * - https://jquery.com/browser-support/
+ * Other browsers that pass the check are considered Grade X.
  */
-function isCompatible( ua ) {
-       if ( ua === undefined ) {
-               ua = navigator.userAgent;
-       }
+function isCompatible( str ) {
+       var ua = str || navigator.userAgent;
+       return !!(
+               // http://caniuse.com/#feat=queryselector
+               'querySelector' in document
+
+               // http://caniuse.com/#feat=namevalue-storage
+               // https://developer.blackberry.com/html5/apis/v1_0/localstorage.html
+               // https://blog.whatwg.org/this-week-in-html-5-episode-30
+               && 'localStorage' in window
+
+               // http://caniuse.com/#feat=addeventlistener
+               && 'addEventListener' in window
 
-       // Browsers with outdated or limited JavaScript engines get the no-JS experience
-       return !(
-               // Internet Explorer < 9
-               ( ua.indexOf( 'MSIE' ) !== -1 && parseFloat( ua.split( 'MSIE' )[ 1 ] ) < 9 ) ||
-               // Firefox < 3
-               ( ua.indexOf( 'Firefox/' ) !== -1 && parseFloat( ua.split( 'Firefox/' )[ 1 ] ) < 3 ) ||
-               // Opera < 12
-               ( ua.indexOf( 'Opera/' ) !== -1 && ( ua.indexOf( 'Version/' ) === -1 ?
-                       // "Opera/x.y"
-                       parseFloat( ua.split( 'Opera/' )[ 1 ] ) < 10 :
-                       // "Opera/9.80 ... Version/x.y"
-                       parseFloat( ua.split( 'Version/' )[ 1 ] ) < 12
-               ) ) ||
-               // "Mozilla/0.0 ... Opera x.y"
-               ( ua.indexOf( 'Opera ' ) !== -1 && parseFloat( ua.split( ' Opera ' )[ 1 ] ) < 10 ) ||
-               // BlackBerry < 6
-               ua.match( /BlackBerry[^\/]*\/[1-5]\./ ) ||
-               // Open WebOS < 1.5
-               ua.match( /webOS\/1\.[0-4]/ ) ||
-               // Anything PlayStation based.
-               ua.match( /PlayStation/i ) ||
-               // Any Symbian based browsers
-               ua.match( /SymbianOS|Series60/ ) ||
-               // Any NetFront based browser
-               ua.match( /NetFront/ ) ||
-               // Opera Mini, all versions
-               ua.match( /Opera Mini/ ) ||
-               // Nokia's Ovi Browser
-               ua.match( /S40OviBrowser/ ) ||
-               // MeeGo's browser
-               ua.match( /MeeGo/ ) ||
-               // Google Glass browser groks JS but UI is too limited
-               ( ua.match( /Glass/ ) && ua.match( /Android/ ) )
+               // Hardcoded exceptions for browsers that pass the requirement but we don't want to
+               // support in the modern run-time.
+               && !(
+                       ua.match( /webOS\/1\.[0-4]/ ) ||
+                       ua.match( /PlayStation/i ) ||
+                       ua.match( /SymbianOS|Series60|NetFront|Opera Mini|S40OviBrowser|MeeGo/ ) ||
+                       ( ua.match( /Glass/ ) && ua.match( /Android/ ) )
+               )
        );
 }
 
index c8b4661..26085b8 100644 (file)
@@ -32,6 +32,7 @@ $wgAutoloadClasses += [
        'DelayedParserTest' => "$testDir/testHelpers.inc",
        'ParserTestResult' => "$testDir/parser/ParserTestResult.php",
        'TestFileIterator' => "$testDir/testHelpers.inc",
+       'TestFileDataProvider' => "$testDir/testHelpers.inc",
        'TestRecorder' => "$testDir/testHelpers.inc",
        'ITestRecorder' => "$testDir/testHelpers.inc",
        'DjVuSupport' => "$testDir/testHelpers.inc",
index 0987c0f..78e5f6f 100644 (file)
@@ -27,7 +27,6 @@
  * @file
  * @ingroup Testing
  */
-use MediaWiki\MediaWikiServices;
 
 /**
  * @ingroup Testing
@@ -246,8 +245,9 @@ class ParserTest {
                // see https://gerrit.wikimedia.org/r/111390
                array_push( $wgExtraInterlanguageLinkPrefixes, 'mul' );
 
-               // Reset all services to be consistent with the new settings!
-               MediaWikiServices::resetGlobalInstance();
+               // Reset namespace cache
+               MWNamespace::getCanonicalNamespaces( true );
+               Language::factory( 'en' )->resetNamespaces();
        }
 
        /**
@@ -540,7 +540,7 @@ class ParserTest {
                        $result =
                                $this->runTest( $t['test'], $t['input'], $t['result'], $t['options'], $t['config'] );
                        $ok = $ok && $result;
-                       $this->recorder->record( $t['test'], $result );
+                       $this->recorder->record( $t['test'], $t['subtest'], $result );
                }
 
                if ( $this->showProgress ) {
@@ -1009,6 +1009,11 @@ class ParserTest {
 
                $this->databaseSetupDone = true;
 
+               # SqlBagOStuff broke when using temporary tables on r40209 (bug 15892).
+               # It seems to have been fixed since (r55079?), but regressed at some point before r85701.
+               # This works around it for now...
+               ObjectCache::$instances[CACHE_DB] = new HashBagOStuff;
+
                # CREATE TEMPORARY TABLE breaks if there is more than one server
                if ( wfGetLB()->getServerCount() != 1 ) {
                        $this->useTemporaryTables = false;
@@ -1035,22 +1040,11 @@ class ParserTest {
                $this->db->insert( 'site_stats',
                        [ 'ss_row_id' => 1, 'ss_images' => 2, 'ss_good_articles' => 1 ] );
 
-               $bootstrapConfig = MediaWikiServices::getInstance()->getBootstrapConfig();
-               $configOverrides = new HashConfig();
-
-               # SqlBagOStuff broke when using temporary tables on r40209 (bug 15892).
-               # It seems to have been fixed since (r55079?), but regressed at some point before r85701.
-               # This works around it for now...
-               $objectCaches = [
-                               CACHE_DB => [ 'class' => 'HashBagOStuff' ],
-                       ] + $bootstrapConfig->get( 'ObjectCaches' );
-
-               $configOverrides->set( 'ObjectCaches', $objectCaches );
+               # Reinitialise the LocalisationCache to match the database state
+               Language::getLocalisationCache()->unloadAll();
 
-               // Reset all services to be consistent with the new settings!
-               MediaWikiServices::resetGlobalInstance(
-                       new MultiConfig( [ $configOverrides, $bootstrapConfig ] )
-               );
+               # Clear the message cache
+               MessageCache::singleton()->clear();
 
                // Remember to update newParserTests.php after changing the below
                // (and it uses a slightly different syntax just for teh lulz)
@@ -1251,7 +1245,11 @@ class ParserTest {
         * after each test runs.
         */
        private function teardownGlobals() {
-               MediaWikiServices::resetGlobalInstance();
+               RepoGroup::destroySingleton();
+               FileBackendGroup::destroySingleton();
+               LockManagerGroup::destroySingletons();
+               LinkCache::singleton()->clear();
+               MWTidy::destroySingleton();
 
                foreach ( $this->savedGlobals as $var => $val ) {
                        $GLOBALS[$var] = $val;
index 08785ea..d846b57 100644 (file)
@@ -2,23 +2,12 @@
 use MediaWiki\Logger\LegacySpi;
 use MediaWiki\Logger\LoggerFactory;
 use MediaWiki\Logger\MonologSpi;
-use MediaWiki\MediaWikiServices;
 use Psr\Log\LoggerInterface;
 
 /**
  * @since 1.18
  */
 abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
-
-       /**
-        * The service locator created by prepareServices(). This service locator will
-        * be restored after each test. Tests that pollute the global service locator
-        * instance should use overrideMwServices() to isolate the test.
-        *
-        * @var MediaWikiServices|null
-        */
-       private static $serviceLocator = null;
-
        /**
         * $called tracks whether the setUp and tearDown method has been called.
         * class extending MediaWikiTestCase usually override setUp and tearDown
@@ -119,204 +108,18 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                }
        }
 
-       public static function setUpBeforeClass() {
-               parent::setUpBeforeClass();
-
-               // NOTE: Usually, PHPUnitMaintClass::finalSetup already called this,
-               // but let's make doubly sure.
-               self::prepareServices( new GlobalVarConfig() );
-       }
-
-       /**
-        * Prepare service configuration for unit testing.
-        *
-        * This calls MediaWikiServices::resetGlobalInstance() to allow some critical services
-        * to be overridden for testing.
-        *
-        * prepareServices() only needs to be called once, but should be called as early as possible,
-        * before any class has a chance to grab a reference to any of the global services
-        * instances that get discarded by prepareServices(). Only the first call has any effect,
-        * later calls are ignored.
-        *
-        * @note This is called by PHPUnitMaintClass::finalSetup.
-        *
-        * @see MediaWikiServices::resetGlobalInstance()
-        *
-        * @param Config $bootstrapConfig The bootstrap config to use with the new
-        *        MediaWikiServices. Only used for the first call to this method.
-        */
-       public static function prepareServices( Config $bootstrapConfig ) {
-               static $servicesPrepared = false;
-
-               if ( $servicesPrepared ) {
-                       return;
-               } else {
-                       $servicesPrepared = true;
-               }
-
-               self::resetGlobalServices( $bootstrapConfig );
-       }
-
-       /**
-        * Reset global services, and install testing environment.
-        * This is the testing equivalent of MediaWikiServices::resetGlobalInstance().
-        * This should only be used to set up the testing environment, not when
-        * runnnig unit tests. Use overrideMwServices() for that.
-        *
-        * @see MediaWikiServices::resetGlobalInstance()
-        * @see prepareServices()
-        * @see overrideMwServices()
-        *
-        * @param Config|null $bootstrapConfig The bootstrap config to use with the new
-        *        MediaWikiServices.
-        */
-       protected static function resetGlobalServices( Config $bootstrapConfig = null ) {
-               $oldServices = MediaWikiServices::getInstance();
-               $oldConfigFactory = $oldServices->getConfigFactory();
-
-               $testConfig = self::makeTestConfig( $bootstrapConfig );
-
-               MediaWikiServices::resetGlobalInstance( $testConfig );
-
-               self::$serviceLocator = MediaWikiServices::getInstance();
-               self::installTestServices(
-                       $oldConfigFactory,
-                       self::$serviceLocator
-               );
-       }
-
-       /**
-        * Create a config suitable for testing, based on a base config, default overrides,
-        * and custom overrdies.
-        *
-        * @param Config|null $baseConfig
-        * @param Config|null $customOverrides
-        *
-        * @return Config
-        */
-       private static function makeTestConfig(
-               Config $baseConfig = null,
-               Config $customOverrides = null
-       ) {
-               $defaultOverrides = new HashConfig();
-
-               if ( !$baseConfig ) {
-                       $baseConfig = MediaWikiServices::getInstance()->getBootstrapConfig();
-               }
-
+       public function run( PHPUnit_Framework_TestResult $result = null ) {
                /* Some functions require some kind of caching, and will end up using the db,
                 * which we can't allow, as that would open a new connection for mysql.
                 * Replace with a HashBag. They would not be going to persist anyway.
                 */
-               $hashCache = [ 'class' => 'HashBagOStuff' ];
-               $objectCaches = [
-                               CACHE_DB => $hashCache,
-                               CACHE_ACCEL => $hashCache,
-                               CACHE_MEMCACHED => $hashCache,
-                               'apc' => $hashCache,
-                               'xcache' => $hashCache,
-                               'wincache' => $hashCache,
-                       ] + $baseConfig->get( 'ObjectCaches' );
-
-               $defaultOverrides->set( 'ObjectCaches', $objectCaches );
-               $defaultOverrides->set( 'MainCacheType', CACHE_NONE );
-
-               $testConfig = $customOverrides
-                       ? new MultiConfig( [ $customOverrides, $defaultOverrides, $baseConfig ] )
-                       : new MultiConfig( [ $defaultOverrides, $baseConfig ] );
-
-               return $testConfig;
-       }
-
-       /**
-        * @param ConfigFactory $oldConfigFactory
-        * @param MediaWikiServices $newServices
-        *
-        * @throws MWException
-        */
-       private static function installTestServices(
-               ConfigFactory $oldConfigFactory,
-               MediaWikiServices $newServices
-       ) {
-               // Use bootstrap config for all configuration.
-               // This allows config overrides via global variables to take effect.
-               $bootstrapConfig = $newServices->getBootstrapConfig();
-               $newServices->resetServiceForTesting( 'ConfigFactory' );
-               $newServices->redefineService(
-                       'ConfigFactory',
-                       self::makeTestConfigFactoryInstantiator(
-                               $oldConfigFactory,
-                               [ 'main' =>  $bootstrapConfig ]
-                       )
-               );
-       }
-
-       /**
-        * @param ConfigFactory $oldFactory
-        * @param Config[] $config
-        *
-        * @return Closure
-        */
-       private static function makeTestConfigFactoryInstantiator(
-               ConfigFactory $oldFactory,
-               array $configurations
-       ) {
-               return function( MediaWikiServices $services ) use ( $oldFactory, $configurations ) {
-                       $factory = new ConfigFactory();
-
-                       // clone configurations from $oldFactory that are not overwritten by $configurations
-                       $namesToClone = array_diff(
-                               $oldFactory->getConfigNames(),
-                               array_keys( $configurations )
-                       );
-
-                       foreach ( $namesToClone as $name ) {
-                               $factory->register( $name, $oldFactory->makeConfig( $name ) );
-                       }
-
-                       foreach ( $configurations as $name => $config ) {
-                               $factory->register( $name, $config );
-                       }
-
-                       return $factory;
-               };
-       }
-
-       /**
-        * Resets some well known services that typically have state that may interfere with unit tests.
-        * This is a lightweight alternative to resetGlobalServices().
-        *
-        * @note There is no guarantee that no references remain to stale service instances destroyed
-        * by a call to doLightweightServiceReset().
-        *
-        * @throws MWException if called outside of PHPUnit tests.
-        *
-        * @see resetGlobalServices()
-        */
-       private function doLightweightServiceReset() {
-               global $wgRequest;
-
-               $services = MediaWikiServices::getInstance();
+               ObjectCache::$instances[CACHE_DB] = new HashBagOStuff;
 
-               JobQueueGroup::destroySingletons();
-               ObjectCache::clear();
-               FileBackendGroup::destroySingleton();
-
-               // TODO: move global state into MediaWikiServices
-               RequestContext::resetMain();
-               MediaHandler::resetCache();
-               if ( session_id() !== '' ) {
-                       session_write_close();
-                       session_id( '' );
-               }
-
-               $wgRequest = new FauxRequest();
-               MediaWiki\Session\SessionManager::resetCache();
-       }
-
-       public function run( PHPUnit_Framework_TestResult $result = null ) {
-               // Reset all caches between tests.
-               $this->doLightweightServiceReset();
+               // Sandbox APC by replacing with in-process hash instead.
+               // Ensures values are removed between tests.
+               ObjectCache::$instances['apc'] =
+               ObjectCache::$instances['xcache'] =
+               ObjectCache::$instances['wincache'] = new HashBagOStuff;
 
                $needsResetDB = false;
 
@@ -486,12 +289,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                }
                $this->mwGlobals = [];
                $this->restoreLoggers();
-
-               if ( self::$serviceLocator && MediaWikiServices::getInstance() !== self::$serviceLocator ) {
-                       MediaWikiServices::forceGlobalInstance( self::$serviceLocator );
-               }
-
-               // TODO: move global state into MediaWikiServices
                RequestContext::resetMain();
                MediaHandler::resetCache();
                if ( session_id() !== '' ) {
@@ -527,28 +324,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                );
        }
 
-       /**
-        * Sets a service, maintaining a stashed version of the previous service to be
-        * restored in tearDown
-        *
-        * @param string $name
-        * @param object $object
-        */
-       protected function setService( $name, $object ) {
-               // If we did not yet override the service locator, so so now.
-               if ( MediaWikiServices::getInstance() === self::$serviceLocator ) {
-                       $this->overrideMwServices();
-               }
-
-               MediaWikiServices::getInstance()->disableService( $name );
-               MediaWikiServices::getInstance()->redefineService(
-                       $name,
-                       function () use ( $object ) {
-                               return $object;
-                       }
-               );
-       }
-
        /**
         * Sets a global, maintaining a stashed version of the previous global to be
         * restored in tearDown
@@ -579,9 +354,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         * @param mixed $value Value to set the global to (ignored
         *  if an array is given as first argument).
         *
-        * @note To allow changes to global variables to take effect on global service instances,
-        *       call overrideMwServices().
-        *
         * @since 1.21
         */
        protected function setMwGlobals( $pairs, $value = null ) {
@@ -609,10 +381,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         * @param array|string $globalKeys Key to the global variable, or an array of keys.
         *
         * @throws Exception When trying to stash an unset global
-        *
-        * @note To allow changes to global variables to take effect on global service instances,
-        *       call overrideMwServices().
-        *
         * @since 1.23
         */
        protected function stashMwGlobals( $globalKeys ) {
@@ -653,9 +421,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         *
         * @throws MWException If the designated global is not an array.
         *
-        * @note To allow changes to global variables to take effect on global service instances,
-        *       call overrideMwServices().
-        *
         * @since 1.21
         */
        protected function mergeMwGlobalArrayValue( $name, $values ) {
@@ -676,52 +441,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                $this->setMwGlobals( $name, $merged );
        }
 
-       /**
-        * Stashes the global instance of MediaWikiServices, and installs a new one,
-        * allowing test cases to override settings and services.
-        * The previous instance of MediaWikiServices will be restored on tearDown.
-        *
-        * @since 1.27
-        *
-        * @param Config $configOverrides Configuration overrides for the new MediaWikiServices instance.
-        * @param callable[] $services An associative array of services to re-define. Keys are service
-        *        names, values are callables.
-        *
-        * @return MediaWikiServices
-        * @throws MWException
-        */
-       protected function overrideMwServices( Config $configOverrides = null, array $services = [] ) {
-               if ( !$configOverrides ) {
-                       $configOverrides = new HashConfig();
-               }
-
-               $oldInstance = MediaWikiServices::getInstance();
-               $oldConfigFactory = $oldInstance->getConfigFactory();
-
-               $testConfig = self::makeTestConfig( null, $configOverrides );
-               $newInstance = new MediaWikiServices( $testConfig );
-
-               // Load the default wiring from the specified files.
-               // NOTE: this logic mirrors the logic in MediaWikiServices::newInstance.
-               $wiringFiles = $testConfig->get( 'ServiceWiringFiles' );
-               $newInstance->loadWiringFiles( $wiringFiles );
-
-               // Provide a traditional hook point to allow extensions to configure services.
-               Hooks::run( 'MediaWikiServices', [ $newInstance ] );
-
-               foreach ( $services as $name => $callback ) {
-                       $newInstance->redefineService( $name, $callback );
-               }
-
-               self::installTestServices(
-                       $oldConfigFactory,
-                       $newInstance
-               );
-               MediaWikiServices::forceGlobalInstance( $newInstance );
-
-               return $newInstance;
-       }
-
        /**
         * @since 1.27
         * @param string|Language $lang
@@ -756,9 +475,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         * @param LoggerInterface $logger
         */
        protected function setLogger( $channel, LoggerInterface $logger ) {
-               // TODO: Once loggers are managed by MediaWikiServices, use
-               //       overrideMwServices() to set loggers.
-
                $provider = LoggerFactory::getProvider();
                $wrappedProvider = TestingAccessWrapper::newFromObject( $provider );
                $singletons = $wrappedProvider->singletons;
@@ -850,10 +566,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                $user = User::newFromName( 'UTSysop' );
                $comment = __METHOD__ . ': Sample page for unit test.';
 
-               // Avoid memory leak...?
-               // LinkCache::singleton()->clear();
-               // Maybe.  But doing this absolutely breaks $title->isRedirect() when called during unit tests....
-
                $page = WikiPage::factory( $title );
                $page->doEditContent( ContentHandler::makeContent( $text, $title ), $comment, 0, false, $user );
 
@@ -925,12 +637,10 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                if ( $user->idForName() == 0 ) {
                        $user->addToDatabase();
                        TestUser::setPasswordForUser( $user, 'UTSysopPassword' );
+                       $user->addGroup( 'sysop' );
+                       $user->addGroup( 'bureaucrat' );
                }
 
-               // Always set groups, because $this->resetDB() wipes them out
-               $user->addGroup( 'sysop' );
-               $user->addGroup( 'bureaucrat' );
-
                // Make 1 page with 1 revision
                $page = WikiPage::factory( Title::newFromText( 'UTPage' ) );
                if ( $page->getId() == 0 ) {
@@ -1053,9 +763,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                        return;
                }
 
-               // TODO: the below should be re-written as soon as LBFactory, LoadBalancer,
-               // and DatabaseBase no longer use global state.
-
                self::$dbSetup = true;
 
                if ( !self::setupDatabaseWithTestPrefix( $db, $prefix ) ) {
@@ -1142,17 +849,29 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         */
        private function resetDB( $db, $tablesUsed ) {
                if ( $db ) {
+                       $userTables = [ 'user', 'user_groups', 'user_properties' ];
+                       $coreDBDataTables = array_merge( $userTables, [ 'page', 'revision' ] );
+
+                       // If any of the user tables were marked as used, we should clear all of them.
+                       if ( array_intersect( $tablesUsed, $userTables ) ) {
+                               $tablesUsed = array_unique( array_merge( $tablesUsed, $userTables ) );
+
+                               // Totally clear User class in-process cache to avoid CAS errors
+                               TestingAccessWrapper::newFromClass( 'User' )
+                                       ->getInProcessCache()
+                                       ->clear();
+                       }
+
                        $truncate = in_array( $db->getType(), [ 'oracle', 'mysql' ] );
                        foreach ( $tablesUsed as $tbl ) {
-                               // TODO: reset interwiki and user tables to their original content.
-                               if ( $tbl == 'interwiki' || $tbl == 'user' ) {
+                               // TODO: reset interwiki table to its original content.
+                               if ( $tbl == 'interwiki' ) {
                                        continue;
                                }
 
                                if ( $truncate ) {
                                        $db->query( 'TRUNCATE TABLE ' . $db->tableName( $tbl ), __METHOD__ );
                                } else {
-
                                        $db->delete( $tbl, '*', __METHOD__ );
                                }
 
@@ -1162,6 +881,11 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                                        LinkCache::singleton()->clear();
                                }
                        }
+
+                       if ( array_intersect( $tablesUsed, $coreDBDataTables ) ) {
+                               // Re-add core DB data that was deleted
+                               $this->addCoreDBData();
+                       }
                }
        }
 
diff --git a/tests/phpunit/includes/HtmlFormatterTest.php b/tests/phpunit/includes/HtmlFormatterTest.php
deleted file mode 100644 (file)
index ab5219c..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-
-/**
- * @group HtmlFormatter
- */
-class HtmlFormatterTest extends MediaWikiTestCase {
-
-       /**
-        * Use TidySupport to check whether we should use $wgTidyInternal.
-        *
-        * The Tidy extension in HHVM does not support error text return, so it is
-        * nominally usable, but does not pass tests which require error text from
-        * Tidy.
-        */
-       protected function setUp() {
-               parent::setUp();
-               $tidySupport = new TidySupport();
-               $this->setMwGlobals( 'wgTidyInternal', $tidySupport->isInternal() );
-       }
-
-       /**
-        * @dataProvider getHtmlData
-        *
-        * @param string $input
-        * @param string $expectedText
-        * @param array $expectedRemoved
-        * @param callable|bool $callback
-        */
-       public function testTransform( $input, $expectedText,
-               $expectedRemoved = [], $callback = false
-       ) {
-               $input = self::normalize( $input );
-               $formatter = new HtmlFormatter( HtmlFormatter::wrapHTML( $input ) );
-               if ( $callback ) {
-                       $callback( $formatter );
-               }
-               $removedElements = $formatter->filterContent();
-               $html = $formatter->getText();
-               $removed = [];
-               foreach ( $removedElements as $removedElement ) {
-                       $removed[] = self::normalize( $formatter->getText( $removedElement ) );
-               }
-               $expectedRemoved = array_map( 'self::normalize', $expectedRemoved );
-
-               $this->assertValidHtmlSnippet( $html );
-               $this->assertEquals( self::normalize( $expectedText ), self::normalize( $html ) );
-               $this->assertEquals( asort( $expectedRemoved ), asort( $removed ) );
-       }
-
-       private static function normalize( $s ) {
-               return str_replace( "\n", '',
-                       str_replace( "\r", '', $s ) // "yay" to Windows!
-               );
-       }
-
-       public function getHtmlData() {
-               $removeImages = function ( HtmlFormatter $f ) {
-                       $f->setRemoveMedia();
-               };
-               $removeTags = function ( HtmlFormatter $f ) {
-                       $f->remove( [ 'table', '.foo', '#bar', 'div.baz' ] );
-               };
-               $flattenSomeStuff = function ( HtmlFormatter $f ) {
-                       $f->flatten( [ 's', 'div' ] );
-               };
-               $flattenEverything = function ( HtmlFormatter $f ) {
-                       $f->flattenAllTags();
-               };
-               return [
-                       // remove images if asked
-                       [
-                               '<img src="/foo/bar.jpg" alt="Blah"/>',
-                               '',
-                               [ '<img src="/foo/bar.jpg" alt="Blah">' ],
-                               $removeImages,
-                       ],
-                       // basic tag removal
-                       [
-                               // @codingStandardsIgnoreStart Ignore long line warnings.
-                               '<table><tr><td>foo</td></tr></table><div class="foo">foo</div><div class="foo quux">foo</div><span id="bar">bar</span>
-<strong class="foo" id="bar">foobar</strong><div class="notfoo">test</div><div class="baz"/>
-<span class="baz">baz</span>',
-                               // @codingStandardsIgnoreEnd
-                               '<div class="notfoo">test</div>
-<span class="baz">baz</span>',
-                               [
-                                       '<table><tr><td>foo</td></tr></table>',
-                                       '<div class="foo">foo</div>',
-                                       '<div class="foo quux">foo</div>',
-                                       '<span id="bar">bar</span>',
-                                       '<strong class="foo" id="bar">foobar</strong>',
-                                       '<div class="baz"/>',
-                               ],
-                               $removeTags,
-                       ],
-                       // don't flatten tags that start like chosen ones
-                       [
-                               '<div><s>foo</s> <span>bar</span></div>',
-                               'foo <span>bar</span>',
-                               [],
-                               $flattenSomeStuff,
-                       ],
-                       // total flattening
-                       [
-                               '<div style="foo">bar<sup>2</sup></div>',
-                               'bar2',
-                               [],
-                               $flattenEverything,
-                       ],
-                       // UTF-8 preservation and security
-                       [
-                               '<span title="&quot; \' &amp;">&lt;Тест!&gt;</span> &amp;&lt;&#38;&#0038;&#x26;&#x026;',
-                               '<span title="&quot; \' &amp;">&lt;Тест!&gt;</span> &amp;&lt;&amp;&amp;&amp;&amp;',
-                               [],
-                               $removeTags, // Have some rules to trigger a DOM parse
-                       ],
-                       // https://phabricator.wikimedia.org/T55086
-                       [
-                               'Foo<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup>'
-                                       . ' <a href="/wiki/Bar" title="Bar" class="mw-redirect">Bar</a>',
-                               'Foo<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup>'
-                                       . ' <a href="/wiki/Bar" title="Bar" class="mw-redirect">Bar</a>',
-                       ],
-               ];
-       }
-
-       public function testQuickProcessing() {
-               $f = new MockHtmlFormatter( 'foo' );
-               $f->filterContent();
-               $this->assertFalse( $f->hasDoc, 'HtmlFormatter should not needlessly parse HTML' );
-       }
-}
-
-class MockHtmlFormatter extends HtmlFormatter {
-       public $hasDoc = false;
-
-       public function getDoc() {
-               $this->hasDoc = true;
-               return parent::getDoc();
-       }
-}
index 53cd0b1..127f869 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 use MediaWiki\MediaWikiServices;
-use MediaWiki\Services\ServiceDisabledException;
 
 /**
  * @covers MediaWiki\MediaWikiServices
@@ -9,203 +8,22 @@ use MediaWiki\Services\ServiceDisabledException;
  */
 class MediaWikiServicesTest extends PHPUnit_Framework_TestCase {
 
-       /**
-        * @return Config
-        */
-       private function newTestConfig() {
-               $globalConfig = new GlobalVarConfig();
-
-               $testConfig = new HashConfig();
-               $testConfig->set( 'ServiceWiringFiles', $globalConfig->get( 'ServiceWiringFiles' ) );
-               $testConfig->set( 'ConfigRegistry', $globalConfig->get( 'ConfigRegistry' ) );
-
-               return $testConfig;
-       }
-
-       /**
-        * @return MediaWikiServices
-        */
-       private function newMediaWikiServices( Config $config = null ) {
-               if ( $config === null ) {
-                       $config = $this->newTestConfig();
-               }
-
-               $instance = new MediaWikiServices( $config );
-
-               // Load the default wiring from the specified files.
-               $wiringFiles = $config->get( 'ServiceWiringFiles' );
-               $instance->loadWiringFiles( $wiringFiles );
-
-               return $instance;
-       }
-
        public function testGetInstance() {
                $services = MediaWikiServices::getInstance();
                $this->assertInstanceOf( 'MediaWiki\\MediaWikiServices', $services );
        }
 
-       public function testForceGlobalInstance() {
-               $newServices = $this->newMediaWikiServices();
-               $oldServices = MediaWikiServices::forceGlobalInstance( $newServices );
-
-               $this->assertInstanceOf( 'MediaWiki\\MediaWikiServices', $oldServices );
-               $this->assertNotSame( $oldServices, $newServices );
-
-               $theServices = MediaWikiServices::getInstance();
-               $this->assertSame( $theServices, $newServices );
-
-               MediaWikiServices::forceGlobalInstance( $oldServices );
-
-               $theServices = MediaWikiServices::getInstance();
-               $this->assertSame( $theServices, $oldServices );
-       }
-
-       public function testResetGlobalInstance() {
-               $newServices = $this->newMediaWikiServices();
-               $oldServices = MediaWikiServices::forceGlobalInstance( $newServices );
-
-               MediaWikiServices::resetGlobalInstance( $this->newTestConfig() );
-               $theServices = MediaWikiServices::getInstance();
-
-               $this->assertNotSame( $theServices, $newServices );
-               $this->assertNotSame( $theServices, $oldServices );
-
-               MediaWikiServices::forceGlobalInstance( $oldServices );
-       }
-
-       public function testDisableStorageBackend() {
-               $newServices = $this->newMediaWikiServices();
-               $oldServices = MediaWikiServices::forceGlobalInstance( $newServices );
-
-               $lbFactory = $this->getMockBuilder( 'LBFactorySimple' )
-                       ->disableOriginalConstructor()
-                       ->getMock();
-
-               $lbFactory->expects( $this->once() )
-                       ->method( 'destroy' );
-
-               $newServices->redefineService(
-                       'DBLoadBalancerFactory',
-                       function() use ( $lbFactory ) {
-                               return $lbFactory;
-                       }
-               );
-
-               // force the service to become active, so we can check that it does get destroyed
-               $newServices->getService( 'DBLoadBalancerFactory' );
-
-               MediaWikiServices::disableStorageBackend(); // should destroy DBLoadBalancerFactory
-
-               try {
-                       MediaWikiServices::getInstance()->getService( 'DBLoadBalancerFactory' );
-                       $this->fail( 'DBLoadBalancerFactory shoudl have been disabled' );
-               }
-               catch ( ServiceDisabledException $ex ) {
-                       // ok, as expected
-               }
-               catch ( Throwable $ex ) {
-                       $this->fail( 'ServiceDisabledException expected, caught ' . get_class( $ex ) );
-               }
-
-               MediaWikiServices::forceGlobalInstance( $oldServices );
-       }
-
-       public function testResetChildProcessServices() {
-               $newServices = $this->newMediaWikiServices();
-               $oldServices = MediaWikiServices::forceGlobalInstance( $newServices );
-
-               $lbFactory = $this->getMockBuilder( 'LBFactorySimple' )
-                       ->disableOriginalConstructor()
-                       ->getMock();
-
-               $lbFactory->expects( $this->once() )
-                       ->method( 'destroy' );
-
-               $newServices->redefineService(
-                       'DBLoadBalancerFactory',
-                       function() use ( $lbFactory ) {
-                               return $lbFactory;
-                       }
-               );
-
-               // force the service to become active, so we can check that it does get destroyed
-               $oldLBFactory = $newServices->getService( 'DBLoadBalancerFactory' );
-
-               MediaWikiServices::resetChildProcessServices();
-               $finalServices = MediaWikiServices::getInstance();
-
-               $newLBFactory = $finalServices->getService( 'DBLoadBalancerFactory' );
-
-               $this->assertNotSame( $oldLBFactory, $newLBFactory );
-
-               MediaWikiServices::forceGlobalInstance( $oldServices );
-       }
-
-       public function testResetServiceForTesting() {
-               $services = $this->newMediaWikiServices();
-               $serviceCounter = 0;
-
-               $services->defineService(
-                       'Test',
-                       function() use ( &$serviceCounter ) {
-                               $serviceCounter++;
-                               $service = $this->getMock( 'MediaWiki\Services\DestructibleService' );
-                               $service->expects( $this->once() )->method( 'destroy' );
-                               return $service;
-                       }
-               );
-
-               // This should do nothing. In particular, it should not create a service instance.
-               $services->resetServiceForTesting( 'Test' );
-               $this->assertEquals( 0, $serviceCounter, 'No service instance should be created yet.' );
-
-               $oldInstance = $services->getService( 'Test' );
-               $this->assertEquals( 1, $serviceCounter, 'A service instance should exit now.' );
-
-               // The old instance should be detached, and destroy() called.
-               $services->resetServiceForTesting( 'Test' );
-               $newInstance = $services->getService( 'Test' );
-
-               $this->assertNotSame( $oldInstance, $newInstance );
-
-               // Satisfy the expectation that destroy() is called also for the second service instance.
-               $newInstance->destroy();
-       }
-
-       public function testResetServiceForTesting_noDestroy() {
-               $services = $this->newMediaWikiServices();
-
-               $services->defineService(
-                       'Test',
-                       function() {
-                               $service = $this->getMock( 'MediaWiki\Services\DestructibleService' );
-                               $service->expects( $this->never() )->method( 'destroy' );
-                               return $service;
-                       }
-               );
-
-               $oldInstance = $services->getService( 'Test' );
-
-               // The old instance should be detached, but destroy() not called.
-               $services->resetServiceForTesting( 'Test', false );
-               $newInstance = $services->getService( 'Test' );
-
-               $this->assertNotSame( $oldInstance, $newInstance );
-       }
-
        public function provideGetters() {
-               $getServiceCases = $this->provideGetService();
-               $getterCases = [];
-
-               // All getters should be named just like the service, with "get" added.
-               foreach ( $getServiceCases as $name => $case ) {
-                       $getterCases[$name] = [
-                               'get' . $case[0],
-                               $case[1]
-                       ];
-               }
-
-               return $getterCases;
+               // NOTE: This should list all service getters defined in MediaWikiServices.
+               // NOTE: For every test case defined here there should be a corresponding
+               // test case defined in provideGetService().
+               return [
+                       'BootstrapConfig' => [ 'getBootstrapConfig', Config::class ],
+                       'ConfigFactory' => [ 'getConfigFactory', ConfigFactory::class ],
+                       'MainConfig' => [ 'getMainConfig', Config::class ],
+                       'SiteStore' => [ 'getSiteStore', SiteStore::class ],
+                       'SiteLookup' => [ 'getSiteLookup', SiteLookup::class ],
+               ];
        }
 
        /**
@@ -228,8 +46,6 @@ class MediaWikiServicesTest extends PHPUnit_Framework_TestCase {
                        'MainConfig' => [ 'MainConfig', Config::class ],
                        'SiteStore' => [ 'SiteStore', SiteStore::class ],
                        'SiteLookup' => [ 'SiteLookup', SiteLookup::class ],
-                       'DBLoadBalancerFactory' => [ 'DBLoadBalancerFactory', 'LBFactory' ],
-                       'DBLoadBalancer' => [ 'DBLoadBalancer', 'LoadBalancer' ],
                ];
        }
 
index 97852cf..cf34b18 100644 (file)
@@ -15,12 +15,12 @@ class MessageTest extends MediaWikiLangTestCase {
         * @covers Message::__construct
         * @dataProvider provideConstructor
         */
-       public function testConstructor( Language $expectedLang, $key, $params, $language ) {
+       public function testConstructor( $expectedLang, $key, $params, $language ) {
                $message = new Message( $key, $params, $language );
 
                $this->assertEquals( $key, $message->getKey() );
                $this->assertEquals( $params, $message->getParams() );
-               $this->assertEquals( $expectedLang->getCode(), $message->getLanguage()->getCode() );
+               $this->assertEquals( $expectedLang, $message->getLanguage() );
 
                $messageSpecifier = $this->getMockForAbstractClass( 'MessageSpecifier' );
                $messageSpecifier->expects( $this->any() )
@@ -31,7 +31,7 @@ class MessageTest extends MediaWikiLangTestCase {
 
                $this->assertEquals( $key, $message->getKey() );
                $this->assertEquals( $params, $message->getParams() );
-               $this->assertEquals( $expectedLang->getCode(), $message->getLanguage()->getCode() );
+               $this->assertEquals( $expectedLang, $message->getLanguage() );
        }
 
        public static function provideConstructor() {
index 2f63ca8..8d4a347 100644 (file)
@@ -169,7 +169,7 @@ class OutputPageTest extends MediaWikiTestCase {
                        [
                                [ 'test.quux', ResourceLoaderModule::TYPE_COMBINED ],
                                "<script>(window.RLQ=window.RLQ||[]).push(function(){"
-                                       . "mw.loader.implement(\"test.quux\",function($,jQuery){"
+                                       . "mw.loader.implement(\"test.quux\",function($,jQuery,require,module){"
                                        . "mw.test.baz({token:123});},{\"css\":[\".mw-icon{transition:none}"
                                        . "\"]});});</script>"
                        ],
index 933777c..942c45e 100644 (file)
@@ -69,53 +69,11 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
 
                $name = 'TestService92834576';
 
-               $this->setExpectedException( 'MediaWiki\Services\NoSuchServiceException' );
+               $this->setExpectedException( 'InvalidArgumentException' );
 
                $services->getService( $name );
        }
 
-       public function testPeekService() {
-               $services = $this->newServiceContainer();
-
-               $services->defineService(
-                       'Foo',
-                       function() {
-                               return new stdClass();
-                       }
-               );
-
-               $services->defineService(
-                       'Bar',
-                       function() {
-                               return new stdClass();
-                       }
-               );
-
-               // trigger instantiation of Foo
-               $services->getService( 'Foo' );
-
-               $this->assertInternalType(
-                       'object',
-                       $services->peekService( 'Foo' ),
-                       'Peek should return the service object if it had been accessed before.'
-               );
-
-               $this->assertNull(
-                       $services->peekService( 'Bar' ),
-                       'Peek should return null if the service was never accessed.'
-               );
-       }
-
-       public function testPeekService_fail_unknown() {
-               $services = $this->newServiceContainer();
-
-               $name = 'TestService92834576';
-
-               $this->setExpectedException( 'MediaWiki\Services\NoSuchServiceException' );
-
-               $services->peekService( $name );
-       }
-
        public function testDefineService() {
                $services = $this->newServiceContainer();
 
@@ -141,7 +99,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                        return $theService;
                } );
 
-               $this->setExpectedException( 'MediaWiki\Services\ServiceAlreadyDefinedException' );
+               $this->setExpectedException( 'RuntimeException' );
 
                $services->defineService( $name, function() use ( $theService ) {
                        return $theService;
@@ -189,7 +147,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                ];
 
                // loading the same file twice should fail, because
-               $this->setExpectedException( 'MediaWiki\Services\ServiceAlreadyDefinedException' );
+               $this->setExpectedException( 'RuntimeException' );
 
                $services->loadWiringFiles( $wiringFiles );
        }
@@ -226,7 +184,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                $theService = new stdClass();
                $name = 'TestService92834576';
 
-               $this->setExpectedException( 'MediaWiki\Services\NoSuchServiceException' );
+               $this->setExpectedException( 'RuntimeException' );
 
                $services->redefineService( $name, function() use ( $theService ) {
                        return $theService;
@@ -246,101 +204,11 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                // create the service, so it can no longer be redefined
                $services->getService( $name );
 
-               $this->setExpectedException( 'MediaWiki\Services\CannotReplaceActiveServiceException' );
-
-               $services->redefineService( $name, function() use ( $theService ) {
-                       return $theService;
-               } );
-       }
-
-       public function testDisableService() {
-               $services = $this->newServiceContainer( [ 'Foo' ] );
-
-               $destructible = $this->getMock( 'MediaWiki\Services\DestructibleService' );
-               $destructible->expects( $this->once() )
-                       ->method( 'destroy' );
-
-               $services->defineService( 'Foo', function() use ( $destructible ) {
-                       return $destructible;
-               } );
-               $services->defineService( 'Bar', function() {
-                       return new stdClass();
-               } );
-               $services->defineService( 'Qux', function() {
-                       return new stdClass();
-               } );
-
-               // instantiate Foo and Bar services
-               $services->getService( 'Foo' );
-               $services->getService( 'Bar' );
-
-               // disable service, should call destroy() once.
-               $services->disableService( 'Foo' );
-
-               // disabled service should still be listed
-               $this->assertContains( 'Foo', $services->getServiceNames() );
-
-               // getting other services should still work
-               $services->getService( 'Bar' );
-
-               // disable non-destructible service, and not-yet-instantiated service
-               $services->disableService( 'Bar' );
-               $services->disableService( 'Qux' );
-
-               $this->assertNull( $services->peekService( 'Bar' ) );
-               $this->assertNull( $services->peekService( 'Qux' ) );
-
-               // disabled service should still be listed
-               $this->assertContains( 'Bar', $services->getServiceNames() );
-               $this->assertContains( 'Qux', $services->getServiceNames() );
-
-               // re-enable Bar service
-               $services->redefineService( 'Bar', function() {
-                       return new stdClass();
-               } );
-
-               $services->getService( 'Bar' );
-
-               $this->setExpectedException( 'MediaWiki\Services\ServiceDisabledException' );
-               $services->getService( 'Qux' );
-       }
-
-       public function testDisableService_fail_undefined() {
-               $services = $this->newServiceContainer();
-
-               $theService = new stdClass();
-               $name = 'TestService92834576';
-
-               $this->setExpectedException( 'MediaWiki\Services\NoSuchServiceException' );
+               $this->setExpectedException( 'RuntimeException' );
 
                $services->redefineService( $name, function() use ( $theService ) {
                        return $theService;
                } );
        }
 
-       public function testDestroy() {
-               $services = $this->newServiceContainer();
-
-               $destructible = $this->getMock( 'MediaWiki\Services\DestructibleService' );
-               $destructible->expects( $this->once() )
-                       ->method( 'destroy' );
-
-               $services->defineService( 'Foo', function() use ( $destructible ) {
-                       return $destructible;
-               } );
-
-               $services->defineService( 'Bar', function() {
-                       return new stdClass();
-               } );
-
-               // create the service
-               $services->getService( 'Foo' );
-
-               // destroy the container
-               $services->destroy();
-
-               $this->setExpectedException( 'MediaWiki\Services\ContainerDisabledException' );
-               $services->getService( 'Bar' );
-       }
-
 }
index 9dd38df..17b2fa4 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-use Liuggio\StatsdClient\Factory\StatsdDataFactory;
 
 /**
  * @author Addshore
@@ -18,7 +17,11 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
        /**
         * @return PHPUnit_Framework_MockObject_MockObject|LoadBalancer
         */
-       private function getMockLoadBalancer( $mockDb, $expectedConnectionType = null ) {
+       private function getMockLoadBalancer(
+               $mockDb,
+               $expectedConnectionType = null,
+               $readOnlyReason = false
+       ) {
                $mock = $this->getMockBuilder( LoadBalancer::class )
                        ->disableOriginalConstructor()
                        ->getMock();
@@ -34,7 +37,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                }
                $mock->expects( $this->any() )
                        ->method( 'getReadOnlyReason' )
-                       ->will( $this->returnValue( false ) );
+                       ->will( $this->returnValue( $readOnlyReason ) );
                return $mock;
        }
 
@@ -810,7 +813,20 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                );
        }
 
-       public function testDuplicateAllAssociatedEntries_somethingToDuplicate() {
+       public function provideLinkTargetPairs() {
+               return [
+                       [ Title::newFromText( 'Old_Title' ), Title::newFromText( 'New_Title' ) ],
+                       [ new TitleValue( 0, 'Old_Title' ),  new TitleValue( 0, 'New_Title' ) ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideLinkTargetPairs
+        */
+       public function testDuplicateAllAssociatedEntries_somethingToDuplicate(
+               LinkTarget $oldTarget,
+               LinkTarget $newTarget
+       ) {
                $fakeRows = [
                        $this->getFakeRow( [ 'wl_user' => 1, 'wl_notificationtimestamp' => '20151212010101' ] ),
                ];
@@ -825,8 +841,8 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                                        'wl_notificationtimestamp',
                                ],
                                [
-                                       'wl_namespace' => 0,
-                                       'wl_title' => 'Old_Title',
+                                       'wl_namespace' => $oldTarget->getNamespace(),
+                                       'wl_title' => $oldTarget->getDBkey(),
                                ]
                        )
                        ->will( $this->returnValue( new FakeResultWrapper( $fakeRows ) ) );
@@ -838,8 +854,8 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                                [
                                        [
                                                'wl_user' => 1,
-                                               'wl_namespace' => 0,
-                                               'wl_title' => 'New_Title',
+                                               'wl_namespace' => $newTarget->getNamespace(),
+                                               'wl_title' => $newTarget->getDBkey(),
                                                'wl_notificationtimestamp' => '20151212010101',
                                        ],
                                ],
@@ -854,8 +870,8 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                                        'wl_notificationtimestamp',
                                ],
                                [
-                                       'wl_namespace' => 1,
-                                       'wl_title' => 'Old_Title',
+                                       'wl_namespace' => $oldTarget->getNamespace() + 1,
+                                       'wl_title' => $oldTarget->getDBkey(),
                                ]
                        )
                        ->will( $this->returnValue( new FakeResultWrapper( $fakeRows ) ) );
@@ -867,8 +883,8 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                                [
                                        [
                                                'wl_user' => 1,
-                                               'wl_namespace' => 1,
-                                               'wl_title' => 'New_Title',
+                                               'wl_namespace' => $newTarget->getNamespace() + 1,
+                                               'wl_title' => $newTarget->getDBkey(),
                                                'wl_notificationtimestamp' => '20151212010101',
                                        ],
                                ],
@@ -885,8 +901,8 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                );
 
                $store->duplicateAllAssociatedEntries(
-                       Title::newFromText( 'Old_Title' ),
-                       Title::newFromText( 'New_Title' )
+                       $oldTarget,
+                       $newTarget
                );
        }
 
@@ -942,6 +958,20 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                );
        }
 
+       public function testAddWatchBatchForUser_readOnlyDBReturnsFalse() {
+               $store = $this->newWatchedItemStore(
+                       $this->getMockLoadBalancer( $this->getMockDb(), null, 'Some Reason' ),
+                       $this->getMockCache()
+               );
+
+               $this->assertFalse(
+                       $store->addWatchBatchForUser(
+                               $this->getMockNonAnonUserWithId( 1 ),
+                               [ new TitleValue( 0, 'Some_Page' ), new TitleValue( 1, 'Some_Page' ) ]
+                       )
+               );
+       }
+
        public function testAddWatchBatchForUser_nonAnonymousUser() {
                $mockDb = $this->getMockDb();
                $mockDb->expects( $this->once() )
index 62b1115..246ea3d 100644 (file)
@@ -37,7 +37,7 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
                ];
 
                $this->setMwGlobals( [
-                       'wgAuth' => new StubObject( 'wgAuth', 'AuthPlugin' ),
+                       'wgAuth' => new AuthPlugin,
                        'wgRequest' => new FauxRequest( [] ),
                        'wgUser' => self::$users['sysop']->user,
                ] );
index 6369b33..1d86fb4 100644 (file)
@@ -74,7 +74,7 @@ class CategoryMembershipChangeTest extends MediaWikiLangTestCase {
                $this->assertTrue( strlen( self::$lastNotifyArgs[0] ) === 14 );
                $this->assertEquals( 'Category:CategoryName', self::$lastNotifyArgs[1]->getPrefixedText() );
                $this->assertEquals( '(autochange-username)', self::$lastNotifyArgs[2]->getName() );
-               $this->assertEquals( '(recentchanges-page-added-to-category: ' . self::$pageName . ', 0)',
+               $this->assertEquals( '(recentchanges-page-added-to-category: ' . self::$pageName . ')',
                        self::$lastNotifyArgs[3] );
                $this->assertEquals( self::$pageName, self::$lastNotifyArgs[4]->getPrefixedText() );
                $this->assertEquals( 0, self::$lastNotifyArgs[5] );
@@ -94,7 +94,7 @@ class CategoryMembershipChangeTest extends MediaWikiLangTestCase {
                $this->assertTrue( strlen( self::$lastNotifyArgs[0] ) === 14 );
                $this->assertEquals( 'Category:CategoryName', self::$lastNotifyArgs[1]->getPrefixedText() );
                $this->assertEquals( '(autochange-username)', self::$lastNotifyArgs[2]->getName() );
-               $this->assertEquals( '(recentchanges-page-removed-from-category: ' . self::$pageName . ', 0)',
+               $this->assertEquals( '(recentchanges-page-removed-from-category: ' . self::$pageName . ')',
                        self::$lastNotifyArgs[3] );
                $this->assertEquals( self::$pageName, self::$lastNotifyArgs[4]->getPrefixedText() );
                $this->assertEquals( 0, self::$lastNotifyArgs[5] );
@@ -115,7 +115,7 @@ class CategoryMembershipChangeTest extends MediaWikiLangTestCase {
                $this->assertTrue( strlen( self::$lastNotifyArgs[0] ) === 14 );
                $this->assertEquals( 'Category:CategoryName', self::$lastNotifyArgs[1]->getPrefixedText() );
                $this->assertEquals( 'UTSysop', self::$lastNotifyArgs[2]->getName() );
-               $this->assertEquals( '(recentchanges-page-added-to-category: ' . self::$pageName . ', 0)',
+               $this->assertEquals( '(recentchanges-page-added-to-category: ' . self::$pageName . ')',
                        self::$lastNotifyArgs[3] );
                $this->assertEquals( self::$pageName, self::$lastNotifyArgs[4]->getPrefixedText() );
                $this->assertEquals( self::$pageRev->getParentId(), self::$lastNotifyArgs[5] );
@@ -136,7 +136,7 @@ class CategoryMembershipChangeTest extends MediaWikiLangTestCase {
                $this->assertTrue( strlen( self::$lastNotifyArgs[0] ) === 14 );
                $this->assertEquals( 'Category:CategoryName', self::$lastNotifyArgs[1]->getPrefixedText() );
                $this->assertEquals( 'UTSysop', self::$lastNotifyArgs[2]->getName() );
-               $this->assertEquals( '(recentchanges-page-removed-from-category: ' . self::$pageName . ', 0)',
+               $this->assertEquals( '(recentchanges-page-removed-from-category: ' . self::$pageName . ')',
                        self::$lastNotifyArgs[3] );
                $this->assertEquals( self::$pageName, self::$lastNotifyArgs[4]->getPrefixedText() );
                $this->assertEquals( self::$pageRev->getParentId(), self::$lastNotifyArgs[5] );
index 4abe9ee..2efc802 100644 (file)
@@ -134,4 +134,51 @@ class RecentChangeTest extends MediaWikiTestCase {
                $this->assertEquals( $rcType, RecentChange::parseToRCType( $type ) );
        }
 
+       /**
+        * @return PHPUnit_Framework_MockObject_MockObject|PageProps
+        */
+       private function getMockPageProps() {
+               return $this->getMockBuilder( PageProps::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+       }
+
+       public function provideCategoryContent() {
+               return [
+                       [ true ],
+                       [ false ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideCategoryContent
+        * @covers RecentChange::newForCategorization
+        */
+       public function testHiddenCategoryChange( $isHidden ) {
+               $categoryTitle = Title::newFromText( 'CategoryPage', NS_CATEGORY );
+
+               $pageProps = $this->getMockPageProps();
+               $pageProps->expects( $this->once() )
+                       ->method( 'getProperties' )
+                       ->with( $categoryTitle, 'hiddencat' )
+                       ->will( $this->returnValue( $isHidden ? [ $categoryTitle->getArticleID() => '' ] : [ ] ) );
+
+               $scopedOverride = PageProps::overrideInstance( $pageProps );
+
+               $rc = RecentChange::newForCategorization(
+                       '0',
+                       $categoryTitle,
+                       $this->user,
+                       $this->user_comment,
+                       $this->title,
+                       $categoryTitle->getLatestRevID(),
+                       $categoryTitle->getLatestRevID(),
+                       '0',
+                       false
+               );
+
+               $this->assertEquals( $isHidden, $rc->getParam( 'hidden-cat' ) );
+
+               ScopedCallback::consume( $scopedOverride );
+       }
 }
index 2c1d1e6..2288507 100644 (file)
@@ -8,71 +8,17 @@ class ConfigFactoryTest extends MediaWikiTestCase {
        public function testRegister() {
                $factory = new ConfigFactory();
                $factory->register( 'unittest', 'GlobalVarConfig::newInstance' );
-               $this->assertInstanceOf( GlobalVarConfig::class, $factory->makeConfig( 'unittest' ) );
-       }
-
-       /**
-        * @covers ConfigFactory::register
-        */
-       public function testRegisterInvalid() {
-               $factory = new ConfigFactory();
+               $this->assertTrue( true ); // No exception thrown
                $this->setExpectedException( 'InvalidArgumentException' );
                $factory->register( 'invalid', 'Invalid callback' );
        }
 
-       /**
-        * @covers ConfigFactory::register
-        */
-       public function testRegisterInstance() {
-               $config = GlobalVarConfig::newInstance();
-               $factory = new ConfigFactory();
-               $factory->register( 'unittest', $config );
-               $this->assertSame( $config, $factory->makeConfig( 'unittest' ) );
-       }
-
-       /**
-        * @covers ConfigFactory::register
-        */
-       public function testRegisterAgain() {
-               $factory = new ConfigFactory();
-               $factory->register( 'unittest', 'GlobalVarConfig::newInstance' );
-               $config1 = $factory->makeConfig( 'unittest' );
-
-               $factory->register( 'unittest', 'GlobalVarConfig::newInstance' );
-               $config2 = $factory->makeConfig( 'unittest' );
-
-               $this->assertNotSame( $config1, $config2 );
-       }
-
-       /**
-        * @covers ConfigFactory::register
-        */
-       public function testGetConfigNames() {
-               $factory = new ConfigFactory();
-               $factory->register( 'foo', 'GlobalVarConfig::newInstance' );
-               $factory->register( 'bar', new HashConfig() );
-
-               $this->assertEquals( [ 'foo', 'bar' ], $factory->getConfigNames() );
-       }
-
        /**
         * @covers ConfigFactory::makeConfig
         */
        public function testMakeConfig() {
                $factory = new ConfigFactory();
                $factory->register( 'unittest', 'GlobalVarConfig::newInstance' );
-
-               $conf = $factory->makeConfig( 'unittest' );
-               $this->assertInstanceOf( 'Config', $conf );
-               $this->assertSame( $conf, $factory->makeConfig( 'unittest' ) );
-       }
-
-       /**
-        * @covers ConfigFactory::makeConfig
-        */
-       public function testMakeConfigFallback() {
-               $factory = new ConfigFactory();
-               $factory->register( '*', 'GlobalVarConfig::newInstance' );
                $conf = $factory->makeConfig( 'unittest' );
                $this->assertInstanceOf( 'Config', $conf );
        }
@@ -102,10 +48,10 @@ class ConfigFactoryTest extends MediaWikiTestCase {
         * @covers ConfigFactory::getDefaultInstance
         */
        public function testGetDefaultInstance() {
-               // NOTE: the global config factory returned here has been overwritten
-               // for operation in test mode. It may not reflect LocalSettings.
                $factory = ConfigFactory::getDefaultInstance();
                $this->assertInstanceOf( 'Config', $factory->makeConfig( 'main' ) );
-       }
 
+               $this->setExpectedException( 'ConfigException' );
+               $factory->makeConfig( 'xyzzy' );
+       }
 }
index ac75e55..3309352 100644 (file)
@@ -225,8 +225,8 @@ class LinksUpdateTest extends MediaWikiLangTestCase {
                        Title::newFromText( 'Baz' ),
                        [ [
                                'Baz',
-                               '[[:Template:TestingTemplate]] and [[Special:WhatLinksHere/Template:TestingTemplate|2 pages]] '
-                               . 'added to category'
+                               '[[:Template:TestingTemplate]] added to category, ' .
+                               '[[Special:WhatLinksHere/Template:TestingTemplate|this page is included within other pages]]'
                        ] ]
                );
        }
index 3c648f9..600a36f 100644 (file)
@@ -23,34 +23,36 @@ class JobTest extends MediaWikiTestCase {
                        ->method( '__toString' )
                        ->will( $this->returnValue( '{STRING_OBJ_VAL}' ) );
 
+               $requestId = 'requestId=' . WebRequest::getRequestId();
+
                return [
                        [
                                $this->getMockJob( false ),
-                               'someCommand '
+                               'someCommand  ' . $requestId
                        ],
                        [
                                $this->getMockJob( [ 'key' => 'val' ] ),
-                               'someCommand  key=val'
+                               'someCommand  key=val ' . $requestId
                        ],
                        [
                                $this->getMockJob( [ 'key' => [ 'inkey' => 'inval' ] ] ),
-                               'someCommand  key={"inkey":"inval"}'
+                               'someCommand  key={"inkey":"inval"} ' . $requestId
                        ],
                        [
                                $this->getMockJob( [ 'val1' ] ),
-                               'someCommand  0=val1'
+                               'someCommand  0=val1 ' . $requestId
                        ],
                        [
                                $this->getMockJob( [ 'val1', 'val2' ] ),
-                               'someCommand  0=val1 1=val2'
+                               'someCommand  0=val1 1=val2 ' . $requestId
                        ],
                        [
                                $this->getMockJob( [ new stdClass() ] ),
-                               'someCommand  0=object(stdClass)'
+                               'someCommand  0=object(stdClass) ' . $requestId
                        ],
                        [
                                $this->getMockJob( [ $mockToStringObj ] ),
-                               'someCommand  0={STRING_OBJ_VAL}'
+                               'someCommand  0={STRING_OBJ_VAL} ' . $requestId
                        ],
                        [
                                $this->getMockJob( [
@@ -73,7 +75,8 @@ class JobTest extends MediaWikiTestCase {
                                'rootJobSignature=45868e99bba89064e4483743ebb9b682ef95c1a7 ' .
                                'rootJobTimestamp=20160309110158 masterPos=' .
                                '{"file":"db1023-bin.001288","pos":"308257743","asOfTime":1457521464.3814} ' .
-                               'triggeredRecursive=1'
+                               'triggeredRecursive=1 ' .
+                               $requestId
                        ],
                ];
        }
index 54178fe..656be38 100644 (file)
@@ -75,11 +75,11 @@ class CategoryMembershipChangeJobTest extends MediaWikiTestCase {
                $removedRevId = $this->editPageText( 'Blank' );
 
                $this->assertEquals(
-                       '(recentchanges-page-added-to-category: ' . self::TITLE_STRING . ', 0)',
+                       '(recentchanges-page-added-to-category: ' . self::TITLE_STRING . ')',
                        $this->getCategorizeRecentChangeForRevId( $addedRevId )->getAttribute( 'rc_comment' )
                );
                $this->assertEquals(
-                       '(recentchanges-page-removed-from-category: ' . self::TITLE_STRING . ', 0)',
+                       '(recentchanges-page-removed-from-category: ' . self::TITLE_STRING . ')',
                        $this->getCategorizeRecentChangeForRevId( $removedRevId )->getAttribute( 'rc_comment' )
                );
        }
diff --git a/tests/phpunit/includes/page/WikiCategoryPageTest.php b/tests/phpunit/includes/page/WikiCategoryPageTest.php
new file mode 100644 (file)
index 0000000..d6e1d9e
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+
+class WikiCategoryPageTest extends MediaWikiLangTestCase {
+
+       /**
+        * @return PHPUnit_Framework_MockObject_MockObject|PageProps
+        */
+       private function getMockPageProps() {
+               return $this->getMockBuilder( PageProps::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+       }
+
+       /**
+        * @covers WikiCategoryPage::isHidden
+        */
+       public function testHiddenCategory_PropertyNotSet() {
+               $title = Title::makeTitle( NS_CATEGORY, 'CategoryPage' );
+               $categoryPage = WikiCategoryPage::factory( $title );
+
+               $pageProps = $this->getMockPageProps();
+               $pageProps->expects( $this->once() )
+                       ->method( 'getProperties' )
+                       ->with( $title, 'hiddencat' )
+                       ->will( $this->returnValue( [ ] ) );
+
+               $scopedOverride = PageProps::overrideInstance( $pageProps );
+
+               $this->assertFalse( $categoryPage->isHidden() );
+
+               ScopedCallback::consume( $scopedOverride );
+       }
+
+       public function provideCategoryContent() {
+               return [
+                       [ true ],
+                       [ false ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideCategoryContent
+        * @covers WikiCategoryPage::isHidden
+        */
+       public function testHiddenCategory_PropertyIsSet( $isHidden ) {
+               $categoryTitle = Title::makeTitle( NS_CATEGORY, 'CategoryPage' );
+               $categoryPage = WikiCategoryPage::factory( $categoryTitle );
+
+               $pageProps = $this->getMockPageProps();
+               $pageProps->expects( $this->once() )
+                       ->method( 'getProperties' )
+                       ->with( $categoryTitle, 'hiddencat' )
+                       ->will( $this->returnValue( $isHidden ? [ $categoryTitle->getArticleID() => '' ] : [ ] ) );
+
+               $scopedOverride = PageProps::overrideInstance( $pageProps );
+
+               $this->assertEquals( $isHidden, $categoryPage->isHidden() );
+
+               ScopedCallback::consume( $scopedOverride );
+       }
+}
index b1119a1..22bb237 100644 (file)
@@ -680,7 +680,7 @@ class NewParserTest extends MediaWikiTestCase {
                        $this->file = $wgParserTestFiles[0];
                }
 
-               return new TestFileIterator( $this->file, $this );
+               return new TestFileDataProvider( $this->file, $this );
        }
 
        /**
index 2dfed62..65cd6ed 100644 (file)
@@ -188,7 +188,7 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
                                'messages' => [ 'example' => '' ],
                                'templates' => [],
 
-                               'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery ) {
+                               'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery, require, module ) {
 mw.example();
 }, {
     "css": [
@@ -207,7 +207,7 @@ mw.example();
                                'messages' => new XmlJsCode( '{}' ),
                                'templates' => [],
 
-                               'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery ) {
+                               'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery, require, module ) {
 mw.example();
 } );',
                        ] ],
@@ -235,7 +235,7 @@ mw.example();
                                'messages' => [ 'example' => '' ],
                                'templates' => [],
 
-                               'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery ) {
+                               'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery, require, module ) {
 mw.example();
 }, {}, {
     "example": ""
@@ -250,7 +250,7 @@ mw.example();
                                'messages' => new XmlJsCode( '{}' ),
                                'templates' => [ 'example.html' => '' ],
 
-                               'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery ) {
+                               'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery, require, module ) {
 mw.example();
 }, {}, {}, {
     "example.html": ""
index 88bb328..c9b6929 100644 (file)
@@ -342,30 +342,46 @@ class UserTest extends MediaWikiTestCase {
         * @covers User::getCanonicalName()
         * @dataProvider provideGetCanonicalName
         */
-       public function testGetCanonicalName( $name, $expectedArray, $msg ) {
+       public function testGetCanonicalName( $name, $expectedArray ) {
+               // fake interwiki map for the 'Interwiki prefix' testcase
+               $this->mergeMwGlobalArrayValue( 'wgHooks', [
+                       'InterwikiLoadPrefix' => [
+                               function ( $prefix, &$iwdata ) {
+                                       if ( $prefix === 'interwiki' ) {
+                                               $iwdata = [
+                                                       'iw_url' => 'http://example.com/',
+                                                       'iw_local' => 0,
+                                                       'iw_trans' => 0,
+                                               ];
+                                               return false;
+                                       }
+                               },
+                       ],
+               ] );
+
                foreach ( $expectedArray as $validate => $expected ) {
                        $this->assertEquals(
                                $expected,
-                               User::getCanonicalName( $name, $validate === 'false' ? false : $validate ),
-                               $msg . ' (' . $validate . ')'
-                       );
+                               User::getCanonicalName( $name, $validate === 'false' ? false : $validate ), $validate );
                }
        }
 
        public static function provideGetCanonicalName() {
                return [
-                       [ ' Trailing space ', [ 'creatable' => 'Trailing space' ], 'Trailing spaces' ],
-                       // @todo FIXME: Maybe the creatable name should be 'Talk:Username' or false to reject?
-                       [ 'Talk:Username', [ 'creatable' => 'Username', 'usable' => 'Username',
-                               'valid' => 'Username', 'false' => 'Talk:Username' ], 'Namespace prefix' ],
-                       [ ' name with # hash', [ 'creatable' => false, 'usable' => false ], 'With hash' ],
-                       [ 'Multi  spaces', [ 'creatable' => 'Multi spaces',
-                               'usable' => 'Multi spaces' ], 'Multi spaces' ],
-                       [ 'lowercase', [ 'creatable' => 'Lowercase' ], 'Lowercase' ],
-                       [ 'in[]valid', [ 'creatable' => false, 'usable' => false, 'valid' => false,
-                               'false' => 'In[]valid' ], 'Invalid' ],
-                       [ 'with / slash', [ 'creatable' => false, 'usable' => false, 'valid' => false,
-                               'false' => 'With / slash' ], 'With slash' ],
+                       'Leading space' => [ ' Leading space', [ 'creatable' => 'Leading space' ] ],
+                       'Trailing space ' => [ 'Trailing space ', [ 'creatable' => 'Trailing space' ] ],
+                       'Namespace prefix' => [ 'Talk:Username', [ 'creatable' => false, 'usable' => false,
+                               'valid' => false, 'false' => 'Talk:Username' ] ],
+                       'Interwiki prefix' => [ 'interwiki:Username', [ 'creatable' => false, 'usable' => false,
+                               'valid' => false, 'false' => 'Interwiki:Username' ] ],
+                       'With hash' => [ 'name with # hash', [ 'creatable' => false, 'usable' => false ] ],
+                       'Multi spaces' => [ 'Multi  spaces', [ 'creatable' => 'Multi spaces',
+                               'usable' => 'Multi spaces' ] ],
+                       'Lowercase' => [ 'lowercase', [ 'creatable' => 'Lowercase' ] ],
+                       'Invalid character' => [ 'in[]valid', [ 'creatable' => false, 'usable' => false,
+                               'valid' => false, 'false' => 'In[]valid' ] ],
+                       'With slash' => [ 'with / slash', [ 'creatable' => false, 'usable' => false, 'valid' => false,
+                               'false' => 'With / slash' ] ],
                ];
        }
 
index d746ea1..60d4e99 100644 (file)
@@ -9,9 +9,8 @@ class UIDGeneratorTest extends PHPUnit_Framework_TestCase {
        }
 
        /**
-        * Flaky test (T131549).
+        * Test that generated UIDs have the expected properties
         *
-        * @group Broken
         * @dataProvider provider_testTimestampedUID
         * @covers UIDGenerator::newTimestampedUID128
         * @covers UIDGenerator::newTimestampedUID88
@@ -34,19 +33,29 @@ class UIDGeneratorTest extends PHPUnit_Framework_TestCase {
                $this->assertSame( array_unique( $ids ), $ids, "All generated IDs are unique." );
 
                foreach ( $ids as $id ) {
-                       $id_bin = Wikimedia\base_convert( $id, 10, 2 );
-                       $lastId_bin = Wikimedia\base_convert( $lastId, 10, 2 );
+                       // Convert string to binary and pad to full length so we can
+                       // extract segments
+                       $id_bin = Wikimedia\base_convert( $id, 10, 2, $bits );
+                       $lastId_bin = Wikimedia\base_convert( $lastId, 10, 2, $bits );
+
+                       $timestamp_bin = substr( $id_bin, 0, $tbits );
+                       $last_timestamp_bin = substr( $lastId_bin, 0, $tbits );
 
                        $this->assertGreaterThanOrEqual(
-                               substr( $lastId_bin, 0, $tbits ),
-                               substr( $id_bin, 0, $tbits ),
-                               "New ID timestamp ($id_bin) >= prior one ($lastId_bin)." );
+                               $last_timestamp_bin,
+                               $timestamp_bin,
+                               "timestamp ($timestamp_bin) of current ID ($id_bin) >= timestamp ($last_timestamp_bin) " .
+                                 "of prior one ($lastId_bin)" );
+
+                       $hostbits_bin = substr( $id_bin, -$hostbits );
+                       $last_hostbits_bin = substr( $lastId_bin, -$hostbits );
 
                        if ( $hostbits ) {
                                $this->assertEquals(
-                                       substr( $id_bin, -$hostbits ),
-                                       substr( $lastId_bin, -$hostbits ),
-                                       "Host ID of ($id_bin) is same as prior one ($lastId_bin)." );
+                                       $hostbits_bin,
+                                       $last_hostbits_bin,
+                                       "Host ID ($hostbits_bin) of current ID ($id_bin) is same as host ID ($last_hostbits_bin) " .
+                                         "of prior one ($lastId_bin)." );
                        }
 
                        $lastId = $id;
index 7336618..ac83d4e 100644 (file)
@@ -53,7 +53,8 @@ abstract class DumpTestCase extends MediaWikiLangTestCase {
                        }
                }
 
-               throw new MWException( "Could not determine revision id (" . $status->getWikiText() . ")" );
+               throw new MWException( "Could not determine revision id ("
+                       . $status->getWikiText( false, false, 'en' ) . ")" );
        }
 
        /**
index d876c45..77690cd 100755 (executable)
@@ -139,10 +139,6 @@ class PHPUnitMaintClass extends Maintenance {
                // may break testing against floating point values
                // treated with PHP's serialize()
                ini_set( 'serialize_precision', 17 );
-
-               // TODO: we should call MediaWikiTestCase::prepareServices( new GlobalVarConfig() ) here.
-               // But PHPUnit may not be loaded yet, so we have to wait until just
-               // before PHPUnit_TextUI_Command::main() is executed at the end of this file.
        }
 
        public function execute() {
@@ -241,9 +237,4 @@ echo defined( 'HHVM_VERSION' ) ?
        'Using HHVM ' . HHVM_VERSION . ' (' . PHP_VERSION . ")\n" :
        'Using PHP ' . PHP_VERSION . "\n";
 
-// Prepare global services for unit tests.
-// FIXME: this should be done in the finalSetup() method,
-// but PHPUnit may not have been loaded at that point.
-MediaWikiTestCase::prepareServices( new GlobalVarConfig() );
-
 $wgPhpUnitClass::main();
index b7161b1..a2d76e0 100644 (file)
@@ -8,7 +8,15 @@ return [
 
        'test.sinonjs' => [
                'scripts' => [
+                       'tests/qunit/suites/resources/test.sinonjs/index.js',
                        'resources/lib/sinonjs/sinon-1.17.3.js',
+                       // We want tests to work in IE, but can't include this as it
+                       // will break the placeholders in Sinon because the hack it uses
+                       // to hijack IE globals relies on running in the global scope
+                       // and in ResourceLoader this won't be running in the global scope.
+                       // Including it results (among other things) in sandboxed timers
+                       // being broken due to Date inheritance being undefined.
+                       // 'resources/lib/sinonjs/sinon-ie-1.15.4.js',
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
diff --git a/tests/qunit/data/defineCallMwLoaderTestCallback.js b/tests/qunit/data/defineCallMwLoaderTestCallback.js
new file mode 100644 (file)
index 0000000..afd886c
--- /dev/null
@@ -0,0 +1 @@
+module.exports = 'Define worked.';
diff --git a/tests/qunit/data/requireCallMwLoaderTestCallback.js b/tests/qunit/data/requireCallMwLoaderTestCallback.js
new file mode 100644 (file)
index 0000000..8bc087b
--- /dev/null
@@ -0,0 +1,2 @@
+var x = require( 'test.require.define' );
+module.exports = 'Require worked.' + x;
index 520db42..3a959a3 100644 (file)
                var api = new mw.Api(),
                        test = this;
 
-               // Get editToken for local wiki, this should not make
+               // Get csrfToken for local wiki, this should not make
                // a request as it should be retrieved from mw.user.tokens.
-               return api.getToken( 'edit' )
+               return api.getToken( 'csrf' )
                        .then( function ( token ) {
                                assert.ok( token.length, 'Got a token' );
                        }, function ( err ) {
 
                this.server.respond( [ 200, { 'Content-Type': 'application/json' }, '{ "example": "quux" }' ] );
 
-               return api.postWithToken( 'edit',
+               return api.postWithToken( 'csrf',
                                { action: 'example' },
                                {
                                        headers: {
                        .then( function () {
                                assert.equal( test.server.requests[ 0 ].requestHeaders[ 'X-Foo' ], 'Bar', 'Header sent' );
 
-                               return api.postWithToken( 'edit',
+                               return api.postWithToken( 'csrf',
                                        { action: 'example' },
                                        function () {
                                                assert.ok( false, 'This parameter cannot be a callback' );
index ce4ea8b..dd43c55 100644 (file)
                }, /is not loaded/, 'Requesting non-existent modules throws error.' );
        } );
 
+       QUnit.asyncTest( 'mw.loader require in debug mode', 1, function ( assert ) {
+               var path = mw.config.get( 'wgScriptPath' );
+               mw.loader.register( [
+                       [ 'test.require.define', '0' ],
+                       [ 'test.require.callback', '0', [ 'test.require.define' ] ]
+               ] );
+               mw.loader.implement( 'test.require.callback', [ QUnit.fixurl( path + '/tests/qunit/data/requireCallMwLoaderTestCallback.js' ) ] );
+               mw.loader.implement( 'test.require.define', [ QUnit.fixurl( path + '/tests/qunit/data/defineCallMwLoaderTestCallback.js' ) ] );
+
+               mw.loader.using( 'test.require.callback', function () {
+                       QUnit.start();
+                       var exported = mw.loader.require( 'test.require.callback' );
+                       assert.strictEqual( exported, 'Require worked.Define worked.',
+                               'module.exports worked in debug mode' );
+               }, function () {
+                       QUnit.start();
+                       assert.ok( false, 'Error callback fired while loader.using "test.require.callback" module' );
+               } );
+       } );
+
 }( mediaWiki, jQuery ) );
index d3f528c..2934b39 100644 (file)
@@ -1,7 +1,9 @@
 /*global isCompatible: true */
 ( function ( $ ) {
        var testcases = {
-               gradeA: [
+               tested: [
+                       /* Grade A */
+
                        // Chrome
                        'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16',
                        // Firefox 4+
                        'Mozilla/5.0 (ipod: U;CPU iPhone OS 2_2 like Mac OS X: es_es) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3',
                        'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3',
                        // Android
-                       'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17'
-               ],
-               gradeC: [
+                       'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17',
+
+                       /* Grade C */
+
                        // Internet Explorer < 9
                        'Mozilla/2.0 (compatible; MSIE 3.03; Windows 3.1)',
                        'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)',
                        // BlackBerry < 6
                        'BlackBerry9300/5.0.0.716 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/133',
                        'BlackBerry7250/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1',
-                       // Open WebOS < 1.5 (Palm Pre, Palm Pixi)
-                       'Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0',
-                       'Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1 ',
-                       // SymbianOS
-                       'NokiaN95_8GB-3;Mozilla/5.0 SymbianOS/9.2;U;Series60/3.1 NokiaN95_8GB-3/11.2.011 Profile/MIDP-2.0 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML, like Gecko)',
-                       'Nokia7610/2.0 (5.0509.0) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0 ',
-                       'Mozilla/5.0 (SymbianOS/9.1; U; [en]; SymbianOS/91 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413',
-                       'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-2/091.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.34 Mobile Safari/533.4',
-                       // NetFront
-                       'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)',
-                       'Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 824x1200; rotate)',
-                       'Mozilla/4.08 (Windows; Mobile Content Viewer/1.0) NetFront/3.2',
-                       // Opera Mini
-                       'Opera/9.80 (J2ME/MIDP; Opera Mini/3.1.10423/22.387; U; en) Presto/2.5.25 Version/10.54',
-                       'Opera/9.50 (J2ME/MIDP; Opera Mini/4.0.10031/298; U; en)',
-                       'Opera/9.80 (J2ME/MIDP; Opera Mini/6.24093/26.1305; U; en) Presto/2.8.119 Version/10.54',
-                       'Opera/9.80 (Android; Opera Mini/7.29530/27.1407; U; en) Presto/2.8.119 Version/11.10',
-                       // Ovi Browser
-                       'Mozilla/5.0 (Series40; NokiaX3-02/05.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.2.0.0.6',
-                       'Mozilla/5.0 (Series40; Nokia305/05.92; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11',
-                       // Google Glass
-                       'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/IMM76L; XE11) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
-                       // MeeGo
-                       'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13'
-               ],
-               // No explicit support for or against these browsers, they're given a shot at Grade A.
-               gradeX: [
+
+                       /* Grade X */
+
                        // Firefox 3.6
                        'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3',
                        // Gecko
                        'I\'m an unknown browser',
                        // Empty
                        ''
+               ],
+               blacklisted: [
+                       /* Grade C */
+
+                       // Open WebOS < 1.5 (Palm Pre, Palm Pixi)
+                       'Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0',
+                       'Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1 ',
+                       // SymbianOS
+                       'NokiaN95_8GB-3;Mozilla/5.0 SymbianOS/9.2;U;Series60/3.1 NokiaN95_8GB-3/11.2.011 Profile/MIDP-2.0 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML, like Gecko)',
+                       'Nokia7610/2.0 (5.0509.0) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0 ',
+                       'Mozilla/5.0 (SymbianOS/9.1; U; [en]; SymbianOS/91 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413',
+                       'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-2/091.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.34 Mobile Safari/533.4',
+                       // NetFront
+                       'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)',
+                       'Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 824x1200; rotate)',
+                       'Mozilla/4.08 (Windows; Mobile Content Viewer/1.0) NetFront/3.2',
+                       // Opera Mini
+                       'Opera/9.80 (J2ME/MIDP; Opera Mini/3.1.10423/22.387; U; en) Presto/2.5.25 Version/10.54',
+                       'Opera/9.50 (J2ME/MIDP; Opera Mini/4.0.10031/298; U; en)',
+                       'Opera/9.80 (J2ME/MIDP; Opera Mini/6.24093/26.1305; U; en) Presto/2.8.119 Version/10.54',
+                       'Opera/9.80 (Android; Opera Mini/7.29530/27.1407; U; en) Presto/2.8.119 Version/11.10',
+                       // Ovi Browser
+                       'Mozilla/5.0 (Series40; NokiaX3-02/05.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.2.0.0.6',
+                       'Mozilla/5.0 (Series40; Nokia305/05.92; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11',
+                       // Google Glass
+                       'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/IMM76L; XE11) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
+                       // MeeGo
+                       'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13'
                ]
        };
 
        QUnit.module( 'startup', QUnit.newMwEnvironment() );
 
-       QUnit.test( 'isCompatible( Grade A )', testcases.gradeA.length, function ( assert ) {
-               $.each( testcases.gradeA, function ( i, ua ) {
+       QUnit.test( 'isCompatible( featureTestable )', testcases.tested.length, function ( assert ) {
+               $.each( testcases.tested, function ( i, ua ) {
                                assert.strictEqual( isCompatible( ua ), true, ua );
                        }
                );
        } );
 
-       QUnit.test( 'isCompatible( Grade C )', testcases.gradeC.length, function ( assert ) {
-               $.each( testcases.gradeC, function ( i, ua ) {
+       QUnit.test( 'isCompatible( blacklisted )', testcases.blacklisted.length, function ( assert ) {
+               $.each( testcases.blacklisted, function ( i, ua ) {
                                assert.strictEqual( isCompatible( ua ), false, ua );
                        }
                );
        } );
-
-       QUnit.test( 'isCompatible( Grade X )', testcases.gradeX.length, function ( assert ) {
-               $.each( testcases.gradeX, function ( i, ua ) {
-                               assert.strictEqual( isCompatible( ua ), true, ua );
-                       }
-               );
-       } );
-
 }( jQuery ) );
diff --git a/tests/qunit/suites/resources/test.sinonjs/index.js b/tests/qunit/suites/resources/test.sinonjs/index.js
new file mode 100644 (file)
index 0000000..b1be9d1
--- /dev/null
@@ -0,0 +1,3 @@
+// Hack: Disable 'module.exports' from ResourceLoader
+// (Otherwise Sinon assumes context as Node.js instead of a browser)
+module.exports = null;
index 76544a5..d04e0fc 100644 (file)
@@ -44,9 +44,10 @@ interface ITestRecorder {
        /**
         * Called after each test
         * @param string $test
+        * @param integer $subtest
         * @param bool $result
         */
-       public function record( $test, $result );
+       public function record( $test, $subtest, $result );
 
        /**
         * Called before finishing the test run
@@ -74,7 +75,7 @@ class TestRecorder implements ITestRecorder {
                $this->success = 0;
        }
 
-       function record( $test, $result ) {
+       function record( $test, $subtest, $result ) {
                $this->total++;
                $this->success += ( $result ? 1 : 0 );
        }
@@ -147,9 +148,17 @@ class DbTestPreviewer extends TestRecorder {
                $this->results = [];
        }
 
-       function record( $test, $result ) {
-               parent::record( $test, $result );
-               $this->results[$test] = $result;
+       function getName( $test, $subtest ) {
+               if ( $subtest ) {
+                       return "$test subtest #$subtest";
+               } else {
+                       return $test;
+               }
+       }
+
+       function record( $test, $subtest, $result ) {
+               parent::record( $test, $subtest, $result );
+               $this->results[ $this->getName( $test, $subtest ) ] = $result;
        }
 
        function report() {
@@ -299,10 +308,9 @@ class DbTestPreviewer extends TestRecorder {
        }
 
        /**
-        * Commit transaction and clean up for result recording
+        * Close the DB connection
         */
        function end() {
-               $this->lb->commitMasterChanges();
                $this->lb->closeAll();
                parent::end();
        }
@@ -350,17 +358,25 @@ class DbTestRecorder extends DbTestPreviewer {
         * @param string $test
         * @param bool $result
         */
-       function record( $test, $result ) {
-               parent::record( $test, $result );
+       function record( $test, $subtest, $result ) {
+               parent::record( $test, $subtest, $result );
 
                $this->db->insert( 'testitem',
                        [
                                'ti_run' => $this->curRun,
-                               'ti_name' => $test,
+                               'ti_name' => $this->getName( $test, $subtest ),
                                'ti_success' => $result ? 1 : 0,
                        ],
                        __METHOD__ );
        }
+
+       /**
+        * Commit transaction and clean up for result recording
+        */
+       function end() {
+               $this->db->commit( __METHOD__ );
+               parent::end();
+       }
 }
 
 class TestFileIterator implements Iterator {
@@ -479,6 +495,7 @@ class TestFileIterator implements Iterator {
 
                $this->test = [
                        'test' => ParserTest::chomp( $this->sectionData['test'] ),
+                       'subtest' => $this->nextSubTest,
                        'input' => ParserTest::chomp( $this->sectionData[$input] ),
                        'result' => ParserTest::chomp( $this->sectionData[$result] ),
                        'options' => ParserTest::chomp( $this->sectionData['options'] ),
@@ -665,6 +682,27 @@ class TestFileIterator implements Iterator {
        }
 }
 
+/**
+ * An iterator for use as a phpunit data provider. Provides the test arguments
+ * in the order expected by NewParserTest::testParserTest().
+ */
+class TestFileDataProvider extends TestFileIterator {
+       function current() {
+               $test = parent::current();
+               if ( $test ) {
+                       return [
+                               $test['test'],
+                               $test['input'],
+                               $test['result'],
+                               $test['options'],
+                               $test['config'],
+                       ];
+               } else {
+                       return $test;
+               }
+       }
+}
+
 /**
  * A class to delay execution of a parser test hooks.
  */
index 10c2419..fca25c5 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -320,7 +320,7 @@ function wfStreamThumb( array $params ) {
                        RequestContext::getMain()->getStats()->timing( 'media.thumbnail.stream', $streamtime );
                } else {
                        wfThumbError( 500, 'Could not stream the file', null, [ 'file' => $thumbName,
-                               'path' => $thumbPath, 'error' => $status->getWikiText() ] );
+                               'path' => $thumbPath, 'error' => $status->getWikiText( false, false, 'en' ) ] );
                }
                return;
        }
@@ -366,7 +366,8 @@ function wfStreamThumb( array $params ) {
                $status = $thumb->streamFileWithStatus( $headers );
                if ( !$status->isOK() ) {
                        wfThumbError( 500, 'Could not stream the file', null, [
-                               'file' => $thumbName, 'path' => $thumbPath, 'error' => $status->getWikiText() ] );
+                               'file' => $thumbName, 'path' => $thumbPath,
+                               'error' => $status->getWikiText( false, false, 'en' ) ] );
                }
        }
 }