Merge "Load all CSS in the top queue"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 27 Aug 2015 09:48:15 +0000 (09:48 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 27 Aug 2015 09:48:15 +0000 (09:48 +0000)
347 files changed:
CREDITS
RELEASE-NOTES-1.26
autoload.php
composer.json
docs/hooks.txt
includes/DefaultSettings.php
includes/Defines.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/Hooks.php
includes/MWNamespace.php
includes/MWTimestamp.php
includes/MediaWiki.php
includes/MovePage.php
includes/OutputPage.php
includes/Preferences.php
includes/Sanitizer.php
includes/Setup.php
includes/TemplateParser.php
includes/api/ApiFeedRecentChanges.php
includes/api/ApiMain.php
includes/api/ApiPageSet.php
includes/api/ApiParse.php
includes/api/ApiQuery.php
includes/api/ApiQueryAllPages.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryWatchlist.php
includes/api/i18n/de.json
includes/api/i18n/el.json
includes/api/i18n/en.json
includes/api/i18n/es.json
includes/api/i18n/fr.json
includes/api/i18n/gl.json
includes/api/i18n/he.json
includes/api/i18n/ko.json
includes/api/i18n/ksh.json
includes/api/i18n/lb.json
includes/api/i18n/lv.json
includes/api/i18n/mk.json
includes/api/i18n/pl.json
includes/api/i18n/pt-br.json
includes/api/i18n/qqq.json
includes/api/i18n/ru.json
includes/api/i18n/sv.json
includes/api/i18n/uk.json
includes/api/i18n/vi.json
includes/api/i18n/zh-hans.json
includes/cache/MessageCache.php
includes/changes/CategoryMembershipChange.php [deleted file]
includes/changes/ChangesList.php
includes/changes/EnhancedChangesList.php
includes/changes/OldChangesList.php
includes/changes/RCCacheEntryFactory.php
includes/changes/RecentChange.php
includes/changetags/ChangeTags.php
includes/compat/IPSetCompat.php [new file with mode: 0644]
includes/context/ContextSource.php
includes/context/IContextSource.php
includes/context/RequestContext.php
includes/db/Database.php
includes/db/DatabaseSqlite.php
includes/db/LBFactory.php
includes/db/LBFactoryMulti.php
includes/db/LoadMonitorMySQL.php
includes/deferred/LinksUpdate.php
includes/filebackend/SwiftFileBackend.php
includes/filebackend/lockmanager/DBLockManager.php
includes/filerepo/file/File.php
includes/htmlform/HTMLForm.php
includes/htmlform/HTMLFormField.php
includes/htmlform/HTMLSelectNamespace.php
includes/htmlform/OOUIHTMLForm.php
includes/installer/MysqlUpdater.php
includes/installer/i18n/azb.json
includes/installer/i18n/ca.json
includes/installer/i18n/el.json
includes/installer/i18n/es.json
includes/installer/i18n/ko.json
includes/installer/i18n/ksh.json
includes/installer/i18n/lv.json
includes/installer/i18n/nap.json
includes/installer/i18n/pl.json
includes/installer/i18n/ro.json
includes/jobqueue/JobQueueRedis.php
includes/jobqueue/JobRunner.php
includes/jobqueue/jobs/RefreshLinksJob.php
includes/jobqueue/jobs/UploadFromUrlJob.php
includes/libs/CSSMin.php
includes/libs/HashRing.php
includes/libs/IPSet.php [deleted file]
includes/libs/objectcache/BagOStuff.php
includes/libs/objectcache/HashBagOStuff.php
includes/libs/objectcache/ReplicatedBagOStuff.php
includes/libs/objectcache/WANObjectCache.php
includes/logging/LogFormatter.php
includes/logging/ProtectLogFormatter.php [new file with mode: 0644]
includes/mail/EmailNotification.php
includes/mail/UserMailer.php
includes/objectcache/MultiWriteBagOStuff.php
includes/objectcache/ObjectCache.php
includes/objectcache/ObjectCacheSessionHandler.php
includes/page/WikiPage.php
includes/parser/CoreParserFunctions.php
includes/parser/Parser.php
includes/parser/ParserCache.php
includes/parser/ParserOptions.php
includes/poolcounter/PoolWorkArticleView.php
includes/rcfeed/RCFeedFormatter.php
includes/registration/ExtensionProcessor.php
includes/registration/ExtensionRegistry.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/resourceloader/ResourceLoaderForeignApiModule.php [new file with mode: 0644]
includes/resourceloader/ResourceLoaderModule.php
includes/specialpage/ChangesListSpecialPage.php
includes/specials/SpecialAncientpages.php
includes/specials/SpecialBrokenRedirects.php
includes/specials/SpecialConfirmemail.php
includes/specials/SpecialDoubleRedirects.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialFewestrevisions.php
includes/specials/SpecialFileDuplicateSearch.php
includes/specials/SpecialLinkSearch.php
includes/specials/SpecialListDuplicatedFiles.php
includes/specials/SpecialListredirects.php
includes/specials/SpecialMIMEsearch.php
includes/specials/SpecialMediaStatistics.php
includes/specials/SpecialMostcategories.php
includes/specials/SpecialMostinterwikis.php
includes/specials/SpecialMostlinked.php
includes/specials/SpecialMostlinkedcategories.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialPagesWithProp.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialShortpages.php
includes/specials/SpecialUnusedcategories.php
includes/specials/SpecialUnusedtemplates.php
includes/specials/SpecialUnwatchedpages.php
includes/specials/SpecialVersion.php
includes/specials/SpecialWatchlist.php
includes/utils/IP.php
includes/utils/MWCryptHKDF.php
includes/utils/UIDGenerator.php
includes/widget/ComplexNamespaceInputWidget.php [new file with mode: 0644]
includes/widget/NamespaceInputWidget.php
includes/widget/TitleInputWidget.php
includes/widget/UserInputWidget.php
languages/Language.php
languages/Names.php
languages/i18n/ady-cyrl.json [new file with mode: 0644]
languages/i18n/aeb-arab.json
languages/i18n/af.json
languages/i18n/ang.json
languages/i18n/ar.json
languages/i18n/ary.json
languages/i18n/arz.json
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/az.json
languages/i18n/azb.json
languages/i18n/be-tarask.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/ckb.json
languages/i18n/crh-cyrl.json
languages/i18n/crh-latn.json
languages/i18n/cs.json
languages/i18n/cv.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/dty.json
languages/i18n/egl.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/frr.json
languages/i18n/fy.json
languages/i18n/ga.json
languages/i18n/gl.json
languages/i18n/gsw.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hsb.json
languages/i18n/hu.json
languages/i18n/hy.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/ilo.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/kab.json
languages/i18n/kk-cyrl.json
languages/i18n/km.json
languages/i18n/ko.json
languages/i18n/ksh.json
languages/i18n/lb.json
languages/i18n/lrc.json
languages/i18n/lt.json
languages/i18n/lv.json
languages/i18n/mg.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/mr.json
languages/i18n/ms.json
languages/i18n/mt.json
languages/i18n/nan.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/pam.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pnb.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/scn.json
languages/i18n/sco.json
languages/i18n/sgs.json
languages/i18n/si.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/ta.json
languages/i18n/th.json
languages/i18n/tr.json
languages/i18n/uk.json
languages/i18n/vec.json
languages/i18n/vi.json
languages/i18n/war.json
languages/i18n/xmf.json
languages/i18n/yi.json
languages/i18n/yue.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesAdy.php [new file with mode: 0644]
languages/messages/MessagesAdy_cyrl.php [new file with mode: 0644]
languages/messages/MessagesKhw.php
maintenance/deleteBatch.php
maintenance/deleteDefaultMessages.php
maintenance/deleteEqualMessages.php
maintenance/fixSlaveDesync.php [deleted file]
maintenance/jsduck/categories.json
resources/Resources.php
resources/ResourcesOOUI.php
resources/lib/oojs-ui/i18n/ast.json
resources/lib/oojs-ui/i18n/ca.json
resources/lib/oojs-ui/i18n/de.json
resources/lib/oojs-ui/i18n/el.json
resources/lib/oojs-ui/i18n/en.json
resources/lib/oojs-ui/i18n/es.json
resources/lib/oojs-ui/i18n/et.json
resources/lib/oojs-ui/i18n/fr.json
resources/lib/oojs-ui/i18n/gl.json
resources/lib/oojs-ui/i18n/he.json
resources/lib/oojs-ui/i18n/km.json
resources/lib/oojs-ui/i18n/lb.json
resources/lib/oojs-ui/i18n/lt.json
resources/lib/oojs-ui/i18n/mk.json
resources/lib/oojs-ui/i18n/pl.json
resources/lib/oojs-ui/i18n/qqq.json
resources/lib/oojs-ui/i18n/ro.json
resources/lib/oojs-ui/i18n/su.json [new file with mode: 0644]
resources/lib/oojs-ui/i18n/uk.json
resources/lib/oojs-ui/i18n/zh-hans.json
resources/lib/oojs-ui/oojs-ui-apex-noimages.css
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-mediawiki-noimages.css
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/themes/apex/icons-editing-advanced.json
resources/lib/oojs-ui/themes/apex/icons.json
resources/lib/oojs-ui/themes/apex/images/icons/calendar-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/calendar-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/calendar-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/calendar-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json
resources/lib/oojs-ui/themes/mediawiki/icons.json
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/indicators.json
resources/lib/oojs/oojs.jquery.js
resources/src/jquery/jquery.byteLimit.js
resources/src/mediawiki.api/mediawiki.ForeignApi.js [new file with mode: 0644]
resources/src/mediawiki.api/mediawiki.api.edit.js
resources/src/mediawiki.api/mediawiki.api.js
resources/src/mediawiki.api/mediawiki.api.upload.js
resources/src/mediawiki.legacy/commonPrint.css
resources/src/mediawiki.legacy/shared.css
resources/src/mediawiki.page/mediawiki.page.gallery.css [new file with mode: 0644]
resources/src/mediawiki.page/mediawiki.page.gallery.print.css [new file with mode: 0644]
resources/src/mediawiki.special/mediawiki.special.upload.js
resources/src/mediawiki.special/templates/thumbnail.html
resources/src/mediawiki.widgets/mw.widgets.ComplexNamespaceInputWidget.base.css [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.ComplexNamespaceInputWidget.js [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.NamespaceInputWidget.base.css [deleted file]
resources/src/mediawiki.widgets/mw.widgets.NamespaceInputWidget.js
resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.js
resources/src/mediawiki/mediawiki.Upload.Dialog.js
resources/src/mediawiki/mediawiki.Upload.js
resources/src/mediawiki/mediawiki.experiments.js [new file with mode: 0644]
resources/src/mediawiki/mediawiki.htmlform.ooui.css
tests/parser/parserTests.txt
tests/parser/preprocess/All_system_messages.expected
tests/parser/preprocess/All_system_messages.txt
tests/phpunit/includes/GlobalFunctions/wfTimestampTest.php
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/PrefixSearchTest.php
tests/phpunit/includes/changes/EnhancedChangesListTest.php
tests/phpunit/includes/changes/RecentChangeTest.php
tests/phpunit/includes/changes/TestRecentChangesHelper.php
tests/phpunit/includes/deferred/LinksUpdateTest.php
tests/phpunit/includes/libs/CSSMinTest.php
tests/phpunit/includes/libs/IPSetTest.php [deleted file]
tests/phpunit/includes/logging/LogFormatterTestCase.php
tests/phpunit/includes/logging/ProtectLogFormatterTest.php [new file with mode: 0644]
tests/phpunit/includes/objectcache/BagOStuffTest.php
tests/qunit/QUnitTestResources.php
tests/qunit/suites/resources/mediawiki.api/mediawiki.ForeignApi.test.js [new file with mode: 0644]
tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js [new file with mode: 0644]
thumb.php

diff --git a/CREDITS b/CREDITS
index 22dee7b..5362286 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -24,6 +24,7 @@ following names for their contribution to the product.
 * Bryan Tong Minh
 * Chad Horohoe
 * Charles Melbye
+* Chris Steipp
 * church of emacs
 * Daniel Friesen
 * Daniel Kinzler
@@ -43,6 +44,7 @@ following names for their contribution to the product.
 * Jack D. Pond
 * Jack Phoenix
 * Jackmcbarn
+* James Forrester
 * Jan Paul Posma
 * Jason Richey
 * Jeroen De Dauw
@@ -91,6 +93,7 @@ following names for their contribution to the product.
 * Tim Starling
 * Timo Tijhof
 * Trevor Parscal
+* Tyler Anthony Romeo
 * Victor Vasiliev
 * Yesid Carrillo
 * Yuri Astrakhan
@@ -116,7 +119,6 @@ following names for their contribution to the product.
 * Brianna Laugher
 * Carlin
 * Carsten Nielsen
-* Chris Steipp
 * Christian Aistleitner
 * Christian Neubauer
 * Conrad Irwin
@@ -139,6 +141,7 @@ following names for their contribution to the product.
 * fomafix
 * FunPika
 * Gabriel Wicke
+* Geoffrey Mon
 * Gero Scholz
 * Gilles van den Hoven
 * Grunny
@@ -235,7 +238,6 @@ following names for their contribution to the product.
 * The Evil IP address
 * Tim Landscheidt
 * Tisane
-* Tyler Anthony Romeo
 * Umherirrender
 * Van de Bugger
 * Ville Stadista
index 3442ee0..fd21c4c 100644 (file)
@@ -22,10 +22,12 @@ production.
   the "Signature" button on the edit toolbar will be displayed.
 * $wgResourceLoaderUseESI was deprecated and removed. This was an experimental
   feature that was never enabled by default.
+* $wgResourceLoaderExperimentalAsyncLoading was deprecated and removed.
+  This experimental feature was never enabled by default and is obsolete as of
+  MediaWiki 1.26, in where ResourceLoader became fully asynchronous.
+* $wgMasterWaitTimeout was removed (deprecated in 1.24).
 
 === New features in 1.26 ===
-* (T9148) Changes to category membership are now shown in watchlists and recent
-  changes. This can be configured in user preferences.
 * (T51506) Now action=info gives estimates of actual watchers for a page.
   See $wgRCMaxAge, $wgWatchersMaxAge and $wgUnwatchedPageSecret
   to learn how to configure if needed.
@@ -61,6 +63,8 @@ production.
   by Special:Random to select random pages.
 * $wgTransactionalTimeLimit was added, which controls the request time limit
   for potentially slow POST requests that need to be as atomic as possible.
+* ResourceLoader now loads all scripts asynchronously. The top-queue and
+  startup modules are no longer synchronously loaded.
 
 ==== External libraries ====
 * Update es5-shim from v4.0.0 to v4.1.5.
@@ -102,6 +106,7 @@ regularly. Below only new and removed languages are listed, as well as
 changes to languages because of Phabricator reports.
 
 * Languages added:
+** ase (American sign language), thanks to translator Icemandeaf
 ** dty (डोटेली/Doteli), thanks to translators जनक राज भट्ट, बिप्लब आनन्द,
    मेश सिंह बोहरा, and राम प्रसाद जोशी
 ** luz (لئری دوٙمینی / Southern Luri)
@@ -153,6 +158,7 @@ changes to languages because of Phabricator reports.
 * BREAKING CHANGE: mediawiki.legacy.ajax has been removed, following
   a lengthy deprecation period.
 * The ScopedPHPTimeout class was removed.
+* Removed maintenance script fixSlaveDesync.php.
 
 == Compatibility ==
 
index 638a9e2..82a45b4 100644 (file)
@@ -200,7 +200,6 @@ $wgAutoloadLocalClasses = array(
        'CapsCleanup' => __DIR__ . '/maintenance/cleanupCaps.php',
        'Category' => __DIR__ . '/includes/Category.php',
        'CategoryFinder' => __DIR__ . '/includes/CategoryFinder.php',
-       'CategoryMembershipChange' => __DIR__ . '/includes/changes/CategoryMembershipChange.php',
        'CategoryPage' => __DIR__ . '/includes/page/CategoryPage.php',
        'CategoryPager' => __DIR__ . '/includes/specials/SpecialCategories.php',
        'CategoryViewer' => __DIR__ . '/includes/CategoryViewer.php',
@@ -448,7 +447,6 @@ $wgAutoloadLocalClasses = array(
        'FixBug20757' => __DIR__ . '/maintenance/storage/fixBug20757.php',
        'FixDoubleRedirects' => __DIR__ . '/maintenance/fixDoubleRedirects.php',
        'FixExtLinksProtocolRelative' => __DIR__ . '/maintenance/fixExtLinksProtocolRelative.php',
-       'FixSlaveDesync' => __DIR__ . '/maintenance/fixSlaveDesync.php',
        'FixTimestamps' => __DIR__ . '/maintenance/fixTimestamps.php',
        'FixUserRegistration' => __DIR__ . '/maintenance/fixUserRegistration.php',
        'ForeignAPIFile' => __DIR__ . '/includes/filerepo/file/ForeignAPIFile.php',
@@ -545,7 +543,7 @@ $wgAutoloadLocalClasses = array(
        'IORMRow' => __DIR__ . '/includes/db/IORMRow.php',
        'IORMTable' => __DIR__ . '/includes/db/IORMTable.php',
        'IP' => __DIR__ . '/includes/utils/IP.php',
-       'IPSet' => __DIR__ . '/includes/libs/IPSet.php',
+       'IPSet' => __DIR__ . '/includes/compat/IPSetCompat.php',
        'IPTC' => __DIR__ . '/includes/media/IPTC.php',
        'IRCColourfulRCFeedFormatter' => __DIR__ . '/includes/rcfeed/IRCColourfulRCFeedFormatter.php',
        'IcuCollation' => __DIR__ . '/includes/Collation.php',
@@ -763,6 +761,7 @@ $wgAutoloadLocalClasses = array(
        '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\\Widget\\ComplexNamespaceInputWidget' => __DIR__ . '/includes/widget/ComplexNamespaceInputWidget.php',
        'MediaWiki\\Widget\\NamespaceInputWidget' => __DIR__ . '/includes/widget/NamespaceInputWidget.php',
        'MediaWiki\\Widget\\TitleInputWidget' => __DIR__ . '/includes/widget/TitleInputWidget.php',
        'MediaWiki\\Widget\\UserInputWidget' => __DIR__ . '/includes/widget/UserInputWidget.php',
@@ -948,6 +947,7 @@ $wgAutoloadLocalClasses = array(
        'ProfilerXhprof' => __DIR__ . '/includes/profiler/ProfilerXhprof.php',
        'Protect' => __DIR__ . '/maintenance/protect.php',
        'ProtectAction' => __DIR__ . '/includes/actions/ProtectAction.php',
+       'ProtectLogFormatter' => __DIR__ . '/includes/logging/ProtectLogFormatter.php',
        'ProtectedPagesPager' => __DIR__ . '/includes/specials/SpecialProtectedpages.php',
        'ProtectedTitlesPager' => __DIR__ . '/includes/specials/SpecialProtectedtitles.php',
        'ProtectionForm' => __DIR__ . '/includes/ProtectionForm.php',
@@ -1012,6 +1012,7 @@ $wgAutoloadLocalClasses = array(
        'ResourceLoaderEditToolbarModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderEditToolbarModule.php',
        'ResourceLoaderFileModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderFileModule.php',
        'ResourceLoaderFilePath' => __DIR__ . '/includes/resourceloader/ResourceLoaderFilePath.php',
+       'ResourceLoaderForeignApiModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderForeignApiModule.php',
        'ResourceLoaderImage' => __DIR__ . '/includes/resourceloader/ResourceLoaderImage.php',
        'ResourceLoaderImageModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderImageModule.php',
        'ResourceLoaderJqueryMsgModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderJqueryMsgModule.php',
index f94d8aa..852f2d2 100644 (file)
                "leafo/lessphp": "0.5.0",
                "liuggio/statsd-php-client": "1.0.16",
                "mediawiki/at-ease": "1.0.0",
-               "oojs/oojs-ui": "0.12.4",
+               "oojs/oojs-ui": "0.12.6",
                "php": ">=5.3.3",
                "psr/log": "1.0.0",
-               "wikimedia/cdb": "1.0.1",
                "wikimedia/assert": "0.2.2",
+               "wikimedia/cdb": "1.0.1",
                "wikimedia/composer-merge-plugin": "1.2.1",
+               "wikimedia/ip-set": "1.0.1",
                "wikimedia/utfnormal": "1.0.2",
                "wikimedia/wrappedstring": "2.0.0",
                "zordius/lightncandy": "0.21"
index bf55997..5e2269a 100644 (file)
@@ -2448,6 +2448,13 @@ $user: The user having their password expiration reset
 $oldSessionID: old session id
 $newSessionID: new session id
 
+'ResourceLoaderForeignApiModules': Called from ResourceLoaderForeignApiModule.
+Use this to add dependencies to 'mediawiki.ForeignApi' module when you wish
+to override its behavior. See the module docs for more information.
+&$dependencies: string[] List of modules that 'mediawiki.ForeignApi' should
+depend on
+$context: ResourceLoaderContext|null
+
 'ResourceLoaderGetConfigVars': Called at the end of
 ResourceLoaderStartUpModule::getConfigSettings(). Use this to export static
 configuration variables to JavaScript. Things that depend on the current page
index 7a9813b..bcf7e14 100644 (file)
@@ -1860,12 +1860,6 @@ $wgDBservers = false;
  */
 $wgLBFactoryConf = array( 'class' => 'LBFactorySimple' );
 
-/**
- * How long to wait for a slave to catch up to the master
- * @deprecated since 1.24
- */
-$wgMasterWaitTimeout = 10;
-
 /**
  * File to log database errors to
  */
@@ -3617,13 +3611,6 @@ $wgResourceLoaderValidateJS = true;
  */
 $wgResourceLoaderValidateStaticJS = false;
 
-/**
- * If set to true, asynchronous loading of bottom-queue scripts in the "<head>"
- * will be enabled. This is an experimental feature that's supposed to make
- * JavaScript load faster.
- */
-$wgResourceLoaderExperimentalAsyncLoading = false;
-
 /**
  * Global LESS variables. An associative array binding variable names to
  * LESS code snippets representing their values.
@@ -3733,8 +3720,8 @@ $wgMetaNamespaceTalk = false;
  * Additional namespaces. If the namespaces defined in Language.php and
  * Namespace.php are insufficient, you can create new ones here, for example,
  * to import Help files in other languages. You can also override the namespace
- * names of existing namespaces. Extensions developers should use
- * $wgCanonicalNamespaceNames.
+ * names of existing namespaces. Extensions should use the CanonicalNamespaces
+ * hook or extension.json.
  *
  * @warning Once you delete a namespace, the pages in that namespace will
  * no longer be accessible. If you rename it, then you can access them through
@@ -4503,7 +4490,6 @@ $wgDefaultUserOptions = array(
        'gender' => 'unknown',
        'hideminor' => 0,
        'hidepatrolled' => 0,
-       'hidecategorization' => 0,
        'imagesize' => 2,
        'math' => 1,
        'minordefault' => 0,
@@ -4535,7 +4521,6 @@ $wgDefaultUserOptions = array(
        'watchlisthideminor' => 0,
        'watchlisthideown' => 0,
        'watchlisthidepatrolled' => 0,
-       'watchlisthidecategorization' => 0,
        'watchmoves' => 0,
        'watchrollback' => 0,
        'wllimit' => 250,
@@ -6949,7 +6934,6 @@ $wgLogHeaders = array(
  */
 $wgLogActions = array(
        'protect/modify' => 'modifiedarticleprotection',
-       'protect/move_prot' => 'movedarticleprotection',
        'protect/protect' => 'protectedarticle',
        'protect/unprotect' => 'unprotectedarticle',
 );
@@ -6979,6 +6963,7 @@ $wgLogActionsHandlers = array(
        'move/move' => 'MoveLogFormatter',
        'move/move_redir' => 'MoveLogFormatter',
        'patrol/patrol' => 'PatrolLogFormatter',
+       'protect/move_prot' => 'ProtectLogFormatter',
        'rights/autopromote' => 'RightsLogFormatter',
        'rights/rights' => 'RightsLogFormatter',
        'suppress/block' => 'BlockLogFormatter',
index 38f2d42..d55bbcf 100644 (file)
@@ -170,7 +170,6 @@ define( 'RC_EDIT', 0 );
 define( 'RC_NEW', 1 );
 define( 'RC_LOG', 3 );
 define( 'RC_EXTERNAL', 5 );
-define( 'RC_CATEGORIZE', 6 );
 /**@}*/
 
 /**@{
index f3a41c4..85a3014 100644 (file)
@@ -527,7 +527,10 @@ class EditPage {
                if ( $permErrors ) {
                        wfDebug( __METHOD__ . ": User can't edit\n" );
                        // Auto-block user's IP if the account was "hard" blocked
-                       $wgUser->spreadAnyEditBlock();
+                       $user = $wgUser;
+                       DeferredUpdates::addCallableUpdate( function() use ( $user ) {
+                               $user->spreadAnyEditBlock();
+                       } );
 
                        $this->displayPermissionsError( $permErrors );
 
index c3740a0..9d89633 100644 (file)
@@ -3461,10 +3461,10 @@ function wfResetSessionID() {
  * @param bool $sessionId
  */
 function wfSetupSession( $sessionId = false ) {
-       global $wgSessionsInMemcached, $wgSessionsInObjectCache, $wgSessionHandler;
+       global $wgSessionsInObjectCache, $wgSessionHandler;
        global $wgCookiePath, $wgCookieDomain, $wgCookieSecure, $wgCookieHttpOnly;
 
-       if ( $wgSessionsInObjectCache || $wgSessionsInMemcached ) {
+       if ( $wgSessionsInObjectCache ) {
                ObjectCacheSessionHandler::install();
        } elseif ( $wgSessionHandler && $wgSessionHandler != ini_get( 'session.save_handler' ) ) {
                # Only set this if $wgSessionHandler isn't null and session.save_handler
@@ -3485,7 +3485,7 @@ function wfSetupSession( $sessionId = false ) {
        session_start();
        MediaWiki\restoreWarnings();
 
-       if ( $wgSessionsInObjectCache || $wgSessionsInMemcached ) {
+       if ( $wgSessionsInObjectCache ) {
                ObjectCacheSessionHandler::renewCurrentSession();
        }
 }
@@ -3954,13 +3954,13 @@ function wfBCP47( $code ) {
 }
 
 /**
- * Get a cache object.
+ * Get a specific cache object.
  *
- * @param int $inputType Cache type, one of the CACHE_* constants.
+ * @param int|string $cacheType A CACHE_* constants, or other key in $wgObjectCaches
  * @return BagOStuff
  */
-function wfGetCache( $inputType ) {
-       return ObjectCache::getInstance( $inputType );
+function wfGetCache( $cacheType ) {
+       return ObjectCache::getInstance( $cacheType );
 }
 
 /**
index c726538..036d65c 100644 (file)
@@ -135,10 +135,6 @@ class Hooks {
         *   returning null) is equivalent to returning true.
         */
        public static function run( $event, array $args = array(), $deprecatedVersion = null ) {
-               $stats = RequestContext::getMain()->getStats();
-               $metric = $stats->increment( 'hooks.' . $event );
-               $metric->setSampleRate( 0.001 );
-
                foreach ( self::getHandlers( $event ) as $hook ) {
                        // Turn non-array values into an array. (Can't use casting because of objects.)
                        if ( !is_array( $hook ) ) {
index 731b62e..8ca205a 100644 (file)
@@ -210,6 +210,8 @@ class MWNamespace {
                if ( $namespaces === null || $rebuild ) {
                        global $wgExtraNamespaces, $wgCanonicalNamespaceNames;
                        $namespaces = array( NS_MAIN => '' ) + $wgCanonicalNamespaceNames;
+                       // Add extension namespaces
+                       $namespaces += ExtensionRegistry::getInstance()->getAttribute( 'ExtensionNamespaces' );
                        if ( is_array( $wgExtraNamespaces ) ) {
                                $namespaces += $wgExtraNamespaces;
                        }
index f2bd6ba..d28f88e 100644 (file)
@@ -56,7 +56,7 @@ class MWTimestamp {
         *
         * @since 1.20
         *
-        * @param bool|string $timestamp Timestamp to set, or false for current time
+        * @param bool|string|int|float $timestamp Timestamp to set, or false for current time
         */
        public function __construct( $timestamp = false ) {
                $this->setTimestamp( $timestamp );
@@ -74,6 +74,7 @@ class MWTimestamp {
         * @throws TimestampException
         */
        public function setTimestamp( $ts = false ) {
+               $m = array();
                $da = array();
                $strtime = '';
 
@@ -87,9 +88,9 @@ class MWTimestamp {
                        # TS_EXIF
                } elseif ( preg_match( '/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/D', $ts, $da ) ) {
                        # TS_MW
-               } elseif ( preg_match( '/^-?\d{1,13}$/D', $ts ) ) {
+               } elseif ( preg_match( '/^(-?\d{1,13})(\.\d+)?$/D', $ts, $m ) ) {
                        # TS_UNIX
-                       $strtime = "@$ts"; // http://php.net/manual/en/datetime.formats.compound.php
+                       $strtime = "@{$m[1]}"; // http://php.net/manual/en/datetime.formats.compound.php
                } elseif ( preg_match( '/^\d{2}-\d{2}-\d{4} \d{2}:\d{2}:\d{2}.\d{6}$/', $ts ) ) {
                        # TS_ORACLE // session altered to DD-MM-YYYY HH24:MI:SS.FF6
                        $strtime = preg_replace( '/(\d\d)\.(\d\d)\.(\d\d)(\.(\d+))?/', "$1:$2:$3",
index f488aa2..ee59263 100644 (file)
@@ -495,36 +495,39 @@ class MediaWiki {
        public function doPreOutputCommit() {
                // Either all DBs should commit or none
                ignore_user_abort( true );
-               wfGetLBFactory()->commitMasterChanges();
+
+               // Commit all changes and record ChronologyProtector positions
+               $factory = wfGetLBFactory();
+               $factory->commitMasterChanges();
+               $factory->shutdown();
+
+               wfDebug( __METHOD__ . ' completed; all transactions committed' );
        }
 
        /**
         * This function does work that can be done *after* the
         * user gets the HTTP response so they don't block on it
         *
+        * This manages deferred updates, job insertion,
+        * final commit, and the logging of profiling data
+        *
         * @param string $mode Use 'fast' to always skip job running
         * @since 1.26
         */
        public function doPostOutputShutdown( $mode = 'normal' ) {
-               // Show profiling data if enabled
+               // Show visible profiling data if enabled (which cannot be post-send)
                Profiler::instance()->logDataPageOutputOnly();
 
                $that = $this;
                $callback = function () use ( $that, $mode ) {
                        try {
-                               // Assure deferred updates are not in the main transaction
-                               wfGetLBFactory()->commitMasterChanges();
-                               // Run jobs occasionally, if enabled
-                               if ( $mode === 'normal' ) {
-                                       $that->triggerJobs();
-                               }
-                               // Do deferred updates and job insertion and final commit
-                               $that->restInPeace();
+                               $that->restInPeace( $mode );
                        } catch ( Exception $e ) {
                                MWExceptionHandler::handleException( $e );
                        }
                };
 
+               // Defer everything else...
                if ( function_exists( 'register_postsend_function' ) ) {
                        // https://github.com/facebook/hhvm/issues/1230
                        register_postsend_function( $callback );
@@ -687,8 +690,12 @@ class MediaWiki {
 
        /**
         * Ends this task peacefully
+        * @param string $mode Use 'fast' to always skip job running
         */
-       public function restInPeace() {
+       public function restInPeace( $mode = 'fast' ) {
+               // Assure deferred updates are not in the main transaction
+               wfGetLBFactory()->commitMasterChanges();
+
                // Ignore things like master queries/connections on GET requests
                // as long as they are in deferred updates (which catch errors).
                Profiler::instance()->getTransactionProfiler()->resetExpectations();
@@ -699,6 +706,12 @@ class MediaWiki {
                // Make sure any lazy jobs are pushed
                JobQueueGroup::pushLazyJobs();
 
+               // Now that everything specific to this request is done,
+               // try to occasionally run jobs (if enabled) from the queues
+               if ( $mode === 'normal' ) {
+                       $this->triggerJobs();
+               }
+
                // Log profiling data, e.g. in the database or UDP
                wfLogProfilingData();
 
index 964fbff..2cd9698 100644 (file)
@@ -305,8 +305,8 @@ class MovePage {
                                __METHOD__,
                                array( 'IGNORE' )
                        );
-                       # Update the protection log
-                       $log = new LogPage( 'protect' );
+
+                       // Build comment for log
                        $comment = wfMessage(
                                'prot_1movedto2',
                                $this->oldTitle->getPrefixedText(),
@@ -315,14 +315,6 @@ class MovePage {
                        if ( $reason ) {
                                $comment .= wfMessage( 'colon-separator' )->inContentLanguage()->text() . $reason;
                        }
-                       // @todo FIXME: $params?
-                       $logId = $log->addEntry(
-                               'move_prot',
-                               $this->newTitle,
-                               $comment,
-                               array( $this->oldTitle->getPrefixedText() ),
-                               $user
-                       );
 
                        // reread inserted pr_ids for log relation
                        $insertedPrIds = $dbw->select(
@@ -335,7 +327,18 @@ class MovePage {
                        foreach ( $insertedPrIds as $prid ) {
                                $logRelationsValues[] = $prid->pr_id;
                        }
-                       $log->addRelations( 'pr_id', $logRelationsValues, $logId );
+
+                       // Update the protection log
+                       $logEntry = new ManualLogEntry( 'protect', 'move_prot' );
+                       $logEntry->setTarget( $this->newTitle );
+                       $logEntry->setComment( $comment );
+                       $logEntry->setPerformer( $user );
+                       $logEntry->setParameters( array(
+                               '4::oldtitle' => $this->oldTitle->getPrefixedText(),
+                       ) );
+                       $logEntry->setRelations( array( 'pr_id' => $logRelationsValues ) );
+                       $logId = $logEntry->insert();
+                       $logEntry->publish( $logId );
                }
 
                // Update *_from_namespace fields as needed
index 80fd9ab..14f5076 100644 (file)
@@ -2996,10 +2996,6 @@ class OutputPage extends ContextSource {
                // Startup - this provides the client with the module manifest and loads jquery and mediawiki base modules
                $links[] = $this->makeResourceLoaderLink( 'startup', ResourceLoaderModule::TYPE_SCRIPTS );
 
-               if ( $this->getConfig()->get( 'ResourceLoaderExperimentalAsyncLoading' ) ) {
-                       $links[] = $this->getScriptsForBottomQueue();
-               }
-
                return self::getHtmlFromLoaderLinks( $links );
        }
 
@@ -3054,11 +3050,9 @@ class OutputPage extends ContextSource {
        }
 
        /**
-        * JS stuff to put at the 'bottom', which can either be the bottom of the
-        * "<body>" or the bottom of the "<head>" depending on
-        * $wgResourceLoaderExperimentalAsyncLoading: modules marked with position
-        * 'bottom', legacy scripts ($this->mScripts), user preferences, site JS
-        * and user JS.
+        * JS stuff to put at the 'bottom', which goes at the bottom of the `<body>`.
+        * These are modules marked with position 'bottom', legacy scripts ($this->mScripts),
+        * site JS, and user JS.
         *
         * @param bool $unused Previously used to let this method change its output based
         *  on whether it was called by getExternalHeadScripts() or getBottomScripts().
@@ -3138,10 +3132,6 @@ class OutputPage extends ContextSource {
                // In case the skin wants to add bottom CSS
                $this->getSkin()->setupSkinUserCss( $this );
 
-               if ( $this->getConfig()->get( 'ResourceLoaderExperimentalAsyncLoading' ) ) {
-                       // Already handled by getExternalHeadScripts()
-                       return '';
-               }
                return $this->getScriptsForBottomQueue();
        }
 
index fbb7b51..cd675c6 100644 (file)
@@ -888,12 +888,6 @@ class Preferences {
                        'section' => 'rc/advancedrc',
                );
 
-               $defaultPreferences['hidecategorization'] = array(
-                       'type' => 'toggle',
-                       'label-message' => 'tog-hidecategorization',
-                       'section' => 'rc/advancedrc',
-               );
-
                if ( $user->useRCPatrol() ) {
                        $defaultPreferences['hidepatrolled'] = array(
                                'type' => 'toggle',
@@ -1001,12 +995,6 @@ class Preferences {
                        'label-message' => 'tog-watchlisthideliu',
                );
 
-               $defaultPreferences['watchlisthidecategorization'] = array(
-                       'type' => 'toggle',
-                       'section' => 'watchlist/advancedwatchlist',
-                       'label-message' => 'tog-watchlisthidecategorization',
-               );
-
                if ( $user->useRCPatrol() ) {
                        $defaultPreferences['watchlisthidepatrolled'] = array(
                                'type' => 'toggle',
index 387f24f..fbf3234 100644 (file)
@@ -349,9 +349,6 @@ class Sanitizer {
                                          \"([^<\"]*)\"
                                         | '([^<']*)'
                                         |  ([a-zA-Z0-9!#$%&()*,\\-.\\/:;<>?@[\\]^_`{|}~]+)
-                                        |  (\#[0-9a-fA-F]+) # Technically wrong, but lots of
-                                                                                # colors are specified like this.
-                                                                                # We'll be normalizing it.
                                        )
                                )?(?=$space|\$)/sx";
                }
@@ -966,7 +963,8 @@ class Sanitizer {
                $value = self::normalizeCss( $value );
 
                // Reject problematic keywords and control characters
-               if ( preg_match( '/[\000-\010\013\016-\037\177]/', $value ) ) {
+               if ( preg_match( '/[\000-\010\013\016-\037\177]/', $value ) ||
+                       strpos( $value, UtfNormal\Constants::UTF8_REPLACEMENT ) !== false ) {
                        return '/* invalid control char */';
                } elseif ( preg_match(
                        '! expression
@@ -1263,10 +1261,7 @@ class Sanitizer {
         * @return string
         */
        private static function getTagAttributeCallback( $set ) {
-               if ( isset( $set[6] ) ) {
-                       # Illegal #XXXXXX color with no quotes.
-                       return $set[6];
-               } elseif ( isset( $set[5] ) ) {
+               if ( isset( $set[5] ) ) {
                        # No quotes.
                        return $set[5];
                } elseif ( isset( $set[4] ) ) {
@@ -1399,15 +1394,19 @@ class Sanitizer {
        }
 
        /**
-        * Returns true if a given Unicode codepoint is a valid character in XML.
+        * Returns true if a given Unicode codepoint is a valid character in
+        * both HTML5 and XML.
         * @param int $codepoint
         * @return bool
         */
        private static function validateCodepoint( $codepoint ) {
+               # U+000C is valid in HTML5 but not allowed in XML.
+               # U+000D is valid in XML but not allowed in HTML5.
+               # U+007F - U+009F are disallowed in HTML5 (control characters).
                return $codepoint == 0x09
                        || $codepoint == 0x0a
-                       || $codepoint == 0x0d
-                       || ( $codepoint >= 0x20 && $codepoint <= 0xd7ff )
+                       || ( $codepoint >= 0x20 && $codepoint <= 0x7e )
+                       || ( $codepoint >= 0xa0 && $codepoint <= 0xd7ff )
                        || ( $codepoint >= 0xe000 && $codepoint <= 0xfffd )
                        || ( $codepoint >= 0x10000 && $codepoint <= 0x10ffff );
        }
@@ -1809,6 +1808,11 @@ class Sanitizer {
 
                        $host = preg_replace( $strip, '', $host );
 
+                       // IPv6 host names are bracketed with [].  Url-decode these.
+                       if ( substr_compare( "//%5B", $host, 0, 5 ) === 0 && preg_match( '!^//%5B(.*?)%5D((:\d+)?)$!', $host, $matches ) ) {
+                               $host = '//[' . $matches[1] . ']' . $matches[2];
+                       }
+
                        // @todo FIXME: Validate hostnames here
 
                        return $protocol . $host . $rest;
index 0c1e99d..4d7428a 100644 (file)
@@ -477,6 +477,12 @@ if ( $wgMaximalPasswordLength !== false ) {
        $wgPasswordPolicy['policies']['default']['MaximalPasswordLength'] = $wgMaximalPasswordLength;
 }
 
+// Backwards compatibility with deprecated alias
+// Must be before call to wfSetupSession()
+if ( $wgSessionsInMemcached ) {
+       $wgSessionsInObjectCache = true;
+}
+
 Profiler::instance()->scopedProfileOut( $ps_default );
 
 // Disable MWDebug for command line mode, this prevents MWDebug from eating up
index f0a1ebb..d6b101b 100644 (file)
@@ -103,7 +103,7 @@ class TemplateParser {
                        // See if the compiled PHP code is stored in cache.
                        // CACHE_ACCEL throws an exception if no suitable object cache is present, so fall
                        // back to CACHE_ANYTHING.
-                       $cache = ObjectCache::newAccelerator( array(), CACHE_ANYTHING );
+                       $cache = ObjectCache::newAccelerator( CACHE_ANYTHING );
                        $key = wfMemcKey( 'template', $templateName, $fastHash );
                        $code = $this->forceRecompile ? null : $cache->get( $key );
 
index 5adde87..d24112c 100644 (file)
@@ -155,7 +155,6 @@ class ApiFeedRecentChanges extends ApiBase {
                        'hideliu' => false,
                        'hidepatrolled' => false,
                        'hidemyself' => false,
-                       'hidecategorization' => false,
 
                        'tagfilter' => array(
                                ApiBase::PARAM_TYPE => 'string',
index 8ce505a..f2059d7 100644 (file)
@@ -1089,14 +1089,8 @@ class ApiMain extends ApiBase {
 
                $this->checkAsserts( $params );
 
-               $stats = $this->getContext()->getStats();
-               $statsPath = 'api.modules.' . strtr( $module->getModulePath(), '+', '.' );
-               $metric = $stats->increment( $statsPath );
-               $metric->setSampleRate( 0.001 );
-
                // Execute
                $module->execute();
-
                Hooks::run( 'APIAfterExecute', array( &$module ) );
 
                $this->reportUnusedParams();
index d67b184..1415b79 100644 (file)
@@ -66,6 +66,7 @@ class ApiPageSet extends ApiBase {
        private $mInterwikiTitles = array();
        /** @var Title[] */
        private $mPendingRedirectIDs = array();
+       private $mResolvedRedirectTitles = array();
        private $mConvertedTitles = array();
        private $mGoodRevIDs = array();
        private $mLiveRevIDs = array();
@@ -434,7 +435,7 @@ class ApiPageSet extends ApiBase {
 
        /**
         * Get a list of redirect resolutions - maps a title to its redirect
-        * target.
+        * target. Includes generator data for redirect source when available.
         * @param ApiResult $result
         * @return array Array of prefixed_title (string) => Title object
         * @since 1.21
@@ -452,6 +453,15 @@ class ApiPageSet extends ApiBase {
                        if ( $titleTo->isExternal() ) {
                                $r['tointerwiki'] = $titleTo->getInterwiki();
                        }
+                       if ( isset( $this->mResolvedRedirectTitles[$titleStrFrom] ) ) {
+                               $titleFrom = $this->mResolvedRedirectTitles[$titleStrFrom];
+                               $ns = $titleFrom->getNamespace();
+                               $dbkey = $titleFrom->getDBkey();
+                               if ( isset( $this->mGeneratorData[$ns][$dbkey] ) ) {
+                                       $r = array_merge( $this->mGeneratorData[$ns][$dbkey], $r );
+                               }
+                       }
+
                        $values[] = $r;
                }
                if ( !empty( $values ) && $result ) {
@@ -1030,6 +1040,7 @@ class ApiPageSet extends ApiBase {
                                $row->rd_fragment,
                                $row->rd_interwiki
                        );
+                       $this->mResolvedRedirectTitles[$from] = $this->mPendingRedirectIDs[$rdfrom];
                        unset( $this->mPendingRedirectIDs[$rdfrom] );
                        if ( $to->isExternal() ) {
                                $this->mInterwikiTitles[$to->getPrefixedText()] = $to->getInterwiki();
@@ -1050,7 +1061,9 @@ class ApiPageSet extends ApiBase {
                                        continue;
                                }
                                $lb->addObj( $rt );
-                               $this->mRedirectTitles[$title->getPrefixedText()] = $rt;
+                               $from = $title->getPrefixedText();
+                               $this->mResolvedRedirectTitles[$from] = $title;
+                               $this->mRedirectTitles[$from] = $rt;
                                unset( $this->mPendingRedirectIDs[$id] );
                        }
                }
index 1b8f6d9..cce8572 100644 (file)
@@ -169,9 +169,24 @@ class ApiParse extends ApiBase {
 
                                $popts = $this->makeParserOptions( $pageObj, $params );
 
-                               // Potentially cached
-                               $p_result = $this->getParsedContent( $pageObj, $popts, $pageid,
-                                       isset( $prop['wikitext'] ) );
+                               // Don't pollute the parser cache when setting options that aren't
+                               // in ParserOptions::optionsHash()
+                               /// @todo: This should be handled closer to the actual cache instead of here, see T110269
+                               $suppressCache =
+                                       $params['disablepp'] ||
+                                       $params['disablelimitreport'] ||
+                                       $params['preview'] ||
+                                       $params['sectionpreview'] ||
+                                       $params['disabletidy'];
+
+                               if ( $suppressCache ) {
+                                       $this->content = $this->getContent( $pageObj, $pageid );
+                                       $p_result = $this->content->getParserOutput( $titleObj, null, $popts );
+                               } else {
+                                       // Potentially cached
+                                       $p_result = $this->getParsedContent( $pageObj, $popts, $pageid,
+                                               isset( $prop['wikitext'] ) );
+                               }
                        }
                } else { // Not $oldid, $pageid, $page. Hence based on $text
                        $titleObj = Title::newFromText( $title );
@@ -464,10 +479,13 @@ class ApiParse extends ApiBase {
        protected function makeParserOptions( WikiPage $pageObj, array $params ) {
 
                $popts = $pageObj->makeParserOptions( $this->getContext() );
-               $popts->enableLimitReport( !$params['disablepp'] );
+               $popts->enableLimitReport( !$params['disablepp'] && !$params['disablelimitreport'] );
                $popts->setIsPreview( $params['preview'] || $params['sectionpreview'] );
                $popts->setIsSectionPreview( $params['sectionpreview'] );
                $popts->setEditSection( !$params['disableeditsection'] );
+               if ( $params['disabletidy'] ) {
+                       $popts->setTidy( false );
+               }
 
                return $popts;
        }
@@ -480,14 +498,9 @@ class ApiParse extends ApiBase {
         * @return ParserOutput
         */
        private function getParsedContent( WikiPage $page, $popts, $pageId = null, $getWikitext = false ) {
-               $this->content = $page->getContent( Revision::RAW ); //XXX: really raw?
+               $this->content = $this->getContent( $page, $pageId );
 
                if ( $this->section !== false && $this->content !== null ) {
-                       $this->content = $this->getSectionContent(
-                               $this->content,
-                               !is_null( $pageId ) ? 'page id ' . $pageId : $page->getTitle()->getPrefixedText()
-                       );
-
                        // Not cached (save or load)
                        return $this->content->getParserOutput( $page->getTitle(), null, $popts );
                }
@@ -506,6 +519,27 @@ class ApiParse extends ApiBase {
        }
 
        /**
+        * Get the content for the given page and the requested section.
+        *
+        * @param WikiPage $page
+        * @param int $pageId
+        * @return Content
+        */
+       private function getContent( WikiPage $page, $pageId = null ) {
+               $content = $page->getContent( Revision::RAW ); //XXX: really raw?
+
+               if ( $this->section !== false && $content !== null ) {
+                       $content = $this->getSectionContent(
+                               $content,
+                               !is_null( $pageId ) ? 'page id ' . $pageId : $page->getTitle()->getPrefixedText()
+                       );
+               }
+               return $content;
+       }
+
+       /**
+        * Extract the requested section from the given Content
+        *
         * @param Content $content
         * @param string $what Identifies the content in error messages, e.g. page title.
         * @return Content|bool
@@ -762,8 +796,13 @@ class ApiParse extends ApiBase {
                        'sectiontitle' => array(
                                ApiBase::PARAM_TYPE => 'string',
                        ),
-                       'disablepp' => false,
+                       'disablepp' => array(
+                               ApiBase::PARAM_DFLT => false,
+                               ApiBase::PARAM_DEPRECATED => true,
+                       ),
+                       'disablelimitreport' => false,
                        'disableeditsection' => false,
+                       'disabletidy' => false,
                        'generatexml' => array(
                                ApiBase::PARAM_DFLT => false,
                                ApiBase::PARAM_HELP_MSG => array(
index 8959a46..5378e92 100644 (file)
@@ -276,7 +276,6 @@ class ApiQuery extends ApiBase {
                }
 
                $cacheMode = $this->mPageSet->getCacheMode();
-               $stats =  $this->getContext()->getStats();
 
                // Execute all unfinished modules
                /** @var $module ApiQueryBase */
@@ -284,11 +283,6 @@ class ApiQuery extends ApiBase {
                        $params = $module->extractRequestParams();
                        $cacheMode = $this->mergeCacheMode(
                                $cacheMode, $module->getCacheMode( $params ) );
-
-                       $statsPath = 'api.modules.' . strtr( $module->getModulePath(), '+', '.' );
-                       $metric = $stats->increment( $statsPath );
-                       $metric->setSampleRate( 0.001 );
-
                        $module->execute();
                        Hooks::run( 'APIQueryAfterExecute', array( &$module ) );
                }
index 0149ad2..e441991 100644 (file)
@@ -175,10 +175,14 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase {
                        // 1999 rules works fine, but that breaks other DBs. Sigh.
                        /// @todo Once we drop support for 1992-rule DBs, we can simplify this.
                        $dbType = $db->getType();
-                       if ( $dbType === 'mysql' || $dbType === 'sqlite' ||
-                               $dbType === 'postgres' && $db->getServerVersion() >= 9.1
-                       ) {
-                               // 1999 rules, or screw-the-rules
+                       if ( $dbType === 'mysql' || $dbType === 'sqlite' ) {
+                               // Ignore the rules, or 1999 rules if you count unique keys
+                               // over non-NULL columns as satisfying the requirement for
+                               // "functional dependency" and don't require including
+                               // constant-in-WHERE columns in the GROUP BY.
+                               $this->addOption( 'GROUP BY', array( 'page_title' ) );
+                       } elseif ( $dbType === 'postgres' && $db->getServerVersion() >= 9.1 ) {
+                               // 1999 rules only counting primary keys
                                $this->addOption( 'GROUP BY', array( 'page_title', 'page_id' ) );
                        } else {
                                // 1992 rules
index b559144..f579062 100644 (file)
@@ -668,9 +668,14 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
                        ),
                        'type' => array(
-                               ApiBase::PARAM_DFLT => 'edit|new|log|categorize',
+                               ApiBase::PARAM_DFLT => 'edit|new|log',
                                ApiBase::PARAM_ISMULTI => true,
-                               ApiBase::PARAM_TYPE => RecentChange::getChangeTypes()
+                               ApiBase::PARAM_TYPE => array(
+                                       'edit',
+                                       'external',
+                                       'new',
+                                       'log'
+                               )
                        ),
                        'toponly' => false,
                        'continue' => array(
index 9d35a55..648d259 100644 (file)
@@ -483,9 +483,14 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                                )
                        ),
                        'type' => array(
-                               ApiBase::PARAM_DFLT => 'edit|new|log|categorize',
+                               ApiBase::PARAM_DFLT => 'edit|new|log',
                                ApiBase::PARAM_ISMULTI => true,
-                               ApiBase::PARAM_TYPE => RecentChange::getChangeTypes()
+                               ApiBase::PARAM_TYPE => array(
+                                       'edit',
+                                       'external',
+                                       'new',
+                                       'log',
+                               )
                        ),
                        'owner' => array(
                                ApiBase::PARAM_TYPE => 'user'
index e3cc09b..01f07ff 100644 (file)
        "apihelp-query+allcategories-param-min": "Gibt nur Kategorien zurück, die mindestens die angegebene Anzahl an Einträgen haben.",
        "apihelp-query+allcategories-param-max": "Gibt nur Kategorien zurück, die höchstens die angegebene Anzahl an Einträgen haben.",
        "apihelp-query+allcategories-param-limit": "Wie viele Kategorien zurückgegeben werden sollen.",
-       "apihelp-query+allcategories-param-prop": "Zurückzugebende Eigenschaften:\n;size: Ergänzt die Anzahl der Einträge in der Antwort.\n;hidden: Markiert über _&#95;HIDDENCAT_&#95; versteckte Kategorien.",
+       "apihelp-query+allcategories-param-prop": "Zurückzugebende Eigenschaften:",
+       "apihelp-query+allcategories-paramvalue-prop-size": "Ergänzt die Anzahl der Einträge in der Antwort.",
+       "apihelp-query+allcategories-paramvalue-prop-hidden": "Markiert über <code>_&#95;HIDDENCAT_&#95;</code> versteckte Kategorien.",
        "apihelp-query+allcategories-example-size": "Listet Kategorien mit der Anzahl ihrer Einträge auf.",
        "apihelp-query+allcategories-example-generator": "Bezieht Informationen über die Kategorieseite selbst für Kategorien, die mit <kbd>List</kbd> beginnen.",
        "apihelp-query+alldeletedrevisions-description": "Bezieht alle gelöschten Versionen eines Benutzers oder eines Namensraumes.",
        "apihelp-query+allredirects-param-to": "Titel der Weiterleitung, bei der die Auflistung enden soll.",
        "apihelp-query+allredirects-param-prefix": "Weiterleitungen auflisten, deren Zielseiten mit diesem Wert beginnen.",
        "apihelp-query+allredirects-param-unique": "Nur Weiterleitungen mit unterschiedlichen Zielseiten anzeigen. Kann nicht zusammen mit $1prop=ids|fragment|interwiki benutzt werden. Bei Nutzung als Generator werden die Zielseiten anstelle der Ursprungsseiten zurückgegeben.",
-       "apihelp-query+allredirects-param-prop": "Zu beziehende Informationen:\n; ids: Ergänzt die Seitenkennung der Weiterleitungsseite (kann nicht zusammen mit <var>$1unique</var> benutzt werden).\n; title: Ergänzt den Titel der Weiterleitung.\n; fragment: Ergänzt das Abschnittsziel der Weiterleitung, falls vorhanden (kann nicht zusammen mit <var>$1unique</var> benutzt werden).\n; interwiki: Ergänzt das Interwiki-Präfix der Weiterleitung, falls vorhanden (kann nicht zusammen mit <var>$1unique</var> benutzt werden).",
+       "apihelp-query+allredirects-param-prop": "Zu beziehende Informationen:",
+       "apihelp-query+allredirects-paramvalue-prop-ids": "Ergänzt die Seitenkennung der Weiterleitungsseite (kann nicht zusammen mit <var>$1unique</var> benutzt werden).",
+       "apihelp-query+allredirects-paramvalue-prop-title": "Ergänzt den Titel der Weiterleitung.",
+       "apihelp-query+allredirects-paramvalue-prop-fragment": "Ergänzt das Abschnittsziel der Weiterleitung, falls vorhanden (kann nicht zusammen mit <var>$1unique</var> benutzt werden).",
+       "apihelp-query+allredirects-paramvalue-prop-interwiki": "Ergänzt das Interwiki-Präfix der Weiterleitung, falls vorhanden (kann nicht zusammen mit <var>$1unique</var> benutzt werden).",
        "apihelp-query+allredirects-param-namespace": "Der zu untersuchende Namensraum.",
        "apihelp-query+allredirects-param-limit": "Gesamtanzahl der aufzulistenden Einträge.",
        "apihelp-query+allredirects-param-dir": "Aufzählungsrichtung.",
index 867f594..281dd29 100644 (file)
@@ -2,15 +2,25 @@
        "@metadata": {
                "authors": [
                        "Glavkos",
-                       "Protnet"
+                       "Protnet",
+                       "Stam.nikos"
                ]
        },
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Τεκμηρίωση]]\n* [[mw:API:FAQ|Συχνές ερωτήσεις]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Λίστα αλληλογραφίας]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Ανακοινώσεις API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Σφάλματα & αιτήματα]\n</div>\n<strong>Κατάσταση:</strong> Όλα τα χαρακτηριστικά που εμφανίζονται σε αυτή τη σελίδα πρέπει να λειτουργούν, αλλά το API είναι ακόμα σε ενεργό ανάπτυξη, και μπορεί να αλλάξει ανά πάσα στιγμή. Εγγραφείτε στη [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce λίστα αλληλογραφίας] για να ειδοποιείστε για ενημερώσεις.\n\n<strong>Εσφαλμένα αιτήματα:</strong> Όταν στέλνονται εσφαλμένα αιτήματα στο API, επιστρέφεται μία κεφαλίδα HTTP (header) με το κλειδί \"MediaWiki-API-Error\" κι έπειτα η τιμή της κεφαλίδας και ο κωδικός σφάλματος που επιστρέφονται ορίζονται στην ίδια τιμή. Για περισσότερες πληροφορίες, δείτε [[mw:API:Errors_and_warnings|API: Σφάλματα και προειδοποιήσεις]].",
+       "apihelp-main-param-action": "Ποια ενέργει να εκτελεστεί.",
        "apihelp-main-param-format": "Η μορφή των δεδομένων εξόδου.",
+       "apihelp-main-param-curtimestamp": "Συμπερίληψη της τρέχουσας χρονοσφραγίδας στο αποτέλεσμα.",
+       "apihelp-main-param-uselang": "Γλώσσα για τις μεταφράσεις μηνυμάτων. Μία λίστα κωδικών μπορεί να αντληθεί από το <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> με το <kbd>siprop=languages</kbd>, ή καθορίστε <kbd>user</kbd> για να χρησιμοποιήσετε την προτίμηση γλώσσας του τρέχοντα χρήστη, ή καθορίστε <kbd>content</kbd> για να χρησιμοποιήσετε τη γλώσσα περιεχομένου αυτού του wiki.",
        "apihelp-block-description": "Φραγή χρήστη",
        "apihelp-block-param-user": "Όνομα χρήστη, διεύθυνση IP ή εύρος διευθύνσεων IP που θέλετε να επιβάλετε φραγή.",
+       "apihelp-block-param-expiry": "Ώρα λήξης. Μπορεί να είναι σχετική (π.χ. <kbd>σε 5 μήνες</kbd> ή <kbd>σε 2 εβδομάδες</kbd>) ή απόλυτη (π.χ. <kbd>2014-09-18T12:34:56Z</kbd>). Αν οριστεί σε <kbd>άπειρη</kbd>, <kbd>απεριόριστη</kbd>, ή <kbd>ποτέ</kbd>, ο αποκλεισμός δεν θα λήξει ποτέ.",
        "apihelp-block-param-reason": "Λόγος φραγής.",
+       "apihelp-block-param-anononly": "Αποκλείστε ανώνυμους χρήστες μόνο (δηλ. απενεργοποιήστε ανώνυμες επεξεργασίες για αυτή τη διεύθυνση IP).",
        "apihelp-block-param-nocreate": "Αποτροπή δημιουργίας λογαριασμού.",
+       "apihelp-block-param-autoblock": "Αποκλείστε αυτόματα την τελευταία χρησιμοποιημένη διεύθυνση IP και κάθε συνακόλουθη διεύθυνση IP από την οποία γίνεται προσπάθεια σύνδεσης.",
+       "apihelp-createaccount-description": "Δημιουργήστε νέο λογαριασμό χρήστη.",
        "apihelp-createaccount-param-name": "Όνομα χρήστη.",
+       "apihelp-createaccount-param-password": "Κωδικός πρόσβασης (αγνοείται, αν έχει οριστεί το <var>$1mailpassword</var>).",
        "apihelp-createaccount-param-email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου χρήστη (προαιρετικό).",
        "apihelp-createaccount-param-realname": "Πραγματικό όνομα χρήστη (προαιρετικό).",
        "apihelp-createaccount-param-mailpassword": "Εάν οριστεί σε οποιαδήποτε τιμή, ένας τυχαίος κωδικός πρόσβασης θα αποσταλεί μέσω ηλεκτρονικού ταχυδρομείου στο χρήστη.",
@@ -79,5 +89,9 @@
        "apihelp-options-example-reset": "Επαναφορά όλων των προτιμήσεων.",
        "apihelp-paraminfo-param-helpformat": "Μορφή των συμβολοσειρών βοήθειας.",
        "apihelp-patrol-example-revid": "Περιπολία αναθεώρησης.",
-       "apihelp-protect-example-protect": "Προστασία σελίδας."
+       "apihelp-protect-example-protect": "Προστασία σελίδας.",
+       "apihelp-query+users-paramvalue-prop-gender": "Επισημαίνει το φύλο του χρήστη. Επιστρέφει «αρσενικό», «θηλυκό» ή «άγνωστο»",
+       "api-help-param-type-limit": "Τύπος: ακέραιος ή <kbd>max</kbd>",
+       "api-help-param-type-boolean": "Τύπος: boolean ([[Special:ApiHelp/main#main/datatypes|λεπτομέρειες]])",
+       "api-help-param-type-user": "Τύπος: {{PLURAL:$1|1=όνομα χρήστη|2=λίστα με ονόματα χρήστη}}"
 }
index 49331c4..396f5da 100644 (file)
        "apihelp-feedrecentchanges-param-hideliu": "Hide changes made by registered users.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "Hide patrolled changes.",
        "apihelp-feedrecentchanges-param-hidemyself": "Hide changes made by the current user.",
-       "apihelp-feedrecentchanges-param-hidecategorization": "Hide category membership changes.",
        "apihelp-feedrecentchanges-param-tagfilter": "Filter by tag.",
        "apihelp-feedrecentchanges-param-target": "Show only changes on pages linked from this page.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Show changes on pages linked to the selected page instead.",
        "apihelp-parse-paramvalue-prop-iwlinks": "Gives interwiki links in the parsed wikitext.",
        "apihelp-parse-paramvalue-prop-wikitext": "Gives the original wikitext that was parsed.",
        "apihelp-parse-paramvalue-prop-properties": "Gives various properties defined in the parsed wikitext.",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "Gives the limit report in a structured way. Gives no data, when <var>$1disablepp</var> is set.",
-       "apihelp-parse-paramvalue-prop-limitreporthtml": "Gives the HTML version of the limit report. Gives no data, when <var>$1disablepp</var> is set.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Gives the limit report in a structured way. Gives no data, when <var>$1disablelimitreport</var> is set.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "Gives the HTML version of the limit report. Gives no data, when <var>$1disablelimitreport</var> is set.",
        "apihelp-parse-paramvalue-prop-parsetree": "The XML parse tree of revision content (requires content model <code>$1</code>)",
        "apihelp-parse-param-pst": "Do a pre-save transform on the input before parsing it. Only valid when used with text.",
        "apihelp-parse-param-onlypst": "Do a pre-save transform (PST) on the input, but don't parse it. Returns the same wikitext, after a PST has been applied. Only valid when used with <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Includes language links supplied by extensions (for use with <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-section": "Only retrieve the content of this section number or when <kbd>new</kbd> generate a new section.\n\n<kbd>new</kbd> section is only honored when specifying <var>text</var>.",
        "apihelp-parse-param-sectiontitle": "New section title when <var>section</var> is <kbd>new</kbd>.\n\nUnlike page editing, this does not fall back to <var>summary</var> when omitted or empty.",
-       "apihelp-parse-param-disablepp": "Omit the preprocessor report (\"NewPP limit report\") from the parser output.",
+       "apihelp-parse-param-disablelimitreport": "Omit the limit report (\"NewPP limit report\") from the parser output.",
+       "apihelp-parse-param-disablepp": "Use <var>$1disablelimitreport</var> instead.",
        "apihelp-parse-param-disableeditsection": "Omit edit section links from the parser output.",
+       "apihelp-parse-param-disabletidy": "Do not run HTML cleanup (e.g. tidy) on the parser output.",
        "apihelp-parse-param-generatexml": "Generate XML parse tree (requires content model <code>$1</code>; replaced by <kbd>$2prop=parsetree</kbd>).",
        "apihelp-parse-param-preview": "Parse in preview mode.",
        "apihelp-parse-param-sectionpreview": "Parse in section preview mode (enables preview mode too).",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Adds timestamp of when the user was last notified about the edit.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "Adds log information where appropriate.",
        "apihelp-query+watchlist-param-show": "Show only items that meet these criteria. For example, to see only minor edits done by logged-in users, set $1show=minor|!anon.",
-       "apihelp-query+watchlist-param-type": "Which types of changes to show:\n;edit:Regular page edits.\n;external:External changes.\n;new:Page creations.\n;log:Log entries.\n;categorize:Category membership changes.",
+       "apihelp-query+watchlist-param-type": "Which types of changes to show:\n;edit:Regular page edits.\n;external:External changes.\n;new:Page creations.\n;log:Log entries.",
        "apihelp-query+watchlist-param-owner": "Used along with $1token to access a different user's watchlist.",
        "apihelp-query+watchlist-param-token": "A security token (available in the user's [[Special:Preferences#mw-prefsection-watchlist|preferences]]) to allow access to another user's watchlist.",
        "apihelp-query+watchlist-example-simple": "List the top revision for recently changed pages on the current user's watchlist.",
        "api-help-right-apihighlimits": "Use higher limits in API queries (slow queries: $1; fast queries: $2). The limits for slow queries also apply to multivalue parameters.",
 
        "api-credits-header": "Credits",
-       "api-credits": "API developers:\n* Roan Kattouw (lead developer Sep 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (creator, lead developer Sep 2006–Sep 2007)\n* Brad Jorsch (lead developer 2013–present)\n\nPlease send your comments, suggestions and questions to mediawiki-api@lists.wikimedia.org\nor file a bug report at https://phabricator.wikimedia.org/."
+       "api-credits": "API developers:\n* Yuri Astrakhan (creator, lead developer Sep 2006–Sep 2007)\n* Roan Kattouw (lead developer Sep 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Brad Jorsch (lead developer 2013–present)\n\nPlease send your comments, suggestions and questions to mediawiki-api@lists.wikimedia.org\nor file a bug report at https://phabricator.wikimedia.org/."
 }
index 94a5af2..85e2482 100644 (file)
        "apihelp-feedrecentchanges-param-hideliu": "Ocultar los cambios realizados por usuarios registrados.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "Ocultar los cambios patrullados.",
        "apihelp-feedrecentchanges-param-hidemyself": "Ocultar los cambios realizados por el usuario actual.",
-       "apihelp-feedrecentchanges-param-hidecategorization": "Ocultar los cambios de pertenencia a categorías.",
        "apihelp-feedrecentchanges-param-tagfilter": "Filtrar por etiquetas.",
        "apihelp-feedrecentchanges-param-target": "Mostrar solo los cambios en las páginas enlazadas en esta.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Mostrar los cambios en páginas enlazadas con la página seleccionada.",
        "apihelp-parse-paramvalue-prop-iwlinks": "Da los enlaces interwiki del texto analizado.",
        "apihelp-parse-paramvalue-prop-wikitext": "Da el wikitexto original que se había analizado.",
        "apihelp-parse-paramvalue-prop-properties": "Da varias propiedades definidas en el wikitexto analizado.",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "Da el informe del límite de forma estructurada. No da datos si <var>$1disablepp</var> está establecido.",
-       "apihelp-parse-paramvalue-prop-limitreporthtml": "Da la versión HTML del informe del límite. No da datos si <var>$1disablepp</var> está establecido.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Da el informe del límite de forma estructurada. No da datos si <var>$1disablelimitreport</var> está establecido.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "Da la versión HTML del informe del límite. No da datos si <var>$1disablelimitreport</var> está establecido.",
        "apihelp-parse-param-effectivelanglinks": "Incluye enlaces de idiomas proporcionados por las extensiones (para utilizar con <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-preview": "Analizar en modo de vista previa.",
        "apihelp-parse-param-sectionpreview": "Analizar sección en modo de vista previa (activa el modo de vista previa).",
        "apihelp-query+allcategories-param-min": "Devolver solo categorías con al menos este número de miembros.",
        "apihelp-query+allcategories-param-max": "Devolver solo categorías con como mucho este número de miembros.",
        "apihelp-query+allcategories-param-limit": "Cuántas categorías se devolverán.",
-       "apihelp-query+allcategories-param-prop": "Qué propiedades se obtendrán:\n;size: Añade el número de páginas en la categorías.\n;hidden: Etiqueta las categorías que están ocultas con _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+allcategories-param-prop": "Qué propiedades se obtendrán:",
+       "apihelp-query+allcategories-paramvalue-prop-size": "Añade el número de páginas en la categoría.",
+       "apihelp-query+allcategories-paramvalue-prop-hidden": "Etiqueta las categorías que están ocultas con <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+allcategories-example-size": "Lista las categorías con información sobre el número de páginas de cada una.",
        "apihelp-query+alldeletedrevisions-description": "Listar todas las revisiones eliminadas por un usuario o en un espacio de nombres.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Solo puede usarse con <var>$3user</var>.",
        "apihelp-query+allfileusages-param-from": "El título del archivo para comenzar la enumeración.",
        "apihelp-query+allfileusages-param-to": "El título del archivo para detener la enumeración.",
        "apihelp-query+allfileusages-param-prefix": "Buscar todos los títulos de los archivos que comiencen con este valor.",
+       "apihelp-query+allfileusages-param-prop": "Qué piezas de información incluir:",
        "apihelp-query+allfileusages-param-limit": "Cuántos elementos en total se devolverán.",
        "apihelp-query+allfileusages-param-dir": "La dirección en la que se listará.",
        "apihelp-query+allfileusages-example-B": "Listar títulos de archivos, incluyendo los desaparecidos, con las ID de páginas a las que pertenecen, empezando por la <kbd>B</kbd>.",
        "apihelp-query+alllinks-param-from": "El título del enlace para comenzar la enumeración.",
        "apihelp-query+alllinks-param-to": "El título del enlace para detener la enumeración.",
        "apihelp-query+alllinks-param-prefix": "Buscar todos los títulos vinculados que comiencen con este valor.",
+       "apihelp-query+alllinks-paramvalue-prop-title": "Añade el título del enlace.",
        "apihelp-query+alllinks-param-namespace": "El espacio de nombres que enumerar.",
        "apihelp-query+alllinks-param-limit": "Cuántos elementos en total se devolverán.",
        "apihelp-query+alllinks-example-unique-generator": "Obtiene todos los títulos enlazados, marcando los que falten.",
        "apihelp-query+allusers-description": "Enumerar todos los usuarios registrados.",
        "apihelp-query+allusers-param-prefix": "Buscar todos los usuarios que empiecen con este valor.",
        "apihelp-query+allusers-param-group": "Incluir solo usuarios en los grupos dados.",
+       "apihelp-query+allusers-paramvalue-prop-blockinfo": "Añade información sobre un bloque actual al usuario.",
+       "apihelp-query+allusers-paramvalue-prop-groups": "Lista los grupos a los que el usuario pertenece. Esto utiliza más recursos del servidor y puede devolver menos resultados que el límite.",
        "apihelp-query+allusers-param-limit": "Cuántos nombres de usuario se devolverán.",
        "apihelp-query+allusers-param-activeusers": "Solo listar usuarios activos en {{PLURAL:$1|el último día|los $1 últimos días}}.",
        "apihelp-query+allusers-example-Y": "Listar usuarios que empiecen por <kbd>Y</kbd>.",
        "apihelp-query+backlinks-example-simple": "Mostrar enlaces a la <kbd>Portada<kbd>.",
        "apihelp-query+blocks-description": "Listar todos los usuarios y direcciones IP bloqueadas.",
        "apihelp-query+blocks-param-users": "Lista de usuarios a buscar (opcional).",
+       "apihelp-query+blocks-paramvalue-prop-userid": "Añade el identificador del usuario bloqueado.",
+       "apihelp-query+blocks-paramvalue-prop-timestamp": "Añade la fecha y hora de cuando se aplicó el bloque.",
        "apihelp-query+blocks-example-simple": "Listar bloques.",
        "apihelp-query+categories-param-show": "Qué tipo de categorías mostrar.",
        "apihelp-query+categories-param-limit": "Cuántas categorías se devolverán.",
        "apihelp-query+embeddedin-param-filterredir": "Cómo filtrar las redirecciones.",
        "apihelp-query+embeddedin-param-limit": "Cuántas páginas se devolverán.",
        "apihelp-query+extlinks-param-limit": "Cuántos enlaces se devolverán.",
+       "apihelp-query+exturlusage-param-prop": "Qué piezas de información incluir:",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "Añade el identificado de la página.",
        "apihelp-query+exturlusage-param-protocol": "Protocolo del URL. Si está vacío y se establece <var>$1query</var>, el protocolo es <kbd>http</kbd>. Deja vacío esto y <var>$1query</var> para listar todos los enlaces externos.",
        "apihelp-query+exturlusage-param-limit": "Cuántas páginas se devolverán.",
        "apihelp-query+exturlusage-example-simple": "Mostrar páginas que enlacen con <kbd>http://www.mediawiki.org</kbd>.",
        "apihelp-query+filearchive-param-from": "El título de imagen para comenzar la enumeración",
        "apihelp-query+filearchive-param-to": "El título de imagen para detener la enumeración.",
        "apihelp-query+filearchive-param-prefix": "Buscar todos los títulos de las imágenes que comiencen con este valor.",
+       "apihelp-query+filearchive-paramvalue-prop-parseddescription": "Analizar la descripción de la versión.",
+       "apihelp-query+filearchive-paramvalue-prop-archivename": "Añade el nombre de archivo de la versión archivada para las versiones que no son las últimas.",
        "apihelp-query+filearchive-example-simple": "Mostrar una lista de todos los archivos eliminados.",
        "apihelp-query+filerepoinfo-example-simple": "Obtener información acerca de los repositorios de archivos.",
        "apihelp-query+fileusage-param-limit": "Cuántos se devolverán.",
        "apihelp-query+info-example-protection": "Obtén información general y protección acerca de la página <kb>Página principal</kbd>.",
        "apihelp-query+iwbacklinks-param-limit": "Cuántas páginas se devolverán.",
        "apihelp-query+iwbacklinks-example-simple": "Obtener las páginas enlazadas a [[wikibooks:Test]]",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "Añade el URL completo.",
        "apihelp-query+langbacklinks-param-lang": "Idioma del enlace de idioma.",
        "apihelp-query+langbacklinks-param-limit": "Cuántas páginas en total se devolverán.",
+       "apihelp-query+langbacklinks-param-prop": "Qué propiedades se obtendrán:",
        "apihelp-query+langbacklinks-example-simple": "Obtener las páginas enlazadas a [[:fr:Test]]",
        "apihelp-query+langbacklinks-example-generator": "Obtener información acerca de las páginas enlazadas a [[:fr:Test]].",
+       "apihelp-query+langlinks-param-prop": "Qué propiedades adicionales obtener para cada enlace interlingüe:",
        "apihelp-query+langlinks-param-lang": "Devolver solo enlaces de idioma con este código de idioma.",
        "apihelp-query+links-param-limit": "Cuántos enlaces se devolverán.",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "Identificador de cada página.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "Título de cada página.",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "Indicar si la página es una redirección.",
        "apihelp-query+linkshere-param-limit": "Cuántos se devolverán.",
        "apihelp-query+linkshere-example-simple": "Obtener una lista de páginas que enlacen a la [[Main Page]].",
        "apihelp-query+linkshere-example-generator": "Obtener información acerca de las páginas enlazadas a la [[Main Page|Portada]].",
+       "apihelp-query+logevents-paramvalue-prop-type": "Añade el tipo del evento de registro.",
+       "apihelp-query+logevents-paramvalue-prop-parsedcomment": "Añade el comentario analizado del evento de registro.",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "Añade el identificador de página.",
        "apihelp-query+pageswithprop-param-limit": "El máximo número de páginas que se devolverán.",
        "apihelp-query+pageswithprop-example-simple": "Listar las 10 primeras páginas que utilicen <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+pageswithprop-example-generator": "Obtener información adicional acerca de las 10 primeras páginas que utilicen <code>_&#95;NOTOC_&#95;</code>.",
        "apihelp-query+protectedtitles-param-namespace": "Listar solo los títulos en estos espacios de nombres.",
        "apihelp-query+protectedtitles-param-level": "Listar solo títulos con estos niveles de protección.",
        "apihelp-query+protectedtitles-param-limit": "Cuántas páginas se devolverán.",
+       "apihelp-query+protectedtitles-paramvalue-prop-expiry": "Añade la fecha y hora de cuando se levantará la protección.",
        "apihelp-query+protectedtitles-example-simple": "Listar títulos protegidos.",
        "apihelp-query+protectedtitles-example-generator": "Encuentra enlaces a títulos protegidos en el espacio de nombres principal.",
        "apihelp-query+querypage-param-page": "El nombre de la página especial. Recuerda, es sensible a mayúsculas y minúsculas.",
        "apihelp-query+recentchanges-param-user": "Listar solo los cambios de este usuario.",
        "apihelp-query+recentchanges-param-excludeuser": "No listar cambios de este usuario.",
        "apihelp-query+recentchanges-param-tag": "Listar solo los cambios con esta etiqueta.",
+       "apihelp-query+recentchanges-paramvalue-prop-flags": "Añade marcas para la edición.",
+       "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Etiqueta ediciones patrullables como patrulladas o no patrulladas.",
        "apihelp-query+recentchanges-param-token": "Usa <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> en su lugar.",
        "apihelp-query+recentchanges-param-limit": "Cuántos cambios en total se devolverán.",
        "apihelp-query+recentchanges-param-type": "Cuántos tipos de cambios se mostrarán.",
        "apihelp-query+recentchanges-example-simple": "Lista de cambios recientes.",
+       "apihelp-query+redirects-param-prop": "Qué propiedades se obtendrán:",
+       "apihelp-query+redirects-paramvalue-prop-title": "Título de cada redirección.",
+       "apihelp-query+redirects-paramvalue-prop-fragment": "Fragmento de cada redirección, si los hubiere.",
        "apihelp-query+redirects-param-limit": "Cuántas redirecciones se devolverán.",
        "apihelp-query+redirects-example-simple": "Mostrar una lista de las redirecciones a la [[Main Page|Portada]]",
        "apihelp-query+revisions-example-last5": "Mostrar las últimas 5 revisiones de la <kbd>Portada</kbd>.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "Texto de la revisión.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "Etiquetas para la revisión.",
        "apihelp-query+search-param-info": "Qué metadatos devolver.",
+       "apihelp-query+search-param-prop": "Qué propiedades se devolverán:",
+       "apihelp-query+search-paramvalue-prop-redirecttitle": "Añade el título de la redirección coincidente.",
        "apihelp-query+search-param-limit": "Cuántas páginas en total se devolverán.",
        "apihelp-query+search-param-interwiki": "Incluir resultados interwiki en la búsqueda, si es posible.",
        "apihelp-query+search-example-simple": "Buscar <kbd>significado</kbd>.",
        "apihelp-query+search-example-text": "Buscar <kbd>meaning</kbd> en los textos.",
        "apihelp-query+search-example-generator": "Obtener información acerca de las páginas devueltas por una búsqueda de <kbd>meaning</kbd>.",
        "apihelp-query+siteinfo-description": "Devolver información general acerca de la página web.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "Lista de alias registrados de espacios de nombres",
+       "apihelp-query+siteinfo-paramvalue-prop-interwikimap": "Devuelve el mapa interwiki (opcionalmente filtrado, opcionalmente localizado mediante el uso de <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-usergroups": "Devuelve los grupos de usuarios y los permisos asociados.",
        "apihelp-query+siteinfo-example-simple": "Obtener información del sitio.",
        "apihelp-query+stashimageinfo-description": "Devuelve información del archivo para archivos escondidos.",
        "apihelp-query+stashimageinfo-param-sessionkey": "Alias de $1filekey, para retrocompatibilidad.",
        "apihelp-query+stashimageinfo-example-simple": "Devuelve información para un archivo escondido.",
        "apihelp-query+stashimageinfo-example-params": "Devuelve las miniaturas de dos archivos escondidos.",
        "apihelp-query+tags-param-limit": "El número máximo de etiquetas para enumerar.",
+       "apihelp-query+tags-paramvalue-prop-source": "Obtiene las fuentes de la etiqueta, que pueden incluir <samp>extension</samp> para etiquetas definidas por extensiones y <samp>manual</samp> para etiquetas que pueden aplicarse manualmente por los usuarios.",
+       "apihelp-query+tags-paramvalue-prop-active": "Si la etiqueta aún se sigue aplicando.",
        "apihelp-query+templates-description": "Devuelve todas las páginas transcluídas en las páginas dadas.",
        "apihelp-query+templates-param-limit": "Cuántas plantillas se devolverán.",
        "apihelp-query+transcludedin-description": "Encuentra todas las páginas que transcluyan las páginas dadas.",
+       "apihelp-query+transcludedin-paramvalue-prop-title": "Título de cada página.",
        "apihelp-query+transcludedin-param-limit": "Cuántos se devolverán.",
        "apihelp-query+transcludedin-example-simple": "Obtener una lista de páginas transcluyendo <kbd>Main Page</kbd>.",
        "apihelp-query+usercontribs-param-limit": "Número máximo de contribuciones que se devolverán.",
+       "apihelp-query+usercontribs-param-prop": "Incluir piezas adicionales de información:",
+       "apihelp-query+usercontribs-paramvalue-prop-ids": "Añade el identificador de página y el de revisión.",
+       "apihelp-query+usercontribs-paramvalue-prop-comment": "Añade el comentario de la edición.",
+       "apihelp-query+usercontribs-paramvalue-prop-tags": "Lista las etiquetas para la edición.",
        "apihelp-query+usercontribs-example-user": "Mostrar contribuciones del usuario <kbd>Ejemplo</kbd>.",
        "apihelp-query+usercontribs-example-ipprefix": "Mostrar las contribuciones de todas las direcciones IP con el prefijo <kbd>192.0.2.</kbd>.",
        "apihelp-query+userinfo-description": "Obtener información sobre el usuario actual.",
+       "apihelp-query+userinfo-param-prop": "Qué piezas de información incluir:",
+       "apihelp-query+userinfo-paramvalue-prop-options": "Lista todas las preferencias que haya establecido el usuario actual.",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "Añade el número de ediciones del usuario actual.",
+       "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Lista todos los límites de velocidad aplicados al usuario actual.",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "Añade el nombre real del usuario.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Añade la fecha de registro del usuario.",
        "apihelp-query+userinfo-example-simple": "Obtener información sobre el usuario actual.",
        "apihelp-query+userinfo-example-data": "Obtener información adicional sobre el usuario actual.",
        "apihelp-query+users-description": "Obtener información sobre una lista de usuarios.",
+       "apihelp-query+users-paramvalue-prop-blockinfo": "Etiqueta si el usuario está bloqueado, por quién y por qué razón.",
+       "apihelp-query+users-paramvalue-prop-gender": "Etiqueta el género del usuario. Devuelve \"masculino\", \"femenino\" o \"desconocido\".",
        "apihelp-query+users-example-simple": "Devolver información del usuario <kbd>Ejemplo</kbd>.",
        "apihelp-query+watchlist-param-start": "El sello de tiempo para comenzar la enumeración",
        "apihelp-query+watchlist-param-end": "El sello de tiempo para finalizar la enumeración.",
        "apihelp-query+watchlist-paramvalue-prop-sizes": "Añade la longitud vieja y la nueva de la página.",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Añade fecha y hora de cuando el usuario fue notificado por última vez acerca de la edición.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "Añade información del registro cuando corresponda.",
-       "apihelp-query+watchlist-param-type": "Qué tipos de cambios mostrar:\n;edit:ediciones comunes a páginas.\n;external:cambios externos.\n;new:creaciones de páginas.\n;log:entradas de registros.\n;categorize:cambios de pertenencia a categorías.",
+       "apihelp-query+watchlist-param-type": "Qué tipos de cambios mostrar:\n;edit:ediciones comunes a páginas.\n;external:cambios externos.\n;new:creaciones de páginas.\n;log:entradas del registro.",
        "apihelp-query+watchlistraw-param-show": "Sólo listar los elementos que cumplen estos criterios.",
        "apihelp-query+watchlistraw-param-fromtitle": "Título (con el prefijo de espacio de nombres) desde el que se empezará a enumerar.",
        "apihelp-query+watchlistraw-param-totitle": "Título (con el prefijo de espacio de nombres) desde el que se dejará de enumerar.",
index 522aa3f..9d1efe6 100644 (file)
@@ -19,7 +19,8 @@
                        "Urhixidur",
                        "Wladek92",
                        "Ash Crow",
-                       "L"
+                       "L",
+                       "Umherirrender"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentation]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Liste de diffusion]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annonces de l’API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bogues et demandes]\n</div>\n<strong>État :</strong> Toutes les fonctionnalités affichées sur cette page devraient fonctionner, mais l’API est encore en cours de développement et peut changer à tout moment. Inscrivez-vous à [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la liste de diffusion mediawiki-api-announce] pour être informé des mises à jour.\n\n<strong>Requêtes erronées :</strong> Si des requêtes erronées sont envoyées à l’API, un en-tête HTTP sera renvoyé avec la clé « MediaWiki-API-Error ». La valeur de cet en-tête et le code d’erreur renvoyé prendront la même valeur. Pour plus d’information, voyez [[mw:API:Errors_and_warnings|API: Errors and warnings]].",
        "apihelp-feedrecentchanges-param-hideliu": "Masquer les modifications faites par des utilisateurs enregistrés.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "Masquer les modifications contrôlées.",
        "apihelp-feedrecentchanges-param-hidemyself": "Masquer les modifications faites par l'utilisateur actuel.",
-       "apihelp-feedrecentchanges-param-hidecategorization": "Masquer les changements de la catégorie d'appartenance.",
        "apihelp-feedrecentchanges-param-tagfilter": "Filtrer par balise.",
        "apihelp-feedrecentchanges-param-target": "Afficher uniquement les modifications sur les pages liées depuis cette page.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Afficher les modifications plutôt sur les pages liées vers la page sélectionnée.",
        "apihelp-parse-paramvalue-prop-iwlinks": "Fournit les liens interwikis dans le wikitexte analysé.",
        "apihelp-parse-paramvalue-prop-wikitext": "Fournit le wikitexte d’origine qui a été analysé.",
        "apihelp-parse-paramvalue-prop-properties": "Fournit les diverses propriétés définies dans le wikitexte analysé.",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "Fournit le rapport de limite d’une manière structurée. Ne fournit aucune donnée, si <var>$1disablepp</var> est positionné.",
-       "apihelp-parse-paramvalue-prop-limitreporthtml": "Fournit la version HTML du rapport de limite. Ne fournit aucune donnée, si <var>$1disablepp</var> est positionné.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Fournit le rapport de limite d’une manière structurée. Ne fournit aucune donnée, si <var>$1disablelimitreport</var> est positionné.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "Fournit la version HTML du rapport de limite. Ne fournit aucune donnée, si <var>$1disablelimitreport</var> est positionné.",
        "apihelp-parse-paramvalue-prop-parsetree": "L’arbre d’analyse XML du contenu de la révision (nécessite le modèle de contenu <code>$1</code>)",
        "apihelp-parse-param-pst": "Faire une transformation avant enregistrement de l’entrée avant de l’analyser. Valide uniquement quand utilisé avec du texte.",
        "apihelp-parse-param-onlypst": "Faire une transformation avant enregistrement (PST) de l’entrée, mais ne pas l’analyser. Renvoie le même wikitexte, après que la PST a été appliquée. Valide uniquement quand utilisé avec <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Inclut les liens de langue fournis par les extensions (à utiliser avec <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-section": "Récupérer uniquement le contenu de ce numéro de section ou quand <kbd>nouveau</kbd> génère une nouvelle section.\n\nLa <kbd>nouvelle</kbd> section est mise à l’honneur uniquement quand <var>text</var> est spécifié.",
        "apihelp-parse-param-sectiontitle": "Nouveau titre de section quand <var>section</var> vaut <kbd>nouveau</kbd>.\n\nÀ la différence de la modification de page, cela ne revient pas à <var>summary</var> quand il est omis ou vide.",
-       "apihelp-parse-param-disablepp": "Omettre le rapport du préprocesseur (« rapport de limite du nouveau PP ») de la sortie de l’analyseur.",
+       "apihelp-parse-param-disablelimitreport": "Omettre le rapport de limite (« rapport de limite du nouveau PP ») de la sortie de l’analyseur.",
+       "apihelp-parse-param-disablepp": "Utiliser <var>$1disablelimitreport</var> à la place.",
        "apihelp-parse-param-disableeditsection": "Omettre les liens de modification de section de la sortie de l’analyseur.",
+       "apihelp-parse-param-disabletidy": "Ne pas exécuter de nettoyage du code HTML (par exemple,  réagencer) sur la sortie de l'analyseur.",
        "apihelp-parse-param-generatexml": "Générer un arbre d’analyse XML (nécessite le modèle de contenu <code>$1</code> ; remplacé par <kbd>$2prop=parsetree</kbd>).",
        "apihelp-parse-param-preview": "Analyser en mode aperçu.",
        "apihelp-parse-param-sectionpreview": "Analyser en mode aperçu de section (active aussi le mode aperçu).",
        "apihelp-query+allcategories-param-min": "Renvoyer uniquement les catégories avec au moins ce nombre de membres.",
        "apihelp-query+allcategories-param-max": "Renvoyer uniquement les catégories avec au plus ce nombre de membres.",
        "apihelp-query+allcategories-param-limit": "Combien de catégories renvoyer.",
-       "apihelp-query+allcategories-param-prop": "Quelles propriétés récupérer :\n;size:Ajoute le nombre de pages dans la catégorie.\n;hidden:Marque les catégories qui sont cachées avec _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+allcategories-param-prop": "Quelles propriétés récupérer :",
+       "apihelp-query+allcategories-paramvalue-prop-size": "Ajoute le nombre de pages dans la catégorie.",
+       "apihelp-query+allcategories-paramvalue-prop-hidden": "Marque les catégories qui sont masquées avec <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+allcategories-example-size": "Lister les catégories avec l’information sur le nombre de pages dans chacune",
        "apihelp-query+allcategories-example-generator": "Récupérer l’information sur la page de catégorie elle-même pour les catégories commençant par <kbd>List</kbd>.",
        "apihelp-query+alldeletedrevisions-description": "Lister toutes les révisions supprimées par un utilisateur ou dans un espace de noms.",
        "apihelp-query+allfileusages-param-to": "Le titre du fichier auquel arrêter l’énumération.",
        "apihelp-query+allfileusages-param-prefix": "Rechercher tous les fichiers dont le titre commence par cette valeur.",
        "apihelp-query+allfileusages-param-unique": "Afficher uniquement les titres de fichier distincts. Impossible à utiliser avec $1prop=ids.\nQuand utilisé comme générateur, produit les pages cibles au lieu des sources.",
-       "apihelp-query+allfileusages-param-prop": "Quelles informations inclure :\n;ids:Ajoute les IDs des pages utilisatrices (impossible à utiliser avec $1unique).\n;title:Ajoute le titre du fichier.",
+       "apihelp-query+allfileusages-param-prop": "Quelles informations inclure :",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "Ajoute les IDs de page des pages l’utilisant (impossible à utiliser avec $1unique).",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "Ajoute le titre du fichier.",
        "apihelp-query+allfileusages-param-limit": "Combien d’éléments renvoyer au total.",
        "apihelp-query+allfileusages-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+allfileusages-example-B": "Lister les titres de fichier, y compris les manquants, avec les IDs de page d’où ils proviennent, en commençant à <kbd>B</kbd>.",
        "apihelp-query+alllinks-param-to": "Le titre du lien auquel arrêter l’énumération.",
        "apihelp-query+alllinks-param-prefix": "Rechercher tous les titres liés commençant par cette valeur.",
        "apihelp-query+alllinks-param-unique": "Afficher uniquement les titres liés distincts. Impossible à utiliser avec <kbd>$1prop=ids</kbd>.\nUtilisé avec un générateur, produit les pages cible au lieu des pages source.",
-       "apihelp-query+alllinks-param-prop": "Quelles informations inclure :\n;ids:Ajoute l’ID de la page de liaison (impossible à utiliser avec <var>$1unique</var>).\n;title:Ajoute le titre du lien.",
+       "apihelp-query+alllinks-param-prop": "Quelles informations inclure :",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "Ajoute l’ID de la page avec le lien (impossible à utiliser avec <var>$1unique</var>).",
+       "apihelp-query+alllinks-paramvalue-prop-title": "Ajoute le titre du lien.",
        "apihelp-query+alllinks-param-namespace": "L’espace de noms à énumérer.",
        "apihelp-query+alllinks-param-limit": "Combien d’éléments renvoyer au total.",
        "apihelp-query+alllinks-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+allredirects-param-to": "Le titre de la redirection auquel arrêter l’énumération.",
        "apihelp-query+allredirects-param-prefix": "Rechercher toutes les pages cible commençant par cette valeur.",
        "apihelp-query+allredirects-param-unique": "Afficher uniquement les pages cibles distinctes. Impossible à utiliser avec $1prop=ids|fragment|interwiki.\nUtilisé avec un générateur, produit les pages cible au lieu des pages source.",
-       "apihelp-query+allredirects-param-prop": "Quelles informations inclure :\n;ids:Ajoute l’ID de la page de redirection (impossible à utiliser avec <var>$1unique</var>).\n;title:Ajoute le titre de la redirection.\n;fragment:Ajoute le fragment de la redirection, s’il y en a un (impossible à utiliser avec <var>$1unique</var>).\n;interwiki:Ajoute le préfixe interwiki de la redirection, s’il y en a un (impossible à utiliser avec <var>$1unique</var>).",
+       "apihelp-query+allredirects-param-prop": "Quelles informations inclure :",
+       "apihelp-query+allredirects-paramvalue-prop-ids": "Ajoute l’ID de la page de redirection (impossible à utiliser avec <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-title": "Ajoute le titre de la redirection.",
+       "apihelp-query+allredirects-paramvalue-prop-fragment": "Ajoute le fragment de la redirection, s’il existe (impossible à utiliser avec <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-interwiki": "Ajoute le préfixe interwiki de la redirection, s’il existe (impossible à utiliser avec <var>$1unique</var>).",
        "apihelp-query+allredirects-param-namespace": "L’espace de noms à énumérer.",
        "apihelp-query+allredirects-param-limit": "Combien d’éléments renvoyer au total.",
        "apihelp-query+allredirects-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+alltransclusions-param-to": "Le titre de la transclusion auquel arrêter l’énumération.",
        "apihelp-query+alltransclusions-param-prefix": "Rechercher tous les titres inclus qui commencent par cette valeur.",
        "apihelp-query+alltransclusions-param-unique": "Afficher uniquement les titres inclus. Impossible à utiliser avec $1prop=ids.\nUtilisé avec un générateur, produit les pages cible plutôt que les pages source.",
-       "apihelp-query+alltransclusions-param-prop": "Quelles informations inclure :\n;ids:Ajoute l’ID de la page incluse (impossible à utiliser avec $1unique).\n;title:Ajoute le titre de la transclusion.",
+       "apihelp-query+alltransclusions-param-prop": "Quelles informations inclure :",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "Ajout l’ID de la page de transclusion (impossible à utiliser avec $1unique).",
+       "apihelp-query+alltransclusions-paramvalue-prop-title": "Ajoute le titre de la transclusion.",
        "apihelp-query+alltransclusions-param-namespace": "L’espace de noms à énumérer.",
        "apihelp-query+alltransclusions-param-limit": "Combien d’éléments renvoyer au total.",
        "apihelp-query+alltransclusions-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+allusers-param-group": "Inclure uniquement les utilisateurs dans les groupes donnés.",
        "apihelp-query+allusers-param-excludegroup": "Exclure les utilisateurs dans les groupes donnés.",
        "apihelp-query+allusers-param-rights": "Inclure uniquement les utilisateurs avec les droits indiqués. Ne comprend pas les droits accordés par des groupes implicites ou auto-promus comme *, user ou autoconfirmed.",
-       "apihelp-query+allusers-param-prop": "Quelles informations inclure :\n;blockinfo:Ajoute l’information sur le bloc actuel d’un utilisateur.\n;groups:Liste des groupes auxquels appartient l’utilisateur. Cela utilise beaucoup de ressources du serveur et peut renvoyer moins de résultats que la limite.\n;implicitgroups:Liste tous les groupes auxquels l’utilisateur est affecté automatiquement.\n;rights:Liste les droits qu’à l’utilisateur.\n;editcount:Ajoute le compteur de modifications de l’utilisateur.\n;registration:Ajoute l’horodatage de l’inscription de l’utilisateur, s’il est disponible (peut être vide).",
+       "apihelp-query+allusers-param-prop": "Quelles informations inclure :",
+       "apihelp-query+allusers-paramvalue-prop-blockinfo": "Ajoute l’information sur le bloc actuel d’un utilisateur.",
+       "apihelp-query+allusers-paramvalue-prop-groups": "Liste des groupes auxquels appartient l’utilisateur. Cela utilise beaucoup de ressources du serveur et peut renvoyer moins de résultats que la limite.",
+       "apihelp-query+allusers-paramvalue-prop-implicitgroups": "Liste tous les groupes auxquels l’utilisateur est affecté automatiquement.",
+       "apihelp-query+allusers-paramvalue-prop-rights": "Liste les droits qu’à l’utilisateur.",
+       "apihelp-query+allusers-paramvalue-prop-editcount": "Ajoute le compteur de modifications de l’utilisateur.",
+       "apihelp-query+allusers-paramvalue-prop-registration": "Ajoute l’horodatage de l’inscription de l’utilisateur, s’il est disponible (peut être vide).",
        "apihelp-query+allusers-param-limit": "Combien de noms d’utilisateur renvoyer au total.",
        "apihelp-query+allusers-param-witheditsonly": "Ne lister que les utilisateurs qui ont fait des modifications.",
        "apihelp-query+allusers-param-activeusers": "Lister uniquement les utilisateurs actifs durant {{PLURAL:$1|le dernier jour|les $1 derniers jours}}.",
        "apihelp-query+blocks-param-users": "Liste des utilisateurs à rechercher (facultatif).",
        "apihelp-query+blocks-param-ip": "Obtenir tous les blocs s’appliquant à cette adresse IP ou à cette plage CIDR, y compris les blocs de plage.\nImpossible à utiliser avec <var>$3users</var>. Les plages CIDR plus larges que IPv4/$1 ou IPv6/$2 ne sont pas acceptées.",
        "apihelp-query+blocks-param-limit": "Le nombre maximal de blocs à lister.",
-       "apihelp-query+blocks-param-prop": "Quelles propriétés obtenir :\n;id:Ajoute l’ID du blocage.\n;user:Ajoute le nom de l’utilisateur bloqué.\n;userid:Ajoute l’ID de l’utilisateur bloqué.\n;by:Ajoute le nom de l’utilisateur ayant bloqué.\n;byid:Ajoute l’ID de l’utilisateur ayant bloqué.\n;timestamp:Ajoute l’horodatage du blocage.\n;expiry:Ajoute l’horodatage d’expiration du blocage.\n;reason:Ajoute le motif du blocage.\n;range:Ajoute la plage d’adresses IP affectée par le blocage.\n;flags:Marque le bannissement avec (autoblock, anononly, etc.).",
+       "apihelp-query+blocks-param-prop": "Quelles propriétés obtenir :",
+       "apihelp-query+blocks-paramvalue-prop-id": "Ajoute l’ID du blocage.",
+       "apihelp-query+blocks-paramvalue-prop-user": "Ajoute le nom de l’utilisateur bloqué.",
+       "apihelp-query+blocks-paramvalue-prop-userid": "Ajoute l’ID de l’utilisateur bloqué.",
+       "apihelp-query+blocks-paramvalue-prop-by": "Ajoute le nom de l’utilisateur ayant bloqué.",
+       "apihelp-query+blocks-paramvalue-prop-byid": "Ajoute l’ID de l’utilisateur ayant bloqué.",
+       "apihelp-query+blocks-paramvalue-prop-timestamp": "Ajoute l’horodatage du blocage.",
+       "apihelp-query+blocks-paramvalue-prop-expiry": "Ajoute l’horodatage d’expiration du blocage.",
+       "apihelp-query+blocks-paramvalue-prop-reason": "Ajoute le motif du blocage.",
+       "apihelp-query+blocks-paramvalue-prop-range": "Ajoute la plage d’adresses IP affectée par le blocage.",
+       "apihelp-query+blocks-paramvalue-prop-flags": "Marque le bannissement avec (autoblock, anononly, etc.).",
        "apihelp-query+blocks-param-show": "Afficher uniquement les éléments correspondant à ces critères.\nPar exemple, pour voir uniquement les blocages infinis sur les adresses IP, mettre <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "Lister les blocages",
        "apihelp-query+blocks-example-users": "Lister les blocages des utilisateurs <kbd>Alice</kbd> et <kbd>Bob</kbd>.",
        "apihelp-query+categories-description": "Lister toutes les catégories auxquelles les pages appartiennent.",
-       "apihelp-query+categories-param-prop": "Quelles propriétés supplémentaires obtenir de chaque catégorie :\n;sortkey:Ajoute la clé de tri (chaîne hexadécimale) et son préfixe (partie lisible) de la catégorie.\n;timestamp:Ajoute l’horodatage de l’ajout de la catégorie.\n;hidden:Marque les catégories cachées avec _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+categories-param-prop": "Quelles propriétés supplémentaires obtenir de chaque catégorie :",
+       "apihelp-query+categories-paramvalue-prop-sortkey": "Ajoute la clé de tri (chaîne hexadécimale) et son préfixe (partie lisible) de la catégorie.",
+       "apihelp-query+categories-paramvalue-prop-timestamp": "Ajoute l’horodatage de l’ajout de la catégorie.",
+       "apihelp-query+categories-paramvalue-prop-hidden": "Marque les catégories cachées avec <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+categories-param-show": "Quelle sorte de catégories afficher.",
        "apihelp-query+categories-param-limit": "Combien de catégories renvoyer.",
        "apihelp-query+categories-param-categories": "Lister uniquement ces catégories. Utile pour vérifier si une certaine page est dans une certaine catégorie.",
        "apihelp-query+categorymembers-description": "Lister toutes les pages d’une catégorie donnée.",
        "apihelp-query+categorymembers-param-title": "Quelle catégorie énumérer (obligatoire). Doit comprendre le préfixe <kbd>{{ns:category}}:</kbd>. Impossible à utiliser avec <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "ID de la page de la catégorie à énumérer. Impossible à utiliser avec <var>$1title</var>.",
-       "apihelp-query+categorymembers-param-prop": "Quelles informations inclure :\n;ids:Ajoute l’ID de la page.\n;title:Ajoute le titre et l’ID de l’espace de noms de la page.\n;sortkey:Ajoute la clé de tri utilisée pour trier dans la catégorie (chaîne hexadécimale).\n;sortkeyprefix:Ajoute le préfixe de la clé de tri utilisé pour trier dans la catégorie (partie lisible de la clé de tri).\n;type:Ajoute le type dans lequel a été catégorisée la page (page, sous-catégorie ou fichier).\n;timestamp:Ajoute l’horodatage de l’inclusion de la page.",
+       "apihelp-query+categorymembers-param-prop": "Quelles informations inclure :",
+       "apihelp-query+categorymembers-paramvalue-prop-ids": "Ajoute l’ID de la page.",
+       "apihelp-query+categorymembers-paramvalue-prop-title": "Ajoute le titre et l’ID de l’espace de noms de la page.",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkey": "Ajoute la clé de tri utilisée pour trier dans la catégorie (chaîne hexadécimale).",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "Ajoute le préfixe de la clé de tri utilisé pour trier dans la catégorie (partie lisible de la clé de tri).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Ajoute le type dans lequel a été catégorisée la page (page, sous-catégorie ou fichier).",
+       "apihelp-query+categorymembers-paramvalue-prop-timestamp": "Ajoute l’horodatage de l’inclusion de la page.",
        "apihelp-query+categorymembers-param-namespace": "Inclure uniquement les pages dans ces espaces de nom. Remarquez que <kbd>$1type=subcat</kbd> ou <kbd>$1type=file</kbd> peuvent  être utilisés à la place de <kbd>$1namespace=14</kbd> ou <kbd>6</kbd>.",
        "apihelp-query+categorymembers-param-type": "Quel type de membres de la catégorie inclure. Ignoré quand <kbd>$1sort=timestamp</kbd> est positionné.",
        "apihelp-query+categorymembers-param-limit": "Le nombre maximal de pages à renvoyer.",
        "apihelp-query+extlinks-param-expandurl": "Étendre les URLs relatives au protocole avec le protocole canonique.",
        "apihelp-query+extlinks-example-simple": "Obtenir une liste des liens externes de <kbd>Main Page<kbd>.",
        "apihelp-query+exturlusage-description": "Énumérer les pages contenant une URL donnée.",
-       "apihelp-query+exturlusage-param-prop": "Quelles informations inclure :\n;ids:Ajoute l’ID de la page.\n;title:Ajoute le titre et l’ID de l’espace de noms de la page.\n;url:Ajoute l’URL utilisée dans la page.",
+       "apihelp-query+exturlusage-param-prop": "Quelles informations inclure :",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "Ajoute l’ID de la page.",
+       "apihelp-query+exturlusage-paramvalue-prop-title": "Ajoute le titre et l’ID de l’espace de noms de la page.",
+       "apihelp-query+exturlusage-paramvalue-prop-url": "Ajoute l’URL utilisée dans la page.",
        "apihelp-query+exturlusage-param-protocol": "Protocole de l’URL. Si vide et que <var>$1query</var>  est rempli, le protocole est <kbd>http</kbd>. Le laisser avec <var>$1query</var>  vide pour lister tous les liens externes.",
        "apihelp-query+exturlusage-param-query": "Rechercher une chaîne sans protocole. Voyez [[Special:LinkSearch]]. Le laisser vide liste tous les liens externes.",
        "apihelp-query+exturlusage-param-namespace": "Les espaces de nom à énumérer.",
        "apihelp-query+filearchive-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+filearchive-param-sha1": "Hachage SHA1 de l’image. Écrase $1sha1base36.",
        "apihelp-query+filearchive-param-sha1base36": "Hachage SHA1 de l’image en base 36 (utilisé dans MédiaWiki).",
-       "apihelp-query+filearchive-param-prop": "Quelle information obtenir sur l’image :\n;sha1:Ajoute le hachage SHA-1 pour l’image.\n;timestamp:Ajoute l÷’horodatage pour la version téléchargée.\n;user:Ajoute l’utilisateur qui a téléchargé la version de l’image.\n;size:Ajoute la taille de l’image en octets et la hauteur, la largeur et le nombre de page (si c’est applicable).\n;dimensions:Alias pour la taille.\n;description:Ajoute la description de la version de l’image.\n;parseddescription:Analyser la description de la version.\n;mime:Ajoute le MIME de l’image.\n;mediatype:Ajoute le type de média de l’image.\n;metadata:Liste les métadonnées Exif pour la version de l’image.\n;bitdepth:Ajoute la profondeur de bit de la version.\n;archivename:Ajoute le nom de fichier de la version d’archive pour les versions autres que la dernière.",
+       "apihelp-query+filearchive-param-prop": "Quelle information obtenir sur l’image :",
+       "apihelp-query+filearchive-paramvalue-prop-sha1": "Ajoute le hachage SHA-1 pour l’image.",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "Ajoute l÷’horodatage pour la version téléchargée.",
+       "apihelp-query+filearchive-paramvalue-prop-user": "Ajoute l’utilisateur qui a téléchargé la version de l’image.",
+       "apihelp-query+filearchive-paramvalue-prop-size": "Ajoute la taille de l’image en octets et la hauteur, la largeur et le nombre de page (si c’est applicable).",
+       "apihelp-query+filearchive-paramvalue-prop-dimensions": "Alias pour la taille.",
+       "apihelp-query+filearchive-paramvalue-prop-description": "Ajoute la description de la version de l’image.",
+       "apihelp-query+filearchive-paramvalue-prop-parseddescription": "Analyser la description de la version.",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "Ajoute le MIME de l’image.",
+       "apihelp-query+filearchive-paramvalue-prop-mediatype": "Ajoute le type de média de l’image.",
+       "apihelp-query+filearchive-paramvalue-prop-metadata": "Liste les métadonnées Exif pour la version de l’image.",
+       "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Ajoute la profondeur de bit de la version.",
+       "apihelp-query+filearchive-paramvalue-prop-archivename": "Ajoute le nom de fichier de la version d’archive pour les versions autres que la dernière.",
        "apihelp-query+filearchive-example-simple": "Afficher une liste de tous les fichiers supprimés",
        "apihelp-query+filerepoinfo-description": "Renvoyer les méta-informations sur les référentiels d’image configurés dans le wiki.",
        "apihelp-query+filerepoinfo-param-prop": "Quelles propriétés du référentiel récupérer (il peut y en avoir plus de disponibles sur certains wikis) :\n;apiurl:URL de l’API du référentiel - utile pour obtenir les infos de l’image depuis l’hôte.\n;name:La clé du référentiel - utilisé par ex. dans les valeurs de retour de <var>[[mw:Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> et [[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:Le nom lisible du wiki référentiel.\n;rooturl:URL racine des chemins d’image.\n;local:Si ce référentiel est le référentiel local ou non.",
        "apihelp-query+filerepoinfo-example-simple": "Obtenir l’information sur les référentiels de fichier",
        "apihelp-query+fileusage-description": "Trouver toutes les pages qui utilisent les fichiers donnés.",
-       "apihelp-query+fileusage-param-prop": "Quelles propriétés obtenir :\n;pageid:ID de chaque page.\n;title:Titre de chaque page.\n;redirect:Marque si la page est une redirection.",
+       "apihelp-query+fileusage-param-prop": "Quelles propriétés obtenir :",
+       "apihelp-query+fileusage-paramvalue-prop-pageid": "ID de chaque page.",
+       "apihelp-query+fileusage-paramvalue-prop-title": "Titre de chaque page.",
+       "apihelp-query+fileusage-paramvalue-prop-redirect": "Marque si la page est une redirection.",
        "apihelp-query+fileusage-param-namespace": "Inclure uniquement les pages dans ces espaces de nom.",
        "apihelp-query+fileusage-param-limit": "Combien renvoyer.",
        "apihelp-query+fileusage-param-show": "Afficher uniquement les éléments qui correspondent à ces critères :\n;redirect:Afficher uniquement les redirections.\n;!redirect:Afficher uniquement les non-redirections.",
        "apihelp-query+iwbacklinks-param-prefix": "Préfixe pour l’interwiki.",
        "apihelp-query+iwbacklinks-param-title": "Lien interwiki à rechercher. Doit être utilisé avec <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "Combien de pages renvoyer.",
-       "apihelp-query+iwbacklinks-param-prop": "Quelles propriétés obtenir :\n;iwprefix:Ajoute le préfixe de l’interwiki.\n;iwtitle:Ajoute le titre de l’interwiki.",
+       "apihelp-query+iwbacklinks-param-prop": "Quelles propriétés obtenir :",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Ajoute le préfixe de l’interwiki.",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Ajoute le titre de l’interwiki.",
        "apihelp-query+iwbacklinks-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+iwbacklinks-example-simple": "Obtenir les pages ayant un lien vers [[wikibooks:Test]]",
        "apihelp-query+iwbacklinks-example-generator": "Obtenir des informations sur les pages ayant un lien vers [[wikibooks:Test]]",
        "apihelp-query+iwlinks-description": "Renvoie tous les liens interwiki des pages indiquées.",
        "apihelp-query+iwlinks-param-url": "S&il faut obtenir l’URL complète (impossible à utiliser avec $1prop).",
-       "apihelp-query+iwlinks-param-prop": "Quelles propriétés supplémentaires obtenir pour chaque lien interlangue :\n;url:Ajoute l’URL complète.",
+       "apihelp-query+iwlinks-param-prop": "Quelles propriétés supplémentaires obtenir pour chaque lien interlangue :",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "Ajoute l’URL complète.",
        "apihelp-query+iwlinks-param-limit": "Combien de liens interwiki renvoyer.",
        "apihelp-query+iwlinks-param-prefix": "Renvoyer uniquement les liens interwiki avec ce préfixe.",
        "apihelp-query+iwlinks-param-title": "Lien interwiki à rechercher. Doit être utilisé avec <var>$1prefix</var>.",
        "apihelp-query+langbacklinks-param-lang": "Langue pour le lien de langue.",
        "apihelp-query+langbacklinks-param-title": "Lien interlangue à rechercher. Doit être utilisé avec $1lang.",
        "apihelp-query+langbacklinks-param-limit": "Combien de pages renvoyer au total.",
-       "apihelp-query+langbacklinks-param-prop": "Quelles propriétés obtenir :\n;lllang:Ajoute le code de langue du lien de langue.\n;lltitle:Ajoute le titre du lien de langue.",
+       "apihelp-query+langbacklinks-param-prop": "Quelles propriétés obtenir :",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "Ajoute le code de langue du lien de langue.",
+       "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "Ajoute le titre du lien de langue.",
        "apihelp-query+langbacklinks-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+langbacklinks-example-simple": "Obtenir les pages avec un lien avec [[:fr:Test]]",
        "apihelp-query+langbacklinks-example-generator": "Obtenir des informations sur les pages ayant un lien vers [[:fr:Test]]",
        "apihelp-query+langlinks-description": "Renvoie tous les liens interlangue des pages fournies.",
        "apihelp-query+langlinks-param-limit": "Combien de liens interlangue renvoyer.",
        "apihelp-query+langlinks-param-url": "S’il faut récupérer l’URL complète (impossible à utiliser avec <var>$1prop</var>).",
-       "apihelp-query+langlinks-param-prop": "Quelles propriétés supplémentaires obtenir pour chaque lien interlangue :\n;url:Ajoute l’URL complète.\n;langname:Ajoute le nom localisé de la langue (au mieux). Utiliser <var>$1inlanguagecode</var> pour contrôler la langue.\n;autonym:Ajoute le nom natif de la langue.",
+       "apihelp-query+langlinks-param-prop": "Quelles propriétés supplémentaires obtenir pour chaque lien interlangue :",
+       "apihelp-query+langlinks-paramvalue-prop-url": "Ajoute l’URL complète.",
+       "apihelp-query+langlinks-paramvalue-prop-langname": "Ajoute le nom localisé de la langue (au mieux). Utiliser <var>$1inlanguagecode</var> pour contrôler la langue.",
+       "apihelp-query+langlinks-paramvalue-prop-autonym": "Ajoute le nom natif de la langue.",
        "apihelp-query+langlinks-param-lang": "Renvoyer uniquement les liens interlangue avec ce code de langue.",
        "apihelp-query+langlinks-param-title": "Lien à rechercher. Doit être utilisé avec <var>$1lang</var>.",
        "apihelp-query+langlinks-param-dir": "La direction dans laquelle énumérer.",
        "apihelp-query+links-example-generator": "Obtenir des informations sur tous les liens de page dans <kbd>Main Page</kbd>.",
        "apihelp-query+links-example-namespaces": "Obtenir les liens de la page <kbd>Accueil</kbd> dans les espaces de nom {{ns:user}} et {{ns:template}}.",
        "apihelp-query+linkshere-description": "Trouver toutes les pages ayant un lien vers les pages données.",
-       "apihelp-query+linkshere-param-prop": "Quelles propriétés obtenir :\n;pageid:ID de chaque page.\n;title:Titre de chaque page.\n;redirect:Indique si la page est une redirection.",
+       "apihelp-query+linkshere-param-prop": "Quelles propriétés obtenir :",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "ID de chaque page.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "Titre de chaque page.",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "Indique si la page est une redirection.",
        "apihelp-query+linkshere-param-namespace": "Inclure uniquement les pages dans ces espaces de nom.",
        "apihelp-query+linkshere-param-limit": "Combien de résultats renvoyer.",
        "apihelp-query+linkshere-param-show": "Afficher uniquement les éléments qui correspondent à ces critères :\n;redirect:Afficher uniquement les redirections.\n;!redirect:Afficher uniquement les non-redirections.",
        "apihelp-query+linkshere-example-simple": "Obtenir une liste des pages liées à  [[Main Page]]",
        "apihelp-query+linkshere-example-generator": "Obtenir des informations sur les pages liées à [[Main Page]]",
        "apihelp-query+logevents-description": "Obtenir des événements des journaux.",
-       "apihelp-query+logevents-param-prop": "Quelles propriétés obtenir :\n;ids:Ajoute l’ID de l’événement.\n;title:Ajoute le titre de la page pour l’événement.\n;type:Ajoute le type de l’événement.\n;user:Ajoute l’utilisateur responsable de l’événement.\n;userid:Ajoute l’ID de l’utilisateur responsable de l’événement.\n;timestamp:Ajoute l’horodatage de l’événement.\n;comment:Ajoute le commentaire de l’événement.\n;parsedcomment:Ajoute le commentaire analysé de l’événement.\n;details:Liste les détails supplémentaires sur l’événement.\n;tags:Liste les balises de l’événement.",
+       "apihelp-query+logevents-param-prop": "Quelles propriétés obtenir :",
+       "apihelp-query+logevents-paramvalue-prop-ids": "Ajoute l’ID de l’événement.",
+       "apihelp-query+logevents-paramvalue-prop-title": "Ajoute le titre de la page pour l’événement.",
+       "apihelp-query+logevents-paramvalue-prop-type": "Ajoute le type de l’événement.",
+       "apihelp-query+logevents-paramvalue-prop-user": "Ajoute l’utilisateur responsable de l’événement.",
+       "apihelp-query+logevents-paramvalue-prop-userid": "Ajoute l’ID de l’utilisateur responsable de l’événement.",
+       "apihelp-query+logevents-paramvalue-prop-timestamp": "Ajoute l’horodatage de l’événement.",
+       "apihelp-query+logevents-paramvalue-prop-comment": "Ajoute le commentaire de l’événement.",
+       "apihelp-query+logevents-paramvalue-prop-parsedcomment": "Ajoute le commentaire analysé de l’événement.",
+       "apihelp-query+logevents-paramvalue-prop-details": "Liste les détails supplémentaires sur l’événement.",
+       "apihelp-query+logevents-paramvalue-prop-tags": "Liste les balises de l’événement.",
        "apihelp-query+logevents-param-type": "Filtrer les entrées du journal à ce seul type.",
        "apihelp-query+logevents-param-action": "Filtrer les actions du journal à cette seule action. Écrase <var>$1type</var>. Des actions avec une astérisque de la forme <var>$1type</var> sont autorisées pour spécifier n’importe quelle chaîne à la place de l’astérisque.",
        "apihelp-query+logevents-param-start": "L’horodatage auquel démarrer l’énumération.",
        "apihelp-query+pageprops-example-simple": "Obtenir les propriétés des pages <kbd>Accueil</kbd> et <kbd>MédiaWiki</kbd>.",
        "apihelp-query+pageswithprop-description": "Lister toutes les pages utilisant une propriété de page donnée.",
        "apihelp-query+pageswithprop-param-propname": "Propriété de page pour laquelle énumérer les pages.",
-       "apihelp-query+pageswithprop-param-prop": "Quelles informations inclure :\n;ids:Ajoute l’ID de la page.\n;title:Ajoute le titre et l’ID de l’espace de noms de la page.\n;value:Ajoute la valeur de la propriété de page.",
+       "apihelp-query+pageswithprop-param-prop": "Quelles informations inclure :",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "Ajoute l’ID de la page.",
+       "apihelp-query+pageswithprop-paramvalue-prop-title": "Ajoute le titre et l’ID de l’espace de noms de la page.",
+       "apihelp-query+pageswithprop-paramvalue-prop-value": "Ajoute la valeur de la propriété de page.",
        "apihelp-query+pageswithprop-param-limit": "Le nombre maximal de pages à renvoyer.",
        "apihelp-query+pageswithprop-param-dir": "Dans quelle direction trier.",
        "apihelp-query+pageswithprop-example-simple": "Lister les 10 premières pages en utilisant <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+protectedtitles-param-limit": "Combien de pages renvoyer au total.",
        "apihelp-query+protectedtitles-param-start": "Démarrer la liste à cet horodatage de protection.",
        "apihelp-query+protectedtitles-param-end": "Arrêter la liste à cet horodatage de protection.",
-       "apihelp-query+protectedtitles-param-prop": "Quelles propriétés obtenir :\n;timestamp:Ajoute l’horodatage de l’ajout de la protection.\n;user:Ajoute l’utilisateur ayant ajouté la protection.\n;userid:Ajoute l’ID de l’utilisateur ayant ajouté la protection.\n;comment:Ajoute le commentaire de la protection.\n;parsedcomment:Ajoute le commentaire analysé de la protection.\n;expiry:Ajoute l’horodatage de levée de la protection.\n;level:Ajoute le niveau de protection.",
+       "apihelp-query+protectedtitles-param-prop": "Quelles propriétés obtenir :",
+       "apihelp-query+protectedtitles-paramvalue-prop-timestamp": "Ajoute l’horodatage de l’ajout de la protection.",
+       "apihelp-query+protectedtitles-paramvalue-prop-user": "Ajoute l’utilisateur ayant ajouté la protection.",
+       "apihelp-query+protectedtitles-paramvalue-prop-userid": "Ajoute l’ID de l’utilisateur ayant ajouté la protection.",
+       "apihelp-query+protectedtitles-paramvalue-prop-comment": "Ajoute le commentaire de la protection.",
+       "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "Ajoute le commentaire analysé de la protection.",
+       "apihelp-query+protectedtitles-paramvalue-prop-expiry": "Ajoute l’horodatage de levée de la protection.",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "Ajoute le niveau de protection.",
        "apihelp-query+protectedtitles-example-simple": "Lister les titres protégés",
        "apihelp-query+protectedtitles-example-generator": "Trouver les liens vers les titres protégés dans l’espace de noms principal",
        "apihelp-query+querypage-description": "Obtenir une liste fournie par une page spéciale basée sur QueryPage",
        "apihelp-query+recentchanges-param-user": "Lister uniquement les modifications par cet utilisateur.",
        "apihelp-query+recentchanges-param-excludeuser": "Ne pas lister les modifications par cet utilisateur.",
        "apihelp-query+recentchanges-param-tag": "Lister uniquement les modifications marquées avec cette balise.",
-       "apihelp-query+recentchanges-param-prop": "Inclure des informations supplémentaires :\n;user:Ajoute l’utilisateur responsable de la modification et marque si c’est une adresse IP.\n;userid:Ajoute l’ID de l’utilisateur responsable de la modification.\n;comment:Ajoute le commentaire de la modification.\n;parsedcomment:Ajoute le commentaire analysé pour la modification.\n;flags:Ajoute les balises de la modification.\n;timestamp:Ajoute l’horodatage de la modification.\n;title:Ajoute le titre de la page modifiée.\n;ids:Ajoute l’ID de la page, l’ID des modifications récentes et l’ID de l’ancienne et la nouvelle révisions.\n;sizes:Ajoute l’ancienne et la nouvelle tailles de la page en octets.\n;redirect:Marque la modification si la page est une redirection.\n;patrolled:Marque les modifications patrouillables comme patrouillées ou non.\n;loginfo:Ajoute les informations du journal (Id du journal, type de trace, etc.) aux entrées du journal.\n;tags:Liste les balises de l’entrée.\n;sha1:Ajoute la somme de contrôle du contenu pour les entrées associées à une révision.",
+       "apihelp-query+recentchanges-param-prop": "Inclure des informations supplémentaires :",
+       "apihelp-query+recentchanges-paramvalue-prop-user": "Ajoute l’utilisateur responsable de la modification et marque si c’est une adresse IP.",
+       "apihelp-query+recentchanges-paramvalue-prop-userid": "Ajoute l’ID de l’utilisateur responsable de la modification.",
+       "apihelp-query+recentchanges-paramvalue-prop-comment": "Ajoute le commentaire de la modification.",
+       "apihelp-query+recentchanges-paramvalue-prop-parsedcomment": "Ajoute le commentaire analysé pour la modification.",
+       "apihelp-query+recentchanges-paramvalue-prop-flags": "Ajoute les balises de la modification.",
+       "apihelp-query+recentchanges-paramvalue-prop-timestamp": "Ajoute l’horodatage de la modification.",
+       "apihelp-query+recentchanges-paramvalue-prop-title": "Ajoute le titre de la page modifiée.",
+       "apihelp-query+recentchanges-paramvalue-prop-ids": "Ajoute l’ID de la page, l’ID des modifications récentes et l’ID de l’ancienne et la nouvelle révisions.",
+       "apihelp-query+recentchanges-paramvalue-prop-sizes": "Ajoute l’ancienne et la nouvelle tailles de la page en octets.",
+       "apihelp-query+recentchanges-paramvalue-prop-redirect": "Marque la modification si la page est une redirection.",
+       "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Marque les modifications patrouillables comme patrouillées ou non.",
+       "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Ajoute les informations du journal (Id du journal, type de trace, etc.) aux entrées du journal.",
+       "apihelp-query+recentchanges-paramvalue-prop-tags": "Liste les balises de l’entrée.",
+       "apihelp-query+recentchanges-paramvalue-prop-sha1": "Ajoute la somme de contrôle du contenu pour les entrées associées à une révision.",
        "apihelp-query+recentchanges-param-token": "Utiliser plutôt <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-query+recentchanges-param-show": "Afficher uniquement les éléments correspondant à ces critères. Par exemple, pour voir uniquement les modifications mineures par des utilisateurs connectés, mettre $1show=minor|!anon.",
        "apihelp-query+recentchanges-param-limit": "Combien de modifications renvoyer au total.",
        "apihelp-query+recentchanges-example-simple": "Lister les modifications récentes",
        "apihelp-query+recentchanges-example-generator": "Obtenir l’information de page sur les modifications récentes non patrouillées",
        "apihelp-query+redirects-description": "Renvoie toutes les redirections vers les pages données.",
-       "apihelp-query+redirects-param-prop": "Quelles propriétés récupérer :\n;pageid:ID de page de chaque redirection.\n;title:Titre de chaque redirection.\n;fragment:Fragment de chaque redirection, s’il y en a un.",
+       "apihelp-query+redirects-param-prop": "Quelles propriétés récupérer :",
+       "apihelp-query+redirects-paramvalue-prop-pageid": "ID de page de chaque redirection.",
+       "apihelp-query+redirects-paramvalue-prop-title": "Titre de chaque redirection.",
+       "apihelp-query+redirects-paramvalue-prop-fragment": "Fragment de chaque redirection, s’il y en a un.",
        "apihelp-query+redirects-param-namespace": "Inclure uniquement les pages dans ces espaces de nom.",
        "apihelp-query+redirects-param-limit": "Combien de redirections renvoyer.",
        "apihelp-query+redirects-param-show": "Afficher uniquement les éléments correspondant à ces critères :\n;fragment:Afficher uniquement les redirections avec un fragment.\n;!fragment:Afficher uniquement les redirections sans fragment.",
        "apihelp-query+search-param-namespace": "Rechercher uniquement dans ces espaces de nom.",
        "apihelp-query+search-param-what": "Quel type de recherche effectuer.",
        "apihelp-query+search-param-info": "Quelles métadonnées renvoyer.",
-       "apihelp-query+search-param-prop": "Quelles propriétés renvoyer :\n;size:Ajoute la taille de la page en octets.\n;wordcount:Ajoute le nombre de mots de la page.\n;timestamp:Ajoute l’horodatage de la dernière modification de la page.\n;snippet:Ajoute un extrait analysé de la page.\n;titlesnippet:Ajoute un extrait analysé du titre de la page.\n;redirectsnippet:Ajoute un extrait analysé du titre de la redirection.\n;redirecttitle:Ajoute le titre de la redirection correspondante.\n;sectionsnippet:Ajoute un extrait analysé du titre de la section correspondante.\n;sectiontitle:Ajoute le titre de la section correspondante.\n;categorysnippet:Ajoute un extrait analysé de la catégorie correspondante.\n;isfilematch:Ajoute un booléen indiquant si la recherche correspond au contenu du fichier.\n;score:<span class=\"apihelp-deprecated\">Obsolète et ignoré.</span>\n;hasrelated:<span class=\"apihelp-deprecated\">Obsolète et ignoré.</span>",
+       "apihelp-query+search-param-prop": "Quelles propriétés renvoyer :",
+       "apihelp-query+search-paramvalue-prop-size": "Ajoute la taille de la page en octets.",
+       "apihelp-query+search-paramvalue-prop-wordcount": "Ajoute le nombre de mots de la page.",
+       "apihelp-query+search-paramvalue-prop-timestamp": "Ajoute l’horodatage de la dernière modification de la page.",
+       "apihelp-query+search-paramvalue-prop-snippet": "Ajoute un extrait analysé de la page.",
+       "apihelp-query+search-paramvalue-prop-titlesnippet": "Ajoute un extrait analysé du titre de la page.",
+       "apihelp-query+search-paramvalue-prop-redirectsnippet": "Ajoute un extrait analysé du titre de la redirection.",
+       "apihelp-query+search-paramvalue-prop-redirecttitle": "Ajoute le titre de la redirection correspondante.",
+       "apihelp-query+search-paramvalue-prop-sectionsnippet": "Ajoute un extrait analysé du titre de la section correspondante.",
+       "apihelp-query+search-paramvalue-prop-sectiontitle": "Ajoute le titre de la section correspondante.",
+       "apihelp-query+search-paramvalue-prop-categorysnippet": "Ajoute un extrait analysé de la catégorie correspondante.",
+       "apihelp-query+search-paramvalue-prop-isfilematch": "Ajoute un booléen indiquant si la recherche correspond au contenu du fichier.",
+       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Obsolète et ignoré.</span>",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Obsolète et ignoré.</span>",
        "apihelp-query+search-param-limit": "Combien de pages renvoyer au total.",
        "apihelp-query+search-param-interwiki": "Inclure les résultats interwiki dans la recherche, s’ils sont disponibles.",
        "apihelp-query+search-param-backend": "Quel serveur de recherche utiliser, si ce n’est pas celui par défaut.",
        "apihelp-query+search-example-text": "Rechercher des textes pour <kbd>signification</kbd>.",
        "apihelp-query+search-example-generator": "Obtenir les informations sur les pages renvoyées par une recherche de <kbd>signification</kbd>.",
        "apihelp-query+siteinfo-description": "Renvoyer les informations générales sur le site.",
-       "apihelp-query+siteinfo-param-prop": "Quelles informations obtenir :\n;general:Information globale du système.\n;namespaces:Liste des espaces de nom déclarés et leur nom canonique.\n;namespacealiases:Liste des alias des espaces de nom déclarés.\n;specialpagealiases:Liste des alias des pages spéciales.\n;magicwords:Liste des mots magiques et leurs alias.\n;statistics:Renvoie les statistiques du site.\n;interwikimap:Renvoie la correspondance interwiki (éventuellement filtrée, éventuellement localisée en utilisant <var>$1inlanguagecode</var>).\n;dbrepllag:Renvoie le serveur de base de donnée avec la plus grande latence de réplication.\n;usergroups:Renvoie les groupes utilisateur et les droits associés.\n;libraries:Renvoie les bibliothèques installées sur le wiki.\n;extensions:Renvoie les extensions installées sur le wiki.\n;fileextensions:Renvoie la liste des extensions de fichier autorisées au téléchargement.\n;rightsinfo:Renvoie l’information sur les droits du wiki (sa licence), si elle est disponible.\n;restrictions:Renvoie l’information sur les types de restriction disponibles (protection).\n;languages:Renvoie une liste des langues que supporte MédiaWiki (éventuellement localisé en utilisant <var>$1inlanguagecode</var>).\n;skins:Renvoie une liste de tous les habillages activés (éventuellement localisé en utilisant <var>$1inlanguagecode</var>, sinon dans la langue du contenu).\n;extensiontags:Renvoie une liste des balises d’extension de l’analyseur.\n;functionhooks:Renvoie une liste des accroches de fonction de l’analyseur.\n;showhooks:Renvoie une liste de toutes les accroches souscrites (contenu de <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).\n;variables:Renvoie une liste des IDs de variable.\n;protocols:Renvoie une liste des protocoles qui sont autorisés dans les liens externes.\n;defaultoptions:Renvoie les valeurs par défaut pour les préférences utilisateur.",
+       "apihelp-query+siteinfo-param-prop": "Quelles informations obtenir :",
+       "apihelp-query+siteinfo-paramvalue-prop-general": "Information globale du système.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespaces": "Liste des espaces de nom déclarés et leur nom canonique.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "Liste des alias des espaces de nom déclarés.",
+       "apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "Liste des alias des pages spéciales.",
+       "apihelp-query+siteinfo-paramvalue-prop-magicwords": "Liste des mots magiques et leurs alias.",
+       "apihelp-query+siteinfo-paramvalue-prop-statistics": "Renvoie les statistiques du site.",
+       "apihelp-query+siteinfo-paramvalue-prop-interwikimap": "Renvoie la correspondance interwiki (éventuellement filtrée, éventuellement localisée en utilisant <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-dbrepllag": "Renvoie le serveur de base de donnée avec la plus grande latence de réplication.",
+       "apihelp-query+siteinfo-paramvalue-prop-usergroups": "Renvoie les groupes utilisateur et les droits associés.",
+       "apihelp-query+siteinfo-paramvalue-prop-libraries": "Renvoie les bibliothèques installées sur le wiki.",
+       "apihelp-query+siteinfo-paramvalue-prop-extensions": "Renvoie les extensions installées sur le wiki.",
+       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "Renvoie la liste des extensions de fichier autorisées au téléchargement.",
+       "apihelp-query+siteinfo-paramvalue-prop-rightsinfo": "Renvoie l’information sur les droits du wiki (sa licence), si elle est disponible.",
+       "apihelp-query+siteinfo-paramvalue-prop-restrictions": "Renvoie l’information sur les types de restriction disponibles (protection).",
+       "apihelp-query+siteinfo-paramvalue-prop-languages": "Renvoie une liste des langues que supporte MédiaWiki (éventuellement localisé en utilisant <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-skins": "Renvoie une liste de tous les habillages activés (éventuellement localisé en utilisant <var>$1inlanguagecode</var>, sinon dans la langue du contenu).",
+       "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "Renvoie une liste des balises d’extension de l’analyseur.",
+       "apihelp-query+siteinfo-paramvalue-prop-functionhooks": "Renvoie une liste des accroches de fonction de l’analyseur.",
+       "apihelp-query+siteinfo-paramvalue-prop-showhooks": "Renvoie une liste de toutes les accroches souscrites (contenu de <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-variables": "Renvoie une liste des IDs de variable.",
+       "apihelp-query+siteinfo-paramvalue-prop-protocols": "Renvoie une liste des protocoles qui sont autorisés dans les liens externes.",
+       "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "Renvoie les valeurs par défaut pour les préférences utilisateur.",
        "apihelp-query+siteinfo-param-filteriw": "Renvoyer uniquement les entrées locales ou uniquement les non locales de la correspondance interwiki.",
        "apihelp-query+siteinfo-param-showalldb": "Lister tous les serveurs de base de données, pas seulement celui avec la plus grande latence.",
        "apihelp-query+siteinfo-param-numberingroup": "Liste le nombre d’utilisateurs dans les groupes.",
        "apihelp-query+stashimageinfo-example-params": "Renvoie les vignettes pour deux fichiers mis en réserve",
        "apihelp-query+tags-description": "Lister les balises de modification.",
        "apihelp-query+tags-param-limit": "Le nombre maximal de balises à lister.",
-       "apihelp-query+tags-param-prop": "Quelles propriétés récupérer :\n;name:Ajoute le nom de la balise.\n;displayname:Ajoute le message système pour la balise.\n;description:Ajoute la description de la balise.\n;hitcount:Ajoute le nombre de révisions et d’entrées du journal qui ont cette balise.\n;defined:Indique si la balise est définie.\n;source:Obtient les sources de la balise, ce qui comprend <samp>extension</samp> pour les balises définies par une extension et <samp>manual</samp> pour les balises pouvant être appliquées manuellement par les utilisateurs.\n;active:Si la balise est encore appliquée.",
+       "apihelp-query+tags-param-prop": "Quelles propriétés récupérer :",
+       "apihelp-query+tags-paramvalue-prop-name": "Ajoute le nom de la balise.",
+       "apihelp-query+tags-paramvalue-prop-displayname": "Ajoute le message système pour la balise.",
+       "apihelp-query+tags-paramvalue-prop-description": "Ajoute la description de la balise.",
+       "apihelp-query+tags-paramvalue-prop-hitcount": "Ajoute le nombre de révisions et d’entrées du journal qui ont cette balise.",
+       "apihelp-query+tags-paramvalue-prop-defined": "Indique si la balise est définie.",
+       "apihelp-query+tags-paramvalue-prop-source": "Obtient les sources de la balise, ce qui comprend <samp>extension</samp> pour les balises définies par une extension et <samp>manual</samp> pour les balises pouvant être appliquées manuellement par les utilisateurs.",
+       "apihelp-query+tags-paramvalue-prop-active": "Si la balise est encore appliquée.",
        "apihelp-query+tags-example-simple": "Lister les balises disponibles",
        "apihelp-query+templates-description": "Renvoie toutes les pages incluses dans les pages fournies.",
        "apihelp-query+templates-param-namespace": "Afficher les modèles uniquement dans ces espaces de nom.",
        "apihelp-query+tokens-example-simple": "Récupérer un jeton csrf (par défaut)",
        "apihelp-query+tokens-example-types": "Récupérer un jeton de suivi et un de patrouille",
        "apihelp-query+transcludedin-description": "Trouver toutes les pages qui incluent les pages données.",
-       "apihelp-query+transcludedin-param-prop": "Quelles propriétés obtenir :\n;pageid:ID de page de chaque page.\n;title:Titre de chaque page.\n;redirect:Marque si cette page est une redirection.",
+       "apihelp-query+transcludedin-param-prop": "Quelles propriétés obtenir :",
+       "apihelp-query+transcludedin-paramvalue-prop-pageid": "ID de page de chaque page.",
+       "apihelp-query+transcludedin-paramvalue-prop-title": "Titre de chaque page.",
+       "apihelp-query+transcludedin-paramvalue-prop-redirect": "Marque si cette page est une redirection.",
        "apihelp-query+transcludedin-param-namespace": "Inclure uniquement les pages dans ces espaces de nom.",
        "apihelp-query+transcludedin-param-limit": "Combien en renvoyer.",
        "apihelp-query+transcludedin-param-show": "Afficher uniquement les éléments qui correspondent à ces critères:\n;redirect:Afficher uniquement les redirections.\n;!redirect:Afficher uniquement les non-redirections.",
        "apihelp-query+usercontribs-param-user": "Les utilisateurs pour lesquels récupérer les contributions.",
        "apihelp-query+usercontribs-param-userprefix": "Récupérer les contributions pour tous les utilisateurs dont les noms commencent par cette valeur. Écrase $1user.",
        "apihelp-query+usercontribs-param-namespace": "Lister uniquement les contributions dans ces espaces de nom.",
-       "apihelp-query+usercontribs-param-prop": "Inclure des informations supplémentaires:\n;ids:Ajoute l’ID de page et l’ID de révision.\n;title:Ajoute le titre et l’ID d’espace de noms de la page.\n;timestamp:Ajoute l’horodatage de la modification.\n;comment:Ajoute le commentaire de la modification.\n;parsedcomment:Ajoute le commentaire analysé de la modification.\n;size:Ajoute la nouvelle taille de la modification.\n;sizediff:Ajoute le delta de taille de la modification par rapport à son parent.\n;flags:Ajoute les marques de la modification.\n;patrolled:Marque les modifications patrouillées.\n;tags:Liste les balises de la modification.",
+       "apihelp-query+usercontribs-param-prop": "Inclure des informations supplémentaires:",
+       "apihelp-query+usercontribs-paramvalue-prop-ids": "Ajoute l’ID de page et l’ID de révision.",
+       "apihelp-query+usercontribs-paramvalue-prop-title": "Ajoute le titre et l’ID d’espace de noms de la page.",
+       "apihelp-query+usercontribs-paramvalue-prop-timestamp": "Ajoute l’horodatage de la modification.",
+       "apihelp-query+usercontribs-paramvalue-prop-comment": "Ajoute le commentaire de la modification.",
+       "apihelp-query+usercontribs-paramvalue-prop-parsedcomment": "Ajoute le commentaire analysé de la modification.",
+       "apihelp-query+usercontribs-paramvalue-prop-size": "Ajoute la nouvelle taille de la modification.",
+       "apihelp-query+usercontribs-paramvalue-prop-sizediff": "Ajoute le delta de taille de la modification par rapport à son parent.",
+       "apihelp-query+usercontribs-paramvalue-prop-flags": "Ajoute les marques de la modification.",
+       "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Marque les modifications patrouillées.",
+       "apihelp-query+usercontribs-paramvalue-prop-tags": "Liste les balises de la modification.",
        "apihelp-query+usercontribs-param-show": "Afficher uniquement les éléments correspondant à ces critères, par ex. les modifications non mineures uniquement : <kbd>$2show=!minor</kbd>.\n\nSi <kbd>$2show=patrolled</kbd> ou <kbd>$2show=!patrolled</kbd> est positionné, les révisions plus anciennes que <var>[[mw:Manual:$wgRCMaxAge|$wgRCMaxAge]]</var> ($1 {{PLURAL:$1|seconde|secondes}}) ne seront pas affichées.",
        "apihelp-query+usercontribs-param-tag": "Lister uniquement les révisions marquées avec cette balise.",
        "apihelp-query+usercontribs-param-toponly": "Lister uniquement les modifications qui sont la dernière révision.",
        "apihelp-query+usercontribs-example-user": "Afficher les contributions de l'utilisateur <kbd>Exemple</kbd>.",
        "apihelp-query+usercontribs-example-ipprefix": "Afficher les contributions de toutes les adresses IP avec le préfixe <kbd>192.0.2.</kbd>.",
        "apihelp-query+userinfo-description": "Obtenir de l’information sur l’utilisateur courant.",
-       "apihelp-query+userinfo-param-prop": "Quelles informations inclure :\n;blockinfo:Marque si l’utilisateur actuel est bloqué, par qui, et pour quelle raison.\n;hasmsg:Ajoute une balise <samp>messages</samp> si l’utilisateur actuel a des messages en cours.\n;groups:Liste tous les groupes auxquels appartient l’utilisateur actuel.\n;implicitgroups:Liste tous les groupes dont l’utilisateur actuel est automatiquement membre.\n;rights:Liste tous les droits qu’a l’utilisateur actuel.\n;changeablegroups:Liste les groupes pour lesquels l’utilisateur actuel peut ajouter ou supprimer.\n;options:Liste toutes les préférences qu’a défini l’utilisateur actuel.\n;preferencestoken:<span class=\"apihelp-deprecated\">Obsolete.</span> Obtient un jeton pour modifier les préférences de l’utilisateur actuel.\n;editcount:Ajoute le compteur de modifications de l’utilisateur actuel.\n;ratelimits:Liste toutes les limites de débit s’appliquant à l’utilisateur actuel.\n;realname:Ajoute le vrai nom de l’utilisateur actuel.\n;email:Ajoute l’adresse de courriel de l’utilisateur et sa date d’authentification.\n;acceptlang:Renvoie en écho l’entête <code>Accept-Language</code> envoyé par le client dans un format structuré.\n;registrationdate:Ajoute la date d’inscription de l’utilisateur.\n;unreadcount:Ajoute le compteur de pages non lues de la liste de suivi de l’utilisateur (au maximum $1 ; renvoie <samp>$2</samp> s’il y en a plus).",
+       "apihelp-query+userinfo-param-prop": "Quelles informations inclure :",
+       "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Marque si l’utilisateur actuel est bloqué, par qui, et pour quelle raison.",
+       "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Ajoute une balise <samp>messages</samp> si l’utilisateur actuel a des messages en cours.",
+       "apihelp-query+userinfo-paramvalue-prop-groups": "Liste tous les groupes auxquels appartient l’utilisateur actuel.",
+       "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Liste tous les groupes dont l’utilisateur actuel est automatiquement membre.",
+       "apihelp-query+userinfo-paramvalue-prop-rights": "Liste tous les droits qu’a l’utilisateur actuel.",
+       "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Liste les groupes pour lesquels l’utilisateur actuel peut ajouter ou supprimer.",
+       "apihelp-query+userinfo-paramvalue-prop-options": "Liste toutes les préférences qu’a défini l’utilisateur actuel.",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Obsolete.</span> Obtient un jeton pour modifier les préférences de l’utilisateur actuel.",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "Ajoute le compteur de modifications de l’utilisateur actuel.",
+       "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Liste toutes les limites de débit s’appliquant à l’utilisateur actuel.",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "Ajoute le vrai nom de l’utilisateur actuel.",
+       "apihelp-query+userinfo-paramvalue-prop-email": "Ajoute l’adresse de courriel de l’utilisateur et sa date d’authentification.",
+       "apihelp-query+userinfo-paramvalue-prop-acceptlang": "Renvoie en écho l’entête <code>Accept-Language</code> envoyé par le client dans un format structuré.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Ajoute la date d’inscription de l’utilisateur.",
+       "apihelp-query+userinfo-paramvalue-prop-unreadcount": "Ajoute le compteur de pages non lues de la liste de suivi de l’utilisateur (au maximum $1 ; renvoie <samp>$2</samp> s’il y en a plus).",
        "apihelp-query+userinfo-example-simple": "Obtenir de l’information sur l’utilisateur actuel",
        "apihelp-query+userinfo-example-data": "Obtenir des informations supplémentaires sur l’utilisateur actuel",
        "apihelp-query+users-description": "Obtenir des information sur une liste d’utilisateurs",
-       "apihelp-query+users-param-prop": "Quelles informations inclure :\n;blockinfo:Marque si l’utilisateur est bloqué, par qui, et pour quelle raison.\n;groups:Liste tous les groupes auquel appartient chaque utilisateur.\n;implicitgroups:Liste tous les groupes dont un utilisateur est automatiquement membre.\n;rights:Liste tous les droits qu’a un utilisateur.\n;editcount:Ajoute le compteur de modifications de l’utilisateur.\n;registration:Ajoute l’horodatage d’inscription de l’utilisateur.\n;emailable:Marque si l’utilisateur peut et veut recevoir des courriels via [[Special:Emailuser]].\n;gender:Marque le sexe de l’utilisateur. Renvoie « male », « female », ou « unknown ».",
+       "apihelp-query+users-param-prop": "Quelles informations inclure :",
+       "apihelp-query+users-paramvalue-prop-blockinfo": "Marque si l’utilisateur est bloqué, par qui, et pour quelle raison.",
+       "apihelp-query+users-paramvalue-prop-groups": "Liste tous les groupes auquel appartient chaque utilisateur.",
+       "apihelp-query+users-paramvalue-prop-implicitgroups": "Liste tous les groupes dont un utilisateur est automatiquement membre.",
+       "apihelp-query+users-paramvalue-prop-rights": "Liste tous les droits qu’a un utilisateur.",
+       "apihelp-query+users-paramvalue-prop-editcount": "Ajoute le compteur de modifications de l’utilisateur.",
+       "apihelp-query+users-paramvalue-prop-registration": "Ajoute l’horodatage d’inscription de l’utilisateur.",
+       "apihelp-query+users-paramvalue-prop-emailable": "Marque si l’utilisateur peut et veut recevoir des courriels via [[Special:Emailuser]].",
+       "apihelp-query+users-paramvalue-prop-gender": "Marque le sexe de l’utilisateur. Renvoie « male », « female », ou « unknown ».",
        "apihelp-query+users-param-users": "Une liste des utilisateurs sur lesquels obtenir de l’information.",
        "apihelp-query+users-param-token": "Utiliser plutôt <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-query+users-example-simple": "Renvoyer des informations pour l'utilisateur <kbd>Exemple</kbd>.",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Ajoute l’horodatage de la dernière notification de la modification à l’utilisateur.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "Ajoute l’information de trace le cas échéant.",
        "apihelp-query+watchlist-param-show": "Afficher uniquement les éléments qui correspondent à ces critères. Par exemple, pour voir uniquement les modifications mineures faites par des utilisateurs connectés, mettre $1show=minor|!anon.",
-       "apihelp-query+watchlist-param-type": "Quels types de modification afficher :\n;edit:Modifications ordinaires de page.\n;external:Modifications externes.\n;new:Créations de page.\n;log:Entrées du journal.\n;categorize:changements dans la catégorie d'appartenance.",
+       "apihelp-query+watchlist-param-type": "Quels types de modification afficher :\n;edit:Modifications ordinaires de page.\n;external:Modifications externes.\n;new:Créations de page.\n;log:Entrées du journal.",
        "apihelp-query+watchlist-param-owner": "Utilisé avec $1token pour accéder à la liste de suivi d’un autre utilisateur.",
        "apihelp-query+watchlist-param-token": "Un jeton de sécurité (disponible dans les [[Special:Preferences#mw-prefsection-watchlist|préférences]] de l’utilsiateur) pour autoriser l’accès à la liste de suivi d&un autre utilisateur.",
        "apihelp-query+watchlist-example-simple": "Lister la révision de tête des pages récemment modifiées dans la liste de suivi de l’utilisateur actuel",
        "apihelp-query+watchlistraw-description": "Obtenir toutes les pages de la liste de suivi de l’utilisateur actuel.",
        "apihelp-query+watchlistraw-param-namespace": "Lister uniquement les pages dans les espaces de nom fournis.",
        "apihelp-query+watchlistraw-param-limit": "Combien de résultats renvoyer au total par requête.",
-       "apihelp-query+watchlistraw-param-prop": "Quelles propriétés supplémentaires obtenir :\n;changed:Ajoute l’horodatage de la dernière notification de l’utilisateur à propos de la modification.",
+       "apihelp-query+watchlistraw-param-prop": "Quelles propriétés supplémentaires obtenir :",
+       "apihelp-query+watchlistraw-paramvalue-prop-changed": "Ajoute l’horodatage de la dernière notification de l’utilisateur à propos de la modification.",
        "apihelp-query+watchlistraw-param-show": "Lister uniquement les éléments correspondant à ces critères.",
        "apihelp-query+watchlistraw-param-owner": "Utilisé avec $1token pour accéder à la liste de suivi d’un autre utilisateur.",
        "apihelp-query+watchlistraw-param-token": "Un jeton de sécurité (disponible dans les [[Special:Preferences#mw-prefsection-watchlist|préférences]] de l’utilisateur) pour permettre l’accès à la liste de suivi d’un autre utilisateur.",
index 43c71e2..fc0b267 100644 (file)
@@ -7,7 +7,9 @@
                        "VaiPolaSombra",
                        "Banjo",
                        "Fisterraeomar",
-                       "Toliño"
+                       "Toliño",
+                       "Umherirrender",
+                       "Amire80"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentación]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de discusión]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anuncios da API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Erros e solicitudes]\n</div>\n<strong>Estado:</strong> Tódalas funcionalidades mostradas nesta páxina deberían estar funcionanado, pero a API aínda está desenrolo, e pode ser modificada en calquera momento. Apúntese na [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ lista de discusión mediawiki-api-announce] para estar informado acerca das actualizacións.\n\n<strong>Solicitudes incorrectas:</strong> Cando se envían solicitudes incorrectas á API, envíase unha cabeceira HTTP coa chave \"MediaWiki-API-Error\" e, a seguir, tanto o valor da cabeceira como o código de erro retornado serán definidos co mesmo valor. Para máis información, consulte [[mw:API:Errors_and_warnings|API: Erros e avisos]].",
        "apihelp-parse-paramvalue-prop-iwlinks": "Devolve as ligazóns interwiki do texto wiki analizado.",
        "apihelp-parse-paramvalue-prop-wikitext": "Devolve o texto wiki orixinal que foi analizado.",
        "apihelp-parse-paramvalue-prop-properties": "Obter varias propiedades definidas no texto wiki analizado.",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "Devolve o informe de límite de forma estruturada. Non devolve datos cando <var>$1disablepp</var> está fixado.",
-       "apihelp-parse-paramvalue-prop-limitreporthtml": "Devolve a versión HTML do informe de límite. Non devolve datos cando <var>$1disablepp</var> está fixado.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Devolve o informe de límite de forma estruturada. Non devolve datos cando <var>$1disablelimitreport</var> está fixado.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "Devolve a versión HTML do informe de límite. Non devolve datos cando <var>$1disablelimitreport</var> está fixado.",
        "apihelp-parse-paramvalue-prop-parsetree": "Árbores de análise XML do contido da revisión (precisa o modelo de contido <code>$1</code>)",
        "apihelp-parse-param-pst": "Fai unha transformación antes de gardar a entrada antes de analizala. Válida unicamente para usar con texto.",
        "apihelp-parse-param-onlypst": "Facer unha transformación antes de gardar (PST) a entrada, pero sen analizala. Devolve o mesmo wikitexto, despois de que a PST foi aplicada. Só válida cando se usa con <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Inclúe ligazóns de idioma proporcionadas polas extensións (para usar con <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-section": "Recuperar unicamente o contido deste número de sección ou cando <kbd>new</kbd> xera unha nova sección.\n\nA sección <kbd>new</kbd> só é atendida cando se especifica <var>text</var>.",
        "apihelp-parse-param-sectiontitle": "Novo título de sección cando <var>section</var> é <kbd>new</kbd>.\n\nA diferenza da edición de páxinas, non se oculta no <var>summary</var> cando se omite ou está baleiro.",
-       "apihelp-parse-param-disablepp": "Omitir o informe de preprocesador (\"Informe de límite NewPP\") da saída do analizador.",
+       "apihelp-parse-param-disablelimitreport": "Omitir o informe de preprocesador (\"Informe de límite NewPP\") da saída do analizador.",
        "apihelp-parse-param-disableeditsection": "Omitir as ligazóns de edición de sección da saída do analizador.",
        "apihelp-parse-param-generatexml": "Xenerar unha árbore de análise XML (necesita o modelo de contido <code>$1</code>; substituído por <kbd>$2prop=parsetree</kbd>).",
        "apihelp-parse-param-preview": "Analizar en modo vista previa.",
        "apihelp-query+allcategories-param-min": "Devolver só categorías con polo menos este número de membros.",
        "apihelp-query+allcategories-param-max": "Devolver só categorías con como moito este número de membros.",
        "apihelp-query+allcategories-param-limit": "Cantas categorías devolver.",
-       "apihelp-query+allcategories-param-prop": "Que propiedades recuperar:\n;size: Engade o número de páxinas na categoría.\n;hidden: Marca as categorías que están ocultas con _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+allcategories-param-prop": "Que propiedades recuperar:",
+       "apihelp-query+allcategories-paramvalue-prop-size": "Engade o número de páxinas na categoría.",
+       "apihelp-query+allcategories-paramvalue-prop-hidden": "Marca as categorías que están ocultas con <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+allcategories-example-size": "Listar categorías con información do número de páxinas en cada unha.",
        "apihelp-query+allcategories-example-generator": "Obter información sobre a páxina de categoría para categorías que comezan por <kbd>List</kbd>.",
        "apihelp-query+alldeletedrevisions-description": "Listar todas as revisións borradas por un usuario ou nun espazo de nomes.",
        "apihelp-query+allfileusages-param-to": "Título do ficheiro no que rematar de enumerar.",
        "apihelp-query+allfileusages-param-prefix": "Buscar tódolos títulos de ficheiro que comezan con este valor.",
        "apihelp-query+allfileusages-param-unique": "Mostrar só nomes de ficheiro distintos. Non pode usarse con $1prop=ids.\nCando se usa como xenerador, produce páxinas obxectivo no canto de páxinas fonte.",
-       "apihelp-query+allfileusages-param-prop": "Que partes de información incluír:\n;ids:Engade os IDs das páxinas usadas (non pode usarse con $1unique).\n;title:Engade o nome do ficheiro.",
+       "apihelp-query+allfileusages-param-prop": "Que partes de información incluír:",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "Engade os IDs das páxinas usadas (non pode usarse con $1unique).",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "Engade o nome do ficheiro.",
        "apihelp-query+allfileusages-param-limit": "Número total de obxectos a devolver.",
        "apihelp-query+allfileusages-param-dir": "Dirección na cal listar.",
        "apihelp-query+allfileusages-example-B": "Lista títulos de ficheiro, incluíndo os   eliminados, cos IDs de páxina dos que proveñen, comezando en <kbd>B</kbd>.",
        "apihelp-query+alllinks-param-to": "Título da ligazón na que rematar de enumerar.",
        "apihelp-query+alllinks-param-prefix": "Buscar tódolos títulos ligados que comezan con este valor.",
        "apihelp-query+alllinks-param-unique": "Mostrar só títulos ligados distintos. Non pode usarse con <kbd>$1prop=ids</kbd>.\nCando se usa como xenerador, produce páxinas obxectivo no canto de páxinas fonte.",
-       "apihelp-query+alllinks-param-prop": "Que partes de información incluír:\n;ids: Engade o ID da páxina da ligazón (non pode usarse con <var>$1unique</var>).\n;título: Engade o título da ligazón.",
+       "apihelp-query+alllinks-param-prop": "Que partes de información incluír:",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "Engade o ID da páxina da ligazón (non pode usarse con <var>$1unique</var>).",
+       "apihelp-query+alllinks-paramvalue-prop-title": "Engade o título da ligazón.",
        "apihelp-query+alllinks-param-namespace": "Espazo de nomes a enumerar.",
        "apihelp-query+alllinks-param-limit": "Número total de obxectos a devolver.",
        "apihelp-query+alllinks-param-dir": "Dirección na cal listar.",
        "apihelp-query+allredirects-param-to": "Título da redirección na que rematar de enumerar.",
        "apihelp-query+allredirects-param-prefix": "Buscar todas as páxinas que comecen con este valor.",
        "apihelp-query+allredirects-param-unique": "Só mostrar páxinas obxectivo distintas. Non pode usarse con $1prop=ids|fragment|interwiki.\nCando se usa como xenerador, produce páxinas obxectivo no canto de páxinas fonte.",
-       "apihelp-query+allredirects-param-prop": "Que información incluír:\n;ids:Engade o ID da páxina da redirección (non pode usarse con <var>$1unique</var>).\n;title:Engade o título da redirección.\n;fragment:Engade o fragmento da redirección, se o hai (non pode usarse con <var>$1unique</var>).\n;interwiki:Engade o prefixo interwiki da redirección, se o hai (non pode usarse con <var>$1unique</var>).",
+       "apihelp-query+allredirects-param-prop": "Que información incluír:",
+       "apihelp-query+allredirects-paramvalue-prop-ids": "Engade o ID da páxina da redirección (non pode usarse con <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-title": "Engade o título da redirección.",
+       "apihelp-query+allredirects-paramvalue-prop-fragment": "Engade o fragmento da redirección, se o hai (non pode usarse con <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-interwiki": "Engade o prefixo interwiki da redirección, se o hai (non pode usarse con <var>$1unique</var>).",
        "apihelp-query+allredirects-param-namespace": "Espazo de nomes a enumerar.",
        "apihelp-query+allredirects-param-limit": "Número total de obxectos a devolver.",
        "apihelp-query+allredirects-param-dir": "Dirección na cal listar.",
        "apihelp-query+alltransclusions-param-to": "Título da transclusión na que rematar de enumerar.",
        "apihelp-query+alltransclusions-param-prefix": "Buscar todos os títulos transcluídos que comezan con este valor.",
        "apihelp-query+alltransclusions-param-unique": "Mostrar só títulos transcluídos distintos. Non pode usarse con <kbd>$1prop=ids</kbd>.\nCando se usa como xenerador, produce páxinas obxectivo no canto de páxinas fonte.",
-       "apihelp-query+alltransclusions-param-prop": "Que partes de información incluír:\n;ids: Engade o ID da páxina da páxina transcluída (non pode usarse con $1unique).\n;title: Engade o título da transclusión.",
+       "apihelp-query+alltransclusions-param-prop": "Que partes de información incluír:",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "Engade o ID da páxina da páxina transcluída (non pode usarse con $1unique).",
+       "apihelp-query+alltransclusions-paramvalue-prop-title": "Engade o título da transclusión.",
        "apihelp-query+alltransclusions-param-namespace": "Nome de espazos a numerar.",
        "apihelp-query+alltransclusions-param-limit": "Número total de obxectos a devolver.",
        "apihelp-query+alltransclusions-param-dir": "Dirección na cal listar.",
        "apihelp-query+allusers-param-group": "Só incluír os usuarios nos grupos dados.",
        "apihelp-query+allusers-param-excludegroup": "Excluír usuarios nos grupos dados.",
        "apihelp-query+allusers-param-rights": "Incluír só ós usuarios cos dereitos dados. Non se inclúen grupo implícitos nin autopromocionados como *, usuario ou autoconfirmado.",
-       "apihelp-query+allusers-param-prop": "Que información incluír:\n;blockinfo:Engade información sobre o bloque actual do usuario.\n;groups:Lista de grupos nos que está o usuario. Isto usa máis recursos no servidor e pode devolver menos resultados que o límite.\n;implicitgroups:Lista todos os grupos ós que usuario pertence de forma automática.\n;rights:Lista os dereitos que ten o usuario.\n;editcount:Engade o número de edicións do usuario.\n;registration:Engade o selo de tempo do momento no que se rexistrou o usuario, se está dispoñible (pode ser branco).",
+       "apihelp-query+allusers-param-prop": "Que información incluír:",
+       "apihelp-query+allusers-paramvalue-prop-blockinfo": "Engade información sobre o bloque actual do usuario.",
+       "apihelp-query+allusers-paramvalue-prop-groups": "Lista de grupos nos que está o usuario. Isto usa máis recursos no servidor e pode devolver menos resultados que o límite.",
+       "apihelp-query+allusers-paramvalue-prop-implicitgroups": "Lista todos os grupos ós que usuario pertence de forma automática.",
+       "apihelp-query+allusers-paramvalue-prop-rights": "Lista os dereitos que ten o usuario.",
+       "apihelp-query+allusers-paramvalue-prop-editcount": "Engade o número de edicións do usuario.",
+       "apihelp-query+allusers-paramvalue-prop-registration": "Engade o selo de tempo do momento no que se rexistrou o usuario, se está dispoñible (pode ser branco).",
        "apihelp-query+allusers-param-limit": "Número total de nomes de usuario a devolver.",
        "apihelp-query+allusers-param-witheditsonly": "Só listar usuarios que teñan feito edicións.",
        "apihelp-query+allusers-param-activeusers": "Só listar usuarios activos {{PLURAL:$1|no último día|nos $1 últimos días}}.",
        "apihelp-query+blocks-param-users": "Lista de usuarios a buscar (opcional).",
        "apihelp-query+blocks-param-ip": "Obter todos os bloques aplicables a esta IPs ou a este rango CIDR, incluíndo bloques de rangos.\nNon pode usarse xunto con <var>$3users</var>. Os rangos CIDR maiores que IPv4/$1 ou IPv6/$2 non se aceptan.",
        "apihelp-query+blocks-param-limit": "Número máximo de bloques a listar.",
-       "apihelp-query+blocks-param-prop": "Que propiedades obter:\n;id:Engade o identificador do bloqueo.\n;user:Engade o nome de usario do usuario bloqueado.\n;userid:Engade o identificador de usuario do usuario bloqueado.\n;by:Engade o nome de usuario do usuario que fixo o bloqueo.\n;byid:Engade o identificador do usuario que fixo o bloqueo.\n;timestamp:Engade o selo de tempo de cando se realizou o bloqueo.\n;expiry:Engade o selo de tempo de cando remata o bloqueo.\n;reason:Engade a razón dada para o bloqueo.\n;range:Engade o rango de direccións IP afectadas polo bloqueo.\n;flags:Etiqueta o bloqueo con (autoblock, anononly, etc.).",
+       "apihelp-query+blocks-param-prop": "Que propiedades obter:",
+       "apihelp-query+blocks-paramvalue-prop-id": "Engade o identificador do bloqueo.",
+       "apihelp-query+blocks-paramvalue-prop-user": "Engade o nome de usario do usuario bloqueado.",
+       "apihelp-query+blocks-paramvalue-prop-userid": "Engade o identificador de usuario do usuario bloqueado.",
+       "apihelp-query+blocks-paramvalue-prop-by": "Engade o nome de usuario do usuario que fixo o bloqueo.",
+       "apihelp-query+blocks-paramvalue-prop-byid": "Engade o identificador do usuario que fixo o bloqueo.",
+       "apihelp-query+blocks-paramvalue-prop-timestamp": "Engade o selo de tempo de cando se realizou o bloqueo.",
+       "apihelp-query+blocks-paramvalue-prop-expiry": "Engade o selo de tempo de cando remata o bloqueo.",
+       "apihelp-query+blocks-paramvalue-prop-reason": "Engade a razón dada para o bloqueo.",
+       "apihelp-query+blocks-paramvalue-prop-range": "Engade o rango de direccións IP afectadas polo bloqueo.",
+       "apihelp-query+blocks-paramvalue-prop-flags": "Etiqueta o bloqueo con (autoblock, anononly, etc.).",
        "apihelp-query+blocks-param-show": "Só mostrar elementos correspondentes a eses criterios.\nPor exemplo, para ver só bloques indefinidos en direccións IP, ponga <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "Listar bloques.",
        "apihelp-query+blocks-example-users": "Lista de bloques de usuarios <kbd>Alice</kbd> e <kbd>Bob</kbd>.",
        "apihelp-query+categories-description": "Listar todas as categorías ás que pertencen as páxinas.",
-       "apihelp-query+categories-param-prop": "Que propiedades adicionais obter para cada categoría:\n;sortkey:Engade a clave de ordenación (cadea hexadecimal) e o prefixo da clave de ordenación (parte lexible) da categoría.\n;timestamp:Engade o selo de tempo de cando se engadíu a categoría.\n;hidden:Pon unha marca nas categorías que están ocultas con _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+categories-param-prop": "Que propiedades adicionais obter para cada categoría:",
+       "apihelp-query+categories-paramvalue-prop-sortkey": "Engade a clave de ordenación (cadea hexadecimal) e o prefixo da clave de ordenación (parte lexible) da categoría.",
+       "apihelp-query+categories-paramvalue-prop-timestamp": "Engade o selo de tempo de cando se engadíu a categoría.",
+       "apihelp-query+categories-paramvalue-prop-hidden": "Pon unha marca nas categorías que están ocultas con <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+categories-param-show": "Tipo de categorías a amosar.",
        "apihelp-query+categories-param-limit": "Cantas categorías devolver.",
        "apihelp-query+categories-param-categories": "Listar só esas categorías. Útil para verificar se unha páxina concreta está nunha categoría determinada.",
        "apihelp-query+categorymembers-description": "Listar tódalas páxinas nunha categoría determinada.",
        "apihelp-query+categorymembers-param-title": "Que categoría enumerar (obrigatorio). Debe incluír o prefixo <kbd>{{ns:category}}:</kbd>. Non pode usarse xunto con <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "ID de páxina da categoría a enumerar. Non se pode usar xunto con <var>$1title</var>.",
-       "apihelp-query+categorymembers-param-prop": "Que información incluír:\n;ids:Engade o ID da páxina.\n;title:Engade o título e o ID do espazo de nomes da páxina.\n;sortkey:Engade a clave de ordenación usada para ordenala na categoría (cadea hexadecimal).\n;sortkeyprefix:Engade o prefixo da clave de ordenación usado para ordenala na categoría (parte lexible da clave de ordenación).\n;type:Engade o tipo no que foi categorizado a páxina (páxina, subcategoría ou ficheiro)\n;timestamp:Engade o selo de tempo no que foi incluída a páxina.",
+       "apihelp-query+categorymembers-param-prop": "Que información incluír:",
+       "apihelp-query+categorymembers-paramvalue-prop-ids": "Engade o ID da páxina.",
+       "apihelp-query+categorymembers-paramvalue-prop-title": "Engade o título e o ID do espazo de nomes da páxina.",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkey": "Engade a clave de ordenación usada para ordenala na categoría (cadea hexadecimal).",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "Engade o prefixo da clave de ordenación usado para ordenala na categoría (parte lexible da clave de ordenación).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Engade o tipo no que foi categorizado a páxina (páxina, subcategoría ou ficheiro)",
+       "apihelp-query+categorymembers-paramvalue-prop-timestamp": "Engade o selo de tempo no que foi incluída a páxina.",
        "apihelp-query+categorymembers-param-namespace": "Só incluír páxinas nestes espazos de nomes. Decátese de que poden usarse  <kbd>$1type=subcat</kbd> ou <kbd>$1type=file</kbd> no canto de <kbd>$1namespace=14</kbd> ou <kbd>6</kbd>.",
        "apihelp-query+categorymembers-param-type": "Que tipo de membros da categoría incluír. Ignorado cando está activo <kbd>$1sort=timestamp</kbd>.",
        "apihelp-query+categorymembers-param-limit": "Máximo número de páxinas a retornar.",
        "apihelp-query+extlinks-param-expandurl": "Expandir as URLs relativas a un protocolo co protocolo canónico.",
        "apihelp-query+extlinks-example-simple": "Obter unha de ligazóns externas á <kbd>Páxina Principal<kbd>.",
        "apihelp-query+exturlusage-description": "Enumerar páxinas que conteñen unha dirección URL dada.",
-       "apihelp-query+exturlusage-param-prop": "Que información incluír:\n;ids:Engade o ID da páxina.\n;title:Engade o título e o ID do espazo de nomes da páxina.\n;url:Engade a URL usada na páxina.",
+       "apihelp-query+exturlusage-param-prop": "Que información incluír:",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "Engade o ID da páxina.",
+       "apihelp-query+exturlusage-paramvalue-prop-title": "Engade o título e o ID do espazo de nomes da páxina.",
+       "apihelp-query+exturlusage-paramvalue-prop-url": "Engade a URL usada na páxina.",
        "apihelp-query+exturlusage-param-protocol": "Protocolo da URL. Se está baleiro e está activo <var>$1query</var>, o protocolo é <kbd>http</kbd>. Deixar esa variable e a <var>$1query</var> baleiras para listar todas as ligazóns externas.",
        "apihelp-query+exturlusage-param-query": "Buscar unha cadea sen protocolo. Ver [[Special:LinkSearch]]. Deixar baleira para listar todas as ligazóns externas.",
        "apihelp-query+exturlusage-param-namespace": "Espazo de nomes a enumerar.",
        "apihelp-query+filearchive-param-dir": "Dirección na cal listar.",
        "apihelp-query+filearchive-param-sha1": "Función hash SHA1 da imaxe. Invalida $1sha1base36.",
        "apihelp-query+filearchive-param-sha1base36": "Función hash SHA1 da imaxe en base 36 (usado en MediaWiki).",
-       "apihelp-query+filearchive-param-prop": "Que información de imaxe devolver:\n;sha1:Engade a función hash SHA-1 da imaxe.\n;timestamp:Engade o selo de tempo da versión subida.\n;user:Engade o usuario que subiu a versión da imaxe.\n;size:Engade o tamaño da imaxe en bytes e a altura, anchura e contador de páxina (se é aplicable).\n;dimensions:Alias para o tamaño.\n;description:Engade a descrición da versión da imaxe.\n;parseddescription:Analiza a descrición na versión.\n;mime:Engade o tipo MIME da imaxe.\n;mediatype:Engade o tipo multimedia da imaxe.\n;metadata:Lista os metadatos Exif da versión da imaxe.\n;bitdepth:Engade a profundidade de bit da versión.\n;archivename:Engade o nome do ficheiro da versión do ficheiro para as versións que non son a última.",
+       "apihelp-query+filearchive-param-prop": "Que información de imaxe devolver:",
+       "apihelp-query+filearchive-paramvalue-prop-sha1": "Engade a función hash SHA-1 da imaxe.",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "Engade o selo de tempo da versión subida.",
+       "apihelp-query+filearchive-paramvalue-prop-user": "Engade o usuario que subiu a versión da imaxe.",
+       "apihelp-query+filearchive-paramvalue-prop-size": "Engade o tamaño da imaxe en bytes e a altura, anchura e contador de páxina (se é aplicable).",
+       "apihelp-query+filearchive-paramvalue-prop-dimensions": "Alias para o tamaño.",
+       "apihelp-query+filearchive-paramvalue-prop-description": "Engade a descrición da versión da imaxe.",
+       "apihelp-query+filearchive-paramvalue-prop-parseddescription": "Analiza a descrición na versión.",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "Engade o tipo MIME da imaxe.",
+       "apihelp-query+filearchive-paramvalue-prop-mediatype": "Engade o tipo multimedia da imaxe.",
+       "apihelp-query+filearchive-paramvalue-prop-metadata": "Lista os metadatos Exif da versión da imaxe.",
+       "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Engade a profundidade de bit da versión.",
+       "apihelp-query+filearchive-paramvalue-prop-archivename": "Engade o nome do ficheiro da versión do ficheiro para as versións que non son a última.",
        "apihelp-query+filearchive-example-simple": "Mostrar unha lista de tódolos fichieiros eliminados.",
        "apihelp-query+filerepoinfo-description": "Devolver a meta información sobre os repositorios de imaxes configurados na wiki.",
        "apihelp-query+filerepoinfo-param-prop": "Que propiedades do repositorio mostrar (pode haber máis dispoñible nalgunhas wikis):\n;apiurl:URL ó API do repositorio - útil para obter información das imaxes no host.\n;name:A clave do repositorio - usada p. ex. nas variables de retorno de <var>[[mw:Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> e [[Special:ApiHelp/query+imageinfo|imageinfo]]\n;displayname:O nome lexible do wiki repositorio.\n;rooturl:URL raíz dos camiños de imaxe.\n;local:Se o repositorio é o repositorio local ou non.",
        "apihelp-query+filerepoinfo-example-simple": "Obter infomación sobre os repositorios de ficheiros",
        "apihelp-query+fileusage-description": "Atopar tódalas páxinas que usan os ficheiros dados.",
-       "apihelp-query+fileusage-param-prop": "Que propiedades obter:\n;pageid:ID de cada páxina.\n;título:Título de cada páxina.\n;redirect:Marca de se a páxina é unha redirección.",
+       "apihelp-query+fileusage-param-prop": "Que propiedades obter:",
+       "apihelp-query+fileusage-paramvalue-prop-pageid": "ID de cada páxina.",
+       "apihelp-query+fileusage-paramvalue-prop-title": "Título de cada páxina.",
+       "apihelp-query+fileusage-paramvalue-prop-redirect": "Marca de se a páxina é unha redirección.",
        "apihelp-query+fileusage-param-namespace": "Só incluír páxinas nestes espazos de nomes.",
        "apihelp-query+fileusage-param-limit": "Cantos mostrar.",
        "apihelp-query+fileusage-param-show": "Mostrar só elementos que cumpren estes criterios:\n;redirect:Só mostra redireccións.\n;!redirect:Só mostra as que non son redireccións.",
        "apihelp-query+iwbacklinks-param-prefix": "Prefixo para a interwiki.",
        "apihelp-query+iwbacklinks-param-title": "Ligazón interwiki a buscar. Debe usarse con <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "Número total de páxinas a devolver.",
-       "apihelp-query+iwbacklinks-param-prop": "Que propiedades obter:\n;iwprefix:Engade o prefixo da interwiki.\n;iwtitle:Engade o título da interwiki.",
+       "apihelp-query+iwbacklinks-param-prop": "Que propiedades obter:",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Engade o prefixo da interwiki.",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Engade o título da interwiki.",
        "apihelp-query+iwbacklinks-param-dir": "Dirección na cal listar.",
        "apihelp-query+iwbacklinks-example-simple": "Obter as páxinas ligadas a [[wikibooks:Test]]",
        "apihelp-query+iwbacklinks-example-generator": "Obter información sobre as páxinas que ligan a [[wikibooks:Test]].",
        "apihelp-query+iwlinks-description": "Devolve todas as ligazóns interwiki ás páxinas indicadas.",
        "apihelp-query+iwlinks-param-url": "Se obter a URL completa (non pode usarse con $1prop).",
-       "apihelp-query+iwlinks-param-prop": "Que propiedades adicionais obter para cada ligazón interwiki:\n;url:Engade a URL completa.",
+       "apihelp-query+iwlinks-param-prop": "Que propiedades adicionais obter para cada ligazón interwiki:",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "Engade a URL completa.",
        "apihelp-query+iwlinks-param-limit": "Cantas ligazóns interwiki devolver.",
        "apihelp-query+iwlinks-param-prefix": "Só devolver ligazóns interwiki con este prefixo.",
        "apihelp-query+iwlinks-param-title": "Ligazón interwiki a buscar. Debe usarse con <var>$1prefix</var>.",
        "apihelp-query+langbacklinks-param-lang": "Lingua para a ligazón de lingua.",
        "apihelp-query+langbacklinks-param-title": "Ligazón de lingua a buscar. Debe usarse con $1lang.",
        "apihelp-query+langbacklinks-param-limit": "Número total de páxinas a devolver.",
-       "apihelp-query+langbacklinks-param-prop": "Que propiedades obter:\n;lllang:Engade o código de lingua á ligazón de páxina.\n;lltitle:Engade o título da ligazón de lingua.",
+       "apihelp-query+langbacklinks-param-prop": "Que propiedades obter:",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "Engade o código de lingua á ligazón de páxina.",
+       "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "Engade o título da ligazón de lingua.",
        "apihelp-query+langbacklinks-param-dir": "Dirección na cal listar.",
        "apihelp-query+langbacklinks-example-simple": "Obter as páxinas ligadas a [[:fr:Test]].",
        "apihelp-query+langbacklinks-example-generator": "Obter información sobre as páxinas que ligan a [[:fr:Test]].",
        "apihelp-query+langlinks-description": "Devolve todas as ligazóns interwiki ás páxinas indicadas.",
        "apihelp-query+langlinks-param-limit": "Cantas ligazóns de lingua devolver.",
        "apihelp-query+langlinks-param-url": "Se obter a URL completa (non pode usarse con <var>$1prop</var>).",
-       "apihelp-query+langlinks-param-prop": "Que propiedades adicionais obter para cada ligazón interlingüística:\n;url:Engade a URL completa.\n;langname:Engade o nome localizado da lingua (o mellor intento). Use <var>$1inlanguagecode</var> para controlar a lingua.\n;autonym:Engade o nome nativo da lingua.",
+       "apihelp-query+langlinks-param-prop": "Que propiedades adicionais obter para cada ligazón interlingüística:",
+       "apihelp-query+langlinks-paramvalue-prop-url": "Engade a URL completa.",
+       "apihelp-query+langlinks-paramvalue-prop-langname": "Engade o nome localizado da lingua (o mellor intento). Use <var>$1inlanguagecode</var> para controlar a lingua.",
+       "apihelp-query+langlinks-paramvalue-prop-autonym": "Engade o nome nativo da lingua.",
        "apihelp-query+langlinks-param-lang": "Devolver só ligazóns de lingua con este código de lingua.",
        "apihelp-query+langlinks-param-title": "Ligazón a buscar. Debe usarse con <var>$1lang</var>.",
        "apihelp-query+langlinks-param-dir": "Dirección na cal listar.",
        "apihelp-query+links-example-generator": "Obter información sobre as ligazóns de páxina da <kbd>Main Page</kbd>.",
        "apihelp-query+links-example-namespaces": "Obter as ligazóns á páxina <kbd>Main Page</kbd> nos espazos de nome {{ns:user}} e {{ns:template}}.",
        "apihelp-query+linkshere-description": "Atopar todas as páxinas que ligan coas páxinas dadas.",
-       "apihelp-query+linkshere-param-prop": "Que propiedades obter:\n;pageid:ID de cada páxina.\n;título:Título de cada páxina.\n;redirect:Marca de se a páxina é unha redirección.",
+       "apihelp-query+linkshere-param-prop": "Que propiedades obter:",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "ID de cada páxina.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "Título de cada páxina.",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "Marca de se a páxina é unha redirección.",
        "apihelp-query+linkshere-param-namespace": "Só incluír páxinas nestes espazos de nomes.",
        "apihelp-query+linkshere-param-limit": "Cantos mostrar.",
        "apihelp-query+linkshere-param-show": "Mostrar só elementos que cumpren estes criterios:\n;redirect:Só mostra redireccións.\n;!redirect:Só mostra as que non son redireccións.",
        "apihelp-query+linkshere-example-simple": "Obter unha lista que ligan á [[Main Page]]",
        "apihelp-query+linkshere-example-generator": "Obter a información das páxinas que ligan á [[Main Page]].",
        "apihelp-query+logevents-description": "Obter os eventos dos rexistros.",
-       "apihelp-query+logevents-param-prop": "Que propiedades obter:\n;ids:Engade o identificador do evento.\n;title:Engade o título da páxina para o evento.\n;type:Engade o tipo de evento.\n;user:Engade o usuario responsable do evento.\n;userid:Engade o identificador do usuario responsable do evento.\n;timestamp:Engade o selo de tempo do evento.\n;comment:Engade o comentario do evento.\n;parsedcomment:Engade o comentario analizado do evento.\n;details:Lista detalles adicionais do evento.\n;tags:Lista as etiquetas do evento.",
+       "apihelp-query+logevents-param-prop": "Que propiedades obter:",
+       "apihelp-query+logevents-paramvalue-prop-ids": "Engade o identificador do evento.",
+       "apihelp-query+logevents-paramvalue-prop-title": "Engade o título da páxina para o evento.",
+       "apihelp-query+logevents-paramvalue-prop-type": "Engade o tipo de evento.",
+       "apihelp-query+logevents-paramvalue-prop-user": "Engade o usuario responsable do evento.",
+       "apihelp-query+logevents-paramvalue-prop-userid": "Engade o identificador do usuario responsable do evento.",
+       "apihelp-query+logevents-paramvalue-prop-timestamp": "Engade o selo de tempo do evento.",
+       "apihelp-query+logevents-paramvalue-prop-comment": "Engade o comentario do evento.",
+       "apihelp-query+logevents-paramvalue-prop-parsedcomment": "Engade o comentario analizado do evento.",
+       "apihelp-query+logevents-paramvalue-prop-details": "Lista detalles adicionais do evento.",
+       "apihelp-query+logevents-paramvalue-prop-tags": "Lista as etiquetas do evento.",
        "apihelp-query+logevents-param-type": "Filtrar as entradas do rexistro para mostrar só as deste tipo.",
        "apihelp-query+logevents-param-action": "Filtrar accións no rexistro para mostrar só esta acción. Ignora <var>$1type</var>. Accións comodín como  <kbd>action/*</kbd> permiten especificar calquera cadea para o asterisco.",
        "apihelp-query+logevents-param-start": "Selo de tempo no que comezar a enumeración.",
        "apihelp-query+pageprops-example-simple": "Obter as propiedades para as páxinas <kbd>Main Page</kbd> e <kbd>MediaWiki</kbd>",
        "apihelp-query+pageswithprop-description": "Mostrar a lista de páxinas que empregan unha propiedade determinada.",
        "apihelp-query+pageswithprop-param-propname": "Propiedade de páxina pola que enumerar as páxinas.",
-       "apihelp-query+pageswithprop-param-prop": "Que información incluír:\n;ids:Engade o ID da páxina.\n;title:Engade o título e o ID do espazo de nomes da páxina.\n;value:Engade o valor da propiedade da páxina.",
+       "apihelp-query+pageswithprop-param-prop": "Que información incluír:",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "Engade o ID da páxina.",
+       "apihelp-query+pageswithprop-paramvalue-prop-title": "Engade o título e o ID do espazo de nomes da páxina.",
+       "apihelp-query+pageswithprop-paramvalue-prop-value": "Engade o valor da propiedade da páxina.",
        "apihelp-query+pageswithprop-param-limit": "Máximo número de páxinas a retornar.",
        "apihelp-query+pageswithprop-param-dir": "En que dirección ordenar.",
        "apihelp-query+pageswithprop-example-simple": "Lista as dez primeiras páxinas que usan  <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+protectedtitles-param-limit": "Número total de páxinas a devolver.",
        "apihelp-query+protectedtitles-param-start": "Comezar a listar neste selo de tempo de protección.",
        "apihelp-query+protectedtitles-param-end": "Rematar de listar neste selo de tempo de protección.",
-       "apihelp-query+protectedtitles-param-prop": "Que propiedades obter:\n;timestamp:Engade o selo de tempo de cando se fixo a protección.\n;user:Engade o usuario que fixo a protección.\n;userid:Engade o ID do usuario que fixo a protección.\n;comment:Engade o comentario da protección.\n;parsedcomment:Engade o comentario analizado da protección.\n;expiry:Engade o selo de tempo no que rematará a protección\n;level:Engade o nivel de protección.",
+       "apihelp-query+protectedtitles-param-prop": "Que propiedades obter:",
+       "apihelp-query+protectedtitles-paramvalue-prop-timestamp": "Engade o selo de tempo de cando se fixo a protección.",
+       "apihelp-query+protectedtitles-paramvalue-prop-user": "Engade o usuario que fixo a protección.",
+       "apihelp-query+protectedtitles-paramvalue-prop-userid": "Engade o ID do usuario que fixo a protección.",
+       "apihelp-query+protectedtitles-paramvalue-prop-comment": "Engade o comentario da protección.",
+       "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "Engade o comentario analizado da protección.",
+       "apihelp-query+protectedtitles-paramvalue-prop-expiry": "Engade o selo de tempo no que rematará a protección",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "Engade o nivel de protección.",
        "apihelp-query+protectedtitles-example-simple": "Listar títulos protexidos",
        "apihelp-query+protectedtitles-example-generator": "Atopar ligazóns ós títulos protexidos no espazo de nomes principal",
        "apihelp-query+querypage-description": "Obtén unha lista proporcionada por unha páxina especial basada en QueryPage.",
        "apihelp-query+recentchanges-param-user": "Só listar cambios deste usuario.",
        "apihelp-query+recentchanges-param-excludeuser": "Non listar cambios deste usuario.",
        "apihelp-query+recentchanges-param-tag": "Só listar cambios marcados con esta etiqueta.",
-       "apihelp-query+recentchanges-param-prop": "Inclúe información adicional:\n;user:Engade o usuario responsable da modificación e marca se é unha dirección IP.\n;userid:Engade o identificador do usuario responsable da edición.\n;comment:Engade o comentario da edición.\n;parsedcomment:Engade o comentario analizado da edición.\n;flags:Engade os indicadores da edición.\n;timestamp:Engade o selo de tempo da edición.\n;title:Engade o título da páxina da edición.\n;ids:Engade o identificador da páxina, o identificador dos cambios recentes e o identificador da versión nova e da vella.\n;sizes:Engade a lonxitude nova e vella da páxina en bytes.\n;redirect:Pon unha marca se a páxina é unha redirección.\n;patrolled:Marca as edicións vixiables como vixiadas ou non vixiadas.\n;loginfo:Engade información do rexistro (identificador de rexistro, tipo de rexistro, etc) nas entradas do rexistro.\n;tags:Lista as etiquetas da entrada.\n;sha1:Engade o control de contido para as entradas asociadas a unha revisión.",
+       "apihelp-query+recentchanges-param-prop": "Inclúe información adicional:",
+       "apihelp-query+recentchanges-paramvalue-prop-user": "Engade o usuario responsable da modificación e marca se é unha dirección IP.",
+       "apihelp-query+recentchanges-paramvalue-prop-userid": "Engade o identificador do usuario responsable da edición.",
+       "apihelp-query+recentchanges-paramvalue-prop-comment": "Engade o comentario da edición.",
+       "apihelp-query+recentchanges-paramvalue-prop-parsedcomment": "Engade o comentario analizado da edición.",
+       "apihelp-query+recentchanges-paramvalue-prop-flags": "Engade os indicadores da edición.",
+       "apihelp-query+recentchanges-paramvalue-prop-timestamp": "Engade o selo de tempo da edición.",
+       "apihelp-query+recentchanges-paramvalue-prop-title": "Engade o título da páxina da edición.",
+       "apihelp-query+recentchanges-paramvalue-prop-ids": "Engade o identificador da páxina, o identificador dos cambios recentes e o identificador da versión nova e da vella.",
+       "apihelp-query+recentchanges-paramvalue-prop-sizes": "Engade a lonxitude nova e vella da páxina en bytes.",
+       "apihelp-query+recentchanges-paramvalue-prop-redirect": "Pon unha marca se a páxina é unha redirección.",
+       "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Marca as edicións vixiables como vixiadas ou non vixiadas.",
+       "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Engade información do rexistro (identificador de rexistro, tipo de rexistro, etc) nas entradas do rexistro.",
+       "apihelp-query+recentchanges-paramvalue-prop-tags": "Lista as etiquetas da entrada.",
+       "apihelp-query+recentchanges-paramvalue-prop-sha1": "Engade o control de contido para as entradas asociadas a unha revisión.",
        "apihelp-query+recentchanges-param-token": "Usar <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> no canto diso.",
        "apihelp-query+recentchanges-param-show": "Só mostrar elementos que cumpran esos criterios. Por exemplo, para ver só edicións menores feitas por usuarios conectados, activar $1show=minor|!anon.",
        "apihelp-query+recentchanges-param-limit": "Número total de páxinas a devolver.",
        "apihelp-query+recentchanges-example-simple": "Listar cambios recentes.",
        "apihelp-query+recentchanges-example-generator": "Obter a información de páxina sobre cambios recentes sen vixiancia.",
        "apihelp-query+redirects-description": "Devolve todas as redireccións das páxinas indicadas.",
-       "apihelp-query+redirects-param-prop": "Que propiedades recuperar:\n;pageid:ID de páxina de cada redirección.\n;title:Título de cada redirección.\n;fragment:Fragmento de cada redirección, se hai algún.",
+       "apihelp-query+redirects-param-prop": "Que propiedades recuperar:",
+       "apihelp-query+redirects-paramvalue-prop-pageid": "ID de páxina de cada redirección.",
+       "apihelp-query+redirects-paramvalue-prop-title": "Título de cada redirección.",
+       "apihelp-query+redirects-paramvalue-prop-fragment": "Fragmento de cada redirección, se hai algún.",
        "apihelp-query+redirects-param-namespace": "Só incluir páxinas nestes espacios de nomes.",
        "apihelp-query+redirects-param-limit": "Cantos redireccións devolver.",
        "apihelp-query+redirects-param-show": "Só mostrar elementos que cumpran estos criterios:\n;fragment:Só mostrar redireccións que teñan un fragmento.\n;!fragment:Só mostrar redireccións que non teñan un fragmento.",
        "apihelp-query+search-param-namespace": "Buscar só nestes espazos de nomes.",
        "apihelp-query+search-param-what": "Que tipo de busca lanzar.",
        "apihelp-query+search-param-info": "Que metadatos devolver.",
-       "apihelp-query+search-param-prop": "Que propiedades devolver:\n;size:Engade o tamaño da páxina en bytes.\n;wordcount:Engade o número de palabras da páxina.\n;timestamp:Engade o selo de tempo da última vez que foi editada a páxina.\n;snippet:Engade o fragmento analizado da páxina.\n;titlesnippet:Engade un fragmento analizado do título da páxina.\n;redirectsnippet:Engade un fragmento analizado do título da redirección.\n;redirecttitle:Engade o título da redirección asociada.\n;sectionsnippet:Engade un fragmento analizado do título de sección asociado.\n;sectiontitle:Engade o título da sección asociada.\n;categorysnippet:Engade un fragmento analizado da categoría asociada.\n;isfilematch:Engade unha marca indicando se o resultado da busca é un ficheiro.\n;score:<span class=\"apihelp-deprecated\">Obsoleto e ignorado.</span>\n;hasrelated:<span class=\"apihelp-deprecated\">Obsoleto e ignorado.</span>",
+       "apihelp-query+search-param-prop": "Que propiedades devolver:",
+       "apihelp-query+search-paramvalue-prop-size": "Engade o tamaño da páxina en bytes.",
+       "apihelp-query+search-paramvalue-prop-wordcount": "Engade o número de palabras da páxina.",
+       "apihelp-query+search-paramvalue-prop-timestamp": "Engade o selo de tempo da última vez que foi editada a páxina.",
+       "apihelp-query+search-paramvalue-prop-snippet": "Engade o fragmento analizado da páxina.",
+       "apihelp-query+search-paramvalue-prop-titlesnippet": "Engade un fragmento analizado do título da páxina.",
+       "apihelp-query+search-paramvalue-prop-redirectsnippet": "Engade un fragmento analizado do título da redirección.",
+       "apihelp-query+search-paramvalue-prop-redirecttitle": "Engade o título da redirección asociada.",
+       "apihelp-query+search-paramvalue-prop-sectionsnippet": "Engade un fragmento analizado do título de sección asociado.",
+       "apihelp-query+search-paramvalue-prop-sectiontitle": "Engade o título da sección asociada.",
+       "apihelp-query+search-paramvalue-prop-categorysnippet": "Engade un fragmento analizado da categoría asociada.",
+       "apihelp-query+search-paramvalue-prop-isfilematch": "Engade unha marca indicando se o resultado da busca é un ficheiro.",
+       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Obsoleto e ignorado.</span>",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Obsoleto e ignorado.</span>",
        "apihelp-query+search-param-limit": "Número total de páxinas a devolver.",
        "apihelp-query+search-param-interwiki": "Incluir na busca resultados de interwikis, se é posible.",
        "apihelp-query+search-param-backend": "Que servidor de busca usar, se non se indica usa o que hai por defecto.",
        "apihelp-query+search-example-text": "Buscar texto por <kbd>significado</kbd>.",
        "apihelp-query+search-example-generator": "Obter información da páxina sobre as páxinas devoltas por unha busca por <kbd>significado</kbd>.",
        "apihelp-query+siteinfo-description": "Devolver información xeral sobre o sitio.",
-       "apihelp-query+siteinfo-param-prop": "Que información obter:\n;general:Información xeral do sistema.\n;namespaces:Lista dos espazos de nomes rexistrados e os seus nomes canónicos.\n;namespacealiases:Lista de alias de espazos de nomes rexistrados .\n;specialpagealiases:Lista de alias de páxinas especiais.\n;magicwords:Lista de palabras máxicas e os seus alias.\n;statistics:Devolve as estatísticas do sitio.\n;interwikimap:Devolve o mapa interwiki (opcionalmente filtrado, opcionalmente localizado usando <var>$1inlanguagecode</var>).\n;dbrepllag:Devolve o servidor de base de datos con maior retardo de replicación.\n;usergroups:Devolve os grupos de usuarios e os permisos que teñen asociados.\n;libraries:Devolve as bibliotecas de funcións software instaladas na wiki.\n;extensions:Devolve as extensións instaladas na wiki.\n;fileextensions:Devolve a lista de extenxións de ficheiro permitidas para subir ficheiros.\n;rightsinfo:Devolve a información dos dereitos (licenza) da wiki se está dispoñible.\n;restrictions:Devolve información dos tipos de restricións (protección) dispoñibles.\n;languages:Devolve unha lista dos idiomas que soporta Mediawiki (opcionalmente pode localizarse usando <var>$1inlanguagecode</var>).\n;skins:Devolve unha lista de todas as aparencias dispoñibles (opcionalmente pode localizarse usando <var>$1inlanguagecode</var>, noutro caso no idioma do contido).\n;extensiontags:Devolve unha lista de etiquetas de extensión de analizador.\n;functionhooks:Devolve unha lista de ganchos de función de analizador.\n;showhooks:Devolve unha lista de todos os ganchos subscritos (contido de <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).\n;variables:Devolve unha lista de identificadores de variable.\n;protocols:Devolve unha lista de protocolos que están permitidos nas ligazóns externas.\n;defaultoptions:Devolve os valores por defecto das preferencias de usuario.",
+       "apihelp-query+siteinfo-param-prop": "Que información obter:",
+       "apihelp-query+siteinfo-paramvalue-prop-general": "Información xeral do sistema.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespaces": "Lista dos espazos de nomes rexistrados e os seus nomes canónicos.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "Lista de alias de espazos de nomes rexistrados .",
+       "apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "Lista de alias de páxinas especiais.",
+       "apihelp-query+siteinfo-paramvalue-prop-magicwords": "Lista de palabras máxicas e os seus alias.",
+       "apihelp-query+siteinfo-paramvalue-prop-statistics": "Devolve as estatísticas do sitio.",
+       "apihelp-query+siteinfo-paramvalue-prop-interwikimap": "Devolve o mapa interwiki (opcionalmente filtrado, opcionalmente localizado usando <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-dbrepllag": "Devolve o servidor de base de datos con maior retardo de replicación.",
+       "apihelp-query+siteinfo-paramvalue-prop-usergroups": "Devolve os grupos de usuarios e os permisos que teñen asociados.",
+       "apihelp-query+siteinfo-paramvalue-prop-libraries": "Devolve as bibliotecas de funcións software instaladas na wiki.",
+       "apihelp-query+siteinfo-paramvalue-prop-extensions": "Devolve as extensións instaladas na wiki.",
+       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "Devolve a lista de extenxións de ficheiro permitidas para subir ficheiros.",
+       "apihelp-query+siteinfo-paramvalue-prop-rightsinfo": "Devolve a información dos dereitos (licenza) da wiki se está dispoñible.",
+       "apihelp-query+siteinfo-paramvalue-prop-restrictions": "Devolve información dos tipos de restricións (protección) dispoñibles.",
+       "apihelp-query+siteinfo-paramvalue-prop-languages": "Devolve unha lista dos idiomas que soporta Mediawiki (opcionalmente pode localizarse usando <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-skins": "Devolve unha lista de todas as aparencias dispoñibles (opcionalmente pode localizarse usando <var>$1inlanguagecode</var>, noutro caso no idioma do contido).",
+       "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "Devolve unha lista de etiquetas de extensión de analizador.",
+       "apihelp-query+siteinfo-paramvalue-prop-functionhooks": "Devolve unha lista de ganchos de función de analizador.",
+       "apihelp-query+siteinfo-paramvalue-prop-showhooks": "Devolve unha lista de todos os ganchos subscritos (contido de <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-variables": "Devolve unha lista de identificadores de variable.",
+       "apihelp-query+siteinfo-paramvalue-prop-protocols": "Devolve unha lista de protocolos que están permitidos nas ligazóns externas.",
+       "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "Devolve os valores por defecto das preferencias de usuario.",
        "apihelp-query+siteinfo-param-filteriw": "Só devolver entradas locais ou só non locais da correspondencia interwiki.",
        "apihelp-query+siteinfo-param-showalldb": "Listar todos os servidores de base de datos, non só o que teña máis retardo.",
        "apihelp-query+siteinfo-param-numberingroup": "Listar o número de usuarios nos grupos de usuarios.",
        "apihelp-query+stashimageinfo-example-params": "Devolve as miniaturas de dous ficheiros almacenados.",
        "apihelp-query+tags-description": "Lista de marcas de cambios.",
        "apihelp-query+tags-param-limit": "Máximo número de etiquetas a listar.",
-       "apihelp-query+tags-param-prop": "Que propiedades recuperar:\n;name:Engade o nome da etiqueta.\n;displayname:Engade a mensaxe do sistema para a etiqueta.\n;description:Engade a descrición da etiqueta.\n;hitcount:Engade o número de modificacións e de entradas do rexistro que teñen esta etiqueta.\n;defined:Indica se a etiqueta está definida.\n;source:Obtén as fontes da etiqueta, que poden incluír <samp>extension</samp> para etiquetas definidas en extensión e <samp>manual</samp> para etiquetas que poden ser aplicadas manualmente polos usuarios.\n;active:Se a etiqueta aínda está a ser usada.",
+       "apihelp-query+tags-param-prop": "Que propiedades recuperar:",
+       "apihelp-query+tags-paramvalue-prop-name": "Engade o nome da etiqueta.",
+       "apihelp-query+tags-paramvalue-prop-displayname": "Engade a mensaxe do sistema para a etiqueta.",
+       "apihelp-query+tags-paramvalue-prop-description": "Engade a descrición da etiqueta.",
+       "apihelp-query+tags-paramvalue-prop-hitcount": "Engade o número de modificacións e de entradas do rexistro que teñen esta etiqueta.",
+       "apihelp-query+tags-paramvalue-prop-defined": "Indica se a etiqueta está definida.",
+       "apihelp-query+tags-paramvalue-prop-source": "Obtén as fontes da etiqueta, que poden incluír <samp>extension</samp> para etiquetas definidas en extensión e <samp>manual</samp> para etiquetas que poden ser aplicadas manualmente polos usuarios.",
+       "apihelp-query+tags-paramvalue-prop-active": "Se a etiqueta aínda está a ser usada.",
        "apihelp-query+tags-example-simple": "Listar as marcas dispoñibles",
        "apihelp-query+templates-description": "Devolve todas as páxinas incluídas na páxina indicada.",
        "apihelp-query+templates-param-namespace": "Mostrar modelos só neste espazo de nomes.",
        "apihelp-query+tokens-example-simple": "Recuperar un identificador csrf (por defecto).",
        "apihelp-query+tokens-example-types": "Recuperar un identificador vixiancia e un de patrulla.",
        "apihelp-query+transcludedin-description": "Atopar todas as páxinas que inclúen ás páxinas indicadas.",
-       "apihelp-query+transcludedin-param-prop": "Que propiedades obter:\n;pageid:ID de páxina de cada páxina.\n;title:Título de cada páxina.\n;redirect:Marca si a páxina é unha redirección.",
+       "apihelp-query+transcludedin-param-prop": "Que propiedades obter:",
+       "apihelp-query+transcludedin-paramvalue-prop-pageid": "ID de páxina de cada páxina.",
+       "apihelp-query+transcludedin-paramvalue-prop-title": "Título de cada páxina.",
+       "apihelp-query+transcludedin-paramvalue-prop-redirect": "Marca si a páxina é unha redirección.",
        "apihelp-query+transcludedin-param-namespace": "Só incluir páxinas nestes espacios de nomes.",
        "apihelp-query+transcludedin-param-limit": "Cantos mostrar.",
        "apihelp-query+transcludedin-param-show": "Mostrar só elementos que cumpren estes criterios:\n;redirect:Só mostra redireccións.\n;!redirect:Só mostra as que non son redireccións.",
        "apihelp-query+usercontribs-param-user": "Usuarios para os que recuperar as contribucións.",
        "apihelp-query+usercontribs-param-userprefix": "Recuperar as contribucións de todos os usuarios cuxo nome comece por este valor. Ignora $1user.",
        "apihelp-query+usercontribs-param-namespace": "Só listar contribucións nestes espazos de nomes.",
-       "apihelp-query+usercontribs-param-prop": "Engade información adicional:\n;ids:Engade os identificadores de páxina e modificación.\n;title:Engade o título e o identificador do espazo de nomes da páxina.\n;timestamp:Engade o selo de tempo da modificación.\n;comment:Engade o comentario da modificación.\n;parsedcomment:Engade o comentario analizado da modificación.\n;size:Engade o novo tamaño da modificación.\n;sizediff:Engade o delta do tamaño da modificación comparada coa anterior.\n;flags:Engade os indicadores da modificación.\n;patrolled:Marca as modificacións vixiadas.\n;tags:Lista as etiquetas da modificación.",
+       "apihelp-query+usercontribs-param-prop": "Engade información adicional:",
+       "apihelp-query+usercontribs-paramvalue-prop-ids": "Engade os identificadores de páxina e modificación.",
+       "apihelp-query+usercontribs-paramvalue-prop-title": "Engade o título e o identificador do espazo de nomes da páxina.",
+       "apihelp-query+usercontribs-paramvalue-prop-timestamp": "Engade o selo de tempo da modificación.",
+       "apihelp-query+usercontribs-paramvalue-prop-comment": "Engade o comentario da modificación.",
+       "apihelp-query+usercontribs-paramvalue-prop-parsedcomment": "Engade o comentario analizado da modificación.",
+       "apihelp-query+usercontribs-paramvalue-prop-size": "Engade o novo tamaño da modificación.",
+       "apihelp-query+usercontribs-paramvalue-prop-sizediff": "Engade o delta do tamaño da modificación comparada coa anterior.",
+       "apihelp-query+usercontribs-paramvalue-prop-flags": "Engade os indicadores da modificación.",
+       "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Marca as modificacións vixiadas.",
+       "apihelp-query+usercontribs-paramvalue-prop-tags": "Lista as etiquetas da modificación.",
        "apihelp-query+usercontribs-param-show": "Só mostrar elementos que cumpran estos criterios, p.ex. só edicións menores: <kbd>$2show=!minor</kbd>.\n\nSe está fixado <kbd>$2show=patrolled</kbd> ou <kbd>$2show=!patrolled</kbd>, as modificacións máis antigas que <var>[[mw:Manual:$wgRCMaxAge|$wgRCMaxAge]]</var> ($1 {{PLURAL:$1|segundo|segundos}}) non se mostrarán.",
        "apihelp-query+usercontribs-param-tag": "Só listar revisións marcadas con esta etiqueta.",
        "apihelp-query+usercontribs-param-toponly": "Listar só cambios que son a última revisión.",
        "apihelp-query+usercontribs-example-user": "Mostrar as contribucións do usuario <kbd>Exemplo</kbd>.",
        "apihelp-query+usercontribs-example-ipprefix": "Mostrar contribucións de tódalas direccións IP que comezan por <kbd>192.0.2.</kbd>.",
        "apihelp-query+userinfo-description": "Obter información sobre o usuario actual.",
-       "apihelp-query+userinfo-param-prop": "Que pezas de información incluír:\n;blockinfo:Marca se o usuario actual está bloqueado, por que, e por que razón.\n;hasmsg:Engade unha etiqueta <samp>messages</samp> (mensaxe) se o usuario actual ten mensaxes pendentes.\n;groups:Lista todos os grupos ós que pertence o usuario actual.\n;implicitgroups:Lista todos so grupos dos que o usuario actual é membro automaticamente. \n;rights:Lista todos os dereitos que ten o usuario actual.\n;changeablegroups:Lista os grupos ós que o usuario pode engadir ou eliminar a outros usuarios.\n;options:Lista todas as preferencias que ten seleccionadas o usuario actual.\n;preferencestoken:<span class=\"apihelp-deprecated\">Obsoleto.</span>Obtén o identificador para cambiar as preferencias do usuario actual.\n;editcount:Engade o contador de edicións do usuario actual.\n;ratelimits:Lista todos o límites de rango aplicados ó usuario actual.\n;realname:Engade o nome real do usuario.\n;email:Engade a dirección de correo electrónico do usuario e a data de autenticación desa dirección.\n;acceptlang:Reenvía a cabeceira <code>Accept-Language</code> enviada polo cliente nun formato estruturado.\n;registrationdate:Engade a data de rexistro do usuario.\n;unreadcount:Engade o número de páxinas sen ler da lista de vixiancia do usuario (máximo $1; devolve <samp>$2</samp> se son máis).",
+       "apihelp-query+userinfo-param-prop": "Que pezas de información incluír:",
+       "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Marca se o usuario actual está bloqueado, por que, e por que razón.",
+       "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Engade unha etiqueta <samp>messages</samp> (mensaxe) se o usuario actual ten mensaxes pendentes.",
+       "apihelp-query+userinfo-paramvalue-prop-groups": "Lista todos os grupos ós que pertence o usuario actual.",
+       "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Lista todos so grupos dos que o usuario actual é membro automaticamente.",
+       "apihelp-query+userinfo-paramvalue-prop-rights": "Lista todos os dereitos que ten o usuario actual.",
+       "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Lista os grupos ós que o usuario pode engadir ou eliminar a outros usuarios.",
+       "apihelp-query+userinfo-paramvalue-prop-options": "Lista todas as preferencias que ten seleccionadas o usuario actual.",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Obsoleto.</span>Obtén o identificador para cambiar as preferencias do usuario actual.",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "Engade o contador de edicións do usuario actual.",
+       "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Lista todos o límites de rango aplicados ó usuario actual.",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "Engade o nome real do usuario.",
+       "apihelp-query+userinfo-paramvalue-prop-email": "Engade a dirección de correo electrónico do usuario e a data de autenticación desa dirección.",
+       "apihelp-query+userinfo-paramvalue-prop-acceptlang": "Reenvía a cabeceira <code>Accept-Language</code> enviada polo cliente nun formato estruturado.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Engade a data de rexistro do usuario.",
+       "apihelp-query+userinfo-paramvalue-prop-unreadcount": "Engade o número de páxinas sen ler da lista de vixiancia do usuario (máximo $1; devolve <samp>$2</samp> se son máis).",
        "apihelp-query+userinfo-example-simple": "Obter información sobre o usuario actual.",
        "apihelp-query+userinfo-example-data": "Obter información adicional sobre o usuario actual.",
        "apihelp-query+users-description": "Obter información sobre unha lista de usuarios.",
-       "apihelp-query+users-param-prop": "Que información incluír:\n;blockinfo:Etiquetas se o usuario está bloqueado, por quen, e por que razón.\n;groups:Lista todos os grupos ós que pertence cada usuario.\n;implicitgroups:Lista os grupos dos que un usuario é membro de forma automatica.\n;rights:Lista todos os dereitos que ten cada usuario.\n;editcount:Engade o contador de edicións do usuario.\n;registration:Engade o selo de tempo do rexistro do usuario.\n;emailable:Marca se o usuario pode e quere recibir correos usando [[Special:Emailuser]].\n;gender:Marca o xénero do usuario. Devolve \"home\", \"muller\" ou \"descoñecido\".",
+       "apihelp-query+users-param-prop": "Que información incluír:",
+       "apihelp-query+users-paramvalue-prop-blockinfo": "Etiquetas se o usuario está bloqueado, por quen, e por que razón.",
+       "apihelp-query+users-paramvalue-prop-groups": "Lista todos os grupos ós que pertence cada usuario.",
+       "apihelp-query+users-paramvalue-prop-implicitgroups": "Lista os grupos dos que un usuario é membro de forma automatica.",
+       "apihelp-query+users-paramvalue-prop-rights": "Lista todos os dereitos que ten cada usuario.",
+       "apihelp-query+users-paramvalue-prop-editcount": "Engade o contador de edicións do usuario.",
+       "apihelp-query+users-paramvalue-prop-registration": "Engade o selo de tempo do rexistro do usuario.",
+       "apihelp-query+users-paramvalue-prop-emailable": "Marca se o usuario pode e quere recibir correos usando [[Special:Emailuser]].",
+       "apihelp-query+users-paramvalue-prop-gender": "Marca o xénero do usuario. Devolve \"home\", \"muller\" ou \"descoñecido\".",
        "apihelp-query+users-param-users": "Lista de usuarios para os que obter información.",
        "apihelp-query+users-param-token": "Usar <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> no canto diso.",
        "apihelp-query+users-example-simple": "Mostar información para o usuario <kbd>Exemplo</kbd>.",
        "apihelp-query+watchlistraw-description": "Obter todas as páxinas da lista de vixiancia do usuario actual.",
        "apihelp-query+watchlistraw-param-namespace": "Só listar páxinas nestes espazos de nomes.",
        "apihelp-query+watchlistraw-param-limit": "Cantos resultados totais mostrar por petición.",
-       "apihelp-query+watchlistraw-param-prop": "Que propiedades adicionais obter:\n;changed:Engade o selo de tempo da última notificación ó usuario dunha modificación.",
+       "apihelp-query+watchlistraw-param-prop": "Que propiedades adicionais obter:",
+       "apihelp-query+watchlistraw-paramvalue-prop-changed": "Engade o selo de tempo da última notificación ó usuario dunha modificación.",
        "apihelp-query+watchlistraw-param-show": "Só listar os elementos que cumplen estos criterios.",
        "apihelp-query+watchlistraw-param-owner": "Usado con $1token para acceder á lista de páxinas de vixiancia doutro usuario.",
        "apihelp-query+watchlistraw-param-token": "Identificador de seguridade (dispoñible nas [[Special:Preferences#mw-prefsection-watchlist|preferencias]] de usuario) para permitir o acceso a outros á súa páxina de vixiancia.",
index 9e118c6..de8e83d 100644 (file)
@@ -8,7 +8,8 @@
                        "YaronSh",
                        "ערן",
                        "LaG roiL",
-                       "Elyashiv"
+                       "Elyashiv",
+                       "Umherirrender"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|תיעוד]]\n* [[mw:API:FAQ|שו\"ת]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api רשימת דיוור]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce הודעות על API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R באגים ובקשות]\n</div>\n<strong>מצב:</strong> כל האפשרויות שמוצגות בדף הזה אמורות לעבוד, אבל ה־API עדיין בפיתוח פעיל, ויכול להשתנות בכל זמן. עשו מינוי ל [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ רשימת הדיוור mediawiki-api-announce] להודעות על עדכונים.\n\n<strong>בקשות שגויות:</strong> כשבקשות שגויות נשלחות ל־API, תישלח כותרת HTTP עם המפתח \"MediaWiki-API-Error\" ואז גם הערך של הכותרת וגם קוד השגיאה יוגדרו לאותו ערך. למידע נוסף ר' [[mw:API:Errors_and_warnings|API: שגיאות ואזהרות]].",
@@ -31,7 +32,7 @@
        "apihelp-block-param-nocreate": "מניעת יצירת חשבונות",
        "apihelp-block-param-autoblock": "חסימה אוטומטית גם של כתובת ה־IP האחרונה שהשתמש בה ושל כל כתובת IP שינסה להשתמש בה בעתיד.",
        "apihelp-block-param-noemail": "למנוע ממשתמש לשלוח דואר אלקטרוני דרך הוויקי. (דורש את ההרשאה <code>blockemail</code>).",
-       "apihelp-block-param-hidename": "×\94תסרת ×\94ש×\9d ×\9e×\99×\95×\9e×\9f ×\94×\97ס×\99×\9e×\95ת. (×\93×\95רש ×\90ת ×\94×\94רש×\90×\94 <code>hideuser</code>.)",
+       "apihelp-block-param-hidename": "הסרת השם מיומן החסימות. (דורש את ההרשאה <code>hideuser</code>.)",
        "apihelp-block-param-allowusertalk": "לאפשר למשתמש לערוך את דף השיחה שלו או שלה (תלוי ב־<var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "אם המשתמש כבר חסום, לדרוס את החסימה הנוכחית.",
        "apihelp-block-param-watchuser": "לעקוב אחרי דף המשתמש ודף השיחה של המשתמש או של כתובת ה־IP.",
        "apihelp-feedrecentchanges-param-hideliu": "הסתרת שינויים שנעשו על ידי משתמשים רשומים.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "הסתרת שינויים שנבדקו.",
        "apihelp-feedrecentchanges-param-hidemyself": "הסתרת שינוים שנעשו על ידי המשתמש הנוכחי.",
-       "apihelp-feedrecentchanges-param-hidecategorization": "להסתיר שינויים בחברות בקטגוריה.",
        "apihelp-feedrecentchanges-param-tagfilter": "סינון לפי תגית.",
        "apihelp-feedrecentchanges-param-target": "הצגת שינויים שנעשו בדפים המקושרים לדף זה בלבד.",
        "apihelp-feedrecentchanges-param-showlinkedto": "להציג את השינויים בדפים שמקושרים לדף שנבחר במקום זה.",
        "apihelp-parse-paramvalue-prop-iwlinks": "מתן קישורי בינוויקי בקוד הוויקי המפוענח.",
        "apihelp-parse-paramvalue-prop-wikitext": "מתן קוד הוויקי המקורי שפוענח.",
        "apihelp-parse-paramvalue-prop-properties": "נותן מאפיינים שונים שמוגדרים בקוד הוויקי המפוענח.",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "נותן דו\"ח הגבלות בדרך מובנית. לא נותן שום נתונים כאשר מוגדר <var>$1disablepp</var>.",
-       "apihelp-parse-paramvalue-prop-limitreporthtml": "נותן את גרסת ה־HTML של דו\"ח ההגבלות. לא נותן שום נתונים כאשר מוגדר <var>$1disablepp</var>.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "נותן דו\"ח הגבלות בדרך מובנית. לא נותן שום נתונים כאשר מוגדר <var>$1disablelimitreport</var>.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "נותן את גרסת ה־HTML של דו\"ח ההגבלות. לא נותן שום נתונים כאשר מוגדר <var>$1disablelimitreport</var>.",
        "apihelp-parse-paramvalue-prop-parsetree": "עץ פענוח XML של תוכן הגרסה (דורש מודל תוכן <code>$1</code>)",
        "apihelp-parse-param-pst": "לעשות התמרה לפני שמירה על הקלט לפני פענוחו. תקין רק בשימוש עם טקסט.",
        "apihelp-parse-param-onlypst": "לעשות התמרה לפני שמירה (pre-save transform‏, PST) על הקלט, אבל לא לפענח אותו. מחזיר את אותו קוד הוויקי אחרי החלת PST. תקף רק בשימוש עם <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "כולל קישור שפה שמספקות הרחבות (לשימוש עם <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-section": "לאחזר את התוכן של הפסקה עם המספר הזה, או, אם זה <kbd>new</kbd>, ליצור פסקה חדשה.\n\n<kbd>new</kbd> יכובד רק בעת ציון <var>text</var>.",
        "apihelp-parse-param-sectiontitle": "כותרת פסקה חדשה כאשר <var>section</var> הוא <kbd>new</kbd>.\n\nבניגוד לעריכת דף, זה לא מתגבה ל־<var>summary</var> כשזה מושמט אם ריק.",
-       "apihelp-parse-param-disablepp": "להשמיט את דו\"ח הקדם־מעבד (\"NewPP limit report\") מפלט המפענח.",
+       "apihelp-parse-param-disablelimitreport": "להשמיט את דו\"ח הקדם־מעבד (\"NewPP limit report\") מפלט המפענח.",
+       "apihelp-parse-param-disablepp": "יש להשתמש ב־<var>$1disablelimitreport</var> במקום.",
        "apihelp-parse-param-disableeditsection": "להשמיט את קישורי עריכת הפסקאות מפלט המפענח.",
+       "apihelp-parse-param-disabletidy": "לא להריץ ניקוי HTML (למשל tidy) על פלט המפענח.",
        "apihelp-parse-param-generatexml": "יצירת עץ פענוח של XML (נדרש מודל תוכן <code>$1</code>; מוחלף ב־<kbd>$2prop=parsetree</kbd>).",
        "apihelp-parse-param-preview": "לפענח במצב תצוגה מקדימה.",
        "apihelp-parse-param-sectionpreview": "לפענח במצב תצוגה מקדימה של פסקה (מדליק גם את מצב תצוגה מקדימה).",
        "apihelp-query+allcategories-param-min": "להחזיר רק קטגוריות עם מספר כזה לפחות של חברים.",
        "apihelp-query+allcategories-param-max": "להחזיר רק קטגוריות עם מספר כזה לכל היותר של חברים.",
        "apihelp-query+allcategories-param-limit": "כמה קטגוריות להחזיר.",
-       "apihelp-query+allcategories-param-prop": "אילו מאפיינים לקבל:\n;size:הוספת מספר הדפים בקטגוריה.\n;hidden:מתייג קטגוריות מוסתרות עם _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+allcategories-param-prop": "אילו מאפיינים לקבל:",
+       "apihelp-query+allcategories-paramvalue-prop-size": "הוספת מספר הדפים בקטגוריה.",
+       "apihelp-query+allcategories-paramvalue-prop-hidden": "מתייג קטגוריות מוסתרות עם <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+allcategories-example-size": "רשימת קטגוריות עם מידע על מספר הדפים בכל אחת מהן.",
        "apihelp-query+allcategories-example-generator": "אחזור מידע על דף הקטגוריה עצמו עבור קטגוריות שמתחילות ב־<kbd>List</kbd>.",
        "apihelp-query+alldeletedrevisions-description": "רשימת כל הגרסאות המחוקות על־ידי משתמש או במרחב.",
        "apihelp-query+allfileusages-param-to": "שם הקובץ שהמנייה תסתיים בו.",
        "apihelp-query+allfileusages-param-prefix": "חיפוש כל שמות הקבצים שמתחילים עם הערך הזה.",
        "apihelp-query+allfileusages-param-unique": "להציג רק שמות קבצים ייחודיים. לא יכול לשמש עם $1prop=ids.\nבעת שימוש בתור מחולל, נותן דפי יעד במקום דפי מקור.",
-       "apihelp-query+allfileusages-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהי הדף של הדפים המשתמשים (לא יכול לשמש עם $1unique).\n;title:הוספת שם הקובץ.",
+       "apihelp-query+allfileusages-param-prop": "אילו חלקי מידע לכלול:",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "הוספת מזהי הדף של הדפים המשתמשים (לא יכול לשמש עם $1unique).",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "הוספת שם הקובץ.",
        "apihelp-query+allfileusages-param-limit": "כמה פריטים להחזיר בסך הכול.",
        "apihelp-query+allfileusages-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+allfileusages-example-B": "רשימת שמות קבצים, כולל חסרים, עם מזהי הדפים שהם מופיעים בהם, החל מ־<kbd>B</kbd>.",
        "apihelp-query+alllinks-param-to": "כותרת הקישור שהמנייה תסתיים בו.",
        "apihelp-query+alllinks-param-prefix": "חיפוש כל הכותרות המקושרות שמתחילות בערך הזה.",
        "apihelp-query+alllinks-param-unique": "להציג רק שמות מקושרים ייחודיים. לא יכול לשמש עם <kbd>$1prop=ids</kbd>.\nבעת שימוש בתור מחולל, נותן דפי יעד במקום דפי מקור.",
-       "apihelp-query+alllinks-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהי הדף של הדף המקשר (לא יכול לשמש עם <var>$1unique</var>).\n;title:הוספת שם הקישור.",
+       "apihelp-query+alllinks-param-prop": "אילו חלקי מידע לכלול:",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "הוספת מזהי הדף של הדף המקשר (לא יכול לשמש עם <var>$1unique</var>).",
+       "apihelp-query+alllinks-paramvalue-prop-title": "הוספת שם הקישור.",
        "apihelp-query+alllinks-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+alllinks-param-limit": "כמה פריטים להחזיר בסך הכול.",
        "apihelp-query+alllinks-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+allredirects-param-to": "כותרת ההפניה שהמנייה תיפסק בה.",
        "apihelp-query+allredirects-param-prefix": "חיפוש על דפי היעד שמתחילים בערך הזה.",
        "apihelp-query+allredirects-param-unique": "להציג רק דפים ייחודיים. לא יכול לשמש עם $1prop=ids|fragment|interwiki.\nבעת שימוש בתור מחולל, נותן דפי יעד במקום דפי מקור.",
-       "apihelp-query+allredirects-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהה הדף של הדף המפנה (לא יכול לשמש עם <var>$1unique</var>).\n;title:הוספת כותרת ההפניה.\n;fragment:הוספת המובאה מההפניה, אם יש (לא יכול לשמש עם <var>$1unique</var>).\n;interwiki:הוספת תחילית הבינוויקי מההפניה, אם יש (לא יכול לשמש עם <var>$1unique</var>).",
+       "apihelp-query+allredirects-param-prop": "אילו חלקי מידע לכלול:",
+       "apihelp-query+allredirects-paramvalue-prop-ids": "הוספת מזהה הדף של הדף המפנה (לא יכול לשמש עם <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-title": "הוספת כותרת ההפניה.",
+       "apihelp-query+allredirects-paramvalue-prop-fragment": "הוספת המובאה מההפניה, אם יש (לא יכול לשמש עם <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-interwiki": "הוספת תחילית הבינוויקי מההפניה, אם יש (לא יכול לשמש עם <var>$1unique</var>).",
        "apihelp-query+allredirects-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+allredirects-param-limit": "כמה פריטים להחזיר בסך הכול.",
        "apihelp-query+allredirects-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+alltransclusions-param-to": "כותרת ההכללה שהמנייה תיפסק בה.",
        "apihelp-query+alltransclusions-param-prefix": "חיפוש כל הכותרות המוכללות שמתחילות הערך הזה.",
        "apihelp-query+alltransclusions-param-unique": "להציג רק שמות מוכללים ייחודיים. לא יכול לשמש עם $1prop=ids.\nבעת שימוש בתור מחולל, נותן דפי יעד במקום דפי מקור.",
-       "apihelp-query+alltransclusions-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהי הדף של הדפים המכלילים (לא יכול לשמש עם $1unique).\n;title:הוספת כותרת ההכללה.",
+       "apihelp-query+alltransclusions-param-prop": "אילו חלקי מידע לכלול:",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "הוספת מזהי הדף של הדפים המכלילים (לא יכול לשמש עם $1unique).",
+       "apihelp-query+alltransclusions-paramvalue-prop-title": "הוספת כותרת ההכללה.",
        "apihelp-query+alltransclusions-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+alltransclusions-param-limit": "כמה פריטים להחזיר בסך הכול.",
        "apihelp-query+alltransclusions-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+allusers-param-group": "לכלול רק משתמשים בקבוצות הנתונות.",
        "apihelp-query+allusers-param-excludegroup": "לא לכלול משתמשים בקבוצות הנתונות.",
        "apihelp-query+allusers-param-rights": "לכלול רק משתמשים עם ההרשאות הנתונות. לא כולל הרשאות שניתנו בקבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
-       "apihelp-query+allusers-param-prop": "אילו פרטי מידע לכלול:\n;blockinfo:הוספת מידע עם החסימה הנוכחית של משתמש.\n;groups:הוספת קבוצות שמשתמש חבר בהן. זה משתמש ביותר משאבי דפדפן ויכול להחזיר פחות תוצאות מהמגבלה.\n;implicitgroups:לרשום את כל הקבוצות שהמשתמש חבר בהן אוטומטית.\n;rights:רשימת הההרשאות שיש למשתמש.\n;editcount:הוספת מניין העריכות של המשתמש .\n;registration:הוספת חותם־הזמן של זמן הרישום של המשתמש (יכול להיות ריק).",
+       "apihelp-query+allusers-param-prop": "אילו פרטי מידע לכלול:",
+       "apihelp-query+allusers-paramvalue-prop-blockinfo": "הוספת מידע עם החסימה הנוכחית של משתמש.",
+       "apihelp-query+allusers-paramvalue-prop-groups": "הוספת קבוצות שמשתמש חבר בהן. זה משתמש ביותר משאבי דפדפן ויכול להחזיר פחות תוצאות מהמגבלה.",
+       "apihelp-query+allusers-paramvalue-prop-implicitgroups": "לרשום את כל הקבוצות שהמשתמש חבר בהן אוטומטית.",
+       "apihelp-query+allusers-paramvalue-prop-rights": "רשימת הההרשאות שיש למשתמש.",
+       "apihelp-query+allusers-paramvalue-prop-editcount": "הוספת מניין העריכות של המשתמש .",
+       "apihelp-query+allusers-paramvalue-prop-registration": "הוספת חותם־הזמן של זמן הרישום של המשתמש (יכול להיות ריק).",
        "apihelp-query+allusers-param-limit": "כמה שמות משתמש בסך הכול לשנות.",
        "apihelp-query+allusers-param-witheditsonly": "לרשום רק משתמשים שעשו עריכות.",
        "apihelp-query+allusers-param-activeusers": "לרשום רק משתמשים שהיו פעילים {{PLURAL:$1|ביום האחרון|ביומיים האחרונים|ב־$1 הימים האחרונים}}.",
        "apihelp-query+blocks-param-users": "רשימת משתמשים לחיפוש (לא חובה).",
        "apihelp-query+blocks-param-ip": "קבלת כל החסימות שחלות על טווח ה־IP או ה־CIDR הזה, כולל חסימות טווח.\nלא יכול לשמש יחד עם <var>$3users</var>. טווחי CIDR רחבים מ־IPv4/$1 או IPv6/$2 אינם מתקבלים.",
        "apihelp-query+blocks-param-limit": "המספר המרבי של חסימות לרשום.",
-       "apihelp-query+blocks-param-prop": "אילו מאפיינים לקבל:\n;id:הוספת מזהה החסימה.\n;user:הוספת שם המשתמש שנחסם.\n;userid:הוספת המזהה של המשמש שנחסם.\n;by:הוספת שם המשתמש שחסם.\n;byid:הוספת מזהה המשתמש שחסם.\n;timestamp:הוספת חותם־הזמן של החסימה.\n;expiry:הוספת חותם־הזמן של תפוגת החסימה.\n;reason:הוספת הסיבה שניתנה לחסימה.\n;range:הוספת טווח כתובות ה־IP שהחסימה משפיעה עליהן.\n;flags:מתייג את ההחרמה (autoblock‏, anononly, וכו'.).",
+       "apihelp-query+blocks-param-prop": "אילו מאפיינים לקבל:",
+       "apihelp-query+blocks-paramvalue-prop-id": "הוספת מזהה החסימה.",
+       "apihelp-query+blocks-paramvalue-prop-user": "הוספת שם המשתמש שנחסם.",
+       "apihelp-query+blocks-paramvalue-prop-userid": "הוספת המזהה של המשמש שנחסם.",
+       "apihelp-query+blocks-paramvalue-prop-by": "הוספת שם המשתמש שחסם.",
+       "apihelp-query+blocks-paramvalue-prop-byid": "הוספת מזהה המשתמש שחסם.",
+       "apihelp-query+blocks-paramvalue-prop-timestamp": "הוספת חותם־הזמן של החסימה.",
+       "apihelp-query+blocks-paramvalue-prop-expiry": "הוספת חותם־הזמן של תפוגת החסימה.",
+       "apihelp-query+blocks-paramvalue-prop-reason": "הוספת הסיבה שניתנה לחסימה.",
+       "apihelp-query+blocks-paramvalue-prop-range": "הוספת טווח כתובות ה־IP שהחסימה משפיעה עליהן.",
+       "apihelp-query+blocks-paramvalue-prop-flags": "מתייג את ההחרמה (autoblock‏, anononly, וכו'.).",
        "apihelp-query+blocks-param-show": "להציג רק פריטים שמתאימים לאמות המידה האלו.\nלמשל, כדי לראות רק חסימות ללא לצמיתות על כתובות IP יש להגדיר <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "רשימת חסימות.",
        "apihelp-query+blocks-example-users": "רשימת חסימות של המשתמשים <kbd>Alice</kbd> ו־<kbd>Bob</kbd>.",
        "apihelp-query+categories-description": "לרשום את כל הקטגוריות שהדף שייך אליהן.",
-       "apihelp-query+categories-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קטגוריה:\n;sortkey:הוספת מפתח מיון (מחרוזת הקסדצימלית) ותחילית מפתח מיון (החלק הקריא) עבור קטגוריה.\n;timestamp:הוספת חותם־הזמן של יצירת הקטגוריה.\n;hidden:תיוג קטגוריות שהוסתרו באמצעות _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+categories-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קטגוריה:",
+       "apihelp-query+categories-paramvalue-prop-sortkey": "הוספת מפתח מיון (מחרוזת הקסדצימלית) ותחילית מפתח מיון (החלק הקריא) עבור קטגוריה.",
+       "apihelp-query+categories-paramvalue-prop-timestamp": "הוספת חותם־הזמן של יצירת הקטגוריה.",
+       "apihelp-query+categories-paramvalue-prop-hidden": "תיוג קטגוריות שהוסתרו באמצעות <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+categories-param-show": "איזה סוג של קטגוריות להציג.",
        "apihelp-query+categories-param-limit": "כמה קטגוריות להחזיר.",
        "apihelp-query+categories-param-categories": "לרשום רק את הקטגוריות האלו. שימושי לבדיקה עם דף מסוים נמצא בקטגוריה מסוימת.",
        "apihelp-query+categorymembers-description": "רשימת כל הדפים בקטגוריה נתונה.",
        "apihelp-query+categorymembers-param-title": "איזו קטגוריה למנות (נדרש). חייב לכלול את התחילית <kbd>{{ns:category}}:</kbd>. לא יכול לשמש יחד עם <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "מזהה הדף של הקטגוריה שצריך למנות. לא יכול לשמש יחד עם <var>$1title</var>.",
-       "apihelp-query+categorymembers-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהה הדף.\n;title:הוספת השם ומזהה מרחב השם של הדף.\n;sortkey:הוספת מפתח המיון שמשמש למיון בקטגוריה (מחרזות הקסדצימלית).\n;sortkeyprefix:הוספת מפתח המיון שמשמש למיון בקטגוריה (מחרוזת הקסדצימלית).\n;type:הוספת הסוג שהדף מוין אליו (דף, תת־קטגוריה, או קובץ).\n;timestamp:הוספת חותם־הזמן שבו הדף נכלל.",
+       "apihelp-query+categorymembers-param-prop": "אילו חלקי מידע לכלול:",
+       "apihelp-query+categorymembers-paramvalue-prop-ids": "הוספת מזהה הדף.",
+       "apihelp-query+categorymembers-paramvalue-prop-title": "הוספת השם ומזהה מרחב השם של הדף.",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkey": "הוספת מפתח המיון שמשמש למיון בקטגוריה (מחרזות הקסדצימלית).",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "הוספת מפתח המיון שמשמש למיון בקטגוריה (מחרוזת הקסדצימלית).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "הוספת הסוג שהדף מוין אליו (דף, תת־קטגוריה, או קובץ).",
+       "apihelp-query+categorymembers-paramvalue-prop-timestamp": "הוספת חותם־הזמן שבו הדף נכלל.",
        "apihelp-query+categorymembers-param-namespace": "לכלול רק דפים במרחבי השם האלה. יש לשים לב לכך ש־<kbd>$1type=subcat</kbd> או <kbd>$1type=file</kbd> יכולים לשמש במקום <kbd>$1namespace=14</kbd> או <kbd>6</kbd>.",
        "apihelp-query+categorymembers-param-type": "איזה סוג של חברי קטגוריה לכלול. לא תקף כאשר מוגדר <kbd>$1sort=timestamp</kbd>.",
        "apihelp-query+categorymembers-param-limit": "מספר הדפים המרבי שיוחזר.",
        "apihelp-query+extlinks-param-expandurl": "הרחבת URL־ים בעלי פרוטוקול יחסי בפרוטוקול קנוני.",
        "apihelp-query+extlinks-example-simple": "קבלת רשימת קישורים חיצוניים ב־<kbd>Main Page<kbd>.",
        "apihelp-query+exturlusage-description": "למנות דפים שמכילים URL נתון.",
-       "apihelp-query+exturlusage-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהה הדף.\n;title:הוספת השם ומזהה מרחב השם של הדף.\n;url:הוספת ה־URL שמשמש בדף.",
+       "apihelp-query+exturlusage-param-prop": "אילו חלקי מידע לכלול:",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "הוספת מזהה הדף.",
+       "apihelp-query+exturlusage-paramvalue-prop-title": "הוספת השם ומזהה מרחב השם של הדף.",
+       "apihelp-query+exturlusage-paramvalue-prop-url": "הוספת ה־URL שמשמש בדף.",
        "apihelp-query+exturlusage-param-protocol": "הפרוטוקול של ה־URL. אם זה ריק, ו־<var>$1query</var> מוגדר, הפרוטוקול הוא <kbd>http</kbd>. יש להשאיר את זה ואת <var>$1query</var> ריק כדי לרשום את כל הקישורים החיצוניים.",
        "apihelp-query+exturlusage-param-query": "מחרוזת חיפוש ללא פרוטוקל. ר' [[Special:LinkSearch]]. יש להשאיר את זה ריק כדי לרשום את כל הקישורים החיצוניים.",
        "apihelp-query+exturlusage-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+filearchive-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+filearchive-param-sha1": "גיבוב SHA1 של תמונה. דורס את $1sha1base36.",
        "apihelp-query+filearchive-param-sha1base36": "גיבוב SHA1 של תמונה בבסיס 36 (משמש במדיה־ויקי).",
-       "apihelp-query+filearchive-param-prop": "איזה מידע על תמונה לקבל:\n;sha1:הוספת גיבוב SHA-1 עבור התמונה.\n;timestamp:הוספת חותם־זמן לגרסה המועלית.\n;user:הוספת המשתמש שהעלה על גרסת התמונה.\n;size:הוספת הגודל של התמונה בבתים והגובה, הרוחב ומניין הדפים (אם מתאים).\n;dimensions:כינוי ל־size.\n;description:הוספת תיאור לגרסת התמונה.\n;parseddescription:פענוח התיאור של הגרסה.\n;mime:הוספת ה־MIME של התמונה.\n;mediatype:הוספת סוג המדיה של התמונה.\n;metadata:רשימת מטא־נתוני Exif עבור גרסת הקובץ.\n;bitdepth:הוספת עומק הביטים של הגרסה.\n;archivename:הוספת שם הקובץ של גרסה מאורכבת עבור גרסאות שאינן האחרונה.",
+       "apihelp-query+filearchive-param-prop": "איזה מידע על תמונה לקבל:",
+       "apihelp-query+filearchive-paramvalue-prop-sha1": "הוספת גיבוב SHA-1 עבור התמונה.",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "הוספת חותם־זמן לגרסה המועלית.",
+       "apihelp-query+filearchive-paramvalue-prop-user": "הוספת המשתמש שהעלה על גרסת התמונה.",
+       "apihelp-query+filearchive-paramvalue-prop-size": "הוספת הגודל של התמונה בבתים והגובה, הרוחב ומניין הדפים (אם מתאים).",
+       "apihelp-query+filearchive-paramvalue-prop-dimensions": "כינוי ל־size.",
+       "apihelp-query+filearchive-paramvalue-prop-description": "הוספת תיאור לגרסת התמונה.",
+       "apihelp-query+filearchive-paramvalue-prop-parseddescription": "פענוח התיאור של הגרסה.",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "הוספת ה־MIME של התמונה.",
+       "apihelp-query+filearchive-paramvalue-prop-mediatype": "הוספת סוג המדיה של התמונה.",
+       "apihelp-query+filearchive-paramvalue-prop-metadata": "רשימת מטא־נתוני Exif עבור גרסת הקובץ.",
+       "apihelp-query+filearchive-paramvalue-prop-bitdepth": "הוספת עומק הביטים של הגרסה.",
+       "apihelp-query+filearchive-paramvalue-prop-archivename": "הוספת שם הקובץ של גרסה מאורכבת עבור גרסאות שאינן האחרונה.",
        "apihelp-query+filearchive-example-simple": "הצגת רשימת כל הקבצים המחוקים.",
        "apihelp-query+filerepoinfo-description": "החזרת מידע מטא על מאגרי תמונות שמוגדרים בוויקי.",
        "apihelp-query+filerepoinfo-param-prop": "אילו מאפייני מאגר לקבל (יכולים להיות יותר מזה באתרי ויקי אחדים):\n;apiurl:URL ל־API של המאגר – מועיל לקבלת מידע על התמונה מהמארח.\n;name:המפתח של המאגר – משמש למשל בערכים המוחזרים מ־<var>[[mw:Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> ומ־[[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:שם קריא של אתר הוויקי של המאגר.\n;rooturl:URL שורש לנתיבי תמונות.\n;local:האם המאגר הוא מקומי או לא.",
        "apihelp-query+filerepoinfo-example-simple": "קבלת מידע על מאגרי קבצים.",
        "apihelp-query+fileusage-description": "מציאת כל הדפים שמשתמשים בקבצים הנתונים.",
-       "apihelp-query+fileusage-param-prop": "אילו מאפיינים לקבל:\n;pageid:מזהה הדף של כל דף.\n;title:השם של כל דף.\n;redirect:דגל אם הדף הוא הפניה.",
+       "apihelp-query+fileusage-param-prop": "אילו מאפיינים לקבל:",
+       "apihelp-query+fileusage-paramvalue-prop-pageid": "מזהה הדף של כל דף.",
+       "apihelp-query+fileusage-paramvalue-prop-title": "השם של כל דף.",
+       "apihelp-query+fileusage-paramvalue-prop-redirect": "דגל אם הדף הוא הפניה.",
        "apihelp-query+fileusage-param-namespace": "לכלול רק דפים במרחבי השם האלה.",
        "apihelp-query+fileusage-param-limit": "כמה להחזיר.",
        "apihelp-query+fileusage-param-show": "לחפש רק פריטים שמתאימים לאמות המידה הבאות:\n;redirect:להציג רק הפניות.\n;!redirect:לא להציג הפניות.",
        "apihelp-query+iwbacklinks-param-prefix": "תחילית לבינוויקי.",
        "apihelp-query+iwbacklinks-param-title": "איזה קישור בינוויקי לחפש. צריך להשתמש בזה יחד עם <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "כמה דפים להחזיר בסך הכול.",
-       "apihelp-query+iwbacklinks-param-prop": "אילו מאפיינים לקבל:\n;iwprefix:הוספת התחילית של הבינוויקי.\n;iwtitle:הוספת הכותרת של הבינוויקי.",
+       "apihelp-query+iwbacklinks-param-prop": "אילו מאפיינים לקבל:",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "הוספת התחילית של הבינוויקי.",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "הוספת הכותרת של הבינוויקי.",
        "apihelp-query+iwbacklinks-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+iwbacklinks-example-simple": "קבלת דפים שמקשרים ל־[[wikibooks:Test]].",
        "apihelp-query+iwbacklinks-example-generator": "קבלת מידע על דפים שמקשרים ל־[[wikibooks:Test]].",
        "apihelp-query+iwlinks-description": "החזרת כל קישורי הבינוויקי מהדפים הנתונים.",
        "apihelp-query+iwlinks-param-url": "האם לקבל את ה־URL המלא (לא יכול לשמש עם $1prop).",
-       "apihelp-query+iwlinks-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קישור בין־לשוני:\n;url:הוספת ה־URL המלא.",
+       "apihelp-query+iwlinks-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קישור בין־לשוני:",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "הוספת ה־URL המלא.",
        "apihelp-query+iwlinks-param-limit": "כמה קישורי בינוויקי להחזיר.",
        "apihelp-query+iwlinks-param-prefix": "להחזיר רק קישורי בינוויקי עם התחילית הזאת.",
        "apihelp-query+iwlinks-param-title": "איזה קישור בינוויקי לחפש. צריך להשתמש בזה יחד עם <var>$1prefix</var>.",
        "apihelp-query+langbacklinks-param-lang": "שפה עבור קישור שפה.",
        "apihelp-query+langbacklinks-param-title": "איזה קישור שפה לחפש. חייב לשמש עם $1lang.",
        "apihelp-query+langbacklinks-param-limit": "כמה דפים להחזיר בסך הכול.",
-       "apihelp-query+langbacklinks-param-prop": "אילו מאפיינים לקבל:\n;lllang:הוספת קוד השפה של קישור השפה.\n;lltitle:הוספת הכותרת של קישור השפה.",
+       "apihelp-query+langbacklinks-param-prop": "אילו מאפיינים לקבל:",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "הוספת קוד השפה של קישור השפה.",
+       "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "הוספת הכותרת של קישור השפה.",
        "apihelp-query+langbacklinks-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+langbacklinks-example-simple": "קבלת דפים שמקשרים ל־[[:fr:Test]].",
        "apihelp-query+langbacklinks-example-generator": "קבלת מידע על דפים שמקשרים ל־[[:fr:Test]].",
        "apihelp-query+langlinks-description": "החזרת כל הקישורים הבין־לשוניים מהדפים הנתונים.",
        "apihelp-query+langlinks-param-limit": "כמה קישורי שפה להחזיר.",
        "apihelp-query+langlinks-param-url": "האם לקבל את ה־URL המלא (לא יכול לשמש עם <var>$1prop</var>).",
-       "apihelp-query+langlinks-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קישור בין־לשוני:\n;url:הוספת ה־URL המלא.\n;langname:הוספת שם השפה המתורגם (עם המאמץ הטוב ביותר). יש להשתמש ב־<var>$1inlanguagecode</var> כדי לשלוט בשפה.\n;autonym:הוספת השם הילידי של השפה.",
+       "apihelp-query+langlinks-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קישור בין־לשוני:",
+       "apihelp-query+langlinks-paramvalue-prop-url": "הוספת ה־URL המלא.",
+       "apihelp-query+langlinks-paramvalue-prop-langname": "הוספת שם השפה המתורגם (עם המאמץ הטוב ביותר). יש להשתמש ב־<var>$1inlanguagecode</var> כדי לשלוט בשפה.",
+       "apihelp-query+langlinks-paramvalue-prop-autonym": "הוספת השם הילידי של השפה.",
        "apihelp-query+langlinks-param-lang": "להחזיר רק קישורי שפה עם קוד השפה הזה.",
        "apihelp-query+langlinks-param-title": "קישור לחיפוש. חובה להשתמש עם <var>$1lang</var>.",
        "apihelp-query+langlinks-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+links-example-generator": "קבלת מידע על דפי הקישור בדף <kbd>Main Page</kbd>.",
        "apihelp-query+links-example-namespaces": "קבלת קישורים מהדף <kbd>Main Page</kbd> במרחבי השם {{ns:user}} ו־{{ns:template}}.",
        "apihelp-query+linkshere-description": "מציאת כל הדפים שמקשרים לדפים הנתונים.",
-       "apihelp-query+linkshere-param-prop": "אילו מאפיינים לקבל:\n;pageid:מזהה הדף של כל דף.\n;title:השם של כל דף.\n;redirect:דגל אם הדף הוא הפניה.",
+       "apihelp-query+linkshere-param-prop": "אילו מאפיינים לקבל:",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "מזהה הדף של כל דף.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "השם של כל דף.",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "דגל אם הדף הוא הפניה.",
        "apihelp-query+linkshere-param-namespace": "לכלול רק דפים במרחבי השם האלה.",
        "apihelp-query+linkshere-param-limit": "כמה להחזיר.",
        "apihelp-query+linkshere-param-show": "הצגת פריטים שתואמים את הדרישות הללו בלבד:\n;redirect:הצגת הפניות בלבד.\n;!redirect:הצגת קישורים שאינם הפניות בלבד.",
        "apihelp-query+linkshere-example-simple": "קבלת רשימת דפים שמקשרים ל־[[Main Page]].",
        "apihelp-query+linkshere-example-generator": "קבל מידע על דפים שמקשרים ל־[[Main Page]].",
        "apihelp-query+logevents-description": "קבלת אירועים מהרישומים.",
-       "apihelp-query+logevents-param-prop": "אילו מאפיינים לקבל:\n;ids:הוספת המזהה של אירוע היומן.\n;title:הוספת שם הדף של אירוע היומן.\n;type:הוספת הסוג של אירוע היומן.\n;user:הוספת המשתמש האחראי על אירוע היומן.\n;userid:הוספת מזהה המשתמש האחראי על אירוע היומן.\n;timestamp:הוספת חותם־הזמן עבור האירוע.\n;comment:הוספת ההערה של האירוע.\n;parsedcomment:הוספת ההערה המפוענחת של האירוע.\n;details:הוספת פרטים נוספים על האירוע.\n;tags:רשימת התגים של האירוע.",
+       "apihelp-query+logevents-param-prop": "אילו מאפיינים לקבל:",
+       "apihelp-query+logevents-paramvalue-prop-ids": "הוספת המזהה של אירוע היומן.",
+       "apihelp-query+logevents-paramvalue-prop-title": "הוספת שם הדף של אירוע היומן.",
+       "apihelp-query+logevents-paramvalue-prop-type": "הוספת הסוג של אירוע היומן.",
+       "apihelp-query+logevents-paramvalue-prop-user": "הוספת המשתמש האחראי על אירוע היומן.",
+       "apihelp-query+logevents-paramvalue-prop-userid": "הוספת מזהה המשתמש האחראי על אירוע היומן.",
+       "apihelp-query+logevents-paramvalue-prop-timestamp": "הוספת חותם־הזמן עבור האירוע.",
+       "apihelp-query+logevents-paramvalue-prop-comment": "הוספת ההערה של האירוע.",
+       "apihelp-query+logevents-paramvalue-prop-parsedcomment": "הוספת ההערה המפוענחת של האירוע.",
+       "apihelp-query+logevents-paramvalue-prop-details": "הוספת פרטים נוספים על האירוע.",
+       "apihelp-query+logevents-paramvalue-prop-tags": "רשימת התגים של האירוע.",
        "apihelp-query+logevents-param-type": "סינון עיולי יומן רק לסוג הזה.",
        "apihelp-query+logevents-param-action": "סינון פעולות יומן רק לפעולה הזאת. דורס את <var>$1type</var>. פעולות עם תו־כולים כגון <kbd>action/*</kbd> מאפשרות לתת כל מחרוזת במקום הכוכבית.",
        "apihelp-query+logevents-param-start": "מאיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+pageprops-example-simple": "קבלת מאפיינים עבור הדפים <kbd>Main Page</kbd> ו־<kbd>MediaWiki</kbd>.",
        "apihelp-query+pageswithprop-description": "לרשום את כל הדפים שמשתמשים במאפיין דף נתון.",
        "apihelp-query+pageswithprop-param-propname": "מאפיין דף שעבורו למנות דפים.",
-       "apihelp-query+pageswithprop-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהה הדף.\n;title:הוספת השם ומזהה מרחב השם של הדף.\n;url:הוספת הערך של מאפיין הדף.",
+       "apihelp-query+pageswithprop-param-prop": "אילו חלקי מידע לכלול:",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "הוספת מזהה הדף.",
+       "apihelp-query+pageswithprop-paramvalue-prop-title": "הוספת השם ומזהה מרחב השם של הדף.",
+       "apihelp-query+pageswithprop-paramvalue-prop-value": "הוספת הערך של מאפיין הדף.",
        "apihelp-query+pageswithprop-param-limit": "מספר הדפים המרבי שיוחזר.",
        "apihelp-query+pageswithprop-param-dir": "באיזה כיוון לסדר.",
        "apihelp-query+pageswithprop-example-simple": "הצגת עשרת הדפים הראשונים שעושים שימוש ב־<code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+protectedtitles-param-limit": "כמה דפים להחזיר בסך הכול.",
        "apihelp-query+protectedtitles-param-start": "להתחיל לרשום בחותם־זמן ההגנה הזה.",
        "apihelp-query+protectedtitles-param-end": "באיזה חותם־זמן הגנה לסיים את הרשימה.",
-       "apihelp-query+protectedtitles-param-prop": "אילו מאפיינים לקבל:\n;timestamp:הוספת חותם־הזמן של הוספת ההגנה.\n;user:הוספת המשתמש שהוסיף את ההגנה.\n;userid:הוספת מזהה המשתמש שהוסיף את ההגנה.\n;comment:הוספת ההערה עבור ההגנה.\n;parsedcomment:הוספת ההערה המפוענחת עבור ההגנה.\n;expiry:הוספת חותם־הזמן של הסרת ההגנה.\n;level:הוספת רמת ההגנה.",
+       "apihelp-query+protectedtitles-param-prop": "אילו מאפיינים לקבל:",
+       "apihelp-query+protectedtitles-paramvalue-prop-timestamp": "הוספת חותם־הזמן של הוספת ההגנה.",
+       "apihelp-query+protectedtitles-paramvalue-prop-user": "הוספת המשתמש שהוסיף את ההגנה.",
+       "apihelp-query+protectedtitles-paramvalue-prop-userid": "הוספת מזהה המשתמש שהוסיף את ההגנה.",
+       "apihelp-query+protectedtitles-paramvalue-prop-comment": "הוספת ההערה עבור ההגנה.",
+       "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "הוספת ההערה המפוענחת עבור ההגנה.",
+       "apihelp-query+protectedtitles-paramvalue-prop-expiry": "הוספת חותם־הזמן של הסרת ההגנה.",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "הוספת רמת ההגנה.",
        "apihelp-query+protectedtitles-example-simple": "רשימת כותרות מוגנות.",
        "apihelp-query+protectedtitles-example-generator": "חיפוש קישורים לכותרות מוגנות במרחב הראשי.",
        "apihelp-query+querypage-description": "קבלת רשימה שמסופקת על־ידי דף מיוחד מבוסס־QueryPage.",
        "apihelp-query+recentchanges-param-user": "לרשום רק שינויים של המשתמש הזה.",
        "apihelp-query+recentchanges-param-excludeuser": "Don't list changes by this user",
        "apihelp-query+recentchanges-param-tag": "לרשום רק שינויים שמתויגים עם התג הזה.",
-       "apihelp-query+recentchanges-param-prop": "לכלול פריטי מידע נוספים:\n;user:הוספת המשתמש האחראי על העריכה ותיוג אם זאת כתובת IP.\n;userid:הוספת המשתמש האחראי על העריכה.\n;comment:הוספת ההערה על העריכה.\n;parsedcomment:הוספת ההערה המפוענחת על העריכה.\n;flags:הוספת דגלים לעריכה.\n;timestamp:הוספת חותם־זמן של העריכה.\n;title:הוספת שם הדף של העריכה.\n;ids:הוספת מזהה הדף, מזהה שינויים אחרונים, והמזהה הגרסה החדשה והישנה.\n;sizes:הוספת אורך הדף החדש והישן בבתים.\n;redirect:מתייג שהדף הוא הפניה.\n;patrolled:מתייג עריכה בת־בדיקה בתור בדוקה או בלתי־בדוקה.\n;loginfo:הוספת מידע יומן (זהה יומן, סוג יומן וכו') לעיולי יומן.\n;tags:רשימת תגים עבור העיול.\n;sha1:הוספת סיכום־ביקורת תוכן לעיולים שמשויכים לגרסה.",
+       "apihelp-query+recentchanges-param-prop": "לכלול פריטי מידע נוספים:",
+       "apihelp-query+recentchanges-paramvalue-prop-user": "הוספת המשתמש האחראי על העריכה ותיוג אם זאת כתובת IP.",
+       "apihelp-query+recentchanges-paramvalue-prop-userid": "הוספת המשתמש האחראי על העריכה.",
+       "apihelp-query+recentchanges-paramvalue-prop-comment": "הוספת ההערה על העריכה.",
+       "apihelp-query+recentchanges-paramvalue-prop-parsedcomment": "הוספת ההערה המפוענחת על העריכה.",
+       "apihelp-query+recentchanges-paramvalue-prop-flags": "הוספת דגלים לעריכה.",
+       "apihelp-query+recentchanges-paramvalue-prop-timestamp": "הוספת חותם־זמן של העריכה.",
+       "apihelp-query+recentchanges-paramvalue-prop-title": "הוספת שם הדף של העריכה.",
+       "apihelp-query+recentchanges-paramvalue-prop-ids": "הוספת מזהה הדף, מזהה שינויים אחרונים, והמזהה הגרסה החדשה והישנה.",
+       "apihelp-query+recentchanges-paramvalue-prop-sizes": "הוספת אורך הדף החדש והישן בבתים.",
+       "apihelp-query+recentchanges-paramvalue-prop-redirect": "מתייג שהדף הוא הפניה.",
+       "apihelp-query+recentchanges-paramvalue-prop-patrolled": "מתייג עריכה בת־בדיקה בתור בדוקה או בלתי־בדוקה.",
+       "apihelp-query+recentchanges-paramvalue-prop-loginfo": "הוספת מידע יומן (זהה יומן, סוג יומן וכו') לעיולי יומן.",
+       "apihelp-query+recentchanges-paramvalue-prop-tags": "רשימת תגים עבור העיול.",
+       "apihelp-query+recentchanges-paramvalue-prop-sha1": "הוספת סיכום־ביקורת תוכן לעיולים שמשויכים לגרסה.",
        "apihelp-query+recentchanges-param-token": "יש להשתמש ב־<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> במקום.",
        "apihelp-query+recentchanges-param-show": "הצגה רק של פריטים שמתאימים לאמות המידה האלו. למשל, כדי לראות רק עריכות משניות שעשו משתמשים שנכנסו לחשבון, יש להגדיר $1show=minor|!anon.",
        "apihelp-query+recentchanges-param-limit": "כמה שינויים להחזיר בסך הכול.",
        "apihelp-query+recentchanges-example-simple": "הצגת השינויים האחרונים.",
        "apihelp-query+recentchanges-example-generator": "קבלת מידע על הדף על שינויים אחרונים שלא נבדקו.",
        "apihelp-query+redirects-description": "מחזיר את כל ההפניות לדפים הנתונים.",
-       "apihelp-query+redirects-param-prop": "אילו מאפיינים לקבל:\n;pageid:מזהה הדף של כל הפניה.\n;title:השם של כל הפניה.\n;fragment:מובאה מכל הפניה, אם יש.",
+       "apihelp-query+redirects-param-prop": "אילו מאפיינים לקבל:",
+       "apihelp-query+redirects-paramvalue-prop-pageid": "מזהה הדף של כל הפניה.",
+       "apihelp-query+redirects-paramvalue-prop-title": "השם של כל הפניה.",
+       "apihelp-query+redirects-paramvalue-prop-fragment": "מובאה מכל הפניה, אם יש.",
        "apihelp-query+redirects-param-namespace": "לכלול רק דפים במרחבי השם האלה.",
        "apihelp-query+redirects-param-limit": "כמה הפניות להחזיר.",
        "apihelp-query+redirects-param-show": "לחפש רק פריטים שמתאימים לאמות המידה הבאות:\n;fragment:להציג רק הפניות עם מקטע.\n;!fragment:להציג רק הפניות ללא מקטע.",
        "apihelp-query+search-param-namespace": "חיפוש רק במרחבי השם האלה.",
        "apihelp-query+search-param-what": "איזה סוג חיפוש לבצע.",
        "apihelp-query+search-param-info": "אילו מטא־נתונים להחזיר.",
-       "apihelp-query+search-param-prop": "אילו מאפיינים להחזיר:\n;size:הוספת גודל הדף בבתים.\n;wordcount:הוספת מניין המילים של הדף.\n;timestamp:הוספת חותם־הזמן של העריכה האחרונה של הדף.\n;snippet:הוספת קטע קצר מפוענח מהדף.\n;titlesnippet:הוספת קטע קצר מפוענח משם הדף.\n;redirectsnippet:הוספת קטע קצר מפוענח משם ההפניה.\n;redirecttitle:הוספת שם ההפניה התואמת.\n;sectionsnippet:הוספת קטע קצר מפוענח של שם הפסקה התואמת.\n;sectiontitle:הוספת שם הפסקה התואמת.\n;categorysnippet:הוספת קטע קצר מפוענח של הקטגוריה התואמת.\n;isfilematch:הוספת בוליאני שמציין אם החיפוש תאם לתוכן של קובץ.\n;score:<span class=\"apihelp-deprecated\">מיושן וחסר־תוקן.</span>\n;hasrelated:<span class=\"apihelp-deprecated\">מיושן וחסר־תוקן.</span>",
+       "apihelp-query+search-param-prop": "אילו מאפיינים להחזיר:",
+       "apihelp-query+search-paramvalue-prop-size": "הוספת גודל הדף בבתים.",
+       "apihelp-query+search-paramvalue-prop-wordcount": "הוספת מניין המילים של הדף.",
+       "apihelp-query+search-paramvalue-prop-timestamp": "הוספת חותם־הזמן של העריכה האחרונה של הדף.",
+       "apihelp-query+search-paramvalue-prop-snippet": "הוספת קטע קצר מפוענח מהדף.",
+       "apihelp-query+search-paramvalue-prop-titlesnippet": "הוספת קטע קצר מפוענח משם הדף.",
+       "apihelp-query+search-paramvalue-prop-redirectsnippet": "הוספת קטע קצר מפוענח משם ההפניה.",
+       "apihelp-query+search-paramvalue-prop-redirecttitle": "הוספת שם ההפניה התואמת.",
+       "apihelp-query+search-paramvalue-prop-sectionsnippet": "הוספת קטע קצר מפוענח של שם הפסקה התואמת.",
+       "apihelp-query+search-paramvalue-prop-sectiontitle": "הוספת שם הפסקה התואמת.",
+       "apihelp-query+search-paramvalue-prop-categorysnippet": "הוספת קטע קצר מפוענח של הקטגוריה התואמת.",
+       "apihelp-query+search-paramvalue-prop-isfilematch": "הוספת בוליאני שמציין אם החיפוש תאם לתוכן של קובץ.",
+       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">מיושן וחסר־תוקן.</span>",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">מיושן וחסר־תוקן.</span>",
        "apihelp-query+search-param-limit": "כמה דפים להחזיר בסך הכול.",
        "apihelp-query+search-param-interwiki": "לכלול תוצאות בינוויקי בחיפוש ם זמין.",
        "apihelp-query+search-param-backend": "באיזה שרת חיפוש להשתמש אם לא בבררת המחדל.",
        "apihelp-query+search-example-text": "חיפוש טקסטים עבור <kbd>meaning</kbd>.",
        "apihelp-query+search-example-generator": "קבלת מידע על הדף עבור שמוחזרים מחיפוש אחרי <kbd>meaning</kbd>.",
        "apihelp-query+siteinfo-description": "החזרת מידע כללי על האתר.",
-       "apihelp-query+siteinfo-param-prop": "איזה מיד לקבל:\n;general:מידע מערכת כללי.\n;namespaces:רשימת מרחבי שם רשומים והשמות הקנוניים שלהם.\n;namespacealiases:רשימת כינויי מרחבי שם רשומים.\n;specialpagealiases:רשימת כינויים דפים מיוחדים.\n;magicwords:רשימות מילות קסם וכינוייהן.\n;statistics:החזרזת סטטיסטיקות אתר.\n;interwikimap:החזרת מפת בינוויקי (אפשר שתהיה מסוננת, אפשר שתהיה מותאמת מקומית באמצעות <var>$1inlanguagecode</var>).\n;dbrepllag:החזרת שרת מסד־נתונים עם שיהוי השכפול הגבוה ביותר.\n;usergroups:החזרת קבוצות משתמשים וההרשאות המשויכות.\n;libraries:החזרת הספריות המותקנות בוויקי.\n;extensions:החזרת ההרחבות המותקנות בוויקי.\n;fileextensions:החזרת רשימת סיומות קבצים שאפשר להעלות.\n;rightsinfo:החזרת הזכויות (הרישיון) של הוויקי, אם זמין.\n;restrictions:החזרת מידע על ההגבלות (ההגנות) הזמינות.\n;languages:החזרת השפות שמדיה־ויקי תומכת בהן (זה יכול להיות מותאם מקומים עם <var>$1inlanguagecode</var>).\n;skins:החזרת רשימת כל העיצובים הזמינים (זה יכול להיות מותאם מקומית באמצעות <var>$1inlanguagecode</var>, אחרת זה יהיה בשפת התוכן).\n;extensiontags:החזרת רשימת תגי הרחבת מפענח.\n;functionhooks:החזרת hook־ים של הרחבות מפענח.\n;showhooks:החזרת כל ה־hook־ים המנויים (תוכן של <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).\n;variables:החזרת מזהי משתנים.\n;protocols:החזרת רשימת הפרוטוקולים המותרים בקישורים חיצוניים.\n;defaultoptions:החזרת הערכים ההתחלתיים של העדפות משתמש.",
+       "apihelp-query+siteinfo-param-prop": "איזה מיד לקבל:",
+       "apihelp-query+siteinfo-paramvalue-prop-general": "מידע מערכת כללי.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespaces": "רשימת מרחבי שם רשומים והשמות הקנוניים שלהם.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "רשימת כינויי מרחבי שם רשומים.",
+       "apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "רשימת כינויים דפים מיוחדים.",
+       "apihelp-query+siteinfo-paramvalue-prop-magicwords": "רשימות מילות קסם וכינוייהן.",
+       "apihelp-query+siteinfo-paramvalue-prop-statistics": "החזרזת סטטיסטיקות אתר.",
+       "apihelp-query+siteinfo-paramvalue-prop-interwikimap": "החזרת מפת בינוויקי (אפשר שתהיה מסוננת, אפשר שתהיה מותאמת מקומית באמצעות <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-dbrepllag": "החזרת שרת מסד־נתונים עם שיהוי השכפול הגבוה ביותר.",
+       "apihelp-query+siteinfo-paramvalue-prop-usergroups": "החזרת קבוצות משתמשים וההרשאות המשויכות.",
+       "apihelp-query+siteinfo-paramvalue-prop-libraries": "החזרת הספריות המותקנות בוויקי.",
+       "apihelp-query+siteinfo-paramvalue-prop-extensions": "החזרת ההרחבות המותקנות בוויקי.",
+       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "החזרת רשימת סיומות קבצים שאפשר להעלות.",
+       "apihelp-query+siteinfo-paramvalue-prop-rightsinfo": "החזרת הזכויות (הרישיון) של הוויקי, אם זמין.",
+       "apihelp-query+siteinfo-paramvalue-prop-restrictions": "החזרת מידע על ההגבלות (ההגנות) הזמינות.",
+       "apihelp-query+siteinfo-paramvalue-prop-languages": "החזרת השפות שמדיה־ויקי תומכת בהן (זה יכול להיות מותאם מקומים עם <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-skins": "החזרת רשימת כל העיצובים הזמינים (זה יכול להיות מותאם מקומית באמצעות <var>$1inlanguagecode</var>, אחרת זה יהיה בשפת התוכן).",
+       "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "החזרת רשימת תגי הרחבת מפענח.",
+       "apihelp-query+siteinfo-paramvalue-prop-functionhooks": "החזרת hook־ים של הרחבות מפענח.",
+       "apihelp-query+siteinfo-paramvalue-prop-showhooks": "החזרת כל ה־hook־ים המנויים (תוכן של <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-variables": "החזרת מזהי משתנים.",
+       "apihelp-query+siteinfo-paramvalue-prop-protocols": "החזרת רשימת הפרוטוקולים המותרים בקישורים חיצוניים.",
+       "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "החזרת הערכים ההתחלתיים של העדפות משתמש.",
        "apihelp-query+siteinfo-param-filteriw": "החזרה רק של עיולים מקומיים או רק של עיולים לא מקומיים ממפת הבינוויקי.",
        "apihelp-query+siteinfo-param-showalldb": "רשימת כל שרתי מסד הנתונים, לא רק אלה שהכי מתעכבים.",
        "apihelp-query+siteinfo-param-numberingroup": "רשימת מספרי משתמשים בקבוצות משתמשים.",
        "apihelp-query+stashimageinfo-example-params": "החזרת תמונות ממוזערות עבור שני קבצים מוסלקים.",
        "apihelp-query+tags-description": "רשימת תגי שינוי.",
        "apihelp-query+tags-param-limit": "המספר המרבי של תגים לרשום.",
-       "apihelp-query+tags-param-prop": "אילו מאפיינים לקבל:\n;name:הוספת שם התג.\n;displayname:הוספת הודעת המערכת עבור התג.\n;description:הוספת תיאור התג.\n;hitcount:הוספת מספר הגרסאות ועיולי היומן עם התג הזה.\n;defined:ציון האם התג מוגדר.\n;source:קבלת מקורות התג, שיכולים להיות <samp>extension</samp> עבור תגים שמגדירות הרחבות ו־<samp>manual</samp> עבור תגים שמשתמשים יכולים להחיל ידנית.\n;active:האם התג עדיין מוּחל.",
+       "apihelp-query+tags-param-prop": "אילו מאפיינים לקבל:",
+       "apihelp-query+tags-paramvalue-prop-name": "הוספת שם התג.",
+       "apihelp-query+tags-paramvalue-prop-displayname": "הוספת הודעת המערכת עבור התג.",
+       "apihelp-query+tags-paramvalue-prop-description": "הוספת תיאור התג.",
+       "apihelp-query+tags-paramvalue-prop-hitcount": "הוספת מספר הגרסאות ועיולי היומן עם התג הזה.",
+       "apihelp-query+tags-paramvalue-prop-defined": "ציון האם התג מוגדר.",
+       "apihelp-query+tags-paramvalue-prop-source": "קבלת מקורות התג, שיכולים להיות <samp>extension</samp> עבור תגים שמגדירות הרחבות ו־<samp>manual</samp> עבור תגים שמשתמשים יכולים להחיל ידנית.",
+       "apihelp-query+tags-paramvalue-prop-active": "האם התג עדיין מוּחל.",
        "apihelp-query+tags-example-simple": "רשימת תגים זמינים.",
        "apihelp-query+templates-description": "החזרת כל הדפים המוכללים בדפים הנתונים.",
        "apihelp-query+templates-param-namespace": "הצגת תבניות רק במרחב השם הזה.",
        "apihelp-query+tokens-example-simple": "אחזור אסימון csrf (בררת המחדל).",
        "apihelp-query+tokens-example-types": "אחזור אסימון של רשימת המעקב ואסימון של ניטור",
        "apihelp-query+transcludedin-description": "מציאת כל הדפים שמכלילים את הדפים הנתונים.",
-       "apihelp-query+transcludedin-param-prop": "אילו מאפיינים לקבל:\n;pageid:מזהה הדף של כל דף.\n;title:השם של כל דף.\n;redirect:דגל אם הדף הוא הפניה.",
+       "apihelp-query+transcludedin-param-prop": "אילו מאפיינים לקבל:",
+       "apihelp-query+transcludedin-paramvalue-prop-pageid": "מזהה הדף של כל דף.",
+       "apihelp-query+transcludedin-paramvalue-prop-title": "השם של כל דף.",
+       "apihelp-query+transcludedin-paramvalue-prop-redirect": "דגל אם הדף הוא הפניה.",
        "apihelp-query+transcludedin-param-namespace": "לכלול רק דפים במרחבי השם האלה.",
        "apihelp-query+transcludedin-param-limit": "כמה להחזיר.",
        "apihelp-query+transcludedin-param-show": "לחפש רק פריטים שמתאימים לאמות המידה הבאות:\n;redirect:להציג רק הפניות.\n;!redirect:לא להציג הפניות.",
        "apihelp-query+usercontribs-param-user": "עבור אילו משתמשים לאחזר תרומות.",
        "apihelp-query+usercontribs-param-userprefix": "אחזור תרומות עבור כל המשתמשים שהשמות שלהם מתחילים בערך הזה. דורס את $1user.",
        "apihelp-query+usercontribs-param-namespace": "לרשום רק תרומות במרחבי השם האלה.",
-       "apihelp-query+usercontribs-param-prop": "לכלול פריטי מידע נוספים:\n;ids:הוספת מזהה הדף ומזהה הגרסה.\n;title:הוספת השם ומזהה מרחב השם של הדף.\n;timestamp:הוספת חותם־הזמן של העריכה.\n;comment:הוספת ההערה על העריכה.\n;parsedcomment:הוספת ההערה המפוענחת של העריכה.\n;size:הוספת הגודל החדש של העריכה.\n;sizediff:הוספת ההפרש של העריכה אל מול ההורה שלה.\n;flags:הוספת הדגלים של העריכה.\n;patrolled:מתייג עריכות בדוקות.\n;tags:רשימת תגים עבור עריכות.",
+       "apihelp-query+usercontribs-param-prop": "לכלול פריטי מידע נוספים:",
+       "apihelp-query+usercontribs-paramvalue-prop-ids": "הוספת מזהה הדף ומזהה הגרסה.",
+       "apihelp-query+usercontribs-paramvalue-prop-title": "הוספת השם ומזהה מרחב השם של הדף.",
+       "apihelp-query+usercontribs-paramvalue-prop-timestamp": "הוספת חותם־הזמן של העריכה.",
+       "apihelp-query+usercontribs-paramvalue-prop-comment": "הוספת ההערה על העריכה.",
+       "apihelp-query+usercontribs-paramvalue-prop-parsedcomment": "הוספת ההערה המפוענחת של העריכה.",
+       "apihelp-query+usercontribs-paramvalue-prop-size": "הוספת הגודל החדש של העריכה.",
+       "apihelp-query+usercontribs-paramvalue-prop-sizediff": "הוספת ההפרש של העריכה אל מול ההורה שלה.",
+       "apihelp-query+usercontribs-paramvalue-prop-flags": "הוספת הדגלים של העריכה.",
+       "apihelp-query+usercontribs-paramvalue-prop-patrolled": "מתייג עריכות בדוקות.",
+       "apihelp-query+usercontribs-paramvalue-prop-tags": "רשימת תגים עבור עריכות.",
        "apihelp-query+usercontribs-param-show": "הצגה רק של פריטים שמתאימים לאמות המידה האלה, למשל רק עריכות לא־משניות.\n\nאם מוגדר <kbd>$2show=patrolled</kbd> או <kbd>$2show=!patrolled</kbd>, גרסאות ישנות מ־<var dir=\"ltr\">[[mw:Manual:$wgRCMaxAge|$wgRCMaxAge]]</var>‏ ({{PLURAL:$1|שנייה אחת|$1 שניות}}) לא תוצגנה.",
        "apihelp-query+usercontribs-param-tag": "לרשום רק גרסאות עם התג הזה.",
        "apihelp-query+usercontribs-param-toponly": "לרשום רק שינויים שהם הגרסה האחרונה.",
        "apihelp-query+usercontribs-example-user": "הצגת התרומות של המשתמש <kbd>Example</kbd>.",
        "apihelp-query+usercontribs-example-ipprefix": "הצגת תרומות מכל כתובות ה־IP שמתחילות ב־<kbd dir=\"ltr\">192.0.2.</kbd>.",
        "apihelp-query+userinfo-description": "קבלת מידע על המשתמש הנוכחי.",
-       "apihelp-query+userinfo-param-prop": "אילו חלקי מידע לכלול:\n;blockinfo:מתייג אם המשתמש הנוכחי נחסם, על־ידי מי ומאיזו סיבה.\n;hasmsg:הוספת התג <samp>messages</samp> אם למשתמש הנוכחי יש הודעות ממתינות.\n;groups:רשימת כל הקבוצות שהמשתמש שייך אליהן.\n;implicitgroups:רשימת כל הקבוצות שהמשתמש שייך אליהן באופן אוטומטי.\n;rights:רשימת כל ההרשאות שיש למשתמש הזה.\n;changeablegroups:רשימת הקבוצות שהמשתמש הנוכחי יכול להוסיף אליהן ולגרוע מהן.\n;options:רשימת כל ההעדפות שהמשתמש הנוכחי הגדיר.\n;preferencestoken:<span class=\"apihelp-deprecated\">מיושן.</span> קבלת אסימון לשינוי ההעדפות של המשתמש הנוכחי.\n;editcount:הוספת מניין העריכות של המשתמש הנוכחי.\n;ratelimits:רשימת כל מגבלות הקצב שחלות על המשתמש הנוכחי.\n;realname:הוספת השם האמתי של המשתמש.\n;email:הוספת כתובת הדוא\"ל ותאריך אימות כתובת הדוא\"ל.\n;acceptlang:מדפיס את כותרת <code>Accept-Language</code> ששלח הלקוח בתסדיר מובנה.\n;registrationdate:הוספת תאריך הרישום של המשתמש.\n;unreadcount:הוספת מניין הדפים שלא נקראו ברשימת המעקב של המשתמש (לכל היותר $1; מחזיר <samp>$2</samp> אם יש יותר).",
+       "apihelp-query+userinfo-param-prop": "אילו חלקי מידע לכלול:",
+       "apihelp-query+userinfo-paramvalue-prop-blockinfo": "מתייג אם המשתמש הנוכחי נחסם, על־ידי מי ומאיזו סיבה.",
+       "apihelp-query+userinfo-paramvalue-prop-hasmsg": "הוספת התג <samp>messages</samp> אם למשתמש הנוכחי יש הודעות ממתינות.",
+       "apihelp-query+userinfo-paramvalue-prop-groups": "רשימת כל הקבוצות שהמשתמש שייך אליהן.",
+       "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "רשימת כל הקבוצות שהמשתמש שייך אליהן באופן אוטומטי.",
+       "apihelp-query+userinfo-paramvalue-prop-rights": "רשימת כל ההרשאות שיש למשתמש הזה.",
+       "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "רשימת הקבוצות שהמשתמש הנוכחי יכול להוסיף אליהן ולגרוע מהן.",
+       "apihelp-query+userinfo-paramvalue-prop-options": "רשימת כל ההעדפות שהמשתמש הנוכחי הגדיר.",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">מיושן.</span> קבלת אסימון לשינוי ההעדפות של המשתמש הנוכחי.",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "הוספת מניין העריכות של המשתמש הנוכחי.",
+       "apihelp-query+userinfo-paramvalue-prop-ratelimits": "רשימת כל מגבלות הקצב שחלות על המשתמש הנוכחי.",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "הוספת השם האמתי של המשתמש.",
+       "apihelp-query+userinfo-paramvalue-prop-email": "הוספת כתובת הדוא\"ל ותאריך אימות כתובת הדוא\"ל.",
+       "apihelp-query+userinfo-paramvalue-prop-acceptlang": "מדפיס את כותרת <code>Accept-Language</code> ששלח הלקוח בתסדיר מובנה.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "הוספת תאריך הרישום של המשתמש.",
+       "apihelp-query+userinfo-paramvalue-prop-unreadcount": "הוספת מניין הדפים שלא נקראו ברשימת המעקב של המשתמש (לכל היותר $1; מחזיר <samp>$2</samp> אם יש יותר).",
        "apihelp-query+userinfo-example-simple": "קבלת מידע על המשתמש הנוכחי.",
        "apihelp-query+userinfo-example-data": "קבלת מידע נוסף על המשתמש הנוכחי.",
        "apihelp-query+users-description": "קבלת מידע על רשימת משתמשים.",
-       "apihelp-query+users-param-prop": "אילו חלקי מידע לקבל:\n;blockinfo:מתייג אם המשתמש חסום, על־ידי מי, ומאיזו סיבה.\n;groups:רשימת כל הקבוצות שהמשתמש שייך אליהן.\n;implicitgroups:רשימת כל הקבוצות שהמשתמש חבר בהן אוטומטית.\n;rights:רשימת כל ההרשאות שיש למשתמש.\n;editcount:הוספת מניין העריכות של המשתמש.\n;registration:הוספת חותם־הזמן של רישום המשתמש.\n;emailable:מתייג אם המשתמש יכול ורוצה לקבל דואר אלקטרוני דרך [[Special:Emailuser]].\n;gender:מתייג את המגדר של המשתמש. מחזיר \"male\"‏, \"female\" או \"unknown\".",
+       "apihelp-query+users-param-prop": "אילו חלקי מידע לקבל:",
+       "apihelp-query+users-paramvalue-prop-blockinfo": "מתייג אם המשתמש חסום, על־ידי מי, ומאיזו סיבה.",
+       "apihelp-query+users-paramvalue-prop-groups": "רשימת כל הקבוצות שהמשתמש שייך אליהן.",
+       "apihelp-query+users-paramvalue-prop-implicitgroups": "רשימת כל הקבוצות שהמשתמש חבר בהן אוטומטית.",
+       "apihelp-query+users-paramvalue-prop-rights": "רשימת כל ההרשאות שיש למשתמש.",
+       "apihelp-query+users-paramvalue-prop-editcount": "הוספת מניין העריכות של המשתמש.",
+       "apihelp-query+users-paramvalue-prop-registration": "הוספת חותם־הזמן של רישום המשתמש.",
+       "apihelp-query+users-paramvalue-prop-emailable": "מתייג אם המשתמש יכול ורוצה לקבל דואר אלקטרוני דרך [[Special:Emailuser]].",
+       "apihelp-query+users-paramvalue-prop-gender": "מתייג את המגדר של המשתמש. מחזיר \"male\"‏, \"female\" או \"unknown\".",
        "apihelp-query+users-param-users": "רשימת משתמשים שעליהם צריך לקבל מידע.",
        "apihelp-query+users-param-token": "יש להשתמש ב־<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> במקום.",
        "apihelp-query+users-example-simple": "החזרת מידע עבור המשתמש <kbd>Example</kbd>.",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "הוספת חותם־זמן של ההודעה האחרונה למשתמש על העריכה.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "הוספת מידע מהיומן איפה שמתאים.",
        "apihelp-query+watchlist-param-show": "הצגה רק של פריטים שמתאימים לאמות המידה האלו. למשל, כדי לראות רק עריכות משניות שעשו משתמשים שנכנסו לחשבון, יש להגדיר $1show=minor|!anon.",
-       "apihelp-query+watchlist-param-type": "אולי סוגי שינויים להציג:\n;edit:עריכות דף רגילות.\n;external:שינויים חיצוניים.\n;new:יצירות דף.\n;log:עיולי יומן.\n;categorize:שינויים בחברות בקטגוריה.",
+       "apihelp-query+watchlist-param-type": "אולי סוגי שינויים להציג:\n;edit:עריכות דף רגילות.\n;external:שינויים חיצוניים.\n;new:יצירות דף.\n;log:עיולי יומן.",
        "apihelp-query+watchlist-param-owner": "משמש יחד עם $1token לגישה לרשימת מעקב של משתמש אחר.",
        "apihelp-query+watchlist-param-token": "אסימון אבטחה (זמין ב־[[Special:Preferences#mw-prefsection-watchlist|העדפות]]) שמאפשר לגשת לרשימת מעקב של משתמש אחר.",
        "apihelp-query+watchlist-example-simple": "לרשום את הגרסה האחרונה עבור דפים שהשתנו לאחרונה ברשימת המעקב של המשתמש הנוכחי.",
        "apihelp-query+watchlistraw-description": "קבלת כל הדפים ברשימת המעקב של המשתמש הנוכחי.",
        "apihelp-query+watchlistraw-param-namespace": "לרשום רק דפים במרחב השם הנתון.",
        "apihelp-query+watchlistraw-param-limit": "כמה תוצאות סך הכול להחזיר בכל בקשה.",
-       "apihelp-query+watchlistraw-param-prop": "אילו מאפיינים נוספים לקבל:\n;changed:הוספת חותם־הזמן של ההודעה האחרונה למשתמש על העריכה.",
+       "apihelp-query+watchlistraw-param-prop": "אילו מאפיינים נוספים לקבל:",
+       "apihelp-query+watchlistraw-paramvalue-prop-changed": "הוספת חותם־הזמן של ההודעה האחרונה למשתמש על העריכה.",
        "apihelp-query+watchlistraw-param-show": "לרשום רק פריטים שעונים על אמות המידה האלו.",
        "apihelp-query+watchlistraw-param-owner": "משמש יחד עם $1token לגישה לרשימת מעקב של משתמש אחר.",
        "apihelp-query+watchlistraw-param-token": "אסימון אבטחה (זמין ב־[[Special:Preferences#mw-prefsection-watchlist|העדפות]]) שמאפשר לגשת לרשימת מעקב של משתמש אחר.",
index 483b260..ddaecde 100644 (file)
@@ -7,7 +7,8 @@
                        "LiteHell",
                        "Ysjbserver",
                        "Alex00728",
-                       "Hwangjy9"
+                       "Hwangjy9",
+                       "Kurousagi"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [https://www.mediawiki.org/wiki/API:Main_page 설명문서]\n* [https://www.mediawiki.org/wiki/API:FAQ FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 메일링 리스트]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API 공지 사항] * [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 버그 및 요청] </div>\n<strong>상태:</strong> 이 페이지에 표시된 모든 기능은 정상 작동할 것이지만, API는 여전히 활발하게 개발되고 있으며, 언제든지 바뀔 수 있습니다. 업데이트 정보를 받아보려면 [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce 메일링 리스트]를 구독하십시오.\n\n<strong>잘못된 요청:</strong> API에 잘못된 요청이 전송되면 HTTP 헤더에서 \"MediaWiki-API-Error\" 키를 보내고, 헤더 값과 오류 코드가 같게 설정됩니다. 자세한 정보에 대해서는 https://www.mediawiki.org/wiki/API:Errors_and_warnings 를 참고하십시오.",
        "apihelp-edit-param-unwatch": "문서를 현재 사용자의 주시문서 목록에서 제거합니다.",
        "apihelp-edit-example-edit": "문서 편집",
        "apihelp-emailuser-description": "사용자에게 이메일을 보냅니다.",
-       "apihelp-emailuser-param-target": "ì\9d´ë©\94ì\9d¼ì\9d\84 ë³´ë\82¼ 사용자.",
+       "apihelp-emailuser-param-target": "ì\9d´ë©\94ì\9d¼ì\9d\84 ë°\9bì\9d\84 사용자.",
        "apihelp-expandtemplates-param-title": "문서 제목",
        "apihelp-expandtemplates-param-text": "변환할 위키텍스트.",
        "apihelp-feedrecentchanges-param-hideminor": "사소한 편집을 숨깁니다.",
-       "apihelp-feedrecentchanges-param-hidebots": "봇 편집을 숨깁니다.",
+       "apihelp-feedrecentchanges-param-hidebots": "봇 편집을 숨깁니다.",
        "apihelp-feedrecentchanges-param-hideanons": "익명 사용자의 편집을 숨깁니다.",
        "apihelp-feedrecentchanges-param-hideliu": "등록된 사용자의 편집을 숨깁니다.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "검토된 편집을 숨깁니다.",
index b005a4a..44324cc 100644 (file)
        "apihelp-feedrecentchanges-param-days": "Wadd eruß küdd op di Dähsch enschrängke.",
        "apihelp-feedrecentchanges-param-limit": "De hühßte Aanzahl vun Äjeebnesse för zeröck ze jävve",
        "apihelp-feedrecentchanges-param-from": "Zeijsch de Änderonge zigg dämm.",
-       "apihelp-feedrecentchanges-param-hideminor": "De kein Minni_Änderonge verschteijsche.",
+       "apihelp-feedrecentchanges-param-hideminor": "De kleine Minni_Ännderonge verschteijsche.",
        "apihelp-feedrecentchanges-param-hidebots": "Änderonge ußschlehße, di vun Bots jemaht wohde.",
        "apihelp-feedrecentchanges-param-hideanons": "Änderonge ußschlehße, di vun nahmelohse Metmaacher jemaht wohde.",
        "apihelp-feedrecentchanges-param-hideliu": "Änderonge ußschlehße, di vun aanjemälldete Metmaacher jemaht wohde.",
        "apihelp-query+allcategories-param-min": "Jiff blohß Saachjroppe us, di winneschsdens esu vill Metjlehder han.",
        "apihelp-query+allcategories-param-max": "Jiff blohß Saachjroppe us, di et mihts esu vill Metjlehder han.",
        "apihelp-query+allcategories-param-limit": "Wi vell Saachjroppe ußjävve?",
-       "apihelp-query+allcategories-param-prop": "Wat för en Eijeschaffte holle: \n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">size</code>:Deiht de Aanzahl Sigge en dä Saachjropp derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">hidden</code>:Makehrt de veschtoche Sachjroppe met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">_&#95;HIDDENCAT_&#95;</code>“.",
+       "apihelp-query+allcategories-param-prop": "Wat för en Eijeschaffte holle:",
+       "apihelp-query+allcategories-paramvalue-prop-size": "Deiht de Aanzahl Sigge en dä Saachjropp derbei.",
+       "apihelp-query+allcategories-paramvalue-prop-hidden": "Makehrt de veschtoche Sachjroppe met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">_&#95;HIDDENCAT_&#95;</code>“.",
        "apihelp-query+allcategories-example-generator": "Holl Ennfommazjuhne övver di Saaachjroppe_Sigg för Saachjroppe, di met „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">List</kbd>“ bejenne.",
        "apihelp-query+alldeletedrevisions-description": "Donn alle fottjeschmeße Väsjohne vun enem Metmaacher udder en enem Appachemang opleßte.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Kam_mer blohß met <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$3user</var> bruche.",
        "apihelp-query+allfileusages-param-to": "De Övverschreff vun dä Dattei, woh de Leß medd ophühre sull.",
        "apihelp-query+allfileusages-param-prefix": "Söhk noh alle Övverschreffte, di met heh däm Täx aanfange.",
        "apihelp-query+allfileusages-param-unique": "Donn blohß ongerscheidlijje Övverschreffte vun Datteije aanzeije. Kammer nit zesamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1prop=ids<code>“ bruche.\nWann als ene Jenerahtor ennjesaz, brängk et Zihlsigge, un kein Kwällesigge.",
-       "apihelp-query+allfileusages-param-prop": "Wat för en Aanjahbe ennschlehße:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">ids</code>:Deiht de Kännonge vun dä Sigge derbei, di dat bruche. Kam_mer nit zersamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1unique</code>“ bruche.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">title</code>:Deiht dä Dattei ehr Övverschreff derbei.",
+       "apihelp-query+allfileusages-param-prop": "Wat för en Aanjahbe ennschlehße:",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "Deiht de Kännonge vun dä Sigge derbei, di dat bruche. Kam_mer nit zersamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1unique</code>“ bruche.",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "Deiht dä Dattei ehr Övverschreff derbei.",
        "apihelp-query+allfileusages-param-limit": "Wi vill sulle överhoup aanjezeisch wähde?",
        "apihelp-query+allfileusages-param-dir": "En wälsche Reijefollsch?",
        "apihelp-query+allfileusages-example-B": "Donn Övverschreffte vun Datteije aanzeije, och vun Datteije, di (noch) nit doh sin, zesame met dä Kännonge vun dä Sigge, woh se vun sin, aanjevange vun <kbd>B</kbd>.",
        "apihelp-query+alllinks-param-to": "De Övverschreff vun dä Dattei, woh et Zälle ophühre sull.",
        "apihelp-query+alllinks-param-prefix": "Söhk noh alle verlengk Övverschreffte, di met heh däm Täx aanfange.",
        "apihelp-query+alllinks-param-unique": "Zeijsch blohß de ongerscheidlijje verlengk Sigge ier Övverschreffte. Kam_mer nit zesamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1prop=ids</code>“ bruche. Wam_mer et als ene  Jenerahtor bruche deiht, kritt mer Zihlsiggge anschtatt vun Quällesigge.",
-       "apihelp-query+alllinks-param-prop": "Wat för en Aanjahbe ennschlehße:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">ids</code>:Deiht de Kännonge vun dä Sigge met däm Lengk derbei. Kam_mer nit zersamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1unique</code>“ bruche.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">title</code>:Deiht däm lengk sing Övverschreff derbei.",
+       "apihelp-query+alllinks-param-prop": "Wat för en Aanjahbe ennschlehße:",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "Deiht de Kännonge vun dä Sigge met däm Lengk derbei. Kam_mer nit zersamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1unique</code>“ bruche.",
+       "apihelp-query+alllinks-paramvalue-prop-title": "Deiht däm lengk sing Övverschreff derbei.",
        "apihelp-query+alllinks-param-namespace": "Dat Appachtemang zom opzälle.",
        "apihelp-query+alllinks-param-limit": "Wi vill sulle överhoup aanjezeisch wähde?",
        "apihelp-query+alllinks-param-dir": "En wälsche Reijefollsch?",
        "apihelp-query+alltransclusions-param-to": "De Övverschreff vun dä ennjeföhschte Sigg, woh et Zälle ophühre sull.",
        "apihelp-query+alltransclusions-param-prefix": "Söhk noh alle dä ennjeföhschte Sigge ier Övverschreffte, di met heh däm Täx aanfange.",
        "apihelp-query+alltransclusions-param-unique": "Zeijsch blohß de ongerscheidlijje ennjeföhschte Sigge ier Övverschreffte. Kam_mer nit zesamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1prop=ids</code>“ bruche. Wam_mer et als ene  Jenerahtor bruche deiht, kritt mer Zihlsiggge anschtatt vun Quällesigge.!FUZZY!!",
-       "apihelp-query+alltransclusions-param-prop": "Wat för en Aanjahbe ennschlehße:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">ids</code>:Deiht de Kännonge vun dä Sigg derbei, di dat bruch. Kam_mer nit zersamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1unique</code>“ bruche.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">title</code>:Deiht de Övverschreff vun dä jebruchte Sigg derbei.",
+       "apihelp-query+alltransclusions-param-prop": "Wat för en Aanjahbe ennschlehße:",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "Deiht de Kännonge vun dä Sigg derbei, di dat bruch. Kam_mer nit zersamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1unique</code>“ bruche.",
+       "apihelp-query+alltransclusions-paramvalue-prop-title": "Deiht de Övverschreff vun dä jebruchte Sigg derbei.",
        "apihelp-query+alltransclusions-param-namespace": "Dat Appachtemang zom opzälle.",
        "apihelp-query+alltransclusions-param-limit": "Wi vill sulle överhoup aanjezeisch wähde?",
        "apihelp-query+alltransclusions-param-dir": "En wälsche Reijefollsch?",
        "apihelp-query+blocks-param-users": "Leß vun dä Metmaacher för dernoh ze söhke. Kann fott blihve.",
        "apihelp-query+blocks-param-ip": "Holl alle Schpärre för heh di <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß udder heh dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Classless Inter-Domain Routing\">CIDR</i>-Berätt, och Schpärre vun Berätte. Kam_mer nit zesamme met „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$3users</var>“ bruche. <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Classless Inter-Domain Routing\">CIDR</i>-Berätte vun mieh wi <code dir=\"ltr\">IPv4/$1</code> udder <code dir=\"ltr\">IPv6/$2</code> wähde nit aanjenumme.",
        "apihelp-query+blocks-param-limit": "De hühßde Aanzahl Spärre zom opleste.",
-       "apihelp-query+blocks-param-prop": "Wat för en Eijeschaffte holle:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">id</code>:Deiht dä Spärr iehr Kännonge derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">user</code>:Deiht dä Nahme vom jeschpächte Metmaacher derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">userid</code>:Deiht de Kännong vum jeschpächte Metmaacher derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">by</code>:Deiht dä Nahme vun däm Metmaacher derbei, dä jeschpächt hät.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">byid</code>:Deiht de Kännong vun däm Metmaacher derbei, dä jeschpächt hät.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">timestamp</code>:Deihd et Dattum un de Uhrzigg derbei, wann jeschpächt wood.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">expiry</code>:Deihd et Dattum un de Uhrzigg derbei, wann di Schparr eröm es.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">reason</code>:Deiht der Jrond för di Schparr derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">range</code>:Deiht dä Berätt vun <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße för di Schparr derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">flags</code>:makkehrt di Spärr met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">autoblock</code>“, „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">anononly</code>“, un esu.",
+       "apihelp-query+blocks-param-prop": "Wat för en Eijeschaffte holle:",
+       "apihelp-query+blocks-paramvalue-prop-id": "Deiht dä Spärr iehr Kännonge derbei.",
+       "apihelp-query+blocks-paramvalue-prop-user": "Deiht dä Nahme vom jeschpächte Metmaacher derbei.",
+       "apihelp-query+blocks-paramvalue-prop-userid": "Deiht de Kännong vum jeschpächte Metmaacher derbei.",
+       "apihelp-query+blocks-paramvalue-prop-by": "Deiht dä Nahme vun däm Metmaacher derbei, dä jeschpächt hät.",
+       "apihelp-query+blocks-paramvalue-prop-byid": "Deiht de Kännong vun däm Metmaacher derbei, dä jeschpächt hät.",
+       "apihelp-query+blocks-paramvalue-prop-timestamp": "Deihd et Dattum un de Uhrzigg derbei, wann jeschpächt wood.",
+       "apihelp-query+blocks-paramvalue-prop-expiry": "Deihd et Dattum un de Uhrzigg derbei, wann di Schparr eröm es.",
+       "apihelp-query+blocks-paramvalue-prop-reason": "Deiht der Jrond för di Schparr derbei.",
+       "apihelp-query+blocks-paramvalue-prop-range": "Deiht dä Berätt vun <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße för di Schparr derbei.",
+       "apihelp-query+blocks-paramvalue-prop-flags": "makkehrt di Spärr met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">autoblock</code>“, „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">anononly</code>“, un esu.",
        "apihelp-query+blocks-example-simple": "Schpärre opleßte.",
        "apihelp-query+blocks-example-users": "Donn de Schpärre vun dä Metmaacher <lang=\"en\" xml:lang=\"en\" dir=\"ltr\" kbd>Alice</kbd> un <lang=\"en\" xml:lang=\"en\" dir=\"ltr\" kbd>Bob</kbd> opleßte.",
        "apihelp-query+categories-description": "Donn alle Saachjroppe epleßte, woh di Sigge dren sin.",
-       "apihelp-query+categories-param-prop": "Wat för en zohsäzlejje Eijeschaffte holle för jehde Saachjropp:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">sortkey</code>:Deiht dä Schlößel zom Zottehre vun dä Saachjropp derbei, en lange häxadezimahle Zahl, un der Schlößelvörsaz, woh ene Minsch jät med aanfange kann.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">timestamp</code>:Deihd en Dattom un en Zigg derbei, wann di Sachjrobb aanjelaat woode es.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">hidden</code>:Makehrt de veschtoche Sachjroppe met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">_&#95;HIDDENCAT_&#95;</code>“.",
+       "apihelp-query+categories-param-prop": "Wat för en zohsäzlejje Eijeschaffte holle för jehde Saachjropp:",
+       "apihelp-query+categories-paramvalue-prop-sortkey": "Deiht dä Schlößel zom Zottehre vun dä Saachjropp derbei, en lange häxadezimahle Zahl, un der Schlößelvörsaz, woh ene Minsch jät med aanfange kann.",
+       "apihelp-query+categories-paramvalue-prop-timestamp": "Deihd en Dattom un en Zigg derbei, wann di Sachjrobb aanjelaat woode es.",
+       "apihelp-query+categories-paramvalue-prop-hidden": "Makehrt de veschtoche Sachjroppe met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">_&#95;HIDDENCAT_&#95;</code>“.",
        "apihelp-query+categories-param-show": "Wat för en Zoot Saachjroppe zeije.",
        "apihelp-query+categories-param-limit": "Wi vell Saachjroppe ußjävve?",
        "apihelp-query+categories-param-categories": "Donn blohß heh di Saachjroppe opleßte. Dadd es johd, öm eruß ze fenge ovv en beschtemmpte Sigg en en beschtemmpte Saachjropp dren es.",
        "apihelp-query+extlinks-param-limit": "Wi vill Lengks ußjävve?",
        "apihelp-query+extlinks-example-simple": "Holl en Leß met Lengks noh ußerhallef vum Wikki uß dä Sigg „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main Page</kbd>“.",
        "apihelp-query+exturlusage-description": "Donn alle Sigge upzälle med däm aanjejovve<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i> dren.",
+       "apihelp-query+exturlusage-param-prop": "Wat för en Aanjahbe med enzschlehße:",
        "apihelp-query+exturlusage-param-protocol": "Dat Schehma uß däm <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i>. Wann et läddesch jelohße es un „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1query</var>“ aanjejogge es, es dat Schehma „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Transfer Protocol\">http</kbd>“. Lohß beeds dat un „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">1query</var>“ läddesch, öm alle Lengks noh ußerhallef opzeleßte.",
        "apihelp-query+exturlusage-param-namespace": "Dat appachtemang met dä Sigge zom opzälle.",
        "apihelp-query+exturlusage-param-limit": "Wi vill Sigge zem ußjävve?",
        "apihelp-query+filearchive-param-dir": "En wälsche Reijefollsch opleßte.",
        "apihelp-query+filearchive-param-sha1": "Däm Beld singe <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"secure hash algorithm\">SHA-1</i>-Pröhvsomm. Övverjeiht „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1sha1base36</code>“.",
        "apihelp-query+filearchive-param-sha1base36": "Däm Beld singe <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"secure hash algorithm\">SHA-1</i>-Pröhvsomm em 36-jer Zahlesüßtehm. Weed em Mehdiajwikki jebruch.",
-       "apihelp-query+filearchive-param-prop": "Wat för en Aanjahbe zum Beld holle:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">sha1</code>:Deiht dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"secure hash algorithm\">SHA-1 (base 16)</i> vun dä Väsjohn vn däm Beld derbei.\n;timestamp:Adds timestamp for the uploaded version.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">user</code>:Deiht dä Metmaacher derbei, dä di Väsjohn huhjelahde hät.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">size</code>:Deiht de Aanzahl <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Bytes</i> vun dä Dattei derbei, un, wann bikannt, de Hühde, de Wiggde, un de Aanzahl Sigge.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">dimensions</code>:Et sällve, wi <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">size</code>.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">description</code>:Adds description för di Väsjohn vun däm Beld.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">parseddescription</code>:Parse the description för di Väsjohn vun däm Beld.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">mime</code>:Adds MIME vun däm Beld.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">mediatype</code>:Adds the media type vun däm Beld.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">metadata</code>:Deiht de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Exchangeable image file format\">EXIF</i>-Mettadahte för di Väsjohn vun däm Beld opleßte.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">bitdepth</code>:deiht de bit depth för di Väsjohn derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">archivename</code>:Deiht dä Nahme vun dä Dattei vun dä Aschihf_Väsjohn för alle Väsjohne, bes op de läzde, derbei.",
+       "apihelp-query+filearchive-param-prop": "Wat för en Aanjahbe zom Beld holle:",
+       "apihelp-query+filearchive-paramvalue-prop-sha1": "Deiht dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"secure hash algorithm\">SHA-1 (base 16)</i> vun dä Väsjohn vn däm Beld derbei.",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "Adds timestamp for the uploaded version.",
+       "apihelp-query+filearchive-paramvalue-prop-user": "Deiht dä Metmaacher derbei, dä di Väsjohn huhjelahde hät.",
+       "apihelp-query+filearchive-paramvalue-prop-size": "Deiht de Aanzahl <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Bytes</i> vun dä Dattei derbei, un, wann bikannt, de Hühde, de Wiggde, un de Aanzahl Sigge.",
+       "apihelp-query+filearchive-paramvalue-prop-dimensions": "Et sällve, wi <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">size</code>.",
+       "apihelp-query+filearchive-paramvalue-prop-description": "Adds description för di Väsjohn vun däm Beld.",
+       "apihelp-query+filearchive-paramvalue-prop-parseddescription": "Parse the description för di Väsjohn vun däm Beld.",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "Adds MIME vun däm Beld.",
+       "apihelp-query+filearchive-paramvalue-prop-mediatype": "Adds the media type vun däm Beld.",
+       "apihelp-query+filearchive-paramvalue-prop-metadata": "Deiht de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Exchangeable image file format\">EXIF</i>-Mettadahte för di Väsjohn vun däm Beld opleßte.",
+       "apihelp-query+filearchive-paramvalue-prop-bitdepth": "deiht de bit depth för di Väsjohn derbei.",
+       "apihelp-query+filearchive-paramvalue-prop-archivename": "Deiht dä Nahme vun dä Dattei vun dä Aschihf_Väsjohn för alle Väsjohne, bes op de läzde, derbei.",
        "apihelp-query+filearchive-example-simple": "Zeijsch en leß met alle fottjeschmeße Datteije.",
        "apihelp-query+filerepoinfo-example-simple": "Holl ennfommazjuhne övver de Reppossetohreje met Datteije.",
        "apihelp-query+fileusage-description": "Fengk alle Sigge, di de aanjejovve Datteije bruche.",
        "apihelp-query+iwbacklinks-param-prefix": "De Engerwikki_Vörsaz.",
        "apihelp-query+iwbacklinks-param-title": "Der Engerwikki_Lengk för noh ze söhke. Moß met „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1blprefix</var>“ zersamme jebruch wähde.",
        "apihelp-query+iwbacklinks-param-limit": "Wi vill Sigge ensjesammp zem ußjävve?",
-       "apihelp-query+iwbacklinks-param-prop": "Wat för en Eijeschaffte holle:\n;iwprefix:Deiht dä Engerwikki_Vörsaz derbei.\n;iwtitle:Deiht de Engerwikki_Övverschreff derbei.",
+       "apihelp-query+iwbacklinks-param-prop": "Wat för en Eijeschaffte holle:",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Deiht dä Engerwikki_Vörsaz derbei.",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Deiht de Engerwikki_Övverschreff derbei.",
        "apihelp-query+iwbacklinks-param-dir": "En wälsche Reihjefollsch opleßte.",
        "apihelp-query+iwbacklinks-example-simple": "Holl Sigge, di op „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">[[wikibooks:Test]]</code>“ verlengke.",
        "apihelp-query+iwbacklinks-example-generator": "Holl Ennfommazjuhne övver Sigge, di op „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">[[wikibooks:Test]]</code>“ verlengke.",
        "apihelp-query+links-param-titles": "Donn blohß e Lengks of heh di Övverschreffte opleßte. Dadd es johd, öm eruß ze fenge ovv en en beschtemmpte Sigg op ene beschtemmpte Övverschreff verlengk es.",
        "apihelp-query+links-param-dir": "En wälsche Reihjefollsch opleßte.",
        "apihelp-query+linkshere-description": "Fengk alle Sigge, di op de aanjejovve Sigge lengke.",
-       "apihelp-query+linkshere-param-prop": "Wat för en Eijeschaffte holle:\n;pageid:Page ID of each page.\n;title:Title of each page.\n;redirect:Flag if the page is a redirect.",
+       "apihelp-query+linkshere-param-prop": "Wat för en Eijeschaffte holle:",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "Page ID of each page.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "Title of each page.",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "Flag if the page is a redirect.",
        "apihelp-query+linkshere-param-namespace": "Donn blohß Sigge en heh dä Appachtemangs metnämme.",
        "apihelp-query+linkshere-param-limit": "Wi vill holle?",
        "apihelp-query+linkshere-example-simple": "Holl en Leß vun Sigge, di op de Sigg „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">[[Main Page]]</code>“ lengke donn.",
        "apihelp-query+pageprops-description": "Jitt devärse Eijeschafte uß, di em Ennhald vun dä Sigg faßjelaat wohde sen.",
        "apihelp-query+pageprops-example-simple": "Holl de Eijeschaffte för di Sigge „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main Page</kbd>“ un „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">MediaWiki</kbd>“.",
        "apihelp-query+pageswithprop-description": "Donn alle Sigge met bechtemmpte Sigge_Eijeschaff opleßte.",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "Deiht de Kännong vun de Sigge derbei.",
        "apihelp-query+pageswithprop-param-limit": "De jrüüßte Zahl Sigge för ußzejävve.",
        "apihelp-query+pageswithprop-param-dir": "En wälsche Reihjefollsch opleßte.",
        "apihelp-query+pageswithprop-example-generator": "Holl zohsäzlejje Aanjahbe övver de eezde zehn Sigge, woh <code>_&#95;NOTOC_&#95;</code> dren vörkütt.",
        "apihelp-query+recentchanges-param-toponly": "Bloß Änderonge aanzeije, woh de neußte Väsjohn beij eruß kohm.",
        "apihelp-query+recentchanges-example-simple": "Zeijsch de {{LCFIRST:{{int:recentchanges}}}}",
        "apihelp-query+redirects-description": "Jiff alle Ömleijdonge noh dä aanjejovve Sigge uß.",
-       "apihelp-query+redirects-param-prop": "Wat för en Eijeschaffte holle:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">pageid</code>:De Sigge_Kännong för jehde Ömleijdong.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">title</code>:De Övverschreff för jehde Ömleijdong.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">fragment</code>:Der Fragmännd_Aandeijl för jehde Ömleijdong, wann eine doh es.",
+       "apihelp-query+redirects-param-prop": "Wat för en Eijeschaffte holle:",
+       "apihelp-query+redirects-paramvalue-prop-pageid": "De Sigge_Kännong för jehde Ömleijdong.",
+       "apihelp-query+redirects-paramvalue-prop-title": "De Övverschreff för jehde Ömleijdong.",
+       "apihelp-query+redirects-paramvalue-prop-fragment": "Der Fragmännd_Aandeijl för jehde Ömleijdong, wann eine doh es.",
        "apihelp-query+redirects-param-namespace": "Donn blohß Sigge en heh dä Appachtemangs metnämme.",
        "apihelp-query+redirects-param-limit": "Wi vell Ömeijdonge ußjävve?",
        "apihelp-query+redirects-param-show": "Zeijsch blohß de Ömleijdonge:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">fragment</code>:med enem Fragmännd_Aandeijl.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">!fragment</code>:der ohne ene Fragmännd_Aandeijl.",
        "apihelp-query+search-param-namespace": "Söhk blohß en heh dä Appachtemangs.",
        "apihelp-query+search-param-what": "Wat för en Aat ze Söhke?",
        "apihelp-query+search-param-info": "Wat för en Metta_Dahte ußzejävve.",
+       "apihelp-query+search-param-prop": "Wat för en Eijeschaffte holle:",
        "apihelp-query+search-param-limit": "Wi vill Sigge ensjesamp ußjävve?",
        "apihelp-query+search-param-interwiki": "Donn de Engerwiki Lengks met ußjävve beim Söhke, wann_er doh sin.",
        "apihelp-query+search-example-simple": "Söhk noh „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">meaning</kbd>“.",
        "apihelp-query+stashimageinfo-param-sessionkey": "Es et sällve wi „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1filekey</code>“ un kütt vun fröjere Väsjohne.",
        "apihelp-query+tags-description": "Leß de Makehronge vun Änderonge.",
        "apihelp-query+tags-param-limit": "De hühßde Zahl Makkehronge zom Opleste.",
-       "apihelp-query+tags-param-prop": "Wat för en Eijschaffte holle:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">name</code>:Deiht dä Nahme vun dä Makkehrong derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">displayname</code>:Deiht der Täx vum Wikki för de Makkehrong derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">description</code>:Deiht dä Beschrievongstäx vun dä Makkehrong derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">hitcount</code>:Deiht de Aanzahl vun Väsjohne un Enndrähsch em Logbohch derbei, di di Makkehrong han.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">defined</code>:Jivv aan, ov di Makkehrong övverhoup doh es.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">source</code>:Hollt de Kwälle vun de Makkehrong, dat kann ömfaße: „<samp lang=\"en\" xml:lang=\"en\" dir=\"ltr\">extension</samp>“ för Makkehronge, di vun Zohsazprojramme faßjelaat wähde, un „<samp lang=\"en\" xml:lang=\"en\" dir=\"ltr\">manual</samp>“ för Makkehronge, di vun de Metmaacher vun Hand verjovve wohde.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">active</code>:Ov de Makkehrong emmer noch aktihv es.",
+       "apihelp-query+tags-param-prop": "Wat för en Eijeschaffte holle:",
+       "apihelp-query+tags-paramvalue-prop-name": "Deiht dä Nahme vun dä Makkehrong derbei.",
+       "apihelp-query+tags-paramvalue-prop-displayname": "Deiht der Täx vum Wikki för de Makkehrong derbei.",
+       "apihelp-query+tags-paramvalue-prop-description": "Deiht dä Beschrievongstäx vun dä Makkehrong derbei.",
+       "apihelp-query+tags-paramvalue-prop-hitcount": "Deiht de Aanzahl vun Väsjohne un Enndrähsch em Logbohch derbei, di di Makkehrong han.",
+       "apihelp-query+tags-paramvalue-prop-defined": "Jivv aan, ov di Makkehrong övverhoup doh es.",
+       "apihelp-query+tags-paramvalue-prop-source": "Hollt de Kwälle vun de Makkehrong, dat kann ömfaße: „<samp lang=\"en\" xml:lang=\"en\" dir=\"ltr\">extension</samp>“ för Makkehronge, di vun Zohsazprojramme faßjelaat wähde, un „<samp lang=\"en\" xml:lang=\"en\" dir=\"ltr\">manual</samp>“ för Makkehronge, di vun de Metmaacher vun Hand verjovve wohde.",
+       "apihelp-query+tags-paramvalue-prop-active": "Ov de Makkehrong emmer noch aktihv es.",
        "apihelp-query+tags-example-simple": "Leß de verföhschbahre Makkehronge op.",
        "apihelp-query+templates-description": "Jidd alle Datteije uß, di en dä aanjejovve Sigge enjebonge sin.",
        "apihelp-query+templates-param-namespace": "Zeijsch blohß de Schablohne en heh däm Appachtemang.",
        "apihelp-query+usercontribs-param-user": "De Metmaacher för di mer Beijdrähsch holle welle.",
        "apihelp-query+usercontribs-param-userprefix": "Holl beijdrähsch för alle Metmaacher, dänne ier Nahme met heh däm Wääd aanfange. Övverschriehv „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1user</code>“.",
        "apihelp-query+usercontribs-param-namespace": "Donn blohß Beijdrähsch en heh dä Appachtemangs opleßte.",
+       "apihelp-query+usercontribs-param-prop": "Donn zohsäzlejje Aanjahbe ennschlehße:",
        "apihelp-query+usercontribs-param-tag": "Donn blohß Väsjohne met heh dä Makehrong opleßte.",
        "apihelp-query+usercontribs-param-toponly": "Bloß Änderonge aanzeije, woh de neußte Väsjohn beij eruß kohm.",
-       "apihelp-query+usercontribs-example-user": "Zeijsch dem Metmaacher „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Example</kbd>“ sing Beidrähch.",
-       "apihelp-query+usercontribs-example-ipprefix": "Zeijsch de Beidrähch vun alle <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße, di met „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">192.0.2.</kbd>“ bejenne.",
+       "apihelp-query+usercontribs-example-user": "Zeijsch dem Metmaacher „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Example</kbd>“ sing Beijdrähsch.",
+       "apihelp-query+usercontribs-example-ipprefix": "Zeijsch de Beijdrähsch vun alle <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße, di met „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">192.0.2.</kbd>“ bejenne.",
        "apihelp-query+userinfo-description": "Holl Aanjahbe övver dä aktoälle Metmaacher.",
+       "apihelp-query+userinfo-param-prop": "Wat för en Aanjahbe med enzschlehße:",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "Deiht däm Metmaacher singe reeschtejje Nahme derbei.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Donn et Dattom vun dämm Metmaacher singe eetze Aanmäldong derbei.",
        "apihelp-query+userinfo-example-simple": "Holl Aanjahbe övver dä aktoälle Metmaacher.",
        "apihelp-query+userinfo-example-data": "Holl zohsäzlejje Aanjahbe övver dä aktoälle Metmaacher.",
        "apihelp-query+users-description": "Holl Aanjahbe övver en Leß vun Metmaacher.",
index dc73afe..b81c440 100644 (file)
@@ -37,7 +37,6 @@
        "apihelp-feedrecentchanges-param-hideanons": "Ännerunge vun anonyme Benotzer verstoppen.",
        "apihelp-feedrecentchanges-param-hideliu": "Ännerunge vu registréierte Benotzer verstoppen.",
        "apihelp-feedrecentchanges-param-hidemyself": "Ännerunge vum aktuelle Benotzer verstoppen.",
-       "apihelp-feedrecentchanges-param-hidecategorization": "Ännerunge vun der Memberschaft a Kategorie verstoppen.",
        "apihelp-feedrecentchanges-example-simple": "Rezent Ännerunge weisen",
        "apihelp-help-example-main": "Hëllef fir den Haaptmodul.",
        "apihelp-help-example-recursive": "All Hëllef op enger Säit",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Kann nëmme mam <var>$3user</var> benotzt ginn.",
        "apihelp-query+alldeletedrevisions-param-user": "Nëmme Versioune vun dësem Benotzer opzielen.",
        "apihelp-query+alldeletedrevisions-param-excludeuser": "Versioune vun dësem Benotzer net opzielen.",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "Setzt den Titel vum Fichier derbäi.",
+       "apihelp-query+alllinks-paramvalue-prop-title": "Setzt den Titel vum Link derbäi.",
        "apihelp-query+allusers-description": "All registréiert Benotzer opzielen.",
        "apihelp-query+allusers-param-activeusers": "Nëmme Benotzer opzielen déi an de leschten $1 {{PLURAL:$1|Dag|Deeg}} aktiv waren.",
        "apihelp-query+blocks-description": "Lëscht vun de gespaarte Benotzer an IP-Adressen.",
+       "apihelp-query+blocks-paramvalue-prop-range": "Setzt de Beräich vun den IP-Adressen derbäi déi vun der Spär betraff sinn.",
        "apihelp-query+blocks-example-simple": "Lëscht vun de Spären",
        "apihelp-query+categories-description": "All Kategorien opzielen zu deenen dës Säit gehéiert.",
+       "apihelp-query+categories-paramvalue-prop-timestamp": "Setzt den Zäitstempel vun dem Ament derbäi wou d'Kategorie derbäigesat gouf.",
        "apihelp-query+categories-example-generator": "Informatioun iwwer all Kategorien, déi an der Säit <kbd>Albert Einstein</kbd> benotzt ginn, kréien.",
        "apihelp-query+categorymembers-description": "All Säiten aus enger bestëmmter Kategorie opzielen.",
        "apihelp-query+categorymembers-example-simple": "Déi éischt 10 Säiten aus der <kbd>Category:Physics</kbd> kréien.",
        "apihelp-query+deletedrevisions-param-excludeuser": "Versioune vun dësem Benotzer net opzielen.",
        "apihelp-query+deletedrevs-param-unique": "Nëmmen eng Versioun fir all Säit weisen.",
        "apihelp-query+embeddedin-param-filterredir": "Wéi Viruleedungen gefiltert gi sollen.",
+       "apihelp-query+filearchive-paramvalue-prop-dimensions": "Alias fir Gréisst.",
        "apihelp-query+filearchive-example-simple": "Eng Lëscht vun alle geläschte Fichiere weisen",
+       "apihelp-query+fileusage-paramvalue-prop-title": "Titel vun all Säit.",
        "apihelp-query+imageinfo-paramvalue-prop-user": "Setzt fir all Versioun vum Fichier de Benotzer dobäi deen en eropgelueden huet.",
        "apihelp-query+imageinfo-paramvalue-prop-comment": "Bemierkung iwwert d'Versioun.",
        "apihelp-query+imageinfo-paramvalue-prop-dimensions": "Alias fir Gréisst.",
        "apihelp-query+images-example-simple": "Eng Lëscht vun de Fichiere kréien déi op der [[Main Page|Haaptsäit]] benotzt ginn",
        "apihelp-query+imageusage-example-simple": "Säite weisen déi [[:File:Albert Einstein Head.jpg]] benotzen",
        "apihelp-query+info-paramvalue-prop-readable": "Ob de Benotzer dës Säit liese kann.",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "Setzt déi komplett URL derbäi.",
        "apihelp-query+langlinks-param-lang": "Nëmme Sproochlinke mat dësem Sproochcode zréckginn.",
        "apihelp-query+links-param-namespace": "Nëmme Linken an dësen Nummräim weisen.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "Titel vun all Säit.",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "Markéiere wann d'Säit eng Viruleedung ass.",
        "apihelp-query+pageswithprop-example-generator": "Zousätzlech Informatiounen iwwer déi 10 éischt Säite kréie mat <code>_&#95;NOTOC_&#95;</code>.",
        "apihelp-query+protectedtitles-param-namespace": "Nëmmen Titelen aus dësen Nummraim opzielen.",
        "apihelp-query+random-param-redirect": "Eng zoufälleg Viruleedung lueden aplaz vun enger zoufälleger Säit.",
        "apihelp-query+revisions+base-paramvalue-prop-comment": "Bemierkung vum Benotzer fir dës Versioun.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "Text vun der Versioun.",
        "apihelp-query+search-param-namespace": "Nëmmen an dësen Nummräim sichen.",
+       "apihelp-query+search-paramvalue-prop-timestamp": "Setzt den Zäitstempel vun der leschter Ännerung vun der Säit derbäi.",
+       "apihelp-query+transcludedin-paramvalue-prop-title": "Titel vun all Säit.",
        "apihelp-query+usercontribs-description": "All Ännerunge vun engem Benotzer kréien.",
+       "apihelp-query+usercontribs-paramvalue-prop-timestamp": "Setzt den Zäitstempel vun derÄnnerung derbäi.",
+       "apihelp-query+usercontribs-paramvalue-prop-comment": "Setzt d'Bemierkung vun der Ännerung derbäi.",
+       "apihelp-query+userinfo-paramvalue-prop-options": "Lëscht vun allen Astellungen déi den aktuelle Benotzer gemaach huet.",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "Setzt dem Benotzer säi richtegen Numm derbäi.",
+       "apihelp-query+users-paramvalue-prop-rights": "Weist all Rechter déi all Benotzer huet.",
        "apihelp-query+watchlist-param-user": "Nëmmen Ännerunge vun dësem Benotzer opzielen.",
        "apihelp-query+watchlist-param-excludeuser": "Ännerunge vun dësem Benotzer net opzielen.",
        "apihelp-query+watchlist-paramvalue-prop-title": "Setzt den Titel vun der Säit derbäi.",
index 08a1207..b163c22 100644 (file)
@@ -8,5 +8,6 @@
        "apihelp-block-description": "Bloķēt lietotāju",
        "apihelp-block-param-reason": "Bloķēšanas iemesls:",
        "apihelp-delete-description": "Dzēst lapas",
+       "apihelp-emailuser-description": "Sūtīt e-pastu lietotājam",
        "apihelp-userrights-param-userid": "Lietotāja ID:"
 }
index 318e346..80b41ed 100644 (file)
        "apihelp-query+alllinks-param-to": "Наслов на врската на која ќе запре набројувањето.",
        "apihelp-query+alllinks-param-prefix": "Пребарај ги сите сврзани наслови што почнуваат со оваа вредност.",
        "apihelp-query+alllinks-param-unique": "Прикажувај само различни поврзани наслови. Не може да се користи со <kbd>$1prop=ids</kbd>.\nКога се користи како создавач, дава целни страници наместо изворни.",
-       "apihelp-query+alllinks-param-prop": "Кои информации да се вклучат:\n;ids:Ја додава назнаката на страницата на која е врската (не може да се користи со <var>$1unique</var>).\n;title:Го додава насловот на врската.",
+       "apihelp-query+alllinks-param-prop": "Кои информации да се вклучат:",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "Ја додава назнаката на страницата на која е врската (не може да се користи со <var>$1unique</var>).",
+       "apihelp-query+alllinks-paramvalue-prop-title": "Го додава насловот на врската.",
        "apihelp-query+alllinks-param-namespace": "Именскиот простор што се набројува.",
        "apihelp-query+alllinks-param-limit": "Колку вкупно ставки да се дадат.",
        "apihelp-query+alllinks-param-dir": "Насока на исписот.",
index b7fdf54..e6aab1e 100644 (file)
@@ -9,7 +9,8 @@
                        "Macofe",
                        "Pio387",
                        "Peter Bowman",
-                       "Darellur"
+                       "Darellur",
+                       "The Polish"
                ]
        },
        "apihelp-main-param-action": "Wybierz akcję do wykonania.",
@@ -77,6 +78,7 @@
        "apihelp-expandtemplates-param-title": "Tytuł strony.",
        "apihelp-expandtemplates-param-text": "Wikitext do przekonwertowania.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "Rozszerzony wikitext.",
+       "apihelp-feedcontributions-param-feedformat": "Format danych wyjściowych.",
        "apihelp-feedcontributions-param-year": "Od roku (i wcześniej).",
        "apihelp-feedcontributions-param-month": "Od miesiąca (i wcześniej).",
        "apihelp-feedcontributions-param-deletedonly": "Pokazuj tylko usunięty wkład.",
        "apihelp-query+embeddedin-param-filterredir": "Jaki filtrować przekierowania.",
        "apihelp-query+extlinks-param-limit": "Ilość linków do zwrócenia.",
        "apihelp-query+exturlusage-param-limit": "Ilość stron do zwrócenia.",
+       "apihelp-query+filearchive-paramvalue-prop-dimensions": "Alias rozmiaru.",
        "apihelp-query+filearchive-example-simple": "Pokaż listę wszystkich usuniętych plików.",
        "apihelp-query+filerepoinfo-example-simple": "Uzyskaj informacje na temat repozytoriów plików.",
+       "apihelp-query+fileusage-paramvalue-prop-title": "Nazwa każdej strony.",
        "apihelp-query+fileusage-param-limit": "Ilość do zwrócenia.",
        "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Dodaje kanoniczny tytuł pliku.",
        "apihelp-query+imageinfo-paramvalue-prop-dimensions": "Alias rozmiaru.",
        "apihelp-query+info-paramvalue-prop-readable": "Czy użytkownik może przeczytać tę stronę.",
        "apihelp-query+iwbacklinks-param-prefix": "Prefix interwiki.",
        "apihelp-query+iwbacklinks-param-limit": "Łączna ilość stron do zwrócenia.",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "Dodaje pełny adres URL.",
        "apihelp-query+links-param-limit": "Ilość linków do zwrócenia.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "Nazwa każdej strony.",
        "apihelp-query+linkshere-param-limit": "Ilość do zwrócenia.",
        "apihelp-query+logevents-description": "Pobierz eventy z logu.",
        "apihelp-query+logevents-example-simple": "Lista ostatnich zarejestrowanych zdarzeń.",
        "apihelp-query+recentchanges-param-excludeuser": "Nie listuj zmian dokonanych przez tego użytkownika.",
        "apihelp-query+recentchanges-param-tag": "Pokazuj tylko zmiany oznaczone tym tagiem.",
        "apihelp-query+recentchanges-example-simple": "Lista ostatnich zmian.",
+       "apihelp-query+redirects-paramvalue-prop-title": "Nazwa każdego przekierowania.",
        "apihelp-query+redirects-param-limit": "Ile przekierowań zwrócić.",
        "apihelp-query+revisions+base-paramvalue-prop-ids": "Identyfikator wersji.",
        "apihelp-query+revisions+base-paramvalue-prop-flags": "Znaczniki wersji (drobne).",
        "apihelp-query+search-param-limit": "Łączna liczba stron do zwrócenia.",
        "apihelp-query+search-param-interwiki": "Dołączaj wyniki wyszukiwań interwiki w wyszukiwarce, jeśli możliwe.",
        "apihelp-query+search-example-simple": "Szukaj <kbd>meaning</kbd>.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespaces": "Lista zarejestrowanych przestrzeni nazw i ich nazwy kanoniczne.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "Lista zarejestrowanych aliasów przestrzeni nazw.",
        "apihelp-query+siteinfo-example-simple": "Pobierz informacje o stronie.",
        "apihelp-query+tags-description": "Lista zmian tagów.",
        "apihelp-query+tags-param-limit": "Maksymalna liczba tagów do wyświetlenia.",
index 82e05ff..a476b7a 100644 (file)
        "apihelp-parse-paramvalue-prop-iwlinks": "Fornece links interwiki no wikitexto analisado.",
        "apihelp-parse-paramvalue-prop-wikitext": "Fornece o wikitexto original que foi analisado.",
        "apihelp-parse-paramvalue-prop-properties": "Fornece várias propriedades definidas no wikitexto analisado.",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "Fornece o relatório limite de uma forma estruturada. Não informa dado, quando<var>$1disablepp</var> se definido.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Fornece o relatório limite de uma forma estruturada. Não informa dado, quando<var>$1disablelimitreport</var> se definido.",
        "apihelp-parse-example-page": "Analisa uma página.",
        "apihelp-parse-example-text": "Analisa wikitexto.",
        "apihelp-parse-example-texttitle": "Analisa wikitexto, especificando o título da página.",
index 99d9c99..ef803f5 100644 (file)
        "apihelp-feedrecentchanges-param-hideliu": "{{doc-apihelp-param|feedrecentchanges|hideliu}}",
        "apihelp-feedrecentchanges-param-hidepatrolled": "{{doc-apihelp-param|feedrecentchanges|hidepatrolled}}",
        "apihelp-feedrecentchanges-param-hidemyself": "{{doc-apihelp-param|feedrecentchanges|hidemyself}}",
-       "apihelp-feedrecentchanges-param-hidecategorization": "{{doc-apihelp-param|feedrecentchanges|hidecategorization}}",
        "apihelp-feedrecentchanges-param-tagfilter": "{{doc-apihelp-param|feedrecentchanges|tagfilter}}",
        "apihelp-feedrecentchanges-param-target": "{{doc-apihelp-param|feedrecentchanges|target}}",
        "apihelp-feedrecentchanges-param-showlinkedto": "{{doc-apihelp-param|feedrecentchanges|showlinkedto}}",
        "apihelp-parse-param-effectivelanglinks": "{{doc-apihelp-param|parse|effectivelanglinks}}",
        "apihelp-parse-param-section": "{{doc-apihelp-param|parse|section}}",
        "apihelp-parse-param-sectiontitle": "{{doc-apihelp-param|parse|sectiontitle}}",
+       "apihelp-parse-param-disablelimitreport": "{{doc-apihelp-param|parse|disablelimitreport}}",
        "apihelp-parse-param-disablepp": "{{doc-apihelp-param|parse|disablepp}}",
        "apihelp-parse-param-disableeditsection": "{{doc-apihelp-param|parse|disableeditsection}}",
+       "apihelp-parse-param-disabletidy": "{{doc-apihelp-param|parse|disabletidy}}",
        "apihelp-parse-param-generatexml": "{{doc-apihelp-param|parse|generatexml|params=* $1 - Value of the constant CONTENT_MODEL_WIKITEXT|paramstart=2}}",
        "apihelp-parse-param-preview": "{{doc-apihelp-param|parse|preview}}",
        "apihelp-parse-param-sectionpreview": "{{doc-apihelp-param|parse|sectionpreview}}",
        "apihelp-query+allredirects-param-to": "{{doc-apihelp-param|query+allredirects|to}}",
        "apihelp-query+allredirects-param-prefix": "{{doc-apihelp-param|query+allredirects|prefix}}",
        "apihelp-query+allredirects-param-unique": "{{doc-apihelp-param|query+allredirects|unique}}",
-       "apihelp-query+allredirects-param-prop": "{{doc-apihelp-param|query+allredirects|prop|paramvalue=1}}",
+       "apihelp-query+allredirects-param-prop": "{{doc-apihelp-param|query+allredirects|prop|paramvalues=1}}",
        "apihelp-query+allredirects-paramvalue-prop-ids": "{{doc-apihelp-param|query+allredirects|prop|ids}}",
        "apihelp-query+allredirects-paramvalue-prop-title": "{{doc-apihelp-param|query+allredirects|prop|title}}",
        "apihelp-query+allredirects-paramvalue-prop-fragment": "{{doc-apihelp-param|query+allredirects|prop|fragment}}",
index 2accd1f..0b8804b 100644 (file)
@@ -8,7 +8,8 @@
                        "Mariya",
                        "Дмитрий",
                        "WindEwriX",
-                       "Ochilov"
+                       "Ochilov",
+                       "Nzeemin"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Документация]]\n* [[mw:API:FAQ|ЧаВО]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Почтовая рассылка]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Новости API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Ошибки и запросы]\n</div>\n<strong>Статус:</strong> Все отображаемые на этой странице функции должны работать, однако API находится в статусе активной разработки, и может измениться в любой момент. Подпишитесь на  [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ почтовую рассылку mediawiki-api-announce], чтобы быть в курсе обновлений.\n\n<strong>Ошибочные запросы:</strong> Если API получает запрос с ошибкой, вернётся заголовок HTTP с ключом \"MediaWiki-API-Error\", после чего значение заголовка и код ошибки будут отправлены обратно и установлены в то же значение. Более подробную информацию см. [[mw:API:Errors_and_warnings|API: Ошибки и предупреждения]].",
        "apihelp-expandtemplates-paramvalue-prop-parsetree": "Дерево разбора XML входных данных.",
        "apihelp-feedcontributions-param-year": "От года (и ранее).",
        "apihelp-feedcontributions-param-month": "От месяца (и ранее).",
+       "apihelp-feedcontributions-param-newonly": "Показывать только правки, являющиеся созданием страниц.",
+       "apihelp-feedcontributions-param-showsizediff": "Показать размер различия между версиями.",
+       "apihelp-feedrecentchanges-param-limit": "Максимальное число возвращаемых результатов.",
+       "apihelp-feedrecentchanges-param-from": "Показать изменения с тех пор.",
        "apihelp-feedrecentchanges-param-hideminor": "Скрыть малые правки.",
        "apihelp-feedrecentchanges-param-hidebots": "Скрыть правки ботов.",
+       "apihelp-feedrecentchanges-param-hideanons": "Скрыть изменения, внесённые анонимными участниками.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "Скрыть отпатруллированные правки.",
+       "apihelp-feedrecentchanges-param-hidemyself": "Скрыть изменения, сделанные текущим участником.",
        "apihelp-feedrecentchanges-param-tagfilter": "Фильтр по тегам.",
        "apihelp-feedrecentchanges-example-simple": "Список последних изменений.",
        "apihelp-feedrecentchanges-example-30days": "Показать последние изменения в течение 30 дней.",
        "apihelp-filerevert-param-comment": "Загрузить комментарий.",
        "apihelp-help-example-main": "Помощь по главному модулю.",
        "apihelp-help-example-recursive": "Вся справка в одном разделе.",
+       "apihelp-imagerotate-description": "Поворот одного или нескольких изображений.",
+       "apihelp-imagerotate-param-rotation": "На сколько градусов по часовой стрелке повернуть изображение.",
+       "apihelp-imagerotate-example-simple": "Повернуть <kbd>File:Example.png</kbd> на <kbd>90</kbd> градусов.",
+       "apihelp-imagerotate-example-generator": "Повернуть все изображения в <kbd>Category:Flip</kbd> на <kbd>180</kbd> градусов.",
        "apihelp-import-param-summary": "Импорт итога",
        "apihelp-import-param-xml": "Загруженный XML-файл.",
        "apihelp-login-param-name": "Имя участника.",
        "apihelp-login-example-login": "Войти",
        "apihelp-logout-description": "Выйти и очистить данные сессии.",
        "apihelp-move-description": "Переместить страницу.",
+       "apihelp-move-param-reason": "Причина переименования.",
+       "apihelp-move-param-movetalk": "Переименовать страницу обсуждения, если она есть.",
+       "apihelp-move-param-movesubpages": "Переименовать подстраницы, если это применимо.",
+       "apihelp-move-param-noredirect": "Не создавать перенаправление.",
        "apihelp-move-param-ignorewarnings": "Игнорировать предупреждения",
        "apihelp-opensearch-param-search": "Строка поиска.",
+       "apihelp-opensearch-param-limit": "Максимальное число возвращаемых результатов.",
+       "apihelp-opensearch-param-namespace": "Пространства имён для поиска.",
+       "apihelp-options-example-reset": "Сбросить все настройки.",
+       "apihelp-paraminfo-param-helpformat": "Формат строк справки.",
        "apihelp-parse-example-page": "анализ страницы",
        "apihelp-parse-example-text": "Анализ wikitext.",
        "apihelp-protect-example-protect": "Защитить страницу.",
        "apihelp-purge-param-forcelinkupdate": "Обновление связей таблиц.",
        "apihelp-query-param-list": "Какие списки использовать",
        "apihelp-query-param-meta": "Какие метаданные использовать",
+       "apihelp-query+allcategories-description": "Перечислить все категории.",
+       "apihelp-query+allcategories-param-limit": "Сколько категорий вернуть.",
+       "apihelp-query+allcategories-param-prop": "Какие свойства получить:",
        "apihelp-query+alllinks-example-unique-generator": "Получить все названия-ссылки, выделяя пропущенные.",
        "apihelp-query+blocks-example-simple": "Список блоков.",
        "apihelp-query+categories-param-limit": "Сколько категорий на возврат.",
index 7ae00b3..83f4d80 100644 (file)
        "apihelp-block-param-watchuser": "Bevaka användarens eller IP-adressens användarsida och diskussionssida",
        "apihelp-block-example-ip-simple": "Blockera IP-adressen <kbd>192.0.2.5</kbd> i tre dagar med motivationen <kbd>First strike</kbd>",
        "apihelp-block-example-user-complex": "Blockera användare <kbd>Vandal</kbd> på obegränsad tid med motivationen <kbd>Vandalism</kbd>, och förhindra kontoskapande och e-post.",
+       "apihelp-checktoken-param-type": "Typ av token som testas.",
+       "apihelp-checktoken-param-token": "Token att testa.",
+       "apihelp-checktoken-param-maxtokenage": "Högsta tillåtna åldern för token, i sekunder.",
+       "apihelp-checktoken-example-simple": "Testa giltigheten av en <kbd>csrf</kbd>-token.",
        "apihelp-clearhasmsg-description": "Rensa <code>hasmsg</code>-flaggan för den aktuella användaren.",
        "apihelp-clearhasmsg-example-1": "Rensa <code>hasmsg</code>-flaggan för den aktuella användaren",
        "apihelp-compare-description": "Hämta skillnaden mellan två sidor.\n\nEtt versionsnummer, en sidtitel, eller ett sid-Id för både \"from\" och \"to\" måste skickas.",
@@ -81,6 +85,7 @@
        "apihelp-edit-param-sectiontitle": "Rubriken för ett nytt avsnitt.",
        "apihelp-edit-param-text": "Sidans innehåll.",
        "apihelp-edit-param-summary": "Redigeringssammanfattning. Även avsnittets rubrik när $1section=new och $1sectiontitle inte anges.",
+       "apihelp-edit-param-tags": "Ändra taggar till att gälla för revideringen.",
        "apihelp-edit-param-minor": "Mindre redigering.",
        "apihelp-edit-param-notminor": "Icke-mindre redigering.",
        "apihelp-edit-param-bot": "Markera denna redigering som robotredigering.",
        "apihelp-expandtemplates-param-title": "Sidans rubrik.",
        "apihelp-expandtemplates-param-text": "Wikitext att konvertera.",
        "apihelp-expandtemplates-param-revid": "Revision ID, för <nowiki>{{REVISIONID}}</nowiki> och liknande variabler.",
+       "apihelp-expandtemplates-paramvalue-prop-wikitext": "Den expanderade wikitexten.",
        "apihelp-expandtemplates-param-includecomments": "Om HTML-kommentarer skall inkluderas i utdata.",
        "apihelp-expandtemplates-param-generatexml": "Generera ett XML tolknings träd (ersatt av $1prop=parsetree).",
        "apihelp-expandtemplates-example-simple": "Expandera wikitexten <kbd><nowiki>{{Projekt:Sandbox}}</nowiki></kbd>.",
        "apihelp-help-example-main": "Hjälp för huvudmodul",
        "apihelp-help-example-recursive": "All hjälp på en sida",
        "apihelp-help-example-help": "Hjälp för själva hjälpmodulen",
+       "apihelp-help-example-query": "Hjälp för två frågeundermoduler.",
        "apihelp-imagerotate-description": "Rotera en eller flera bilder.",
        "apihelp-imagerotate-param-rotation": "Grader att rotera bild medurs.",
        "apihelp-imagerotate-example-simple": "Rotera <kbd>File:Example.png</kbd> med <kbd>90</kbd> grader",
        "apihelp-parse-param-summary": "Sammanfattning att tolka.",
        "apihelp-parse-param-page": "Tolka innehållet av denna sida. Kan inte användas tillsammans med <var>$1text</var> och <var>$1title</var>.",
        "apihelp-parse-param-pageid": "Tolka innehållet på denna sida. Åsidosätter <var>$1sidan</var>.",
+       "apihelp-parse-param-prop": "Vilka bitar av information att få:",
        "apihelp-parse-paramvalue-prop-categorieshtml": "Ger HTML-version av kategorierna.",
        "apihelp-parse-param-preview": "Tolka i preview-läget.",
        "apihelp-parse-example-page": "Tolka en sida.",
        "apihelp-query+backlinks-param-dir": "Riktningen att lista mot.",
        "apihelp-query+backlinks-example-simple": "Visa länkar till <kbd>huvudsidan<kbd>.",
        "apihelp-query+blocks-description": "Lista alla blockerade användare och IP-adresser.",
+       "apihelp-query+blocks-param-prop": "Vilka egenskaper att hämta.",
+       "apihelp-query+blocks-paramvalue-prop-id": "Lägger till ID på blocket.",
+       "apihelp-query+blocks-paramvalue-prop-user": "Lägger till användarnamn för den blockerade användaren.",
+       "apihelp-query+blocks-paramvalue-prop-userid": "Lägger till användar-ID för den blockerade användaren.",
+       "apihelp-query+blocks-paramvalue-prop-timestamp": "Lägger till en tidsstämpel för när blockeringen gavs.",
+       "apihelp-query+blocks-paramvalue-prop-expiry": "Lägger till en tidsstämpel för när blockeringen går ut.",
+       "apihelp-query+blocks-paramvalue-prop-reason": "Lägger till de skäl som angetts för blockeringen.",
+       "apihelp-query+blocks-paramvalue-prop-range": "Lägger till intervallet av IP-adresser som berörs av blockeringen.",
        "apihelp-query+blocks-example-simple": "Lista blockeringar.",
        "apihelp-query+blocks-example-users": "Lista blockeringar av användarna <kbd>Alice</kbd> och <kbd>Bob</kbd>.",
        "apihelp-query+categories-description": "Lista alla kategorier sidorna tillhör.",
        "apihelp-query+categoryinfo-description": "Returnerar information om angivna kategorier.",
        "apihelp-query+categoryinfo-example-simple": "Hämta information om <kbd>Category:Foo</kbd> och <kbd>Category:Bar</kbd>.",
        "apihelp-query+categorymembers-description": "Lista alla sidor i en angiven kategori.",
+       "apihelp-query+categorymembers-paramvalue-prop-ids": "Lägger till sid-ID.",
+       "apihelp-query+categorymembers-paramvalue-prop-title": "Lägger till titeln och namnrymds-ID för sidan.",
        "apihelp-query+categorymembers-param-dir": "I vilken riktning att sortera.",
        "apihelp-query+categorymembers-param-startsortkey": "Använd $1starthexsortkey istället.",
        "apihelp-query+categorymembers-param-endsortkey": "Använd $1endhexsortkey istället.",
        "apihelp-query+embeddedin-param-dir": "Riktningen att lista mot.",
        "apihelp-query+embeddedin-param-limit": "Hur många sidor att returnera totalt.",
        "apihelp-query+filearchive-param-dir": "Riktningen att lista mot.",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "Lägger till tidsstämpel för den uppladdade versionen.",
+       "apihelp-query+filearchive-paramvalue-prop-user": "Lägger till användaren som laddade upp bildversionen.",
        "apihelp-query+filearchive-example-simple": "Visa en lista över alla borttagna filer.",
+       "apihelp-query+fileusage-paramvalue-prop-title": "Titel för varje sida.",
+       "apihelp-query+fileusage-paramvalue-prop-redirect": "Flagga om sidan är en omdirigering.",
        "apihelp-query+imageinfo-paramvalue-prop-userid": "Lägg till det användar-ID som laddade upp varje filversion.",
        "apihelp-query+images-param-dir": "Riktningen att lista mot.",
        "apihelp-query+imageusage-param-dir": "Riktningen att lista mot.",
index 3571b29..194e10f 100644 (file)
@@ -4,7 +4,9 @@
                        "Ата",
                        "A1",
                        "Ahonc",
-                       "Base"
+                       "Base",
+                       "Dars",
+                       "Umherirrender"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Документація]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Список розсилки]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Оголошення API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Баґи і запити]\n</div>\n<strong>Статус:</strong> Усі функції, вказані на цій сторінці, мають працювати, але API далі перебуває в активній розробці і може змінитися у будь-який момент. Підпишіться на [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ список розсилки mediawiki-api-announce], щоб помічати оновлення.\n\n<strong>Хибні запити:</strong> Коли до API надсилаються хибні запити, буде відіслано HTTP-шапку з ключем «MediaWiki-API-Error», а тоді і значення шапки, і код помилки, надіслані назад, будуть встановлені з тим же значенням. Більше інформації див. на [[mw:API:Errors_and_warnings|API: Errors and warnings]].",
        "apihelp-feedrecentchanges-param-hideliu": "Приховати редагування зареєстрованих користувачів.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "Приховати відпатрульовані редагування.",
        "apihelp-feedrecentchanges-param-hidemyself": "Приховати редагування поточного користувача.",
-       "apihelp-feedrecentchanges-param-hidecategorization": "Приховати зміни в членстві в категорії.",
        "apihelp-feedrecentchanges-param-tagfilter": "Фільтрувати за теґом.",
        "apihelp-feedrecentchanges-param-target": "Показати лише зміни на сторінках, на які посилається ця сторінка.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Показати натомість лише зміни на сторінках, які посилаються на цю сторінку.",
        "apihelp-parse-paramvalue-prop-iwlinks": "Дає інтервікі-посилання в аналізованому вікітексті.",
        "apihelp-parse-paramvalue-prop-wikitext": "Дає вихідний вікітекст, який було аналізовано.",
        "apihelp-parse-paramvalue-prop-properties": "Дає різні властивості, визначені в аналізованому вікітексті.",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "Дає звіт по обмеженнях у структурованому вигляді. Не видає даних, якщо встановлено <var>$1disablepp</var>.",
-       "apihelp-parse-paramvalue-prop-limitreporthtml": "Дає HTML-версію звіту по обмеженнях. Не видає даних, якщо встановлено <var>$1disablepp</var>.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Дає звіт по обмеженнях у структурованому вигляді. Не видає даних, якщо встановлено <var>$1disablelimitreport</var>.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "Дає HTML-версію звіту по обмеженнях. Не видає даних, якщо встановлено <var>$1disablelimitreport</var>.",
        "apihelp-parse-paramvalue-prop-parsetree": "Синтаксичне дерево XML вмісту версії (передбачає модель вмісту <code>$1</code>)",
        "apihelp-parse-param-pst": "Зробіть трансформацію вхідних даних перед збереженням і аналізом. Дійсне лише при використанні з текстом.",
        "apihelp-parse-param-onlypst": "Зробіть трансформацію вхідних даних перед збереженням (PST), але не аналізуйте. Видає той самий вікітекст, після застосування PST. Дійсне лише у разі використання з <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Включає мовні посилання, додані розширеннями (для використання з <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-section": "Видає вміст лише розділу з цим номером або при <kbd>new</kbd> створенні нового розділу.\n\n<kbd>new</kbd> розділ відзначається лише при вказанні тексту <var>text</var>.",
        "apihelp-parse-param-sectiontitle": "Заголовок нового розділу, коли <var>section</var> має значення <kbd>new</kbd>.\n\nНа відміну від редагування сторінки, це не повертається до <var>summary</var>, якщо пропустити чи лишити порожнім.",
-       "apihelp-parse-param-disablepp": "Пропустити звіт препроцесора («NewPP limit report») на виході аналізу.",
+       "apihelp-parse-param-disablelimitreport": "Пропустити звіт препроцесора («NewPP limit report») на виході аналізу.",
        "apihelp-parse-param-disableeditsection": "Пропустити посилання на редагування розділів на виході аналізу.",
        "apihelp-parse-param-generatexml": "Генерувати синтаксичне дерево XML (передбачає модель вмісту <code>$1</code>; замінено на <kbd>$2prop=parsetree</kbd>).",
        "apihelp-parse-param-preview": "Аналізувати у режимі попереднього перегляду.",
        "apihelp-query+allcategories-param-min": "Видати лише категорії, які мають щонайменше стільки елементів.",
        "apihelp-query+allcategories-param-max": "Видати лише категорії, які мають максимум стільки елементів.",
        "apihelp-query+allcategories-param-limit": "Скільки категорій видати.",
-       "apihelp-query+allcategories-param-prop": "Які властивості отримати:\n;size:Додає номер сторінок у категорії.\n;hidden:Теґує категорії, приховані з _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+allcategories-param-prop": "Які властивості отримати:",
+       "apihelp-query+allcategories-paramvalue-prop-size": "Додає номер сторінок у категорії.",
+       "apihelp-query+allcategories-paramvalue-prop-hidden": "Теґує категорії, приховані з <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+allcategories-example-size": "Перерахувати категорії з інформацією про кількість сторінок у кожній.",
        "apihelp-query+allcategories-example-generator": "Отримати інформацію про саму сторінку категорії для категорій, що починаються з <kbd>List</kbd>.",
        "apihelp-query+alldeletedrevisions-description": "Перерахувати усі вилучені версії за користувачем або у просторі назв.",
        "apihelp-query+allfileusages-param-to": "Назва файлу, якою закінчувати перераховувати.",
        "apihelp-query+allfileusages-param-prefix": "Шукати усі назви файлів, які починаються з цього значення.",
        "apihelp-query+allfileusages-param-unique": "Показувати лише окремі назви файлів. Не може використовуватися разом з $1prop=ids.\nКоли використовується як генератор, видає цільові сторінки замість вихідних сторінок.",
-       "apihelp-query+allfileusages-param-prop": "Які відомості включати:\n;ids:Додає ідентифікатори сторінок, що використовують (не можна використати разом з $1unique).\n;title:Додає назву файлу.",
+       "apihelp-query+allfileusages-param-prop": "Які відомості включати:",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "Додає ідентифікатори із використаних сторінок (не буде використовуватися, при єдиній $1).",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "Додає назву файлу.",
        "apihelp-query+allfileusages-param-limit": "Скільки всього елементів виводити.",
        "apihelp-query+allfileusages-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+allfileusages-example-B": "Перерахувати назви файлів, включно з відсутніми, з ідентифікаторами сторінок, на яких вони використані, починаючи з <kbd>B</kbd>.",
        "apihelp-query+alllinks-param-to": "Назва посилання, якою закінчити перераховувати.",
        "apihelp-query+alllinks-param-prefix": "Шукати усі пов'язані назви, які починаються з цього значення.",
        "apihelp-query+alllinks-param-unique": "Показувати лише окремі пов'язані назви. Не може використовуватися з <kbd>$1prop=ids</kbd>.\nКоли використовується як генератор, видає цільові сторінки замість вихідних сторінок.",
-       "apihelp-query+alllinks-param-prop": "Які відомості включати:\n;ids:Додає ідентифікатори сторінок, що має посилання (не можна використати разом з <var>$1unique</var>).\n;title:Додає назву посилання.",
+       "apihelp-query+alllinks-param-prop": "Які відомості включати:",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "Додає ідентифікатори сторінок, що має посилання (не можна використати разом з <var>$1unique</var>).",
+       "apihelp-query+alllinks-paramvalue-prop-title": "Додає назву посилання.",
        "apihelp-query+alllinks-param-namespace": "Простір назв для переліку.",
        "apihelp-query+alllinks-param-limit": "Скільки всього елементів виводити.",
        "apihelp-query+alllinks-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+allredirects-param-to": "Назва перенаправлення, якою закінчувати перераховувати.",
        "apihelp-query+allredirects-param-prefix": "Шукати усі цільові сторінки, які починаються з цього значення.",
        "apihelp-query+allredirects-param-unique": "Показувати лише окремі цільові сторінки. Не може використовуватися разом з $1prop=ids|fragment|interwiki.\nКоли використовується як генератор, видає цільові сторінки замість вихідних сторінок.",
-       "apihelp-query+allredirects-param-prop": "Які відомості включити:\n;ids:Додає ID сторінки-перенаправлення (не можна використати разом з <var>$1unique</var>).\n;title:Додає заголовок перенаправлення.\n;fragment:Додає фрагмент з перенаправлення, якщо він є (не можна використати разом з <var>$1unique</var>).\n;interwiki:Додає інтервікі-префікс з перенаправлення, якщо він є (не можна використати разом з <var>$1unique</var>).",
+       "apihelp-query+allredirects-param-prop": "Які відомості включити:",
+       "apihelp-query+allredirects-paramvalue-prop-ids": "Додає ID сторінки-перенаправлення (не можна використати разом з <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-title": "Додає заголовок перенаправлення.",
+       "apihelp-query+allredirects-paramvalue-prop-fragment": "Додає фрагмент з перенаправлення, якщо він є (не можна використати разом з <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-interwiki": "Додає інтервікі-префікс з перенаправлення, якщо він є (не можна використати разом з <var>$1unique</var>).",
        "apihelp-query+allredirects-param-namespace": "Простір назв для переліку.",
        "apihelp-query+allredirects-param-limit": "Скільки всього елементів виводити.",
        "apihelp-query+allredirects-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+alltransclusions-param-to": "Назва включення, якою закінчити перераховувати.",
        "apihelp-query+alltransclusions-param-prefix": "Шукати усі включені назви, які починаються з цього значення.",
        "apihelp-query+alltransclusions-param-unique": "Показувати лише окремі включені назви. Не може використовуватися разом з $1prop=ids.\nКоли використовується як генератор, видає цільові сторінки замість вихідних сторінок.",
-       "apihelp-query+alltransclusions-param-prop": "Які відомості включати:\n;ids:Додає ідентифікатор сторінки включення (не можна використати разом з $1unique).\n;title:Додає назву включення.",
+       "apihelp-query+alltransclusions-param-prop": "Які відомості включати:",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "Додає ідентифікатор сторінки включення (не можна використати разом з $1unique).",
+       "apihelp-query+alltransclusions-paramvalue-prop-title": "Додає назву включення.",
        "apihelp-query+alltransclusions-param-namespace": "Простір назв для переліку.",
        "apihelp-query+alltransclusions-param-limit": "Скільки всього елементів виводити.",
        "apihelp-query+alltransclusions-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+allusers-param-group": "Включати лише користувачів з даних груп.",
        "apihelp-query+allusers-param-excludegroup": "Виключити користувачів у даних групах.",
        "apihelp-query+allusers-param-rights": "Включати лише користувачів з даними правами. Не включає права, надані безумовними або автоматичними групами на зразок *, користувач або автопідтверджені.",
-       "apihelp-query+allusers-param-prop": "Які саме відомості включати:\n;blockinfo:Додає інформацію про поточне блокування користувача.\n;groups:Перераховує групи, до яких користувач належить. Це використовує більше ресурсів сервера і може видати менше результатів, ніж ліміт.\n;implicitgroups:Перераховує усіх групи, до яких користувач належить автоматично.\n;rights:Перераховує права, які користувач має.\n;editcount:Додає кількість редагувань користувача.\n;registration:Додає часову мітку, коли користувач зареєструвався, якщо доступно (може бути пустою).",
+       "apihelp-query+allusers-param-prop": "Які саме відомості включати:",
+       "apihelp-query+allusers-paramvalue-prop-blockinfo": "Додає інформацію про поточне блокування користувача.",
+       "apihelp-query+allusers-paramvalue-prop-groups": "Перераховує групи, до яких користувач належить. Це використовує більше ресурсів сервера і може видати менше результатів, ніж ліміт.",
+       "apihelp-query+allusers-paramvalue-prop-implicitgroups": "Перераховує усіх групи, до яких користувач належить автоматично.",
+       "apihelp-query+allusers-paramvalue-prop-rights": "Перераховує права, які користувач має.",
+       "apihelp-query+allusers-paramvalue-prop-editcount": "Додає кількість редагувань користувача.",
+       "apihelp-query+allusers-paramvalue-prop-registration": "Додає часову мітку, коли користувач зареєструвався, якщо доступно (може бути пустою).",
        "apihelp-query+allusers-param-limit": "Скільки всього виводити імен користувачів.",
        "apihelp-query+allusers-param-witheditsonly": "Перерахувати лише користувачів, що зробили редагування.",
        "apihelp-query+allusers-param-activeusers": "Перерахувати лише користувачів, що були активні $1 {{PLURAL:$1|останній день|останні дні|останніх днів}}.",
        "apihelp-query+blocks-param-users": "Список користувачів для пошуку (необов'язково).",
        "apihelp-query+blocks-param-ip": "Отримати всі блокування, що стосуються цієї IP-адреси або CIDR-діапазону, включно з блокуваннями діапазонів. Не може бути використано разом з <var>$3users</var>. CIDR-діапазони, ширші, ніж IPv4/$1 чи IPv6/$2, не приймаються.",
        "apihelp-query+blocks-param-limit": "Максимальна кількість блокувань у списку.",
-       "apihelp-query+blocks-param-prop": "Які властивості отримати:\n;id:Додає ID блокування.\n;user:Додає ім'я заблокованого користувача.\n;userid:Додає ID заблокованого користувача.\n;by:Додає ім'я користувача, який заблокував.\n;byid:Додає ID користувача, який заблокував.\n;timestamp:Додає часову мітку здійснення блокування.\n;expiry:Додає часову мітку закінчення терміну блокування.\n;reason:Додає причину, вказану при блокуванні.\n;range:Додає діапазон IP-адрес, на які поширюється блокування.\n;flags:Мітки бану (автоблокування, лише анонім тощо).",
+       "apihelp-query+blocks-param-prop": "Які властивості отримати:",
+       "apihelp-query+blocks-paramvalue-prop-id": "Додає ID блокування.",
+       "apihelp-query+blocks-paramvalue-prop-user": "Додає ім'я заблокованого користувача.",
+       "apihelp-query+blocks-paramvalue-prop-userid": "Додає ID заблокованого користувача.",
+       "apihelp-query+blocks-paramvalue-prop-by": "Додає ім'я користувача, який заблокував.",
+       "apihelp-query+blocks-paramvalue-prop-byid": "Додає ID користувача, який заблокував.",
+       "apihelp-query+blocks-paramvalue-prop-timestamp": "Додає часову мітку здійснення блокування.",
+       "apihelp-query+blocks-paramvalue-prop-expiry": "Додає часову мітку закінчення терміну блокування.",
+       "apihelp-query+blocks-paramvalue-prop-reason": "Додає причину, вказану при блокуванні.",
+       "apihelp-query+blocks-paramvalue-prop-range": "Додає діапазон IP-адрес, на які поширюється блокування.",
+       "apihelp-query+blocks-paramvalue-prop-flags": "Мітки бану (автоблокування, лише анонім тощо).",
        "apihelp-query+blocks-param-show": "Показувати лише елементи, які відповідають цим критеріям.\nНаприклад, щоб побачити лише незалежні блокування IP-адрес, встановіть <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "Вивести список блокувань.",
        "apihelp-query+blocks-example-users": "Вивести список блокувань користувачів <kbd>Alice</kbd> та <kbd>Bob</kbd>.",
        "apihelp-query+categories-description": "Перерахувати категорії, до яких сторінки належать.",
-       "apihelp-query+categories-param-prop": "Які додаткові властивості отримати для кожної категорії:\n;sortkey:Додає ключ сортування (шістнадцятковий рядок) і префікс ключа сортування (людиночитна частина) для категорії.\n;timestamp:Додає мітку часу, коли категорію було додано.\n;hidden:Тегує приховані категорії з допомогою _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+categories-param-prop": "Які додаткові властивості отримати для кожної категорії:",
+       "apihelp-query+categories-paramvalue-prop-sortkey": "Додає ключ сортування (шістнадцятковий рядок) і префікс ключа сортування (людиночитна частина) для категорії.",
+       "apihelp-query+categories-paramvalue-prop-timestamp": "Додає мітку часу, коли категорію було додано.",
+       "apihelp-query+categories-paramvalue-prop-hidden": "Тегує приховані категорії з допомогою <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+categories-param-show": "Який тип категорій показувати.",
        "apihelp-query+categories-param-limit": "Скільки категорій видати.",
        "apihelp-query+categories-param-categories": "Перерахувати лише ці категорії. Корисно для перевірки, чи певна сторінка є в певній категорії.",
        "apihelp-query+categorymembers-description": "Перерахувати усі сторінки у поданій категорії.",
        "apihelp-query+categorymembers-param-title": "Яку категорію вивести (обов'язково). Мусить включати префікс <kbd>{{ns:category}}:</kbd>. Не можна використати разом з <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "ID сторінки категорії для виведення. Не можна використати разом з <var>$1title</var>.",
-       "apihelp-query+categorymembers-param-prop": "Які відомості включати:\n;ids:Додає ID сторінки.\n;title:Додає назву й ID простору назв сторінки.\n;sortkey:Додає ключ сортування, використаний для сортування у категорії (шістнадцятковий рядок).\n;sortkeyprefix:Додає ключ сортування, використаний для сортування у категорії (людиночитна частина).\n;type:Додає тип, за яким категоризується сторінка (сторінка, підкатегорія або файл).\n;timestamp:Додає мітку часу, коли сторінка була включена.",
+       "apihelp-query+categorymembers-param-prop": "Які відомості включати:",
+       "apihelp-query+categorymembers-paramvalue-prop-ids": "Додає ID сторінки.",
+       "apihelp-query+categorymembers-paramvalue-prop-title": "Додає назву й ID простору назв сторінки.",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkey": "Додає ключ сортування, використаний для сортування у категорії (шістнадцятковий рядок).",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "Додає ключ сортування, використаний для сортування у категорії (людиночитна частина).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Додає тип, за яким категоризується сторінка (сторінка, підкатегорія або файл).",
+       "apihelp-query+categorymembers-paramvalue-prop-timestamp": "Додає мітку часу, коли сторінка була включена.",
        "apihelp-query+categorymembers-param-namespace": "Включати лише сторінки у цих просторах назв. Зверніть увагу, що <kbd>$1type=subcat</kbd> чи <kbd>$1type=file</kbd> можна використовувати замість <kbd>$1namespace=14</kbd> чи <kbd>6</kbd>.",
        "apihelp-query+categorymembers-param-type": "Який тип елементів категорії включати. Ігнорується, коли вказано <kbd>$1sort=timestamp</kbd>.",
        "apihelp-query+categorymembers-param-limit": "Максимальна кількість сторінок для виведення.",
        "apihelp-query+extlinks-param-expandurl": "Розгорнути протокол-залежні URL за канонічним протоколом.",
        "apihelp-query+extlinks-example-simple": "Отримати список зовнішніх посилань на <kbd>Main Page<kbd>.",
        "apihelp-query+exturlusage-description": "Перерахувати сторінки, які містять поданий URL.",
-       "apihelp-query+exturlusage-param-prop": "Які відомості включати:\n;ids:Додає ID сторінки.\n;title:Додає заголовок і ID простору назв сторінки.\n;url:Додає URL, використаний на сторінці.",
+       "apihelp-query+exturlusage-param-prop": "Які відомості включати:",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "Додає ID сторінки.",
+       "apihelp-query+exturlusage-paramvalue-prop-title": "Додає заголовок і ID простору назв сторінки.",
+       "apihelp-query+exturlusage-paramvalue-prop-url": "Додає URL, використаний на сторінці.",
        "apihelp-query+exturlusage-param-protocol": "Протокол URL. Якщо пусто і вказано <var>$1query</var>, протокол <kbd>http</kbd>. Залиште пустими і це, і <var>$1query</var>, щоб перелічити усі зовнішні посилання.",
        "apihelp-query+exturlusage-param-query": "Шукати рядок без протоколу. Див. [[Special:LinkSearch]]. Залиште пустим, щоб вивести усі зовнішні посилання.",
        "apihelp-query+exturlusage-param-namespace": "Простори назв для переліку.",
        "apihelp-query+filearchive-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+filearchive-param-sha1": "SHA1-хеш зображення. Перевизначає $1sha1base36.",
        "apihelp-query+filearchive-param-sha1base36": "SHA1-хеш зображення у base 36 (використано в MediaWiki).",
-       "apihelp-query+filearchive-param-prop": "Which image information to get:\n;sha1:Додає хеш SHA-1 до зображення.\n;timestamp:Додає часову мітку завантаженої версії.\n;user:Додає користувача, який завантажив версію зображення.\n;size:Додає розмір зображення у байтах, а також висоту, ширину і кількість сторінок (якщо є).\n;dimensions:Аліас розміру.\n;description:Додає опис версії зображення.\n;parseddescription:Аналіз опису зображення.\n;mime:Додає MIME-тип зображення.\n;mediatype:Додає медіатип зображення.\n;metadata:Вилає Exif-метадані версії зображення.\n;bitdepth:Додає бітну глибину версії.\n;archivename:Додає назву файлу архівної версії для неостанніх версій.",
+       "apihelp-query+filearchive-param-prop": "Which image information to get:",
+       "apihelp-query+filearchive-paramvalue-prop-sha1": "Додає хеш SHA-1 до зображення.",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "Додає часову мітку завантаженої версії.",
+       "apihelp-query+filearchive-paramvalue-prop-user": "Додає користувача, який завантажив версію зображення.",
+       "apihelp-query+filearchive-paramvalue-prop-size": "Додає розмір зображення у байтах, а також висоту, ширину і кількість сторінок (якщо є).",
+       "apihelp-query+filearchive-paramvalue-prop-dimensions": "Аліас розміру.",
+       "apihelp-query+filearchive-paramvalue-prop-description": "Додає опис версії зображення.",
+       "apihelp-query+filearchive-paramvalue-prop-parseddescription": "Аналіз опису зображення.",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "Додає MIME-тип зображення.",
+       "apihelp-query+filearchive-paramvalue-prop-mediatype": "Додає медіатип зображення.",
+       "apihelp-query+filearchive-paramvalue-prop-metadata": "Вилає Exif-метадані версії зображення.",
+       "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Додає бітну глибину версії.",
+       "apihelp-query+filearchive-paramvalue-prop-archivename": "Додає до імені версію архіву для неостаточного варіанту файлу.",
        "apihelp-query+filearchive-example-simple": "Показати список усіх вилучених файлів.",
        "apihelp-query+filerepoinfo-description": "Видати мета-інформацію про репозиторії зображень, налаштовані на вікі.",
        "apihelp-query+filerepoinfo-param-prop": "Які властивості репозиторію отримати (на деяких вікі може бути більше):\n;apiurl:URL до репозиторію API — корисне для отримання інформації про зображення з хосту.\n;name:Ключ репозиторію — використано в e.g. <var>[[mw:Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> і значення [[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:Людиночита назва репозиторію вікі.\n;rooturl:Корінний URL для шляху зображення.\n;local:Чи репозиторій локальний, чи ні.",
        "apihelp-query+filerepoinfo-example-simple": "Отримати інформацію про репозиторії файлів.",
        "apihelp-query+fileusage-description": "Знайти всі сторінки, що використовують дані файли.",
-       "apihelp-query+fileusage-param-prop": "Які властивості отримати:\n;pageid:ID кожної сторінки.\n;title:Назва кожної сторінки.\n;redirect:Помітка, якщо сторінка є перенаправленням.",
+       "apihelp-query+fileusage-param-prop": "Які властивості отримати:",
+       "apihelp-query+fileusage-paramvalue-prop-pageid": "ID кожної сторінки.",
+       "apihelp-query+fileusage-paramvalue-prop-title": "Назва кожної сторінки.",
+       "apihelp-query+fileusage-paramvalue-prop-redirect": "Помітка, якщо сторінка є перенаправленням.",
        "apihelp-query+fileusage-param-namespace": "Включати сторінки лише в цих просторах назв.",
        "apihelp-query+fileusage-param-limit": "Скільки результатів виводити.",
        "apihelp-query+fileusage-param-show": "Показати лише елементи, що відповідають цим критеріям:\n;redirect:Показати лише перенаправлення.\n;!redirect:Показати лише не перенаправлення.",
        "apihelp-query+iwbacklinks-param-prefix": "Префікс для інтервікі.",
        "apihelp-query+iwbacklinks-param-title": "Інтервікі-посилання для пошуку. Повинно використовуватися з <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "Скільки всього сторінок виводити.",
-       "apihelp-query+iwbacklinks-param-prop": "Які властивості отримати:\n;iwprefix:Додає префікс інтервікі.\n;iwtitle:Додає назву інтервікі.",
+       "apihelp-query+iwbacklinks-param-prop": "Які властивості отримати:",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Додає префікс інтервікі.",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Додає назву інтервікі.",
        "apihelp-query+iwbacklinks-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+iwbacklinks-example-simple": "Отримати сторінки, що посилаються на [[wikibooks:Test]].",
        "apihelp-query+iwbacklinks-example-generator": "Отримати інформацію про сторінки, що посилаються на [[wikibooks:Test]].",
        "apihelp-query+iwlinks-description": "Видає усі інтервікі-посилання із вказаних сторінок.",
        "apihelp-query+iwlinks-param-url": "Чи отримувати повну URL-адресу (не може використовуватися з $1prop).",
-       "apihelp-query+iwlinks-param-prop": "Які додаткові властивості отримати для кожного міжмовного посилання:\n;url:Додає повну URL-адресу.",
+       "apihelp-query+iwlinks-param-prop": "Які додаткові властивості отримати для кожного міжмовного посилання:",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "Додає повну URL-адресу.",
        "apihelp-query+iwlinks-param-limit": "Скільки інтервікі-посилання виводити.",
        "apihelp-query+iwlinks-param-prefix": "Видавати інтервікі-посилання лише з цим префіксом.",
        "apihelp-query+iwlinks-param-title": "Інтервікі-посилання для пошуку. Повинно використовуватися з <var>$1prefix</var>.",
        "apihelp-query+langbacklinks-param-lang": "Мова мовного посилання.",
        "apihelp-query+langbacklinks-param-title": "Мовне посилання для пошуку. Мусить бути використане з $1lang.",
        "apihelp-query+langbacklinks-param-limit": "Скільки всього сторінок виводити.",
-       "apihelp-query+langbacklinks-param-prop": "Які властивості отримати:\n;lllang:Додає код мови мовного посилання.\n;lltitle:Додає назву мовного посилання.",
+       "apihelp-query+langbacklinks-param-prop": "Які властивості для отримання:",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "Додає код мови мовного посилання.",
+       "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "Додає назву мовного посилання.",
        "apihelp-query+langbacklinks-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+langbacklinks-example-simple": "Отримати сторінки, що посилаються на [[:fr:Test]].",
        "apihelp-query+langbacklinks-example-generator": "Отримати інформацію про сторінки, що посилаються на [[:fr:Test]].",
        "apihelp-query+langlinks-description": "Видає усі міжмовні посилання із вказаних сторінок.",
        "apihelp-query+langlinks-param-limit": "Скільки мовних посилань виводити.",
        "apihelp-query+langlinks-param-url": "Чи отримувати повну URL-адресу (не може використовуватися з <var>$1prop</var>).",
-       "apihelp-query+langlinks-param-prop": "Які додаткові властивості отримати для кожного міжмовного посилання:\n;url:Додає повну URL-адресу.\n;langname:Додає локалізовану назву мови (найкращий варіант). Використайте <var>$1inlanguagecode</var> для контролю мови.\n;autonym:Додає самоназву мови.",
+       "apihelp-query+langlinks-param-prop": "Які додаткові властивості для отримання кожного із міжмовного посилання:",
+       "apihelp-query+langlinks-paramvalue-prop-url": "Додає повну URL-адресу.",
+       "apihelp-query+langlinks-paramvalue-prop-langname": "Додає локалізовану назву мови (найкращий варіант). Використайте <var>$1inlanguagecode</var> для контролю мови.",
+       "apihelp-query+langlinks-paramvalue-prop-autonym": "Додає самоназву мови.",
        "apihelp-query+langlinks-param-lang": "Видавати лише мовні посилання з кодом мови.",
        "apihelp-query+langlinks-param-title": "Посилання для пошуку. Повинно використовуватися з <var>$1lang</var>.",
        "apihelp-query+langlinks-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+links-example-generator": "Отримати інформацію про сторінки посилань на сторінці <kbd>Main Page</kbd>.",
        "apihelp-query+links-example-namespaces": "Отримати посилання зі сторінки <kbd>Main Page</kbd> у просторах назв {{ns:user}} і {{ns:template}}.",
        "apihelp-query+linkshere-description": "Знайти усі сторінки, що посилаються на подані сторінки.",
-       "apihelp-query+linkshere-param-prop": "Які властивості отримати:\n;pageid:ID кожної сторінки.\n;title:Назва кожної сторінки.\n;redirect:Помітка, якщо сторінка є перенаправленням.",
+       "apihelp-query+linkshere-param-prop": "Які властивості отримати:",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "ID кожної сторінки.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "Назва кожної сторінки.",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "Відзначити, якщо сторінка є перенаправленням.",
        "apihelp-query+linkshere-param-namespace": "Включати сторінки лише в цих просторах назв.",
        "apihelp-query+linkshere-param-limit": "Скільки результатів виводити.",
        "apihelp-query+linkshere-param-show": "Показати лише елементи, що відповідають цим критеріям:\n;redirect:Показати лише перенаправлення.\n;!redirect:Показати лише не перенаправлення.",
        "apihelp-query+linkshere-example-simple": "Отримати список сторінок, що посилаються на [[Main Page]].",
        "apihelp-query+linkshere-example-generator": "Отримати інформацію про сторінки, що посилаються на [[Main Page]].",
        "apihelp-query+logevents-description": "Отримати події з журналів.",
-       "apihelp-query+logevents-param-prop": "Які властивості отримати:\n;ids:Додає ID події в журналі.\n;title:Додає назву сторінки події в журналі.\n;type:Додає тип події в журналі.\n;user:Додає користувача, відповідального за подію в журналі.\n;userid:Додає ID користувача, відповідального за подію в журналі.\n;timestamp:Додає часову мітку події.\n;comment:Додає коментар події.\n;parsedcomment:Додає проаналізований коментар події.\n;details:Виводить додаткові деталі щодо події.\n;tags:Виводить мітки події.",
+       "apihelp-query+logevents-param-prop": "Які властивості отримати:",
+       "apihelp-query+logevents-paramvalue-prop-ids": "Додає ID події в журналі.",
+       "apihelp-query+logevents-paramvalue-prop-title": "Додає назву сторінки події в журналі.",
+       "apihelp-query+logevents-paramvalue-prop-type": "Додає тип події в журналі.",
+       "apihelp-query+logevents-paramvalue-prop-user": "Додає користувача, відповідального за подію в журналі.",
+       "apihelp-query+logevents-paramvalue-prop-userid": "Додає ID користувача, відповідального за подію в журналі.",
+       "apihelp-query+logevents-paramvalue-prop-timestamp": "Додає часову мітку події.",
+       "apihelp-query+logevents-paramvalue-prop-comment": "Додає коментар події.",
+       "apihelp-query+logevents-paramvalue-prop-parsedcomment": "Додає проаналізований коментар події.",
+       "apihelp-query+logevents-paramvalue-prop-details": "Виводить додаткові деталі щодо події.",
+       "apihelp-query+logevents-paramvalue-prop-tags": "Виводить мітки події.",
        "apihelp-query+logevents-param-type": "Відфільтрувати записи журналу лише цього типу.",
        "apihelp-query+logevents-param-action": "Відфільтрувати дії журналу до лише цієї дії. Перезаписує <var>$1type</var>. Джокери на зразок <kbd>action/*</kbd> дозволяють вказати будь-який рядок замість астеріска.",
        "apihelp-query+logevents-param-start": "Часова мітка початку переліку.",
        "apihelp-query+pageprops-example-simple": "Отримати властивості для сторінок <kbd>Main Page</kbd> і <kbd>MediaWiki</kbd>.",
        "apihelp-query+pageswithprop-description": "Перелічити усі сторінки, що використовують подану властивість сторінки.",
        "apihelp-query+pageswithprop-param-propname": "Властивість сторі́нки, для якої перелічити сторінки́.",
-       "apihelp-query+pageswithprop-param-prop": "Які відомості включати:\n;ids:Додає ID сторінки.\n;title:Додає заголовок і ID простору назв сторінки.\n;value:Додає значення властивості сторінки.",
+       "apihelp-query+pageswithprop-param-prop": "Які відомості включати:",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "Додає ID сторінки.",
+       "apihelp-query+pageswithprop-paramvalue-prop-title": "Додає заголовок і ID простору назв сторінки.",
+       "apihelp-query+pageswithprop-paramvalue-prop-value": "Додає значення властивості сторінки.",
        "apihelp-query+pageswithprop-param-limit": "Максимальна кількість сторінок для виведення.",
        "apihelp-query+pageswithprop-param-dir": "У якому напрямку сортувати.",
        "apihelp-query+pageswithprop-example-simple": "Перелічити перші 10, що використовують <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+protectedtitles-param-limit": "Скільки всього сторінок виводити.",
        "apihelp-query+protectedtitles-param-start": "Почати список з цієї часової мітки захисту.",
        "apihelp-query+protectedtitles-param-end": "Закінчити список цією часовою міткою захисту.",
-       "apihelp-query+protectedtitles-param-prop": "Які властивості отримати:\n;timestamp:Додає часову мітку встановлення захисту.\n;user:Додає користувача, який встановив захист.\n;userid:Додає ID користувача, який встановив захист.\n;comment:Додає коментар захисту.\n;parsedcomment:Додає проаналізований коментар захисту.\n;expiry:Додає часову мітку закінчення захисту.\n;level:Додає рівень захисту.",
+       "apihelp-query+protectedtitles-param-prop": "Які властивості отримати:",
+       "apihelp-query+protectedtitles-paramvalue-prop-timestamp": "Додає часову мітку встановлення захисту.",
+       "apihelp-query+protectedtitles-paramvalue-prop-user": "Додає користувача, який встановив захист.",
+       "apihelp-query+protectedtitles-paramvalue-prop-userid": "Додає ID користувача, який встановив захист.",
+       "apihelp-query+protectedtitles-paramvalue-prop-comment": "Додає коментар захисту.",
+       "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "Додає проаналізований коментар захисту.",
+       "apihelp-query+protectedtitles-paramvalue-prop-expiry": "Додає часову мітку закінчення захисту.",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "Додає рівень захисту.",
        "apihelp-query+protectedtitles-example-simple": "Вивести список захищених назв.",
        "apihelp-query+protectedtitles-example-generator": "Знайти посилання на захищені назви в основному просторі назв.",
        "apihelp-query+querypage-description": "Отримати список, кий дає спеціальна сторінка на базі QueryPage.",
        "apihelp-query+recentchanges-param-user": "Перерахувати лише зміни, зроблені цим користувачем.",
        "apihelp-query+recentchanges-param-excludeuser": "Не перераховувати зміни, зроблені цим користувачем.",
        "apihelp-query+recentchanges-param-tag": "Перерахувати лише зміни, помічені цим теґом.",
-       "apihelp-query+recentchanges-param-prop": "Включити додаткові відомості:\n;user:Додає користувача, відповідального за редагування і мітки, якщо він IP.\n;userid:Додає ID користувача, відповідального за редагування.\n;comment:Додає коментар редагування.\n;parsedcomment:Додає проаналізований коментар редагування.\n;flags:Додає прапорці редагування.\n;timestamp:Додає часову мітку редагування.\n;title:Додає назву сторінки, де було редагування.\n;ids:Додає ID сторінки, ID нещодавніх змін, а також ID нової і старої версій.\n;sizes:Додає нову і стару довжину сторінки в байтах.\n;redirect:Помічає редагування, якщо сторінка є перенаправленням.\n;patrolled:Помічає редагування як відпатрульвані чи невідпатрульовані.\n;loginfo:Додає інформацію журналу (ID журналу, тип журналу тощо) до записів журналу.\n;tags:Виводить мітки запису.\n;sha1:Додає контрольну суму вмісту для записів, пов'язаних з версією.",
+       "apihelp-query+recentchanges-param-prop": "Включити додаткові відомості:",
+       "apihelp-query+recentchanges-paramvalue-prop-user": "Додає користувача, відповідального за редагування і мітки, якщо він IP.",
+       "apihelp-query+recentchanges-paramvalue-prop-userid": "Додає ID користувача, відповідального за редагування.",
+       "apihelp-query+recentchanges-paramvalue-prop-comment": "Додає коментар редагування.",
+       "apihelp-query+recentchanges-paramvalue-prop-parsedcomment": "Додає проаналізований коментар редагування.",
+       "apihelp-query+recentchanges-paramvalue-prop-flags": "Додає прапорці редагування.",
+       "apihelp-query+recentchanges-paramvalue-prop-timestamp": "Додає часову мітку редагування.",
+       "apihelp-query+recentchanges-paramvalue-prop-title": "Додає назву сторінки, де було редагування.",
+       "apihelp-query+recentchanges-paramvalue-prop-ids": "Додає ID сторінки, ID нещодавніх змін, а також ID нової і старої версій.",
+       "apihelp-query+recentchanges-paramvalue-prop-sizes": "Додає нову і стару довжину сторінки в байтах.",
+       "apihelp-query+recentchanges-paramvalue-prop-redirect": "Помічає редагування, якщо сторінка є перенаправленням.",
+       "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Помічає редагування як відпатрульвані чи невідпатрульовані.",
+       "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Додає інформацію журналу (ID журналу, тип журналу тощо) до записів журналу.",
+       "apihelp-query+recentchanges-paramvalue-prop-tags": "Виводить мітки запису.",
+       "apihelp-query+recentchanges-paramvalue-prop-sha1": "Додає контрольну суму вмісту для записів, пов'язаних з версією.",
        "apihelp-query+recentchanges-param-token": "Використати натомість <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-query+recentchanges-param-show": "Показати лише елементи, що задовільняють ці критерії. Наприклад, для перегляду лише незначних змін, здійснених користувачами, що увійшли до системи, вкажіть $1show=minor|!anon.",
        "apihelp-query+recentchanges-param-limit": "Скільки всього змін виводити.",
        "apihelp-query+recentchanges-example-simple": "Вивести нещодавні зміни.",
        "apihelp-query+recentchanges-example-generator": "Отримати інформацію про сторінки з недавніми невідпатрульованими змінами.",
        "apihelp-query+redirects-description": "Видає усі перенаправлення на дані сторінки.",
-       "apihelp-query+redirects-param-prop": "Які властивості отримати:\n;pageid:Ідентифікатор сторінки кожного перенаправлення.\n;title:Назва кожного перенаправлення.\n;fragment:Фрагмент кожного перенаправлення, якщо є.",
+       "apihelp-query+redirects-param-prop": "Які властивості отримати:",
+       "apihelp-query+redirects-paramvalue-prop-pageid": "Ідентифікатор сторінки кожного перенаправлення.",
+       "apihelp-query+redirects-paramvalue-prop-title": "Назва кожного перенаправлення.",
+       "apihelp-query+redirects-paramvalue-prop-fragment": "Фрагмент кожного перенаправлення, якщо є.",
        "apihelp-query+redirects-param-namespace": "Включати сторінки лише в цих просторах назв.",
        "apihelp-query+redirects-param-limit": "Скільки перенаправлень виводити.",
        "apihelp-query+redirects-param-show": "Показати лише елементи, які відповідають цим критеріям:\n;fragment:Показати лише перенаправлення з фрагментом.\n;!fragment:Показати лише перенаправлення без фрагмента.",
        "apihelp-query+search-param-namespace": "Шукати лише в межах цих просторів назв.",
        "apihelp-query+search-param-what": "Який тип пошуку виконати.",
        "apihelp-query+search-param-info": "Які метадані отримати.",
-       "apihelp-query+search-param-prop": "Які властивості отримати:\n;size:Додає розмір сторінки в байтах.\n;wordcount:Додає кількість слів на сторінці.\n;timestamp:Додає часову мітку останнього редагування сторінки.\n;snippet:Додає проаналізований уривок сторінки.\n;titlesnippet:Додає проаналізований уривок заголовка сторінки.\n;redirectsnippet:Додає проаналізований уривок перенаправлення.\n;redirecttitle:Додає заголовок відповідного перенаправлення.\n;sectionsnippet:Додає проаналізований уривок заголовка відповідного розділу.\n;sectiontitle:Додає заголовок відповідного розділу.\n;categorysnippet:Додає проаналізований уривок відповідної категорії.\n;isfilematch:Додає перемикач, який показує, є пошук знайшов вміст файлу.\n;score:<span class=\"apihelp-deprecated\">Застаріло й інгорується.</span>\n;hasrelated:<span class=\"apihelp-deprecated\">Застаріло й інгорується.</span>",
+       "apihelp-query+search-param-prop": "Які властивості для виведення:",
+       "apihelp-query+search-paramvalue-prop-size": "Додає розмір сторінки в байтах.",
+       "apihelp-query+search-paramvalue-prop-wordcount": "Додає кількість слів на сторінці.",
+       "apihelp-query+search-paramvalue-prop-timestamp": "Додає часову мітку останнього редагування сторінки.",
+       "apihelp-query+search-paramvalue-prop-snippet": "Додає проаналізований уривок сторінки.",
+       "apihelp-query+search-paramvalue-prop-titlesnippet": "Додає проаналізований уривок заголовка сторінки.",
+       "apihelp-query+search-paramvalue-prop-redirectsnippet": "Додає проаналізований уривок перенаправлення.",
+       "apihelp-query+search-paramvalue-prop-redirecttitle": "Додає заголовок відповідного перенаправлення.",
+       "apihelp-query+search-paramvalue-prop-sectionsnippet": "Додає проаналізований уривок заголовка відповідного розділу.",
+       "apihelp-query+search-paramvalue-prop-sectiontitle": "Додає заголовок відповідного розділу.",
+       "apihelp-query+search-paramvalue-prop-categorysnippet": "Додає проаналізований уривок відповідної категорії.",
+       "apihelp-query+search-paramvalue-prop-isfilematch": "Додає перемикач, який показує, є пошук знайшов вміст файлу.",
+       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Застаріло й інгорується.</span>",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Застаріло й інгорується.</span>",
        "apihelp-query+search-param-limit": "Скільки всього сторінок виводити.",
        "apihelp-query+search-param-interwiki": "Включати інтервікі в результатах пошуку, якщо доступно.",
        "apihelp-query+search-param-backend": "Який бекенд пошуку використовувати, якщо не за замовчуванням.",
        "apihelp-query+search-example-text": "Шукати в текстах <kbd>meaning</kbd>.",
        "apihelp-query+search-example-generator": "Отримати інформацію про сторінки, на яких знайдено <kbd>meaning</kbd>.",
        "apihelp-query+siteinfo-description": "Видати загальну інформацію про сайт.",
-       "apihelp-query+siteinfo-param-prop": "Яку інформацію отримати:\n;general:Загальна системна інформація.\n;namespaces:Список зареєстрованих просторів назв та їхні канонічні назви.\n;namespacealiases:Список зареєстрованих синонімів просторів назв.\n;specialpagealiases:Список аліасів спеціальної сторінки.\n;magicwords:Список магічних слів та їх аліасів.\n;statistics:Видає статистику сайту.\n;interwikimap:Видає карту інтервікі (за бажанням, фільтровану, за бажанням локалізовану з використанням <var>$1inlanguagecode</var>).\n;dbrepllag:Видає сервер бази даних з найбільшою затримкою відповіді.\n;usergroups:Видає групи користувачів і пов'язані дозволи.\n;libraries:Видає бібліотеки, встановлені у вікі.\n;extensions:Видає розширення, встановлені у вікі.\n;fileextensions:Видає список розширень файлів, які дозволено завантажувати.\n;rightsinfo:Видає інформацію щодо прав (ліцензії) вікі, якщо наявна.\n;restrictions:Видає інформацію про наявні типи обмежень (захисту).\n;languages:Видає список мов, які підтримує MediaWiki (за бажанням локалізовані через <var>$1inlanguagecode</var>).\n;skins:Видає список усіх доступних тем оформлення (опціонально локалізовані з використанням <var>$1inlanguagecode</var>, в іншому разі — мовою вмісту).\n;extensiontags:Видає список теґів розширення парсеру.\n;functionhooks:Видає список гуків парсерних функцій.\n;showhooks:Видає список усіх підписаних гуків (вміст <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).\n;variables:Видає список змінних ID.\n;protocols:Видає список протоколів, дозволених у зовнішніх посиланнях.\n;defaultoptions:Видає значення налаштувань користувача за замовчуванням.",
+       "apihelp-query+siteinfo-param-prop": "Яку інформацію отримати:",
+       "apihelp-query+siteinfo-paramvalue-prop-general": "Загальна системна інформація.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespaces": "Список зареєстрованих просторів назв та їхні канонічні назви.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "Список зареєстрованого простору прізвиськ.",
+       "apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "Список аліасів спеціальної сторінки.",
+       "apihelp-query+siteinfo-paramvalue-prop-magicwords": "Список магічних слів та їх аліасів.",
+       "apihelp-query+siteinfo-paramvalue-prop-statistics": "Видає статистику сайту.",
+       "apihelp-query+siteinfo-paramvalue-prop-interwikimap": "Видає карту інтервікі (за бажанням, фільтровану, за бажанням локалізовану з використанням <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-dbrepllag": "Видає сервер бази даних з найбільшою затримкою відповіді.",
+       "apihelp-query+siteinfo-paramvalue-prop-usergroups": "Видає групи користувачів і пов'язані дозволи.",
+       "apihelp-query+siteinfo-paramvalue-prop-libraries": "Видає бібліотеки, встановлені у вікі.",
+       "apihelp-query+siteinfo-paramvalue-prop-extensions": "Видає розширення, встановлені у вікі.",
+       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "Видає список розширень файлів, які дозволено завантажувати.",
+       "apihelp-query+siteinfo-paramvalue-prop-rightsinfo": "Видає інформацію щодо прав (ліцензії) вікі, якщо наявна.",
+       "apihelp-query+siteinfo-paramvalue-prop-restrictions": "Видає інформацію про наявні типи обмежень (захисту).",
+       "apihelp-query+siteinfo-paramvalue-prop-languages": "Видає список мов, які підтримує MediaWiki (за бажанням локалізовані через <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-skins": "Видає список усіх доступних тем оформлення (опціонально локалізовані з використанням <var>$1inlanguagecode</var>, в іншому разі — мовою вмісту).",
+       "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "Видає список теґів розширення парсеру.",
+       "apihelp-query+siteinfo-paramvalue-prop-functionhooks": "Видає список гуків парсерних функцій.",
+       "apihelp-query+siteinfo-paramvalue-prop-showhooks": "Видає список усіх підписаних гуків (вміст <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-variables": "Видає список змінних ID.",
+       "apihelp-query+siteinfo-paramvalue-prop-protocols": "Видає список протоколів, дозволених у зовнішніх посиланнях.",
+       "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "Видає значення налаштувань користувача за замовчуванням.",
        "apihelp-query+siteinfo-param-filteriw": "Видати лише локальні або лише нелокальні елементи карти інтервікі.",
        "apihelp-query+siteinfo-param-showalldb": "Перелічити усі сервери баз даних, а не лише той, який робить найбільшу затримку.",
        "apihelp-query+siteinfo-param-numberingroup": "Перераховує кількість користувачів у групах користувачів.",
        "apihelp-query+stashimageinfo-example-params": "Видає мініатюри для двох прихованих файлів.",
        "apihelp-query+tags-description": "Перелічити мітки змін.",
        "apihelp-query+tags-param-limit": "Максимальна кількість міток у списку.",
-       "apihelp-query+tags-param-prop": "Які властивості отримати:\n;name:Додає назву мітки.\n;displayname:Додає системне повідомлення для мітки.\n;description:Додає опис мітки.\n;hitcount:Додає кількість версій та записів журналу, які мають цю мітку.\n;defined:Показує, чи мітка визначена.\n;source:Отримує джерела мітки, що може включати <samp>extension</samp> для визначених розширеннями міток і <samp>manual</samp> для міток, які користувачі можуть застосовувати вручну.\n;active:Чи мітка ще застосовується.",
+       "apihelp-query+tags-param-prop": "Які властивості отримати:",
+       "apihelp-query+tags-paramvalue-prop-name": "Додає назву мітки.",
+       "apihelp-query+tags-paramvalue-prop-displayname": "Додає системне повідомлення для мітки.",
+       "apihelp-query+tags-paramvalue-prop-description": "Додає опис мітки.",
+       "apihelp-query+tags-paramvalue-prop-hitcount": "Додає кількість версій та записів журналу, які мають цю мітку.",
+       "apihelp-query+tags-paramvalue-prop-defined": "Показує, чи мітка визначена.",
+       "apihelp-query+tags-paramvalue-prop-source": "Отримує джерела мітки, що може включати <samp>extension</samp> для визначених розширеннями міток і <samp>manual</samp> для міток, які користувачі можуть застосовувати вручну.",
+       "apihelp-query+tags-paramvalue-prop-active": "І все ж позначка досі задіяна.",
        "apihelp-query+tags-example-simple": "Перелічити доступні мітки.",
        "apihelp-query+templates-description": "Видає усі сторінки, які включені на вказаних сторінках.",
        "apihelp-query+templates-param-namespace": "Показати шаблони лише у цьому просторі назв.",
        "apihelp-query+tokens-example-simple": "Отримати csrf-токен (за замовчуванням).",
        "apihelp-query+tokens-example-types": "Отримати токен спостереження і токен патрулювання.",
        "apihelp-query+transcludedin-description": "Знайти усі сторінки, що включають подані сторінки.",
-       "apihelp-query+transcludedin-param-prop": "Які властивості отримати:\n;pageid:ID кожної сторінки.\n;title:Назва кожної сторінки.\n;redirect:Помітка, якщо сторінка є перенаправленням.",
+       "apihelp-query+transcludedin-param-prop": "Які властивості отримати:",
+       "apihelp-query+transcludedin-paramvalue-prop-pageid": "ID кожної сторінки.",
+       "apihelp-query+transcludedin-paramvalue-prop-title": "Назва кожної сторінки.",
+       "apihelp-query+transcludedin-paramvalue-prop-redirect": "Помітка, якщо сторінка є перенаправленням.",
        "apihelp-query+transcludedin-param-namespace": "Включати сторінки лише в цих просторах назв.",
        "apihelp-query+transcludedin-param-limit": "Скільки результатів виводити.",
        "apihelp-query+transcludedin-param-show": "Показати лише елементи, що відповідають цим критеріям:\n;redirect:Показати лише перенаправлення.\n;!redirect:Показати лише не перенаправлення.",
        "apihelp-query+usercontribs-param-user": "Користувачі, для яких отримати внесок.",
        "apihelp-query+usercontribs-param-userprefix": "Отримати внесок усіх користувачів, чиї імена починаються цим значенням. Перевизначає $1user.",
        "apihelp-query+usercontribs-param-namespace": "Перерахувати записи внеску лише в цих просторах назв.",
-       "apihelp-query+usercontribs-param-prop": "Включити додаткові відомомсті:\n;ids:Додає ID сторінки й ID версії.\n;title:Додає назву й ID простору назв сторінки.\n;timestamp:Додає часову мітку редагування.\n;comment:Додає коментар редагування.\n;parsedcomment:Додає проаналізований коментар редагування.\n;size:Додає новий розмір редагування.\n;sizediff:Додає зміну розміру порівняно з попереднім редагуванням.\n;flags:Додає прапорці редагування.\n;patrolled:Відзначає патрульовані редагування.\n;tags:Перелічує мітки редагування.",
+       "apihelp-query+usercontribs-param-prop": "Включити додаткові відомомсті:",
+       "apihelp-query+usercontribs-paramvalue-prop-ids": "Додає ID сторінки й ID версії.",
+       "apihelp-query+usercontribs-paramvalue-prop-title": "Додає назву й ID простору назв сторінки.",
+       "apihelp-query+usercontribs-paramvalue-prop-timestamp": "Додає часову мітку редагування.",
+       "apihelp-query+usercontribs-paramvalue-prop-comment": "Додає коментар редагування.",
+       "apihelp-query+usercontribs-paramvalue-prop-parsedcomment": "Додає проаналізований коментар редагування.",
+       "apihelp-query+usercontribs-paramvalue-prop-size": "Додає новий розмір редагування.",
+       "apihelp-query+usercontribs-paramvalue-prop-sizediff": "Додає зміну розміру порівняно з попереднім редагуванням.",
+       "apihelp-query+usercontribs-paramvalue-prop-flags": "Додає прапорці редагування.",
+       "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Відзначає патрульовані редагування.",
+       "apihelp-query+usercontribs-paramvalue-prop-tags": "Перелічує мітки редагування.",
        "apihelp-query+usercontribs-param-show": "Показати лише елементи, що відповідають цим критеріям, наприклад, лише не незначні редагування: <kbd>$2show=!minor</kbd>.\n\nЯкщо вказано <kbd>$2show=patrolled</kbd> або <kbd>$2show=!patrolled</kbd>, версії, старіші ніж <var>[[mw:Manual:$wgRCMaxAge|$wgRCMaxAge]]</var> ($1 {{PLURAL:$1|секунда|секунди|секунд}}) не будуть показуватися.",
        "apihelp-query+usercontribs-param-tag": "Перерахувати лише версії, помічені цим теґом.",
        "apihelp-query+usercontribs-param-toponly": "Виводити лише зміни, які є останньою версією.",
        "apihelp-query+usercontribs-example-user": "Показати внесок користувача <kbd>Example</kbd>.",
        "apihelp-query+usercontribs-example-ipprefix": "Показати внесок з усіх IP-адрес з префіксом <kbd>192.0.2.</kbd>.",
        "apihelp-query+userinfo-description": "Отримати інформацію про поточного користувача.",
-       "apihelp-query+userinfo-param-prop": "Які саме відомості включати:\n;blockinfo:Позначає, чи поточний користувач заблокований, ким, з якої причини.\n;hasmsg:Додає мітку <samp>messages</samp>, якщо у користувача є непроглянуті повідомлення.\n;groups:Перелічує усі групи, до яких належить поточний користувач.\n;implicitgroups:Перелічує усі групи, до яких поточний користувач належить автоматично.\n;rights:Перелічує усі права, які має поточний користувач.\n;changeablegroups:Перелічує групи, у які користувач може додавати і з яких вилучати.\n;options:Перелічує усі налаштування, які поточний користувач встановив.\n;preferencestoken:<span class=\"apihelp-deprecated\">Застаріло.</span> Отримати токен зміни налаштувань поточного користувача.\n;editcount:Додає кількість редагувань поточного користувача.\n;ratelimits:Перелічує усі ліміти оцінок, застосовні до поточного користувача.\n;realname:Додає справжнє ім'я користувача.\n;email:Додає електронну пошту користувача та дату її підтвердження.\n;acceptlang:Дублює шапку <code>Accept-Language</code>, надіслану клієнтом у структурованому форматі.\n;registrationdate:Додає дату реєстрації користувача.\n;unreadcount:Додає кількість непрочитаних сторінок у списку спостереження користувача (максимально $1; видає «<samp>$2</samp>», якщо більше).",
+       "apihelp-query+userinfo-param-prop": "Які саме відомості включати:",
+       "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Позначає, чи поточний користувач заблокований, ким, з якої причини.",
+       "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Додає мітку <samp>messages</samp>, якщо у користувача є непроглянуті повідомлення.",
+       "apihelp-query+userinfo-paramvalue-prop-groups": "Перелічує усі групи, до яких належить поточний користувач.",
+       "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Перелічує усі групи, до яких поточний користувач належить автоматично.",
+       "apihelp-query+userinfo-paramvalue-prop-rights": "Перелічує усі права, які має поточний користувач.",
+       "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Перелічує групи, у які користувач може додавати і з яких вилучати.",
+       "apihelp-query+userinfo-paramvalue-prop-options": "Перелічує усі налаштування, які поточний користувач встановив.",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Застаріле.</span> Отримати знак для зміни налаштувань поточного користувача.",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "Додає кількість редагувань поточного користувача.",
+       "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Перелічує усі ліміти оцінок, застосовні до поточного користувача.",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "Додає справжнє ім'я користувача.",
+       "apihelp-query+userinfo-paramvalue-prop-email": "Додає електронну пошту користувача та дату її підтвердження.",
+       "apihelp-query+userinfo-paramvalue-prop-acceptlang": "Дублює шапку <code>Accept-Language</code>, надіслану клієнтом у структурованому форматі.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "ДОдає дату реєстрації користувача.",
+       "apihelp-query+userinfo-paramvalue-prop-unreadcount": "Додає кількість непрочитаних сторінок у списку спостереження користувача (максимально $1; видає «<samp>$2</samp>», якщо більше).",
        "apihelp-query+userinfo-example-simple": "Отримати інформацію про поточного користувача.",
        "apihelp-query+userinfo-example-data": "Отримати додаткову інформацію про поточного користувача.",
        "apihelp-query+users-description": "Отримати інформацію про список користувачів.",
-       "apihelp-query+users-param-prop": "Яку інформацію включити:\n;blockinfo:Мітки про те чи є користувач заблокованим, ким, і з якою причиною.\n;groups:Перелічує всі групи, до яких належить кожен з користувачів.\n;implicitgroups:Перелічує всі групи, членом яких користувач є автоматично.\n;rights:Перелічує всі права, які має кожен з користувачів.\n;editcount:Додає лічильник редагувань користувача.\n;registration:Додає часову мітку реєстрації користувача.\n;emailable:Помічає чи хоче користувач отримувати електронну пошту через [[Special:Emailuser]].\n;gender:Помічає стать користувача. Повертає \"male\", \"female\", або \"unknown\".",
+       "apihelp-query+users-param-prop": "Яку інформацію включити:",
+       "apihelp-query+users-paramvalue-prop-blockinfo": "Мітки про те чи є користувач заблокованим, ким, і з якою причиною.",
+       "apihelp-query+users-paramvalue-prop-groups": "Перелічує всі групи, до яких належить кожен з користувачів.",
+       "apihelp-query+users-paramvalue-prop-implicitgroups": "Перелічує всі групи, членом яких користувач є автоматично.",
+       "apihelp-query+users-paramvalue-prop-rights": "Перелічує всі права, які має кожен з користувачів.",
+       "apihelp-query+users-paramvalue-prop-editcount": "Додає лічильник редагувань користувача.",
+       "apihelp-query+users-paramvalue-prop-registration": "Додає часову мітку реєстрації користувача.",
+       "apihelp-query+users-paramvalue-prop-emailable": "Помічає чи хоче користувач отримувати електронну пошту через [[Special:Emailuser]].",
+       "apihelp-query+users-paramvalue-prop-gender": "Помічає стать користувача. Повертає \"male\", \"female\", або \"unknown\".",
        "apihelp-query+users-param-users": "Список користувачів, для яких отримати інформацію.",
        "apihelp-query+users-param-token": "Використати натомість <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-query+users-example-simple": "Вивести інформацію для користувача <kbd>Example</kbd>.",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Додає мітку часу, коли користувач був востаннє сповіщений про редагування.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "Додає інформацію журналу, де це доречно.",
        "apihelp-query+watchlist-param-show": "Показати лише елементи, що задовільняють ці критерії. Наприклад, для перегляду лише незначних змін, здійснених користувачами, що увійшли до системи, вкажіть $1show=minor|!anon.",
-       "apihelp-query+watchlist-param-type": "Які типи змін показувати:\n;edit:Звичайні редагування сторінки.\n;external:Зовнішні зміни.\n;new:Створення сторінок.\n;log:Записи журналу.\n;categorize:Зміни в членстві в категоріях.",
+       "apihelp-query+watchlist-param-type": "Які типи змін показувати:\n;edit:Звичайні редагування сторінки.\n;external:Зовнішні зміни.\n;new:Створення сторінок.\n;log:Записи журналу.",
        "apihelp-query+watchlist-param-owner": "Використовується разом з $1token для доступу до списку спостереження різних користувачів.",
        "apihelp-query+watchlist-param-token": "Токен безпеки (доступний у [[Special:Preferences#mw-prefsection-watchlist|налаштуваннях]] користувача) для отримання доступу до списку спостереження іншого користувача.",
        "apihelp-query+watchlist-example-simple": "Перелічити верхні версії для нещодавно змінених сторінок у списку спостереження поточного користувача.",
        "apihelp-query+watchlistraw-description": "Отримати усі сторінки у списку спостереження поточного користувача.",
        "apihelp-query+watchlistraw-param-namespace": "Перерахувати сторінки лише в поданих просторах назв.",
        "apihelp-query+watchlistraw-param-limit": "Скільки всього видати результатів за один запит.",
-       "apihelp-query+watchlistraw-param-prop": "Які додаткові властивості отримати:\n;changed:Додає мітку часу, коли користувач був востаннє сповіщений про редагування.",
+       "apihelp-query+watchlistraw-param-prop": "Які додаткові властивості отримати:",
+       "apihelp-query+watchlistraw-paramvalue-prop-changed": "Додає мітку часу, коли користувач був востаннє сповіщений про редагування.",
        "apihelp-query+watchlistraw-param-show": "Перелічити лише елементи, які відповідають цим критеріям.",
        "apihelp-query+watchlistraw-param-owner": "Використовується разом з $1token для доступу до списку спостереження різних користувачів.",
        "apihelp-query+watchlistraw-param-token": "Токен безпеки (доступний у [[Special:Preferences#mw-prefsection-watchlist|налаштуваннях]] користувача) для отримання доступу до списку спостереження іншого користувача.",
index 3ffc792..53bc4e8 100644 (file)
        "apihelp-paraminfo-param-helpformat": "Định dạng chuỗi trợ giúp.",
        "apihelp-parse-param-summary": "Lời tóm lược để phân tích.",
        "apihelp-parse-param-section": "Chỉ truy xuất nội dung của số phần này; nếu có <kbd>new</kbd> thì tạo phần mới.\n\nPhần <kbd>new</kbd> chỉ được chấp nhận khi định rõ <var>text</var>.",
-       "apihelp-parse-param-disablepp": "Bỏ qua thông báo bộ tiền xử lý (“NewPP limit report”) khi cho ra kết quả bộ xử lý.",
+       "apihelp-parse-param-disablelimitreport": "Bỏ qua thông báo bộ tiền xử lý (“NewPP limit report”) khi cho ra kết quả bộ xử lý.",
        "apihelp-parse-example-page": "Phân tích trang.",
        "apihelp-parse-example-text": "Phân tích văn bản wiki.",
        "apihelp-parse-example-texttitle": "Phân tích văn bản wiki theo tên trang.",
index c75c5f4..75f4d75 100644 (file)
@@ -14,7 +14,8 @@
                        "Kuailong",
                        "Zhxy 519",
                        "御坂美琴",
-                       "RyRubyy"
+                       "RyRubyy",
+                       "Umherirrender"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|文档]]\n* [[mw:API:FAQ|常见问题]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 邮件列表]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API公告]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 程序错误与功能请求]\n</div>\n<strong>状态信息:</strong>本页所展示的所有特性都应正常工作,但是API仍在开发当中,将会随时变化。请订阅[https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mediawiki-api-announce 邮件列表]以便获得更新通知。\n\n<strong>错误请求:</strong>当API收到错误请求时,HTTP header将会返回一个包含\"MediaWiki-API-Error\"的值,随后header的值与error code将会送回并设置为相同的值。详细信息请参阅[[mw:API:Errors_and_warnings|API: 错误与警告]]。",
@@ -50,7 +51,7 @@
        "apihelp-checktoken-example-simple": "测试<kbd>csrf</kbd>令牌的有效性。",
        "apihelp-clearhasmsg-description": "清除当前用户的<code>hasmsg</code>标记。",
        "apihelp-clearhasmsg-example-1": "清除当前用户的<code>hasmsg</code>标记。",
-       "apihelp-compare-description": "è\8e·å¾\972个页面之间的差别。\n\n用于“from”和“to”的修订版本号、页面标题或页面 ID 必须获得通过。",
+       "apihelp-compare-description": "è\8e·å\8f\962个页面之间的差别。\n\n用于“from”和“to”的修订版本号、页面标题或页面 ID 必须获得通过。",
        "apihelp-compare-param-fromtitle": "要比较的第一个标题。",
        "apihelp-compare-param-fromid": "要比较的第一个页面 ID。",
        "apihelp-compare-param-fromrev": "要比较的第一个修订版本。",
        "apihelp-feedrecentchanges-param-hideliu": "隐藏注册用户做出的更改。",
        "apihelp-feedrecentchanges-param-hidepatrolled": "隐藏已巡查更改。",
        "apihelp-feedrecentchanges-param-hidemyself": "隐藏当前用户做出的更改。",
-       "apihelp-feedrecentchanges-param-hidecategorization": "隐藏分类成员更改。",
        "apihelp-feedrecentchanges-param-tagfilter": "按标签过滤。",
        "apihelp-feedrecentchanges-param-target": "仅仅显示从该页面链出的那些页面的变更。",
        "apihelp-feedrecentchanges-param-showlinkedto": "仅仅显示链入到该页面的那些页面的变更。",
        "apihelp-parse-paramvalue-prop-indicators": "提供页面上使用的页面状态指示器的HTML。",
        "apihelp-parse-paramvalue-prop-iwlinks": "在被解析的wiki文本中提供跨wiki链接。",
        "apihelp-parse-paramvalue-prop-wikitext": "提供被解析的原始wiki文本。",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "以结构化的方式提供限制报告。如果<var>$1disablepp</var>被设定则不提供数据。",
-       "apihelp-parse-paramvalue-prop-limitreporthtml": "提供限制报告的HTML版本。当<var>$1disablepp</var>被设置时不会提供数据。",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "以结构化的方式提供限制报告。如果<var>$1disablelimitreport</var>被设定则不提供数据。",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "提供限制报告的HTML版本。当<var>$1disablelimitreport</var>被设置时不会提供数据。",
        "apihelp-parse-paramvalue-prop-parsetree": "修订内容的XML解析树(需要内容模型<code>$1</code>)",
        "apihelp-parse-param-pst": "在解析输入前,对输入做一次保存前变换处理。仅当使用文本时有效。",
        "apihelp-parse-param-effectivelanglinks": "包含由扩展提供的语言链接(用于与<kbd>$1prop=langlinks</kbd>一起使用)。",
        "apihelp-parse-param-section": "只检索此段数的内容,或只当<kbd>new</kbd>生成新的段落时检索。\n\n<kbd>new</kbd>段落只当指定<var>text</var>时受尊重。",
        "apihelp-parse-param-sectiontitle": "当<var>section</var>为<kbd>new</kbd>时新段落标题。\n\n不像页面编辑,当省略或为空时将不会备选为<var>summary</var>。",
-       "apihelp-parse-param-disablepp": "从解析器输出中省略预处理器报告(“NewPP limit report”)。",
+       "apihelp-parse-param-disablelimitreport": "从解析器输出中省略预处理器报告(“NewPP limit report”)。",
        "apihelp-parse-param-disableeditsection": "从解析器输出中省略编辑段落链接。",
        "apihelp-parse-param-generatexml": "生成XML解析树(需要内容模型<code>$1</code>;被<kbd>$2prop=parsetree</kbd>所取代)。",
        "apihelp-parse-param-preview": "在预览模式下解析。",
        "apihelp-query+allcategories-param-min": "只返回至少带这么多成员的分类。",
        "apihelp-query+allcategories-param-max": "只返回最多带这么多成员的分类。",
        "apihelp-query+allcategories-param-limit": "要返回多少个类别。",
-       "apihelp-query+allcategories-param-prop": "要获取的属性:\n;size:在分类中添加页面数。\n;hidden:标记由_&#95;HIDDENCAT_&#95;隐藏的分类。",
+       "apihelp-query+allcategories-param-prop": "要获取的属性:",
+       "apihelp-query+allcategories-paramvalue-prop-size": "在分类中添加页面数。",
+       "apihelp-query+allcategories-paramvalue-prop-hidden": "标记由<code>_&#95;HIDDENCAT_&#95;</code>隐藏的分类。",
        "apihelp-query+allcategories-example-size": "列出分类及其含有多少页面的信息。",
        "apihelp-query+allcategories-example-generator": "为以<kbd>List</kbd>的分类检索有关分类页面本身的信息。",
        "apihelp-query+alldeletedrevisions-description": "列举由一位用户或在一个名字空间中所有已删除的修订。",
        "apihelp-query+allfileusages-param-to": "要列举的最终文件标题。",
        "apihelp-query+allfileusages-param-prefix": "搜索所有以此值开头的文件标题。",
        "apihelp-query+allfileusages-param-unique": "只显示明显的文件标题。不能与$1prop=ids一起使用。\n当作为生成器使用时,产生目标页面而不是来源页面。",
-       "apihelp-query+allfileusages-param-prop": "要包含的信息束:\n;ids:添加使用中的页面的页面ID(不能与$1unique一起使用)。\n;title:添加文件的标题。",
+       "apihelp-query+allfileusages-param-prop": "要包含的信息束:",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "添加使用中的页面的页面ID(不能与$1unique一起使用)。",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "添加文件的标题。",
        "apihelp-query+allfileusages-param-limit": "要返回的总计项目。",
        "apihelp-query+allfileusages-param-dir": "罗列所采用的方向。",
        "apihelp-query+allfileusages-example-B": "列举文件标题,包含丢失的文件、它们来自的页面ID,以<kbd>B</kbd>开头。",
        "apihelp-query+alllinks-param-to": "要列举的最终标题链接。",
        "apihelp-query+alllinks-param-prefix": "搜索所有以此值开头的已链接标题。",
        "apihelp-query+alllinks-param-unique": "只显示明显的链接标题。不能与<kbd>$1prop=ids</kbd>一起使用。\n当作为生成器使用时,产生目标页面而不是来源页面。",
-       "apihelp-query+alllinks-param-prop": "要包含的信息束:\n;ids:添加链接中的页面的页面ID(不能与<var>$1unique</var>一起使用)。\n;title:添加链接的标题。",
+       "apihelp-query+alllinks-param-prop": "要包含的信息束:",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "添加链接中的页面的页面ID(不能与<var>$1unique</var>一起使用)。",
+       "apihelp-query+alllinks-paramvalue-prop-title": "添加链接的标题。",
        "apihelp-query+alllinks-param-namespace": "要列举的名字空间。",
        "apihelp-query+alllinks-param-limit": "总共要返回多少个项目。",
        "apihelp-query+alllinks-param-dir": "列出方向。",
        "apihelp-query+allredirects-param-from": "要列举的起始重定向标题。",
        "apihelp-query+allredirects-param-to": "要列举的最终重定向标题。",
        "apihelp-query+allredirects-param-prefix": "搜索所有以此值开头的目标页面。",
-       "apihelp-query+allredirects-param-prop": "要包含的信息束:\n;ids:添加重定向页面的页面ID(不能与<var>$1unique</var>一起使用)。\n;title:添加重定向的标题。\n;fragment:添加来自重定向的碎片,如果有(不能与<var>$1unique</var>一起使用)。\n;interwiki:添加来自重定向的跨wiki前缀,如果有(不能与<var>$1unique</var>一起使用)。",
+       "apihelp-query+allredirects-param-prop": "要包含的信息束:",
+       "apihelp-query+allredirects-paramvalue-prop-ids": "添加重定向页面的页面ID(不能与<var>$1unique</var>一起使用)。",
+       "apihelp-query+allredirects-paramvalue-prop-title": "添加重定向的标题。",
+       "apihelp-query+allredirects-paramvalue-prop-fragment": "添加来自重定向的碎片,如果有(不能与<var>$1unique</var>一起使用)。",
+       "apihelp-query+allredirects-paramvalue-prop-interwiki": "添加来自重定向的跨wiki前缀,如果有(不能与<var>$1unique</var>一起使用)。",
        "apihelp-query+allredirects-param-namespace": "要列举的名字空间。",
        "apihelp-query+allredirects-param-limit": "返回的总计项目数。",
        "apihelp-query+allredirects-param-dir": "罗列所采用的方向。",
        "apihelp-query+alltransclusions-param-from": "要列举的起始嵌入标题。",
        "apihelp-query+alltransclusions-param-to": "要列举的最终嵌入标题。",
        "apihelp-query+alltransclusions-param-prefix": "搜索所有以此值开头的嵌入的标题。",
-       "apihelp-query+alltransclusions-param-prop": "要包含的信息束:\n;ids:添加嵌入中的页面的页面ID(不能与$1unique一起使用)。\n;title:添加嵌入的标题。",
+       "apihelp-query+alltransclusions-param-prop": "要包含的信息束:",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "添加嵌入中的页面的页面ID(不能与$1unique一起使用)。",
+       "apihelp-query+alltransclusions-paramvalue-prop-title": "添加嵌入的标题。",
        "apihelp-query+alltransclusions-param-namespace": "要列举的名字空间。",
        "apihelp-query+alltransclusions-param-limit": "要返回的总计项目。",
        "apihelp-query+alltransclusions-param-dir": "罗列所采用的方向。",
        "apihelp-query+allusers-param-group": "只包含指定组中的用户。",
        "apihelp-query+allusers-param-excludegroup": "排除指定组中的用户。",
        "apihelp-query+allusers-param-rights": "仅列出有所选权限的用户。不包括隐性的或自动加入的用户组别(如*、用户或自动确认用户)所授予的权限。",
-       "apihelp-query+allusers-param-prop": "要包含的信息束:\n;blockinfo:添加有关用户当前封禁的信息。\n;groups:列举用户所在的组。这使用更多服务器资源,并可能返回少于限制的结果。\n;implicitgroups:列出用户自动属于的所有组。\n;rights:用户拥有的权限列表。\n;editcount:添加用户的编辑计数。\n;registration:如果可能,添加用户注册时的时间戳(可能为空白)。",
+       "apihelp-query+allusers-param-prop": "要包含的信息束:",
+       "apihelp-query+allusers-paramvalue-prop-blockinfo": "添加有关用户当前封禁的信息。",
+       "apihelp-query+allusers-paramvalue-prop-groups": "列举用户所在的组。这使用更多服务器资源,并可能返回少于限制的结果。",
+       "apihelp-query+allusers-paramvalue-prop-implicitgroups": "列出用户自动属于的所有组。",
+       "apihelp-query+allusers-paramvalue-prop-rights": "用户拥有的权限列表。",
+       "apihelp-query+allusers-paramvalue-prop-editcount": "添加用户的编辑计数。",
+       "apihelp-query+allusers-paramvalue-prop-registration": "如果可能,添加用户注册时的时间戳(可能为空白)。",
        "apihelp-query+allusers-param-limit": "返回的总计用户数。",
        "apihelp-query+allusers-param-witheditsonly": "只列出有编辑的用户。",
        "apihelp-query+allusers-param-activeusers": "只列出最近$1{{PLURAL:$1|天}}内活跃的用户。",
        "apihelp-query+blocks-param-ids": "要列出的封禁ID列表(可选)。",
        "apihelp-query+blocks-param-users": "要搜索的用户列表(可选)。",
        "apihelp-query+blocks-param-limit": "封禁列表的最大数量。",
-       "apihelp-query+blocks-param-prop": "要获取的属性:\n;id:添加封禁ID。\n;user:添加被封禁用户的用户名。\n;userid:添加被封禁用户的用户ID。\n;by:添加执行封禁的用户的用户名。\n;byid:添加执行封禁的用户的用户ID。\n;timestamp:添加封禁生效时的时间戳。\n;expiry:添加封禁截止时的时间戳。\n;reason:添加封禁原因。\n;range:添加受封禁影响的IP地址段。\n;flags:标记编辑禁止(自动封禁、仅限匿名用户等)。",
+       "apihelp-query+blocks-param-prop": "要获取的属性:",
+       "apihelp-query+blocks-paramvalue-prop-id": "添加封禁ID。",
+       "apihelp-query+blocks-paramvalue-prop-user": "添加被封禁用户的用户名。",
+       "apihelp-query+blocks-paramvalue-prop-userid": "添加被封禁用户的用户ID。",
+       "apihelp-query+blocks-paramvalue-prop-by": "添加执行封禁的用户的用户名。",
+       "apihelp-query+blocks-paramvalue-prop-byid": "添加执行封禁的用户的用户ID。",
+       "apihelp-query+blocks-paramvalue-prop-timestamp": "添加封禁生效时的时间戳。",
+       "apihelp-query+blocks-paramvalue-prop-expiry": "添加封禁截止时的时间戳。",
+       "apihelp-query+blocks-paramvalue-prop-reason": "添加封禁原因。",
+       "apihelp-query+blocks-paramvalue-prop-range": "添加受封禁影响的IP地址段。",
+       "apihelp-query+blocks-paramvalue-prop-flags": "标记编辑禁止(自动封禁、仅限匿名用户等)。",
        "apihelp-query+blocks-example-simple": "封禁列表。",
        "apihelp-query+blocks-example-users": "列出用户<kbd>Alice</kbd>和<kbd>Bob</kbd>的封禁。",
        "apihelp-query+categories-description": "页面属于的所有分类列表。",
-       "apihelp-query+categories-param-prop": "要为每个分类获取的额外属性:\n;sortkey:为每个分类添加关键词(十六进制字符串)和关键词前缀(人类可读部分)。\n;timestamp:添加分类添加时的时间戳。\n;hidden:标记由_&#95;HIDDENCAT_&#95;隐藏的分类。",
+       "apihelp-query+categories-param-prop": "要为每个分类获取的额外属性:",
+       "apihelp-query+categories-paramvalue-prop-sortkey": "为每个分类添加关键词(十六进制字符串)和关键词前缀(人类可读部分)。",
+       "apihelp-query+categories-paramvalue-prop-timestamp": "添加分类添加时的时间戳。",
+       "apihelp-query+categories-paramvalue-prop-hidden": "标记由<code>_&#95;HIDDENCAT_&#95;</code>隐藏的分类。",
        "apihelp-query+categories-param-show": "显示何种分类。",
        "apihelp-query+categories-param-limit": "返回多少分类。",
        "apihelp-query+categories-param-dir": "罗列所采用的方向。",
        "apihelp-query+categorymembers-description": "在指定的分类中列出所有页面。",
        "apihelp-query+categorymembers-param-title": "要列举的分类(必需)。必须包括<kbd>{{ns:category}}:</kbd>前缀。不能与<var>$1pageid</var>一起使用。",
        "apihelp-query+categorymembers-param-pageid": "要枚举的分类的页面 ID。不能与<var>$1title</var>一起使用。",
-       "apihelp-query+categorymembers-param-prop": "要包含的信息束:\n;ids:添加页面ID。\n;title:添加页面标题和名字空间ID。\n;sortkey:Adds the sortkey used for sorting in the category (hexadecimal string).\n;sortkeyprefix:Adds the sortkey prefix used for sorting in the category (human-readable part of the sortkey).\n;type:Adds the type that the page has been categorised as (page, subcat or file).\n;timestamp:Adds the timestamp of when the page was included.",
+       "apihelp-query+categorymembers-param-prop": "要包含的信息束:",
+       "apihelp-query+categorymembers-paramvalue-prop-ids": "添加页面ID。",
+       "apihelp-query+categorymembers-paramvalue-prop-title": "添加页面标题和名字空间ID。",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkey": "Adds the sortkey used for sorting in the category (hexadecimal string).",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "Adds the sortkey prefix used for sorting in the category (human-readable part of the sortkey).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Adds the type that the page has been categorised as (page, subcat or file).",
+       "apihelp-query+categorymembers-paramvalue-prop-timestamp": "Adds the timestamp of when the page was included.",
        "apihelp-query+categorymembers-param-namespace": "仅包含这些名字空间的页面。注意<kbd>$1type=subcat</kbd>或<kbd>$1type=file</kbd>可能被使用,而不是<kbd>$1namespace=14</kbd>或<kbd>6</kbd>。",
        "apihelp-query+categorymembers-param-type": "包含的分类成员类型。当<kbd>$1sort=timestamp</kbd>被设置时会忽略。",
        "apihelp-query+categorymembers-param-limit": "返回页面的最大数量。",
        "apihelp-query+extlinks-param-expandurl": "扩展协议相对URL与规范协议。",
        "apihelp-query+extlinks-example-simple": "获取<kbd>Main Page<kbd>的外部链接列表。",
        "apihelp-query+exturlusage-description": "列举包含一个指定URL的页面。",
-       "apihelp-query+exturlusage-param-prop": "要包含的信息束:\n;ids:添加页面ID。\n;title:添加页面的标题和名字空间ID。\n;url:添加页面中使用的URL。",
+       "apihelp-query+exturlusage-param-prop": "要包含的信息束:",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "添加页面ID。",
+       "apihelp-query+exturlusage-paramvalue-prop-title": "添加页面的标题和名字空间ID。",
+       "apihelp-query+exturlusage-paramvalue-prop-url": "添加页面中使用的URL。",
        "apihelp-query+exturlusage-param-protocol": "URL协议。如果为空并且<var>$1query</var>被设置,协议为<kbd>http</kbd>。将此和<var>$1query</var>都留空以列举所有外部链接。",
        "apihelp-query+exturlusage-param-query": "不包括协议的搜索字符串。参见[[Special:LinkSearch]]。留空以列出所有外部链接。",
        "apihelp-query+exturlusage-param-namespace": "要列举的页面名字空间。",
        "apihelp-query+filearchive-param-dir": "罗列所采用的方向。",
        "apihelp-query+filearchive-param-sha1": "图片的SHA1哈希值。覆盖$1sha1base36。",
        "apihelp-query+filearchive-param-sha1base36": "基于base 36的图片的SHA1哈希值(用于MediaWiki)。",
+       "apihelp-query+filearchive-param-prop": "要获取的图片信息:",
+       "apihelp-query+filearchive-paramvalue-prop-sha1": "为文件加入SHA-1哈希值。",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "为已上传版本添加时间戳。",
+       "apihelp-query+filearchive-paramvalue-prop-user": "添加上传了图片版本的用户。",
+       "apihelp-query+filearchive-paramvalue-prop-dimensions": "用于大小的别名。",
+       "apihelp-query+filearchive-paramvalue-prop-description": "添加图片版本的说明。",
+       "apihelp-query+filearchive-paramvalue-prop-parseddescription": "解析版本的描述。",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "添加图片的MIME。",
+       "apihelp-query+filearchive-paramvalue-prop-mediatype": "添加图片的媒体类型。",
+       "apihelp-query+filearchive-paramvalue-prop-metadata": "为图片版本列出Exif元数据。",
+       "apihelp-query+filearchive-paramvalue-prop-bitdepth": "添加版本的字节深度。",
+       "apihelp-query+filearchive-paramvalue-prop-archivename": "添加用于非最新版本的存档版本的文件名。",
        "apihelp-query+filearchive-example-simple": "显示已删除文件列表。",
        "apihelp-query+filerepoinfo-description": "返回有关wiki配置的图片存储库的元信息。",
        "apihelp-query+filerepoinfo-example-simple": "获得有关文件存储库的信息。",
        "apihelp-query+fileusage-description": "查找所有使用指定文件的页面。",
-       "apihelp-query+fileusage-param-prop": "要获取的属性:\n;pageid:每个页面的页面ID。\n;title:每个页面的标题。\n;redirect:标记作为重定向的页面。",
+       "apihelp-query+fileusage-param-prop": "要获取的属性:",
+       "apihelp-query+fileusage-paramvalue-prop-pageid": "每个页面的页面ID。",
+       "apihelp-query+fileusage-paramvalue-prop-title": "每个页面的标题。",
+       "apihelp-query+fileusage-paramvalue-prop-redirect": "标记作为重定向的页面。",
        "apihelp-query+fileusage-param-namespace": "只包括这些名字空间的页面。",
        "apihelp-query+fileusage-param-limit": "返回多少。",
        "apihelp-query+fileusage-example-simple": "获取使用[[:File:Example.jpg]]的页面列表。",
        "apihelp-query+iwbacklinks-param-prefix": "跨维基前缀。",
        "apihelp-query+iwbacklinks-param-title": "要搜索的跨wiki链接。必须与<var>$1blprefix</var>一起使用。",
        "apihelp-query+iwbacklinks-param-limit": "返回的总计页面数。",
-       "apihelp-query+iwbacklinks-param-prop": "要获取的属性:\n;iwprefix:加入跨wiki前缀。\n;iwtitle:加入跨wiki标题。",
+       "apihelp-query+iwbacklinks-param-prop": "要获取的属性:",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "加入跨wiki前缀。",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "加入跨wiki标题。",
        "apihelp-query+iwbacklinks-param-dir": "罗列所采用的方向。",
        "apihelp-query+iwbacklinks-example-simple": "获取链接至[[wikibooks:Test]]的页面。",
        "apihelp-query+iwbacklinks-example-generator": "获取有关链接至[[wikibooks:Test]]的页面的信息。",
        "apihelp-query+iwlinks-description": "从指定页面返回所有跨wiki链接。",
        "apihelp-query+iwlinks-param-url": "是否获取完整URL(不能与$1prop一起使用)。",
+       "apihelp-query+iwlinks-param-prop": "要为每个跨语言链接获取的额外属性:",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "添加完整URL。",
        "apihelp-query+iwlinks-param-limit": "返回多少跨wiki链接。",
        "apihelp-query+iwlinks-param-prefix": "只返回此前缀的跨wiki链接。",
        "apihelp-query+iwlinks-param-title": "用于搜索的跨wiki链接。必须与<var>$1prefix</var>一起使用。",
        "apihelp-query+langbacklinks-param-lang": "用于语言链接的语言。",
        "apihelp-query+langbacklinks-param-title": "要搜索的语言链接。必须与$1lang一起使用。",
        "apihelp-query+langbacklinks-param-limit": "返回的总计页面数。",
-       "apihelp-query+langbacklinks-param-prop": "要获得的属性:\n;lllang:添加语言链接的语言代码。\n;lltitle:添加语言链接的标题。",
+       "apihelp-query+langbacklinks-param-prop": "要获得的属性:",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "添加语言链接的语言代码。",
+       "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "添加语言链接的标题。",
        "apihelp-query+langbacklinks-param-dir": "罗列所采用的方向。",
        "apihelp-query+langbacklinks-example-simple": "获取链接至[[:fr:Test]]的页面。",
        "apihelp-query+langbacklinks-example-generator": "获取链接至[[:fr:Test]]的页面的信息。",
        "apihelp-query+langlinks-description": "从指定页面返回所有跨语言链接。",
        "apihelp-query+langlinks-param-limit": "返回多少语言链接。",
        "apihelp-query+langlinks-param-url": "是否获取完整URL(不能与<var>$1prop</var>一起使用)。",
+       "apihelp-query+langlinks-param-prop": "要为每个跨语言链接获取的额外属性:",
+       "apihelp-query+langlinks-paramvalue-prop-url": "添加完整URL。",
+       "apihelp-query+langlinks-paramvalue-prop-langname": "添加本地化语言名(尽可能)。使用<var>$1inlanguagecode</var>以控制语言。",
+       "apihelp-query+langlinks-paramvalue-prop-autonym": "添加本地语言名。",
        "apihelp-query+langlinks-param-lang": "只返回带此语言代码的语言链接。",
        "apihelp-query+langlinks-param-title": "要搜索的链接。必须与<var>$1lang</var>一起使用。",
        "apihelp-query+langlinks-param-dir": "罗列所采用的方向。",
        "apihelp-query+links-example-generator": "获取有关在页面<kbd>Main Page</kbd>中连接的页面的信息。",
        "apihelp-query+links-example-namespaces": "获取在{{ns:user}}和{{ns:template}}名字空间中来自页面<kbd>Main Page</kbd>的链接。",
        "apihelp-query+linkshere-description": "查找所有链接至指定页面的页面。",
-       "apihelp-query+linkshere-param-prop": "要获取的属性:\n;pageid:每个页面的页面ID。\n;title:每个页面的标题。\n;redirect:如果页面是一个重定向就标记。",
+       "apihelp-query+linkshere-param-prop": "要获取的属性:",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "每个页面的页面ID。",
+       "apihelp-query+linkshere-paramvalue-prop-title": "每个页面的标题。",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "如果页面是一个重定向就标记。",
        "apihelp-query+linkshere-param-namespace": "只包括这些名字空间的页面。",
        "apihelp-query+linkshere-param-limit": "返回多少。",
        "apihelp-query+linkshere-param-show": "只显示符合以下标准的项:\n;redirect:只显示重定向。\n;!redirect:只显示非重定向。",
        "apihelp-query+linkshere-example-simple": "获取链接至[[Main Page]]的页面列表。",
        "apihelp-query+linkshere-example-generator": "获取有关链接至[[Main Page]]的页面的信息。",
        "apihelp-query+logevents-description": "从日志获取事件。",
+       "apihelp-query+logevents-param-prop": "要获取的属性:",
+       "apihelp-query+logevents-paramvalue-prop-ids": "添加日志活动的ID。",
+       "apihelp-query+logevents-paramvalue-prop-title": "为日志事件添加页面标题。",
+       "apihelp-query+logevents-paramvalue-prop-type": "添加日志活动的类型。",
+       "apihelp-query+logevents-paramvalue-prop-user": "为日志事件添加用户责任。",
+       "apihelp-query+logevents-paramvalue-prop-timestamp": "为日志活动添加时间戳。",
+       "apihelp-query+logevents-paramvalue-prop-comment": "添加日志活动的摘要。",
+       "apihelp-query+logevents-paramvalue-prop-parsedcomment": "添加被解析的日志活动的摘要。",
+       "apihelp-query+logevents-paramvalue-prop-details": "列举有关日志事件的额外详细信息。",
+       "apihelp-query+logevents-paramvalue-prop-tags": "列举用于日志活动的标签。",
+       "apihelp-query+logevents-param-type": "过滤日志记录至仅限此类型。",
+       "apihelp-query+logevents-param-action": "过滤日志操作为仅限此操作。覆盖<var>$1type</var>。类似<kbd>action/*</kbd>的通配符操作允许指定用于星号的任意字符串。",
        "apihelp-query+logevents-param-start": "枚举的起始时间戳。",
        "apihelp-query+logevents-param-end": "枚举的结束时间戳。",
+       "apihelp-query+logevents-param-user": "过滤记录为这些由指定用户做出的。",
+       "apihelp-query+logevents-param-title": "过滤记录至这些与页面相关的。",
+       "apihelp-query+logevents-param-namespace": "过滤事件为在这些指定的名字空间中。",
        "apihelp-query+logevents-param-prefix": "过滤以此前缀开头的记录。",
        "apihelp-query+logevents-param-tag": "只列举带此标签的事件日志记录。",
        "apihelp-query+logevents-param-limit": "返回的事件日志记录总数。",
-       "apihelp-query+logevents-example-simple": "列出最近日志活动。",
+       "apihelp-query+logevents-example-simple": "列出最近日志事件。",
        "apihelp-query+pagepropnames-description": "列出wiki中所有使用中的页面属性名称。",
        "apihelp-query+pagepropnames-param-limit": "返回名称的最大数量。",
        "apihelp-query+pagepropnames-example-simple": "获取前10个属性名称。",
        "apihelp-query+pageprops-example-simple": "获取用于页面<kbd>Main Page</kbd>和<kbd>MediaWiki</kbd>的属性。",
        "apihelp-query+pageswithprop-description": "列出所有使用指定页面属性的页面。",
        "apihelp-query+pageswithprop-param-propname": "要用于列举页面的页面属性。",
-       "apihelp-query+pageswithprop-param-prop": "要包含的信息束:\n;ids:添加页面ID。\n;title:添加页面的标题和名字空间ID。\n;value:添加页面属性值。",
+       "apihelp-query+pageswithprop-param-prop": "要包含的信息束:",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "添加页面ID。",
+       "apihelp-query+pageswithprop-paramvalue-prop-title": "添加页面的标题和名字空间ID。",
+       "apihelp-query+pageswithprop-paramvalue-prop-value": "添加页面属性值。",
        "apihelp-query+pageswithprop-param-limit": "返回页面的最大数量。",
        "apihelp-query+pageswithprop-param-dir": "排序的方向。",
        "apihelp-query+pageswithprop-example-simple": "列出前10个使用<code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>的页面。",
        "apihelp-query+protectedtitles-param-namespace": "只列出这些名字空间的标题。",
        "apihelp-query+protectedtitles-param-level": "只列出带这些保护级别的标题。",
        "apihelp-query+protectedtitles-param-limit": "返回的总计页面数。",
+       "apihelp-query+protectedtitles-param-prop": "要获取的属性:",
+       "apihelp-query+protectedtitles-paramvalue-prop-timestamp": "添加保护被添加时的时间戳。",
+       "apihelp-query+protectedtitles-paramvalue-prop-user": "添加对页面添加保护的用户。",
+       "apihelp-query+protectedtitles-paramvalue-prop-userid": "添加对页面添加保护的用户ID。",
+       "apihelp-query+protectedtitles-paramvalue-prop-comment": "为保护添加摘要。",
+       "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "为保护添加解析的摘要。",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "添加保护级别。",
        "apihelp-query+protectedtitles-example-simple": "受保护标题列表。",
        "apihelp-query+protectedtitles-example-generator": "找到主命名空间中已保护的标题的链接。",
        "apihelp-query+querypage-param-limit": "返回的结果数。",
        "apihelp-query+recentchanges-param-user": "只列出此用户的更改。",
        "apihelp-query+recentchanges-param-excludeuser": "不要列出此用户的更改。",
        "apihelp-query+recentchanges-param-tag": "只列出带此标签的更改。",
-       "apihelp-query+recentchanges-param-prop": "包含的额外信息束:\n;user:Adds the user responsible for the edit and tags if they are an IP.\n;userid:Adds the user ID responsible for the edit.\n;comment:Adds the comment for the edit.\n;parsedcomment:Adds the parsed comment for the edit.\n;flags:为编辑添加标记。\n;timestamp:添加编辑的时间戳。\n;title:添加编辑的页面标题。\n;ids:添加页面ID、最近更改ID和新旧修订的ID。\n;sizes:Adds the new and old page length in bytes.\n;redirect:Tags edit if page is a redirect.\n;patrolled:Tags patrollable edits as being patrolled or unpatrolled.\n;loginfo:Adds log information (log ID, log type, etc) to log entries.\n;tags:Lists tags for the entry.\n;sha1:Adds the content checksum for entries associated with a revision.",
+       "apihelp-query+recentchanges-param-prop": "包含的额外信息束:",
+       "apihelp-query+recentchanges-paramvalue-prop-user": "Adds the user responsible for the edit and tags if they are an IP.",
+       "apihelp-query+recentchanges-paramvalue-prop-userid": "Adds the user ID responsible for the edit.",
+       "apihelp-query+recentchanges-paramvalue-prop-comment": "Adds the comment for the edit.",
+       "apihelp-query+recentchanges-paramvalue-prop-parsedcomment": "Adds the parsed comment for the edit.",
+       "apihelp-query+recentchanges-paramvalue-prop-flags": "为编辑添加标记。",
+       "apihelp-query+recentchanges-paramvalue-prop-timestamp": "添加编辑的时间戳。",
+       "apihelp-query+recentchanges-paramvalue-prop-title": "添加编辑的页面标题。",
+       "apihelp-query+recentchanges-paramvalue-prop-ids": "添加页面ID、最近更改ID和新旧修订的ID。",
+       "apihelp-query+recentchanges-paramvalue-prop-sizes": "Adds the new and old page length in bytes.",
+       "apihelp-query+recentchanges-paramvalue-prop-redirect": "Tags edit if page is a redirect.",
+       "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Tags patrollable edits as being patrolled or unpatrolled.",
+       "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Adds log information (log ID, log type, etc) to log entries.",
+       "apihelp-query+recentchanges-paramvalue-prop-tags": "Lists tags for the entry.",
+       "apihelp-query+recentchanges-paramvalue-prop-sha1": "Adds the content checksum for entries associated with a revision.",
        "apihelp-query+recentchanges-param-token": "请改用<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>。",
        "apihelp-query+recentchanges-param-limit": "返回总计更新数。",
        "apihelp-query+recentchanges-param-type": "显示的更改类型。",
        "apihelp-query+recentchanges-example-simple": "最近更改列表。",
        "apihelp-query+recentchanges-example-generator": "获取有关最近未巡查更改的页面信息。",
        "apihelp-query+redirects-description": "返回至指定页面的所有重定向。",
+       "apihelp-query+redirects-param-prop": "要获取的属性:",
+       "apihelp-query+redirects-paramvalue-prop-pageid": "每个重定向的页面ID。",
+       "apihelp-query+redirects-paramvalue-prop-title": "每个重定向的标题。",
+       "apihelp-query+redirects-paramvalue-prop-fragment": "每个重定向的碎片,如果有。",
        "apihelp-query+redirects-param-namespace": "只包含这些名字空间的页面。",
        "apihelp-query+redirects-param-limit": "返回多少重定向。",
        "apihelp-query+redirects-example-simple": "获取至[[Main Page]]的重定向列表。",
        "apihelp-query+search-param-namespace": "只在这些名字空间搜索。",
        "apihelp-query+search-param-what": "要执行的搜索类型。",
        "apihelp-query+search-param-info": "要返回的元数据。",
-       "apihelp-query+search-param-prop": "要返回的属性:\n;size:Adds the size of the page in bytes.\n;wordcount:Adds the word count of the page.\n;timestamp:Adds the timestamp of when the page was last edited.\n;snippet:Adds a parsed snippet of the page.\n;titlesnippet:Adds a parsed snippet of the page title.\n;redirectsnippet:Adds a parsed snippet of the redirect title.\n;redirecttitle:Adds the title of the matching redirect.\n;sectionsnippet:Adds a parsed snippet of the matching section title.\n;sectiontitle:Adds the title of the matching section.\n;categorysnippet:Adds a parsed snippet of the matching category.\n;isfilematch:Adds a boolean indicating if the search matched file content.\n;score:<span class=\"apihelp-deprecated\">Deprecated and ignored.</span>\n;hasrelated:<span class=\"apihelp-deprecated\">Deprecated and ignored.</span>",
+       "apihelp-query+search-param-prop": "要返回的属性:",
+       "apihelp-query+search-paramvalue-prop-size": "Adds the size of the page in bytes.",
+       "apihelp-query+search-paramvalue-prop-wordcount": "Adds the word count of the page.",
+       "apihelp-query+search-paramvalue-prop-timestamp": "Adds the timestamp of when the page was last edited.",
+       "apihelp-query+search-paramvalue-prop-snippet": "Adds a parsed snippet of the page.",
+       "apihelp-query+search-paramvalue-prop-titlesnippet": "Adds a parsed snippet of the page title.",
+       "apihelp-query+search-paramvalue-prop-redirectsnippet": "Adds a parsed snippet of the redirect title.",
+       "apihelp-query+search-paramvalue-prop-redirecttitle": "Adds the title of the matching redirect.",
+       "apihelp-query+search-paramvalue-prop-sectionsnippet": "Adds a parsed snippet of the matching section title.",
+       "apihelp-query+search-paramvalue-prop-sectiontitle": "Adds the title of the matching section.",
+       "apihelp-query+search-paramvalue-prop-categorysnippet": "Adds a parsed snippet of the matching category.",
+       "apihelp-query+search-paramvalue-prop-isfilematch": "Adds a boolean indicating if the search matched file content.",
+       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Deprecated and ignored.</span>",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Deprecated and ignored.</span>",
        "apihelp-query+search-param-limit": "返回的总计页面数。",
        "apihelp-query+search-param-interwiki": "搜索结果中包含跨wiki结果,如果可用。",
        "apihelp-query+search-example-simple": "搜索<kbd>meaning</kbd>。",
        "apihelp-query+search-example-text": "搜索文本<kbd>meaning</kbd>。",
        "apihelp-query+search-example-generator": "获得有关搜索<kbd>meaning</kbd>返回页面的页面信息。",
        "apihelp-query+siteinfo-description": "返回有关网站的一般信息。",
-       "apihelp-query+siteinfo-param-prop": "要获取的信息:\n;general:全部系统信息。\n;namespaces:注册的名字空间及其规范名称列表。\n;namespacealiases:注册的名字空间别名列表。\n;specialpagealiases:特殊页面别名列表。\n;magicwords:魔术字及其别名列表。\n;statistics:返回网站统计。\n;interwikimap:返回跨wiki映射(可选过滤,可选择使用<var>$1inlanguagecode</var>本地化)。\n;dbrepllag:返回数据库服务器与最高反应延迟。\n;usergroups:返回用户组及其相关权限。\n;libraries:返回wiki上安装的库。\n;extensions:返回wiki上安装的扩展。\n;fileextensions:返回允许上传的文件扩展名列表。\n;rightsinfo:如果可用,返回wiki的版权信息。\n;restrictions:返回可用的编辑限制(保护)类型信息。\n;languages:返回MediaWiki支持的语言列表(可选择使用<var>$1inlanguagecode</var>本地化)。\n;skins:返回所有启用的皮肤列表(可选择使用<var>$1inlanguagecode</var>本地化,否则是内容语言)。\n;extensiontags:返回解析器扩展标签列表。\n;functionhooks:返回解析器函数钩列表。\n;showhooks:返回所有订阅的钩列表(<var>[[mw:Manual:$wgHooks|$wgHooks]]</var>的内容)。\n;variables:返回变量ID列表。\n;protocols:返回外部链接中允许的协议列表。\n;defaultoptions:返回用户设置的默认值。",
+       "apihelp-query+siteinfo-param-prop": "要获取的信息:",
+       "apihelp-query+siteinfo-paramvalue-prop-general": "全部系统信息。",
+       "apihelp-query+siteinfo-paramvalue-prop-namespaces": "注册的名字空间及其规范名称列表。",
+       "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "注册的名字空间别名列表。",
+       "apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "特殊页面别名列表。",
+       "apihelp-query+siteinfo-paramvalue-prop-magicwords": "魔术字及其别名列表。",
+       "apihelp-query+siteinfo-paramvalue-prop-statistics": "返回网站统计。",
+       "apihelp-query+siteinfo-paramvalue-prop-interwikimap": "返回跨wiki映射(可选过滤,可选择使用<var>$1inlanguagecode</var>本地化)。",
+       "apihelp-query+siteinfo-paramvalue-prop-dbrepllag": "返回数据库服务器与最高反应延迟。",
+       "apihelp-query+siteinfo-paramvalue-prop-usergroups": "返回用户组及其相关权限。",
+       "apihelp-query+siteinfo-paramvalue-prop-libraries": "返回wiki上安装的库。",
+       "apihelp-query+siteinfo-paramvalue-prop-extensions": "返回wiki上安装的扩展。",
+       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "返回允许上传的文件扩展名列表。",
+       "apihelp-query+siteinfo-paramvalue-prop-rightsinfo": "如果可用,返回wiki的版权信息。",
+       "apihelp-query+siteinfo-paramvalue-prop-restrictions": "返回可用的编辑限制(保护)类型信息。",
+       "apihelp-query+siteinfo-paramvalue-prop-languages": "返回MediaWiki支持的语言列表(可选择使用<var>$1inlanguagecode</var>本地化)。",
+       "apihelp-query+siteinfo-paramvalue-prop-skins": "返回所有启用的皮肤列表(可选择使用<var>$1inlanguagecode</var>本地化,否则是内容语言)。",
+       "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "返回解析器扩展标签列表。",
+       "apihelp-query+siteinfo-paramvalue-prop-functionhooks": "返回解析器函数钩列表。",
+       "apihelp-query+siteinfo-paramvalue-prop-showhooks": "返回所有订阅的钩列表(<var>[[mw:Manual:$wgHooks|$wgHooks]]</var>的内容)。",
+       "apihelp-query+siteinfo-paramvalue-prop-variables": "返回变量ID列表。",
+       "apihelp-query+siteinfo-paramvalue-prop-protocols": "返回外部链接中允许的协议列表。",
+       "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "返回用户设置的默认值。",
        "apihelp-query+siteinfo-param-filteriw": "只返回跨wiki地图中的本地或非本地记录。",
        "apihelp-query+siteinfo-param-showalldb": "列出所有数据库服务器,不只是最落后的那个。",
        "apihelp-query+siteinfo-param-numberingroup": "列出用户组中的用户数。",
        "apihelp-query+stashimageinfo-example-simple": "返回藏匿文件的信息。",
        "apihelp-query+tags-description": "列出更改标签。",
        "apihelp-query+tags-param-limit": "列出标签的最大数量。",
-       "apihelp-query+tags-param-prop": "要获取哪个属性:\n;name:添加标签名称。\n;displayname:为标签添加系统消息。\n;description:为标签添加描述。\n;hitcount:已添加此标签的修订版本与日志数量。\n;defined:标识标签是否已定义。\n;source:获得标签来源,它可能包括用于扩展定义的标签的<samp>extension</samp>,以及用于可被用户手动应用的标签的<samp>manual</samp>。\n;active:标签是否仍可被应用。",
+       "apihelp-query+tags-param-prop": "要获取哪个属性:",
+       "apihelp-query+tags-paramvalue-prop-name": "添加标签名称。",
+       "apihelp-query+tags-paramvalue-prop-displayname": "为标签添加系统消息。",
+       "apihelp-query+tags-paramvalue-prop-description": "为标签添加描述。",
+       "apihelp-query+tags-paramvalue-prop-hitcount": "已添加此标签的修订版本与日志数量。",
+       "apihelp-query+tags-paramvalue-prop-defined": "标识标签是否已定义。",
+       "apihelp-query+tags-paramvalue-prop-source": "获得标签来源,它可能包括用于扩展定义的标签的<samp>extension</samp>,以及用于可被用户手动应用的标签的<samp>manual</samp>。",
+       "apihelp-query+tags-paramvalue-prop-active": "标签是否仍可被应用。",
        "apihelp-query+tags-example-simple": "可用标签列表。",
        "apihelp-query+templates-description": "返回指定页面上所有被嵌入的页面。",
        "apihelp-query+templates-param-namespace": "只显示此名字空间的模板。",
        "apihelp-query+tokens-param-type": "要请求的令牌类型。",
        "apihelp-query+tokens-example-simple": "检索一个csrf令牌(默认)。",
        "apihelp-query+tokens-example-types": "检索一个监视令牌和一个巡查令牌。",
-       "apihelp-query+transcludedin-param-prop": "要获取的属性:\n;pageid:每个页面的页面ID。\n;title:每个页面的标题。\n;redirect:标记作为重定向的页面。",
+       "apihelp-query+transcludedin-param-prop": "要获取的属性:",
+       "apihelp-query+transcludedin-paramvalue-prop-pageid": "每个页面的页面ID。",
+       "apihelp-query+transcludedin-paramvalue-prop-title": "每个页面的标题。",
+       "apihelp-query+transcludedin-paramvalue-prop-redirect": "标记作为重定向的页面。",
        "apihelp-query+transcludedin-param-namespace": "至包含这些名字空间的页面。",
        "apihelp-query+transcludedin-param-limit": "返回多少。",
        "apihelp-query+transcludedin-param-show": "只显示符合以下标准的项:\n;redirect:只显示重定向。\n;!redirect:只显示非重定向。",
        "apihelp-query+usercontribs-param-end": "返回的最终时间戳。",
        "apihelp-query+usercontribs-param-user": "要检索贡献的用户。",
        "apihelp-query+usercontribs-param-namespace": "只列出这些名字空间的贡献。",
-       "apihelp-query+usercontribs-param-prop": "包含额外的信息束:\n;ids:添加页面ID和修订ID。\n;title:添加页面标题及其名字空间ID。\n;timestamp:添加编辑的时间戳。\n;comment:添加编辑摘要。\n;parsedcomment:添加被解析的编辑摘要。\n;size:添加编辑的新大小。\n;sizediff:添加与父编辑相比该编辑的大小变化。\n;flags:添加编辑标记。\n;patrolled:标记已巡查编辑。\n;tags:列举用于编辑的标签。",
+       "apihelp-query+usercontribs-param-prop": "包含额外的信息束:",
+       "apihelp-query+usercontribs-paramvalue-prop-ids": "添加页面ID和修订ID。",
+       "apihelp-query+usercontribs-paramvalue-prop-title": "添加页面标题及其名字空间ID。",
+       "apihelp-query+usercontribs-paramvalue-prop-timestamp": "添加编辑的时间戳。",
+       "apihelp-query+usercontribs-paramvalue-prop-comment": "添加编辑摘要。",
+       "apihelp-query+usercontribs-paramvalue-prop-parsedcomment": "添加被解析的编辑摘要。",
+       "apihelp-query+usercontribs-paramvalue-prop-size": "添加编辑的新大小。",
+       "apihelp-query+usercontribs-paramvalue-prop-sizediff": "添加与父编辑相比该编辑的大小变化。",
+       "apihelp-query+usercontribs-paramvalue-prop-flags": "添加编辑标记。",
+       "apihelp-query+usercontribs-paramvalue-prop-patrolled": "标记已巡查编辑。",
+       "apihelp-query+usercontribs-paramvalue-prop-tags": "列举用于编辑的标签。",
        "apihelp-query+usercontribs-param-show": "只显示符合这些标准的项目,例如只显示不是小编辑的编辑:<kbd>$2show=!minor</kbd>。\n\n如果<kbd>$2show=patrolled</kbd>或<kbd>$2show=!patrolled</kbd>被设定,早于<var>[[mw:Manual:$wgRCMaxAge|$wgRCMaxAge]]</var>($1秒)的修订不会被显示。",
        "apihelp-query+usercontribs-example-user": "显示用户<kbd>Example</kbd>的贡献。",
        "apihelp-query+usercontribs-example-ipprefix": "显示来自<kbd>192.0.2.</kbd>前缀所有 IP 地址的贡献。",
        "apihelp-query+userinfo-description": "获取有关当前用户的信息。",
-       "apihelp-query+userinfo-param-prop": "要包含的信息束:\n;blockinfo:如果当前用户被封禁就标记,并注明是谁封禁,以何种原因封禁的。\n;hasmsg:如果当前用户有等待中的消息的话,添加标签<samp>messages</samp>。\n;groups:Lists all the groups the current user belongs to.\n;implicitgroups:Lists all the groups the current user is automatically a member of.\n;rights:Lists all the rights the current user has.\n;changeablegroups:Lists the groups the current user can add to and remove from.\n;options:Lists all preferences the current user has set.\n;preferencestoken:<span class=\"apihelp-deprecated\">Deprecated.</span> Get a token to change current user's preferences.\n;editcount:Adds the current user's edit count.\n;ratelimits:Lists all rate limits applying to the current user.\n;realname:Adds the user's real name.\n;email:Adds the user's email address and email authentication date.\n;acceptlang:Echoes the <code>Accept-Language</code> header sent by the client in a structured format.\n;registrationdate:Adds the user's registration date.\n;unreadcount:Adds the count of unread pages on the user's watchlist (maximum $1; returns <samp>$2</samp> if more).",
+       "apihelp-query+userinfo-param-prop": "要包含的信息束:",
+       "apihelp-query+userinfo-paramvalue-prop-blockinfo": "如果当前用户被封禁就标记,并注明是谁封禁,以何种原因封禁的。",
+       "apihelp-query+userinfo-paramvalue-prop-hasmsg": "如果当前用户有等待中的消息的话,添加标签<samp>messages</samp>。",
+       "apihelp-query+userinfo-paramvalue-prop-groups": "Lists all the groups the current user belongs to.",
+       "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Lists all the groups the current user is automatically a member of.",
+       "apihelp-query+userinfo-paramvalue-prop-rights": "Lists all the rights the current user has.",
+       "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Lists the groups the current user can add to and remove from.",
+       "apihelp-query+userinfo-paramvalue-prop-options": "Lists all preferences the current user has set.",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Deprecated.</span> Get a token to change current user's preferences.",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "Adds the current user's edit count.",
+       "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Lists all rate limits applying to the current user.",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "添加用户的真实姓名。",
+       "apihelp-query+userinfo-paramvalue-prop-email": "Adds the user's email address and email authentication date.",
+       "apihelp-query+userinfo-paramvalue-prop-acceptlang": "Echoes the <code>Accept-Language</code> header sent by the client in a structured format.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "添加用户的注册时间。",
+       "apihelp-query+userinfo-paramvalue-prop-unreadcount": "Adds the count of unread pages on the user's watchlist (maximum $1; returns <samp>$2</samp> if more).",
        "apihelp-query+userinfo-example-simple": "获取有关当前用户的信息。",
        "apihelp-query+userinfo-example-data": "获取有关当前用户的额外信息。",
        "apihelp-query+users-description": "获取有关列出用户的信息。",
-       "apihelp-query+users-param-prop": "要包含的信息束:\n;blockinfo:如果用户被封禁就标记,并注明是谁封禁,以何种原因封禁的。\n;groups:列举每位用户属于的所有组。\n;implicitgroups:Lists all the groups a user is automatically a member of.\n;rights:Lists all the rights each user has.\n;editcount:Adds the user's edit count.\n;registration:Adds the user's registration timestamp.\n;emailable:Tags if the user can and wants to receive email through [[Special:Emailuser]].\n;gender:Tags the gender of the user. Returns \"male\", \"female\", or \"unknown\".",
+       "apihelp-query+users-param-prop": "要包含的信息束:",
+       "apihelp-query+users-paramvalue-prop-blockinfo": "如果用户被封禁就标记,并注明是谁封禁,以何种原因封禁的。",
+       "apihelp-query+users-paramvalue-prop-groups": "列举每位用户属于的所有组。",
+       "apihelp-query+users-paramvalue-prop-implicitgroups": "Lists all the groups a user is automatically a member of.",
+       "apihelp-query+users-paramvalue-prop-rights": "Lists all the rights each user has.",
+       "apihelp-query+users-paramvalue-prop-editcount": "Adds the user's edit count.",
+       "apihelp-query+users-paramvalue-prop-registration": "Adds the user's registration timestamp.",
+       "apihelp-query+users-paramvalue-prop-emailable": "Tags if the user can and wants to receive email through [[Special:Emailuser]].",
+       "apihelp-query+users-paramvalue-prop-gender": "Tags the gender of the user. Returns \"male\", \"female\", or \"unknown\".",
        "apihelp-query+users-param-token": "请改用<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>。",
        "apihelp-query+users-example-simple": "返回用户<kbd>Example</kbd>的信息。",
        "apihelp-query+watchlist-description": "在当前用户的监视列表中获取对页面的最近更改。",
        "apihelp-query+watchlist-paramvalue-prop-sizes": "添加页面的旧有长度和新长度。",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "添加最近被通知有关编辑的用户的时间戳。",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "在适当位置添加日志信息。",
-       "apihelp-query+watchlist-param-type": "要显示的更改类型:\n;edit:定期页面编辑。\n;external:外部更改。\n;new:页面创建。\n;log:日志记录。\n;categorize:分类成员更改。",
+       "apihelp-query+watchlist-param-type": "要显示的更改类型:\n;edit:定期页面编辑。\n;external:外部更改。\n;new:页面创建。\n;log:日志记录。",
        "apihelp-query+watchlist-param-token": "允许访问其他用户监视列表的安全密钥(可通过用户的[[Special:Preferences#mw-prefsection-watchlist|参数设置]]找到)。",
        "apihelp-query+watchlist-example-simple": "在当前用户的监视列表中列出用于最近更改页面的最新修订。",
        "apihelp-query+watchlist-example-props": "在当前用户的监视列表中检索有关用于最近更改页面的最新修订的额外信息。",
        "apihelp-query+watchlistraw-description": "获得当前用户的监视列表上的所有页面。",
        "apihelp-query+watchlistraw-param-namespace": "只列出指定名字空间的页面。",
        "apihelp-query+watchlistraw-param-limit": "根据结果返回的结果总数。",
-       "apihelp-query+watchlistraw-param-prop": "要获取的额外属性:\n;changed:添加最近被通知有关编辑的用户的时间戳。",
+       "apihelp-query+watchlistraw-param-prop": "要获取的额外属性:",
+       "apihelp-query+watchlistraw-paramvalue-prop-changed": "添加最近被通知有关编辑的用户的时间戳。",
        "apihelp-query+watchlistraw-param-token": "允许访问其他用户监视列表的安全密钥(可通过用户的[[Special:Preferences#mw-prefsection-watchlist|参数设置]]找到)。",
        "apihelp-query+watchlistraw-param-fromtitle": "要列举的起始标题(带名字空间前缀)。",
        "apihelp-query+watchlistraw-param-totitle": "要列举的最终标题(带名字空间前缀)。",
index 7945c8b..9aac37a 100644 (file)
@@ -33,17 +33,6 @@ define( 'MSG_CACHE_VERSION', 2 );
  */
 define( 'MSG_LOAD_TIMEOUT', 60 );
 
-/**
- * Memcached timeout when locking a key for a writing operation.
- * See MessageCache::lock()
- */
-define( 'MSG_LOCK_TIMEOUT', 30 );
-/**
- * Number of times we will try to acquire a lock from Memcached.
- * This comes in addition to MSG_LOCK_TIMEOUT.
- */
-define( 'MSG_WAIT_TIMEOUT', 30 );
-
 /**
  * Message cache
  * Performs various MediaWiki namespace-related functions
@@ -52,6 +41,11 @@ define( 'MSG_WAIT_TIMEOUT', 30 );
 class MessageCache {
        const FOR_UPDATE = 1; // force message reload
 
+       /** How long memcached locks last */
+       const WAIT_SEC = 30;
+       /** How long to wait for memcached locks */
+       const LOCK_TTL = 30;
+
        /**
         * Process local cache of loaded messages that are defined in
         * MediaWiki namespace. First array level is a language code,
@@ -166,7 +160,7 @@ class MessageCache {
                $this->mExpiry = $expiry;
 
                if ( $wgUseLocalMessageCache ) {
-                       $this->localCache = ObjectCache::newAccelerator( array(), CACHE_NONE );
+                       $this->localCache = ObjectCache::newAccelerator( CACHE_NONE );
                } else {
                        $this->localCache = wfGetCache( CACHE_NONE );
                }
@@ -349,10 +343,10 @@ class MessageCache {
                                                # Disable cache
                                                break;
                                        } else {
-                                               # Wait for the other thread to finish, then retry
+                                               # Wait for the other thread to finish, then retry. Normally,
+                                               # the memcached get() will then yeild the other thread's result.
                                                $where[] = 'waited for other thread to complete';
-                                               $this->lock( $cacheKey );
-                                               $this->unlock( $cacheKey );
+                                               $this->getReentrantScopedLock( $cacheKey );
                                        }
                                }
                        }
@@ -385,6 +379,9 @@ class MessageCache {
 
                $memCache = $this->mMemc;
 
+               # Get the non-blocking status key lock. This lets the caller quickly know
+               # to use any stale cache lying around. Otherwise, it may do a blocking
+               # lock to try to obtain the messages.
                $statusKey = wfMemcKey( 'messages', $code, 'status' );
                if ( !$memCache->add( $statusKey, 'loading', MSG_LOAD_TIMEOUT ) ) {
                        return false; // could not acquire lock
@@ -403,13 +400,8 @@ class MessageCache {
                # If this lock fails, it doesn't really matter, it just means the
                # write is potentially non-atomic, e.g. the results of a replace()
                # may be discarded.
-               if ( $this->lock( $cacheKey ) ) {
-                       $that = $this;
-                       $mainUnlocker = new ScopedCallback( function () use ( $that, $cacheKey ) {
-                               $that->unlock( $cacheKey );
-                       } );
-               } else {
-                       $mainUnlocker = null;
+               $mainUnlocker = $this->getReentrantScopedLock( $cacheKey );
+               if ( !$mainUnlocker ) {
                        $where[] = 'could not acquire main lock';
                }
 
@@ -556,8 +548,13 @@ class MessageCache {
                        return;
                }
 
+               # Note that if the cache is volatile, load() may trigger a DB fetch.
+               # In that case we reenter/reuse the existing cache key lock to avoid
+               # a self-deadlock. This is safe as no reads happen *directly* in this
+               # method between getReentrantScopedLock() and load() below. There is
+               # no risk of data "changing under our feet" for replace().
                $cacheKey = wfMemcKey( 'messages', $code );
-               $this->lock( $cacheKey );
+               $scopedLock = $this->getReentrantScopedLock( $cacheKey );
                $this->load( $code, self::FOR_UPDATE );
 
                $titleKey = wfMemcKey( 'messages', 'individual', $title );
@@ -577,7 +574,7 @@ class MessageCache {
 
                # Update caches
                $this->saveToCaches( $this->mCache[$code], 'all', $code );
-               $this->unlock( $cacheKey );
+               ScopedCallback::consume( $scopedLock );
                $this->wanCache->touchCheckKey( wfMemcKey( 'messages', $code ) );
 
                // Also delete cached sidebar... just in case it is affected
@@ -682,40 +679,11 @@ class MessageCache {
        }
 
        /**
-        * Represents a write lock on the messages key.
-        *
-        * Will retry MessageCache::MSG_WAIT_TIMEOUT times, each operations having
-        * a timeout of MessageCache::MSG_LOCK_TIMEOUT.
-        *
-        * @param string $key
-        * @return bool Success
+        * @param string $key A language message cache key that stores blobs
+        * @return null|ScopedCallback
         */
-       function lock( $key ) {
-               $lockKey = $key . ':lock';
-               $acquired = false;
-               $testDone = false;
-               for ( $i = 0; $i < MSG_WAIT_TIMEOUT && !$acquired; $i++ ) {
-                       $acquired = $this->mMemc->add( $lockKey, 1, MSG_LOCK_TIMEOUT );
-                       if ( $acquired ) {
-                               break;
-                       }
-
-                       # Fail fast if memcached is totally down
-                       if ( !$testDone ) {
-                               $testDone = true;
-                               if ( !$this->mMemc->set( wfMemcKey( 'test' ), 'test', 1 ) ) {
-                                       break;
-                               }
-                       }
-                       sleep( 1 );
-               }
-
-               return $acquired;
-       }
-
-       function unlock( $key ) {
-               $lockKey = $key . ':lock';
-               $this->mMemc->delete( $lockKey );
+       protected function getReentrantScopedLock( $key ) {
+               return $this->mMemc->getScopedLock( $key, self::WAIT_SEC, self::LOCK_TTL, __METHOD__ );
        }
 
        /**
diff --git a/includes/changes/CategoryMembershipChange.php b/includes/changes/CategoryMembershipChange.php
deleted file mode 100644 (file)
index 8bc4cf5..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-<?php
-/**
- * Helper class for category membership changes
- *
- * 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 Kai Nissen
- * @since 1.26
- */
-
-class CategoryMembershipChange {
-
-       const CATEGORY_ADDITION = 1;
-       const CATEGORY_REMOVAL = -1;
-
-       /** @var string Current timestamp, set during CategoryMembershipChange::__construct() */
-       private $timestamp;
-
-       /** @var Title Title instance of the categorized page */
-       private $pageTitle;
-
-       /** @var WikiPage WikiPage instance of the categorized page */
-       private $page;
-
-       /** @var Revision Latest Revision instance of the categorized page */
-       private $revision;
-
-       /**
-        * @var int
-        * Number of pages this WikiPage is embedded by; set by CategoryMembershipChange::setRecursive()
-        */
-       private $numTemplateLinks = 0;
-
-       /**
-        * @var User
-        * instance of the user that created CategoryMembershipChange::$revision
-        */
-       private $user;
-
-       /**
-        * @var null|RecentChange
-        * RecentChange that is referred to in CategoryMembershipChange::$revision
-        */
-       private $correspondingRC;
-
-       /**
-        * @param Title $pageTitle Title instance of the categorized page
-        * @param Revision $revision Latest Revision instance of the categorized page
-        * @throws MWException
-        */
-       public function __construct( Title $pageTitle, Revision $revision = null ) {
-               $this->pageTitle = $pageTitle;
-               $this->page = WikiPage::factory( $pageTitle );
-               $this->timestamp = wfTimestampNow();
-
-               # if no revision is given, the change was probably triggered by parser functions
-               if ( $revision ) {
-                       $this->revision = $revision;
-                       $this->correspondingRC = $this->revision->getRecentChange();
-                       $this->user = $this->getRevisionUser();
-               } else {
-                       $this->user = User::newFromId( 0 );
-               }
-       }
-
-       /**
-        * Determines the number of template links for recursive link updates
-        */
-       public function setRecursive() {
-               $this->numTemplateLinks = $this->pageTitle->getBacklinkCache()->getNumLinks( 'templatelinks' );
-       }
-
-       /**
-        * Create a recentchanges entry for category additions
-        * @param string $categoryName
-        */
-       public function pageAddedToCategory( $categoryName ) {
-               $this->createRecentChangesEntry( $categoryName, self::CATEGORY_ADDITION );
-       }
-
-       /**
-        * Create a recentchanges entry for category removals
-        * @param string $categoryName
-        */
-       public function pageRemovedFromCategory( $categoryName ) {
-               $this->createRecentChangesEntry( $categoryName, self::CATEGORY_REMOVAL );
-       }
-
-       /**
-        * Create a recentchanges entry using RecentChange::notifyCategorization()
-        * @param string $categoryName
-        * @param int $type
-        */
-       private function createRecentChangesEntry( $categoryName, $type ) {
-               $categoryTitle = Title::newFromText( $categoryName, NS_CATEGORY );
-               if ( !$categoryTitle ) {
-                       return;
-               }
-
-               $previousRevTimestamp = $this->getPreviousRevisionTimestamp();
-               $unpatrolled = $this->revision ? $this->revision->isUnpatrolled() : 0;
-
-               $lastRevId = 0;
-               $bot = 0;
-               $ip = '';
-               if ( $this->correspondingRC ) {
-                       $lastRevId = $this->correspondingRC->getAttribute( 'rc_last_oldid' ) ?: 0;
-                       $bot = $this->correspondingRC->getAttribute( 'rc_bot' ) ?: 0;
-                       $ip = $this->correspondingRC->getAttribute( 'rc_ip' ) ?: '';
-               }
-
-               RecentChange::notifyCategorization(
-                       $this->timestamp,
-                       $categoryTitle,
-                       $this->user,
-                       $this->getChangeMessage( $type, array(
-                               'prefixedUrl' => $this->page->getTitle()->getPrefixedURL(),
-                               'numTemplateLinks' => $this->numTemplateLinks
-                       ) ),
-                       $this->pageTitle,
-                       $lastRevId,
-                       $this->revision ? $this->revision->getId() : 0,
-                       $previousRevTimestamp,
-                       $bot,
-                       $ip,
-                       $unpatrolled ? 0 : 1,
-                       $this->revision ? $this->revision->getVisibility() & Revision::SUPPRESSED_USER : 0
-               );
-       }
-
-       /**
-        * Get the user who created the revision. may be an anonymous IP
-        * @return User
-        */
-       private function getRevisionUser() {
-               $userId = $this->revision->getUser( Revision::RAW );
-               if ( $userId === 0 ) {
-                       return User::newFromName( $this->revision->getUserText( Revision::RAW ), false );
-               } else {
-                       return User::newFromId( $userId );
-               }
-       }
-
-       /**
-        * Returns the change message according to the type of category membership change
-        *
-        * The message keys created in this method may be one of:
-        * - recentchanges-page-added-to-category
-        * - recentchanges-page-added-to-category-bundled
-        * - recentchanges-page-removed-from-category
-        * - recentchanges-page-removed-from-category-bundled
-        *
-        * @param int $type may be CategoryMembershipChange::CATEGORY_ADDITION
-        * or CategoryMembershipChange::CATEGORY_REMOVAL
-        * @param array $params
-        * - prefixedUrl: result of Title::->getPrefixedURL()
-        * - numTemplateLinks
-        * @return string
-        */
-       private function getChangeMessage( $type, array $params ) {
-               $msgKey = 'recentchanges-';
-
-               switch ( $type ) {
-                       case self::CATEGORY_ADDITION:
-                               $msgKey .= 'page-added-to-category';
-                               break;
-                       case self::CATEGORY_REMOVAL:
-                               $msgKey .= 'page-removed-from-category';
-                               break;
-               }
-
-               if ( intval( $params['numTemplateLinks'] ) > 0 ) {
-                       $msgKey .= '-bundled';
-               }
-
-               return wfMessage( $msgKey, $params )->inContentLanguage()->text();
-       }
-
-       /**
-        * Returns the timestamp of the page's previous revision or null if the latest revision
-        * does not refer to a parent revision
-        * @return null|string
-        */
-       private function getPreviousRevisionTimestamp() {
-               $latestRev = Revision::newFromId( $this->pageTitle->getLatestRevID() );
-               $previousRev = Revision::newFromId( $latestRev->getParentId() );
-
-               return $previousRev ? $previousRev->getTimestamp() : null;
-       }
-
-}
index 249f53f..fdc9944 100644 (file)
@@ -456,28 +456,6 @@ class ChangesList extends ContextSource {
                }
        }
 
-       /**
-        * @param RCCacheEntry $rc
-        * @param array $query array of key/value pairs to append as a query string
-        * @return string
-        * @since 1.26
-        */
-       public function getDiffHistLinks( RCCacheEntry $rc, array $query ) {
-               $pageTitle = $rc->getTitle();
-               if ( intval( $rc->getAttribute( 'rc_type' ) ) === RC_CATEGORIZE ) {
-                       $pageTitle = Title::newFromID( $rc->getAttribute( 'rc_cur_id' ) );
-               }
-
-               $retVal = ' ' . $this->msg( 'parentheses' )
-               ->rawParams( $rc->difflink . $this->message['pipe-separator'] . Linker::linkKnown(
-                               $pageTitle,
-                               $this->message['hist'],
-                               array(),
-                               $query
-                       ) )->escaped();
-               return $retVal;
-       }
-
        /**
         * Check whether to enable recent changes patrol features
         *
@@ -652,17 +630,4 @@ class ChangesList extends ContextSource {
 
                return false;
        }
-
-       /**
-        * Determines whether a revision is linked to this change; this may not be the case
-        * when the categorization wasn't done by an edit but a conditional parser function
-        *
-        * @param RecentChange|RCCacheEntry $rcObj
-        * @return bool
-        */
-       protected function isCategorizationWithoutRevision( $rcObj ) {
-               return intval( $rcObj->getAttribute( 'rc_type' ) ) === RC_CATEGORIZE
-               && intval( $rcObj->getAttribute( 'rc_this_oldid' ) ) === 0;
-       }
-
 }
index a1e9d28..e5916bd 100644 (file)
@@ -364,8 +364,6 @@ class EnhancedChangesList extends ChangesList {
 
                        if ( $rcObj->mAttribs['rc_type'] == RC_LOG ) {
                                $data['logEntry'] = $this->insertLogEntry( $rcObj );
-                       } elseif ( $this->isCategorizationWithoutRevision( $rcObj ) ) {
-                               $data['comment'] = $this->insertComment( $rcObj );
                        } else {
                                # User links
                                $data['userLink'] = $rcObj->userlink;
@@ -568,9 +566,15 @@ class EnhancedChangesList extends ChangesList {
                }
 
                # Diff and hist links
-               if ( intval( $type ) !== RC_LOG && intval( $type ) !== RC_CATEGORIZE ) {
+               if ( $type != RC_LOG ) {
                        $query['action'] = 'history';
-                       $data['historyLink'] = $this->getDiffHistLinks( $rcObj, $query );
+                       $data['historyLink'] = ' ' . $this->msg( 'parentheses' )
+                               ->rawParams( $rcObj->difflink . $this->message['pipe-separator'] . Linker::linkKnown(
+                                       $rcObj->getTitle(),
+                                       $this->message['hist'],
+                                       array(),
+                                       $query
+                               ) )->escaped();
                }
                $data['separatorAfterLinks'] = ' <span class="mw-changeslist-separator">. .</span> ';
 
@@ -585,15 +589,10 @@ class EnhancedChangesList extends ChangesList {
 
                if ( $type == RC_LOG ) {
                        $data['logEntry'] = $this->insertLogEntry( $rcObj );
-               } elseif ( $this->isCategorizationWithoutRevision( $rcObj ) ) {
-                       $data['comment'] = $this->insertComment( $rcObj );
                } else {
                        $data['userLink'] = $rcObj->userlink;
                        $data['userTalkLink'] = $rcObj->usertalklink;
                        $data['comment'] = $this->insertComment( $rcObj );
-                       if ( intval( $type ) === RC_CATEGORIZE ) {
-                               $data['historyLink'] = $this->getDiffHistLinks( $rcObj, $query );
-                       }
                        $data['rollback'] = $this->getRollback( $rcObj );
                }
 
index 1bd78ca..4ce564d 100644 (file)
@@ -88,9 +88,7 @@ class OldChangesList extends ChangesList {
                } else {
                        $unpatrolled = $this->showAsUnpatrolled( $rc );
 
-                       if ( !$this->isCategorizationWithoutRevision( $rc ) ) {
-                               $this->insertDiffHist( $html, $rc, $unpatrolled );
-                       }
+                       $this->insertDiffHist( $html, $rc, $unpatrolled );
                        # M, N, b and ! (minor, new, bot and unpatrolled)
                        $html .= $this->recentChangesFlags(
                                array(
@@ -115,8 +113,6 @@ class OldChangesList extends ChangesList {
 
                if ( $rc->mAttribs['rc_type'] == RC_LOG ) {
                        $html .= $this->insertLogEntry( $rc );
-               } elseif ( $this->isCategorizationWithoutRevision( $rc ) ) {
-                       $html .= $this->insertComment( $rc );
                } else {
                        # User tool links
                        $this->insertUserRelatedLinks( $html, $rc );
index e41f735..c3fe183 100644 (file)
@@ -209,10 +209,6 @@ class RCCacheEntryFactory {
                        $diffLink = $diffMessage;
                } elseif ( in_array( $cacheEntry->mAttribs['rc_type'], $logTypes ) ) {
                        $diffLink = $diffMessage;
-               } elseif ( intval( $cacheEntry->getAttribute( 'rc_type' ) ) === RC_CATEGORIZE ) {
-                       $pageTitle = Title::newFromID( $cacheEntry->getAttribute( 'rc_cur_id' ) );
-                       $diffUrl = htmlspecialchars( $pageTitle->getLinkURL( $queryParams ) );
-                       $diffLink = "<a href=\"$diffUrl\" tabindex=\"$counter\">$diffMessage</a>";
                } else {
                        $diffUrl = htmlspecialchars( $cacheEntry->getTitle()->getLinkURL( $queryParams ) );
                        $diffLink = "<a href=\"$diffUrl\" tabindex=\"$counter\">$diffMessage</a>";
index a73ed5b..54ca2ab 100644 (file)
@@ -67,7 +67,6 @@ class RecentChange {
        const SRC_NEW = 'mw.new';
        const SRC_LOG = 'mw.log';
        const SRC_EXTERNAL = 'mw.external'; // obsolete
-       const SRC_CATEGORIZE = 'mw.categorize';
 
        public $mAttribs = array();
        public $mExtra = array();
@@ -90,17 +89,6 @@ class RecentChange {
         */
        public $counter = -1;
 
-       /**
-        * @var array Array of change types
-        */
-       private static $changeTypes = array(
-               'edit' => RC_EDIT,
-               'new' => RC_NEW,
-               'log' => RC_LOG,
-               'external' => RC_EXTERNAL,
-               'categorize' => RC_CATEGORIZE,
-       );
-
        # Factory methods
 
        /**
@@ -131,10 +119,18 @@ class RecentChange {
                        return $retval;
                }
 
-               if ( !array_key_exists( $type, self::$changeTypes ) ) {
-                       throw new MWException( "Unknown type '$type'" );
+               switch ( $type ) {
+                       case 'edit':
+                               return RC_EDIT;
+                       case 'new':
+                               return RC_NEW;
+                       case 'log':
+                               return RC_LOG;
+                       case 'external':
+                               return RC_EXTERNAL;
+                       default:
+                               throw new MWException( "Unknown type '$type'" );
                }
-               return self::$changeTypes[$type];
        }
 
        /**
@@ -144,15 +140,24 @@ class RecentChange {
         * @return string $type
         */
        public static function parseFromRCType( $rcType ) {
-               return array_search( $rcType, self::$changeTypes, true ) ?: "$rcType";
-       }
+               switch ( $rcType ) {
+                       case RC_EDIT:
+                               $type = 'edit';
+                               break;
+                       case RC_NEW:
+                               $type = 'new';
+                               break;
+                       case RC_LOG:
+                               $type = 'log';
+                               break;
+                       case RC_EXTERNAL:
+                               $type = 'external';
+                               break;
+                       default:
+                               $type = "$rcType";
+               }
 
-       /**
-        * Get an array of all change types
-        * @return array
-        */
-       public static function getChangeTypes() {
-               return array_keys( self::$changeTypes );
+               return $type;
        }
 
        /**
@@ -377,6 +382,13 @@ class RecentChange {
                        /** @var $formatter RCFeedFormatter */
                        $formatter = is_object( $feed['formatter'] ) ? $feed['formatter'] : new $feed['formatter']();
                        $line = $formatter->getLine( $feed, $this, $actionComment );
+                       if ( !$line ) {
+                               // T109544
+                               // If a feed formatter returns null, this will otherwise cause an
+                               // error in at least RedisPubSubFeedEngine.
+                               // Not sure where/how this should best be handled.
+                               continue;
+                       }
 
                        $engine->send( $feed, $line );
                }
@@ -741,72 +753,6 @@ class RecentChange {
                return $rc;
        }
 
-       /**
-        * Makes an entry in the database corresponding to a categorization
-        *
-        * @param string $timestamp Timestamp of the recent change to occur
-        * @param Title $categoryTitle Title of the category a page is being added to or removed from
-        * @param User $user User object of the user that made the change
-        * @param string $comment Change summary
-        * @param Title $pageTitle Title of the page that is being added or removed
-        * @param int $oldRevId Parent revision ID of this change
-        * @param int $newRevId Revision ID of this change
-        * @param string $lastTimestamp Parent revision timestamp of this change
-        * @param bool $bot true, if the change was made by a bot
-        * @param string $ip IP address of the user, if the change was made anonymously
-        * @param int $patrol Indicates whether the change is patrolled/unpatrolled
-        * @param int $deleted Indicates whether the change has been deleted
-        * @param array|null $params Additional parameters as explained on
-        * https://www.mediawiki.org/wiki/Manual:Logging_table#log_params
-        * @return RecentChange
-        * @throws MWException
-        * @since 1.26
-        */
-       public static function notifyCategorization( $timestamp, Title $categoryTitle, User $user = null,
-                       $comment, Title $pageTitle, $oldRevId, $newRevId, $lastTimestamp, $bot, $ip = '',
-                       $patrol = 0, $deleted = 0, $params = null ) {
-
-               $rc = new RecentChange;
-               $rc->mTitle = $categoryTitle;
-               $rc->mPerformer = $user;
-               $rc->mAttribs = array(
-                       'rc_timestamp' => $timestamp,
-                       'rc_namespace' => $categoryTitle->getNamespace(),
-                       'rc_title' => $categoryTitle->getDBkey(),
-                       'rc_type' => RC_CATEGORIZE,
-                       'rc_source' => self::SRC_CATEGORIZE,
-                       'rc_minor' => 0,
-                       'rc_cur_id' => $pageTitle->getArticleID(),
-                       'rc_user' => $user ? $user->getId() : 0,
-                       'rc_user_text' => $user ? $user->getName() : '',
-                       'rc_comment' => $comment,
-                       'rc_this_oldid' => $newRevId,
-                       'rc_last_oldid' => $oldRevId,
-                       'rc_bot' => $bot ? 1 : 0,
-                       'rc_ip' => self::checkIPAddress( $ip ),
-                       'rc_patrolled' => intval( $patrol ),
-                       'rc_new' => 0, # obsolete
-                       'rc_old_len' => 0,
-                       'rc_new_len' => 0,
-                       'rc_deleted' => $deleted,
-                       'rc_logid' => 0,
-                       'rc_log_type' => null,
-                       'rc_log_action' => '',
-                       'rc_params' => $params ? serialize( $params ) : ''
-               );
-
-               $rc->mExtra = array(
-                       'prefixedDBkey' => $categoryTitle->getPrefixedDBkey(),
-                       'lastTimestamp' => $lastTimestamp,
-                       'oldSize' => 0,
-                       'newSize' => 0,
-                       'pageStatus' => 'changed'
-               );
-               $rc->save();
-
-               return $rc;
-       }
-
        /**
         * Initialises the members of this object from a mysql row object
         *
index bf8386f..12f738f 100644 (file)
@@ -153,8 +153,10 @@ class ChangeTags {
         *
         * @since 1.25
         */
-       public static function updateTags( $tagsToAdd, $tagsToRemove, &$rc_id = null,
-               &$rev_id = null, &$log_id = null, $params = null ) {
+       public static function updateTags(
+               $tagsToAdd, $tagsToRemove,
+               &$rc_id = null, &$rev_id = null, &$log_id = null, $params = null
+       ) {
 
                $tagsToAdd = array_filter( (array)$tagsToAdd ); // Make sure we're submitting all tags...
                $tagsToRemove = array_filter( (array)$tagsToRemove );
@@ -169,18 +171,28 @@ class ChangeTags {
                // Might as well look for rcids and so on.
                if ( !$rc_id ) {
                        // Info might be out of date, somewhat fractionally, on slave.
+                       // LogEntry/LogPage and WikiPage match rev/log/rc timestamps,
+                       // so use that relation to avoid full table scans.
                        if ( $log_id ) {
                                $rc_id = $dbw->selectField(
-                                       'recentchanges',
+                                       array( 'logging', 'recentchanges' ),
                                        'rc_id',
-                                       array( 'rc_logid' => $log_id ),
+                                       array(
+                                               'log_id' => $log_id,
+                                               'rc_timestamp = log_timestamp',
+                                               'rc_logid = log_id'
+                                       ),
                                        __METHOD__
                                );
                        } elseif ( $rev_id ) {
                                $rc_id = $dbw->selectField(
-                                       'recentchanges',
+                                       array( 'revision', 'recentchanges' ),
                                        'rc_id',
-                                       array( 'rc_this_oldid' => $rev_id ),
+                                       array(
+                                               'rev_id' => $rev_id,
+                                               'rc_timestamp = rev_timestamp',
+                                               'rc_this_oldid = rev_id'
+                                       ),
                                        __METHOD__
                                );
                        }
diff --git a/includes/compat/IPSetCompat.php b/includes/compat/IPSetCompat.php
new file mode 100644 (file)
index 0000000..79c6000
--- /dev/null
@@ -0,0 +1,28 @@
+<?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
+ */
+
+/**
+ * Backward-compatibility alias for IPSet, which was moved out
+ * into an external library and namespaced.
+ *
+ * @deprecated since 1.26 use IPSet\IPSet directly
+ */
+class IPSet extends IPSet\IPSet {
+}
index d526d84..caf5afa 100644 (file)
@@ -168,6 +168,7 @@ abstract class ContextSource implements IContextSource {
         * Parameters are the same as wfMessage()
         *
         * @since 1.18
+        * @param mixed ...
         * @return Message
         */
        public function msg( /* $args */ ) {
index 2ca79cd..58bf5d9 100644 (file)
@@ -134,6 +134,7 @@ interface IContextSource {
        /**
         * Get a Message object with context set.  See wfMessage for parameters.
         *
+        * @param mixed ...
         * @return Message
         */
        public function msg();
index 76b5e52..93adde1 100644 (file)
@@ -62,7 +62,7 @@ class RequestContext implements IContextSource, MutableContext {
        private $skin;
 
        /**
-        * @var StatsdDataFactory
+        * @var \Liuggio\StatsdClient\Factory\StatsdDataFactory
         */
        private $stats;
 
@@ -427,6 +427,7 @@ class RequestContext implements IContextSource, MutableContext {
         * Get a Message object with context set
         * Parameters are the same as wfMessage()
         *
+        * @param mixed ...
         * @return Message
         */
        public function msg() {
index aa8e2a0..4d1b1c0 100644 (file)
@@ -1901,9 +1901,6 @@ abstract class DatabaseBase implements IDatabase {
         *     This causes a multi-row INSERT on DBMSs that support it. The keys in
         *     each subarray must be identical to each other, and in the same order.
         *
-        * Usually throws a DBQueryError on failure. If errors are explicitly ignored,
-        * returns success.
-        *
         * $options is an array of options, with boolean options encoded as values
         * with numeric keys, in the same style as $options in
         * DatabaseBase::select(). Supported options are:
@@ -1919,6 +1916,9 @@ abstract class DatabaseBase implements IDatabase {
         * @param string $fname Calling function name (use __METHOD__) for logs/profiling
         * @param array $options Array of options
         *
+        * @throws DBQueryError Usually throws a DBQueryError on failure. If errors are explicitly ignored,
+        * returns success.
+        *
         * @return bool
         */
        public function insert( $table, $a, $fname = __METHOD__, $options = array() ) {
index 9c93951..656547b 100644 (file)
@@ -284,7 +284,7 @@ class DatabaseSqlite extends DatabaseBase {
         * @return bool
         */
        function isWriteQuery( $sql ) {
-               return parent::isWriteQuery( $sql ) && !preg_match( '/^ATTACH\b/i', $sql );
+               return parent::isWriteQuery( $sql ) && !preg_match( '/^(ATTACH|PRAGMA)\b/i', $sql );
        }
 
        /**
index 0742df2..cf522b2 100644 (file)
@@ -208,7 +208,7 @@ abstract class LBFactory {
         */
        public function hasMasterChanges() {
                $ret = false;
-               $this->forEachLB( function ( $lb ) use ( &$ret ) {
+               $this->forEachLB( function ( LoadBalancer $lb ) use ( &$ret ) {
                        $ret = $ret || $lb->hasMasterChanges();
                } );
                return $ret;
index aa305ab..92fbccd 100644 (file)
@@ -232,7 +232,7 @@ class LBFactoryMulti extends LBFactory {
        public function getMainLB( $wiki = false ) {
                $section = $this->getSectionForWiki( $wiki );
                if ( !isset( $this->mainLBs[$section] ) ) {
-                       $lb = $this->newMainLB( $wiki, $section );
+                       $lb = $this->newMainLB( $wiki );
                        $lb->parentInfo( array( 'id' => "main-$section" ) );
                        $this->chronProt->initLB( $lb );
                        $this->mainLBs[$section] = $lb;
index c80697b..3008419 100644 (file)
@@ -34,12 +34,10 @@ class LoadMonitorMySQL implements LoadMonitor {
        protected $mainCache;
 
        public function __construct( $parent ) {
-               global $wgMemc;
-
                $this->parent = $parent;
 
-               $this->srvCache = ObjectCache::newAccelerator( array(), 'hash' );
-               $this->mainCache = $wgMemc ?: wfGetMainCache();
+               $this->srvCache = ObjectCache::newAccelerator( 'hash' );
+               $this->mainCache = wfGetMainCache();
        }
 
        public function scaleLoads( &$loads, $group = false, $wiki = false ) {
index 36cc865..e9ec7ff 100644 (file)
@@ -61,12 +61,6 @@ class LinksUpdate extends SqlDataUpdate {
        /** @var bool Whether to queue jobs for recursive updates */
        public $mRecursive;
 
-       /** @var bool Whether this job was triggered by a recursive update job */
-       private $mTriggeredRecursive;
-
-       /** @var Revision Revision for which this update has been triggered */
-       private $mRevision;
-
        /**
         * @var null|array Added links if calculated.
         */
@@ -153,6 +147,7 @@ class LinksUpdate extends SqlDataUpdate {
        }
 
        protected function doIncrementalUpdate() {
+
                # Page links
                $existing = $this->getExistingLinks();
                $this->linkDeletions = $this->getLinkDeletions( $existing );
@@ -204,27 +199,6 @@ class LinksUpdate extends SqlDataUpdate {
                $this->invalidateCategories( $categoryUpdates );
                $this->updateCategoryCounts( $categoryInserts, $categoryDeletes );
 
-               # Category membership changes
-               if ( !$this->mTriggeredRecursive && ( $categoryInserts || $categoryDeletes ) ) {
-                       try {
-                               $catMembChange = new CategoryMembershipChange( $this->mTitle, $this->mRevision );
-
-                               if ( $this->mRecursive ) {
-                                       $catMembChange->setRecursive();
-                               }
-
-                               foreach ( $categoryInserts as $categoryName => $value ) {
-                                       $catMembChange->pageAddedToCategory( $categoryName );
-                               }
-
-                               foreach ( $categoryDeletes as $categoryName => $value ) {
-                                       $catMembChange->pageRemovedFromCategory( $categoryName );
-                               }
-                       } catch ( MWException $e ) {
-                               MWExceptionHandler::logException( $e );
-                       }
-               }
-
                # Page properties
                $existing = $this->getExistingProperties();
 
@@ -889,21 +863,6 @@ class LinksUpdate extends SqlDataUpdate {
                return $this->mImages;
        }
 
-       /**
-        * Set this object as being triggered by a recursive LinksUpdate
-        */
-       public function setTriggeredRecursive() {
-               $this->mTriggeredRecursive = true;
-       }
-
-       /**
-        * Set the revision corresponding to this LinksUpdate
-        * @param Revision $revision
-        */
-       public function setRevision( Revision $revision ) {
-               $this->mRevision = $revision;
-       }
-
        /**
         * Invalidate any necessary link lists related to page property changes
         * @param array $changed
index 6a0f2ee..408194f 100644 (file)
@@ -138,13 +138,12 @@ class SwiftFileBackend extends FileBackendStore {
                        if ( PHP_SAPI === 'cli' ) {
                                $this->srvCache = wfGetMainCache(); // preferrably memcached
                        } else {
-                               try { // look for APC, XCache, WinCache, ect...
-                                       $this->srvCache = ObjectCache::newAccelerator( array() );
-                               } catch ( Exception $e ) {
-                               }
+                               // look for APC, XCache, WinCache, ect...
+                               $this->srvCache = ObjectCache::newAccelerator( CACHE_NONE );
                        }
+               } else {
+                       $this->srvCache = new EmptyBagOStuff();
                }
-               $this->srvCache = $this->srvCache ?: new EmptyBagOStuff();
        }
 
        public function getFeatures() {
@@ -716,6 +715,11 @@ class SwiftFileBackend extends FileBackendStore {
                        return $objHdrs; // failed
                }
 
+               // Find prior custom HTTP headers
+               $postHeaders = $this->getCustomHeaders( $objHdrs );
+               // Find prior metadata headers
+               $postHeaders += $this->getMetadataHeaders( $objHdrs );
+
                $status = Status::newGood();
                /** @noinspection PhpUnusedLocalVariableInspection */
                $scopeLockS = $this->getScopedFileLocks( array( $path ), LockManager::LOCK_UW, $status );
@@ -725,11 +729,13 @@ class SwiftFileBackend extends FileBackendStore {
                                $hash = $tmpFile->getSha1Base36();
                                if ( $hash !== false ) {
                                        $objHdrs['x-object-meta-sha1base36'] = $hash;
+                                       // Merge new SHA1 header into the old ones
+                                       $postHeaders['x-object-meta-sha1base36'] = $hash;
                                        list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $path );
-                                       list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+                                       list( $rcode ) = $this->http->run( array(
                                                'method' => 'POST',
                                                'url' => $this->storageUrl( $auth, $srcCont, $srcRel ),
-                                               'headers' => $this->authTokenHeaders( $auth ) + $objHdrs
+                                               'headers' => $this->authTokenHeaders( $auth ) + $postHeaders
                                        ) );
                                        if ( $rcode >= 200 && $rcode <= 299 ) {
                                                $this->deleteFileCache( $path );
index 39a5563..b81cf3e 100644 (file)
@@ -96,7 +96,7 @@ abstract class DBLockManager extends QuorumLockManager {
                                // Tracks peers that couldn't be queried recently to avoid lengthy
                                // connection timeouts. This is useless if each bucket has one peer.
                                try {
-                                       $this->statusCache = ObjectCache::newAccelerator( array() );
+                                       $this->statusCache = ObjectCache::newAccelerator();
                                } catch ( Exception $e ) {
                                        trigger_error( __CLASS__ .
                                                " using multiple DB peers without apc, xcache, or wincache." );
index f9e1128..3677a14 100644 (file)
@@ -423,7 +423,10 @@ abstract class File implements IDBAccessObject {
                if ( !isset( $this->fsFile ) ) {
                        $starttime = microtime( true );
                        $this->fsFile = $this->repo->getLocalReference( $this->getPath() );
-                       RequestContext::getMain()->getStats()->timing( 'media.thumbnail.generate.fetchoriginal', microtime( true ) - $starttime );
+
+                       $statTiming = microtime( true ) - $starttime;
+                       RequestContext::getMain()->getStats()->timing(
+                               'media.thumbnail.generate.fetchoriginal', 1000 * $statTiming );
 
                        if ( !$this->fsFile ) {
                                $this->fsFile = false; // null => false; cache negative hits
@@ -1120,7 +1123,8 @@ abstract class File implements IDBAccessObject {
                $thumb = $handler->doTransform( $this, $tmpThumbPath, $thumbUrl, $transformParams );
                $tmpFile->bind( $thumb ); // keep alive with $thumb
 
-               $stats->timing( 'media.thumbnail.generate.transform', microtime( true ) - $starttime );
+               $statTiming = microtime( true ) - $starttime;
+               $stats->timing( 'media.thumbnail.generate.transform', 1000 * $statTiming );
 
                if ( !$thumb ) { // bad params?
                        $thumb = false;
@@ -1143,7 +1147,8 @@ abstract class File implements IDBAccessObject {
                                $thumb = $this->transformErrorOutput( $thumbPath, $thumbUrl, $transformParams, $flags );
                        }
 
-                       $stats->timing( 'media.thumbnail.generate.store', microtime( true ) - $starttime );
+                       $statTiming = microtime( true ) - $starttime;
+                       $stats->timing( 'media.thumbnail.generate.store', 1000 * $statTiming );
 
                        // Give extensions a chance to do something with this thumbnail...
                        Hooks::run( 'FileTransformed', array( $this, $thumb, $tmpThumbPath, $thumbPath ) );
@@ -1180,8 +1185,6 @@ abstract class File implements IDBAccessObject {
 
                $params = $this->getHandler()->sanitizeParamsForBucketing( $params );
 
-               $bucketName = $this->getBucketThumbName( $bucket );
-
                $tmpFile = $this->makeTransformTmpFile( $bucketPath );
 
                if ( !$tmpFile ) {
@@ -1201,7 +1204,8 @@ abstract class File implements IDBAccessObject {
                // this object exists
                $tmpFile->bind( $this );
 
-               RequestContext::getMain()->getStats()->timing( 'media.thumbnail.generate.bucket', $buckettime );
+               RequestContext::getMain()->getStats()->timing(
+                       'media.thumbnail.generate.bucket', 1000 * $buckettime );
 
                return true;
        }
index da58f20..38729a5 100644 (file)
@@ -710,6 +710,21 @@ class HTMLForm extends ContextSource {
                return $this;
        }
 
+       /**
+        * Get header text.
+        *
+        * @param string|null $section The section to get the header text for
+        * @since 1.26
+        * @return string
+        */
+       function getHeaderText( $section = null ) {
+               if ( is_null( $section ) ) {
+                       return $this->mHeader;
+               } else {
+                       return isset( $this->mSectionHeaders[$section] ) ? $this->mSectionHeaders[$section] : '';
+               }
+       }
+
        /**
         * Add footer text, inside the form.
         *
@@ -750,6 +765,21 @@ class HTMLForm extends ContextSource {
                return $this;
        }
 
+       /**
+        * Get footer text.
+        *
+        * @param string|null $section The section to get the footer text for
+        * @since 1.26
+        * @return string
+        */
+       function getFooterText( $section = null ) {
+               if ( is_null( $section ) ) {
+                       return $this->mFooter;
+               } else {
+                       return isset( $this->mSectionFooters[$section] ) ? $this->mSectionFooters[$section] : '';
+               }
+       }
+
        /**
         * Add text to the end of the display.
         *
@@ -871,12 +901,11 @@ class HTMLForm extends ContextSource {
 
                $html = ''
                        . $this->getErrors( $submitResult )
-                       // In OOUI forms, we handle mHeader elsewhere. FIXME This is horrible.
-                       . ( $this->getDisplayFormat() === 'ooui' ? '' : $this->mHeader )
+                       . $this->getHeaderText()
                        . $this->getBody()
                        . $this->getHiddenFields()
                        . $this->getButtons()
-                       . $this->mFooter;
+                       . $this->getFooterText();
 
                $html = $this->wrapForm( $html );
 
@@ -1333,7 +1362,7 @@ class HTMLForm extends ContextSource {
                &$hasUserVisibleFields = false ) {
                $displayFormat = $this->getDisplayFormat();
 
-               $html = '';
+               $html = array();
                $subsectionHtml = '';
                $hasLabel = false;
 
@@ -1345,7 +1374,7 @@ class HTMLForm extends ContextSource {
                                $v = empty( $value->mParams['nodata'] )
                                        ? $this->mFieldData[$key]
                                        : $value->getDefault();
-                               $html .= $value->$getFieldHtmlMethod( $v );
+                               $html[] = $value->$getFieldHtmlMethod( $v );
 
                                $labelValue = trim( $value->getLabel() );
                                if ( $labelValue != '&#160;' && $labelValue !== '' ) {
@@ -1372,12 +1401,9 @@ class HTMLForm extends ContextSource {
 
                                        $legend = $this->getLegend( $key );
 
-                                       if ( isset( $this->mSectionHeaders[$key] ) ) {
-                                               $section = $this->mSectionHeaders[$key] . $section;
-                                       }
-                                       if ( isset( $this->mSectionFooters[$key] ) ) {
-                                               $section .= $this->mSectionFooters[$key];
-                                       }
+                                       $section = $this->getHeaderText( $key ) .
+                                               $section .
+                                               $this->getFooterText( $key );
 
                                        $attributes = array();
                                        if ( $fieldsetIDPrefix ) {
@@ -1391,45 +1417,7 @@ class HTMLForm extends ContextSource {
                        }
                }
 
-               if ( $displayFormat !== 'raw' ) {
-                       $classes = array();
-
-                       if ( !$hasLabel ) { // Avoid strange spacing when no labels exist
-                               $classes[] = 'mw-htmlform-nolabel';
-                       }
-
-                       $attribs = array(
-                               'class' => implode( ' ', $classes ),
-                       );
-
-                       if ( $sectionName ) {
-                               $attribs['id'] = Sanitizer::escapeId( $sectionName );
-                       }
-
-                       if ( $displayFormat === 'table' ) {
-                               $html = Html::rawElement( 'table',
-                                               $attribs,
-                                               Html::rawElement( 'tbody', array(), "\n$html\n" ) ) . "\n";
-                       } elseif ( $displayFormat === 'inline' ) {
-                               $html = Html::rawElement( 'span', $attribs, "\n$html\n" );
-                       } elseif ( $displayFormat === 'ooui' ) {
-                               $config = array(
-                                       'classes' => $classes,
-                               );
-                               if ( $sectionName ) {
-                                       $config['id'] = Sanitizer::escapeId( $sectionName );
-                               }
-                               if ( is_string( $this->mWrapperLegend ) ) {
-                                       $config['label'] = $this->mWrapperLegend;
-                               }
-                               $fieldset = new OOUI\FieldsetLayout( $config );
-                               // Ewww. We should pass this as $config['items'], but there might be string snippets.
-                               $fieldset->group->appendContent( new OOUI\HtmlSnippet( $html ) );
-                               $html = $fieldset;
-                       } else {
-                               $html = Html::rawElement( 'div', $attribs, "\n$html\n" );
-                       }
-               }
+               $html = $this->formatSection( $html, $sectionName, $hasLabel );
 
                if ( $subsectionHtml ) {
                        if ( $this->mSubSectionBeforeFields ) {
@@ -1442,6 +1430,46 @@ class HTMLForm extends ContextSource {
                }
        }
 
+       /**
+        * Put a form section together from the individual fields' HTML, merging it and wrapping.
+        * @param array $fieldsHtml
+        * @param string $sectionName
+        * @param bool $anyFieldHasLabel
+        * @return string HTML
+        */
+       protected function formatSection( array $fieldsHtml, $sectionName, $anyFieldHasLabel ) {
+               $displayFormat = $this->getDisplayFormat();
+               $html = implode( '', $fieldsHtml );
+
+               if ( $displayFormat === 'raw' ) {
+                       return $html;
+               }
+
+               $classes = array();
+
+               if ( !$anyFieldHasLabel ) { // Avoid strange spacing when no labels exist
+                       $classes[] = 'mw-htmlform-nolabel';
+               }
+
+               $attribs = array(
+                       'class' => implode( ' ', $classes ),
+               );
+
+               if ( $sectionName ) {
+                       $attribs['id'] = Sanitizer::escapeId( $sectionName );
+               }
+
+               if ( $displayFormat === 'table' ) {
+                       return Html::rawElement( 'table',
+                                       $attribs,
+                                       Html::rawElement( 'tbody', array(), "\n$html\n" ) ) . "\n";
+               } elseif ( $displayFormat === 'inline' ) {
+                       return Html::rawElement( 'span', $attribs, "\n$html\n" );
+               } else {
+                       return Html::rawElement( 'div', $attribs, "\n$html\n" );
+               }
+       }
+
        /**
         * Construct the form fields from the Descriptor array
         */
index 1d8137e..0fab033 100644 (file)
@@ -558,23 +558,25 @@ abstract class HTMLFormField {
         *
         * @param string $value The value to set the input to.
         *
-        * @return string
+        * @return OOUI\\FieldLayout|OOUI\\ActionFieldLayout
         */
        public function getOOUI( $value ) {
-               list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
-
                $inputField = $this->getInputOOUI( $value );
 
                if ( !$inputField ) {
-                       // This field doesn't have an OOUI implementation yet at all.
-                       // OK, use this trick:
-                       return $this->getDiv( $value );
+                       // This field doesn't have an OOUI implementation yet at all. Fall back to getDiv() to
+                       // generate the whole field, label and errors and all, then wrap it in a Widget.
+                       // It might look weird, but it'll work OK.
+                       return $this->getFieldLayoutOOUI(
+                               new OOUI\Widget( array( 'content' => new OOUI\HtmlSnippet( $this->getDiv( $value ) ) ) ),
+                               array( 'infusable' => false )
+                       );
                }
 
                $infusable = true;
                if ( is_string( $inputField ) ) {
-                       // Mmm… We have an OOUI implementation, but it's not complete, and we got a load of HTML.
-                       // Cheat a little and wrap it in a widget! It won't be infusable, though, since client-side
+                       // We have an OOUI implementation, but it's not proper, and we got a load of HTML.
+                       // Cheat a little and wrap it in a widget. It won't be infusable, though, since client-side
                        // JavaScript doesn't know how to rebuilt the contents.
                        $inputField = new OOUI\Widget( array( 'content' => new OOUI\HtmlSnippet( $inputField ) ) );
                        $infusable = false;
@@ -582,16 +584,21 @@ abstract class HTMLFormField {
 
                $fieldType = get_class( $this );
                $helpText = $this->getHelpText();
+               $errors = $this->getErrorsRaw( $value );
+               foreach ( $errors as &$error ) {
+                       $error = new OOUI\HtmlSnippet( $error );
+               }
+
                $config = array(
-                       'classes' => array( "mw-htmlform-field-$fieldType", $this->mClass, $errorClass ),
+                       'classes' => array( "mw-htmlform-field-$fieldType", $this->mClass ),
                        'align' => $this->getLabelAlignOOUI(),
                        'label' => $this->getLabel(),
                        'help' => $helpText !== null ? new OOUI\HtmlSnippet( $helpText ) : null,
+                       'errors' => $errors,
                        'infusable' => $infusable,
                );
-               $field = $this->getFieldLayoutOOUI( $inputField, $config );
 
-               return $field . $errors;
+               return $this->getFieldLayoutOOUI( $inputField, $config );
        }
 
        /**
@@ -778,7 +785,7 @@ abstract class HTMLFormField {
         * @since 1.20
         *
         * @param string $value The value of the input
-        * @return array
+        * @return array array( $errors, $errorClass )
         */
        public function getErrorsAndErrorClass( $value ) {
                $errors = $this->validate( $value, $this->mParent->mFieldData );
@@ -794,6 +801,32 @@ abstract class HTMLFormField {
                return array( $errors, $errorClass );
        }
 
+       /**
+        * Determine form errors to display, returning them in an array.
+        *
+        * @since 1.26
+        * @param string $value The value of the input
+        * @return string[] Array of error HTML strings
+        */
+       public function getErrorsRaw( $value ) {
+               $errors = $this->validate( $value, $this->mParent->mFieldData );
+
+               if ( is_bool( $errors ) || !$this->mParent->wasSubmitted() ) {
+                       $errors = array();
+               }
+
+               if ( !is_array( $errors ) ) {
+                       $errors = array( $errors );
+               }
+               foreach ( $errors as &$error ) {
+                       if ( $error instanceof Message ) {
+                               $error = $error->parse();
+                       }
+               }
+
+               return $errors;
+       }
+
        /**
         * @return string
         */
index d6d564e..4efdfbf 100644 (file)
@@ -23,13 +23,10 @@ class HTMLSelectNamespace extends HTMLFormField {
 
        public function getInputOOUI( $value ) {
                return new MediaWiki\Widget\NamespaceInputWidget( array(
-                       'valueNamespace' => $value,
-                       'nameNamespace' => $this->mName,
+                       'value' => $value,
+                       'name' => $this->mName,
                        'id' => $this->mID,
                        'includeAllValue' => $this->mAllValue,
-                       // Disable additional checkboxes
-                       'nameInvert' => null,
-                       'nameAssociated' => null,
                ) );
        }
 }
index eec13ee..84d40a1 100644 (file)
@@ -25,6 +25,8 @@
  * Compact stacked vertical format for forms, implemented using OOUI widgets.
  */
 class OOUIHTMLForm extends HTMLForm {
+       private $oouiErrors;
+
        public function __construct( $descriptor, $context = null, $messagePrefix = '' ) {
                parent::__construct( $descriptor, $context, $messagePrefix );
                $this->getOutput()->enableOOUI();
@@ -104,11 +106,97 @@ class OOUIHTMLForm extends HTMLForm {
                return $html;
        }
 
+       /**
+        * Put a form section together from the individual fields' HTML, merging it and wrapping.
+        * @param OOUI\\FieldLayout[] $fieldsHtml
+        * @param string $sectionName
+        * @param bool $anyFieldHasLabel Unused
+        * @return string HTML
+        */
+       protected function formatSection( array $fieldsHtml, $sectionName, $anyFieldHasLabel ) {
+               $config = array(
+                       'items' => $fieldsHtml,
+               );
+               if ( $sectionName ) {
+                       $config['id'] = Sanitizer::escapeId( $sectionName );
+               }
+               if ( is_string( $this->mWrapperLegend ) ) {
+                       $config['label'] = $this->mWrapperLegend;
+               }
+               return new OOUI\FieldsetLayout( $config );
+       }
+
+       /**
+        * @param string|array|Status $err
+        * @return string
+        */
+       function getErrors( $err ) {
+               if ( !$err ) {
+                       $errors = array();
+               } else if ( $err instanceof Status ) {
+                       if ( $err->isOK() ) {
+                               $errors = array();
+                       } else {
+                               $errors = $err->getErrorsByType( 'error' );
+                               foreach ( $errors as &$error ) {
+                                       // Input:  array( 'message' => 'foo', 'errors' => array( 'a', 'b', 'c' ) )
+                                       // Output: array( 'foo', 'a', 'b', 'c' )
+                                       $error = array_merge( array( $error['message'] ), $error['params'] );
+                               }
+                       }
+               } else {
+                       $errors = $err;
+                       if ( !is_array( $errors ) ) {
+                               $errors = array( $errors );
+                       }
+               }
+
+               foreach ( $errors as &$error ) {
+                       if ( is_array( $error ) ) {
+                               $msg = array_shift( $error );
+                       } else {
+                               $msg = $error;
+                               $error = array();
+                       }
+                       $error = $this->msg( $msg, $error )->parse();
+                       $error = new OOUI\HtmlSnippet( $error );
+               }
+
+               // Used in getBody()
+               $this->oouiErrors = $errors;
+               return '';
+       }
+
+       function getHeaderText( $section = null ) {
+               if ( is_null( $section ) ) {
+                       // We handle $this->mHeader elsewhere, in getBody()
+                       return '';
+               } else {
+                       return parent::getHeaderText( $section );
+               }
+       }
+
        function getBody() {
                $fieldset = parent::getBody();
                // FIXME This only works for forms with no subsections
                if ( $fieldset instanceof OOUI\FieldsetLayout ) {
-                       $fieldset->group->prependContent( new OOUI\HtmlSnippet( $this->mHeader ) );
+                       $classes = array( 'mw-htmlform-ooui-header' );
+                       if ( !$this->mHeader ) {
+                               $classes[] = 'mw-htmlform-ooui-header-empty';
+                       }
+                       if ( $this->oouiErrors ) {
+                               $classes[] = 'mw-htmlform-ooui-header-errors';
+                       }
+                       $fieldset->addItems( array(
+                               new OOUI\FieldLayout(
+                                       new OOUI\LabelWidget( array( 'label' => new OOUI\HtmlSnippet( $this->mHeader ) ) ),
+                                       array(
+                                               'align' => 'top',
+                                               'errors' => $this->oouiErrors,
+                                               'classes' => $classes,
+                                       )
+                               )
+                       ), 0 );
                }
                return $fieldset;
        }
index 36d2c1d..aa60c01 100644 (file)
@@ -267,12 +267,14 @@ class MysqlUpdater extends DatabaseUpdater {
                                'patch-fa_major_mime-chemical.sql' ),
 
                        // 1.25
-                       array( 'dropTable', 'hitcounter' ),
-                       array( 'dropField', 'site_stats', 'ss_total_views', 'patch-drop-ss_total_views.sql' ),
-                       array( 'dropField', 'page', 'page_counter', 'patch-drop-page_counter.sql' ),
                        array( 'doUserNewTalkUseridUnsigned' ),
                        // note this patch covers other _comment and _description fields too
                        array( 'modifyField', 'recentchanges', 'rc_comment', 'patch-editsummary-length.sql' ),
+
+                       // 1.26
+                       array( 'dropTable', 'hitcounter' ),
+                       array( 'dropField', 'site_stats', 'ss_total_views', 'patch-drop-ss_total_views.sql' ),
+                       array( 'dropField', 'page', 'page_counter', 'patch-drop-page_counter.sql' ),
                );
        }
 
index baf4f6d..775e6e6 100644 (file)
@@ -1,7 +1,9 @@
 {
        "@metadata": {
                "authors": [
-                       "Mousa"
+                       "Mousa",
+                       "Koroğlu",
+                       "Ebrahimi-amir"
                ]
        },
        "config-desc": "مئدیاویکی قوروجوسو",
index 6d28a58..ee33109 100644 (file)
@@ -80,8 +80,6 @@
        "config-db-install-account": "Compte d'usuari per a la instal·lació",
        "config-db-username": "Nom d'usuari de la base de dades:",
        "config-db-password": "Contrasenya de la base de dades:",
-       "config-db-password-empty": "Si us plau, introduïu una contrasenya pel nou usuari de la base de dades $1. Tot i que es poden crear usuaris sense contrasenyes, no és segur.",
-       "config-db-username-empty": "Heu d'introduir un valor per a «{{int:config-db-username}}»",
        "config-db-install-username": "Introduïu el nom d'usuari que s'utilitzarà per connectar a la base de dades durant el procés d'instal·lació. Aquest no és el nom d'usuari de MediaWiki, és el nom d'usuari de la vostra base de dades.",
        "config-db-install-password": "Introduïu la contrasenya que s'utilitzarà per connectar a la base de dades durant el procés d'instal·lació. Aquesta no és la contrasenya del vostre compte a MediaWiki, és la contrasenya de la vostra base de dades.",
        "config-db-install-help": "Introduïu el nom d'usuari i la contrasenya que s'empraran per connectar a la base de dades durant el procés d'instal·lació.",
        "config-memcached-servers": "Servidors de Memcache:",
        "config-memcache-badip": "Heu introduït una adreça IP no vàlida per al Memcached: $1.",
        "config-memcache-noport": "No heu especificat un port per utilitzar el servidor Memcached: $1.\nSi no coneixeu el port, per defecte és 11211.",
+       "config-memcache-badport": "Els números de port de Memcached han de ser entre $1 i $2.",
        "config-extensions": "Extensions",
        "config-skins": "Aparences",
        "config-skins-use-as-default": "Utilitza aquest tema per defecte",
index 8fe7294..d8405cf 100644 (file)
@@ -5,7 +5,8 @@
                        "Protnet",
                        "ZaDiak",
                        "Astralnet",
-                       "Geraki"
+                       "Geraki",
+                       "Stam.nikos"
                ]
        },
        "config-desc": "Το πρόγραμμα εγκατάστασης για το MediaWiki",
        "config-localsettings-key": "Κλειδί αναβάθμισης:",
        "config-localsettings-badkey": "Το κλειδί που δώσατε είναι εσφαλμένο.",
        "config-upgrade-key-missing": "Έχει εντοπιστεί μια υπάρχουσα εγκατάσταση του MediaWiki.\nΓια να αναβαθμίσετε αυτήν την εγκατάσταση, παρακαλούμε να βάλετε την ακόλουθη γραμμή στο κάτω μέρος του <code>LocalSettings.php</code> σας:\n\n$1",
+       "config-session-error": "Σφάλμα κατά την εκκίνηση συνεδρίας: $1",
        "config-your-language": "Η γλώσσα σας:",
+       "config-your-language-help": "Επιλέξτε μία γλώσσα για τη διαδικασία της εγκατάστασης.",
        "config-wiki-language": "Γλώσσα του wiki:",
+       "config-wiki-language-help": "Επιλέξτε τη γλώσσα που θα γραφεί το wiki πρωταρχικά.",
        "config-back": "← Πίσω",
        "config-continue": "Συνέχεια →",
        "config-page-language": "Γλώσσα",
        "config-page-existingwiki": "Υπάρχον wiki",
        "config-help-restart": "Θέλετε να καταργήσετε όλα τα αποθηκευμένα δεδομένα που έχετε εισαγάγει και να επανεκκινήσετε τη διαδικασία εγκατάστασης;",
        "config-restart": "Ναι, κάντε επανεκκίνηση",
+       "config-welcome": "=== Περιβαλλοντικοί έλεγχοι ===\nΤώρα θα γίνουν βασικοί έλεγχοι για να δούμε αν αυτό το περιβάλλον είναι κατάλληλο για την εγκατάσταση του MediaWiki.\nΘυμηθείτε να συμπεριλάβετε αυτές τις πληροφορίες εάν αναζητήσετε υποστήριξη για το πώς να ολοκληρώσετε την εγκατάσταση.",
+       "config-copyright": "=== Πνευματικά δικαιώματα και Όροι ===\n\n$1\n\nΑυτό το πρόγραμμα είναι ελεύθερο λογισμικό• μπορείτε να το αναδιανείμετε ή και να το τροποποιήσετε υπό τους όρους της Γενικής Άδειας Δημόσιας Χρήσης GNU, όπως αυτή δημοσιεύεται από το Ίδρυμα Ελεύθερου Λογισμικού• είτε της έκδοσης 2 της Άδειας, είτε (κατά την επιλογή σας) οποιασδήποτε μεταγενέστερης έκδοσης.\n\nΑυτό το πρόγραμμα διανέμεται με την ελπίδα ότι θα είναι χρήσιμο, αλλά <strong>χωρίς καμία εγγύηση</strong>• χωρίς καν την υπονοούμενη εγγύηση της <strong>εμπορευσιμότητας</strong> ή της <strong>καταλληλοτότητας για συγκεκριμένο σκοπό</strong>.\nΔείτε την Γενική Άδεια Δημόσιας Χρήσης GNU για περισσότερες λεπτομέρειες.\n\nΘα πρέπει να έχετε λάβει <doclink href=\"Copying\">ένα αντίγραφο της Γενικής Άδειας Δημόσιας Χρήσης GNU</doclink> μαζί με αυτό το πρόγραμμα• αν όχι, γράψτε στο Free Software Foundation,\n51 Franklin Street, Fifth Floor,\nBoston, MA 02110-1335\nUSA ή [http://www.gnu.org/copyleft/gpl.html διαβάστε online].",
+       "config-sidebar": "* [//www.mediawiki.org Αρχική MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Οδηγός Χρήστη]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Οδηγός Διαχειριστή]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Συχνές ερωτήσεις]\n----\n* <doclink href=\"Readme\">Διαβάστε με</doclink>\n* <doclink href=\"ReleaseNotes\">Σημειώσεις έκδοσης</doclink>\n* <doclink href=\"Copying\">Αντιγραφή</doclink>\n* <doclink href=\"UpgradeDoc\">Αναβάθμιση</doclink>",
        "config-env-good": "Το περιβάλλον έχει ελεγχθεί.\nΜπορείτε να εγκαταστήσετε το MediaWiki.",
        "config-env-bad": "Το περιβάλλον έχει ελεγχθεί.\nΔεν μπορείτε να εγκαταστήσετε το MediaWiki.",
        "config-env-php": "H PHP $1 είναι εγκατεστημένη.",
        "config-env-hhvm": "Το HHVM $1 είναι εγκατεστημένο.",
+       "config-unicode-using-intl": "Χρησιμοποιώντας την [http://pecl.php.net/intl επέκταση intl PECL] για κανονικοποίηση Unicode.",
+       "config-unicode-pure-php-warning": "<strong>Προειδοποίηση:</strong> Η [http://pecl.php.net/intl επέκταση intl PECL] δεν είναι διαθέσιμη για να χειριστεί την κανονικοποίηση Unicode, επιστρέφουμε στην αργή αμιγώς PHP εφαρμογή.\nΕάν λειτουργείτε έναν ιστότοπο υψηλής επισκεψιμότητας, θα πρέπει να ρίξετε μια ματιά στην [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations κανονικοποίηση Unicode].",
        "config-apc": "Το [http://www.php.net/apc APC] είναι εγκατεστημένο",
        "config-diff3-bad": "Το GNU diff3 δεν βρέθηκε.",
        "config-db-type": "Τύπος βάσης δεδομένων:",
@@ -77,6 +86,7 @@
        "config-mysql-engine": "Μηχανή αποθήκευσης:",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
+       "config-mysql-charset": "Σύνολο χαρακτήρων βάσης δεδομένων:",
        "config-mysql-binary": "Δυαδικό",
        "config-mysql-utf8": "UTF-8",
        "config-mssql-auth": "Τύπος ελέγχου ταυτότητας:",
        "config-instantcommons": "Ενεργοποίηση Instant Commons",
        "config-cc-again": "Επιλέξτε ξανά...",
        "config-advanced-settings": "Προηγμένες ρυθμίσεις παραμέτρων",
+       "config-cache-options": "Ρυθμίσεις για την προσωρινή αποθήκευση αντικειμένου:",
        "config-extensions": "Επεκτάσεις",
        "config-skins": "Θέματα εμφάνισης",
        "config-skins-help": "Τα θέματα εμφάνισης που αναφέρονται παραπάνω εντοπίστηκαν στον κατάλογο <code>./skins</code>. Πρέπει να  ενεργοποιήσετε τουλάχιστον ένα και να επιλέξτε ποιο θα είναι το προεπιλεγμένο.",
        "config-skins-use-as-default": "Χρήση αυτού του θέματος εμφάνισης ως προεπιλογή",
+       "config-skins-must-enable-some": "Πρέπει να επιλέξετε τουλάχιστον μία εμφάνιση να την ενεργοποιήσετε.",
        "config-skins-must-enable-default": "Το θέμα εμφάνισης που επιλέχθηκε ως προεπιλεγμένο πρέπει να είναι ενεργοποιημένο.",
+       "config-install-alreadydone": "<strong>Προειδοποίηση:</strong> Φαίνεται πως έχετε ήδη εγκατεστημένο το MediaWiki και προσπαθείτε να το εγκαταστήσετε ξανά.\nΠαρακαλώ προχωρήστε στην επόμενη σελίδα.",
+       "config-install-begin": "Πατώντας «{{int:config-continue}}» θα ξεκινήσει η εγκατάσταση του MediaWiki.\nΕάν θέλετε ακόμα να κάνετε αλλαγές, πατήστε «{{int:config-back}}».",
        "config-install-step-done": "έγινε",
        "config-install-step-failed": "απέτυχε",
        "config-install-extensions": "Γίνεται συμπερίληψη των επεκτάσεων",
index 5a26449..1262388 100644 (file)
@@ -66,7 +66,7 @@
        "config-help-restart": "¿Deseas borrar todos los datos guardados que has escrito y reiniciar el proceso de instalación?",
        "config-restart": "Sí, reiniciarlo",
        "config-welcome": "=== Comprobación del entorno ===\nAhora se van a realizar comprobaciones básicas para ver si el entorno es adecuado para la instalación de MediaWiki.\nRecuerda suministrar los resultados de tales comprobaciones si necesitas ayuda para completar la instalación.",
-       "config-copyright": "=== Derechos de autor y Términos de uso ===\n\n$1\n\nEste programa es software libre; puedes redistribuirlo y/o modificarlo en los términos de la Licencia Pública General de GNU, tal como aparece publicada por la Fundación para el Software Libre, tanto la versión 2 de la Licencia, como cualquier versión posterior (según prefiera).\n\nEste programa es distribuido en la esperanza de que sea útil, pero '''sin cualquier garantía'''; inclusive, sin la garantía implícita de la '''posibilidad de ser comercializado''' o de '''idoneidad para cualquier finalidad específica'''.\nConsulte la licencia *GNU General *Public *License para más detalles.\n\nEn conjunto con este programa debe haber recibido <doclink href=Copying>una copia de la Licencia Pública General de GNU</doclink>; si no la recibió, pídala por escrito a Fundación para el Software Libre, Inc., 51 Franklin Street, Fifth Floor, Boston, ME La 02110-1301, USA o [http://www.gnu.org/copyleft/gpl.html léala en internet].",
+       "config-copyright": "=== Derechos de autor y Términos de uso ===\n\n$1\n\nEste programa es software libre; puedes redistribuirlo y/o modificarlo en los términos de la Licencia Pública General de GNU, tal como aparece publicada por la Fundación para el Software Libre, tanto la versión 2 de la Licencia, como cualquier versión posterior (según prefieras).\n\nEste programa es distribuido con la esperanza de que sea útil, pero <strong>sin ninguna garantía</strong>; inclusive, sin la garantía implícita de la <strong>posibilidad de ser comercializado</strong> o de <strong>idoneidad para cualquier finalidad específica</strong>.\nConsulta la Licencia Pública General de GNU para más detalles.\n\nEn conjunto con este programa debes haber recibido <doclink href=Copying>una copia de la Licencia Pública General de GNU</doclink>; caso contrario, pídela por escrito a la Fundación para el Software Libre, Inc., 51 Franklin Street, Fifth Floor, Boston, ME La 02110-1301, USA o [http://www.gnu.org/copyleft/gpl.html léela en Internet].",
        "config-sidebar": "* [//www.mediawiki.org Página principal de MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Guía del usuario]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Guía del administrador]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Preguntas frecuentes]\n----\n* <doclink href=Readme>Léeme</doclink>\n* <doclink href=ReleaseNotes>Notas de la versión</doclink>\n* <doclink href=Copying>Copia</doclink>\n* <doclink href=UpgradeDoc>Actualización</doclink>",
        "config-env-good": "El entorno ha sido comprobado.\nPuedes instalar MediaWiki.",
        "config-env-bad": "El entorno ha sido comprobado.\nNo puedes instalar MediaWiki.",
@@ -87,7 +87,7 @@
        "config-xml-bad": "Falta el módulo XML de PHP.\nMediaWiki requiere funciones de este módulo y no funcionará en esta configuración.\nPuede que necesites instalar el el paquete RPM llamado php-xml.",
        "config-pcre-old": "'''Fatal:''' Se requiere PCRE $1 o posterior.\nSu PHP binario está enlazado con PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Más información].",
        "config-pcre-no-utf8": "'''Error fatal ''': Parece que el módulo PCRE de PHP fue compilado sin el soporte PCRE_UTF8.\nMediaWiki requiere compatibilidad con UTF-8 para funcionar correctamente.",
-       "config-memory-raised": "el parámetro <code>memory_limit</code> de PHP es $1, aumentada a $2.",
+       "config-memory-raised": "El parámetro <code>memory_limit</code> de PHP es $1. Se aumenta a $2.",
        "config-memory-bad": "<strong>Advertencia:</strong> el parámetro <code>memory_limit</code> de PHP es $1.\nProbablemente sea demasiado bajo.\n¡La instalación puede fallar!",
        "config-ctype": "'''Fatal''': Se necesita compilar PHP con compatibilidad para la [http://www.php.net/manual/en/ctype.installation.php extensión Ctype].",
        "config-iconv": "<strong>Fatal:</strong> PHP debe ser compilado con soporte para la [http://www.php.net/manual/en/iconv.installation.php extensión iconv].",
        "config-postgres-old": "Se requiere PostgreSQL $1 o posterior. Tienes la versión $2.",
        "config-mssql-old": "Se requiere Microsoft SQL Server $1 o posterior. Tienes la versión $2.",
        "config-sqlite-name-help": "Elige el nombre que identificará a tu wiki.\nNo uses espacios o guiones.\nEste nombre se usará como nombre del archivo de datos de SQLite.",
-       "config-sqlite-parent-unwritable-group": "No se puede crear el directorio de datos <code><nowiki>$1</nowiki></code> , porque el directorio padre <code><nowiki>$2</nowiki></code> no es accesible en escritura por el servidor Web.\n\nEl instalador ha determinado el usuario cuyo servidor Web se está ejecutando.\nConceda permisos de escritura en el directorio <code><nowiki>$3</nowiki></code> para continuar.\nEn un sistema Unix/Linux haga:\n\n<pre>cd $2\nmkdir $3\nchgrp $4 $3\nchmod g+w $3</pre>",
-       "config-sqlite-parent-unwritable-nogroup": "No se puede crear el directorio de datos <code><nowiki>$1</nowiki></code> , porque el directorio padre <code><nowiki>$2</nowiki></code> no es accesible en escritura por el servidor Web.\n\nEl programa de instalación no pudo determinar el usuario que se ejecuta en el servidor Web\nConceda permisos de escritura en el directorio <code><nowiki>$3</nowiki></code> para continuar.\nEn un sistema Unix/Linux haga:\n\n<pre>cd $2\nmkdir $3\nchmod a+w $3</pre>",
+       "config-sqlite-parent-unwritable-group": "No se puede crear el directorio de datos <code><nowiki>$1</nowiki></code>, porque el servidor web no tiene permiso de escribir en el directorio padre <code><nowiki>$2</nowiki></code>.\n\nEl instalador ha determinado el usuario con el que se ejecuta tu servidor web.\nConcede permisos de escritura a él en el directorio <code><nowiki>$3</nowiki></code> para continuar.\nEn un sistema Unix/Linux haz:\n\n<pre>cd $2\nmkdir $3\nchgrp $4 $3\nchmod g+w $3</pre>",
+       "config-sqlite-parent-unwritable-nogroup": "No se puede crear el directorio de datos <code><nowiki>$1</nowiki></code>, porque el servidor web no tiene permiso de escribir en el directorio padre <code><nowiki>$2</nowiki></code>.\n\nEl instalador no pudo determinar el usuario con el que se ejecuta tu servidor web.\nConcede permisos de escritura a él (¡y a otros!) en el directorio <code><nowiki>$3</nowiki></code> para continuar.\nEn un sistema Unix/Linux haz:\n\n<pre>cd $2\nmkdir $3\nchmod a+w $3</pre>",
        "config-sqlite-mkdir-error": "Error al crear el directorio de datos \"$1\".\nComprueba la ubicación e inténtalo de nuevo.",
        "config-sqlite-dir-unwritable": "No se puede escribir en el directorio \"$1\".\nModifica sus permisos para que el servidor web pueda escribir en él, y vuelve a intentarlo.",
        "config-sqlite-connection-error": "$1.\n\nVerifica el directorio de datos y el nombre de la base de datos mostrada a continuación, e inténtalo nuevamente.",
        "config-email-user-help": "Permitir que todos los usuarios intercambien correos electrónicos si lo han activado en sus preferencias.",
        "config-email-usertalk": "Activar notificaciones de páginas de discusión de usuarios",
        "config-email-usertalk-help": "Permitir a los usuarios recibir notificaciones de cambios en la página de discusión de usuario, si lo han activado en sus preferencias.",
-       "config-email-watchlist": "Activar notificación de alteraciones a la páginas vigiladas",
+       "config-email-watchlist": "Activar la notificación de la lista de seguimiento",
        "config-email-watchlist-help": "Permitir a los usuarios recibir notificaciones de cambios en la páginas que vigilan, si lo han activado en sus preferencias.",
        "config-email-auth": "Activar autenticación del correo electrónico",
        "config-email-auth-help": "Si esta opción está habilitada, los usuarios tienen que confirmar su dirección de correo electrónico mediante un enlace que se les envía a ellos cuando éstos lo establecen o lo cambian.\nSolo las direcciones de correo electrónico autenticadas pueden recibir correos electrónicos de otros usuarios o correos electrónicos de notificación de cambios.\nEsta opción está '''recomendada''' para wikis públicos debido a posibles abusos de las características del correo electrónico.",
        "config-upload-settings": "Cargas de imágenes y archivos",
        "config-upload-enable": "Habilitar la subida de archivos",
        "config-upload-help": "La carga de archivos expone potencialmente su servidor a riesgos de seguridad.\nPara obtener más información, lea la [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security sección de seguridad] en el manual.\n\nPara habilitar la carga de archivos, cambie el modo en el subdirectorio <code>images</code> bajo el directorio raíz de MediaWiki para que el servidor web pueda escribir en él.\nA continuación, habilite esta opción.",
-       "config-upload-deleted": "*Directorio para los archivos eliminados:",
+       "config-upload-deleted": "Directorio para los archivos eliminados:",
        "config-upload-deleted-help": "Elige un directorio en el que guardar los archivos eliminados.\nLo ideal es una carpeta no accesible desde la red.",
        "config-logo": "URL del logo :",
        "config-logo-help": "La apariencia predeterminada de MediaWiki incluye espacio para un logotipo de 135x160 píxeles encima del menú de la barra lateral.\nCarga una imagen de tamaño adecuado y escribe la dirección URL aquí.\n\nPuedes usar <code>$wgStylePath</code> o <code>$wgScriptPath</code> si tu logotipo es relativo a esas rutas.\n\nSi no deseas un logotipo, deja esta casilla en blanco.",
        "config-skins-missing": "No se encontró ninguna apariencia; MediaWiki utilizará una apariencia anterior hasta que instales unas apariencias adecuadas.",
        "config-skins-must-enable-some": "Debes seleccionar al menos una apariencia para activar.",
        "config-skins-must-enable-default": "La apariencia elegida como predeterminada debe estar habilitada.",
-       "config-install-alreadydone": "'''Aviso:''' Parece que ya habías instalado MediaWiki y estás intentando instalarlo nuevamente.\nPasa a la próxima página, por favor.",
+       "config-install-alreadydone": "<strong>Advertencia:</strong> parece que ya habías instalado MediaWiki y estás intentando instalarlo nuevamente.\nPasa a la próxima página.",
        "config-install-begin": "Al pulsar en «{{int:config-continue}}» comenzará el proceso de instalación de MediaWiki.\nSi quieres realizar algún cambio, pulsa en «{{int:config-back}}».",
        "config-install-step-done": "hecho",
        "config-install-step-failed": "falló",
        "config-install-pg-plpgsql": "Comprobación de lenguaje PL/pgSQL",
        "config-pg-no-plpgsql": "Necesitas instalar el lenguaje PL/pgSQL en la base de datos $1",
        "config-pg-no-create-privs": "La cuenta especificada para la instalación no tiene suficientes privilegios para crear una cuenta.",
-       "config-pg-not-in-role": "La cuenta especificada para el usuario web ya existe.\nLa cuenta especificada para la instalación no es de un superusuario y no es miembro del grupo de usuarios con acceso a la web, por lo que es incapaz de crear objetos pertenecientes al usuario web.\n\nMediaWiki requiere actualmente que las tablas sean propiedad del usuario web. Especifique otro nombre de cuenta web, o haga clic en \"atrás\" y especifique un usuario de instalación con los privilegios convenientes.",
+       "config-pg-not-in-role": "La cuenta especificada para el usuario web ya existe.\nLa cuenta especificada para la instalación no es de un superusuario y no es miembro del grupo de usuarios con acceso a la web, por lo que es incapaz de crear objetos pertenecientes al usuario web.\n\nMediaWiki requiere actualmente que las tablas sean propiedad del usuario web. Especifica otro nombre de cuenta web, o haz clic en \"atrás\" y especifica un usuario de instalación con los privilegios convenientes.",
        "config-install-user": "Creando el usuario de la base de datos",
        "config-install-user-alreadyexists": "El usuario \"$1\" ya existe",
        "config-install-user-create-failed": "La creación del usuario \"$1\" falló:  $2",
        "config-install-user-grant-failed": "La concesión de permisos al usuario \"$1\" falló: $2",
        "config-install-user-missing": "El usuario especificado \"$1\" no existe.",
-       "config-install-user-missing-create": "El usuario especificado \"$1\" no existe.\nPor favor, haga clic en la casilla \"Crear cuenta\" que aparece a continuación si desea crearlo.",
+       "config-install-user-missing-create": "El usuario especificado \"$1\" no existe.\nHaz clic en la casilla \"Crear cuenta\" debajo si quieres crearlo.",
        "config-install-tables": "Creando tablas",
-       "config-install-tables-exist": "'''Advertencia''': Al parecer, las tablas de MediaWiki ya existen. Saltándose su creación.",
-       "config-install-tables-failed": "'''Error''': La creación de las tablas falló con el siguiente error: $1",
+       "config-install-tables-exist": "<strong>Advertencia:</strong> al parecer, las tablas de MediaWiki ya existen. Saltándose su creación.",
+       "config-install-tables-failed": "<strong>Error:</strong> la creación de las tablas falló con el siguiente error: $1",
        "config-install-interwiki": "Llenando la tabla interwiki predeterminada",
-       "config-install-interwiki-list": "No se pudo encontrar el archivo <code>interwiki.list</code>.",
-       "config-install-interwiki-exists": "'''Advertencia''': La tabla de interwikis parece ya contener entradas.\nSe omitirá la lista predeterminada.",
+       "config-install-interwiki-list": "No se pudo leer el archivo <code>interwiki.list</code>.",
+       "config-install-interwiki-exists": "<strong>Advertencia:</strong> la tabla de interwikis parece ya contener entradas.\nSe omitirá la lista predeterminada.",
        "config-install-stats": "Iniciando las estadísticas",
        "config-install-keys": "Generando claves secretas",
-       "config-insecure-keys": "''' Atención:'' '  {{PLURAL:$2|Una clave de seguridad generada|Las claves de seguridad generadas}} ($1) durante la instalación no  {{PLURAL:$2|es totalmente segura|son totalmente seguras}}. Considere {{PLURAL:$2| cambiarla|cambiarlas}} manualmente.",
+       "config-insecure-keys": "<strong>Advertencia:</strong> {{PLURAL:$2|una clave de seguridad generada|las claves de seguridad generadas}} ($1) durante la instalación no  {{PLURAL:$2|es totalmente segura|son totalmente seguras}}. Considera {{PLURAL:$2| cambiarla|cambiarlas}} manualmente.",
        "config-install-updates": "Evitar ejecutar actualizaciones innecesarias",
        "config-install-updates-failed": "<strong>Error:</strong> falló la inserción de claves de actualización en las tablas con el siguiente error: $1",
        "config-install-sysop": "Creando la cuenta de usuario del administrador",
        "config-install-extension-tables": "Creando las tablas para las extensiones habilitadas",
        "config-install-mainpage-failed": "No se pudo insertar la página principal: $1",
        "config-install-done": "<strong>¡Felicidades!</strong>\nHas instalado MediaWiki correctamente.\n\nEl instalador ha generado un  archivo <code>LocalSettings.php</code>.\nEste contiene toda su configuración.\n\nDeberás descargarlo y ponerlo en la base de la instalación de wiki (el mismo directorio que index.php). La descarga debería haber comenzado automáticamente.\n\nSi no comenzó la descarga, o si se ha cancelado, puedes reiniciar la descarga haciendo clic en el siguiente enlace:\n\n$3\n\n<strong>Nota</strong>: Si no haces esto ahora, este archivo de configuración generado no estará disponible más tarde si sales de la instalación sin descargarlo.\n\nCuando lo hayas hecho, podrás <strong>[$2  entrar en tu wiki]</strong>.",
-       "config-download-localsettings": "Descargar archivo <code>LocalSettings.php</code>",
+       "config-download-localsettings": "Descargar <code>LocalSettings.php</code>",
        "config-help": "ayuda",
        "config-help-tooltip": "haz clic para ampliar",
        "config-nofile": "El archivo \"$1\" no se pudo encontrar. ¿Se ha eliminado?",
index cef7efe..69da6d3 100644 (file)
@@ -52,7 +52,7 @@
        "config-env-good": "환경이 확인되었습니다.\n미디어위키를 설치할 수 있습니다.",
        "config-env-bad": "환경이 확인되었습니다.\n미디어위키를 설치할 수 없습니다.",
        "config-env-php": "PHP $1이(가) 설치되어 있습니다.",
-       "config-env-hhvm": "HHMV $1이(가) 설치되어 있습니다.",
+       "config-env-hhvm": "HHVM $1이(가) 설치되어 있습니다.",
        "config-unicode-using-intl": "유니코드 정규화에 [http://pecl.php.net/intl intl PECL 확장 기능]을 사용합니다.",
        "config-unicode-pure-php-warning": "<strong>경고:</strong> 유니코드 정규화를 처리할 [http://pecl.php.net/intl intl PECL 확장 기능]을 사용할 수 없기 때문에 느린 pure-PHP 구현을 대신 사용합니다.\n트래픽이 높은 사이트에서 실행하시려면 [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations 유니코드 정규화]를 읽어보셔야 합니다.",
        "config-unicode-update-warning": "<strong>경고:</strong> 유니코드 정규화 래퍼의 설치된 버전은 [http://site.icu-project.org/ ICU 프로젝트]의 라이브러리의 이전 버전을 사용합니다.\n만약 유니코드를 사용하는 것에 대해 우려가 된다면 [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations 업그레이드]해야합니다.",
index 03ef46d..b998e34 100644 (file)
        "config-profile-no-anon": "Schriever möße enlogge",
        "config-profile-fishbowl": "Bloß ußdröcklesch zohjelohße Schriever",
        "config-profile-private": "E jeschloße Privat_Wiki",
-       "config-profile-help": "Wikis loufe et bäß, wam_mer esu vill Lück wi möjjelesch draan metmaache un schrieve löht.\nMet MediaWiki es et ejfach, de neuste Änderonge ze beloore un wat ahnungslose udder fiese Lück kapott jemaat han wider retuur ze maache.\n\nBloß, mänsch eine häd_eruß jefonge, dat mer MediaWiki jood en en jruuße Zahl ongerscheidlijje Rolle bruche kann, un nit emmer es et leisch, ene vum onverfälschte Wiki_Wääsch ze övverzeuje.\nEsu häß De de Wahl:\n\n'''{{int:config-profile-wiki}}''' löht jeder_ein metschrieve, och ohne sesch enzelogge.\n\n'''{{int:config-profile-no-anon}}''', dat sorsch för mieh seeschbaa Verantwootlischkeite, künnt ävver zohfällije Methellefer verschrecke.\n\n'''{{int:config-profile-fishbowl}}''' löht nor de ußjesöhk Metmaacher schrieve, ävver de janze Öffentleshkeit kann et lässe un süht och de ällder Versione, un wat wää wann draan jedonn hät.\n\n'''{{int:config-profile-private}}''' kann nur lässe, wäh en et Wiki zohjelohße es, un desellve Jropp kann uch schrieve.\n\nNoch ander un un opwändijere Enschtellunge för de Rääschte sin möjjelesch, wann et Wiki ens aam Loufe es. Loor Der doför de [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights zopaß Hölp em Handbooch] aan.",
+       "config-profile-help": "Wikkis loufe et bäß, wam_mer esu vill Lück wi möjjelesch draan metmaache un schrieve löht.\nMet MehdijaWikki es et ejfach, de neuste Änderonge ze beloore un wat ahnungslose udder fiese Lück kapott jemaat han wider retuur ze maache.\n\nBloß, mänsch eine häd_eruß jefonge, dat mer MediaWiki jood en en jruuße Zahl ongerscheidlijje Rolle bruche kann, un nit emmer es et leisch, ene vum onverfälschte Wiki_Wääsch ze övverzeuje.\nEsu häß De de Wahl:\n\n'''{{int:config-profile-wiki}}''' löht jeder_ein metschrihve, och ohne sesch enzelogge.\n\n'''{{int:config-profile-no-anon}}''', dat sorsch för mieh seeschbaa Verantwootlischkeite, künnt ävver zohfällije Methellefer verschrecke.\n\n'''{{int:config-profile-fishbowl}}''' löht nor de ußjesöhk Metmaacher schrieve, ävver de janze Öffentleshkeit kann et lässe un süht och de ällder Versione, un wat wää wann draan jedonn hät.\n\n'''{{int:config-profile-private}}''' kann nur lässe, wäh en et Wikki zohjelohße es, un desellve Jropp kann och schrieve.\n\nNoch ander un un opwändijere Enschtällonge för de Rääschte sin müjjelesch, wann et Wikki ens aam Loufe es. Loor Der doför de [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights zopaß Hölp em Handbooch] aan.",
        "config-license": "Urhävverrääsch un Lizänz:",
        "config-license-none": "Kein Fooßreih övver de Lizänz",
        "config-license-cc-by-sa": "<i lang=\"en\">Creative Commons</i> Der Name moß jenannt sin, et Wiggerjävve es zohjelohße onger dersellve Bedengunge",
        "config-license-help": "Ättlijje öffentleje Wikis donn iehr Beidrääsch onger en [http://freedomdefined.org/Definition freije Lizänz] schtelle.\nDat hellef, e Jeföhl vun Jemeinsamkeid opzeboue, un op lange Seesch emmer wider Beidrääsch ze krijje.\nDat es nit onbedengk nüüdesh för e Jeschäffs- udder Privaat_Wiki.\n\nWä Stöcke uß de Wikipedia bruche well, un dröm han well, dat mer för Wikipedia uss_em eije Wiki jät övvernämme kann, sullt „'''<i lang=\"en\">Creative Commons</i>, dem Schriever singe Name moß jenannt wääde, un Wiggerjävve zoh dersellve Bedengunge es zohjelohße'''“ ußwähle.\n\nDe su jenannte '''<i lang=\"en\">GNU Free Documentation License</i>''' (de freije Lizänz för Dokemäntazjuhne vun dä GNU) sen de ahle Lizänzbedenonge vun de Wikipedia. Se es emmer noch in Odenong un jöltesch, ävver se es schwer ze verschtonn un et Wiggerjävve un widder Bruche es ens schwieerejer domet.",
        "config-email-settings": "Enschtellunge för de <i lang=\"en\">e-mail</i>",
        "config-enable-email": "De <i lang=\"en\">e-mail</i> noh druße zohlohße",
-       "config-enable-email-help": "Sulle <i lang=\"en\">e-mails</i> zohjelohße sin, moß mer, domet et noher flupp, de [http://www.php.net/manual/en/mail.configuration.php Enschtellunge em PHP för de <i lang=\"en\">e-mails</i>] zopaß jemaat han.\nWann kein <i lang=\"en\">e-mails</i> nüüdesch sin, kam_mer se heh afschallde.",
+       "config-enable-email-help": "Sulle \n<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mails</i> zohjelohße sin, moß mer, domet et noher flupp, dä Datteij <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">[http://www.php.net/manual/en/mail.configuration.php</code> Enschtällonge em PHP för de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>] zopaß jemaat han.\nWann kein <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mails</i> nüüdesch sin, kam_mer se heh afschallde.",
        "config-email-user": "<i lang=\"en\">e-mails</i> zwesche de Metmaacher zohlohße",
-       "config-email-user-help": "Määt et müjjelesch, dat sesch de Metmaacher jääjesiggesch <i lang=\"en\">e-mails</i> schecke künne, wann se dat en iehre eije Enschtellunge och enjeschalldt han.",
+       "config-email-user-help": "Määt et müjjelesch, dat sesch de Metmaacher jääjesiggesch \n<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mails</i> scheke künne, wann se dat en iehre eije Enschtällonge och enjeschalldt han.",
        "config-email-usertalk": "<i lang=\"en\">e-mails</i> mem Bescheid zohlohße, dat einem sing Klaafsigg verändert woodt",
        "config-email-usertalk-help": "Maach et müjjelesch, dat Metmaaacher en iere Enschtällonge <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mails</i>mem Bescheid zohlohße, dat einem sing Klaafsigg veränndert woodt.",
        "config-email-watchlist": "Nohreeschte övver Änderonge aan Sigg op de Opaßleßte zohlohße",
index 6a17762..69bbc83 100644 (file)
        "config-header-mssql": "Microsoft SQL servera iestatījumi",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
+       "config-admin-name": "Tavs lietotājvārds:",
        "config-admin-password": "Parole:",
        "config-admin-password-confirm": "Parole vēlreiz:",
+       "config-admin-name-blank": "Ievadiet administratora lietotājvārdu.",
        "config-admin-email": "E-pasta adrese:",
        "config-cc-again": "Izvēlies vēlreiz...",
        "config-install-step-done": "Gatavs",
index da15667..f94b70a 100644 (file)
@@ -60,7 +60,7 @@
        "config-magic-quotes-sybase": "<strong>Fatale: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] è attivo!'</strong>\nSt'opzione scassa 'e date 'e na manera scanusciuta.\nNun se può installà o ausà MediaWiki si nun se stuta st'opzione.",
        "config-mbstring": "<strong>Fatale: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] è attivo!'</strong>\nSt'opzione scassa 'e date 'e na manera scanusciuta.\nNun se può installà o ausà MediaWiki si nun se stuta st'opzione.",
        "config-safe-mode": "<strong>Warning:</strong> PHP's [http://www.php.net/features.safe-mode safe mode] è attivato.\nPutesse fà cocche probblema, specialmente si state ausanno 'a funziona 'e carrecà file e 'o supporto d' ' e funziune <code>math</code>.",
-       "config-xml-bad": "'O modulo XML 'e PHP è mancante.\nA MediaWiki servessero 'e funziune prisente dint'a stu modulo e nun faticarrà c' 'a configurazione 'e mò.\nSi se sta eseguenno Mandrake, installare 'o pacco php-xml.",
+       "config-xml-bad": "'O modulo XML 'e PHP è mancante.\nA MediaWiki servessero 'e funziune prisente dint'a stu modulo e nun faticarrà c' 'a configurazione 'e mò.\nSi se sta eseguenno Mandrake, installare 'o pacco php-xml RPM.",
        "config-pcre-old": "<strong>Errore fatale:</strong> s'addimanna PCRE  $1 o succiessivo.\n'O file vuosto binario PHP è acucchiato c' 'o PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Cchiù nfurmaziune].",
        "config-pcre-no-utf8": "<strong>Fatale:</strong> 'E module PCRE d' 'o PHP pare ca se so' compilate senza PCRE_UTF8 supporto.\nA MediaWiki serve nu supporto UTF-8 pe' putè funziunà apposto.",
        "config-memory-raised": "'O valore 'e PHP <code>memory_limit</code> è $1, aumentato a $2.",
index 6615026..6a1d4a4 100644 (file)
@@ -18,7 +18,8 @@
                        "Alan ffm",
                        "Matik7",
                        "Pio387",
-                       "Darellur"
+                       "Darellur",
+                       "The Polish"
                ]
        },
        "config-desc": "Instalator MediaWiki",
        "config-install-keys": "Generowanie tajnych kluczy",
        "config-insecure-keys": "'''Ostrzeżenie:''' {{PLURAL:$2|Klucz bezpieczeństwa|Klucze bezpieczeństwa|Klucze bezpieczeństwa}} ($1) utworzone podczas instalacji {{PLURAL:$2|utworzony podczas instalacji nie jest|utworzone podczas instalacji nie są|utworzone podczas instalacji nie są}} w pełni bezpieczne. Być może warto wygenerować {{PLURAL:$2|własny klucz|własne klucze|własne klucze}}.",
        "config-install-updates": "Zapobieganie uruchamianiu niepotrzebnych aktualizacji",
+       "config-install-updates-failed": "<strong>Błąd:</strong> Wstawianie kluczy aktualizacji d0 tabeli nie powiodło się z powodu następującego błędu: $1",
        "config-install-sysop": "Tworzenie konta administratora",
        "config-install-subscribe-fail": "Nie można zapisać na listę „mediawiki-announce” – $1",
        "config-install-subscribe-notpossible": "cURL nie jest zainstalowany, więc <code>allow_url_fopen</code> nie jest dostępne.",
index fcade71..e0c78b7 100644 (file)
@@ -5,7 +5,8 @@
                        "Minisarm",
                        "Stelistcristi",
                        "XXN",
-                       "Tuxilina"
+                       "Tuxilina",
+                       "Strainu"
                ]
        },
        "config-desc": "Programul de instalare pentru MediaWiki",
        "config-help-restart": "Doriți să ștergeți toate datele salvate introduse și să reporniți procesul de instalare?",
        "config-restart": "Da, repornește.",
        "config-env-good": "Verificarea mediului a fost efectuată cu succes.\nPuteți instala MediaWiki.",
+       "config-env-bad": "Verificarea mediului a fost efectuată.\nNu puteți instala MediaWiki.",
        "config-env-php": "PHP $1 este instalat.",
        "config-env-hhvm": "HHVM $1 este instalat.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] este instalat",
        "config-apc": "[http://www.php.net/apc APC] este instalat",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] este instalat",
+       "config-diff3-bad": "GNU diff3 nu a fost găsit.",
+       "config-no-uri": "<strong>Eroare:</strong> Nu pot determina URI-ul curent.\nInstalare întreruptă.",
        "config-db-type": "Tipul bazei de date:",
        "config-db-host": "Gazdă bază de date:",
        "config-db-host-oracle": "Baza de date TNS:",
        "config-db-wiki-settings": "Identificați acest wiki",
        "config-db-name": "Numele bazei de date:",
        "config-db-name-oracle": "Schema bazei de date:",
+       "config-db-install-account": "Contul de utilizator pentru instalare",
        "config-db-username": "Nume de utilizator pentru baza de date:",
        "config-db-password": "Parola bazei de date:",
+       "config-db-install-username": "Introduceți numele de utilizator care va fi utilizat pentru conexiunea la baza de date în timpul procesului de instalare.\nNu este numele de utilizator al contului MediaWiki; este numele de utilizator al bazei dumneavoastră de date.",
+       "config-db-install-password": "Introduceți parola care va fi utilizată pentru conexiunea la baza de date în timpul procesului de instalare.\nNu este parola contului MediaWiki; este parola bazei dumneavoastră de date.",
+       "config-db-install-help": "Introduceți numele de utilizator și parola care vor fi utilizate pentru conexiunea la baza de date în timpul procesului de instalare.",
+       "config-db-account-lock": "Folosește același nume de utilizator și parolă în timpul funcționării normale",
+       "config-db-wiki-account": "Contul de utilizator pentru funcționarea normală",
        "config-db-prefix": "Prefixul tabelelor din baza de date:",
        "config-db-charset": "Setul de caractere al bazei de date",
        "config-charset-mysql5-binary": "MySQL 4.1/5.0 binar",
@@ -65,6 +75,8 @@
        "config-sqlite-dir": "Director de date SQLite:",
        "config-oracle-def-ts": "Spațiu de stocare („tablespace”) implicit:",
        "config-oracle-temp-ts": "Spațiu de stocare („tablespace”) temporar:",
+       "config-type-mysql": "MySQL (sau compatibil)",
+       "config-type-mssql": "Microsoft SQL Server",
        "config-header-mysql": "Setările MySQL",
        "config-header-postgres": "Setări PostgreSQL",
        "config-header-sqlite": "Setări SQLite",
index 1b1a193..29c8068 100644 (file)
@@ -613,6 +613,8 @@ LUA;
                        $job = Job::factory( $item['type'], $title, $item['params'] );
                        $job->metadata['uuid'] = $item['uuid'];
                        $job->metadata['timestamp'] = $item['timestamp'];
+                       // Add in attempt count for debugging at showJobs.php
+                       $job->metadata['attempts'] = $conn->hGet( $this->getQueueKey( 'h-attempts' ), $uid );
 
                        return $job;
                } catch ( RedisException $e ) {
index 2465e5a..700a63d 100644 (file)
@@ -109,10 +109,8 @@ class JobRunner implements LoggerAwareInterface {
                        return $response;
                }
 
-               $profiler = Profiler::instance();
-
                // Catch huge single updates that lead to slave lag
-               $trxProfiler = $profiler->getTransactionProfiler();
+               $trxProfiler = Profiler::instance()->getTransactionProfiler();
                $trxProfiler->setLogger( LoggerFactory::getInstance( 'DBPerformance' ) );
                $trxProfiler->setExpectations( $wgTrxProfilerLimits['JobRunner'], __METHOD__ );
 
@@ -176,7 +174,6 @@ class JobRunner implements LoggerAwareInterface {
                                $this->debugCallback( $msg );
 
                                // Run the job...
-                               $psection = $profiler->scopedProfileIn( __METHOD__ . '-' . $jType );
                                $jobStartTime = microtime( true );
                                try {
                                        ++$jobsPopped;
@@ -197,15 +194,15 @@ class JobRunner implements LoggerAwareInterface {
                                wfGetLBFactory()->commitAll();
                                $timeMs = intval( ( microtime( true ) - $jobStartTime ) * 1000 );
                                $timeMsTotal += $timeMs;
-                               $profiler->scopedProfileOut( $psection );
 
                                $readyTs = $job->getReadyTimestamp();
                                if ( $readyTs ) {
                                        // Record time to run for the job type
                                        $pickupDelay = $popTime - $readyTs;
-                                       $stats->timing( 'jobqueue.pickup_delay.all', $pickupDelay );
-                                       $stats->timing( "jobqueue.pickup_delay.$jType", $pickupDelay );
+                                       $stats->timing( 'jobqueue.pickup_delay.all', 1000 * $pickupDelay );
+                                       $stats->timing( "jobqueue.pickup_delay.$jType", 1000 * $pickupDelay );
                                }
+                               $stats->timing( "jobqueue.run.$jType", $timeMs );
 
                                // Mark the job as done on success or when the job cannot be retried
                                if ( $status !== false || !$job->allowRetries() ) {
index c66da41..dec944a 100644 (file)
@@ -83,7 +83,6 @@ class RefreshLinksJob extends Job {
                        } else {
                                $extraParams['masterPos'] = false;
                        }
-                       $extraParams['triggeredRecursive'] = true;
                        // Convert this into no more than $wgUpdateRowsPerJob RefreshLinks per-title
                        // jobs and possibly a recursive RefreshLinks job for the rest of the backlinks
                        $jobs = BacklinkJobUtils::partitionBacklinkJob(
@@ -197,12 +196,6 @@ class RefreshLinksJob extends Job {
                }
 
                $updates = $content->getSecondaryDataUpdates( $title, null, false, $parserOutput );
-               foreach ( $updates as $key => $update ) {
-                       if ( $update instanceof LinksUpdate && isset( $this->params['triggeredRecursive'] ) ) {
-                               $update->setTriggeredRecursive();
-                       }
-               }
-
                DataUpdate::runUpdates( $updates );
 
                InfoAction::invalidateCache( $title );
index a15d51e..ade4810 100644 (file)
@@ -166,11 +166,11 @@ class UploadFromUrlJob extends Job {
        }
 
        /**
-        * Initialize the session data. Sets the intial result to queued.
+        * Initialize the session data. Sets the initial result to queued.
         */
        public function initializeSessionData() {
                $session =& self::getSessionData( $this->params['sessionKey'] );
-               $$session['result'] = 'Queued';
+               $session['result'] = 'Queued';
        }
 
        /**
index b386a92..2c90431 100644 (file)
@@ -399,7 +399,7 @@ class CSSMin {
 
                if ( $local === false ) {
                        // Assume that all paths are relative to $remote, and make them absolute
-                       return $remote . '/' . $url;
+                       $url = $remote . '/' . $url;
                } else {
                        // We drop the query part here and instead make the path relative to $remote
                        $url = "{$remote}/{$file}";
@@ -418,8 +418,11 @@ class CSSMin {
                        }
                        // If any of these conditions failed (file missing, we don't want to embed it
                        // or it's not embeddable), return the URL (possibly with ?timestamp part)
-                       return $url;
                }
+               if ( function_exists( 'wfRemoveDotSegments' ) ) {
+                       $url = wfRemoveDotSegments( $url );
+               }
+               return $url;
        }
 
        /**
index 2022b22..e7a1099 100644 (file)
@@ -223,8 +223,8 @@ class HashRing {
         * @return array List of locations
         * @throws UnexpectedValueException
         */
-       public function getLiveLocations( $item ) {
-               return $this->getLiveRing()->getLocations( $item );
+       public function getLiveLocations( $item, $limit ) {
+               return $this->getLiveRing()->getLocations( $item, $limit );
        }
 
        /**
diff --git a/includes/libs/IPSet.php b/includes/libs/IPSet.php
deleted file mode 100644 (file)
index c1c841e..0000000
+++ /dev/null
@@ -1,276 +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 Brandon Black <blblack@gmail.com>
- */
-
-/**
- * Matches IP addresses against a set of CIDR specifications
- *
- * Usage:
- *   // At startup, calculate the optimized data structure for the set:
- *   $ipset = new IPSet( $wgSquidServersNoPurge );
- *   // runtime check against cached set (returns bool):
- *   $allowme = $ipset->match( $ip );
- *
- * In rough benchmarking, this takes about 80% more time than
- * in_array() checks on a short (a couple hundred at most) array
- * of addresses.  It's fast either way at those levels, though,
- * and IPSet would scale better than in_array if the array were
- * much larger.
- *
- * For mixed-family CIDR sets, however, this code gives well over
- * 100x speedup vs iterating IP::isInRange() over an array
- * of CIDR specs.
- *
- * The basic implementation is two separate binary trees
- * (IPv4 and IPv6) as nested php arrays with keys named 0 and 1.
- * The values false and true are terminal match-fail and match-success,
- * otherwise the value is a deeper node in the tree.
- *
- * A simple depth-compression scheme is also implemented: whole-byte
- * tree compression at whole-byte boundaries only, where no branching
- * occurs during that whole byte of depth.  A compressed node has
- * keys 'comp' (the byte to compare) and 'next' (the next node to
- * recurse into if 'comp' matched successfully).
- *
- * For example, given these inputs:
- * 25.0.0.0/9
- * 25.192.0.0/10
- *
- * The v4 tree would look like:
- * root4 => array(
- *     'comp' => 25,
- *     'next' => array(
- *         0 => true,
- *         1 => array(
- *             0 => false,
- *             1 => true,
- *         ),
- *     ),
- * );
- *
- * (multi-byte compression nodes were attempted as well, but were
- * a net loss in my test scenarios due to additional match complexity)
- *
- * @since 1.24
- */
-class IPSet {
-       /** @var array $root4: the root of the IPv4 matching tree */
-       private $root4 = array( false, false );
-
-       /** @var array $root6: the root of the IPv6 matching tree */
-       private $root6 = array( false, false );
-
-       /**
-        * __construct() instantiate the object from an array of CIDR specs
-        *
-        * @param array $cfg array of IPv[46] CIDR specs as strings
-        * @return IPSet new IPSet object
-        *
-        * Invalid input network/mask values in $cfg will result in issuing
-        * E_WARNING and/or E_USER_WARNING and the bad values being ignored.
-        */
-       public function __construct( array $cfg ) {
-               foreach ( $cfg as $cidr ) {
-                       $this->addCidr( $cidr );
-               }
-
-               self::recOptimize( $this->root4 );
-               self::recCompress( $this->root4, 0, 24 );
-               self::recOptimize( $this->root6 );
-               self::recCompress( $this->root6, 0, 120 );
-       }
-
-       /**
-        * Add a single CIDR spec to the internal matching trees
-        *
-        * @param string $cidr string CIDR spec, IPv[46], optional /mask (def all-1's)
-        */
-       private function addCidr( $cidr ) {
-               // v4 or v6 check
-               if ( strpos( $cidr, ':' ) === false ) {
-                       $node =& $this->root4;
-                       $defMask = '32';
-               } else {
-                       $node =& $this->root6;
-                       $defMask = '128';
-               }
-
-               // Default to all-1's mask if no netmask in the input
-               if ( strpos( $cidr, '/' ) === false ) {
-                       $net = $cidr;
-                       $mask = $defMask;
-               } else {
-                       list( $net, $mask ) = explode( '/', $cidr, 2 );
-                       if ( !ctype_digit( $mask ) || intval( $mask ) > $defMask ) {
-                               trigger_error( "IPSet: Bad mask '$mask' from '$cidr', ignored", E_USER_WARNING );
-                               return;
-                       }
-               }
-               $mask = intval( $mask ); // explicit integer convert, checked above
-
-               // convert $net to an array of integer bytes, length 4 or 16:
-               $raw = inet_pton( $net );
-               if ( $raw === false ) {
-                       return; // inet_pton() sends an E_WARNING for us
-               }
-               $rawOrd = array_map( 'ord', str_split( $raw ) );
-
-               // special-case: zero mask overwrites the whole tree with a pair of terminal successes
-               if ( $mask == 0 ) {
-                       $node = array( true, true );
-                       return;
-               }
-
-               // iterate the bits of the address while walking the tree structure for inserts
-               $curBit = 0;
-               while ( 1 ) {
-                       $maskShift = 7 - ( $curBit & 7 );
-                       $node =& $node[( $rawOrd[$curBit >> 3] & ( 1 << $maskShift ) ) >> $maskShift];
-                       ++$curBit;
-                       if ( $node === true ) {
-                               // already added a larger supernet, no need to go deeper
-                               return;
-                       } elseif ( $curBit == $mask ) {
-                               // this may wipe out deeper subnets from earlier
-                               $node = true;
-                               return;
-                       } elseif ( $node === false ) {
-                               // create new subarray to go deeper
-                               $node = array( false, false );
-                       }
-               }
-       }
-
-       /**
-        * Match an IP address against the set
-        *
-        * @param string $ip string IPv[46] address
-        * @return bool true is match success, false is match failure
-        *
-        * If $ip is unparseable, inet_pton may issue an E_WARNING to that effect
-        */
-       public function match( $ip ) {
-               $raw = inet_pton( $ip );
-               if ( $raw === false ) {
-                       return false; // inet_pton() sends an E_WARNING for us
-               }
-
-               $rawOrd = array_map( 'ord', str_split( $raw ) );
-               if ( count( $rawOrd ) == 4 ) {
-                       $node =& $this->root4;
-               } else {
-                       $node =& $this->root6;
-               }
-
-               $curBit = 0;
-               while ( 1 ) {
-                       if ( isset( $node['comp'] ) ) {
-                               // compressed node, matches 1 whole byte on a byte boundary
-                               if ( $rawOrd[$curBit >> 3] != $node['comp'] ) {
-                                       return false;
-                               }
-                               $curBit += 8;
-                               $node =& $node['next'];
-                       } else {
-                               // uncompressed node, walk in the correct direction for the current bit-value
-                               $maskShift = 7 - ( $curBit & 7 );
-                               $node =& $node[( $rawOrd[$curBit >> 3] & ( 1 << $maskShift ) ) >> $maskShift];
-                               ++$curBit;
-                       }
-
-                       if ( $node === true || $node === false ) {
-                               return $node;
-                       }
-               }
-       }
-
-       /**
-        * Recursively merges adjacent nets into larger supernets
-        *
-        * @param array &$node Tree node to optimize, by-reference
-        *
-        *  e.g.: 8.0.0.0/8 + 9.0.0.0/8 -> 8.0.0.0/7
-        */
-       private static function recOptimize( &$node ) {
-               if ( $node[0] !== false && $node[0] !== true && self::recOptimize( $node[0] ) ) {
-                       $node[0] = true;
-               }
-               if ( $node[1] !== false && $node[1] !== true && self::recOptimize( $node[1] ) ) {
-                       $node[1] = true;
-               }
-               if ( $node[0] === true && $node[1] === true ) {
-                       return true;
-               }
-               return false;
-       }
-
-       /**
-        * Recursively compresses a tree
-        *
-        * @param array &$node Tree node to compress, by-reference
-        * @param integer $curBit current depth in the tree
-        * @param integer $maxCompStart maximum depth at which compression can start, family-specific
-        *
-        * This is a very simplistic compression scheme: if we go through a whole
-        * byte of address starting at a byte boundary with no real branching
-        * other than immediate false-vs-(node|true), compress that subtree down to a single
-        * byte-matching node.
-        * The $maxCompStart check elides recursing the final 7 levels of depth (family-dependent)
-        */
-       private static function recCompress( &$node, $curBit, $maxCompStart ) {
-               if ( !( $curBit & 7 ) ) { // byte boundary, check for depth-8 single path(s)
-                       $byte = 0;
-                       $cnode =& $node;
-                       $i = 8;
-                       while ( $i-- ) {
-                               if ( $cnode[0] === false ) {
-                                       $byte |= 1 << $i;
-                                       $cnode =& $cnode[1];
-                               } elseif ( $cnode[1] === false ) {
-                                       $cnode =& $cnode[0];
-                               } else {
-                                       // partial-byte branching, give up
-                                       break;
-                               }
-                       }
-                       if ( $i == -1 ) { // means we did not exit the while() via break
-                               $node = array(
-                                       'comp' => $byte,
-                                       'next' => &$cnode,
-                               );
-                               $curBit += 8;
-                               if ( $cnode !== true ) {
-                                       self::recCompress( $cnode, $curBit, $maxCompStart );
-                               }
-                               return;
-                       }
-               }
-
-               ++$curBit;
-               if ( $curBit <= $maxCompStart ) {
-                       if ( $node[0] !== false && $node[0] !== true ) {
-                               self::recCompress( $node[0], $curBit, $maxCompStart );
-                       }
-                       if ( $node[1] !== false && $node[1] !== true ) {
-                               self::recCompress( $node[1], $curBit, $maxCompStart );
-                       }
-               }
-       }
-}
index 1e929e6..ddbe8ea 100644 (file)
@@ -43,16 +43,17 @@ use Psr\Log\NullLogger;
  * @ingroup Cache
  */
 abstract class BagOStuff implements LoggerAwareInterface {
-       private $debugMode = false;
-
+       /** @var array[] Lock tracking */
+       protected $locks = array();
        /** @var integer */
        protected $lastError = self::ERR_NONE;
 
-       /**
-        * @var LoggerInterface
-        */
+       /** @var LoggerInterface */
        protected $logger;
 
+       /** @var bool */
+       private $debugMode = false;
+
        /** Possible values for getLastError() */
        const ERR_NONE = 0; // no error
        const ERR_NO_RESPONSE = 1; // no response
@@ -200,10 +201,11 @@ abstract class BagOStuff implements LoggerAwareInterface {
 
                $this->clearLastError();
                $currentValue = $this->get( $key );
-               if ( !$this->getLastError() ) {
+               if ( $this->getLastError() ) {
+                       $success = false;
+               } else {
                        // Derive the new value from the old value
                        $value = call_user_func( $callback, $this, $key, $currentValue );
-
                        if ( $value === false ) {
                                $success = true; // do nothing
                        } else {
@@ -220,49 +222,77 @@ abstract class BagOStuff implements LoggerAwareInterface {
        }
 
        /**
+        * Acquire an advisory lock on a key string
+        *
+        * Note that if reentry is enabled, duplicate calls ignore $expiry
+        *
         * @param string $key
         * @param int $timeout Lock wait timeout; 0 for non-blocking [optional]
         * @param int $expiry Lock expiry [optional]; 1 day maximum
+        * @param string $rclass Allow reentry if set and the current lock used this value
         * @return bool Success
         */
-       public function lock( $key, $timeout = 6, $expiry = 6 ) {
+       public function lock( $key, $timeout = 6, $expiry = 6, $rclass = '' ) {
+               // Avoid deadlocks and allow lock reentry if specified
+               if ( isset( $this->locks[$key] ) ) {
+                       if ( $rclass != '' && $this->locks[$key]['class'] === $rclass ) {
+                               ++$this->locks[$key]['depth'];
+                               return true;
+                       } else {
+                               return false;
+                       }
+               }
+
                $expiry = min( $expiry ?: INF, 86400 );
 
                $this->clearLastError();
                $timestamp = microtime( true ); // starting UNIX timestamp
                if ( $this->add( "{$key}:lock", 1, $expiry ) ) {
-                       return true;
+                       $locked = true;
                } elseif ( $this->getLastError() || $timeout <= 0 ) {
-                       return false; // network partition or non-blocking
+                       $locked = false; // network partition or non-blocking
+               } else {
+                       $uRTT = ceil( 1e6 * ( microtime( true ) - $timestamp ) ); // estimate RTT (us)
+                       $sleep = 2 * $uRTT; // rough time to do get()+set()
+
+                       $attempts = 0; // failed attempts
+                       do {
+                               if ( ++$attempts >= 3 && $sleep <= 5e5 ) {
+                                       // Exponentially back off after failed attempts to avoid network spam.
+                                       // About 2*$uRTT*(2^n-1) us of "sleep" happen for the next n attempts.
+                                       $sleep *= 2;
+                               }
+                               usleep( $sleep ); // back off
+                               $this->clearLastError();
+                               $locked = $this->add( "{$key}:lock", 1, $expiry );
+                               if ( $this->getLastError() ) {
+                                       $locked = false; // network partition
+                                       break;
+                               }
+                       } while ( !$locked && ( microtime( true ) - $timestamp ) < $timeout );
                }
 
-               $uRTT = ceil( 1e6 * ( microtime( true ) - $timestamp ) ); // estimate RTT (us)
-               $sleep = 2 * $uRTT; // rough time to do get()+set()
-
-               $attempts = 0; // failed attempts
-               do {
-                       if ( ++$attempts >= 3 && $sleep <= 5e5 ) {
-                               // Exponentially back off after failed attempts to avoid network spam.
-                               // About 2*$uRTT*(2^n-1) us of "sleep" happen for the next n attempts.
-                               $sleep *= 2;
-                       }
-                       usleep( $sleep ); // back off
-                       $this->clearLastError();
-                       $locked = $this->add( "{$key}:lock", 1, $expiry );
-                       if ( $this->getLastError() ) {
-                               return false; // network partition
-                       }
-               } while ( !$locked && ( microtime( true ) - $timestamp ) < $timeout );
+               if ( $locked ) {
+                       $this->locks[$key] = array( 'class' => $rclass, 'depth' => 1 );
+               }
 
                return $locked;
        }
 
        /**
+        * Release an advisory lock on a key string
+        *
         * @param string $key
         * @return bool Success
         */
        public function unlock( $key ) {
-               return $this->delete( "{$key}:lock" );
+               if ( isset( $this->locks[$key] ) && --$this->locks[$key]['depth'] <= 0 ) {
+                       unset( $this->locks[$key] );
+
+                       return $this->delete( "{$key}:lock" );
+               }
+
+               return true;
        }
 
        /**
@@ -277,24 +307,27 @@ abstract class BagOStuff implements LoggerAwareInterface {
         * @param string $key
         * @param int $timeout Lock wait timeout; 0 for non-blocking [optional]
         * @param int $expiry Lock expiry [optional]; 1 day maximum
-        * @return ScopedLock|null Returns null on failure
+        * @param string $rclass Allow reentry if set and the current lock used this value
+        * @return ScopedCallback|null Returns null on failure
         * @since 1.26
         */
-       final public function getScopedLock( $key, $timeout = 6, $expiry = 30 ) {
+       final public function getScopedLock( $key, $timeout = 6, $expiry = 30, $rclass = '' ) {
                $expiry = min( $expiry ?: INF, 86400 );
 
-               if ( !$this->lock( $key, $timeout, $expiry ) ) {
+               if ( !$this->lock( $key, $timeout, $expiry, $rclass ) ) {
                        return null;
                }
 
                $lSince = microtime( true ); // lock timestamp
+               // PHP 5.3: Can't use $this in a closure
                $that = $this;
+               $logger = $this->logger;
 
-               return new ScopedCallback( function() use ( $that, $key, $lSince, $expiry ) {
+               return new ScopedCallback( function() use ( $that, $logger, $key, $lSince, $expiry ) {
                        $latency = .050; // latency skew (err towards keeping lock present)
                        $age = ( microtime( true ) - $lSince + $latency );
                        if ( ( $age + $latency ) >= $expiry ) {
-                               $this->logger->warning( "Lock for $key held too long ($age sec)." );
+                               $logger->warning( "Lock for $key held too long ($age sec)." );
                                return; // expired; it's not "safe" to delete the key
                        }
                        $that->unlock( $key );
index e03c83f..b685e41 100644 (file)
@@ -68,10 +68,6 @@ class HashBagOStuff extends BagOStuff {
        }
 
        function delete( $key ) {
-               if ( !isset( $this->bag[$key] ) ) {
-                       return false;
-               }
-
                unset( $this->bag[$key] );
 
                return true;
index 20e146d..9e80e9f 100644 (file)
@@ -104,8 +104,8 @@ class ReplicatedBagOStuff extends BagOStuff {
                return $this->writeStore->decr( $key, $value );
        }
 
-       public function lock( $key, $timeout = 6, $expiry = 6 ) {
-               return $this->writeStore->lock( $key, $timeout, $expiry );
+       public function lock( $key, $timeout = 6, $expiry = 6, $rclass = '' ) {
+               return $this->writeStore->lock( $key, $timeout, $expiry, $rclass );
        }
 
        public function unlock( $key ) {
index 62b9296..a3bd531 100644 (file)
@@ -258,7 +258,9 @@ class WANObjectCache {
         *
         * This instantiates a hold-off period where the key cannot be
         * written to avoid race conditions where dependent keys get updated
-        * with a stale value (e.g. from a DB slave).
+        * with a stale value (e.g. from a DB slave). This is implemented by
+        * storing a special "tombstone" value at the cache key that this
+        * class recognizes; get() calls will return false for the key.
         *
         * This should only be called when the underlying data (being cached)
         * changes in a significant way. If called twice on the same key, then
@@ -270,6 +272,8 @@ class WANObjectCache {
         */
        final public function delete( $key, $ttl = self::HOLDOFF_TTL ) {
                $key = self::VALUE_KEY_PREFIX . $key;
+               // Avoid indefinite key salting for sanity
+               $ttl = max( $ttl, 1 );
                // Update the local cluster immediately
                $ok = $this->cache->set( $key, self::PURGE_VAL_PREFIX . microtime( true ), $ttl );
                // Publish the purge to all clusters
@@ -615,7 +619,7 @@ class WANObjectCache {
         * moves from $lowTTL to 0 seconds. This handles widely varying
         * levels of cache access traffic.
         *
-        * @param float|INF $curTTL Approximate TTL left on the key if present
+        * @param float $curTTL Approximate TTL left on the key if present
         * @param float $lowTTL Consider a refresh when $curTTL is less than this
         * @return bool
         */
index 0145b02..f31a42a 100644 (file)
@@ -273,6 +273,10 @@ class LogFormatter {
                                                $text = wfMessage( 'modifiedarticleprotection' )
                                                        ->rawParams( $target . ' ' . $parameters[0] )->inContentLanguage()->escaped();
                                                break;
+                                       case 'move_prot':
+                                               $text = wfMessage( 'movedarticleprotection' )
+                                                       ->rawParams( $target, $parameters['4::oldtitle'] )->inContentLanguage()->escaped();
+                                               break;
                                }
                                break;
 
diff --git a/includes/logging/ProtectLogFormatter.php b/includes/logging/ProtectLogFormatter.php
new file mode 100644 (file)
index 0000000..5327e07
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Formatter for protect log entries.
+ *
+ * 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
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ * @since 1.26
+ */
+
+/**
+ * This class formats protect log entries.
+ *
+ * @since 1.26
+ */
+class ProtectLogFormatter extends LogFormatter {
+       public function getPreloadTitles() {
+               $subtype = $this->entry->getSubtype();
+               if ( $subtype === 'move_prot' ) {
+                       $params = $this->extractParameters();
+                       return array( Title::newFromText( $params[3] ) );
+               }
+               return array();
+       }
+
+       protected function getMessageParameters() {
+               $params = parent::getMessageParameters();
+
+               $subtype = $this->entry->getSubtype();
+               if ( $subtype === 'move_prot' ) {
+                       $oldname = $this->makePageLink( Title::newFromText( $params[3] ), array( 'redirect' => 'no' ) );
+                       $params[3] = Message::rawParam( $oldname );
+               }
+
+               return $params;
+       }
+
+       protected function getParametersForApi() {
+               $entry = $this->entry;
+               $params = $entry->getParameters();
+
+               static $map = array(
+                       // param keys for move_prot sub type
+                       '4:title:oldtitle',
+                       '4::oldtitle' => '4:title:oldtitle',
+               );
+               foreach ( $map as $index => $key ) {
+                       if ( isset( $params[$index] ) ) {
+                               $params[$key] = $params[$index];
+                               unset( $params[$index] );
+                       }
+               }
+
+               return $params;
+       }
+}
index 6c9972c..01b6afa 100644 (file)
  * Visit the documentation pages under http://meta.wikipedia.com/Enotif
  */
 class EmailNotification {
+
+       /**
+        * Notification is due to user's user talk being edited
+        */
+       const USER_TALK = 'user_talk';
+       /**
+        * Notification is due to a watchlisted page being edited
+        */
+       const WATCHLIST = 'watchlist';
+       /**
+        * Notification because user is notified for all changes
+        */
+       const ALL_CHANGES = 'all_changes';
+
        protected $subject, $body, $replyto, $from;
        protected $timestamp, $summary, $minorEdit, $oldid, $composed_common, $pageStatus;
        protected $mailTargets = array();
@@ -236,7 +250,7 @@ class EmailNotification {
                                && $this->canSendUserTalkEmail( $editor, $title, $minorEdit )
                        ) {
                                $targetUser = User::newFromName( $title->getText() );
-                               $this->compose( $targetUser );
+                               $this->compose( $targetUser, self::USER_TALK );
                                $userTalkId = $targetUser->getId();
                        }
 
@@ -252,7 +266,7 @@ class EmailNotification {
                                                && !( $wgBlockDisablesLogin && $watchingUser->isBlocked() )
                                        ) {
                                                if ( Hooks::run( 'SendWatchlistEmailNotification', array( $watchingUser, $title, $this ) ) ) {
-                                                       $this->compose( $watchingUser );
+                                                       $this->compose( $watchingUser, self::WATCHLIST );
                                                }
                                        }
                                }
@@ -266,7 +280,7 @@ class EmailNotification {
                                continue;
                        }
                        $user = User::newFromName( $name );
-                       $this->compose( $user );
+                       $this->compose( $user, self::ALL_CHANGES );
                }
 
                $this->sendMails();
@@ -427,8 +441,9 @@ class EmailNotification {
         *
         * Call sendMails() to send any mails that were queued.
         * @param User $user
+        * @param string $source
         */
-       function compose( $user ) {
+       function compose( $user, $source ) {
                global $wgEnotifImpersonal;
 
                if ( !$this->composed_common ) {
@@ -438,7 +453,7 @@ class EmailNotification {
                if ( $wgEnotifImpersonal ) {
                        $this->mailTargets[] = MailAddress::newFromUser( $user );
                } else {
-                       $this->sendPersonalised( $user );
+                       $this->sendPersonalised( $user, $source );
                }
        }
 
@@ -458,10 +473,11 @@ class EmailNotification {
         * Returns true if the mail was sent successfully.
         *
         * @param User $watchingUser
+        * @param string $source
         * @return bool
         * @private
         */
-       function sendPersonalised( $watchingUser ) {
+       function sendPersonalised( $watchingUser, $source ) {
                global $wgContLang, $wgEnotifUseRealName;
                // From the PHP manual:
                //   Note: The to parameter cannot be an address in the form of
@@ -482,8 +498,14 @@ class EmailNotification {
                                $wgContLang->userTime( $this->timestamp, $watchingUser ) ),
                        $this->body );
 
+               $headers = array();
+               if ( $source === self::WATCHLIST ) {
+                       $headers['List-Help'] = 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Watchlist';
+               }
+
                return UserMailer::send( $to, $this->from, $this->subject, $body, array(
                        'replyTo' => $this->replyto,
+                       'headers' => $headers,
                ) );
        }
 
index bf4b96b..7c5f18d 100644 (file)
@@ -105,6 +105,7 @@ class UserMailer {
         * @param array $options:
         *              'replyTo' MailAddress
         *              'contentType' string default 'text/plain; charset=UTF-8'
+        *              'headers' array Extra headers to set
         *
         * Previous versions of this function had $replyto as the 5th argument and $contentType
         * as the 6th. These are still supported for backwards compatability, but deprecated.
@@ -116,9 +117,11 @@ class UserMailer {
        public static function send( $to, $from, $subject, $body, $options = array() ) {
                global $wgSMTP, $wgEnotifMaxRecips, $wgAdditionalMailParams, $wgAllowHTMLEmail;
                $contentType = 'text/plain; charset=UTF-8';
+               $headers = array();
                if ( is_array( $options ) ) {
                        $replyto = isset( $options['replyTo'] ) ? $options['replyTo'] : null;
                        $contentType = isset( $options['contentType'] ) ? $options['contentType'] : $contentType;
+                       $headers = isset( $options['headers'] ) ? $options['headers'] : $headers;
                } else {
                        // Old calling style
                        wfDeprecated( __METHOD__ . ' with $replyto as 5th parameter', '1.26' );
index b5f3bd9..bbfaa5e 100644 (file)
@@ -121,12 +121,13 @@ class MultiWriteBagOStuff extends BagOStuff {
         * @param string $key
         * @param int $timeout
         * @param int $expiry
+        * @param string $rclass
         * @return bool
         */
-       public function lock( $key, $timeout = 6, $expiry = 6 ) {
+       public function lock( $key, $timeout = 6, $expiry = 6, $rclass = '' ) {
                // Lock only the first cache, to avoid deadlocks
                if ( isset( $this->caches[0] ) ) {
-                       return $this->caches[0]->lock( $key, $timeout, $expiry );
+                       return $this->caches[0]->lock( $key, $timeout, $expiry, $rclass );
                } else {
                        return true;
                }
index 8a99f53..069cd95 100644 (file)
@@ -28,15 +28,45 @@ use MediaWiki\Logger\LoggerFactory;
  *
  * The word "cache" has two main dictionary meanings, and both
  * are used in this factory class. They are:
- *   - a) A place to store copies or computations on existing data
- *        for higher access speeds (the computer science definition)
- *   - b) A place to store lightweight data that is not canonically
- *        stored anywhere else (e.g. a "hoard" of objects)
+ *
+ *   - a) Cache (the computer science definition).
+ *        A place to store copies or computations on existing data for
+ *        higher access speeds.
+ *   - b) Storage.
+ *        A place to store lightweight data that is not canonically
+ *        stored anywhere else (e.g. a "hoard" of objects).
  *
  * The former should always use strongly consistent stores, so callers don't
  * have to deal with stale reads. The later may be eventually consistent, but
  * callers can use BagOStuff:READ_LATEST to see the latest available data.
  *
+ * Primary entry points:
+ *
+ * - ObjectCache::newAccelerator( $fallbackType )
+ *   Purpose: Cache.
+ *   Stored only on the individual web server.
+ *   Not associated with other servers.
+ *
+ * - wfGetMainCache()
+ *   Purpose: Cache.
+ *   Stored centrally within the local data-center.
+ *   Not replicated to other DCs.
+ *   Also known as $wgMemc. Configured by $wgMainCacheType.
+ *
+ * - ObjectCache::getMainWANInstance()
+ *   Purpose: Cache.
+ *   Stored in the local data-center's main cache (uses different cache keys).
+ *   Delete events are broadcasted to other DCs. See WANObjectCache for details.
+ *
+ * - ObjectCache::getMainStashInstance()
+ *   Purpose: Storage.
+ *   Stored centrally within the local data-center.
+ *   Changes are replicated to other DCs (eventually consistent).
+ *   To retrieve the latest value (e.g. not from a slave), use BagOStuff:READ_LATEST.
+ *
+ * - wfGetCache( $cacheType )
+ *   Get a specific cache type by key in $wgObjectCaches.
+ *
  * @ingroup Cache
  */
 class ObjectCache {
@@ -49,10 +79,10 @@ class ObjectCache {
        /**
         * Get a cached instance of the specified type of cache object.
         *
-        * @param string $id
+        * @param string $id A key in $wgObjectCaches.
         * @return BagOStuff
         */
-       static function getInstance( $id ) {
+       public static function getInstance( $id ) {
                if ( !isset( self::$instances[$id] ) ) {
                        self::$instances[$id] = self::newFromId( $id );
                }
@@ -61,13 +91,13 @@ class ObjectCache {
        }
 
        /**
-        * Get a cached instance of the specified type of cache object.
+        * Get a cached instance of the specified type of WAN cache object.
         *
         * @since 1.26
-        * @param string $id
+        * @param string $id A key in $wgWANObjectCaches.
         * @return WANObjectCache
         */
-       static function getWANInstance( $id ) {
+       public static function getWANInstance( $id ) {
                if ( !isset( self::$wanInstances[$id] ) ) {
                        self::$wanInstances[$id] = self::newWANCacheFromId( $id );
                }
@@ -75,22 +105,14 @@ class ObjectCache {
                return self::$wanInstances[$id];
        }
 
-       /**
-        * Clear all the cached instances.
-        */
-       static function clear() {
-               self::$instances = array();
-               self::$wanInstances = array();
-       }
-
        /**
         * Create a new cache object of the specified type.
         *
-        * @param string $id
+        * @param string $id A key in $wgObjectCaches.
         * @return BagOStuff
         * @throws MWException
         */
-       static function newFromId( $id ) {
+       public static function newFromId( $id ) {
                global $wgObjectCaches;
 
                if ( !isset( $wgObjectCaches[$id] ) ) {
@@ -102,13 +124,17 @@ class ObjectCache {
        }
 
        /**
-        * Create a new cache object from parameters
+        * Create a new cache object from parameters.
         *
-        * @param array $params
+        * @param array $params Must have 'factory' or 'class' property.
+        *  - factory: Callback passed $params that returns BagOStuff.
+        *  - class: BagOStuff subclass constructed with $params.
+        *  - loggroup: Alias to set 'logger' key with LoggerFactory group.
+        *  - .. Other parameters passed to factory or class.
         * @return BagOStuff
         * @throws MWException
         */
-       static function newFromParams( $params ) {
+       public static function newFromParams( $params ) {
                if ( isset( $params['loggroup'] ) ) {
                        $params['logger'] = LoggerFactory::getInstance( $params['loggroup'] );
                } else {
@@ -129,7 +155,7 @@ class ObjectCache {
        }
 
        /**
-        * Factory function referenced from DefaultSettings.php for CACHE_ANYTHING
+        * Factory function for CACHE_ANYTHING (referenced from DefaultSettings.php)
         *
         * CACHE_ANYTHING means that stuff has to be cached, not caching is not an option.
         * If a caching method is configured for any of the main caches ($wgMainCacheType,
@@ -141,7 +167,7 @@ class ObjectCache {
         * @param array $params
         * @return BagOStuff
         */
-       static function newAnything( $params ) {
+       public static function newAnything( $params ) {
                global $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType;
                $candidates = array( $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType );
                foreach ( $candidates as $candidate ) {
@@ -153,17 +179,20 @@ class ObjectCache {
        }
 
        /**
-        * Factory function referenced from DefaultSettings.php for CACHE_ACCEL.
+        * Factory function for CACHE_ACCEL (referenced from DefaultSettings.php)
         *
         * This will look for any APC style server-local cache.
         * A fallback cache can be specified if none is found.
         *
-        * @param array $params
+        * @param array $params [optional]
         * @param int|string $fallback Fallback cache, e.g. (CACHE_NONE, "hash") (since 1.24)
         * @return BagOStuff
         * @throws MWException
         */
-       static function newAccelerator( $params, $fallback = null ) {
+       public static function newAccelerator( $params = array(), $fallback = null ) {
+               if ( !is_array( $params ) && $fallback === null ) {
+                       $fallback = $params;
+               }
                if ( function_exists( 'apc_fetch' ) ) {
                        $id = 'apc';
                } elseif ( function_exists( 'xcache_get' ) && wfIniGetBool( 'xcache.var_size' ) ) {
@@ -190,19 +219,19 @@ class ObjectCache {
         * @param array $params
         * @return MemcachedPhpBagOStuff
         */
-       static function newMemcached( $params ) {
+       public static function newMemcached( $params ) {
                return new MemcachedPhpBagOStuff( $params );
        }
 
        /**
-        * Create a new cache object of the specified type
+        * Create a new cache object of the specified type.
         *
         * @since 1.26
-        * @param string $id
+        * @param string $id A key in $wgWANObjectCaches.
         * @return WANObjectCache
         * @throws MWException
         */
-       static function newWANCacheFromId( $id ) {
+       public static function newWANCacheFromId( $id ) {
                global $wgWANObjectCaches;
 
                if ( !isset( $wgWANObjectCaches[$id] ) ) {
@@ -220,18 +249,20 @@ class ObjectCache {
        }
 
        /**
-        * Get the main WAN cache object
+        * Get the main WAN cache object.
         *
         * @since 1.26
         * @return WANObjectCache
         */
-       static function getMainWANInstance() {
+       public static function getMainWANInstance() {
                global $wgMainWANCache;
 
                return self::getWANInstance( $wgMainWANCache );
        }
 
        /**
+        * Get the cache object for the main stash.
+        *
         * Stash objects are BagOStuff instances suitable for storing light
         * weight data that is not canonically stored elsewhere (such as RDBMS).
         * Stashes should be configured to propagate changes to all data-centers.
@@ -247,9 +278,17 @@ class ObjectCache {
         * @return BagOStuff
         * @since 1.26
         */
-       static function getMainStashInstance() {
+       public static function getMainStashInstance() {
                global $wgMainStash;
 
                return self::getInstance( $wgMainStash );
        }
+
+       /**
+        * Clear all the cached instances.
+        */
+       public static function clear() {
+               self::$instances = array();
+               self::$wanInstances = array();
+       }
 }
index 6a9b9a8..2a5d695 100644 (file)
@@ -112,7 +112,7 @@ class ObjectCacheSessionHandler {
                $data = self::getCache()->get( self::getKey( $id ) );
                $real = microtime( true ) - $stime;
 
-               RequestContext::getMain()->getStats()->timing( "session.read", $real );
+               RequestContext::getMain()->getStats()->timing( "session.read", 1000 * $real );
 
                self::$hashCache = array( $id => self::getHash( $data ) );
 
@@ -137,7 +137,7 @@ class ObjectCacheSessionHandler {
                        self::getCache()->set( self::getKey( $id ), $data, $wgObjectCacheSessionExpiry );
                        $real = microtime( true ) - $stime;
 
-                       RequestContext::getMain()->getStats()->timing( "session.write", $real );
+                       RequestContext::getMain()->getStats()->timing( "session.write", 1000 * $real );
                }
 
                return true;
@@ -154,7 +154,7 @@ class ObjectCacheSessionHandler {
                self::getCache()->delete( self::getKey( $id ) );
                $real = microtime( true ) - $stime;
 
-               RequestContext::getMain()->getStats()->timing( "session.destroy", $real );
+               RequestContext::getMain()->getStats()->timing( "session.destroy", 1000 * $real );
 
                return true;
        }
index c173ac9..657c4d0 100644 (file)
@@ -1199,10 +1199,9 @@ class WikiPage implements Page, IDBAccessObject {
         * Best if all done inside a transaction.
         *
         * @param DatabaseBase $dbw
-        * @return int The newly created page_id key, or false if the title already existed
+        * @return int|bool The newly created page_id key; false if the title already existed
         */
        public function insertOn( $dbw ) {
-
                $page_id = $dbw->nextSequenceValue( 'page_page_id_seq' );
                $dbw->insert( 'page', array(
                        'page_id'           => $page_id,
@@ -1223,9 +1222,11 @@ class WikiPage implements Page, IDBAccessObject {
                        $newid = $dbw->insertId();
                        $this->mId = $newid;
                        $this->mTitle->resetArticleID( $newid );
-               }
 
-               return $affected ? $newid : false;
+                       return $newid;
+               } else {
+                       return false;
+               }
        }
 
        /**
@@ -2180,9 +2181,6 @@ class WikiPage implements Page, IDBAccessObject {
                        $updates = $content->getSecondaryDataUpdates(
                                $this->getTitle(), null, $recursive, $editInfo->output );
                        foreach ( $updates as $update ) {
-                               if ( $update instanceof LinksUpdate ) {
-                                       $update->setRevision( $revision );
-                               }
                                DeferredUpdates::addUpdate( $update );
                        }
                }
@@ -3227,10 +3225,10 @@ class WikiPage implements Page, IDBAccessObject {
 
                // Purge squid for this page only
                $title->purgeSquid();
-
-               $revid = $revision ? $revision->getId() : null;
                // Clear file cache for this page only
                HTMLFileCache::clearFileCache( $title );
+
+               $revid = $revision ? $revision->getId() : null;
                DeferredUpdates::addCallableUpdate( function() use ( $title, $revid ) {
                        InfoAction::invalidateCache( $title, $revid );
                } );
index 8a30ad1..7639e2f 100644 (file)
@@ -88,9 +88,13 @@ class CoreParserFunctions {
                if ( strval( $part1 ) !== '' ) {
                        $args = array_slice( func_get_args(), 2 );
                        $message = wfMessage( $part1, $args )
-                               ->inLanguage( $parser->getOptions()->getUserLangObj() )->plain();
-
-                       return array( $message, 'noparse' => false );
+                               ->inLanguage( $parser->getOptions()->getUserLangObj() );
+                       if ( !$message->exists() ) {
+                               // When message does not exists, the message name is surrounded by angle
+                               // and can result in a tag, therefore escape the angles
+                               return $message->escaped();
+                       }
+                       return array( $message->plain(), 'noparse' => false );
                } else {
                        return array( 'found' => false );
                }
index 6189997..9731a20 100644 (file)
@@ -87,7 +87,11 @@ class Parser {
        # \p{Zs} is unicode 'separator, space' category. It covers the space 0x20
        # as well as U+3000 is IDEOGRAPHIC SPACE for bug 19052
        const EXT_LINK_URL_CLASS = '[^][<>"\\x00-\\x20\\x7F\p{Zs}]';
-       const EXT_IMAGE_REGEX = '/^(http:\/\/|https:\/\/)([^][<>"\\x00-\\x20\\x7F\p{Zs}]+)
+       # Simplified expression to match an IPv4 or IPv6 address, or
+       # at least one character of a host name (embeds EXT_LINK_URL_CLASS)
+       const EXT_LINK_ADDR = '(?:[0-9.]+|\\[(?i:[0-9a-f:.]+)\\]|[^][<>"\\x00-\\x20\\x7F\p{Zs}])';
+       # RegExp to make image URLs (embeds IPv6 part of EXT_LINK_ADDR)
+       const EXT_IMAGE_REGEX = '/^(http:\/\/|https:\/\/)((?:\\[(?i:[0-9a-f:.]+)\\])?[^][<>"\\x00-\\x20\\x7F\p{Zs}]+)
                \\/([A-Za-z0-9_.,~%\\-+&;#*?!=()@\\x80-\\xFF]+)\\.((?i)gif|png|jpg|jpeg)$/Sxu';
 
        # Regular expression for a non-newline space
@@ -254,7 +258,8 @@ class Parser {
                $this->mConf = $conf;
                $this->mUrlProtocols = wfUrlProtocols();
                $this->mExtLinkBracketedRegex = '/\[(((?i)' . $this->mUrlProtocols . ')' .
-                       self::EXT_LINK_URL_CLASS . '+)\p{Zs}*([^\]\\x00-\\x08\\x0a-\\x1F]*?)\]/Su';
+                       self::EXT_LINK_ADDR .
+                       self::EXT_LINK_URL_CLASS . '*)\p{Zs}*([^\]\\x00-\\x08\\x0a-\\x1F]*?)\]/Su';
                if ( isset( $conf['preprocessorClass'] ) ) {
                        $this->mPreprocessorClass = $conf['preprocessorClass'];
                } elseif ( defined( 'HPHP_VERSION' ) ) {
@@ -1378,6 +1383,7 @@ class Parser {
        public function doMagicLinks( $text ) {
                $prots = wfUrlProtocolsWithoutProtRel();
                $urlChar = self::EXT_LINK_URL_CLASS;
+               $addr = self::EXT_LINK_ADDR;
                $space = self::SPACE_NOT_NL; #  non-newline space
                $spdash = "(?:-|$space)"; # a dash or a non-newline space
                $spaces = "$space++"; # possessive match of 1 or more spaces
@@ -1386,7 +1392,7 @@ class Parser {
                                (<a[ \t\r\n>].*?</a>) |      # m[1]: Skip link text
                                (<.*?>) |                    # m[2]: Skip stuff inside
                                                             #       HTML elements' . "
-                               (\b(?i:$prots)($urlChar+)) | # m[3]: Free external links
+                               (\b(?i:$prots)($addr$urlChar*)) | # m[3]: Free external links
                                                             # m[4]: Post-protocol path
                                \b(?:RFC|PMID) $spaces       # m[5]: RFC or PMID, capture number
                                        ([0-9]+)\b |
@@ -1499,14 +1505,14 @@ class Parser {
                        $url = substr( $url, 0, -$numSepChars );
                }
 
-               $url = Sanitizer::cleanUrl( $url );
-
                # Verify that we still have a real URL after trail removal, and
                # not just lone protocol
                if ( strlen( $trail ) >= $numPostProto ) {
                        return $url . $trail;
                }
 
+               $url = Sanitizer::cleanUrl( $url );
+
                # Is this an external image?
                $text = $this->maybeMakeExternalImage( $url );
                if ( $text === false ) {
@@ -1622,12 +1628,10 @@ class Parser {
                                                        $firstspace = $i;
                                                }
                                        } elseif ( $x2 === ' ' ) {
-                                               if ( $firstsingleletterword == -1 ) {
-                                                       $firstsingleletterword = $i;
-                                                       // if $firstsingleletterword is set, we don't
-                                                       // look at the other options, so we can bail early.
-                                                       break;
-                                               }
+                                               $firstsingleletterword = $i;
+                                               // if $firstsingleletterword is set, we don't
+                                               // look at the other options, so we can bail early.
+                                               break;
                                        } else {
                                                if ( $firstmultiletterword == -1 ) {
                                                        $firstmultiletterword = $i;
@@ -5320,6 +5324,7 @@ class Parser {
                $ig->setParser( $this );
                $ig->setHideBadImages();
                $ig->setAttributes( Sanitizer::validateTagAttributes( $params, 'table' ) );
+               $this->getOutput()->addModuleStyles( 'mediawiki.page.gallery.styles' );
 
                if ( isset( $params['showfilename'] ) ) {
                        $ig->setShowFilename( true );
@@ -5415,9 +5420,10 @@ class Parser {
                                                case 'gallery-internal-link':
                                                        $linkValue = strip_tags( $this->replaceLinkHoldersText( $match ) );
                                                        $chars = self::EXT_LINK_URL_CLASS;
+                                                       $addr = self::EXT_LINK_ADDR;
                                                        $prots = $this->mUrlProtocols;
                                                        //check to see if link matches an absolute url, if not then it must be a wiki link.
-                                                       if ( preg_match( "/^($prots)$chars+$/u", $linkValue ) ) {
+                                                       if ( preg_match( "/^($prots)$addr$chars*$/u", $linkValue ) ) {
                                                                $link = $linkValue;
                                                        } else {
                                                                $localLinkTitle = Title::newFromText( $linkValue );
@@ -5599,13 +5605,14 @@ class Parser {
                                                        break;
                                                case 'link':
                                                        $chars = self::EXT_LINK_URL_CLASS;
+                                                       $addr = self::EXT_LINK_ADDR;
                                                        $prots = $this->mUrlProtocols;
                                                        if ( $value === '' ) {
                                                                $paramName = 'no-link';
                                                                $value = true;
                                                                $validated = true;
                                                        } elseif ( preg_match( "/^((?i)$prots)/", $value ) ) {
-                                                               if ( preg_match( "/^((?i)$prots)$chars+$/u", $value, $m ) ) {
+                                                               if ( preg_match( "/^((?i)$prots)$addr$chars*$/u", $value, $m ) ) {
                                                                        $paramName = 'link-url';
                                                                        $this->mOutput->addExternalLink( $value );
                                                                        if ( $this->mOptions->getExternalLinkTarget() ) {
index 44b0bc9..47fcd30 100644 (file)
@@ -26,7 +26,7 @@
  * @todo document
  */
 class ParserCache {
-       /** @var MWMemcached */
+       /** @var BagOStuff */
        private $mMemc;
        /**
         * Get an instance of this object
@@ -46,7 +46,7 @@ class ParserCache {
         * Setup a cache pathway with a given back-end storage mechanism.
         * May be a memcached client or a BagOStuff derivative.
         *
-        * @param MWMemcached $memCached
+        * @param BagOStuff $memCached
         * @throws MWException
         */
        protected function __construct( $memCached ) {
index 100656d..ed0d74a 100644 (file)
@@ -372,13 +372,15 @@ class ParserOptions {
        }
 
        /**
-        * Get the user language used by the parser for this page.
+        * Get the user language used by the parser for this page and record the
+        * userlang parser option, which splits parser cache.
         *
         * You shouldn't use this. Really. $parser->getFunctionLang() is all you need.
         *
         * To avoid side-effects where the page will be rendered based on the language
-        * of the user who last saved, this function will triger a cache fragmentation.
-        * Usage of this method is discouraged for that reason.
+        * of the user who last saved, this function will trigger a cache fragmentation.
+        * For that reason, usage of this method is discouraged unless it is desired to
+        * split caches based on user language, such as for multilingual content.
         *
         * When saving, this will return the default language instead of the user's.
         *
index a702d2e..d601467 100644 (file)
@@ -142,8 +142,12 @@ class PoolWorkArticleView extends PoolCounterWork {
 
                // Timing hack
                if ( $time > 3 ) {
-                       wfDebugLog( 'slow-parse', sprintf( "%-5.2f %s", $time,
-                               $this->page->getTitle()->getPrefixedDBkey() ) );
+                       // TODO: Use Parser's logger (once it has one)
+                       $logger = MediaWiki\Logger\LoggerFactory::getInstance( 'slow-parse' );
+                       $logger->info( '{time} {title}', array(
+                               'time' => number_format( $time, 2 ),
+                               'title' => $this->page->getTitle()->getPrefixedDBkey(),
+                       ) );
                }
 
                if ( $this->cacheable && $this->parserOutput->isCacheable() && $isCurrent ) {
index 2f15659..f7e62ee 100644 (file)
@@ -32,7 +32,8 @@ interface RCFeedFormatter {
         * @param RecentChange $rc The RecentChange object showing what sort
         *                         of event has taken place.
         * @param string|null $actionComment
-        * @return string The text to send.
+        * @return string|null The text to send.  If the formatter returns null,
+        *  the line will not be sent.
         */
        public function getLine( array $feed, RecentChange $rc, $actionComment );
 }
index 68e5a17..2c792da 100644 (file)
@@ -213,7 +213,7 @@ class ExtensionProcessor implements Processor {
                        foreach ( $info['namespaces'] as $ns ) {
                                $id = $ns['id'];
                                $this->defines[$ns['constant']] = $id;
-                               $this->globals['wgExtraNamespaces'][$id] = $ns['name'];
+                               $this->attributes['ExtensionNamespaces'][$id] = $ns['name'];
                                if ( isset( $ns['gender'] ) ) {
                                        $this->globals['wgExtraGenderNamespaces'][$id] = $ns['gender'];
                                }
index 7414925..b89518a 100644 (file)
@@ -81,7 +81,7 @@ class ExtensionRegistry {
                // we don't want to fail here if $wgObjectCaches is not configured
                // properly for APC setup
                try {
-                       $this->cache = ObjectCache::newAccelerator( array() );
+                       $this->cache = ObjectCache::newAccelerator();
                } catch ( MWException $e ) {
                        $this->cache = new EmptyBagOStuff();
                }
index 090c4fd..cecb6a2 100644 (file)
@@ -221,7 +221,8 @@ class ResourceLoader implements LoggerAwareInterface {
 
                                $result = self::applyFilter( $filter, $data, $this->config );
 
-                               $stats->timing( "resourceloader_cache.$filter.miss", microtime( true ) - $statStart );
+                               $statTiming = microtime( true ) - $statStart;
+                               $stats->timing( "resourceloader_cache.$filter.miss", 1000 * $statTiming );
                                if ( $options['cacheReport'] ) {
                                        $result .= "\n/* cache key: $key */";
                                }
index efb151e..3224b13 100644 (file)
@@ -591,9 +591,10 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
 
                $options = array();
                foreach ( array(
-                       // T104950: Do not include localBasePath! That path may vary over time and needlessly
-                       // invalidate cache. If the path changes in a way that makes relative file paths point
-                       // to something else, getFileHashes() will incorporate that already.
+                       // T104950: Do not include localBasePath or remoteBasePath!
+                       // Those paths may vary over time and needlessly invalidate cache. If the path changes
+                       // in a way that makes relative file paths point to something else, getFileHashes() will
+                       // account for that already.
                        'scripts',
                        'debugScripts',
                        'loaderScripts',
@@ -608,7 +609,6 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                        'group',
                        'position',
                        'skipFunction',
-                       'remoteBasePath',
                        'debugRaw',
                        'raw',
                ) as $member ) {
diff --git a/includes/resourceloader/ResourceLoaderForeignApiModule.php b/includes/resourceloader/ResourceLoaderForeignApiModule.php
new file mode 100644 (file)
index 0000000..7ed0831
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+/**
+ * ResourceLoader module for mediawiki.ForeignApi that has dynamically
+ * generated dependencies, via a hook usable by extensions.
+ *
+ * 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
+ */
+
+/**
+ * ResourceLoader module for mediawiki.ForeignApi and its generated data
+ */
+class ResourceLoaderForeignApiModule extends ResourceLoaderFileModule {
+       public function getDependencies( ResourceLoaderContext $context = null ) {
+               $dependencies = $this->dependencies;
+               Hooks::run( 'ResourceLoaderForeignApiModules', array( &$dependencies, $context ) );
+               return $dependencies;
+       }
+}
index ade99e2..1243f23 100644 (file)
@@ -572,8 +572,8 @@ abstract class ResourceLoaderModule {
 
                $statTiming = microtime( true ) - $statStart;
                $statName = strtr( $this->getName(), '.', '_' );
-               $stats->timing( "resourceloader_build.all", $statTiming );
-               $stats->timing( "resourceloader_build.$statName", $statTiming );
+               $stats->timing( "resourceloader_build.all", 1000 * $statTiming );
+               $stats->timing( "resourceloader_build.$statName", 1000 * $statTiming );
 
                return $content;
        }
index 0938316..23bd394 100644 (file)
@@ -144,7 +144,6 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                $opts->add( 'hideliu', false );
                $opts->add( 'hidepatrolled', false );
                $opts->add( 'hidemyself', false );
-               $opts->add( 'hidecategorization', false );
 
                $opts->add( 'namespace', '', FormOptions::INTNULL );
                $opts->add( 'invert', false );
@@ -250,9 +249,6 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                $conds[] = 'rc_user_text != ' . $dbr->addQuotes( $user->getName() );
                        }
                }
-               if ( $opts['hidecategorization'] === true ) {
-                       $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_CATEGORIZE );
-               }
 
                // Namespace filtering
                if ( $opts['namespace'] !== '' ) {
index b083032..2da24a8 100644 (file)
@@ -32,7 +32,7 @@ class AncientPagesPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
@@ -40,7 +40,7 @@ class AncientPagesPage extends QueryPage {
                return false;
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array( 'page', 'revision' ),
                        'fields' => array(
@@ -56,7 +56,7 @@ class AncientPagesPage extends QueryPage {
                );
        }
 
-       function usesTimestamps() {
+       public function usesTimestamps() {
                return true;
        }
 
index 1bbdbea..701f75f 100644 (file)
@@ -32,7 +32,7 @@ class BrokenRedirectsPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
@@ -48,7 +48,7 @@ class BrokenRedirectsPage extends QueryPage {
                return $this->msg( 'brokenredirectstext' )->parseAsBlock();
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                $dbr = wfGetDB( DB_SLAVE );
 
                return array(
index 6356155..147f67e 100644 (file)
@@ -43,6 +43,10 @@ class EmailConfirmation extends UnlistedSpecialPage {
         * @throws UserNotLoggedIn
         */
        function execute( $code ) {
+               // Ignore things like master queries/connections on GET requests.
+               // It's very convenient to just allow formless link usage.
+               Profiler::instance()->getTransactionProfiler()->resetExpectations();
+
                $this->setHeaders();
 
                $this->checkReadOnly();
@@ -151,6 +155,10 @@ class EmailInvalidation extends UnlistedSpecialPage {
        }
 
        function execute( $code ) {
+               // Ignore things like master queries/connections on GET requests.
+               // It's very convenient to just allow formless link usage.
+               Profiler::instance()->getTransactionProfiler()->resetExpectations();
+
                $this->setHeaders();
                $this->checkReadOnly();
                $this->checkPermissions();
index 47b426d..6d40985 100644 (file)
@@ -32,7 +32,7 @@ class DoubleRedirectsPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
@@ -99,7 +99,7 @@ class DoubleRedirectsPage extends QueryPage {
                return $retval;
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return $this->reallyGetQueryInfo();
        }
 
index 3d68813..74662ae 100644 (file)
@@ -299,7 +299,9 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
         */
        private function getWatchlist() {
                $list = array();
-               $dbr = wfGetDB( DB_MASTER );
+
+               $index = $this->getRequest()->wasPosted() ? DB_MASTER : DB_SLAVE;
+               $dbr = wfGetDB( $index );
 
                $res = $dbr->select(
                        'watchlist',
@@ -312,6 +314,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                );
 
                if ( $res->numRows() > 0 ) {
+                       /** @var Title[] $titles */
                        $titles = array();
                        foreach ( $res as $row ) {
                                $title = Title::makeTitleSafe( $row->wl_namespace, $row->wl_title );
index dc9d57c..406233b 100644 (file)
@@ -32,7 +32,7 @@ class FewestrevisionsPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
@@ -40,7 +40,7 @@ class FewestrevisionsPage extends QueryPage {
                return false;
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array( 'revision', 'page' ),
                        'fields' => array(
index da79bb8..4c0c75f 100644 (file)
@@ -48,7 +48,7 @@ class FileDuplicateSearchPage extends QueryPage {
                return false;
        }
 
-       function isCached() {
+       public function isCached() {
                return false;
        }
 
@@ -82,7 +82,7 @@ class FileDuplicateSearchPage extends QueryPage {
                $this->getOutput()->addHtml( implode( "\n", $html ) );
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array( 'image' ),
                        'fields' => array(
@@ -95,7 +95,7 @@ class FileDuplicateSearchPage extends QueryPage {
                );
        }
 
-       function execute( $par ) {
+       public function execute( $par ) {
                $this->setHeaders();
                $this->outputHeader();
 
index 67683f2..dc882d4 100644 (file)
@@ -80,7 +80,7 @@ class LinkSearchPage extends QueryPage {
                return false;
        }
 
-       function execute( $par ) {
+       public function execute( $par ) {
                $this->initServices();
 
                $this->setHeaders();
@@ -218,7 +218,7 @@ class LinkSearchPage extends QueryPage {
                return $params;
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                $dbr = wfGetDB( DB_SLAVE );
                // strip everything past first wildcard, so that
                // index-based-only lookup would be done
index 1e3dff6..317b62f 100644 (file)
@@ -34,7 +34,7 @@ class ListDuplicatedFilesPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
@@ -53,7 +53,7 @@ class ListDuplicatedFilesPage extends QueryPage {
         * with however we are doing cached special pages.
         * @return array
         */
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array( 'image' ),
                        'fields' => array(
index 2df4834..fa94b4a 100644 (file)
@@ -33,7 +33,7 @@ class ListredirectsPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
@@ -45,7 +45,7 @@ class ListredirectsPage extends QueryPage {
                return false;
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array( 'p1' => 'page', 'redirect', 'p2' => 'page' ),
                        'fields' => array( 'namespace' => 'p1.page_namespace',
index 64d4982..32344a8 100644 (file)
@@ -34,7 +34,7 @@ class MIMEsearchPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
@@ -123,7 +123,7 @@ class MIMEsearchPage extends QueryPage {
                                        Xml::closeElement( 'form' );
        }
 
-       function execute( $par ) {
+       public function execute( $par ) {
                $this->mime = $par ? $par : $this->getRequest()->getText( 'mime' );
                $this->mime = trim( $this->mime );
                list( $this->major, $this->minor ) = File::splitMime( $this->mime );
index 7a7979c..e5ba8c6 100644 (file)
@@ -36,7 +36,7 @@ class MediaStatisticsPage extends QueryPage {
                $this->shownavigation = false;
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
index c70bbdb..18083f6 100644 (file)
@@ -34,7 +34,7 @@ class MostcategoriesPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
@@ -42,7 +42,7 @@ class MostcategoriesPage extends QueryPage {
                return false;
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array( 'categorylinks', 'page' ),
                        'fields' => array(
index ab3d9c9..b07b833 100644 (file)
@@ -34,7 +34,7 @@ class MostinterwikisPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
@@ -42,7 +42,7 @@ class MostinterwikisPage extends QueryPage {
                return false;
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array(
                                'langlinks',
index ae0b070..019df49 100644 (file)
@@ -35,7 +35,7 @@ class MostlinkedPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
@@ -43,7 +43,7 @@ class MostlinkedPage extends QueryPage {
                return false;
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array( 'pagelinks', 'page' ),
                        'fields' => array(
index cc718e0..6eeab91 100644 (file)
@@ -38,7 +38,7 @@ class MostlinkedCategoriesPage extends QueryPage {
                return false;
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array( 'category' ),
                        'fields' => array( 'title' => 'cat_title',
index e77479f..eb8a274 100644 (file)
@@ -104,7 +104,9 @@ class MovePageForm extends UnlistedSpecialPage {
                $permErrors = $this->oldTitle->getUserPermissionsErrors( 'move', $user );
                if ( count( $permErrors ) ) {
                        // Auto-block user's IP if the account was "hard" blocked
-                       $user->spreadAnyEditBlock();
+                       DeferredUpdates::addCallableUpdate( function() use ( $user ) {
+                               $user->spreadAnyEditBlock();
+                       } );
                        throw new PermissionsError( 'move', $permErrors );
                }
 
index 670a397..26d0fe8 100644 (file)
@@ -40,7 +40,7 @@ class SpecialPagesWithProp extends QueryPage {
                return false;
        }
 
-       function execute( $par ) {
+       public function execute( $par ) {
                $this->setHeaders();
                $this->outputHeader();
                $this->getOutput()->addModuleStyles( 'mediawiki.special.pagesWithProp' );
@@ -100,7 +100,7 @@ class SpecialPagesWithProp extends QueryPage {
                return false;
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array( 'page_props', 'page' ),
                        'fields' => array(
index 4b2d2d4..96d512c 100644 (file)
@@ -83,7 +83,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $opts->add( 'hideliu', false );
                $opts->add( 'hidepatrolled', $user->getBoolOption( 'hidepatrolled' ) );
                $opts->add( 'hidemyself', false );
-               $opts->add( 'hidecategorization', $user->getBoolOption( 'hidecategorization' ) );
 
                $opts->add( 'categories', '' );
                $opts->add( 'categories_any', false );
@@ -139,9 +138,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        if ( 'hidemyself' === $bit ) {
                                $opts['hidemyself'] = true;
                        }
-                       if ( 'hidecategorization' === $bit ) {
-                               $opts['hidecategorization'] = true;
-                       }
 
                        if ( is_numeric( $bit ) ) {
                                $opts['limit'] = $bit;
@@ -727,8 +723,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        'hideanons' => 'rcshowhideanons',
                        'hideliu' => 'rcshowhideliu',
                        'hidepatrolled' => 'rcshowhidepatr',
-                       'hidemyself' => 'rcshowhidemine',
-                       'hidecategorization' => 'rcshowhidecategorization'
+                       'hidemyself' => 'rcshowhidemine'
                );
 
                $showhide = array( 'show', 'hide' );
@@ -746,8 +741,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        // The following messages are used here:
                        // rcshowhideminor-show, rcshowhideminor-hide, rcshowhidebots-show, rcshowhidebots-hide,
                        // rcshowhideanons-show, rcshowhideanons-hide, rcshowhideliu-show, rcshowhideliu-hide,
-                       // rcshowhidepatr-show, rcshowhidepatr-hide, rcshowhidemine-show, rcshowhidemine-hide,
-                       // rcshowhidecategorization-show, rcshowhidecategorization-hide.
+                       // rcshowhidepatr-show, rcshowhidepatr-hide, rcshowhidemine-show, rcshowhidemine-hide.
                        $linkMessage = $this->msg( $msg . '-' . $showhide[1 - $options[$key]] );
                        // Extensions can define additional filters, but don't need to define the corresponding
                        // messages. If they don't exist, just fall back to 'show' and 'hide'.
index 7ec69e0..ba11862 100644 (file)
@@ -37,7 +37,7 @@ class ShortPagesPage extends QueryPage {
                return false;
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array( 'page' ),
                        'fields' => array(
index 713823b..0d3216c 100644 (file)
@@ -29,7 +29,7 @@ class UnusedCategoriesPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
@@ -37,7 +37,7 @@ class UnusedCategoriesPage extends QueryPage {
                return $this->msg( 'unusedcategoriestext' )->parseAsBlock();
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array( 'page', 'categorylinks' ),
                        'fields' => array(
index 0c2b870..33444f6 100644 (file)
@@ -34,7 +34,7 @@ class UnusedtemplatesPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
@@ -46,7 +46,7 @@ class UnusedtemplatesPage extends QueryPage {
                return false;
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array( 'page', 'templatelinks' ),
                        'fields' => array(
index bb07c19..b3ca006 100644 (file)
@@ -35,7 +35,7 @@ class UnwatchedpagesPage extends QueryPage {
                parent::__construct( $name, 'unwatchedpages' );
        }
 
-       function isExpensive() {
+       public function isExpensive() {
                return true;
        }
 
@@ -43,7 +43,7 @@ class UnwatchedpagesPage extends QueryPage {
                return false;
        }
 
-       function getQueryInfo() {
+       public function getQueryInfo() {
                return array(
                        'tables' => array( 'page', 'watchlist' ),
                        'fields' => array(
index f6fa5ea..500a931 100644 (file)
@@ -1124,7 +1124,10 @@ class SpecialVersion extends SpecialPage {
                if ( is_array( $list ) && count( $list ) == 1 ) {
                        $list = $list[0];
                }
-               if ( is_object( $list ) ) {
+               if ( $list instanceof Closure ) {
+                       // Don't output stuff like "Closure$;1028376090#8$48499d94fe0147f7c633b365be39952b$"
+                       return 'Closure';
+               } elseif ( is_object( $list ) ) {
                        $class = wfMessage( 'parentheses' )->params( get_class( $list ) )->escaped();
 
                        return $class;
index 088a3fe..20f5776 100644 (file)
@@ -110,7 +110,6 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                $opts->add( 'hideliu', $user->getBoolOption( 'watchlisthideliu' ) );
                $opts->add( 'hidepatrolled', $user->getBoolOption( 'watchlisthidepatrolled' ) );
                $opts->add( 'hidemyself', $user->getBoolOption( 'watchlisthideown' ) );
-               $opts->add( 'hidecategorization', $user->getBoolOption( 'watchlisthidecategorization' ) );
 
                $opts->add( 'extended', $user->getBoolOption( 'extendwatchlist' ) );
 
@@ -424,8 +423,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        'hideanons' => 'rcshowhideanons',
                        'hideliu' => 'rcshowhideliu',
                        'hidemyself' => 'rcshowhidemine',
-                       'hidepatrolled' => 'rcshowhidepatr',
-                       'hidecategorization' => 'rcshowhidecategorization',
+                       'hidepatrolled' => 'rcshowhidepatr'
                );
                foreach ( $this->getCustomFilters() as $key => $params ) {
                        $filters[$key] = $params['msg'];
index ae3736a..666660a 100644 (file)
@@ -21,6 +21,8 @@
  * @author Antoine Musso "<hashar at free dot fr>", Aaron Schulz
  */
 
+use IPSet\IPSet;
+
 // Some regex definition to "play" with IP address and IP address blocks
 
 // An IPv4 address is made of 4 bytes from x00 to xFF which is d0 to d255
index 950dd84..740df92 100644 (file)
@@ -161,7 +161,7 @@ class MWCryptHKDF {
         * @throws MWException
         */
        protected static function singleton() {
-               global $wgHKDFAlgorithm, $wgHKDFSecret, $wgSecretKey;
+               global $wgHKDFAlgorithm, $wgHKDFSecret, $wgSecretKey, $wgMainCacheType;
 
                $secret = $wgHKDFSecret ?: $wgSecretKey;
                if ( !$secret ) {
@@ -176,11 +176,7 @@ class MWCryptHKDF {
                $context[] = gethostname();
 
                // Setup salt cache. Use APC, or fallback to the main cache if it isn't setup
-               try {
-                       $cache = ObjectCache::newAccelerator( array() );
-               } catch ( Exception $e ) {
-                       $cache = wfGetMainCache();
-               }
+               $cache = ObjectCache::newAccelerator( $wgMainCacheType );
 
                if ( is_null( self::$singleton ) ) {
                        self::$singleton = new self( $secret, $wgHKDFAlgorithm, $cache, $context );
index 2d7d932..04c8e19 100644 (file)
@@ -283,7 +283,7 @@ class UIDGenerator {
                $cache = null;
                if ( ( $flags & self::QUICK_VOLATILE ) && PHP_SAPI !== 'cli' ) {
                        try {
-                               $cache = ObjectCache::newAccelerator( array() );
+                               $cache = ObjectCache::newAccelerator();
                        } catch ( Exception $e ) {
                                // not supported
                        }
diff --git a/includes/widget/ComplexNamespaceInputWidget.php b/includes/widget/ComplexNamespaceInputWidget.php
new file mode 100644 (file)
index 0000000..21c5709
--- /dev/null
@@ -0,0 +1,110 @@
+<?php
+/**
+ * MediaWiki Widgets – ComplexNamespaceInputWidget class.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+namespace MediaWiki\Widget;
+
+/**
+ * Namespace input widget. Displays a dropdown box with the choice of available namespaces, plus two
+ * checkboxes to include associated namespace or to invert selection.
+ */
+class ComplexNamespaceInputWidget extends \OOUI\Widget {
+
+       protected $config;
+       protected $namespace;
+       protected $associated = null;
+       protected $associatedLabel = null;
+       protected $invert = null;
+       protected $invertLabel = null;
+
+       /**
+        * @param array $config Configuration options
+        * @param array $config['namespace'] Configuration for the NamespaceInputWidget dropdown with list
+        *     of namespaces
+        * @param string $config['namespace']['includeAllValue'] If specified, add a "all namespaces"
+        *     option to the dropdown, and use this as the input value for it
+        * @param array|null $config['invert'] Configuration for the "invert selection" CheckboxInputWidget. If
+        *     null, the checkbox will not be generated.
+        * @param array|null $config['associated'] Configuration for the "include associated namespace"
+        *     CheckboxInputWidget. If null, the checkbox will not be generated.
+        * @param array $config['invertLabel'] Configuration for the FieldLayout with label wrapping the
+        *     "invert selection" checkbox
+        * @param string $config['invertLabel']['label'] Label text for the label
+        * @param array $config['associatedLabel'] Configuration for the FieldLayout with label wrapping
+        *     the "include associated namespace" checkbox
+        * @param string $config['associatedLabel']['label'] Label text for the label
+        */
+       public function __construct( array $config = array() ) {
+               // Configuration initialization
+               $config = array_merge(
+                       array(
+                               // Config options for nested widgets
+                               'namespace' => array(),
+                               'invert' => array(),
+                               'invertLabel' => array(),
+                               'associated' => array(),
+                               'associatedLabel' => array(),
+                       ),
+                       $config
+               );
+
+               // Parent constructor
+               parent::__construct( $config );
+
+               // Properties
+               $this->config = $config;
+
+               $this->namespace = new NamespaceInputWidget( $config['namespace'] );
+               if ( $config['associated'] !== null ) {
+                       $this->associated = new \OOUI\CheckboxInputWidget( array_merge(
+                               array( 'value' => '1' ),
+                               $config['associated']
+                       ) );
+                       // TODO Should use a LabelWidget? But they don't work like HTML <label>s yet
+                       $this->associatedLabel = new \OOUI\FieldLayout(
+                               $this->associated,
+                               array_merge(
+                                       array( 'align' => 'inline' ),
+                                       $config['associatedLabel']
+                               )
+                       );
+               }
+               if ( $config['invert'] !== null ) {
+                       $this->invert = new \OOUI\CheckboxInputWidget( array_merge(
+                               array( 'value' => '1' ),
+                               $config['invert']
+                       ) );
+                       // TODO Should use a LabelWidget? But they don't work like HTML <label>s yet
+                       $this->invertLabel = new \OOUI\FieldLayout(
+                               $this->invert,
+                               array_merge(
+                                       array( 'align' => 'inline' ),
+                                       $config['invertLabel']
+                               )
+                       );
+               }
+
+               // Initialization
+               $this
+                       ->addClasses( array( 'mw-widget-complexNamespaceInputWidget' ) )
+                       ->appendContent( $this->namespace, $this->associatedLabel, $this->invertLabel );
+       }
+
+       protected function getJavaScriptClassName() {
+               return 'mw.widgets.ComplexNamespaceInputWidget';
+       }
+
+       public function getConfig( &$config ) {
+               $config = array_merge(
+                       $config,
+                       array_intersect_key(
+                               $this->config,
+                               array_fill_keys( array( 'namespace', 'invert', 'invertLabel', 'associated', 'associatedLabel' ), true )
+                       )
+               );
+               return parent::getConfig( $config );
+       }
+}
index f10ea70..a99227e 100644 (file)
@@ -8,93 +8,29 @@
 namespace MediaWiki\Widget;
 
 /**
- * Namespace input widget. Displays a dropdown box with the choice of available namespaces, plus two
- * checkboxes to include associated namespace or to invert selection.
+ * Namespace input widget. Displays a dropdown box with the choice of available namespaces.
  */
-class NamespaceInputWidget extends \OOUI\Widget {
+class NamespaceInputWidget extends \OOUI\DropdownInputWidget {
 
-       protected $namespace = null;
-       protected $associated = null;
-       protected $invert = null;
-       protected $allValue = null;
+       protected $includeAllValue = null;
 
        /**
         * @param array $config Configuration options
-        * @param string $config['nameNamespace'] HTML input name for the namespace dropdown box (default:
-        *     'namespace')
-        * @param string $config['nameInvert'] HTML input name for the "invert selection" checkbox. If
-        *     null, the checkbox will not be generated. (default: 'invert')
-        * @param string $config['nameAssociated'] HTML input name for the "include associated namespace"
-        *     checkbox. If null, the checkbox will not be generated. (default: 'associated')
         * @param string $config['includeAllValue'] If specified, add a "all namespaces" option to the
         *     namespace dropdown, and use this as the input value for it
-        * @param int|string $config['valueNamespace'] Input value of the namespace dropdown box. May be a
-        *     string only if 'includeAllValue' is set.
-        * @param boolean $config['valueInvert'] Input value of the "invert selection" checkbox (default:
-        *     false)
-        * @param boolean $config['valueAssociated'] Input value of the "include associated namespace"
-        *     checkbox (default: false)
-        * @param string $config['labelInvert'] Text of label to use for "invert selection" checkbox
-        * @param string $config['labelAssociated'] Text of label to use for "include associated
-        *     namespace" checkbox
         */
        public function __construct( array $config = array() ) {
                // Configuration initialization
-               $config = array_merge(
-                       array(
-                               'nameNamespace' => 'namespace',
-                               'nameInvert' => 'invert',
-                               'nameAssociated' => 'associated',
-                               // Choose first available: either main namespace or the "all namespaces" option
-                               'valueNamespace' => null,
-                               'valueInvert' => false,
-                               'valueAssociated' => false,
-                       ),
-                       $config
-               );
+               $config['options'] = $this->getNamespaceDropdownOptions( $config );
 
                // Parent constructor
                parent::__construct( $config );
 
                // Properties
-               $this->allValue = isset( $config['includeAllValue'] ) ? $config['includeAllValue'] : null;
-               $this->namespace = new \OOUI\DropdownInputWidget( array(
-                       'name' => $config['nameNamespace'],
-                       'value' => $config['valueNamespace'],
-                       'options' => $this->getNamespaceDropdownOptions( $config ),
-               ) );
-               if ( $config['nameAssociated'] !== null ) {
-                       // FIXME Should use a LabelWidget? But they don't work like HTML <label>s yet
-                       $this->associated = new \OOUI\FieldLayout(
-                               new \OOUI\CheckboxInputWidget( array(
-                                       'name' => $config['nameAssociated'],
-                                       'selected' => $config['valueAssociated'],
-                                       'value' => '1',
-                               ) ),
-                               array(
-                                       'align' => 'inline',
-                                       'label' => $config['labelAssociated'],
-                               )
-                       );
-               }
-               if ( $config['nameInvert'] !== null ) {
-                       $this->invert = new \OOUI\FieldLayout(
-                               new \OOUI\CheckboxInputWidget( array(
-                                       'name' => $config['nameInvert'],
-                                       'selected' => $config['valueInvert'],
-                                       'value' => '1',
-                               ) ),
-                               array(
-                                       'align' => 'inline',
-                                       'label' => $config['labelInvert'],
-                               )
-                       );
-               }
+               $this->includeAllValue = isset( $config['includeAllValue'] ) ? $config['includeAllValue'] : null;
 
                // Initialization
-               $this
-                       ->addClasses( array( 'mw-widget-namespaceInputWidget' ) )
-                       ->appendContent( $this->namespace, $this->associated, $this->invert );
+               $this->addClasses( array( 'mw-widget-namespaceInputWidget' ) );
        }
 
        protected function getNamespaceDropdownOptions( array $config ) {
@@ -118,10 +54,8 @@ class NamespaceInputWidget extends \OOUI\Widget {
        }
 
        public function getConfig( &$config ) {
-               $config['namespace'] = $this->namespace;
-               $config['associated'] = $this->associated;
-               $config['invert'] = $this->invert;
-               $config['allValue'] = $this->allValue;
-               return parent::getConfig( $config );
+               $config['includeAllValue'] = $this->includeAllValue;
+               // Skip DropdownInputWidget's getConfig(), we don't need 'options' config
+               return \OOUI\InputWidget::getConfig( $config );
        }
 }
index d3e2851..8ac7014 100644 (file)
@@ -14,24 +14,28 @@ class TitleInputWidget extends \OOUI\TextInputWidget {
 
        protected $namespace = null;
        protected $relative = null;
+       protected $suggestions = null;
 
        /**
         * @param array $config Configuration options
         * @param int|null $config['namespace'] Namespace to prepend to queries
         * @param bool|null $config['relative'] If a namespace is set, return a title relative to it (default: true)
+        * @param bool|null $config['suggestions'] Display search suggestions (default: true)
         */
        public function __construct( array $config = array() ) {
                // Parent constructor
-               parent::__construct( array_merge( $config, array( 'infusable' => true ) ) );
+               parent::__construct( array_merge( array( 'infusable' => true, 'maxLength' => 255 ), $config ) );
 
                // Properties, which are ignored in PHP and just shipped back to JS
                if ( isset( $config['namespace'] ) ) {
                        $this->namespace = $config['namespace'];
                }
-
                if ( isset( $config['relative'] ) ) {
                        $this->relative = $config['relative'];
                }
+               if ( isset( $config['suggestions'] ) ) {
+                       $this->suggestions = $config['suggestions'];
+               }
 
                // Initialization
                $this->addClasses( array( 'mw-widget-titleInputWidget' ) );
@@ -48,6 +52,9 @@ class TitleInputWidget extends \OOUI\TextInputWidget {
                if ( $this->relative !== null ) {
                        $config['relative'] = $this->relative;
                }
+               if ( $this->suggestions !== null ) {
+                       $config['suggestions'] = $this->suggestions;
+               }
                return parent::getConfig( $config );
        }
 }
index e5663c3..1e2d3d6 100644 (file)
@@ -17,7 +17,7 @@ class UserInputWidget extends \OOUI\TextInputWidget {
         */
        public function __construct( array $config = array() ) {
                // Parent constructor
-               parent::__construct( array_merge( $config, array( 'infusable' => true ) ) );
+               parent::__construct( array_merge( array( 'infusable' => true ), $config ) );
 
                // Initialization
                $this->addClasses( array( 'mw-widget-userInputWidget' ) );
index b698beb..370e2ed 100644 (file)
@@ -2838,7 +2838,7 @@ class Language {
         * @return bool
         */
        function isMultibyte( $str ) {
-               return (bool)preg_match( '/[\x80-\xff]/', $str );
+               return strlen( $str ) !== mb_strlen( $str );
        }
 
        /**
index 0b7f701..a81f17f 100644 (file)
@@ -41,6 +41,8 @@
        'aa' => 'Qafár af',    # Afar
        'ab' => 'Аҧсшәа', # Abkhaz
        'ace' => 'Acèh',       # Aceh
+       'ady' => 'адыгабзэ',    # Adyghe
+       'ady-cyrl' => 'адыгабзэ',       # Adyghe
        'aeb' => 'تونسي/Tûnsî',  # Tunisian Arabic (multiple scripts - defaults to Arabic)
        'aeb-arab' => 'تونسي',     # Tunisian Arabic (Arabic Script)
        'aeb-latn' => 'Tûnsî',        # Tunisian Arabic (Latin Script)
@@ -59,6 +61,7 @@
        'ary' => 'Maġribi',    # Moroccan Spoken Arabic
        'arz' => 'مصرى',    # Egyptian Spoken Arabic
        'as' => 'অসমীয়া',        # Assamese
+       'ase' => 'American sign language',      # American sign language
        'ast' => 'asturianu',   # Asturian
        'av' => 'авар',     # Avar
        'avk' => 'Kotava', # Kotava
diff --git a/languages/i18n/ady-cyrl.json b/languages/i18n/ady-cyrl.json
new file mode 100644 (file)
index 0000000..c1eea1b
--- /dev/null
@@ -0,0 +1,1175 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Adamsa123",
+                       "Amire80",
+                       "Bedynokue.nart",
+                       "Celekan",
+                       "GR44 Luc",
+                       "H.2B.H",
+                       "Highlander45temp",
+                       "Inyzh",
+                       "Peserey",
+                       "SamGamgee",
+                       "SmartNart12",
+                       "TheRossatron"
+               ]
+       },
+       "tog-underline": "Зэпыщэхэм якIэгъэтхъын:",
+       "tog-hideminor": "ЗэхъокӀ цIыкIухэр бэмышIхэм къащымгъэлъагъу",
+       "tog-hidepatrolled": "УплъэкIужьыгъэ зэхъокӀхэр бэмышIхэм къащымгъэлъагъу",
+       "tog-newpageshidepatrolled": "НэкIубгъуакIэ купым и уплъэкIужьыгъэ нэкIубгъохэр гъэбылъ",
+       "tog-extendwatchlist": "КӀэлъыплъэ тхылъыр зэхэщ зэхъокӀ пстэур плъэгъунэу, бэмышӀхэм ямызакъоу",
+       "tog-usenewrc": "БэмышI зэхъокIхэм ыкIи лъыплъэ купым щыщ зэхъокIхэр куп-купэу гъэзаф",
+       "tog-numberheadings": "Аутоматэу цӀэшъхьаӀхэм номер ятын",
+       "tog-showtoolbar": "Къэгъэлъагъу еIэзэн Ӏэмэ-псымэхэр",
+       "tog-editondblclick": "ТIо-теIункIэмкIэ нэкIубгъомэ яIаз",
+       "tog-editsectiononrightclick": "Жъабгъу тIо-теIункIэмкIэ уеIэзэшъунэу къэшI",
+       "tog-watchcreations": "СшIыгъэ нэкIубгъохэр ыкIи ислъхьэгъэ файлэхэр си лъыплъэ купым хэгъахъу",
+       "tog-watchdefault": "СызэIэзэрэ нэкIубгъохэр ыкIи файлхэр си лъыплъэ купым хэгъахъу",
+       "tog-watchmoves": "ЗыцIэ схъожьыгъэ нэкIубгъохэмрэ файлэхэмрэ си лъыплъэ купым хэгъахъу",
+       "tog-watchdeletion": "ТезгъэкIыгъэ нэкIубгъохэмрэ файлхэмрэ си лъыплъэ купым хэгъахъу",
+       "tog-minordefault": "АпэмкIэ еIэзэн пстэур мэхьанэшхо зимыIэ фэдэу къэгъэлъагъу",
+       "tog-previewontop": "Ыпэтеплъэр еIэзалъэ-плIэмыем ыпэ къэгъэлъагъу",
+       "tog-previewonfirst": "Ыпэтеплъэр къэгъэлъагъу апэрэ еIэзэным ыпэ",
+       "tog-enotifwatchlistpages": "Си лъыплъэ купым щыщэу нэкIубгъом е файлым еIэзагъэхэмэ емэйл къысфегъэхь",
+       "tog-enotifusertalkpages": "Поштэ къысфегъэхь си тегущыIэн нэкIубгъор зэхъокIыгъэмэ",
+       "tog-enotifminoredits": "Ащ нэмыкIэу еIэзэн цIыкIу щыIэмэ емэйл къысфегъэхь",
+       "tog-enotifrevealaddr": "Къэбар къэӀофыгъохэм си поштэ адресыр къыщыгъэлъагъу",
+       "tog-shownumberswatching": "Лъыплъэрэ хэлэжьэкIо пчъагъэ къэгъэлъагъу",
+       "tog-oldsig": "Джырэ кIэтхэжьыкIэ:",
+       "tog-fancysig": "КIэтхэжьыкIэр викитекстэу лъытэ (аутоматик зэпыщэ имыIэу)",
+       "tog-uselivepreview": "Ыпэеплъ шӀэхыр гъэфедэн",
+       "tog-forceeditsummary": "СэгъашI, гъэтэрэзыным и гурыIогъапIэм зи имытхагъэмэ",
+       "tog-watchlisthideown": "Лъыплъэ тхылъым си еIэзэнхэр къыщымгъэлъагъу",
+       "tog-watchlisthidebots": "Бот еIэзэныгъэхэр лъыплъэ купым хэх",
+       "tog-watchlisthideminor": "МэхьанэцIыкIу еIэзэныгъэхэр лъыплъэ купым хэх",
+       "tog-watchlisthideliu": "Системэм хэхьэгъэ нэбгырэмэ я еIэзэнхэр лъыплъэ купым хэх",
+       "tog-watchlisthideanons": "Системэм хэмыхьэгъэ нэбгырэмэ я еIэзэнхэр лъыплъэ купым хэх",
+       "tog-watchlisthidepatrolled": "УплъэкIужьыгъэ еIэзэнхэр лъыплъэ купым хэх",
+       "tog-ccmeonemails": "Емэйлэу фязгъэхьхэрэр сэри къысфэдзыжьых",
+       "tog-diffonly": "Зэгъэпшалъэм ычIэгъ нэкIубгъом итыр къэмгъэлъагъу",
+       "tog-showhiddencats": "Гъэбылъыгъэ категориехэр къэгъэлъагъу",
+       "tog-norollbackdiff": "ЗэкIэдзэжьым ыуж зэгъэпшалъэр къэмгъэлъагъу",
+       "tog-useeditwarning": "СэгъашI сызэIазэрэ нэкIубгъом темгъэпытыхьагъэу сыкъекIымэ",
+       "tog-prefershttps": "Ренэу зэпышIэныгъэ шъэфыр гъэфед, системэм ухэхьагъэу щытмэ",
+       "underline-always": "Ренэу",
+       "underline-never": "ЗэнэмыIэ",
+       "editfont-style": "ЕIэзалъэ плIэмыем ытхыбзэ теплъ:",
+       "editfont-default": "Шрифтыр браузерым зэрэщыгъэпсыгъэм фэдэу",
+       "sunday": "Тхьаумаф",
+       "monday": "Блыпэ",
+       "tuesday": "Гъубдж",
+       "wednesday": "Бэрэскэжъый",
+       "thursday": "Мэфэку",
+       "friday": "Бэрэскэшху",
+       "saturday": "Мэфэзакъу",
+       "sun": "Тмф",
+       "mon": "Блп",
+       "tue": "Гбж",
+       "wed": "Брж",
+       "thu": "Мфк",
+       "fri": "Брш",
+       "sat": "Мфз",
+       "january": "Щылэ",
+       "february": "Мэзай",
+       "march": "Гъэтхапэ",
+       "april": "Мэлылъфэгъу",
+       "may_long": "ЖъоныгъуакӀ",
+       "june": "Мэкъуогъу",
+       "july": "Бэдзэогъу",
+       "august": "ШышъхьэӀу",
+       "september": "Ӏоныгъу",
+       "october": "Чъэпыогъу",
+       "november": "ШэкӀогъу",
+       "december": "Тыгъэгъаз",
+       "january-gen": "Щылэ",
+       "february-gen": "Мэзай",
+       "march-gen": "Гъэтхапэ",
+       "april-gen": "Мэлылъфэгъу",
+       "may-gen": "ЖъоныгъуакӀ",
+       "june-gen": "Мэкъуогъу",
+       "july-gen": "Бэдзэогъу",
+       "august-gen": "ШышъхьаӀу",
+       "september-gen": "Ӏоныгъу",
+       "october-gen": "Чъэпыогъу",
+       "november-gen": "ШэкӀогъу",
+       "december-gen": "Тыгъэгъаз",
+       "jan": "Щл",
+       "feb": "Мзй",
+       "mar": "Гътп",
+       "apr": "Мллъ",
+       "may": "Жън",
+       "jun": "Мкъгъ",
+       "jul": "Бдз",
+       "aug": "Шшъхь",
+       "sep": "Ӏон",
+       "oct": "Чъп",
+       "nov": "Шкгъ",
+       "dec": "Тгъ",
+       "january-date": "Щылэ мазэ $1",
+       "february-date": "Мэзай $1",
+       "march-date": "Гъэтхапэ $1",
+       "april-date": "Мэлылъфэгъу $1",
+       "may-date": "ЖъоныгъуакӀ $1",
+       "june-date": "Мэкъуогъу $1",
+       "july-date": "Бэдзэогъу $1",
+       "august-date": "ШышъхьаӀу $1",
+       "september-date": "Ӏоныгъо $1",
+       "october-date": "Чъэпыогъу $1",
+       "november-date": "ШэкӀогъу $1",
+       "december-date": "Тыгъэгъаз $1",
+       "pagecategories": "{{PLURAL:$1|Категорий|Категориехэр}}",
+       "category_header": "НэкӀубгъохэр категориеу \"$1\"-м щыщхэр",
+       "subcategories": "КӀэкӀэт категориехэр",
+       "category-media-header": "\"$1\" категорием хэт медиэр",
+       "category-empty": "<em>Мы категорием нэкIубгъо е медиэ пари джыри илъэп.</em>",
+       "hidden-categories": "{{PLURAL:$1|Гъэбылъыгъэ категорие|Гъэбылъыгъэ категориехэр}}",
+       "hidden-category-category": "Гъэбылъыгъэ категориехэр",
+       "category-subcat-count": "{{PLURAL:$2|Мы категорием мы кIэткатегорие закъу иIэр.|Мы категорием мы {{PLURAL:$1|кIэткатегорие|$1 кIэткатегориехэр}}, $2 пстэум щыщэу.}}",
+       "category-subcat-count-limited": "Мы категорием мы {{PLURAL:$1|кIэткатегорие|$1 кIэткатегориехэр}} иIэр.",
+       "category-article-count": "{{PLURAL:$2|Мы категорием мы нэкIубгъо закъор илъ.|Мы {{PLURAL:$1|нэкIубгъор|$1 нэкIубгъохэр}} мы категорием илъых, $2 пстэумкIэ.}}",
+       "category-article-count-limited": "КIэлъыкIорэ {{PLURAL:$1|файлыр илъ|$1 файлэхэр илъых}} мы категорием.",
+       "category-file-count": "{{PLURAL:$2|Мы категорием къык1элъык1орэ файлэ закъо илъ.|Мы {{PLURAL:$1|файлыр|$1 файлэхэр}} мы категорием илъхэр, $2 пстэумк1э.}}",
+       "category-file-count-limited": "КIэлъыкIорэ {{PLURAL:$1|файлыр илъ|$1 файлэхэр илъых}} мы категорием.",
+       "listingcontinuesabbrev": "пэубл.",
+       "index-category": "Индекс хъурэ нэкIубгъохэр",
+       "noindex-category": "Индекс мыхъурэ нэкIубгъохэр",
+       "broken-file-category": "Къончэ зэпыщэхэр зиIэ нэкIубгъохэр",
+       "about": "Фэгъэхьыгъэу",
+       "article": "Дэтхэр",
+       "newwindow": "(шъхьангъупчъэ шъхьафым къыщызэӀух)",
+       "cancel": "Ыуж икӀ",
+       "moredotdotdot": "Джыри...",
+       "morenotlisted": "Мы купыр джыри изэп.",
+       "mypage": "НэкIубгъо",
+       "mytalk": "ГущыӀ",
+       "anontalk": "Мы IP-адресым тегущыI",
+       "navigation": "Зыплъыхьэн",
+       "and": "&#32;ыкӀи",
+       "qbfind": "Къэгъот",
+       "qbbrowse": "Хаплъ",
+       "qbedit": "ЕIаз",
+       "qbpageoptions": "Мы нэкIубгъор",
+       "qbmyoptions": "Си нэкIубгъохэр",
+       "faq": "ПчъаЗы",
+       "faqpage": "Project:ПчъаЗы",
+       "actions": "ШӀагъэхэр",
+       "namespaces": "ЦӀэчӀыпӀ",
+       "variants": "Вариантхэр",
+       "navigation-heading": "Зыплъыхьэн меню",
+       "errorpagetitle": "Хэукъоныгъэ",
+       "returnto": "$1-м егъэзэжь",
+       "tagline": "{{SITENAME}}-м щыщ",
+       "help": "ӀэпыӀэгъу",
+       "search": "Лъыхъу",
+       "searchbutton": "Лъыхъу",
+       "go": "КӀо",
+       "searcharticle": "КӀо",
+       "history": "Тхьапэм итарихъ",
+       "history_short": "Тарихъ",
+       "updatedmarker": "мыщпэм сыкъызихьагъэм азфагу кIэмэ уплъэкIужьыгъэ",
+       "printableversion": "Хэутын теплъ",
+       "permalink": "Ренэу щыт зэпыщ",
+       "print": "Къыхэут",
+       "view": "Еплъ",
+       "view-foreign": "Сайтэу $1-м къыщыгъэлъагъу",
+       "edit": "ХэӀэзыхь",
+       "edit-local": "Хьанэгъунэ гурыӀоныгъэм еIэзэн",
+       "create": "КъэшӀ",
+       "create-local": "Хьанэгъунэ гурыӀоныгъэ пыдзэжь",
+       "editthispage": "Гъэтэрэзыжь мы нэкӀубгъор",
+       "create-this-page": "Къэубл мы тхылъыр",
+       "delete": "ТегъэкI",
+       "deletethispage": "Мы нэкIубгъор тегъэкI",
+       "undeletethispage": "ТемыгъэкI мы нэкIубгъор",
+       "undelete_short": "ТемыгъэкI {{PLURAL:$1|зы еIэзэныгъэ|$1 еIэзэныгъэхэр}}",
+       "viewdeleted_short": "Къэгъэлъагъу {{PLURAL:$1|зы тегъэкIыгъэ еIэзэныгъэ|$1 тегъэкIыгъэ еIэзэныгъэхэр}}",
+       "protect": "Ухъум",
+       "protect_change": "зэблэхъу",
+       "protectthispage": "Ухъум мы нэкIубгъор",
+       "unprotect": "Ухъумэныгъэр зэблэхъу",
+       "unprotectthispage": "Мы нэкIубгъом и ухъумэныгъэ зэблэхъу",
+       "newpage": "НэкӀубгъуакӀэ",
+       "talkpage": "ТегущыI мы нэкIубгъом",
+       "talkpagelinktext": "ГущыӀ",
+       "specialpage": "ХэшыкӀыгъэ нэкӀубгъу",
+       "personaltools": "СиӀэмэпсымэхэр",
+       "articlepage": "КӀоцӀытхагъэм еплъ",
+       "talk": "ТегущыӀэн",
+       "views": "Еплъыгъэхэр",
+       "toolbox": "Ӏэмэ-псымэхэр",
+       "userpage": "Нэбгырэм инэкIубгъо еплъ",
+       "projectpage": "Проектым и нэкӀубгъо еплъ",
+       "imagepage": "Файлым и нэкIубгъо еплъ",
+       "mediawikipage": "Тхыгъэм инэкIубгъо еплъ",
+       "templatepage": "Шапхъэм и нэкIубгъо еплъ",
+       "viewhelppage": "IэпыIэгъу нэкIубгъом еплъ",
+       "categorypage": "Категорием и нэкIубгъо еплъ",
+       "viewtalkpage": "ТегущыIэныгъэм еплъ",
+       "otherlanguages": "ПэмыкӀ бзэхэмкӀэ",
+       "redirectedfrom": "($1-м къикӀыгъ)",
+       "redirectpagesub": "ЕгъэкIокI нэкIубгъор",
+       "redirectto": "МыдыкӀэ егъэкӀокӀ:",
+       "lastmodifiedat": "Мыщпэм мы нэкӀубгъор зеӀэзагъэхэр $1, $2-м.",
+       "viewcount": "Мы нэкIубгъом еплъыгъэх {{PLURAL:$1|зэ|$1-рэ}}.",
+       "protectedpage": "Ухъумагъэ нэкIубгъу",
+       "jumpto": "МыкӀэ пкӀэ:",
+       "jumptonavigation": "зыплъыхьэн",
+       "jumptosearch": "лъыхъу",
+       "pool-timeout": "Уахътэр икIыгъэ, гъэпытэныр къэсыфэ",
+       "pool-queuefull": "Упч1эмэ я Iатэр изы",
+       "pool-errorunknown": "ЗэхэмышIагъэ къончагъэ",
+       "poolcounter-usage-error": "Гъэфедэныгъэм и къончагъэ: $1",
+       "aboutsite": "{{SITENAME}} фэгъэхьыгъэу",
+       "aboutpage": "Project:Фэгъэхьыгъэу",
+       "copyright": "$1-м тетэу кIоцIрытыр олъэгъу, нэмыкIым игугъу къамышIмэ.",
+       "copyrightpage": "{{ns:project}}:Ауторфитныгъэхэр",
+       "currentevents": "Джыр хъугъэ-шӀагъэхэр",
+       "currentevents-url": "Project:Джыр хъугъэ-шӀагъэхэр",
+       "disclaimers": "ПшъэдэкӀ умыхьын",
+       "disclaimerpage": "Project:ПшъэдэкӀ умыхьын",
+       "edithelp": "ХэӀэзэнымкӀэ ӀэпыӀэгъу",
+       "helppage-top-gethelp": "ӀэпыӀэгъу",
+       "mainpage": "НэкӀубгъо шъхьаӀ",
+       "mainpage-description": "НэкӀубгъо шъхьаӀ",
+       "policy-url": "Project:Хабзэхэр",
+       "portal": "Лъэпкъэгъу ӀухьапӀ",
+       "portal-url": "Project:Лъэпкъэгъу ӀухьапӀ",
+       "privacy": "Зыушъэфын хабзэр",
+       "privacypage": "Project:Зыушъэфын хабзэр",
+       "badaccess": "Фитыныгъэм и къончагъэ",
+       "badaccess-group0": "УзыкIэупчъэрэ шIэн-мурадым пае фитыныгъэ уиIэп.",
+       "versionrequired": "MediaWiki-м и $1-рэ версие ищыкIагъ",
+       "versionrequiredtext": "MediaWiki-м и $1-рэ версие ищыкIагъ.\nЕплъ [[Special:Version|version page]].",
+       "ok": "Хъун",
+       "retrievedfrom": "\"$1\" - м къикӀыгъ",
+       "youhavenewmessages": "{{PLURAL:$3|УиI}} $1 ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|зы тхыгхакIэ|999=тхыгъакIэхэр}}",
+       "newmessagesdifflinkplural": "ыужрэ {{PLURAL:$1|зэхъокIыныгъэ|999=зэхъокIыныгъэхэр}}",
+       "youhavenewmessagesmulti": "ТхыгъакIэхэр уиI $1-кIэ",
+       "editsection": "хэӀэзыхь",
+       "editold": "еӀаз",
+       "viewsourceold": "еплъ лъапсэм",
+       "editlink": "еӀаз",
+       "viewsourcelink": "лъапсэм еплъ",
+       "editsectionhint": "Пычыгъом хатх: $1",
+       "toc": "Дэлъхэр",
+       "showtoc": "къэгъэлъагъу",
+       "hidetoc": "гъэбылъ",
+       "collapsible-collapse": "Зэхэгъахь",
+       "collapsible-expand": "Зэхэщ",
+       "confirmable-confirm": "{{GENDER:$1|Уэ}} пытэу ошIа?",
+       "confirmable-yes": "Ары",
+       "confirmable-no": "ХьаIу",
+       "thisisdeleted": "Еплъ е зэкIэдзэжь $1?",
+       "viewdeleted": "Еплъ $1?",
+       "restorelink": "{{PLURAL:$1|зы еIэзэн тегъэкIыгъ|$1 еIэзэн тегъэкIыгъэхэр}}",
+       "feedlinks": "Теплъэр мифэд:",
+       "feed-invalid": "КIэтхакIэ каналым и типыр къуанчэ",
+       "feed-unavailable": "Синдикацие чэзыухэр щыIэп",
+       "site-rss-feed": "$1 RSS чэзыу",
+       "site-atom-feed": "$1 Atom чэзыу",
+       "page-rss-feed": "$1 RSS чэзыу",
+       "page-atom-feed": "$1 Atom чэзыу",
+       "red-link-title": "$1 (нэкӀубгъор щыӀэп)",
+       "sort-descending": "Ехырэ чэзыу",
+       "sort-ascending": "ДэкIуаерэ чэзыу",
+       "nstab-main": "НэкӀубгъо",
+       "nstab-user": "Сэ ситхьап",
+       "nstab-media": "Медиэ нэкIубгъо",
+       "nstab-special": "ХэшыкӀыгъэ нэкӀубгъу",
+       "nstab-project": "Проектым фэгъэхьыгъэу",
+       "nstab-image": "Файл",
+       "nstab-mediawiki": "Тхыгъэ",
+       "nstab-template": "Шапхъэ",
+       "nstab-help": "IэпыIэгъу нэкIубгъу",
+       "nstab-category": "Категорие",
+       "nosuchaction": "Ащ фэдэ шIагъэ щыIэп",
+       "nosuchspecialpage": "Афэдэ специал нэкIубгъо щыIэп",
+       "error": "Къончагъэ",
+       "databaseerror": "Датэбазэм и къончагъэ",
+       "databaseerror-query": "КIэупчIэн: $1",
+       "databaseerror-function": "Функцие: $1",
+       "databaseerror-error": "Хэукъоныгъэ: $1",
+       "laggedslavemode": "<strong>Сакъ:</strong> НэкIубгъом имылъын лъэкIыщт хэIэзэныкIэмэ ащыщ.",
+       "readonly": "Датэбазэр гъэпытагъэ",
+       "missingarticle-rev": "(версиеу № $1)",
+       "missingarticle-diff": "(Зэгъапш: $1, $2)",
+       "internalerror": "ЫкIоцI хэукъоныгъэ",
+       "internalerror_info": "ЫкIоцI фыкъуагъэ: $1",
+       "filecopyerror": "\"$1\"-файлыр \"$2\"-м копи шIын лъэкIыгъэп.",
+       "filerenameerror": "Файлэу \"$1\" ыц1э \"$2\" фэдэу хъожьын лъэкIырэп.",
+       "filedeleteerror": "Файлэу \"$1\" тегъэкIын лъэкIырэп.",
+       "directorycreateerror": "Директориеу \"$1\" къэублэн лъэкIыгъэп.",
+       "directoryreadonlyerror": "Директориер \"$1\" еджэн пэе закъу.",
+       "directorynotreadableerror": "Директорием \"$1\" еджэн лъэкIырэп.",
+       "filenotfound": "Файлэу \"$1\" гъотыгъэн лъэкIырэп.",
+       "formerror": "Хэукъоныгъэ: Формэр тегъэпытыхьан лъэкIыгъэп.",
+       "badarticleerror": "Мы хъугъэ-шIагъэр мы нэкIубгъом щызэшIогъэкIын лъэкIыщтэп.",
+       "cannotdelete": "НэкIубгъоу е файлэу \"$1\" тегъэкIын лъэкIыгъэп.\nПэмыкI нэбгырэм тыригъэкIыгъахэн фае.",
+       "cannotdelete-title": "НэкIубгъоу \"$1\" тегъэкIыгъэн лъэкIырэп",
+       "badtitle": "ЦӀэ дэгъуэп",
+       "viewsource": "Еплъ лъапсэм",
+       "viewsource-title": "Еплъ лъапсэм $1 пае",
+       "protectedpagetext": "ЕIэзэнхэм ыкIи нэмыкI шIэнмэ яягъэ къэмыкIынэу мы нэкIубгъор ухъумагъэу щыт.",
+       "viewsourcetext": "Мы нэкIубгъом ылъапсэм уеплъын и копи пшIышъущт.",
+       "viewyourtext": "<strong>Уэ уи еIэзэнхэм</strong> я лъапсэ уеплъын е копи пшIын плъэкIыыщт мы нэкIубгъом.",
+       "translateinterface": "ЗэкIэ викимэ язэдзэкIмэ ахэбгъэхъон е еIэзэн пшIоигъомэ, [//translatewiki.net/ translatewiki.net] гъэфед, MediaWiki и хьанэгъуналъэ сайт.",
+       "namespaceprotected": "<strong>$1</strong> цIэчIыпIэм и нэкIубгъомэ уяIэзэнэу фитыныгъэ уиIэп.",
+       "mycustomcssprotected": "Мы CSS-нэкIубгъом уеIэзэн уфитэп.",
+       "mycustomjsprotected": "Мы JavaScript нэкIубгъом уеIэзэн уфитэп.",
+       "myprivateinfoprotected": "Уи шъэф информацием уеIэзэн уфитэп.",
+       "mypreferencesprotected": "Уи Iэмэпсымэхэм уяIэзэн уфитэп.",
+       "ns-specialprotected": "Специал нэкIубгъохэр зэхъокIын хъущтэп.",
+       "exception-nologin": "Системэм хэхьагъэп",
+       "exception-nologin-text": "Системэм хахьэба мы нэкIубгъом е шIэным унэсышъунэу.",
+       "virus-badscanner": "ЗэтегъэпсыхьакIэ дэй: ЗэхэмышIыкIыгъэ вирус сканер: <em>$1</em>",
+       "virus-scanfailed": "сканшIын къуанч (кодэу $1)",
+       "virus-unknownscanner": "зэхэмышIыкIыгъэ антивирус:",
+       "welcomeuser": "Къеблагъ, $1!",
+       "yourname": "НэбгырацIэ:",
+       "userlogin-yourname": "НэбгырацӀэр",
+       "userlogin-yourname-ph": "Итх уи нэбгырацIэ",
+       "createacct-another-username-ph": "Итх уи нэбгырацӀэр",
+       "yourpassword": "ШъэфгущыI:",
+       "userlogin-yourpassword": "ШъэфгущыI",
+       "userlogin-yourpassword-ph": "Уи шъэфгущыIэ итх",
+       "createacct-yourpassword-ph": "Къэтх шъэфгущыIэ горэ",
+       "yourpasswordagain": "Джыри зэ къэтх шъэфгущыIэр:",
+       "createacct-yourpasswordagain": "Тегъэпытыхь шъэфгущыIэр",
+       "createacct-yourpasswordagain-ph": "Къэтх шъэфгущыIэр джыри зэ",
+       "userlogin-remembermypassword": "Системэм сыхэтэу сыкъэгъан",
+       "userlogin-signwithsecure": "Ухъумэгъэ зэпышIэныгъэр гъэфед",
+       "yourdomainname": "Уи домен:",
+       "password-change-forbidden": "Мы виким и шъэфгущыIэхэр зэблэпхъун уфитэп.",
+       "login": "Системэм хахь",
+       "nav-login-createaccount": "Къыхахь / аккаунт къэубл",
+       "userlogin": "Къыхахь / аккаунт къэубл",
+       "userloginnocreate": "Системэм хахь",
+       "logout": "ХэкӀыжь",
+       "userlogout": "ХэкӀыжь",
+       "notloggedin": "Системэм хэхьагъэп",
+       "userlogin-noaccount": "Аккаунт уиӏэба?",
+       "userlogin-joinproject": "{{SITENAME}} зигъэгъус",
+       "nologin": "Аккаунт уиӏэба? $1.",
+       "nologinlink": "Аккаунт къэубл",
+       "createaccount": "Аккаунт къэубл",
+       "gotaccount": "Аккаунт уиӏаха? $1.",
+       "gotaccountlink": "Системэм хахь",
+       "userlogin-resetlink": "Уи хэхьан датэхэр пщыгъупшагъа?",
+       "userlogin-resetpassword-link": "УишъэфгущыIэр пщыгъупшагъа?",
+       "userlogin-helplink2": "Системэм сыхэхьанэу къыздеӏ",
+       "userlogin-createanother": "НэмыкI аккаунт къэубл",
+       "createacct-emailrequired": "Емэйл адрес",
+       "createacct-emailoptional": "Емэйл адрес (егъэзыгъэп)",
+       "createacct-email-ph": "Игъахь уи емэйл адресыр",
+       "createacct-another-email-ph": "Игъахь уи емэйл адресыр",
+       "createacct-realname": "ЦIэ шъыпкъэр (егъэзыгъэп)",
+       "createaccountreason": "ЗыпкъырыкIырэр:",
+       "createacct-reason": "ЗыпкъырыкIырэр:",
+       "createacct-reason-ph": "Сыда пэмыкI аккаунт зэкIэублэрэр?",
+       "createacct-captcha": "Щынэгъончъэгъэ уплъэкӀун",
+       "createacct-imgcaptcha-ph": "ЫшъхьагъкӀэ плъэгъурэ текстыр итх",
+       "createacct-submit": "Уи аккаунт бгъэпсын",
+       "createacct-another-submit": "НэмыкI аккаунт къэубл",
+       "createacct-benefit-heading": "{{SITENAME}}-м ощ фэдэхэр дэлажьэх.",
+       "createacct-benefit-body1": "{{PLURAL:$1|еӀэзэныгъэ|еӀэзэныгъ}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|нэкӀубгъо|нэкӀубгъу}}",
+       "createacct-benefit-body3": "бэмышӀэу {{PLURAL:$1|хэлэжьакӀу|хэлэжьакӀо}}",
+       "badretype": "ШъэфгущыIэу ибгъэхьагъэхэр зэтефэрэп.",
+       "userexists": "Ибгъэхьэгъэ нэбгырацIэр агъэфедэ.\nНэмыкI цIэ горэ къыхэхба.",
+       "loginerror": "Системэ хэхьаныгъэр къуанчэ",
+       "createacct-error": "Аккаунт къэублэныгъэ къончагъ",
+       "createaccounterror": "Аккаунт ублэн лъэкIыгъэп: $1",
+       "noname": "НэбгырацIэ тэрэз итхагъэп.",
+       "loginsuccesstitle": "ШIоу ухэхьагъ",
+       "nouserspecified": "НэбгырацIэр птхын фае.",
+       "wrongpassword": "ШъэфгущыIэр тэрэзэп.\nДжыри зэ еплъ.",
+       "wrongpasswordempty": "ШъэфгущыIэр нэкIы.\nДжыри зэ еплъ.",
+       "passwordtooshort": "ШъэфгущыIэр мыхъуми {{PLURAL:$1|1 символ |символ $1}} хъун фае.",
+       "password-name-match": "Уи шъэфгущыIэр уи нэбгырацIэм фэдапэ хъущтэп.",
+       "mailmypassword": "Зэтедз шъэфгущыIэр",
+       "noemailcreate": "Емэйл тэрэз птхын фае.",
+       "mailerror": "Емэйл егъэхьыныр къуанчэ: $1",
+       "emailauthenticated": "Уи емэйл адресыр уплъэкIужьыгъы, мафэр $2, уахъэр $3",
+       "emailconfirmlink": "Тегъэпытыхь уи емэйл адресыр",
+       "emaildisabled": "Мы сайтым емэйлхэр ыгъэхьын лъэкIырэп.",
+       "accountcreated": "Аккаунтыр ублагъэ",
+       "createaccount-title": "Аккаунт къэублэн, {{SITENAME}} пае",
+       "login-abort-generic": "Уи системэ хэхьакIэр шIоп",
+       "loginlanguagelabel": "Бзэ: $1",
+       "pt-login": "Системэм хахь",
+       "pt-login-button": "Системэм хахь",
+       "pt-createaccount": "Аккаунт егъажь",
+       "pt-userlogout": "ХэкӀыжь системэм",
+       "php-mail-error-unknown": "PHP-функциеу mail()-м къончагъэ горэ иI.",
+       "user-mail-no-addy": "Емэйл адрес имыIэу емэйл аригъэхьынэу фэягъ.",
+       "user-mail-no-body": "Емэйл ебгъэхьынэу уфаягъ, нэкIэу е мэхьанэнчъэ кIакоу.",
+       "changepassword": "ШъэфгущыIэр зэблэхъу",
+       "resetpass_announce": "Системэ хэхьаныр зэшIобгъэкIынэу, шъэфгущыIакIэ бгъэпсын фае.",
+       "resetpass_header": "Аккаунтым и шъэфгущыIэр зэблэхъу",
+       "oldpassword": "ШъэфгущыIэжъыр:",
+       "newpassword": "ШъэфгущыIакIэр:",
+       "retypenew": "Къэтхыжь шъэфгущыIэр:",
+       "resetpass_submit": "ШъэфгущыIэр гъэпси, къыхахь",
+       "changepassword-success": "Уи шъэфгущыIэр шIоу зэблэхъугъэ!",
+       "resetpass_forbidden": "ШъэфгущыIэр зэблэхъун лъэкIыщтэп",
+       "resetpass-no-info": "Мы нэкIубгъом занкIэу укIонэу уфаемэ, системэм ухэхьэгъэн фае.",
+       "resetpass-submit-loggedin": "ШъэфгущыIэр зэблэхъу",
+       "resetpass-submit-cancel": "Ыуж икӀ",
+       "resetpass-recycled": "УишъэфгущыIэр зэтедзба джырэм фэмыдэу.",
+       "resetpass-expired": "ШъэфгущыIэм и зэман икIыгъ. ШъэфгущыIакIэ горэ гъэпсба.",
+       "passwordreset": "Зэтедз шъэфгущыIэр",
+       "passwordreset-disabled": "Мы виким шъэфгущыIэр щызэтебдзэшъущтэп.",
+       "passwordreset-emaildisabled": "Мы виким емэйл-Iофыгъохэр щылажьэхэрэп.",
+       "passwordreset-username": "НэбгырацIэ:",
+       "passwordreset-domain": "Домен:",
+       "passwordreset-capture": "Къэхъурэ емэйлым уеплъыщта?",
+       "passwordreset-email": "Емэйл адрес:",
+       "passwordreset-emailtitle": "Аккаунт и гъэпсыкIэхэр, мий щыI {{SITENAME}}",
+       "passwordreset-emailelement": "НэбгырацIэ: $1\nTemporary password: $2",
+       "passwordreset-emailsent": "ШъэфгущыIэм и зэтедзым пае емэйл агъэхьыгъ.",
+       "passwordreset-emailsent-capture": "ШъэфгущыIэм изэтедз фэгъэхьыгъэ емэйлыр гъахьыгъэ, ычIэгъкIэ ар олъэгъу.",
+       "changeemail": "Зэблэхъу емэйл адресыр",
+       "changeemail-oldemail": "Джырэ емэйл адрес:",
+       "changeemail-newemail": "Емэйл адресыкIэр:",
+       "changeemail-none": "(зи)",
+       "changeemail-password": "Уи {{SITENAME}} ишъэфгущыI:",
+       "changeemail-submit": "Емэйлыр зэблэхъу",
+       "resettokens": "Токенхэр зэтедзэх",
+       "resettokens-no-tokens": "Токен зэтебзынэу щыIэп.",
+       "resettokens-tokens": "Токенхэр:",
+       "resettokens-done": "Токенхэр зэтедзыгъэх.",
+       "resettokens-resetbutton": "ХэшыпыкIыгъэ токенхэр зэтедзэх",
+       "bold_sample": "Тхыбзэ Ӏужъу",
+       "bold_tip": "Тхыбзэ Ӏужъу",
+       "italic_sample": "Италикэ текст",
+       "italic_tip": "Италикэ текст",
+       "link_sample": "Зэпыщэм ыцӀэр",
+       "link_tip": "Къыдахьэрэ зэпыщэ",
+       "extlink_sample": "http://www.example.com зэпыщэм ыцӀэ",
+       "extlink_tip": "ДэкӀырэ зэпыщэ (http:// пэрыт пычыгъор зыщымгъэгъупш)",
+       "headline_sample": "Сатырышъхьэ текст",
+       "headline_tip": "Я-2-рэ чэзыу сатырышъхь",
+       "nowiki_sample": "Формат-хэӀэн зимыщыкӀэгъэ текстыр къигъэуцу",
+       "nowiki_tip": "Земгъэгъап вики-форматшэным",
+       "image_tip": "КӀоцӀрыгъэуцогъэ файл",
+       "media_tip": "Файл къакӀорэ зэпыщ",
+       "sig_tip": "Уи кӀэтхэжьыкӀэрэ уахътэрэ",
+       "hr_tip": "Горизонтал сатыр (пчъагъэу умыгъэфед)",
+       "summary": "КӀэкӀэу:",
+       "minoredit": "Мыр хэӀэзэныгъэ цӀыкӀу",
+       "watchthis": "Мы нэкӀубгъом лъыплъ",
+       "savearticle": "НэкӀубгъор дэтхэжь",
+       "preview": "Ыпэтеплъ",
+       "showpreview": "Итеплъэ къэгъэлъагъу",
+       "showdiff": "ЗэхъокӀыныгъэхэр къэгъэлъагъу",
+       "missingcommenttext": "ТегущыIэн горэ кIэтхэжьба ычIэгъ.",
+       "summary-preview": "Къэбарым и ыпэтеплъ:",
+       "previewerrortext": "Уи ыпэтеплъэмэ я къэгъэлъэгъон игъо зы къончагъэ горэ хъугъэ.",
+       "blockednoreason": "къызыпкъырыкIрэр итхагъэп",
+       "nosuchsectiontitle": "Секциер гъотыгъэн лъэкIырэп",
+       "loginreqtitle": "Ухэхьанэу ищыкIагъ",
+       "loginreqlink": "системэм хахь",
+       "accmailtitle": "ШъэфгущыIэр агъэхьыгъ",
+       "newarticle": "(КIэ)",
+       "userpage-userdoesnotexist-view": "Аккаунтэу \"$1\" регистрацие ыкIугъэп.",
+       "note": "<strong>Еплъ:</strong>",
+       "previewnote": "<strong>Зыщымыгъэгъупш, мыр ыпэтеплъэ къодый.</strong>\nУи еIэзэнхэр джыри дэгъэпытыхьагъэхэп.",
+       "continue-editing": "ЕIэзалъэ плIэмыем кIо",
+       "editing": "$1 и еӀэзэн",
+       "creating": "$1 нэкӀубгъом и егъэжьэн",
+       "editingsection": "$1-м (секцие) и еӀэзэныгъэ",
+       "editingcomment": "$1-м (секциякIэ) и еӀэзэныгъэ",
+       "editconflict": "ЕIэзэным зэгурымыIоныгъэ: $1",
+       "yourtext": "Уи текст",
+       "editpage-cannot-use-custom-model": "Мы нэкӀубгъом ыкӀоцӀрытым и модел зэхъокӀын хъущтэп.",
+       "templatesused": "{{PLURAL:$1|Шапхъэ|Шапхъэхэр}} мы нэкIубгъом щагъэфедагъэх:",
+       "template-protected": "(ухъумагъэ)",
+       "template-semiprotected": "(ызныкъокӀэ ухъумагъэ)",
+       "hiddencategories": "Мы нэкIубгъор зыщыщыр мы {{PLURAL:$1|1 категорие гъэбылъыгъэр|$1 категорие гъэбылъыгъэхэр}} ары:",
+       "nocreate-loggedin": "НэкIубгъуакIэ ебгъэжьэ уфитэп.",
+       "permissionserrors": "Фитыныгъэм и къончагъэ",
+       "permissionserrorstext-withaction": "$2-кIэ фитыныгъэ уиIэп, къыкIэлъыкIорэ {{PLURAL:$1|резонкIэ|резонхэмкIэ}}:",
+       "moveddeleted-notice": "Мы нэкӀубгъор тегъэкӀыжьыгъэу щыт.\nТегъэкӀыжьыным ыкӀи кощыным и лог-нэкӀубгъор кӀэлъыкӀорэ зэпыщэмкӀэ къэбгъотышъущт.",
+       "log-fulllog": "Лог псаом еплъ",
+       "edit-conflict": "ЕIэзэным зэгурымыIоныгъэ.",
+       "postedit-confirmation-created": "НэкIубгъор ублагъэ.",
+       "postedit-confirmation-restored": "НэкIубгъор зэтегъэуцожьыгъэу щыт.",
+       "postedit-confirmation-saved": "Уи еIэзэныгъэр тегъэпытыхьагъ.",
+       "edit-already-exists": "НэкIубгъуакIэр егъэжьэгъэн лъэкIыгъэп.\nАщ фэдэр щыIах.",
+       "invalid-content-data": "КIоцIрытыр тэрэзэп",
+       "content-model-wikitext": "вики-текст",
+       "content-model-text": "текст занкI",
+       "content-model-javascript": "JavaScript",
+       "content-json-empty-object": "Объект нэкI",
+       "content-json-empty-array": "Массив нэкI",
+       "cantcreateaccounttitle": "Аккаунт ублэн лъэкIыгъэп",
+       "viewpagelogs": "Мы нэкӏубгъом и логхэр къэгъэлъагъу",
+       "nohistory": "Мы нэкIубгъом и еIэзэнмэ я тарихъ щыIэп.",
+       "currentrev": "Ыужрэ версие",
+       "currentrev-asof": "Джырэ версие, $1-м тетэу",
+       "revisionasof": "$1-м щытыгъэр",
+       "revision-info": "$1-м тетэу версие, зиер {{GENDER:$6|$2}}$7",
+       "previousrevision": "← Пэсэрэ теплъэжьыр",
+       "nextrevision": "Кӏэлъыкӏорэр →",
+       "currentrevisionlink": "Ыужрэ теплъэр",
+       "cur": "джр",
+       "next": "кIэлъ.",
+       "last": "ыпэ",
+       "page_first": "апэрэ",
+       "page_last": "ыужрэ",
+       "history-fieldset-title": "Хаплъ тарихъым",
+       "history-show-deleted": "ТегъэкIыгъэ закъохэр",
+       "histfirst": "нахьыжъдэдэхэр",
+       "histlast": "кIэдэдэхэр",
+       "historysize": "({{PLURAL:$1|1 байт|$1 байтхэр}})",
+       "historyempty": "(нэкI)",
+       "history-feed-title": "ЕIэзэнмэ я тарихъ",
+       "history-feed-description": "Мы нэкIубгъом и еIэзэнмэ я тарихъ викимкIэ",
+       "history-edit-tags": "ХэшыпыкIыгъэ версиемэ я тегхэр зэблэхъу",
+       "rev-deleted-comment": "(еIэзэныгъэм и къэбар тегъэкIыжьыгъэ)",
+       "rev-deleted-user": "(нэбгырацIэр тегъэкIыгъэ)",
+       "rev-deleted-event": "(лог деталхэр тегъэкIыгъэх)",
+       "rev-delundel": "къэгъэлъагъу/гъэбылъ",
+       "rev-showdeleted": "къэгъэлъагъу",
+       "revdelete-no-file": "Зигугъу шIыгъэ файлыр щыIэп.",
+       "revdelete-show-file-submit": "Ары",
+       "revdelete-hide-text": "Версием и текст",
+       "revdelete-hide-image": "Файлым кIоцIрытыр гъэбылъ",
+       "revdelete-hide-comment": "ЕIэзэнмэ якъэбар",
+       "revdelete-hide-user": "ЕIэзакIом и нэбгырацI/IP-адрес",
+       "revdelete-radio-same": "(зэблэмыхъу)",
+       "revdelete-radio-set": "(гъэбылъыгъэ)",
+       "revdelete-log": "ЗыпкъырыкIырэр:",
+       "revdel-restore": "плъэгъушъущтыр зэблэхъу",
+       "pagehist": "НэкIубгъом и тарихъ",
+       "deletedhist": "ТегъэкIыгъэмэ я тарихъ",
+       "revdelete-reasonotherlist": "ПэмыкI къызпкъырыкIрэр",
+       "revdelete-offender": "Версием и аутор:",
+       "mergehistory-from": "Лъапсэ нэкIубгъор:",
+       "mergehistory-into": "ЗыдакIорэ нэкIубгъор:",
+       "mergehistory-go": "Зэпыбдзэшъурэ еIэзэнхэр къэгъэлъагъу",
+       "mergehistory-submit": "Зэпыдз версиехэр",
+       "mergehistory-no-source": "Лъапсэ нэкIубгъоу $1 щыIэп.",
+       "mergehistory-invalid-source": "Лъапсэ нэкIубгъом цIэ тэрэз иIэн фай.",
+       "mergehistory-reason": "ЗыпкъырыкIырэр:",
+       "mergelog": "Зэпыдзэмэ я лог",
+       "revertmerge": "ЗэхэгъэкӀыжь",
+       "history-title": "ЗэхъокIыныгъэмэ я тарихъ - \"$1\"",
+       "difference-title": "\"$1\" - версиемэ зэгъэпшэн",
+       "lineno": "Сатыр $1:",
+       "compareselectedversions": "Хэгъэщыгъэ версиехэр зэгъапш",
+       "editundo": "зэкӀэгъэкӀожь",
+       "diff-empty": "(зэфэмыдэ яIэп)",
+       "searchresults": "Къэгъотынэу хъугъэр",
+       "searchresults-title": "$1-м пае къэгъот",
+       "prevn": "ыпэ {{PLURAL:$1|$1}}",
+       "nextn": "кӀэлъыкӀорэ {{PLURAL:$1|$1}}",
+       "prev-page": "ыпэит нэкIубгъу",
+       "next-page": "кIэлъыкIорэ нэкIубгъу",
+       "nextn-title": "КIэлъыкIорэ $1 {{PLURAL:$1|резултат|резултатхэр}}",
+       "shown-title": "Зы нэкӀубгъом $1{{PLURAL:$1|гъотыгъэ|гъотыгъэхэр}} къыщыгъэлъагъу",
+       "viewprevnext": "Еплъ ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchprofile-articles": "НэкӀубгъо шъхьаӀхэр",
+       "searchprofile-images": "Мултимедие",
+       "searchprofile-everything": "ЗэкӀэ",
+       "searchprofile-advanced": "Зэхэщыгъэу",
+       "searchprofile-articles-tooltip": "Хэлъыхъу $1-м",
+       "searchprofile-images-tooltip": "Файлэхэм алъыхъу",
+       "searchprofile-everything-tooltip": "Тхыгъэм зэкӀэм щылъыхъу (гущыӀэ нэкӀубгъохэри ахэтэу)",
+       "searchprofile-advanced-tooltip": "Къатыгъэ чӀыпӀацӀэмэ къащылъыхъу",
+       "search-result-size": "$1({{PLURAL:$2|$2 гущыӀ}})",
+       "search-redirect": "(гъэкӀожь $1-м)",
+       "search-section": "(секцие $1)",
+       "search-category": "(категориеу $1)",
+       "search-suggest": "Мыра къэпӀонэу узфэягъэр: $1",
+       "search-interwiki-caption": "Iахьыл проектхэр",
+       "search-interwiki-more": "(джыри)",
+       "search-relatedarticle": "ЕхьылIагъ",
+       "searchrelated": "ехьылIагъ",
+       "searchall": "зэкӀэ",
+       "search-nonefound": "Узлъыхъугъэм пари ехьылӀагъэ щыӀэп.",
+       "powersearch-legend": "Зэхэщыгъэ лъыхъун",
+       "powersearch-ns": "ЦIэчIыпIэмэ ащылъыхъу:",
+       "powersearch-togglelabel": "Гъэнаф:",
+       "powersearch-toggleall": "ЗэкIэ",
+       "powersearch-togglenone": "Зи",
+       "preferences": "Iамэ-псымэхэр",
+       "mypreferences": "ГъэпсыкӀэхэр",
+       "prefs-edits": "ЕIэзэнмэ япчъагъэ:",
+       "prefs-skin": "Ышъотеплъ",
+       "skin-preview": "Ыпэтеплъ",
+       "prefs-user-pages": "Нэбгырэм и нэкIубгъу",
+       "prefs-personal": "Нэбгырэм и профил",
+       "prefs-rc": "Ыужрэ зэхъокӀыныгъэхэр",
+       "prefs-watchlist": "Лъыплъэ куп",
+       "prefs-editwatchlist": "Лъыплъэ купым еIэзэн",
+       "prefs-editwatchlist-raw": "Лъыплъэ купым щыщэу сатырым еIэзэн",
+       "prefs-editwatchlist-clear": "Лъыплъэ купыр унэкI",
+       "prefs-watchlist-days": "Мафэ пчъагъэр:",
+       "prefs-watchlist-days-max": "Максимум $1 {{PLURAL:$1|маф|мафэхэр}}",
+       "prefs-watchlist-edits-max": "Нахьинышъущт нумер: 1000",
+       "prefs-watchlist-token": "Лъыплъэ купым и токен:",
+       "prefs-misc": "ПэмыкI гъэпсыкIэхэр",
+       "prefs-resetpass": "ШъэфгущыIэр зэблэхъу",
+       "prefs-changeemail": "Зэблэхъу емэйл адресыр",
+       "prefs-setemail": "Игъахь уи емэйл адресыр",
+       "prefs-email": "Емэйл гъэпсыкIэхэр",
+       "prefs-rendering": "Ышъотеплъэ",
+       "saveprefs": "Игъэпытыхь",
+       "prefs-editing": "ЕIэзэныгъэ",
+       "rows": "Сатырхэу:",
+       "searchresultshead": "Лъыхъу",
+       "stub-threshold-disabled": "ГъэкIуэсагъэ",
+       "recentchangesdays-max": "Максимум $1 {{PLURAL:$1|маф|мафэхэр}}",
+       "savedprefs": "Уи гъэпсыкIэхэр джы игъэпытыхьагъэх.",
+       "timezonelegend": "Сыхьат зон:",
+       "localtime": "Хьанэгъунэ уахът:",
+       "timezoneuseoffset": "НэмыкI (къэгъэлъагъу кощыр)",
+       "servertime": "Сервер уахът:",
+       "guesstimezone": "Браузерым къитхыкI",
+       "timezoneregion-africa": "Африкэ",
+       "timezoneregion-america": "Америкэ",
+       "timezoneregion-antarctica": "Антарктикэ",
+       "timezoneregion-arctic": "Арктикэ",
+       "timezoneregion-asia": "Азие",
+       "timezoneregion-atlantic": "Атлантик Океан",
+       "timezoneregion-australia": "Аустралие",
+       "timezoneregion-europe": "Еуропэ",
+       "timezoneregion-indian": "Индие Океан",
+       "timezoneregion-pacific": "Океан Шъэф",
+       "prefs-searchoptions": "Лъыхъу",
+       "prefs-namespaces": "ЦӀэчӀыпӀэхэр",
+       "prefs-files": "Файлэхэр",
+       "prefs-emailconfirm-label": "Емэйл уплъэкIуныгъэ:",
+       "youremail": "Емэйл:",
+       "username": "{{GENDER:$1|НэбгырацI}}:",
+       "prefs-registration": "Регистрацие уахът:",
+       "yourrealname": "ЦIэ шъыпкъэр:",
+       "yourlanguage": "Бзэ:",
+       "yourvariant": "КIоцIрытым ыбзэ и вариант:",
+       "yournick": "КIэтхэжьыкIакIэ:",
+       "badsig": "КIэтхэжьыкIэр къуанчэ.\nHTML тегхэр уплъэкIу.",
+       "gender-male": "Вики нэкIубгъомэ яIазэ",
+       "gender-female": "Вики нэкIубгъомэ яIазэ",
+       "email": "Емэйл",
+       "prefs-help-email-required": "Емэйл адрес ищыкIагъ.",
+       "prefs-info": "Къэбар шъхьаIэр",
+       "prefs-i18n": "Интернационализацие",
+       "prefs-signature": "КIэтхэжьыкIэ",
+       "prefs-dateformat": "Мафэ формат",
+       "prefs-timeoffset": "Уахътэм и кощ",
+       "prefs-editor": "ЕIэзакIо",
+       "prefs-preview": "Ыпэтеплъ",
+       "prefs-advancedrc": "ГъэпсыкIэ игъэкIотыгъэхэр",
+       "prefs-advancedrendering": "ГъэпсыкIэ игъэкIотыгъэхэр",
+       "prefs-advancedsearchoptions": "ГъэпсыкIэ игъэкIотыгъэхэр",
+       "prefs-advancedwatchlist": "ГъэпсыкIэ игъэкIотыгъэхэр",
+       "prefs-displayrc": "ГъэпсыкIэхэр къэгъэлъагъу",
+       "prefs-displaywatchlist": "ГъэпсыкIэхэр къэгъэлъагъу",
+       "prefs-tokenwatchlist": "Токен",
+       "email-address-validity-valid": "Емэйл адресыр тэрэзым фэд",
+       "email-address-validity-invalid": "Емэйл адрес тэрэз итх",
+       "userrights-user-editname": "Итх уи нэбгырацӀэр:",
+       "editusergroup": "Нэбгырэмэ я купмэ яIаз",
+       "userrights-editusergroup": "Нэбгырэмэ я купмэ яIаз",
+       "userrights-reason": "ЗыпкъырыкIырэр:",
+       "userrights-changeable-col": "Купхэу узхэIэзыхьашъущтхэр",
+       "userrights-unchangeable-col": "Купхэу узхэМыIэзыхьашъущтхэр",
+       "group": "Куп:",
+       "group-user": "Нэбгырэхэр",
+       "group-autoconfirmed": "АутоуплъэкIугъэ нэбгырэхэр",
+       "group-bot": "Ботхэр",
+       "group-sysop": "Ιэшъхьэтетхэр",
+       "group-bureaucrat": "Бюрократхэр",
+       "group-all": "(зэкIэ)",
+       "group-user-member": "{{GENDER:$1|нэбгырэ}}",
+       "group-autoconfirmed-member": "{{GENDER:$1|аутоуплъэкIугъэ нэбгырэ}}",
+       "group-bot-member": "{{GENDER:$1|бот}}",
+       "group-sysop-member": "{{GENDER:$1|Iэшъхьэтет}}",
+       "group-bureaucrat-member": "{{GENDER:$1|бюрократ}}",
+       "grouppage-user": "{{ns:project}}:Нэбгырэхэр",
+       "grouppage-autoconfirmed": "{{ns:project}}:АутоуплъэкIугъэ нэбгырэхэр",
+       "grouppage-bot": "{{ns:project}}:Ботхэр",
+       "grouppage-sysop": "{{ns:project}}:Ӏэшъхьэтетхэр",
+       "grouppage-bureaucrat": "{{ns:project}}:Бюрократхэр",
+       "right-read": "НэкIубгъомэ яплъ",
+       "right-edit": "НэкIубгъомэ яIаз",
+       "right-createtalk": "ТегущыIэнэ нэкIубгъохэр шIы",
+       "right-createaccount": "Нэбгырэмэ я аккаунт кIэхэр шIы",
+       "right-minoredit": "ЕIэзэнхэр цIыкIухэу гъэнафэх",
+       "right-move": "НэкIубгъомэ ацIэхэр хъожь",
+       "right-move-subpages": "Хьых нэкIубгъохэмрэ кIэтнэкIубгъохэмрэ",
+       "right-move-categorypages": "Хьы категорием и нэкIубгъохэр",
+       "right-movefile": "Файлэмэ ацIэхэр хъожь",
+       "right-upload": "Файлыр илъхь",
+       "right-reupload": "ЩыIэ файлхэм ашъхьэтетхэн",
+       "right-writeapi": "Итхэным пае API игъэфедэн",
+       "right-delete": "ТегъэкI нэкIбгъохэр",
+       "right-bigdelete": "ТегъэкI нэкIубгъохэр тарихъ кIахь зиIэ",
+       "right-undelete": "ТемыгъэкI нэкIубгъор",
+       "right-editcontentmodel": "НэкIубгъом и кIоцIырытым и модел зэблэхъун",
+       "right-editinterface": "Нэбгырэ-интерфейсым еIэзэн",
+       "right-editusercssjs": "НэмыкI нэбгырэмэ я CSS, JavaScript файлэмэ яIэзэн",
+       "right-editusercss": "НэмыкI нэбгырэмэ я CSS файлэмэ яIэзэн",
+       "right-edituserjs": "НэмыкI нэбгырэмэ я JavaScript файлэмэ яIэзэн",
+       "right-editmyusercss": "Уи CSS файлэмэ яIэзэн",
+       "right-editmyuserjs": "Уи JavaScript файлэмэ яIэзэн",
+       "right-viewmywatchlist": "Уи лъыплъэ купым еплъ",
+       "right-passwordreset": "ШъэфгущыIэм фэгъэхьыгъэ емэйлхэм яплъ",
+       "newuserlogpage": "ХэлэжьакӀомэ яублэн лог",
+       "action-read": "едж мы нэкIубгъом",
+       "action-edit": "мы нэкIубгъом еIаз",
+       "action-createpage": "нэкIубгъомэ я ублэн",
+       "action-createtalk": "тегущыIэнэ нэкIубгъомэ я ублэн",
+       "action-createaccount": "мы нэбгырэм и аккаунт ублэн",
+       "action-history": "мы нэкIубгъом и тарихъым еплъын",
+       "action-minoredit": "мы еIэзэныгъэр цIыкIоу гъэнаф",
+       "action-move": "мы нэкIубгъом ыцIэ хъожь",
+       "action-move-subpages": "хьы мы нэкIубгъори, кIэтнэкIубгъохэри",
+       "action-move-categorypages": "хьы категорием и нэкIубгъохэр",
+       "action-movefile": "хьы мы файлыр",
+       "action-upload": "илъхь мы файлэр",
+       "action-reupload": "мы файлыр икIэу къэтхыжь",
+       "action-upload_by_url": "илъхь мы файлыр мы URL-кIэ",
+       "action-writeapi": "еIэзэныгъэмэ апае API гъэфедэн",
+       "action-delete": "мы нэкIубгъор тегъэкI",
+       "action-deleterevision": "мы версиер тегъэкI",
+       "action-deletedhistory": "мы нэкIубгъом и тегъэкIыгъэ тарихъым еплъын",
+       "action-browsearchive": "тегъэкIыжьыгъэ нэкIубгъомэ алъыхъу",
+       "action-undelete": "мы нэкIубгъор теМыгъэкI",
+       "action-suppressrevision": "еплъи зэтегъэуцожь мы гъэбылъыгъэ версиер",
+       "action-import": "нэмыкI виким нэкIубгъохэр къих",
+       "action-importupload": "илъхьэгъэ файлэм нэкIубгъохэр къих",
+       "action-unwatchedpages": "зылъыМыплъэхэрэ нэкIубгъо купым яплъын",
+       "action-sendemail": "емэйлхэр ягъэхь",
+       "action-editmywatchlist": "уи лъыплъэ купым еIаз",
+       "action-viewmywatchlist": "уи лъыплъэ купым еплъ",
+       "nchanges": "$1 {{PLURAL:$1|зэхъокIыныгъэ|зэхъокIыныгъэхэр}}",
+       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|ыужрэ хэхьагъум азыфагу}}",
+       "enhancedrc-history": "тарихъ",
+       "recentchanges": "Ыужрэ зэхъокӀыныгъэхэр",
+       "recentchanges-legend": "БэмышӀ хэӀэзэгъу лъэкӀхэр",
+       "recentchanges-summary": "Мы нэкӀубгъом и вики и бэмышӀ зэхъокӀыныгъэхэм алъыплъ.",
+       "recentchanges-label-newpage": "Мы хэӀэзэныгъэм нэкӀубгъуакӀэ къышӀыгъ",
+       "recentchanges-label-minor": "Мыр хэӀэзэныгъэ цӀыкӀу",
+       "recentchanges-label-bot": "Мы хэӀэзэныгъэр ботым ышӀыгъ",
+       "recentchanges-label-unpatrolled": "Мы хэӀэзэныгъэм джыри патрулэу ауплъэкӀугъэп",
+       "recentchanges-label-plusminus": "НэкIубгъом ионтэгъугъэ мыщ фэдиз байт пчъагъэкIэ зэхъокIыгъэ",
+       "recentchanges-legend-heading": "'''Тхыдэ:'''",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (нэмыкӀэу еплъ [[Special:NewPages|нэкӀубгъуакӀэ куп]])",
+       "rclistfrom": "ХэIэзэныкIэхэр къэгъэлъагъу мыщ щегъэжьагъэу $2, $3",
+       "rcshowhideminor": "$1 зэхъокӀыныгъэ цӀыкӀу",
+       "rcshowhideminor-show": "Къэгъэлъагъу",
+       "rcshowhideminor-hide": "Гъэбылъ",
+       "rcshowhidebots": "$1 бот",
+       "rcshowhidebots-show": "Къэгъэлъагъу",
+       "rcshowhidebots-hide": "Гъэбылъ",
+       "rcshowhideliu": "$1 хэхьэгъэ хэлэжьакӀу",
+       "rcshowhideliu-show": "Къэгъэлъагъу",
+       "rcshowhideliu-hide": "Гъэбылъ",
+       "rcshowhideanons": "$1 цӀэрамыӀо нэбгырэхэр",
+       "rcshowhideanons-show": "Къэгъэлъагъу",
+       "rcshowhideanons-hide": "Гъэбылъ",
+       "rcshowhidepatr": "$1 уплъэкIужьыгъэ еIэзэн",
+       "rcshowhidepatr-show": "Къэгъэлъагъу",
+       "rcshowhidepatr-hide": "Гъэбылъ",
+       "rcshowhidemine": "$1 си хэӀэзэнхэр",
+       "rcshowhidemine-show": "Къэгъэлъагъу",
+       "rcshowhidemine-hide": "Гъэбылъ",
+       "rclinks": "Ыужрэ $1 зэхъокIыныгъэ къэгъэлъагъу мэфэ $2 ыкIоцI<br />$3",
+       "diff": "зэфэшъхь",
+       "hist": "тар",
+       "hide": "Гъэбылъ",
+       "show": "Къэгъэлъагъу",
+       "minoreditletter": "ц",
+       "newpageletter": "КӀ",
+       "boteditletter": "б",
+       "rc_categories_any": "ХэшыпыкIыгъэмэ ащыщ горэ",
+       "rc-change-size-new": "$1 {{PLURAL:$1|байт}} зэхъокӀым ыуж",
+       "newsectionsummary": "/* $1 */ секциякIэ",
+       "rc-enhanced-expand": "Ӏэмэ-псымэхэр къэгъэлъагъу",
+       "rc-enhanced-hide": "Жъыиэ паркӀэхэр гъэбылъых",
+       "recentchangeslinked": "ЕхьылӀэгъэ зэхъокӀыныгъэхэр",
+       "recentchangeslinked-feed": "ЕхьылӀэгъэ зэхъокӀыныгъэхэр",
+       "recentchangeslinked-toolbox": "ЕхьылӀэгъэ зэблэхъуныгъэхэр",
+       "recentchangeslinked-title": "\"$1\"-м ехьылӀэгъэ зэхъокӀыныгъэхэр",
+       "recentchangeslinked-page": "НэкӀубгъом ыцӀэр:",
+       "recentchangeslinked-to": "Пхэнджэу, зигугъу шIыгъэ нэкIубгъом къэзыщэрэ нэкIубгъомэ язэхъокIыныгъэхэр къэгъэлъагъу",
+       "upload": "Файлыр илъхь",
+       "uploadbtn": "Файлыр илъхь",
+       "uploadnologin": "Системэм хэхьагъэп",
+       "uploaderror": "Файл илъхьаныр фыкъуагъэ",
+       "uploadlogpage": "Илъхьанхэм я лог",
+       "filename": "ФайлыцIэ",
+       "filedesc": "КӀэкӀэу",
+       "fileuploadsummary": "КӀэкӀэу:",
+       "filereuploadsummary": "Файлым и зэблэхъунхэр:",
+       "filesource": "Лъапсэ:",
+       "minlength1": "ФайлэцIэр зы буквэу щытын фае мыхъуми.",
+       "filename-toolong": "ФайлыцIэр байт 240 нахьыбэ хъун лъэкIыщтэп.",
+       "badfilename": "ФайлыцIэр хъожьыгъэ мыщкIэ \"$1\".",
+       "empty-file": "Ебгъэхьыгъэ файлыр нэкIы.",
+       "file-too-large": "Ебгъэхьыгъэ файлыр иныщэ.",
+       "filename-tooshort": "ФайлыцIэр кIэкуащэ.",
+       "filetype-banned": "Мыфэдэ файл типыр адэрэп.",
+       "verification-error": "Мы файлым файл-уплъэкIуныр ыкIушъугъэп.",
+       "illegal-filename": "Мы файлыцIэр адэрэп.",
+       "overwrite": "ЩыIахэ файлым ушъхьатетхэ хъущтэп.",
+       "unknown-error": "Къончагъэ гор.",
+       "savefile": "Файлыр итх",
+       "uploadvirus": "Файлым вирусхэр илъыъ!\nКъэбар: $1",
+       "upload-source": "Лъэпсэ файл",
+       "sourcefilename": "Лъэпсэ файлым ыцI:",
+       "sourceurl": "Лъэпсэ URL:",
+       "destfilename": "ЗдакIорэ файлым цыI:",
+       "upload-description": "Файлым и къэбар",
+       "upload-options": "Илъхьан гъэпсыкIэхэр",
+       "watchthisupload": "Мы файлым лъыплъ",
+       "upload-success-subj": "ШIоу илъхьагъ",
+       "upload-proto-error": "Протокол фыкъуагъэ",
+       "upload-file-error": "ЫкIоцI фыкъуагъэ",
+       "upload-misc-error": "ЗэхэмышIыкIыгъэ илъхьан фыкъуагъэ",
+       "upload-http-error": "HTTP фыкъуагъэ горэ хъугъэ: $1",
+       "upload-dialog-title": "Файлыр илъхь",
+       "upload-dialog-error": "Фыкъуагъэ горэ хъугъэ",
+       "upload-dialog-button-cancel": "Ыуж икӀ",
+       "upload-dialog-button-done": "ЗэшIуэкIыгъэ",
+       "upload-dialog-button-save": "Итх",
+       "upload-dialog-button-upload": "Илъхь",
+       "upload-dialog-label-select-file": "Къыхэх файл",
+       "upload-dialog-label-infoform-title": "Къэбар",
+       "upload-dialog-label-infoform-name": "ЦIэ",
+       "upload-dialog-label-infoform-description": "АгурыбгъэIон",
+       "upload-dialog-label-usage-title": "Гъэфедэныгъэ",
+       "upload-dialog-label-usage-filename": "ФайлыцIэ",
+       "backend-fail-notexists": "Файлэу $1 щыIэп.",
+       "backend-fail-delete": "Файлэу \"$1\" тегъэкIын лъэкIырэп.",
+       "backend-fail-read": "Файлэу \"$1\" еплъын лъэкIырэп.",
+       "backend-fail-create": "Файлэу \"$1\" еIэзэн лъэкIырэп.",
+       "uploadstash": "Илъхьан шъэф",
+       "http-invalid-url": "URL къуанч: $1",
+       "http-read-error": "HTTP и еджэн фыкъуагъэ.",
+       "upload-curl-error6": "URL-м нэсын лъэкIырэп",
+       "license-header": "ЛицензиешӀын",
+       "nolicense": "Зи хэшыпыкIыгъэп",
+       "license-nopreview": "(Ыпэтеплъэр гъэпсыгъэп)",
+       "upload_source_file": "(къыхэпхыгъэ файлыр уи компьютер щыщ)",
+       "listfiles-delete": "ТегъэкI",
+       "imgfile": "файл",
+       "file-anchor-link": "Файл",
+       "filehist": "Файл тарихъ",
+       "filehist-help": "Мафэ/уахътэм теӀункӀ итеплъэр ащыгъум зэрэщытыгъэр плъэгъуным пае.",
+       "filehist-revert": "зэкIэгъэкIон",
+       "filehist-current": "джырэ",
+       "filehist-datetime": "Мафэ/Уахътэ",
+       "filehist-thumb": "рэсым цӀыку",
+       "filehist-thumbtext": "Зэманэу $1-м и версие и теплъэцIыкIу",
+       "filehist-user": "Нэбгрэ",
+       "filehist-dimensions": "Иинагъэхэр",
+       "filehist-comment": "ПыӀухьажь",
+       "imagelinks": "Файлым и гъэфедэн",
+       "linkstoimage": "КIэлъыкIорэ {{PLURAL:$1|нэкIубгъор ещэ|$1 нэкIубгъохэм ащэ}} мы файлым:",
+       "nolinkstoimage": "Мыщ къэзыщэу нэкӀубгъо пари щыӀэп.",
+       "sharedupload-desc-here": "Мы файлыр мыщ къикIыгъ $1 ыкIи нэмыкI проектхэм ащыгъэфедэн лъэкIыщт.\nИнформациеу [$2 файлым и гурыIон-тхыгъэм] щыщыр ычIэгъкIэ щыт.",
+       "upload-disallowed-here": "Мы файлым ухэӀэзахьыжьын уфитэп.",
+       "randompage": "ОшӀэдэмышӀэ нэкӀубгъу",
+       "randomincategory-category": "Категорие:",
+       "randomincategory-legend": "Категорием щыщэу ошIэдэмышIэ нэкIубгъу",
+       "randomincategory-submit": "КӀо",
+       "statistics": "Статистикэ",
+       "statistics-header-pages": "Нэк1убгъо статистикэ",
+       "statistics-header-edits": "ЕIэзэнхэм ястатистикэ",
+       "statistics-header-users": "Нэбгырэмэ ястатистикэ",
+       "statistics-header-hooks": "НэмыкI статистикэ",
+       "statistics-pages": "НэкӀубгъохэр",
+       "statistics-files": "Илъхьэгъэ файлэхэр",
+       "pageswithprop-submit": "КӀо",
+       "brokenredirects-edit": "еӀаз",
+       "brokenredirects-delete": "тегъэкI",
+       "nbytes": "$1{{PLURAL:$1|байт|байтхэр}}",
+       "nmembers": "$1 {{PLURAL:$1|объект|объектхэр}}",
+       "shortpages": "НэкIубгъо кIакIохэр",
+       "longpages": "НэкIубгъо кIахьхэр",
+       "protectedpages-page": "НэкӀубгъо",
+       "protectedpages-reason": "ЗыпкъырыкIырэр",
+       "protectedpages-unknown-timestamp": "ЗэхэмышIыкIыгъэ",
+       "newpages": "НэкӀубгъуакӀэхэр",
+       "newpages-username": "НэбгырацIэ:",
+       "ancientpages": "Жъыдэдэ нэкIубгъохэр",
+       "move": "Хьы",
+       "movethispage": "ЫцIэ зэблэхъу мы нэкIубгъом",
+       "pager-older-n": "{{PLURAL:$1|нахьыжъэу 1|нахьыжъхэу $1}}",
+       "booksources": "Тхылъхэр къыздикӀыгъэхэр",
+       "booksources-search-legend": "Тхылъ лъапсэхэм алъыхъу",
+       "booksources-search": "Лъыхъу",
+       "log": "Логхэр",
+       "allpages": "НэкIубгъо пстэур",
+       "prevpage": "Ыпэит нэкубгъор ($1)",
+       "allarticles": "НэкӀубгъо пстэур",
+       "allpagessubmit": "KӀо",
+       "categories": "Категориехэр",
+       "mywatchlist": "Лъыплъэ куп",
+       "watch": "Лъыплъ",
+       "unwatch": "Лъымыплъэжь",
+       "watching": "Лъыплъ...",
+       "unwatching": "Лъымплъэжь...",
+       "enotif_impersonal_salutation": "{{SITENAME}} хэлэжьакIо",
+       "enotif_anon_editor": "ТымышӀэрэ нэбгыр $1",
+       "created": "къагъэхъуыгъ",
+       "changed": "зэблэхъугъэ",
+       "deletepage": "ТегъэкI нэкIбгъор",
+       "confirm": "Теубыт",
+       "excontent": "дэтхэгъагъэр: \"$1\"",
+       "excontentauthor": "дэтхэгъагъэр: \"$1\" (хэлэжьэкIо закъоэр \"[[Special:Contributions/$2|$2]]\")",
+       "delete-confirm": "ТегъэкI \"$1\"",
+       "delete-legend": "ТегъэкI",
+       "actioncomplete": "ЗэшIогъэкIыгъэ",
+       "actionfailed": "ЗэшIогъэкIыгъэп",
+       "dellogpage": "Тегъэкӏыкӏэ лог",
+       "dellogpagetext": "Анахь бэмышI тегъэкIынмэ я куп ычIэгъкIэ",
+       "deletionlog": "тегъэкӏынмэ я лог",
+       "reverted": "Ыпэрэ версие горэм дзыгъэ",
+       "deletecomment": "ЗыпкъырыкIырэр:",
+       "deletereasonotherlist": "ПэмыкI къызпкъырыкIрэр",
+       "delete-edit-reasonlist": "ТегъэкIын къызпкъырыкIхэм яIэзэн",
+       "deleteprotected": "Мы нэкIубгъор ухъумагъэшъ, тебгъэкIышъущтэп.",
+       "rollback": "ЕIэзэнхэр зэкIэгъэкIожь",
+       "rollbacklink": "къегъэгъэзэжъ",
+       "rollbacklinkcount": "зэкIэгъакIу $1 {{PLURAL:$1|зэхъокIыныгъэ|зэхъокIыныгъэхэр}}",
+       "sessionfailure-title": "Сессиер зэтеуагъ",
+       "changecontentmodel": "НэкIубгъом и кIоцIырытым и модел зэблэхъун",
+       "changecontentmodel-legend": "КIоцIырытым и модел зэблэхъун",
+       "changecontentmodel-title-label": "НэкIубгъуацIэ",
+       "changecontentmodel-model-label": "КIоцIырытым и моделыкIэ",
+       "changecontentmodel-reason-label": "ЗыпкъырыкIырэр:",
+       "changecontentmodel-success-title": "КIоцIырытым и модел зэблэхъугъэ",
+       "log-name-contentmodel": "КIоцIырыт моделым и зэхъокIхэм я тарихъ",
+       "protectlogpage": "Ухъумэным и лог",
+       "protectedarticle": "ухъумагъэ «[[$1]]»",
+       "unprotectedarticle": "\"[[$1]]\" и ухъумэныгъэр техыгъ",
+       "prot_1movedto2": "[[$1]]-р мыдыкIэ кощыгъэ [[$2]]",
+       "protect-badnamespace-title": "Мыухъумэгъэ цIэчIыпI",
+       "protect-badnamespace-text": "ЦIэчIыпIэм илъ нэкIубгъохэр ухъумэгъэн лъэкIырэп.",
+       "protect-norestrictiontypes-title": "Мыухъумэгъэ нэкIубгъу",
+       "protect-legend": "Тегъэпытыхь ухъумэныгъэр",
+       "protectcomment": "ЗыпкъырыкIырэр:",
+       "protectexpiry": "ЕкΙыжьы:",
+       "protect_expiry_invalid": "ИкI-зэманыр къуанчэ.",
+       "protect-default": "Мыухъумагъэ",
+       "protect-level-autoconfirmed": "АутоуплъэкIужьыгъэ нэбгырэ закъохэр ары фитхэр",
+       "protect-level-sysop": "Администратор закъохэр ары фитхэр",
+       "protect-summary-cascade": "каскадэу",
+       "protect-expiring": "екIыжьы $1 (UTC)",
+       "protect-expiring-local": "екIыжьы $1",
+       "protect-othertime": "ПэмыкI зэман:",
+       "protect-othertime-op": "пэмыкI зэман",
+       "protect-otherreason-op": "ПэмыкI къызпкъырыкIрэр",
+       "protect-edit-reasonlist": "Ухъумэн къызпкъырыкIхэм яIэзэн",
+       "restriction-type": "Фитыныгъэ:",
+       "minimum-size": "Минимал инагъэ",
+       "maximum-size": "Максимал инагъэ:",
+       "pagesize": "(байт)",
+       "restriction-edit": "ЕIаз",
+       "restriction-move": "Хьы",
+       "restriction-create": "КъэшI",
+       "restriction-upload": "Къыхащ",
+       "restriction-level-sysop": "зэрэпсаоу ухъумагъэ",
+       "restriction-level-autoconfirmed": "(ызныкъокӀэ ухъумагъэ)",
+       "undelete": "ТегъэкIыгъэ нэкIубгъохэр къэгъэлъагъу",
+       "undeletepage": "ТегъэкIыгъэ нэкIубгъохэр къэгъэлъагъу, зэшIогъэуцожьых",
+       "viewdeletedpage": "ТегъэкIыгъэ нэкIубгъохэр къэгъэлъагъу",
+       "undelete-fieldset-title": "Версиехэр зэшIогъэуцожь",
+       "undeletebtn": "ЗэшIогъэуцожь",
+       "undeletelink": "еплъ/зэкIэгъакIу",
+       "undeleteviewlink": "еплъ",
+       "undeletecomment": "ЗыпкъырыкIырэр:",
+       "undelete-search-title": "ТегъэкIыжьыгъэ нэкIубгъомэ алъыхъу",
+       "undelete-search-box": "ТегъэкIыжьыгъэ нэкIубгъомэ алъыхъу",
+       "undelete-search-prefix": "Къэгъэлъагъу нэкIубгъохэр мыщкIэ къежьэхэрэр:",
+       "undelete-search-submit": "Лъыхъу",
+       "undelete-show-file-submit": "Ары",
+       "namespace": "ЦӀэчӀыпӀ:",
+       "invert": "Зэшъхьатегъэуцу хэгъэщыгъэр",
+       "namespace_association": "ЕхьылӀэгъэ цӀэчӀыпӀэр",
+       "blanknamespace": "(ШъхьаӀ)",
+       "contributions": "{{GENDER:$1|ХэлэжьакIом}} и лэжьыгъэ Iахь",
+       "contributions-title": "$1 нэбгырэм и лэжьыгъэ",
+       "mycontris": "Лэжьыгъэ",
+       "contribsub2": "{{GENDER:$3|$1}} пае ($2)",
+       "contributions-userdoesnotexist": "Аккаунтэу \"$1\" регистрацие шIыгъэп.",
+       "uctop": "(джырэ)",
+       "month": "Мазэм ыкӀоцӀ (ыкӀи нахь жьэу):",
+       "year": "Илъэсым ыкӀоцӀ (ыкӀи нахь жьэу):",
+       "sp-contributions-newbies": "Аккаунт кШэ закъомэ я лэжьыгъэр къэгъэлъагъу",
+       "sp-contributions-newbies-sub": "Аккаунт кIэмэ апай",
+       "sp-contributions-logs": "Логхэр",
+       "sp-contributions-talk": "гущыIэ",
+       "sp-contributions-username": "IP-адрес е нэбгырацIэ:",
+       "sp-contributions-submit": "Лъыхъу",
+       "whatlinkshere": "Мы нэкӀубгъом къэзыщэрэ зэпыщэхэр",
+       "whatlinkshere-title": "\"$1\"-м къэзыщэрэ нэкӀубгъохэр",
+       "whatlinkshere-page": "НэкӀубгъо:",
+       "linkshere": "Мы нэкӀубгъомэ зэпыщэр мыщ къащэ <strong>[[:$1]]</strong>:",
+       "isredirect": "езгъэкӀокӀырэ нэкӀубгъо",
+       "istemplate": "хэлъхьаныгъэ",
+       "isimage": "файл зэпыщэ",
+       "whatlinkshere-prev": "{{PLURAL:$1|ыпэ ит|ыпэ ит $1}}",
+       "whatlinkshere-next": "{{PLURAL:$1|кӀэлъыкӀорэр|кӀэлъыкӀорэ $1}}",
+       "whatlinkshere-links": "← зэпыщэхэр",
+       "whatlinkshere-hideredirs": "$1 гъэкӀожьын",
+       "whatlinkshere-hidelinks": "$1 зэпыщ",
+       "whatlinkshere-filters": "Филтрэхэр",
+       "ipboptions": "сыхьатитIу:2 hours, зымаф:1 day,мэфищ:3 days, зытхьамаф:1 week, тхьамафитӀу:2 weeks, зымаз:1 month, мэзищ:3 months, мэзих:6 months, зыилъэс:1 year, ренэу:infinite",
+       "ipblocklist-empty": "Блок купыр нэкIы.",
+       "blocklink": "егъэт",
+       "unblocklink": "Ӏухъотещ",
+       "change-blocklink": "Ӏухъор зэблэхъу",
+       "contribslink": "лъэжьыгъэ",
+       "movelogpage": "Кощхэм я лог",
+       "revertmove": "зэкIэгъэкIон",
+       "export": "НэкӀубгъохэр къыхэщын",
+       "allmessagesname": "ЦIэ",
+       "thumbnail-more": "Джадэ къэшӀ",
+       "import-interwiki-submit": "Къих",
+       "import-mapping-namespace": "Къихи цIэчIыпIэм къилъхь:",
+       "tooltip-pt-userpage": "Ситхьапэ",
+       "tooltip-pt-mytalk": "Уи гущыӀэ нэкӀубгъу",
+       "tooltip-pt-preferences": "Сызыфаехэр",
+       "tooltip-pt-watchlist": "НэкӀубгъоу зэӀазэхэрэм узылъыплъэу куп",
+       "tooltip-pt-mycontris": "Силэжьыгъэр",
+       "tooltip-pt-login": "Системэм ухахьэмэ дэгъу; егъэзыгъэ Ӏофэп",
+       "tooltip-pt-logout": "ХэкӀыжь системэм",
+       "tooltip-pt-createaccount": "Ӏамал щыӀэмэ аккаунт егъажьи системэм хахь; ау егъэзыгъэ Ӏоф хэлъэп",
+       "tooltip-ca-talk": "Апэ мэхьанэ нэкӀубгъом и тегущыӀэн",
+       "tooltip-ca-edit": "Гъэтэрэзыжь мы нэкӀубгъор",
+       "tooltip-ca-addsection": "Секцие кӀэ горэ къэубл",
+       "tooltip-ca-viewsource": "Мы нэкубгъор ухъумагъ.\nАу ылъапсэ плъэгъушъущт",
+       "tooltip-ca-history": "Мы нэкӀубгъом иверсиежъхэр",
+       "tooltip-ca-move": "Хьы мы нэкӀубгъор",
+       "tooltip-ca-watch": "НэкӀубгъор лъыплъэ купым хэгъахъу",
+       "tooltip-ca-unwatch": "Мы нэкIубгъор си лъыплъэ купым хэгъэкI",
+       "tooltip-search": "{{SITENAME}}-ым лъыхъу",
+       "tooltip-search-go": "ЩыӀэмэ, мыр зыцӀэ дэдэ нэкӀубгъом кӀо",
+       "tooltip-search-fulltext": "Мы тхыгъэр нэкӀубгъомэ къахэгъуат",
+       "tooltip-p-logo": "НэкӀубгъо шъхьаӀэм кӀо",
+       "tooltip-n-mainpage": "НэкӀубгъо шъхьаӀэм кӀо",
+       "tooltip-n-mainpage-description": "НэкӀубгъо шъхьаӀэм кӀо",
+       "tooltip-n-portal": "Проектым пае, пшӀэшъущтыр, сыд пӀомэ узэплъыщтыр",
+       "tooltip-n-currentevents": "КъэбаркӀэ нэкӀубгъу",
+       "tooltip-n-recentchanges": "Мы виким и аужрэ зэхъокӀыгъохэр",
+       "tooltip-n-randompage": "ОшӀэдэмышӀэ нэкӀубгъогорэ къигъахь",
+       "tooltip-n-help": "ӀэпыӀэгъу зыщыбгъотыщт чӀыпӀэр",
+       "tooltip-t-whatlinkshere": "Мы нэкӀубгъом къэзыщэрэ зэпыщэ пстэур",
+       "tooltip-t-recentchangeslinked": "Мы нэкӀубгъом пышӀагъэ нэкӀубгъорхэмэ яаужрэ зэблэхъухэр",
+       "tooltip-feed-atom": "Мы нэкӀубгъом ехьылӀэгъэ Atom чэзыур",
+       "tooltip-t-contributions": "Мы нэбгырэм и лэжьыгъэхэр",
+       "tooltip-t-upload": "Файлэхэр къилъхь",
+       "tooltip-t-specialpages": "Шъхьаф нэкӀубгъо пстэур",
+       "tooltip-t-print": "НэкӀубгъом ихэутын теплъ",
+       "tooltip-t-permalink": "Мы нэкӀубгъом къакIорэ зэмыхъокӀ зэпыщ",
+       "tooltip-ca-nstab-main": "КӀоцӀытхагъэм еплъ",
+       "tooltip-ca-nstab-user": "ЦӀыфым итхьапэ еплъ",
+       "tooltip-ca-nstab-special": "Мы нэкӀубгъор шъхьафы, зыцэ хэптхэжьынэу щытэп",
+       "tooltip-ca-nstab-project": "Проектым и нэкӀубгъу",
+       "tooltip-ca-nstab-image": "Тхьапэм и файл еплъ",
+       "tooltip-ca-nstab-template": "Шапхъэ къэгъэлъагъу",
+       "tooltip-ca-nstab-category": "Категорие тхьапэм еплъ",
+       "tooltip-minoredit": "Мэхьанэ зимыIэ хэIэзэныгъэу къэгъэлъагъу",
+       "tooltip-save": "Зэблэпхъугъэхэр дэтхэжь",
+       "tooltip-preview": "Ыпэ яплъ уи хэӀэзэнхэм, мыр гъэфедэба бгъэпытэным ыпэ!",
+       "tooltip-diff": "Яплъ зэпхъокӀыгъэхэмэ",
+       "tooltip-rollback": "\"ЗэкIэгъакIу\"-эм зэтеIункIэу зэкIегъэкIожьы еIэзэнхэу ыужрэ хэлэжьакIомкIэ шIыгъэхэр",
+       "tooltip-undo": "«КӀэгъэкӀожьын»-ым мы зэхъокӀыныгъэр зэкӀегъэкӀожьы ыкӀи еӀэзэкӀо формэр утеплъэшъунэу къызэӀуехы. ЗыфызэкӀэбгъэкӀожьыгъэри пыптхэжьышъущт.",
+       "tooltip-summary": "Къэбар тӀэкӀу горэ итх",
+       "simpleantispam-label": "Спам-ебэнрэ уплъэкӀун.\nМыщ зи хаптхэ <strong>хъущтэп</strong>!",
+       "pageinfo-toolboxlink": "НэкӀубгъом и информацие",
+       "previousdiff": "← ЫпэкъэкӀорэ еӀэзэн",
+       "nextdiff": "Нахь еӀэзэныгъакӀ →",
+       "file-info-size": "Пиксел $1 × $2, файлым иинагъэ: $3, MIME-тип: $4",
+       "svg-long-desc": "SVG файл, номиналэу $1 × $2 пиксел, файлым иинагъэ: $3",
+       "show-big-image": "Оригинал файлыр",
+       "show-big-image-preview": "Мыщ и ыпэтеплъэм иинагъэр: $1.",
+       "show-big-image-other": "НэпэмыкI {{PLURAL:$2|зэхэщыкIэ|зэхэщыкIэхэр}}: $1.",
+       "show-big-image-size": "Пиксел $1 × $2",
+       "bad_image_list": "Форматыр зэрщытыр:\n\nГулытэ зиӀэныр тхылъым и тамыгъэхэм (сатыр тамыгъэ * къежьэхэр).\nСатырым и техьэпӀэ япэрем сурэт иплъхьэ мыхъуным и техьэпӀэ иӀэн фай.\nЯужы ит техьэпӀэхэр хэгъэкӀа фэдэу къилъытэну, сурэтыр здиплъэ хъуну тхыгъэхэр.",
+       "metadata": "Метадатэр",
+       "exif-orientation": "Кадрым и ориентацие",
+       "exif-xresolution": "Шъомбгъуагъ зэхэщыкIэ",
+       "exif-yresolution": "Iатыгъагъ зэхэщыкIэ",
+       "exif-datetime": "Файлым и зэхъокӀын мафэрэ, и зэманрэ",
+       "exif-make": "Камерэр къыдэзгъэкӀыгъэр",
+       "exif-model": "Камерэм и модел",
+       "exif-software": "Программ купэу гъэфедагъэр",
+       "exif-exifversion": "Exif версиер",
+       "exif-colorspace": "Теплъэшъо чӀыпӀэ",
+       "exif-datetimeoriginal": "Датэм и къежьэпӀэ мафэрэ уахътэрэ",
+       "exif-datetimedigitized": "ЦифрэшӀыным и мафэрэ, и уахътэрэ",
+       "exif-orientation-1": "Тэрэз",
+       "namespacesall": "зэкӀэ",
+       "monthsall": "зэкӀэ",
+       "specialpages": "ЯӀамышӀыкӀ нэкӀубгъохэр",
+       "tag-filter": "[[Special:Tags|Tag]] филтрэр:",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Гъэнэфалъ|Гъэнэфалъэхэр}}]]: $2)",
+       "logentry-delete-delete": "$3 нэкӀубгъор $1 {{GENDER:$2|Ӏыгъ}}",
+       "logentry-move-move": "$1 {{GENDER:$2|ыгъэкощыгъэ}} нэкIубгъоу $3-р $4-м",
+       "logentry-newusers-create": "ХэлэжьэкIо аккаунтэу $1 {{GENDER:$2|ублагъэ}}",
+       "logentry-upload-upload": "$1 {{GENDER:$2|къырищыгъ}} $3",
+       "searchsuggest-search": "Лъыхъу",
+       "api-error-badtoken": "ЫкIоцI фыкъуагъэ: Токен дэй.",
+       "api-error-empty-file": "Ебгъэхьыгъэ файлыр нэкIы.",
+       "expand_templates_input": "Ихьэрэ текст:",
+       "expand_templates_output": "Резултат",
+       "expand_templates_xml_output": "XML къикIырэр",
+       "expand_templates_ok": "Хъун",
+       "expand_templates_remove_comments": "ТегъэкI комментхэр",
+       "expand_templates_preview": "Ыпэтеплъ",
+       "pagelanguage": "НэкIубгъом ыбзэ къыхэх",
+       "pagelang-name": "НэкӀубгъо",
+       "pagelang-language": "Бзэ",
+       "pagelang-select-lang": "Бзэр къыхэх",
+       "right-pagelang": "НэкIубгъом ыбзэр зэблэхъу",
+       "action-pagelang": "мы нэкIубгъом ыбзэ зэблэхъу",
+       "log-name-pagelang": "Бзэ зэблэхъунхэм я журнал",
+       "mediastatistics-table-mimetype": "MIME-тип",
+       "mediastatistics-table-count": "Файл пчъагъэр",
+       "mediastatistics-table-totalbytes": "Пстэум ионтэгъугъэ",
+       "mediastatistics-header-unknown": "ЗэхэмышIыкIыгъэ",
+       "mediastatistics-header-drawing": "Сурэтхэр (вектор сурэтхэр)",
+       "mediastatistics-header-audio": "Мэкъамэ",
+       "mediastatistics-header-video": "Видео",
+       "mediastatistics-header-multimedia": "Мултимедиэ",
+       "mediastatistics-header-office": "Офис",
+       "mediastatistics-header-text": "Текстхэр",
+       "mediastatistics-header-archive": "Фызыгъэ форматхэр",
+       "json-error-state-mismatch": "Мыхъун е фыкъуэгъэ JSON",
+       "json-error-syntax": "Синтакс къончагъэ",
+       "headline-anchor-title": "Мы секцием къэзыщэрэ зэпыщ",
+       "special-characters-group-latin": "Латин",
+       "special-characters-group-latinextended": "Латин зэхэщыгъэ",
+       "special-characters-group-ipa": "ДФА",
+       "special-characters-group-symbols": "Символхэр",
+       "special-characters-group-greek": "Урым",
+       "special-characters-group-cyrillic": "Кирилл",
+       "special-characters-group-arabic": "Арап",
+       "special-characters-group-arabicextended": "Арап зэхэщыгъэ",
+       "special-characters-group-persian": "Перс",
+       "special-characters-group-hebrew": "Джурт",
+       "special-characters-group-bangla": "Бенгал",
+       "special-characters-group-tamil": "Тамил",
+       "special-characters-group-telugu": "Телугу",
+       "special-characters-group-sinhala": "Сингал",
+       "special-characters-group-gujarati": "Гуджарати",
+       "special-characters-group-devanagari": "Деванагари",
+       "special-characters-group-thai": "Тай",
+       "special-characters-group-lao": "Лао",
+       "special-characters-group-khmer": "Кхмер",
+       "special-characters-title-endash": "ыку-тире",
+       "special-characters-title-emdash": "тире кIахь",
+       "special-characters-title-minus": "минус символ",
+       "mw-widgets-dateinput-no-date": "Мафэр гъэнэфагъэп",
+       "mw-widgets-titleinput-description-new-page": "нэкIубгъор джыри щыIэп",
+       "mw-widgets-titleinput-description-redirect": "гъакIо мыкIэ $1"
+}
index 291ff16..b72324c 100644 (file)
@@ -8,7 +8,8 @@
                        "아라",
                        "Aħmedbaɛl",
                        "GeekEmad",
-                       "Nemo bis"
+                       "Nemo bis",
+                       "Shbib Al-Subaie"
                ]
        },
        "tog-usenewrc": ")جمّع التعديلات حسب الصفحة في أحدث التغييرات وقائمة المراقبة (يتطلب جافاسكربت",
        "isredirect": "صفحة تحويل",
        "istemplate": "مضمن",
        "isimage": "وصلة ملف",
-       "whatlinkshere-next": "{{PLURAL:$1|القادمة|ال$1 القادمة}}",
+       "whatlinkshere-next": "{{PLURAL:$1|التالية|ال$1 التالية}}",
        "whatlinkshere-links": "← وصلات",
        "whatlinkshere-hideredirs": "$1 التحويلات",
        "whatlinkshere-hidetrans": "$1 التضمينات",
index 7a6bc77..030d65f 100644 (file)
        "navigation-heading": "Navigasie-keuseskerm",
        "errorpagetitle": "Fout",
        "returnto": "Keer terug na $1.",
-       "tagline": "in {{SITENAME}}",
+       "tagline": "Vanaf {{SITENAME}}",
        "help": "Hulp",
        "search": "Soek",
        "searchbutton": "Soek",
        "go": "Wys",
        "searcharticle": "Wys",
-       "history": "Ouer weergawes",
+       "history": "Bladsy geskiedenis",
        "history_short": "Geskiedenis",
        "updatedmarker": "opgedateer sedert my laaste besoek",
        "printableversion": "Drukbare weergawe",
        "aboutsite": "Inligting oor {{SITENAME}}",
        "aboutpage": "Project:Omtrent",
        "copyright": "Inhoud is onderhewig aan $1, tensy anders vermeld",
-       "copyrightpage": "{{ns:project}}:kopiereg",
+       "copyrightpage": "{{ns:project}}:Kopieregte",
        "currentevents": "Huidige gebeure",
        "currentevents-url": "Project:Huidige gebeure",
        "disclaimers": "Voorbehoud",
        "feed-invalid": "Voertipe word nie ondersteun nie.",
        "feed-unavailable": "Sindikasievoer is nie beskikbaar",
        "site-rss-feed": "$1 RSS-voer",
-       "site-atom-feed": "$1 Atom-voer",
+       "site-atom-feed": "$1 Atoomvoer",
        "page-rss-feed": "\"$1\" RSS-voer",
-       "page-atom-feed": "\"$1\" Atom-voer",
+       "page-atom-feed": "\"$1\" Atoomvoer",
        "red-link-title": "$1 (bladsy bestaan nie)",
        "sort-descending": "Sorteer aflopend",
        "sort-ascending": "Sorteer oplopend",
        "changeemail-password": "U wagwoord vir {{SITENAME}}:",
        "changeemail-submit": "Wysig E-posadres",
        "resettokens-token-label": "$1 (huidige waarde: $2)",
-       "bold_sample": "Vetgedrukte teks",
+       "bold_sample": "Vetdruk",
        "bold_tip": "Vetdruk",
        "italic_sample": "Skuinsgedrukte teks",
        "italic_tip": "Skuinsdruk",
        "nowiki_sample": "Plaas ongeformatteerde teks hier",
        "nowiki_tip": "Ignoreer wiki-formattering",
        "image_sample": "Voorbeeld.jpg",
-       "image_tip": "Beeld/prentjie/diagram",
+       "image_tip": "Media lêer",
        "media_sample": "Voorbeeld.ogg",
-       "media_tip": "Skakel na ander tipe medialêer",
+       "media_tip": "Lêerskakel",
        "sig_tip": "Handtekening met datum",
        "hr_tip": "Horisontale streep (selde nodig)",
        "summary": "Opsomming:",
        "viewpagelogs": "Bekyk logboeke vir hierdie bladsy",
        "nohistory": "Daar is geen wysigingsgeskiedenis vir hierdie bladsy nie.",
        "currentrev": "Huidige wysiging",
-       "currentrev-asof": "Huidige wysiging per $1",
+       "currentrev-asof": "Huidige wysiging sedert $1",
        "revisionasof": "Wysiging soos op $1",
-       "revision-info": "Weergawe deur {{GENDER:$6|$2}} op $4 om $5$7",
+       "revision-info": "Weergawe deur {{GENDER:$6|$2}} op $1$7",
        "previousrevision": "← Ouer weergawe",
        "nextrevision": "Nuwer weergawe →",
        "currentrevisionlink": "Huidige weergawe",
        "mergelog": "Versmeltingslogboek",
        "revertmerge": "Samesmelting ongedaan maak",
        "mergelogpagetext": "Hieronder is 'n lys van die mees onlangse versmeltings van een bladsy se geskiedenis na 'n ander.",
-       "history-title": "$1: weergawegeskiedenis",
-       "difference-title": "$1: verskil tussen weergawes",
+       "history-title": "Weergawegeskiedenis van \"$1\"",
+       "difference-title": "Verskil tussen weergawes van \"$1\"",
        "difference-title-multipage": "$1 en $2: verskil tussen bladsye",
        "difference-multipage": "(Verskil tussen bladsye)",
        "lineno": "Lyn $1:",
        "showhideselectedversions": "Wys/versteek gekose weergawes",
        "editundo": "maak ongedaan",
        "diff-empty": "(Geen verskil)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} deur dieselfde gebruiker nie gewys nie)",
        "diff-multi-manyusers": "({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} deur meer as $2 {{PLURAL:$2|gebruiker|gebruikers}} nie gewys nie)",
        "difference-missing-revision": "{{PLURAL:$2|'n Weergawe|$2 weergawes}} van die verskil ($1) {{PLURAL:$2|is|is}} nie gevind nie.\n\nDit word meestal veroorsaak deur die volg van 'n verouderde verwysing na 'n bladsy wat verwyder is.\nDetails kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} skraplogboek] gevind word.",
        "searchresults": "Soekresultate",
        "right-override-export-depth": "Eksporteer bladsye insluitend geskakelde bladsye tot 'n diepte van 5",
        "right-sendemail": "Stuur e-pos aan ander gebruikers",
        "right-passwordreset": "Wys e-posse vir herstel van wagwoord",
-       "newuserlogpage": "Logboek van nuwe gebruikers",
+       "newuserlogpage": "Boekstaaf van nuwe gebruikers",
        "newuserlogpagetext": "Dit is 'n logboek van gebruikers wat onlangs ingeteken het.",
        "rightslog": "Gebruikersregtelogboek",
        "rightslogtext": "Hier onder is die logboek van gebruikersregte wat verander is.",
        "imagelinks": "Lêergebruik",
        "linkstoimage": "Die volgende {{PLURAL:$1|bladsy|$1 bladsye}} gebruik hierdie prent:",
        "linkstoimage-more": "Daar is meer as $1 {{PLURAL:$1|skakel|skakels}} na hierdie lêer.\nDie volgende lys vertoon slegs die eerste {{PLURAL:$1|skakel|$1 skakels}} wat na die lêer verwys.\n'n [[Special:WhatLinksHere/$2|Volledige lys]] is ook beskikbaar.",
-       "nolinkstoimage": "Daar is geen bladsye wat hierdie prent gebruik nie.",
+       "nolinkstoimage": "Daar is geen bladsye wat skakel na hierdie lêer nie.",
        "morelinkstoimage": "Wys [[Special:WhatLinksHere/$1|meer skakels]] na die lêer.",
        "linkstoimage-redirect": "$1 (lêeraanstuur) $2",
        "duplicatesoffile": "Die volgende {{PLURAL:$1|lêer is 'n duplikaat|$1 lêers is duplikate}} van die lêer ([[Special:FileDuplicateSearch/$2|meer details]]):",
        "booksources-invalid-isbn": "Die ingevoerde ISBN-kode blyk asof dit ongeldig is; maak asseblief seker dat u dit sonder fout oorgekopiëer het vanaf die oorspronklike bron.",
        "specialloguserlabel": "Uitvoerende gebruiker:",
        "speciallogtitlelabel": "Teiken (bladsy of gebruiker):",
-       "log": "Logboeke",
+       "log": "Boekstawe",
        "all-logs-page": "Alle openbare logboeke",
        "alllogstext": "Vertoon 'n samestelling van alle boekstawings van {{SITENAME}}.\nU kan die resultate vernou deur 'n boekstaaftipe, gebruikersnaam (kas-sensitief) of spesifieke blad (ook kas-sensitief) te kies.",
        "logempty": "Geen inskrywings in die logboek voldoen aan die kriteria nie.",
        "emailuser": "Stuur e-pos na hierdie gebruiker",
        "emailuser-title-target": "E-pos die {{GENDER:$1|gebruiker}}",
        "emailuser-title-notarget": "E-pos gebruiker",
-       "emailpage": "Stuur e-pos na gebruiker",
        "emailpagetext": "As {{GENDER:$1|dié gebruiker}} 'n geldige e-posadres in sy/haar gebruikersvoorkeure het, sal hierdie vorm 'n enkele boodskap stuur. Die e-posadres in u [[Special:Preferences|gebruikersvoorkeure]] sal verskyn as die \"Van\"-adres van die pos. Dus sal die ontvanger kan terug antwoord.",
        "defemailsubject": "E-pos van {{SITENAME}}-gebruiker \"$1\"",
        "usermaildisabled": "E-pos deur gebruikers is gedeaktiveer.",
        "actioncomplete": "Aksie uitgevoer",
        "actionfailed": "Aksie het gefaal",
        "deletedtext": "\"$1\" is geskrap.\nSien die $2 vir 'n rekord van onlangse skrappings.",
-       "dellogpage": "Skraplogboek",
+       "dellogpage": "Skrapboeksaaf",
        "dellogpagetext": "Hier onder is 'n lys van die mees onlangse skrappings. Alle tye is bedienertyd (UGT).",
        "deletionlog": "skraplogboek",
        "reverted": "Het terug gegaan na vroeëre weergawe",
        "delete-toobig": "Die bladsy het 'n lang wysigingsgeskiedenis, meer as $1 {{PLURAL:$1|weergawe|weergawes}}.\nVerwydering van die soort blaaie is beperk om ontwrigting van {{SITENAME}} te voorkom.",
        "delete-warning-toobig": "Hierdie bladsy het 'n lang wysigingsgeskiedenis; meer as $1 {{PLURAL:$1|wysiging|wysigings}}.\nDeur weg te doen met hierdie bladsy mag dalk die werking van {{SITENAME}} versteur;\nTree asseblief versigtig op.",
        "rollback": "Rol veranderinge terug",
-       "rollbacklink": "Rol terug",
+       "rollbacklink": "rol terug",
        "rollbacklinkcount": "rol {{PLURAL:$1|een wysiging|$1 wysigings}} terug",
        "rollbacklinkcount-morethan": "rol meer as {{PLURAL:$1|een wysiging|$1 wysigings}} terug",
        "rollbackfailed": "Terugrol onsuksesvol",
        "rollback-success": "Wysigings deur $1 is teruggerol.\nDie laaste weergawe van $2 is teruggeplaas.",
        "sessionfailure-title": "Sessie het gefaal",
        "sessionfailure": "Dit lyk of daar 'n probleem met u sessie is.\nHierdie aksie is gekanselleer omdat dit 'n veiligheidsrisiko is (moontlike kaping van u sessie).\nGaan een bladsy terug, herlaai die bladsy en probeer dan weer.",
-       "protectlogpage": "Beskermlogboek",
+       "protectlogpage": "Beskermingboekstaaf",
        "protectlogtext": "Hieronder is 'n lys van veranderinge wat aan die beveilig van bladsye aangebring is.\nSien die [[Special:ProtectedPages|lys van beveiligde bladsye]] vir alle bladsye wat tans operasioneel beveilig is.",
        "protectedarticle": "het [[$1]] beskerm",
        "modifiedarticleprotection": "Die beskermingsvlak vir \"[[$1]]\" is gewysig",
        "movepage-page-moved": "Die bladsy $1 is na $2 geskuif.",
        "movepage-page-unmoved": "Die bladsy $1 kon nie na $2 geskuif word nie.",
        "movepage-max-pages": "Die maksimum van $1 {{PLURAL:$1|bladsy|bladsye}} is geskuif. Die oorblywende bladsye na nie outomaties geskuif word nie.",
-       "movelogpage": "Skuiflogboek",
+       "movelogpage": "Skuif boekstaaf",
        "movelogpagetext": "Hier onder is 'n lys van geskuifde bladsye.",
        "movesubpage": "{{PLURAL:$1|Subbladsy|Subbladsye}}",
        "movesubpagetext": "Die {{PLURAL:$1|subbladsy|$1 subbladsye}} van hierdie blad word hieronder gewys.",
        "tooltip-pt-logout": "Teken uit",
        "tooltip-pt-createaccount": "U word aangemoedig om 'n gebruiker te skep en aan te meld, hoewel dit nie verpligtend is nie.",
        "tooltip-ca-talk": "Bespreking oor die inhoudbladsy",
-       "tooltip-ca-edit": "U kan hierdie bladsy wysig. Gebruik asseblief die voorskoufunksie vóór u dit stoor.",
+       "tooltip-ca-edit": "Wysig hierdie bladsy",
        "tooltip-ca-addsection": "Begin 'n nuwe bespreking",
        "tooltip-ca-viewsource": "Hierdie bladsy is beskerm. U kan die bronteks besigtig.",
        "tooltip-ca-history": "Ouer weergawes van hierdie bladsy",
        "tooltip-n-mainpage": "Besoek die Tuisblad",
        "tooltip-n-mainpage-description": "Gaan na die tuisblad",
        "tooltip-n-portal": "Meer oor die projek, wat jy kan doen, nuttige skakels",
-       "tooltip-n-currentevents": "'n Plek waar almal gesellig kan verkeer",
+       "tooltip-n-currentevents": "Agtergrondinligting oor aktuele sake",
        "tooltip-n-recentchanges": "'n Lys van onlangse wysigings",
        "tooltip-n-randompage": "Laai 'n lukrake bladsye",
        "tooltip-n-help": "Vind meer uit oor iets",
        "tooltip-t-whatlinkshere": "'n Lys bladsye wat hierheen skakel",
        "tooltip-t-recentchangeslinked": "Onlangse wysigings aan bladsye wat vanaf hierdie bladsy geskakel is",
        "tooltip-feed-rss": "RSS-voed vir hierdie bladsy",
-       "tooltip-feed-atom": "Atom-voed vir hierdie bladsy",
+       "tooltip-feed-atom": "Atoomvoer vir hierdie bladsy",
        "tooltip-t-contributions": "Bekyk 'n lys van bydraes deur hierdie gebruiker",
        "tooltip-t-emailuser": "Stuur 'n e-pos aan hierdie gebruiker",
-       "tooltip-t-upload": "Laai beelde of ander medialêers op",
+       "tooltip-t-upload": "Laai lêers op",
        "tooltip-t-specialpages": "'n Lys van al die spesiale bladsye",
        "tooltip-t-print": "Drukbare weergawe van hierdie bladsy",
        "tooltip-t-permalink": "'n Permanente skakel na hierdie weergawe van die bladsy",
        "tooltip-watchlistedit-raw-submit": "Opdateer dophoulys",
        "tooltip-recreate": "Herskep hierdie bladsy al is dit voorheen geskrap",
        "tooltip-upload": "Begin oplaai",
-       "tooltip-rollback": "Rol met een kliek die laaste gebruiker se wysiging(s) van aan hierdie bladsy terug.",
+       "tooltip-rollback": "Rol met een kliek die laaste gebruiker se wysiging(s) aan hierdie bladsy terug.",
        "tooltip-undo": "Met \"ongedaan maak\" maak u hierdie wysiging ongedaan en land u in die wysigingsvenster.\nU kan daar 'n wysigingsopsomming byvoeg.",
        "tooltip-preferences-save": "Stoor voorkeure",
        "tooltip-summary": "Verskaf 'n kort opsomming",
        "spam_reverting": "Besig met terugrol na die laaste weergawe wat nie skakels na $1 bevat nie",
        "spam_blanking": "Alle weergawes met 'n skakel na $1 word verwyder",
        "spam_deleting": "Alle weergawes bevat verwysings na $1. Bladsy verwyder",
-       "simpleantispam-label": "Antispam-kontrole.\n<strong>Moenie</strong> die veld invul nie!",
+       "simpleantispam-label": "<strong>Moenie</strong> die veld invul nie!",
        "pageinfo-title": "Inligting oor \"$1\"",
        "pageinfo-not-current": "Hierdie gegewens is slegs vir die huidige weergawe beskikbaar.",
        "pageinfo-header-basic": "Basiese inligting",
index 1bf03a3..f5b8df0 100644 (file)
        "history": "Trametes stǣr",
        "history_short": "Stǣr",
        "updatedmarker": "nīwod æfter mīnre lætestan sōcne",
-       "printableversion": "Ūtmǣlendlīc fadung",
+       "printableversion": "Ūtmǣlendlicu fadung",
        "permalink": "Fæst hlenca",
        "print": "Ūtmǣlan",
        "view": "Sihþ",
        "view-foreign": "Sihþ on $1",
-       "edit": "Adihtan",
+       "edit": "Ādihtan",
        "create": "Scieppan",
        "create-local": "Besettan stōwlice gemearcunge",
        "editthispage": "Adihtan þisne tramet",
        "view-pool-error": "Wālā, þā þegntōlas nū oferlīce wyrcaþ.\nTō mænige brūcendas gesēcaþ tō sēonne þisne tramet.\nWē biddaþ þæt þū abīde scortne tīman ǣr þū gesēce to sēonne þisne tramet eft.\n\n$1",
        "pool-errorunknown": "Uncūþ wōh",
        "aboutsite": "Gecȳþness ymbe {{GRAMMAR:wrēgendlīc|{{SITENAME}}}}",
-       "aboutpage": "Project:Gecȳþness",
+       "aboutpage": "Project:Gefrǣge",
        "copyright": "Man mæg innunge under $1 findan, būton þǣr hit is elles amearcod.",
        "copyrightpage": "{{ns:project}}:Gelīcnessriht",
        "currentevents": "Gelimpunga þisses tīman",
        "portal": "Gemǣnscipes ingang",
        "portal-url": "Project:Gemǣnscipes ingang",
        "privacy": "Ānlēpnesse rǣd",
-       "privacypage": "Project:Ānlēpnesse rǣd",
+       "privacypage": "Project:Ä\80nlÄ«Ä\93pnesse rÇ£d",
        "badaccess": "Þafunge wōh",
        "badaccess-group0": "Þū ne mōst dōn þā dǣde þǣre þe þū hafast abede.",
        "badaccess-groups": "Þēos dǣd þǣre þū hafast abeden is synderlīce alȳfedlic brūcendum on {{PLURAL:$2|þissum þrēate|ānum þāra þrēata}}: $1.",
        "resetpass-submit-loggedin": "Andwendan þafungword",
        "resetpass-submit-cancel": "Undōn",
        "passwordreset": "Settan þafungword eft",
-       "passwordreset-legend": "Settan þafungword eft",
        "passwordreset-username": "Brūcendnama:",
        "bold_sample": "Þicce traht",
        "bold_tip": "Þicce traht",
        "recentchanges-legend": "Nīwra andwendunga cyras",
        "recentchanges-summary": "Sēon þā nīwostan andwendunga þisses wiki on þissum tramete",
        "recentchanges-feed-description": "Īwan þā nīwostan andwendunga þæs wiki mid þissum strēame",
-       "recentchanges-label-newpage": "Þēos adihtung scōp nīwne tramet",
-       "recentchanges-label-minor": "Þēos is lytel adihtung",
+       "recentchanges-label-newpage": "Þēos ādihtung scōp nīwne tramet",
+       "recentchanges-label-minor": "Þēos is lytel ādihtung",
        "recentchanges-label-bot": "Searuþrǣl fremede þās adihtunge",
        "recentchanges-label-plusminus": "Þæs trametes micelness wæs andwended þȳs rīme grēatbitena",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (seoh ēac [[Special:NewPages|getæl nīwra trameta]])",
        "filerevert-legend": "Settan ymelan on bæc",
        "filedelete-submit": "Forlēosan",
        "unusedtemplateswlh": "ōðre hlencan",
-       "randompage": "Gelimplīc tramet",
+       "randompage": "Gelimplic tramet",
        "statistics": "Cȳþþu",
        "statistics-articles": "Innunge trametas",
        "statistics-pages": "Trametas",
        "allmessages-filter-modified": "Andwended",
        "allmessages-language": "Sprǣc:",
        "allmessages-filter-submit": "Gān",
-       "thumbnail-more": "Mǣrsian",
+       "thumbnail-more": "Gerȳman",
        "filemissing": "Ymele is æfweard",
        "import": "Inbringan trametas",
        "import-interwiki-submit": "Inbringan",
        "tooltip-pt-logout": "Ūtmeldian",
        "tooltip-pt-createaccount": "Þū āhst wyrcan grīman tō brūcenne, ac þū ne þearft þæt dōn.",
        "tooltip-ca-talk": "Mōtung ymbe þone innunge tramet",
-       "tooltip-ca-edit": "Þū meaht þisne tramet adihtan. Brūc lā þone forebysene cnæpp ǣr þū hordie.",
+       "tooltip-ca-edit": "Þisne tramet ādihtan.",
        "tooltip-ca-addsection": "Beginnan nīwne dǣl",
        "tooltip-ca-viewsource": "Þes tramet is borgen.\nÞū canst his fruman sēon.",
        "tooltip-ca-history": "Ǣrran fadunga þisses trametes",
        "specialpages-group-other": "Ōðre syndrige trametas",
        "specialpages-group-users": "Brūcendas and riht",
        "blankpage": "Tramet is æmettig",
+       "tag-filter": "[[Special:Tags|Mearcincles]] siftere:",
        "tags-edit": "adihtan",
        "htmlform-submit": "Forþsendan",
        "htmlform-reset": "Undōn andwendunga",
index 94ed9b8..94c021e 100644 (file)
@@ -52,7 +52,8 @@
                        "Emara",
                        "Macofe",
                        "Yahya Sakhnini",
-                       "Mervat Salman"
+                       "Mervat Salman",
+                       "Shbib Al-Subaie"
                ]
        },
        "tog-underline": "سطر تحت الوصلات:",
        "emailuser": "مراسلة المستخدم",
        "emailuser-title-target": "راسل بالبريد الإلكتروني هذا  {{GENDER:$1| المستخدم}}",
        "emailuser-title-notarget": "مراسلة المستخدم",
-       "emailpage": "إرسال رسالة للمستخدم",
        "emailpagetext": "يمكنك استخدام الاستمارة بالأسفل لإرسال رسالة بريد إلكتروني إلى {{GENDER:$1|هذا المستخدم|هذه المستخدمة}}.\n'''يمكن أن يرى المرسل إليه عنوان بريدك الإلكتروني''' الذي أدخلته في [[Special:Preferences|تفضيلاتك]] كعنوان المرسل في البريد الإلكتروني، كي يستطيع المتلقي الرد عليك مباشرة.",
        "defemailsubject": "رسالة {{SITENAME}} من المستخدم \"$1\"",
        "usermaildisabled": "بريد المستخدم الإلكتروني معطل",
        "emailccsubject": "نسخة من رسالتك إلى $1: $2",
        "emailsent": "أُرسل البريد الإلكتروني",
        "emailsenttext": "أُرسلت رسالتك الإلكترونية.",
-       "emailuserfooter": "هذا البريد الإلكتروني تم إرساله بواسطة $1 إلى $2 بواسطة وظيفة \"{{int:emailpage}}\" في {{SITENAME}}.",
+       "emailuserfooter": "هذا البريد الإلكتروني تم إرساله بواسطة $1 إلى $2 بواسطة وظيفة \"{{int:emailuser}}\" في {{SITENAME}}.",
        "usermessage-summary": "ترك رسالة نظام.",
        "usermessage-editor": "مراسل النظام",
        "watchlist": "قائمة مراقبتي",
        "istemplate": "مضمن",
        "isimage": "وصلة ملف",
        "whatlinkshere-prev": "{{PLURAL:$1|السابق|ال$1 السابقة}}",
-       "whatlinkshere-next": "{{PLURAL:$1|القادمة|ال$1 القادمة}}",
+       "whatlinkshere-next": "{{PLURAL:$1|التالية|ال$1 التالية}}",
        "whatlinkshere-links": "وصلات",
        "whatlinkshere-hideredirs": "$1 التحويلات",
        "whatlinkshere-hidetrans": "$1 التضمينات",
index 48225ef..3b89d8b 100644 (file)
        "resetpass-wrong-oldpass": "klmṫ s-srr ḫaliyya wlla mo'aqata ma ṣalḫa-ċ.\nymkn ṫkon bddalṫiha bĝda wlla ṫlbti klmṫ srr mo'qaṫa jdida.",
        "resetpass-temp-password": "mot de passe moaqata",
        "passwordreset": "ĝawd klmṫ s-srr",
-       "passwordreset-legend": "ĝawd klmṫ s-srr",
        "passwordreset-disabled": "maymkn-ċ ṫĝawd klmṫ s-srr f-had l-wiki.",
        "passwordreset-username": "smiṫ l-mosṫĥdim:",
        "passwordreset-email": "ĝonwan l-email:",
        "summary-preview": "Prévizualizasyon dyal l-moleĥĥaṣ:",
        "subject-preview": "moĝayanat l-moḍoĝ/l-ĝonwan:",
        "blockedtitle": "had lmostakhdim tbloka",
-       "blockedtext": "'''smiṫ l-mosṫĥdim wlla ĝonwan l-IP ṫaĝk rah ṫbloka.'''\n\nlli blokak howa $1.\ns-sabab lli ĝtah howa ''$2''.\n\n* bda l-blok: $8\n* ġa ystala: $6\n* lli mqṣod b-lblok: $7\n\nymkn lik ṫṫaṣl b-$1 wlla ċi [[{{MediaWiki:Grouppage-sysop}}|idari]] aĥor baċ ṫnaqċ l-blok.\nma ymkn-likċ ṫĥddm l-ĥaṣṣiya ṫaĝ '{{MediaWiki:emailpage}}' ġir ila konti ĥṫariṫi ċi ĝonwan dl-email is f-[[Special:Preferences|ṫfḍilaṫ l-ḫisab]] ṫaĝk o-ma konti-ċ mbloki mn l-ĥdma bih.\nĝonwan l-IP ṫaĝk daba howa $3, o-lmoĝrrif d-lblok howa #$5.\nmli ṫkṫb ċi talab ĥaṣṣk ṫĝti fih gaĝ had ṫ-ṫafaṣil lli l-foq.",
-       "autoblockedtext": "ĝonwan l-IP ṫaĝk rah ṫbloka ṫilqa'iyyan ḫqqaċ ĥdm bih ċi waḫd aĥor blokah $1.\ns-sabab lli ĝtah howa\n\n:''$2''\n\n* bda l-blok: $8\n* ġa ystala: $6\n* lli mqṣod b-lblok: $7\n\nymkn lik ṫṫaṣl b-$1 wlla ċi [[{{MediaWiki:Grouppage-sysop}}|idari]] aĥor baċ ṫnaqċ l-blok.\n\nĥaṣṣk ṫĝrf billa ma ymkn-likċ ṫĥddm l-ĥaṣṣiya ṫaĝ '{{MediaWiki:emailpage}}' ġir ila konti ĥṫariṫi ċi ĝonwan dl-email is f-[[Special:Preferences|ṫfḍilaṫ l-ḫisab]] ṫaĝk o-ma konti-ċ mbloki mn l-ĥdma bih.\n\nĝonwan l-IP ṫaĝk daba howa $3, o-lmoĝrrif d-lblok howa #$5.\nmli ṫkṫb ċi talab ĥaṣṣk ṫĝti fih gaĝ had ṫ-ṫafaṣil lli l-foq.",
+       "blockedtext": "'''smiṫ l-mosṫĥdim wlla ĝonwan l-IP ṫaĝk rah ṫbloka.'''\n\nlli blokak howa $1.\ns-sabab lli ĝtah howa ''$2''.\n\n* bda l-blok: $8\n* ġa ystala: $6\n* lli mqṣod b-lblok: $7\n\nymkn lik ṫṫaṣl b-$1 wlla ċi [[{{MediaWiki:Grouppage-sysop}}|idari]] aĥor baċ ṫnaqċ l-blok.\nma ymkn-likċ ṫĥddm l-ĥaṣṣiya ṫaĝ '{{int:emailuser}}' ġir ila konti ĥṫariṫi ċi ĝonwan dl-email is f-[[Special:Preferences|ṫfḍilaṫ l-ḫisab]] ṫaĝk o-ma konti-ċ mbloki mn l-ĥdma bih.\nĝonwan l-IP ṫaĝk daba howa $3, o-lmoĝrrif d-lblok howa #$5.\nmli ṫkṫb ċi talab ĥaṣṣk ṫĝti fih gaĝ had ṫ-ṫafaṣil lli l-foq.",
+       "autoblockedtext": "ĝonwan l-IP ṫaĝk rah ṫbloka ṫilqa'iyyan ḫqqaċ ĥdm bih ċi waḫd aĥor blokah $1.\ns-sabab lli ĝtah howa\n\n:''$2''\n\n* bda l-blok: $8\n* ġa ystala: $6\n* lli mqṣod b-lblok: $7\n\nymkn lik ṫṫaṣl b-$1 wlla ċi [[{{MediaWiki:Grouppage-sysop}}|idari]] aĥor baċ ṫnaqċ l-blok.\n\nĥaṣṣk ṫĝrf billa ma ymkn-likċ ṫĥddm l-ĥaṣṣiya ṫaĝ '{{int:emailuser}}' ġir ila konti ĥṫariṫi ċi ĝonwan dl-email is f-[[Special:Preferences|ṫfḍilaṫ l-ḫisab]] ṫaĝk o-ma konti-ċ mbloki mn l-ĥdma bih.\n\nĝonwan l-IP ṫaĝk daba howa $3, o-lmoĝrrif d-lblok howa #$5.\nmli ṫkṫb ċi talab ĥaṣṣk ṫĝti fih gaĝ had ṫ-ṫafaṣil lli l-foq.",
        "blockednoreason": "ta sabab mamaatich",
        "whitelistedittext": "khassk  $1 bach taadl sfahi",
        "confirmedittext": "ĥaṣṣk ṫ'kkd l-ĝonwan dl-email dialk qbl ma ṫĝddl ṣ-ṣfaḫi.\ndĥĥel o-'kked l-ĝonwan dl-email dialk fṫ-[[Special:Preferences|ṫfḍilaṫ]] dialk.",
        "nlinks": "$1 {{PLURAL:$1|l-wṣla|dl-wṣlaṫ}}",
        "nmembers": "$1 {{PLURAL:$1|Ĝoḍw|Aĝḍa'}}",
        "nrevisions": "$1 {{PLURAL:$1|l-ṃoṛajaĝa|dl-ṃoṛajaĝaṫ}}",
-       "nviews": "$1 {{PLURAL:$1|l-ṃoċahada|dl-ṃoċahadaṫ}}",
        "nimagelinks": "mosṫĥmal f-$1 {{PLURAL:$1|ṣ-ṣfḫa|dṣ-ṣfaḫi}}",
        "ntransclusions": "mosṫĥmal f-$1 {{PLURAL:$1|ṣ-ṣfḫa|dṣ-ṣfaḫi}}",
        "lonelypages": "sfahi itima",
        "listgrouprights-removegroup-self": "hyyed mn l-ḫisab ṫaĝi {{PLURAL:$2|mjmoĝṫ|mjmoĝaṫ}}: $1",
        "mailnologin": "Ma kayenċ l-ĝonwan dyal l-morasil",
        "emailuser": "Ṣifet imayl le had l-mosṫeĥdim",
-       "emailpage": "sift email lhad lmostkhdim",
        "defemailsubject": "Imayl dyal {{SITENAME}}",
        "usermaildisabled": "L-Mosṫeḫdim ma mĥeddemċ l-imayl dyalo.",
        "usermaildisabledtext": "Ma ymken lekċ ṫṣifet ċi imayl le l-mosṫeĥdimin l-ĥrin fe had l-wiki",
index 1c23594..af56180 100644 (file)
@@ -36,7 +36,7 @@
        "tog-shownumberswatching": "بين عدد اليوزرز المراقبين",
        "tog-oldsig": "الامضا دلوقتى:",
        "tog-fancysig": "امضا خام (من غير لينك أوتوماتيك)",
-       "tog-uselivepreview": "استخدم البروفه السريعه (تجريبي)",
+       "tog-uselivepreview": "استخدم البروفه السريعه",
        "tog-forceeditsummary": "نبهنى عند تدخيل ملخص للتعديل  فاضي",
        "tog-watchlisthideown": "خبى التعديلات بتاعتى من لستة المراقبة",
        "tog-watchlisthidebots": "خبى التعديلات بتاعة البوت من لستة المراقبة",
        "permalink": "لينك دايم",
        "print": "اطبع",
        "view": "شوف",
+       "view-foreign": "اعرض على $1",
        "edit": "تعديل",
+       "edit-local": "تعديل الوصف المحلى",
        "create": "إبتدى",
+       "create-local": "ضيف وصف محلى",
        "editthispage": "عدل الصفحه دى",
        "create-this-page": "أنشيء الصفحه دى",
        "delete": "مسح",
        "deletethispage": "امسح الصفحه دى",
        "undeletethispage": "استرجاع الصفحه دى",
        "undelete_short": "استرجاع {{PLURAL:$1|تعديل واحد|تعديلان|$1 تعديلات|$1 تعديل|$1 تعديلا}}",
-       "viewdeleted_short": "{{PLURAL:$1|تعديل واحد ملغى|تعديلين ملغيين|$1 تعديلات ملغية|$1 تعديل ملغى|$1 تعديل ملغى}}",
+       "viewdeleted_short": "عرض {{PLURAL:$1||تعديل واحد|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}",
        "protect": "حمايه",
        "protect_change": "غيّر",
        "protectthispage": "احمى الصفحه دى",
        "otherlanguages": "بلغات تانيه",
        "redirectedfrom": "(تحويل من $1)",
        "redirectpagesub": "صفحة تحويل",
+       "redirectto": "تحويل ل",
        "lastmodifiedat": "الصفحه دى اتعدلت اخر مره فى $1,‏ $2.",
        "viewcount": "الصفحة دى اتدخل عليها{{PLURAL:$1|مرة واحدة|مرتين|$1 مرات|$1 مرة}}.",
        "protectedpage": "صفحه محميه",
        "jumptonavigation": "استكشاف",
        "jumptosearch": "تدوير",
        "view-pool-error": "متأسفين, السيرفرات عليها حمل كبير دلوقتى.\nفى يوزرات كتير قوى بيحاولو يشوفو الصفحه دى.\nلو سمحت تستنا شويه قبل ما تحاول تستعرض الصفحه دى من تانى.\n\n$1",
+       "generic-pool-error": "متأسفين, السيرفرات عليها حمل كبير دلوقتى.\nفى يوزرات كتير قوى بيحاولو يشوفو الصفحه دى.\nلو سمحت تستنا شويه قبل ما تحاول تستعرض الصفحه دى من تانى.",
        "pool-timeout": "انتهاء الانتظار للقفل",
        "pool-queuefull": "طابور الانتخاب مليان",
        "pool-errorunknown": "غلط مش معروف",
        "youhavenewmessagesfromusers": "{{PLURAL:$4|عندك}} $1 من {{PLURAL:${{PLURAL:$3|}}3|يوزر واحد|يوزر واحد|اتنين يوزر |$3 مستخدمين|$3 يوزر}} ($2).",
        "youhavenewmessagesmanyusers": "عندك $1 من يوزرات كتير  ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|رساله جديده|999=رسايل جديده}}",
-       "newmessagesdifflinkplural": "{{PLURAL:$1|تعديل|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}",
+       "newmessagesdifflinkplural": "أحدث {{PLURAL:$1|تغيير|999=تغييرات}}",
        "youhavenewmessagesmulti": "عندك ميسيدج جديدة فى $1",
        "editsection": "تعديل",
        "editold": "تعديل",
        "actionthrottled": "العمليه دى اتزنقت",
        "actionthrottledtext": "علشان نمنع ال سبام ،أنت ممنوع تعمل  الفعل دا عدد كبير من المرات فى فترة زمنية قصيرة، و انت ا تجاوزت  الحد دا . لو سمحت تحاول مرة ثانية بعد دقائق.",
        "protectedpagetext": "الصفحة دى اتحمت من التعديل.",
-       "viewsourcetext": "ممكن تشوف وتنسخ مصدر  الصفحه دى:",
+       "viewsourcetext": "ممكن تشوف وتنسخ مصدر الصفحه دى",
        "protectedinterface": "الصفحة دى هى اللى بتوفر نص الواجهة بتاعة البرنامج،وهى مقفولة لمنع التخريب.\nعلشان إضافة أو تغيير الترجمات لجميع مشاريع الويكي،  لو سمحت روح على [//translatewiki.net/ translatewiki.net]، مشروع ترجمة ميدياويكى",
        "editinginterface": "'''تحذير''': أنت بتعدل صفحة بتستخدم فى الواجهة النصية  بتاعة البرنامج. \nالتغييرات فى الصفحة دى ها تأثر على مظهر واجهة اليوزر لليوزرز التانيين. \nعلشان إضافة أو تغيير الترجمات لجميع مشاريع الويكي،  لو سمحت روح على [//translatewiki.net/ translatewiki.net]، مشروع ترجمة ميدياويكى",
        "cascadeprotected": "الصفحة دى محمية من التعديل، بسبب انها مدمجة فى {{PLURAL:$1|الصفحة|الصفحات}} دي، اللى مستعمل فيها خاصية \"حماية الصفحات المدمجة\" :\n$2",
        "createaccount-text": "فى واحد فتح حساب باسم الايمل بتاعك على {{SITENAME}} ($4) بالاسم \"$2\"، وبباسورد \"$3\". لازم تسجل دخولك دلوقتى و تغير الباسورد بتاعتك.\n\nلو سمحت تتجاهل الرسالة دى اذا الحساب دا اتفتحلك بالغلط.",
        "login-throttled": "انت عملت  محاولات لوجين كتيره  ع الحساب ده.\nمن فضلك استنى $1 قبل المحاولة مرة تانيه.",
        "loginlanguagelabel": "اللغة: $1",
+       "pt-login": "دخول",
+       "pt-createaccount": "افتح حساب",
        "changepassword": "غير الباسورد",
        "resetpass_announce": "اتسجل دخولك دلوقتى بالكود اللى اتبعتلك فى الايميل. علشان تخلص عملية الدخول ،لازم تعملك باسورد جديدة هنا:",
        "resetpass_text": "<!-- أضف نصا هنا -->",
        "semiprotectedpagewarning": "'''ملاحظه:''' الصفحه دى اتقفلت بطريقه تخلّى اليوزرات المتسجلين بس هما اللى يقدرو يعدّلوها.\nاخر سجل محطوط تحت علشان المراجعه:",
        "cascadeprotectedwarning": "<strong>تحذير: الصفحة دى اتقفلت بطريقة تخلى اليوزرز السيوبات بس هم اللى يقدرو يعدلوها، ودا علشان هى مدموجة فى {{PLURAL:$1|الصفحة|الصفحات}} التالية واللى اتعملها حمتية بخاصية \"حماية الصفحات المدموجة\":</strong>",
        "titleprotectedwarning": "'''تحذير: الصفحه دى اتحمت بطريقه تخلّى [[Special:ListGroupRights|حقوق متحدده]] لازم تحتاجها علشان تعمل الصفحه.'''\nاخر سجل محطوط تحت علشان المراجعه:",
-       "templatesused": "{{PLURAL:$1|القالب المستعمل |القوالب المستعمله }}ا فى الصفحه دى:",
+       "templatesused": "{{PLURAL:$1|القالب المستعمل |القوالب المستعمله }} ف الصفحه دى:",
        "templatesusedpreview": "{{PLURAL:$1|القالب المستعمل |القوالب المستعمله}} فى البروفه دى",
        "templatesusedsection": "{{PLURAL:$1|القالب|القوالب}} اللى بتستخدم فى القسم دا:",
        "template-protected": "(حمايه كامله)",
        "mailnologin": "مافيش عنوان نبعت عليه",
        "mailnologintext": "لازم تعمل [[Special:UserLogin|تسجيل الدخول]] و تدخل ايميل صحيح فى صفحة [[Special:Preferences|التفضيلات]] علشان تقدر تبعت ايميلات لليوزرز التانيين.",
        "emailuser": "ابعت ايميل لليوزر دا",
-       "emailpage": "ابعت ايميل لليوزر ده",
        "emailpagetext": "ممكن تستعمل الاستمارة اللى تحت دى عشان تيعت ايميل {{GENDER:$1|لليوزر}} دا.\nعنوان الايميل اللى كتبته فى [[Special:Preferences|التفضيلات بتاعتك]] ح يظهر على انه عنوان الاستمارة، و بكدة اللى حيستقبله ح يقدر يرد على الايميل.",
        "defemailsubject": "ايميل {{SITENAME}} من اليوزر \"$1\"",
        "noemailtitle": "مافيش  عنوان ايميل",
        "tooltip-pt-login": "يستحسن تسجل دخولك; لكن, ده مش اجبارى",
        "tooltip-pt-logout": "خروج",
        "tooltip-ca-talk": "مناقشة صفحة الموضوع",
-       "tooltip-ca-edit": "ممكن تعدل الصفحه دى.\nبس لو سمحت استعمل زرار الپروڤه قبل ما تسييڤها.",
+       "tooltip-ca-edit": "عدل الصفحه دى",
        "tooltip-ca-addsection": "ابتدى قسم جديد",
        "tooltip-ca-viewsource": "الصفحه دى محميه.\nممكن تشوف مصدرها.",
        "tooltip-ca-history": "نسخ قديمه من الصفحه دى",
        "spam_reverting": "ترجيع آخر نسخة مافيهاش لينكات لـ $1",
        "spam_blanking": "كل النسخ فيها لينكات ل $1، فضيها",
        "simpleantispam-label": "اختبار انتي-سبام.\n'''ماتعبيش''' دا!",
+       "pageinfo-toolboxlink": "معلومات عن الصفحه",
        "markaspatrolleddiff": "علم عليها انها متراجعة",
        "markaspatrolledtext": "علم على المقاله دى إنها متراجعة",
        "markedaspatrolled": "اتعلم عليها متراجعة",
index 694c504..b70f13f 100644 (file)
        "readonly_lag": "তথ্যকোষ স্বয়ংক্ৰিয়ভাৱে বন্ধ হৈছে যাতে দ্বিতীয় শ্ৰেণীৰ তথ্যকোষৰ চাৰ্ভাৰ প্ৰধান তথ্যকোষৰ চাৰ্ভাৰৰ অৱস্থালৈ আহিব পাৰে ।",
        "internalerror": "আভ্যন্তৰীণ ত্ৰুটি",
        "internalerror_info": "আভ্যন্তৰীণ ত্ৰুটি: $1",
+       "internalerror-fatal-exception": " \"$1\" ধৰণৰ মাৰাত্মক ব্যতিক্ৰম",
        "filecopyerror": "\"$1\" ফাইলটো \"$2\"লৈ প্ৰতিলিপি কৰিব পৰা নগ’ল।",
        "filerenameerror": "\"$1\" ফাইলৰ নাম সলনি কৰি \"$2\" কৰিব পৰা নগ’ল ।",
        "filedeleteerror": "\"$1\" ফাইলতো বিলোপ কৰিব পৰা নগ’ল।",
        "directorycreateerror": "\"$1\" নিৰ্দেশিকা সৃষ্টি কৰিব পৰা নগ’ল।",
+       "directoryreadonlyerror": "নিৰ্দেশিকা \"$1\" কেৱল পাঠযোগ্য।",
+       "directorynotreadableerror": "নিৰ্দেশিকা \"$1\" পাঠযোগ্য নহয়।",
        "filenotfound": "\"$1\" নামৰ ফাইলটো বিচাৰি পোৱা নগ’ল।",
        "unexpected": "অনাকাংক্ষিত মূল্য: \"$1\"=\"$2\".",
        "formerror": "ত্ৰুটি: প্ৰপত্ৰখন জমা দিব পৰা নগ’ল",
        "badtitletext": "আপুনি বিচৰা পৃষ্ঠাটোৰ শিৰোনামা অযোগ্য, খালী বা ভুলকৈ জড়িত আন্তৰ্ভাষিক বা আন্তৰ্ৱিকি শিৰোনামা। ইয়াত এক বা ততোধিক বৰ্ণ আছে যাক শিৰোনামাত ব্যৱহাৰ কৰিব নোৱাৰি।",
        "title-invalid-empty": "অনুৰোধ কৰা পৃষ্ঠা খালি নাইবা কেৱল এটা নামস্থানৰ নামহে আছে।",
        "title-invalid-utf8": "অনুৰোধ কৰা পৃষ্ঠাৰ শিৰোনামত এটা অবৈধ UTF-8 শৃংখল আছে।",
-       "title-invalid-interwiki": "শিৰà§\8bনামত à¦\8fà¦\9fা à¦\86নà§\8dতà¦\83ৱিà¦\95ি à¦¸à¦\82যà§\8bà¦\97 à¦\86à¦\9bà§\87",
+       "title-invalid-interwiki": "à¦\85নà§\81ৰà§\8bধ à¦\95ৰা à¦¶à¦¿à§°à§\8bনামত à¦\8fà¦\9fা à¦\86নà§\8dতà¦\83ৱিà¦\95ি à¦¸à¦\82যà§\8bà¦\97 à¦\86à¦\9bà§\87 à¦¯à¦¿à¦\9fà§\8b à¦¶à¦¿à§°à§\8bনামত à¦¬à§\8dযৱহাৰ à¦\95ৰিব à¦¨à§\8bৱাৰি।",
        "title-invalid-talk-namespace": "অনুৰোধ কৰা পৃষ্ঠাৰ শিৰোনামে এটা আলোচনা পৃষ্ঠা সূচাইছে যিটো থাকিব নোৱাৰে।",
        "title-invalid-characters": "অনুৰোধ কৰা পৃষ্ঠাৰ শিৰোনামত অবৈধ চিহ্ন আছে: \"$1\"।",
        "title-invalid-magic-tilde": "অনুৰোধ কৰা পৃষ্ঠাৰ শিৰোনামত অবৈধ যাদুকৰী টাইল্ড শৃংখল আছে (<nowiki>~~~</nowiki>)।",
-       "title-invalid-too-long": "অনুৰোধ কৰা পৃষ্ঠাৰ শিৰোনাম অতি দীঘল। UTF-8 এন্‌ক'ডিঙত ই $1 বাইটতকৈ দীঘল হ'ব নালাগে।",
+       "title-invalid-too-long": "অনুৰোধ কৰা পৃষ্ঠাৰ শিৰোনাম অতি দীঘল। UTF-8 এন্‌ক'ডিঙত ই {PLURAL:$1|বাইট}}তকৈ দীঘল হ'ব নালাগে।",
        "title-invalid-leading-colon": "অনুৰোধ কৰা পৃষ্ঠাৰ শিৰোনামৰ আৰম্ভণিত এটা অবৈধ ক'ল'ন আছে।",
        "perfcached": "তলত দিয়া তথ্যখিনি আগতে জমা কৰি থোৱা (cached) আৰু সাম্প্ৰতিক নহ'ব পাৰে। এই তথ্যখিনিত সৰ্বোচ্চ {{PLURAL:$1|এটা ফলাফল|$1টা ফলাফল}} উপলব্ধ।",
        "perfcachedts": "তলত দিয়া তথ্য খিনি আগতে জমা কৰি থোৱা (cached) আৰু শেষবাৰৰ কাৰণে $1 ত নবীকৰণ কৰা হৈছিল। সৰ্বাধিক {{PLURAL:$4|এটা ফলাফল|$4 টা ফলাফল}} এই কেশ্বত পাব।",
        "actionthrottled": "কাৰ্য লেহেম কৰা হৈছে",
        "actionthrottledtext": "স্পাম ৰোধ কৰিবলৈ এই ক্ৰিয়াতো কম সময়ৰ ভিতৰত বহু বেছি বাৰ কৰাতো ৰোধ কৰা হৈছে, আৰু আপুনি ইতিমধ্যে সেই সীমা অতিক্ৰম কৰিলে।\nঅনুগ্ৰহ কৰি কিছু সময় পাছত চেষ্টা কৰক।",
        "protectedpagetext": "সম্পাদনা ৰোধ কৰিবলৈ এই পৃষ্ঠাটো সুৰক্ষিত কৰা হৈছে।",
-       "viewsourcetext": "à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8bৰ à¦\89à§\8eস à¦\9aাব à¦\86ৰà§\81 à¦¨à¦\95ল à¦\95ৰিব à¦ªà¦¾à§°à§\87",
-       "viewyourtext": "আপুনি '''আপোনাৰ সম্পাদনাসমূহ'''ৰ উৎস চাব আৰু এই পৃষ্ঠালৈ নকল কৰিব পাৰে:",
+       "viewsourcetext": "à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8bৰ à¦\89à§\8eস à¦\9aাব à¦\86ৰà§\81 à¦ªà§\8dৰতিলিপি à¦\95ৰিব à¦ªà¦¾à§°à§\87।",
+       "viewyourtext": "আপুনি <strong>আপোনাৰ সম্পাদনাসমূহ</strong>ৰ উৎস চাব আৰু এই পৃষ্ঠালৈ প্ৰতিলিপি কৰিব পাৰে।",
        "protectedinterface": "এই পৃষ্ঠাই ৱিকি ছফ্টৱেৰৰ ইণ্টাৰফে’চ বাৰ্তা প্ৰদান কৰে আৰু ইয়াক সুৰক্ষিত কৰি ৰখা হৈছে।\nসকলো ৱিকিৰ বাবে অনুবাদ যোগ কৰিবলৈ বা সলাবলৈ অনুগ্ৰহ কৰি মিডিয়াৱিকি স্থানীয়কৰণ প্ৰকল্প [//translatewiki.net/ translatewiki.net] ব্যৱহাৰ কৰক।",
        "editinginterface": "<strong>সাৱধানবাণী:</strong> আপুনি সম্পাদনা কৰি থকা পৃষ্ঠাটো এই ছফ্টৱেৰৰ ইণ্টাৰফে’চ বাৰ্তা দিবলৈ ব্যৱহাৰ হয়।\nএই পৃষ্ঠাৰ সাল-সলনিয়ে এই ৱিকিত আন ব্যৱহাৰকাৰীৰ বাবে ইণ্টাৰফে’চত প্ৰভাৱ পেলাব।",
        "translateinterface": "সকলো ৱিকিৰ বাবে অনুবাদ যোগ বা সালসলনি কৰিবৰ বাবে অনুগ্ৰহ কৰি মিডিয়াৱিকি স্থানীয়কৰণ প্ৰকল্প //translatewiki.net/ translatewiki.net] ব্যৱহাৰ কৰক।",
        "history-feed-description": "ৱিকিত উপলব্ধ এই পৃষ্ঠাৰ সংশোধন ইতিহাস",
        "history-feed-item-nocomment": "$1-য়ে $2",
        "history-feed-empty": "অনুৰোধ কৰা পৃষ্ঠাৰ কোনো অস্বিত্ব নাই।\nহয়তো ইয়াক বিলোপ কৰা হৈছে অথবা ইয়াৰ নাম সলনি কৰা হৈছে।\n[[Special:Search|সন্ধান]] ব্যৱহাৰ কৰি প্ৰাসংগিক পৃষ্ঠাসমূহ চাওক।",
+       "history-edit-tags": "নিৰ্বাচিত সংশোধনসমূহৰ টেগ্‌ সম্পাদনা কৰক",
        "rev-deleted-comment": "(সম্পাদনা সাৰাংশ আঁতৰোৱা হ'ল)",
        "rev-deleted-user": "(সদস্যনাম আঁতৰোৱা হ’ল)",
        "rev-deleted-event": "(ল'গ সবিশেষ আঁতৰোৱা হ'ল)",
        "newpageletter": "ন",
        "boteditletter": "ব",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|জন সদস্যই|জন সদস্যই}} এই পৃষ্ঠা নিৰীক্ষণ কৰিছে]",
-       "rc_categories": "à¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দৰ à¦¸à§\80মাবদà§\8dধতা (\"|\" à¦¦à¦¿ à¦ªà§\83থà¦\95 à¦\95ৰà¦\95)",
-       "rc_categories_any": "যিকোনো",
+       "rc_categories": "শà§\8dৰà§\87ণà§\80সমà§\82হৰ à¦¸à§\80মাবদà§\8dধতা (\"|\" à¦¦à¦¿ à¦ªà§\83থà¦\95 à¦\95ৰà¦\95):",
+       "rc_categories_any": "বাà¦\9bনি à¦\95ৰাৰ à¦®à¦¾à¦\9cত à¦¯à¦¿à¦\95à§\8bনà§\8b",
        "rc-change-size-new": "সালসলনিৰ পিছত $1 {{PLURAL:$1|বাইট|বাইট}}",
        "newsectionsummary": "/* $1 */ নতুন অনুচ্ছেদ",
        "rc-enhanced-expand": "সবিশেষ দেখুৱাওক",
        "upload-too-many-redirects": "এই URL টোত অতি বেছি পুনৰ্নিৰ্দেশনা আছে",
        "upload-http-error": "এটা HTTP ত্ৰুটিয়ে দেখা দিছে: $1",
        "upload-copy-upload-invalid-domain": "এই ডমেইনত কপী আপল'ড নাপাব।",
+       "upload-dialog-title": "ফাইল আপল’ড কৰক",
+       "upload-dialog-error": "এটা ত্ৰুটি পোৱা গৈছে",
+       "upload-dialog-warning": "এটা সতৰ্কবাণী পোৱা গৈছে",
+       "upload-dialog-button-cancel": "বাতিল কৰক",
+       "upload-dialog-button-done": "কৰা হ’ল",
+       "upload-dialog-button-save": "সাঁচি থওক",
+       "upload-dialog-button-upload": "আপল'ড",
+       "upload-dialog-label-select-file": "ফাইল নিৰ্বাচন কৰক",
+       "upload-dialog-label-infoform-title": "বিস্তাৰিত",
+       "upload-dialog-label-infoform-name": "নাম",
+       "upload-dialog-label-infoform-description": "বিৱৰণ",
+       "upload-dialog-label-usage-title": "ব্যৱহাৰ",
+       "upload-dialog-label-usage-filename": "ফাইলৰ নাম",
        "backend-fail-stream": "$1 ফাইলটো ষ্ট্ৰীম কৰিব পৰা নগ'ল।",
        "backend-fail-backup": "$1 ফাইলটো বেকআপ্‌ কৰিব পৰা নগ'ল।",
        "backend-fail-notexists": "$1 ফাইলটোৰ কোনো অস্তিত্ব নাই।",
        "randomincategory": "শ্ৰেণীৰ যিকোনো পৃষ্ঠা",
        "randomincategory-invalidcategory": "\"$1\" বৈধ শ্ৰেণী নাম নহয়।",
        "randomincategory-nopages": "[[:Category:$1|$1]] শ্ৰেণীত কোনো পৃষ্ঠা নাই।",
+       "randomincategory-category": "শ্ৰেণী:",
+       "randomincategory-legend": "শ্ৰেণীৰ যিকোনো পৃষ্ঠা",
+       "randomincategory-submit": "যাওক",
        "randomredirect": "অনিৰ্ধাৰিত পুননিৰ্দেশ",
        "randomredirect-nopages": "\"$1\" নামস্থানত কোনো পুননিৰ্দেশ নাই ।",
        "statistics": "পৰিসংখ্যা",
        "emailuser": "এই সদস্যজনলৈ ই-মেইল পঠিয়াওক",
        "emailuser-title-target": "{{GENDER:$1|সদস্যজনলৈ}} ইমেইল পঠিয়াওক",
        "emailuser-title-notarget": "ব্যৱহাৰকাৰী ই-পত্ৰ প্ৰেৰণ কৰক",
-       "emailpage": "ই-পত্ৰ ব্যৱহাৰকাৰী",
        "emailpagetext": "তলৰ প্ৰপত্ৰখন ব্যৱহাৰ কৰি আপুনি এই {{GENDER:$1|সদস্যজনলৈ}} ই-মেইল পঠাব পাৰে ।\nআপুনি [[Special:Preferences|আপোনাৰ সদস্য পছন্দসমূহ]]ত প্ৰৱেশ কৰা ই-মেইল ঠিকনাটো প্ৰেৰকৰ ঠিকনা হিছাপে দেখা যাব, যাতে মেইলৰ প্ৰাপকে আপোনাক উত্তৰ দিব পাৰে ।",
        "defemailsubject": "\"$1\" সদস্যৰ পৰা {{SITENAME}} ই-মেইল",
        "usermaildisabled": "ব্যৱহাৰকাৰীৰ ই-মেইল নিষ্ক্ৰিয়",
        "rollback-success": "$1 ৰ সম্পাদনাসমূহ পূৰ্বৰ অৱস্থালৈ ঘূৰাই নিয়া হৈছে;\nপৃষ্ঠাটো $2 য়ে কৰা শেষ সংশোধনীলৈ ঘূৰাই নিয়া হৈছে ।",
        "sessionfailure-title": "ছেছন বিফল",
        "sessionfailure": "আপোনাৰ লগ-ইন ছেছনত সম্ভৱত: কোনো সমস্যা হৈছে;\nছেছন হাইজেকিং প্ৰতিৰোধ কৰিবলৈ এই কামটো বাতিল কৰা হৈছে ।\nঅনুগ্ৰহ কৰি আগৰ পৃষ্ঠালৈ ঘূৰি গৈ ৰিল’ড কৰি পুনৰ চেষ্টা কৰক ।",
+       "logentry-contentmodel-change-revert": "আগৰ অৱস্থালৈ ঘূৰি যাওক",
        "protectlogpage": "সুৰক্ষা সূচী",
        "protectlogtext": "পৃষ্ঠা সুৰক্ষাৰ সালসলনিসমূহৰ তালিকা তলত দিয়া হ’ল ।\nবৰ্তমান কাৰ্য্যৰত পৃষ্ঠা সুৰক্ষাসমূহৰ বাবে [[Special:ProtectedPages|সুৰক্ষিত পৃষ্ঠাৰ তালিকা]] চাওক ।",
        "protectedarticle": "সুৰক্ষিত \"[[$1]]\"",
index d22ff19..03001da 100644 (file)
@@ -18,7 +18,6 @@
        "tog-hideminor": "Anubrir les ediciones menores nos cambeos recientes",
        "tog-hidepatrolled": "Anubrir les ediciones vixilaes nos cambeos recientes",
        "tog-newpageshidepatrolled": "Anubrir les páxines vixilaes na llista de páxines nueves",
-       "tog-hidecategorization": "Tapecer la categorización de páxines",
        "tog-extendwatchlist": "Espander la llista de siguimientu p'amosar tolos cambeos, non solo los más recientes",
        "tog-usenewrc": "Agrupar los cambeos por páxina nos cambeos recientes y na llista de siguimientu",
        "tog-numberheadings": "Autonumberar los encabezaos",
@@ -48,7 +47,6 @@
        "tog-watchlisthideliu": "Anubrir les ediciones d'usuarios identificaos na llista de siguimientu",
        "tog-watchlisthideanons": "Anubrir les ediciones d'usuarios anónimos na llista de siguimientu",
        "tog-watchlisthidepatrolled": "Anubrir les ediciones patrullaes na llista de siguimientu",
-       "tog-watchlisthidecategorization": "Tapecer la categorización de páxines",
        "tog-ccmeonemails": "Mandame copies de los correos qu'unvio a otros usuarios",
        "tog-diffonly": "Nun amosar el conteníu de la páxina embaxo de les diferencies",
        "tog-showhiddencats": "Amosar categoríes anubríes",
        "createacct-benefit-body2": "{{PLURAL:$1|páxina|páxines}}",
        "createacct-benefit-body3": "{{PLURAL:$1|collaborador|collaboradores}} de recién",
        "badretype": "Les contraseñes qu'escribisti nun concuayen.",
+       "usernameinprogress": "Yá ta creándose una cuenta pa esti nome d'usuariu.\nEspera.",
        "userexists": "El nome d'usuariu conseñáu yá ta usándose.\nPor favor escueyi un nome diferente.",
        "loginerror": "Error d'aniciu de sesión",
        "createacct-error": "Error de creación de cuenta",
        "rcshowhidemine": "$1 les mios ediciones",
        "rcshowhidemine-show": "Amosar",
        "rcshowhidemine-hide": "Anubrir",
-       "rcshowhidecategorization": "$1 la categorización de páxina",
-       "rcshowhidecategorization-show": "Amosar",
-       "rcshowhidecategorization-hide": "Tapecer",
        "rclinks": "Amosar los caberos $1 cambeos de los caberos $2 díes <br />$3",
        "diff": "dif",
        "hist": "hist",
        "recentchangeslinked-summary": "Esta ye una llista de los caberos cambios fechos nes páxines enllaciaes dende una páxina determinada (o nos miembros d'una categoría determinada).\nLes páxines de [[Special:Watchlist|la to llista de siguimientu]] tán en <strong>negrina</strong>.",
        "recentchangeslinked-page": "Nome de la páxina:",
        "recentchangeslinked-to": "Amosar los cambios de les páxines qu'enllacen en cuenta de los de la páxina dada",
-       "recentchanges-page-added-to-category": "[[:$1]] amestóse a la categoría",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] y {{PLURAL:$2|otra páxina|otres $2 páxines}} amestaes a la categoría",
-       "recentchanges-page-removed-from-category": "[[:$1]] desanicióse de la categoría",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] y {{PLURAL:$2|otra páxina|otres $2 páxines}} desaniciaes de la categoría",
        "upload": "Xubir ficheru",
        "uploadbtn": "Xubir ficheru",
        "reuploaddesc": "Cancelar la xubida y tornar al formulariu de xubíes",
        "emailuser": "Manda-y un corréu a esti usuariu",
        "emailuser-title-target": "Unviar un corréu electrónicu a {{GENDER:$1|esti usuariu|esta usuaria}}",
        "emailuser-title-notarget": "Unviar un corréu electrónicu a un usuariu",
-       "emailpage": "Envigar un corréu electrónicu a un usuariu",
        "emailpagetext": "Pues usar el formulariu de más abaxo pa unviar un corréu electrónicu a {{GENDER:$1|esti usuariu|esta usuaria}}.\nLa direición de corréu electrónicu qu'especificasti nes [[Special:Preferences|tos preferencies d'usuariu]] va apaecer como la direición \"Dende\" del corréu, pa que'l que lo recibe seya quien a respondete direutamente a ti.",
        "defemailsubject": "Corréu electrónicu del usuariu «$1» de {{SITENAME}}",
        "usermaildisabled": "Corréu del usuariu desactiváu",
        "emailccsubject": "Copia del to mensaxe a $1: $2",
        "emailsent": "Corréu unviáu",
        "emailsenttext": "Unviose'l to mensaxe de corréu.",
-       "emailuserfooter": "Esti corréu electrónicu unviólu $1 a $2 per aciu de la función «{{int:emailpage}}» de {{SITENAME}}.",
+       "emailuserfooter": "Esti corréu electrónicu unviólu $1 a $2 per aciu de la función «{{int:emailuser}}» de {{SITENAME}}.",
        "usermessage-summary": "Dexar un mensaxe del sistema.",
        "usermessage-editor": "Mensaxería del sistema",
        "watchlist": "Llista de siguimientu",
        "logentry-newusers-create2": "$1 {{GENDER:$2|creó}} la cuenta d'usuariu $3",
        "logentry-newusers-byemail": "$1 {{GENDER:$2|creó}} la cuenta d'usuariu $3 y la contraseña unvióse per corréu electrónicu",
        "logentry-newusers-autocreate": "La cuenta $1 {{GENDER:$2|creóse}} automáticamente",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|treslladó}} les preferencies de protección de $4 a $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|camudó}} la pertenencia a grupos de $3 dende $4 a $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|camudó}} la pertenencia a grupos de $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|promocionó}} automáticamente de $4 a $5",
index 278c26f..9bc5f95 100644 (file)
        "action-reupload": "Mövcud faylın yeni versiyasının yüklənməsi",
        "action-upload_by_url": "URL ünvanından bu faylı yükləmək",
        "action-writeapi": "API yazıdan istifadə",
-       "action-delete": "bu səhifəni sil",
+       "action-delete": "bu səhifəni silmək",
        "action-deleterevision": "bu yoxlamaı ləğv et",
        "action-deletedhistory": "səhifənin silinmə tarixinə baxmaq",
        "action-browsearchive": "Silinmiş səhifələri axtar",
        "listgrouprights-removegroup-self-all": "Bütün qrupları öz hesabından çıxara bilər",
        "mailnologin": "Ünvan yoxdur",
        "emailuser": "İstifadəçiyə e-məktub göndər",
-       "emailpage": "İstifadəçiyə e-məktub yolla",
        "defemailsubject": "\"$1\" adlı istifadəçidən {{SITENAME}} e-məktubu",
        "usermaildisabled": "İstifadəçi e-maili işləmir",
        "noemailtitle": "E-məktub ünvanı yoxdur",
        "emailmessage": "Mesaj:",
        "emailsend": "Göndər",
        "emailccme": "Məktubun surətini elektron ünvanıma göndər.",
-       "emailccsubject": " $1: $2-yə olan ismarıclarınızın surəti",
+       "emailccsubject": "$1 adlı istifadəçiyə olan ismarıcınızın surəti: $2",
        "emailsent": "E-məktub göndərildi",
        "emailsenttext": "E-məktub mesajınız göndərildi.",
        "usermessage-summary": "Sistem mesajı qoyun.",
        "deletereasonotherlist": "Digər səbəb",
        "deletereason-dropdown": "*Əsas silmə səbəbi\n** Müəllif istəyi\n** Müəllif hüququ pozuntusu\n** Vandalizm",
        "delete-edit-reasonlist": "Silmə səbəblərinin redaktəsi",
+       "delete-toobig": "Bu səhifə $1-dən artıq redaktə ilə çox böyük redaktə tarixçəsinə malikdir.\n\"{{SITENAME}}\" saytının fəaliyyətində problemlər yaratmamaq üçün bu cür səhifələrin silinməsi qadağandır.",
        "rollback": "əvvəlki halına qaytar",
        "rollbacklink": "əvvəlki halına qaytar",
        "rollbacklinkcount": "$1 {{PLURAL:$1|dəyişikliyi|dəyişikliyi}} geri qaytar",
        "blockipsuccesssub": "Bloklandı",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] bloklanıb.<br />\nBlokları yoxlamaq üçün [[Special:BlockList|bloklama siyahısına]] baxın.",
        "ipb-blockingself": "Özünü bloklayacaqsınız.! Bunu etmək istədiyinizdən əminsinizmi?",
-       "ipb-confirmhideuser": "İstifadəçini bloklamaq və redaktə siyahısından onun adını silmək üzərəsiniz. Bunu etmək istədiyinizdən əminsinizmi?",
+       "ipb-confirmhideuser": "Siz \"istifadəçini gizlə\" bəndini aktiv edərək istifadəçini bloklamaq üzrəsiniz. Bu halda istifadəçinin adı bütün siyahılarda və qeydiyyat jurnallarında görünməyəcək. Bunu etmək istədiyinizdən əminsinizmi?",
        "ipb-edit-dropdown": "Bloklama səbəblərini redaktə et",
        "ipb-unblock-addr": "$1 üzərindəki blok götürüldü",
        "ipb-unblock": "Bloku götür",
        "blocklink": "blokla",
        "unblocklink": "bloklamanı kənarlaşdır",
        "change-blocklink": "bloklamanı dəyişdir",
-       "contribslink": "Köməklər",
+       "contribslink": "töhfələr",
        "emaillink": "e-məktub göndər",
        "autoblocker": "Avtomatik olaraq bloklanmısınız. Çünki, qısa müddət əvvəl sizin IP-ünvanınız \"[[User:$1|$1]]\" tərəfindən istifadə edilmişdir.\n$1 adlı istifadəçinin bloklanma səbəbi: \"$2\"",
        "blocklogpage": "Bloklama qeydləri",
index 45623a6..cf9d6dd 100644 (file)
                        "Koroğlu",
                        "Baloch Afghanistan",
                        "Macofe",
-                       "Sadiqr"
+                       "Sadiqr",
+                       "Mjbmr"
                ]
        },
        "tog-underline": "باغلانتی‌لارین آلتینی خطله:",
        "tog-hideminor": "سوْن دییشیکلیکلرده کیچیکلری گیزلت",
        "tog-hidepatrolled": "سوْن دییشیکلیکلرده نظارتلنمیش دَییشیکلیکلری گیزلت",
-       "tog-newpageshidepatrolled": "نظارتلنمیش صحیفه‌لری یئنی صحیفه‌لر لیستین‌دن گیزلت",
+       "tog-newpageshidepatrolled": "یوْخلانمیش صفحه‌لری یئنی صفحه‌لر لیستیندن گیزلت",
        "tog-extendwatchlist": "ایزله‌دیک‌لری، یالنیز یئنی‌لر اۆچون یوْخ، بۆتون دییشیک‌لیک‌لری گؤرستمک اۆچون، گنیشلندیر.",
        "tog-usenewrc": "دَییشیک‌لیک‌لری سوْن دَییشیک‌لیک‌لر صفحه‌سینده ایزله‌دیک‌لر صفحه‌سینده گروپ‌لا (جاوااسکریپت گرک‌دیر)",
        "tog-numberheadings": "باشلیق‌لاری اوْتوماتیک نۆمره‌له",
@@ -30,8 +31,8 @@
        "tog-editsectiononrightclick": "بؤلوم‌لرین دَییشدیرمه‌سینی، باشلیق‌لارین اۆستونده ساغ‌کلیک ائتمک‌‌له ایجازه وئر",
        "tog-watchcreations": "ياراتدیغیم صفحه‌‌لری و يۆکله‌دیگیم فايل‌لاری، ایزله‌دیک‌لریمه آرتیر",
        "tog-watchdefault": "دَییشدیردیگیم صفحه‌‌لری و فايل‌لاری، ایزله‌دیک‌لریمه آرتیر",
-       "tog-watchmoves": "داشیدیغیم صحیفه‌‌لری و فايل‌لاری گؤزله‌دیکلریمه آرتیر",
-       "tog-watchdeletion": "سیلدیگیم صحیفه‌‌لری و فايل‌لاری گؤزله‌دیکلریمه آرتیر",
+       "tog-watchmoves": "داشیدیغیم صفحه‌‌لری و فايللاری ایزله‌دیکلریمه آرتیر",
+       "tog-watchdeletion": "سیلدیگیم صفحه‌‌لری و فايللاری ایزله‌دیکلریمه آرتیر",
        "tog-watchrollback": "قایتاریلمیش صفحه لری ایزلدیکلریمه آرتیر",
        "tog-minordefault": "دفالت اوْلاراق، بۆتون دَییشدیر‌مه‌لری کیچیک کیمی علامتله",
        "tog-previewontop": "اؤن‌گؤستریشی، يازماق قۇتوسوندان قاباق گؤرست",
        "redirectedfrom": "($1-دن يوْل‌لاندیریلمیش)",
        "redirectpagesub": "یوْل‌لاندیرما صحیفه‌سی",
        "redirectto": "مسیزپرین دَییشیب:",
-       "lastmodifiedat": "بۇ صفحه‌‌ سوْن کز $1، $2 چاغیندا دَییشیلمیش‌دیر.",
+       "lastmodifiedat": "بۇ صفحه‌‌ سوْن دفعه $1، $2 تاریخینده دَییشیلمیشدیر.",
        "viewcount": "بۇ صحیفه {{PLURAL:$1|بیر|$1}} دفعه گؤرولوبدور.",
        "protectedpage": "قوْرونموش صفحه",
        "jumpto": "آتیل:",
        "nstab-image": "فایل",
        "nstab-mediawiki": "مئساژ",
        "nstab-template": "شابلون",
-       "nstab-help": "یاردیم صحیفه‌سی",
+       "nstab-help": "یاردیم صفحه‌سی",
        "nstab-category": "بؤلمه",
        "nosuchaction": "بئله چالیشما یوْخدور",
        "nosuchactiontext": "URL طرفیندن بیلینن ایش گئچرسیزدیر.\nURL-ی یانلیش یازمیش، یا یانلیش بیر باغلانتی ایله گلمیش، اوْلابیلرسیز.\nهم‌ده بۇ، {{SITENAME}} سایتی ایشلدن یازیلیمین خطاسینی گؤستره بیلر.",
        "badtitle": "پیس باشلیق",
        "badtitletext": "آختاریلان صحیفه‌‌ آدی سهودیر و يا بوْشدور، يا دا دۆزگون اوْلمايان دیللر‌آراسی، ياخود ویکیلرآراسی کئچید ایستیفاده ائدیلیب. \nباشلیقلاردا ایستیفاده ائدیلمه‌سی قاداغان اوْلونان بیر و يا داها چوْخ سیمووْل ایستیفاده ائدیلمیش اوْلا بیلر.",
        "title-invalid-empty": "آختاردیٛغیٛنیٛز صفحه‌‌نین آدیٛ بوْشدۇر و یا آدلارفضاسیٛندا یالنیٛز آدیٛ وار.",
-       "title-invalid-utf8": "ایستنیلن صفحه‌نین آدیندا بیر یانلیش UTF-8 کاراکتِری وار.",
+       "title-invalid-utf8": "اÛ\8cستÙ\87â\80\8cÙ\86Û\8cÙ\84Ù\86 ØµÙ\81Ø­Ù\87â\80\8cÙ\86Û\8cÙ\86 Ø¢Ø¯Û\8cÙ\86دا Ø¨Û\8cر Û\8cاÙ\86Ù\84Û\8cØ´ UTF-8 Ú©Ø§Ø±Ø§Ú©ØªÙ\90رÛ\8c Ù\88ار.",
        "title-invalid-interwiki": "آختاردیٛغیٛنیٛز صفحه‌ آدیٛیٛندا بیر ایستیفاده‌ اوْلۇنا بیلمه‌‌ین اینتئر ویکی باغلانتیٛسیٛ وار.",
-       "title-invalid-characters": "ایستنیلن صفحه‌نین آدیندا، یانلیش کاراکتِرلر وار: «$1»",
+       "title-invalid-characters": "اÛ\8cستÙ\87â\80\8cÙ\86Û\8cÙ\84Ù\86 ØµÙ\81Ø­Ù\87â\80\8cÙ\86Û\8cÙ\86 Ø¢Ø¯Û\8cÙ\86داØ\8c Û\8cاÙ\86Ù\84Û\8cØ´ Ú©Ø§Ø±Ø§Ú©ØªÙ\90رÙ\84ر Ù\88ار: Â«$1»",
        "perfcached": "بو بیلگی، کَش اولوب‌دور و اولا بیلر گونجل اولماسین. چوخو {{PLURAL:$1|بیر نتیجه|$1 نتیجه}} کَش‌ده‌دیر.",
        "perfcachedts": "بو بیلگی کَش اولوب‌دور، سون دفعه $1 واختیندا گونجلیب‌دیر. چوخو {{PLURAL:$4|بیر نتیجه|$4 نتیجه}} کَش‌ده‌دیر.",
        "querypage-no-updates": "بو یارپاق‌دا گونجل‌له‌مک ایندی باغلانیب‌دیر.\nبورداکی بیلگیلر یئنی‌لشمیه‌جکلر.",
        "prefs-rc": "سون دَییشیکلیکلر",
        "prefs-watchlist": "ایزله‌دیکلر",
        "prefs-editwatchlist": "ایزله‌دیکلریم صفحه‌‌لری دَییشدیر",
-       "prefs-editwatchlist-label": "هامی ایزلدیکلرینیزین دَییشدیرمه سی:",
+       "prefs-editwatchlist-label": "بۆتون ایزله‌دیکلرینیزین دَییشدیرمه‌سی:",
        "prefs-editwatchlist-edit": "ایزلدیکلرینیزدن گورمک هابئله باشلیق لارین سیلمک",
        "prefs-editwatchlist-raw": "ایزله‌دیگیم خام لیستی دَییشدیر",
        "prefs-editwatchlist-clear": "ایزله دیگیم لیستی سیلمک",
        "prefs-help-signature": "دانیشیق صحیفه‌لرینده یاخیشلار گرک «<nowiki>~~~~</nowiki>» ایله ایمضالانالار. بو نیشان اوتوماتیک‌جه سیزین آدینیز و تاریخه دؤنه‌جک‌دیر.",
        "badsig": "یانلیش خام ایمضا.\nاچ‌تی‌ام‌ال تگ‌لرینی یوخلایین.",
        "badsiglength": "ایمضانیز چوخ اوزون‌دور.\nاو گرک {{PLURAL:$1|بیر|$1}} حرف‌دن اوزون اولمایا.",
-       "yourgender": "ترجیح وئریرسیز نجور توصیف اولونسون؟",
+       "yourgender": "ترجیح وئریرسینیز نئجه توصیف اولونسون؟",
        "gender-unknown": "ترجیح وئریرم بیلیندیرمییم",
        "gender-male": "کیشی",
        "gender-female": "خانیم",
        "prefs-signature": "ایمضا",
        "prefs-dateformat": "تاریخ فورمتی",
        "prefs-timeoffset": "چاغ بؤلگه‌سینین فرقی",
-       "prefs-advancedediting": "گنل تنظیم‌لر",
+       "prefs-advancedediting": "عومومی تنظیملر",
        "prefs-editor": "دَییشدیرن",
        "prefs-preview": "اؤن‌گؤستریش",
        "prefs-advancedrc": "گلیشمیش سئچَنکلر",
        "enhancedrc-history": "گئچمیش",
        "recentchanges": "سون دَییشیکلیکلر",
        "recentchanges-legend": "سون دَییشیکلیکلر سئچمه‌لری",
-       "recentchanges-summary": "بو صحیفه‌ده، بو ویکی‌ده وئریلن ان سون دَییشیکلیکلری ایزله‌یین.",
+       "recentchanges-summary": "بۇ صفحه‌ده، بۇ ویکیده وئریلن ان سوْن دَییشیکلیکلری ایزله‌یین.",
        "recentchanges-noresult": "وئریلمیش دؤنم‌ده، بو معیارلارا تطبیق اولان دَییشدیرمه یوخدور.",
        "recentchanges-feed-description": "ویکی‌ده‌کی ان سون ديَیشیکلیک‌لری بو يايیم کانالیندان ایزله‌يین.",
        "recentchanges-label-newpage": "بو دییشیک یئنی بیر صفحه یاراتدی",
        "emailuser": "بو ایستیفاده‌چی‌یه ایمیل گؤندر",
        "emailuser-title-target": "بو {{GENDER:$1|ایستیفاده‌چی}}‌یه ایمیل گؤندر",
        "emailuser-title-notarget": "ایستیفاده‌چی‌یه ایمیل گؤندر",
-       "emailpage": "ایشلدنه ایمیل گؤندر",
        "emailpagetext": "آشغیداکی فورم‌دان، بو {{GENDER:$1|ایستیفاده‌چی}}‌یه ایمیل گؤندرمک اوچون ایستیفاده ائده بیلرسینیز.\n[[Special:Preferences|اؤز ترجیحلرینیز]]ده وئرن ایمیل آدرسی، بو ایمیلین \"From\" یئرینده گؤستریله‌جک‌دیر و بونا گؤره ایمیلی آلان سیزه موستقیم جاواب گؤندره بیلر.",
        "defemailsubject": "«$1» آدلی ایستیفاده‌چی‌دن، {{SITENAME}} ایمیلی",
        "usermaildisabled": "ایستیفاده‌چی ایمیلی باغلی‌دیر",
        "emailccsubject": "سیزین $1-ه مئساژینیزین کوپی‌سی: $2",
        "emailsent": "ایمیل گؤنده‌ریلدی",
        "emailsenttext": "ایمیل مئساژینیز گئنده‌ریلدی.",
-       "emailuserfooter": "بو ایمیل، {{SITENAME}}-ده «{{int:emailpage}}» ایمکانی ایله، $1-دن $2-ه گؤندریلیب‌دیر.",
+       "emailuserfooter": "بو ایمیل، {{SITENAME}}-ده «{{int:emailuser}}» ایمکانی ایله، $1-دن $2-ه گؤندریلیبدیر.",
        "usermessage-summary": "مئساژ گئنده‌ریلدی.",
        "usermessage-editor": "سیستِم مئساژ گؤندَرَنی",
        "watchlist": "ایزله‌دیکلر",
        "undeleteviewlink": "باخ",
        "undeleteinvert": "سئچیلنی دؤندر",
        "undeletecomment": "ندن:",
-       "undeletedrevisions": "جمعی {{PLURAL:$1|1 دییش|$1 دییشدیر}} گئری قایتاریلدی.",
+       "undeletedrevisions": "جمعی {{PLURAL:$1|بیر دییش|$1 دییشدیر}} گئری قایتاریلدی.",
        "undeletedrevisions-files": "{{PLURAL:$1|1 نوسخه|$1 نوسخه}} و {{PLURAL:$2|1 فایل|$2 فایل}} برپا ائدیلدی",
        "undeletedfiles": "{{PLURAL:$1|1 فایل|$1 فایل}} برپا اولوندو",
        "cannotundelete": "برپا ائدیلمه اولمادی\n\n$1",
        "tooltip-ca-nstab-image": "فايل صفحه‌‌سینه باخین",
        "tooltip-ca-nstab-mediawiki": "سیستم مئساژلرینه باخ",
        "tooltip-ca-nstab-template": "شابلونا باخ",
-       "tooltip-ca-nstab-help": "یاردیم صحیفه‌‌سی",
+       "tooltip-ca-nstab-help": "یاردیم صفحه‌‌سی",
        "tooltip-ca-nstab-category": "بؤلمه صحیفه‌‌سینی گؤستر",
        "tooltip-minoredit": "بو دییشیگی کیچیک دییشیک کیمی قئید ائت",
        "tooltip-save": "ديَیشیکلیکلرینیزی قئيد ائدین",
        "action-pagelang": "صفحه دیلینی دَییشدیر",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (ائتکین)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''ائتکیسیز''')",
-       "mediastatistics": "Ù\85ئدÛ\8cا Ø¢Ù\85ارÙ\84ارÛ\8c",
+       "mediastatistics": "مدیا آمارلاری",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1}} بایت ($2؛ ٪$3)",
        "mediastatistics-table-mimetype": "MIME تیپی",
        "mediastatistics-table-count": "فایل‌لارین سایی",
        "special-characters-title-minus": "منفی علامتی",
        "mw-widgets-dateinput-no-date": "تاریخ سئچیلمه‌ییب",
        "mw-widgets-titleinput-description-new-page": "صفحه هله‌لیک یوخدور",
-       "mw-widgets-titleinput-description-redirect": "$1-ه یول‌لاندیر"
+       "mw-widgets-titleinput-description-redirect": "$1-ه داشی"
 }
index b721869..1660aa7 100644 (file)
@@ -21,7 +21,6 @@
        "tog-hideminor": "Хаваць дробныя праўкі ў сьпісе апошніх зьменаў",
        "tog-hidepatrolled": "Хаваць патруляваныя праўкі ў сьпісе апошніх зьменаў",
        "tog-newpageshidepatrolled": "Хаваць патруляваныя старонкі ў сьпісе новых старонак",
-       "tog-hidecategorization": "Схаваць катэгарызацыю старонак",
        "tog-extendwatchlist": "Пашырыць сьпіс назіраньня, каб ён паказваў усе зьмены, а ня толькі апошнія",
        "tog-usenewrc": "Групаваць зьмены па старонках у апошніх зьменах і сьпісе назіраньня",
        "tog-numberheadings": "Аўтаматычная нумарацыя загалоўкаў",
@@ -51,7 +50,6 @@
        "tog-watchlisthideliu": "Хаваць праўкі зарэгістраваных удзельнікаў у сьпісе назіраньня",
        "tog-watchlisthideanons": "Хаваць праўкі ананімаў у сьпісе назіраньня",
        "tog-watchlisthidepatrolled": "Хаваць патруляваныя праўкі ў сьпісе назіраньня",
-       "tog-watchlisthidecategorization": "Хаваць катэгарызацыю старонак",
        "tog-ccmeonemails": "Адпраўляць мне копіі лістоў, якія я дасылаю іншым удзельнікам",
        "tog-diffonly": "Не паказваць зьмест старонкі пад параўнаньнем зьменаў",
        "tog-showhiddencats": "Паказваць схаваныя катэгорыі",
        "createacct-benefit-body2": "{{PLURAL:$1|старонка|старонкі|старонак}}",
        "createacct-benefit-body3": "{{PLURAL:$1|удзельнік|удзельнікі|удзельнікаў}} за апошні час",
        "badretype": "Уведзеныя Вамі паролі не супадаюць.",
+       "usernameinprogress": "Стварэньне рахунку з гэтым імем удзельніка ўжо ідзе. Калі ласка, пачакайце.",
        "userexists": "Уведзенае Вамі імя ўдзельніка ўжо выкарыстоўваецца кімсьці іншым. \nКалі ласка, выберыце іншае імя.",
        "loginerror": "Памылка ўваходу",
        "createacct-error": "Памылка стварэньня рахунку",
        "right-writeapi": "выкарыстаньне API для запісаў",
        "right-delete": "выдаленьне старонак",
        "right-bigdelete": "Выдаленьне старонак зь вялікімі гісторыямі",
-       "right-deletelogentry": "Ð\92ыдаленьне і аднаўленьне асобных запісаў журналу",
+       "right-deletelogentry": "выдаленьне і аднаўленьне асобных запісаў журналу",
        "right-deleterevision": "выдаленьне і аднаўленьне асобных вэрсіяў старонак",
        "right-deletedhistory": "прагляд выдаленай гісторыі старонак без доступу да выдаленага тэксту",
        "right-deletedtext": "прагляд выдаленага тэксту і зьменаў паміж выдаленымі вэрсіямі старонак",
        "rcshowhidemine": "$1 мае праўкі",
        "rcshowhidemine-show": "Паказаць",
        "rcshowhidemine-hide": "Схаваць",
-       "rcshowhidecategorization": "$1 катэгарызацыю старонак",
-       "rcshowhidecategorization-show": "Паказаць",
        "rclinks": "Паказаць апошнія $1 зьменаў за мінулыя $2 дзён<br />$3",
        "diff": "розьн",
        "hist": "гіст",
        "upload-copy-upload-invalid-domain": "Капіяваньне загрузак не дазволенае ў гэтым дамэне.",
        "upload-dialog-title": "Загрузка файла",
        "upload-dialog-error": "Адбылася памылка",
+       "upload-dialog-warning": "Зьявілася папярэджаньне",
+       "upload-dialog-button-cancel": "Адмяніць",
+       "upload-dialog-button-done": "Зроблена",
+       "upload-dialog-button-save": "Захаваць",
+       "upload-dialog-button-upload": "Загрузіць",
        "backend-fail-stream": "Немагчыма накіраваць файл $1.",
        "backend-fail-backup": "Немагчыма зрабіць рэзэрвовую копію файла $1.",
        "backend-fail-notexists": "Файл $1 не існуе.",
        "emailuser": "Даслаць ліст",
        "emailuser-title-target": "Адправіць гэта па электроннай пошце {{GENDER:$1|гэтаму ўдзельніку|гэтай удзельніцы}}",
        "emailuser-title-notarget": "Даслаць ліст ўдзельніку ці ўдзельніцы па электроннай пошце",
-       "emailpage": "Даслаць ліст ўдзельніку ці ўдзельніцы па электроннай пошце",
        "emailpagetext": "Вы можаце выкарыстаць форму ніжэй, каб даслаць {{GENDER:$1|гэтаму ўдзельніку|гэтай удзельніцы}} ліст па электроннай пошце.\nАдрас электроннай пошты, які Вы пазначалі ў [[Special:Preferences|сваіх наладах]], будзе пазначаны ў полі ліста «Ад», і {{GENDER:$1|ўдзельнік|ўдзельніца}} зможа даслаць на гэты адрас адказ.",
        "defemailsubject": "Ліст з {{GRAMMAR:родны|{{SITENAME}}}} ад {{GENDER:$1|удзельніка|удзельніцы}} «$1»",
        "usermaildisabled": "Электронная пошта ўдзельніка адключаная",
        "emailccsubject": "Копія Вашага ліста да $1: $2",
        "emailsent": "Ліст адасланы",
        "emailsenttext": "Ваш ліст быў адасланы.",
-       "emailuserfooter": "Гэты ліст быў дасланы {{GENDER:$2|ўдзельнікам|ўдзельніцай}} $1 да {{GENDER:$2|ўдзельніка|ўдзельніцы}} $2 з дапамогай функцыі «{{int:emailpage}}» {{GRAMMAR:родны|{{SITENAME}}}}.",
+       "emailuserfooter": "Гэты ліст быў дасланы {{GENDER:$2|ўдзельнікам|ўдзельніцай}} $1 да {{GENDER:$2|ўдзельніка|ўдзельніцы}} $2 з дапамогай функцыі «{{int:emailuser}}» {{GRAMMAR:родны|{{SITENAME}}}}.",
        "usermessage-summary": "Паведамленьне пра выхад з сыстэмы.",
        "usermessage-editor": "Дастаўка сыстэмных паведамленьняў",
        "watchlist": "Сьпіс назіраньня",
index 3a8cf97..4a409ca 100644 (file)
@@ -32,7 +32,6 @@
        "tog-hideminor": "অনুল্লেখ্য সম্পাদনাগুলো সাম্প্রতিক পরিবর্তনসমূহে আড়াল করো",
        "tog-hidepatrolled": "পরীক্ষিত সম্পাদনা গুলো সাম্প্রতিক পরিবর্তনসমূহে আড়াল করো",
        "tog-newpageshidepatrolled": "পরীক্ষিত পাতা গুলো নতুন পাতার তালিকায় আড়াল করো",
-       "tog-hidecategorization": "পাতার শ্রেণীবদ্ধকরণ লুকান",
        "tog-extendwatchlist": "শুধু সাম্প্রতিক পরিবর্তনই নয়, সকল পরিবর্তন দেখতে নজর তালিকা সম্প্রসারণ করুন",
        "tog-usenewrc": "সাম্প্রতিক পরিবর্তনসমূহ এবং নজরতালিকা পাতায় পরিবর্তনগুলো একত্রে প্রদর্শন",
        "tog-numberheadings": "শিরোনামগুলোকে স্বয়ংক্রিয়ভাবে ক্রমিক নম্বর দাও",
@@ -62,7 +61,6 @@
        "tog-watchlisthideliu": "নজরতালিকাতে অ্যাকাউন্টে লগ-ইন করা ব্যবহারকারীদের সম্পাদনা আড়ালে রাখা হোক",
        "tog-watchlisthideanons": "নজরতালিকাতে বেনামী ব্যবহারকারীদের সম্পাদনা আড়ালে রাখা হোক",
        "tog-watchlisthidepatrolled": "পরীক্ষিত সম্পাদনা গুলো নজরতালিকায় আড়াল করো",
-       "tog-watchlisthidecategorization": "পাতার শ্রেণীবদ্ধকরণ লুকান",
        "tog-ccmeonemails": "অন্য ব্যবহারকারীর কাছে আমার পাঠানো ইমেইলের একটি অনুলিপি আমাকে পাঠানো হোক",
        "tog-diffonly": "পার্থক্যের নিচে পাতার বিষয়বস্তু না দেখানো হোক",
        "tog-showhiddencats": "লুকায়িত বিষয়শ্রেণীসমূহ দেখাও",
        "myprivateinfoprotected": "আপনার ব্যক্তিগত তথ্য সম্পাদনা করতে আপনার অনুমতি নেই",
        "mypreferencesprotected": "আপনার পছন্দসমূহ সম্পাদনা করতে আপনার অনুমতি নেই",
        "ns-specialprotected": "{{ns:special}} নামস্থানে পাতাসমূহ সম্পাদনা করা যাবে না।",
-       "titleprotected": "[[User:$1|$1]]-কে এই শিরোনামের পাতা সৃষ্টি করতে বাধা দেয়া হচ্ছে। কারণ: ''$2''।",
+       "titleprotected": "[[User:$1|$1]] কর্তৃক এই শিরোনামটি সৃষ্টি করা থেকে সুরক্ষিত করা হয়েছে। কারণ: \"<em>$2</em>\"।",
        "filereadonlyerror": "\"$1\" ফাইলটিকে পরিবর্তন করা সম্ভব হচ্ছে না কারন \"$2\" ফাইল রিপোসিটোরি রিড-অনলি-মোডে আছে।\n\nএকজন প্রশাসক যিনি এটাকে লকড করেছেন তার যৌক্তিকতা দেওয়া হল: \"$3\"",
        "invalidtitle-knownnamespace": "অবৈধ শিরোনাম, যেখানে নামস্থান \"$2\" এবং লেখা হয়েছে \"$3\"",
        "invalidtitle-unknownnamespace": "অবৈধ শিরোনাম, যেখানে ব্যবহৃত হয়েছে অপরিচিত নামস্থান সংখ্যা $1 এবং লেখা হয়েছে \"$2\"",
        "createacct-benefit-body2": "{{PLURAL:$1|টি পাতা}}",
        "createacct-benefit-body3": "জন সাম্প্রতিক {{PLURAL:$1|অবদানকারী}}",
        "badretype": "আপনার প্রবেশ করানো পাসওয়ার্ডটি মিলছে না।",
+       "usernameinprogress": "এই ব্যবহারকারী নামের জন্য একটি অ্যাকাউন্ট তৈরি আগে থেকেই চলছে। দয়া করে অপেক্ষা করুন।",
        "userexists": "এই ব্যবহারকারী নামটি ইতমধ্যে ব্যবহার করা হয়েছে।\nঅনুগ্রহ করে অন্য নাম বেছে নিন।",
        "loginerror": "প্রবেশ করতে সমস্যা হয়েছে",
        "createacct-error": "অ্যাকাউন্ট তৈরি ত্রুটি",
        "rcshowhidemine": "আমার সম্পাদনাগুলো $1",
        "rcshowhidemine-show": "দেখাও",
        "rcshowhidemine-hide": "আড়াল করো",
-       "rcshowhidecategorization": "পাতা শ্রেণীবদ্ধকরণ $1",
-       "rcshowhidecategorization-show": "দেখাও",
-       "rcshowhidecategorization-hide": "আড়াল করো",
        "rclinks": "'''প্রদর্শনের ধরন'''<br />\n* বিগত ($2) দিনের শেষ ($1)টি পরিবর্তন দেখাও\n* $3",
        "diff": "পরিবর্তন",
        "hist": "ইতিহাস",
        "recentchangeslinked-summary": "একটি নির্দিষ্ট পাতা (অথবা নির্দিষ্ট বিষয়শ্রেণীতে) থেকে সংযুক্ত এ পাতার সাম্প্রতিক পরিবর্তনের তালিকা দেওয়া হয়েছে। আপনার [[Special:Watchlist|আপনার নজরতালিকায়]] রাখা পাতাগুলি '''গাঢ়''' করে দেখানো হয়েছে।",
        "recentchangeslinked-page": "পাতার নাম:",
        "recentchangeslinked-to": "প্রদত্ত পাতায় সংযুক্ত আছে এমন পাতাগুলোর পরিবর্তন দেখাও",
-       "recentchanges-page-added-to-category": "বিষয়শ্রেণীতে [[:$1]] যোগ করা হয়েছে",
-       "recentchanges-page-added-to-category-bundled": "বিষয়শ্রেণীতে [[:$1]] এবং {{PLURAL:$2|একটি পাতা|$2টি পাতা}} যোগ করা হয়েছে",
-       "recentchanges-page-removed-from-category": "বিষয়শ্রেণী থেকে [[:$1]] সরানো হয়েছে",
-       "recentchanges-page-removed-from-category-bundled": "বিষয়শ্রেণী থেকে [[:$1]] এবং {{PLURAL:$2|একটি পাতা|$2টি পাতা}} সরানো হয়েছে",
        "upload": "আপলোড",
        "uploadbtn": "ফাইল আপলোড করুন",
        "reuploaddesc": "আপলোড বাতিল করো এবং আপলোড ফর্মে ফেরত যাও।",
        "emailuser": "ইমেইল করো",
        "emailuser-title-target": "{{GENDER:$1|ব্যবহারকারীকে}} ইমেইল পাঠান",
        "emailuser-title-notarget": "ব্যবহারকারীকে ই-মেইল করুন",
-       "emailpage": "ব্যবহারকারীকে ই-মেইল করুন",
        "emailpagetext": "আপনি নিচের ফর্মটি ব্যবহার করে এই {{GENDER:$1|ব্যবহারকারীকে}} একটি ই-মেইল পাঠাতে পারেন।\nআপনি [[Special:Preferences|আপনার ব্যবহারকারী পছন্দে]] যে ই-মেইল ঠিকানাটি প্রবেশ করিয়েছেন সেটিকে ই-মেইলের ''প্রেরক'' হিসেবে দেখানো হবে, যেনো মেইলের প্রাপক আপনাকে উত্তর দিতে পারেন।",
        "defemailsubject": "{{SITENAME}} ব্যবহারকারী \"$1\" প্রেরিত ইমেইল",
        "usermaildisabled": "ব্যবহারকারী ই-মেইল নিস্ক্রিয়",
        "emailccsubject": "আপনার বার্তার অনুলিপি $1-কে: $2",
        "emailsent": "ই-মেইল প্রেরণ করা হয়েছে",
        "emailsenttext": "আপনার ই-মেইল বার্তা প্রেরণ করা হয়েছে।",
-       "emailuserfooter": "এই ইমেইলটি {{SITENAME}} সাইটের \"{{int:emailpage}}\" সুবিধা ব্যবহার করে $1-এর পক্ষ থেকে $2-এর নিকট পাঠানো হয়েছে।",
+       "emailuserfooter": "এই ইমেইলটি {{SITENAME}} সাইটের \"{{int:emailuser}}\" সুবিধা ব্যবহার করে $1-এর পক্ষ থেকে $2-এর নিকট পাঠানো হয়েছে।",
        "usermessage-summary": "বাদবাকি সিস্টেম বার্তা",
        "usermessage-editor": "সিস্টেম ম্যাসেঞ্জার",
        "watchlist": "নজর তালিকা",
        "tags-edit-logentry-selected": "{{PLURAL:$1|নির্বাচিত লগ ইভেন্ট}}:",
        "tags-edit-existing-tags": "বিদ্যমান ট্যাগ:",
        "tags-edit-new-tags": "নতুন ট্যাগ:",
+       "tags-edit-chosen-placeholder": "কিছু ট্যাগ নির্বাচন করুন",
+       "tags-edit-chosen-no-results": "কোন ট্যাগ মিল পাওয়া যায়নি",
        "tags-edit-reason": "কারণ:",
        "tags-edit-success": "পরিবর্তন সফলভাবে প্রয়োগ করা হয়েছে।",
        "tags-edit-failure": "পরিবর্তন প্রয়োগ করা যায়নি: $1",
        "htmlform-cloner-create": "আরও যোগ করুন",
        "htmlform-cloner-delete": "অপসারণ",
        "htmlform-cloner-required": "অন্তত একটি মূল্য আবশ্যক।",
+       "htmlform-title-badnamespace": "[[:$1]] \"{{ns:$2}}\" নামস্থানে খুঁজে পাওয়া যায়নি।",
+       "htmlform-title-not-creatable": "\"$1\" সৃষ্টিযোগ্য পাতার শিরোনাম নয়",
+       "htmlform-title-not-exists": "[[:$1]]-এর অস্তিত্ব নেই।",
+       "htmlform-user-not-exists": "<strong>$1</strong>-এর অস্তিত্ব নেই।",
+       "htmlform-user-not-valid": "<strong>$1</strong> একটি বৈধ ব্যবহারকারীর নাম নয়।",
        "sqlite-has-fts": "$1 সহ পূর্ণ টেক্সট সার্চ সমর্থন",
        "sqlite-no-fts": "$1 বাদে পূর্ণ টেক্সট সার্চ সমর্থন",
        "logentry-delete-delete": "$1 কর্তৃক $3 পাতাটি অপসারিত হয়েছে",
        "revdelete-unrestricted": "এই সীমাবদ্ধতা প্রশাসকের ক্ষেত্রে তুলে নাও",
        "logentry-block-block": "$1 {{GENDER:$4|$3}} কে $5 মেয়াদের জন্য {{GENDER:$2|বাধাদান}} করেছেন $6",
        "logentry-block-unblock": "$1 {{GENDER:$4|$3}}-এর উপর থেকে বাধা তুলে {{GENDER:$2|নিয়েছেন}}",
+       "logentry-block-reblock": "$1 {{GENDER:$4|$3}}-এর জন্য বাধাদান সেটিং $5 সময়ের জন্য {{GENDER:$2|পরিবর্তন}} করেছেন $6",
+       "logentry-suppress-block": "$1 {{GENDER:$4|$3}} কে $5 মেয়াদের জন্য {{GENDER:$2|বাধাদান}} করেছেন $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$4|$3}}-এর জন্য বাধাদান সেটিং $5 সময়ের জন্য {{GENDER:$2|পরিবর্তন}} করেছেন $6",
        "logentry-import-upload": "$1 ফাইল আপলোড দ্বারা $3 {{GENDER:$2|আমদানি করেছেন}}",
        "logentry-import-interwiki": "$1 অন্য একটি উইকিতে থেকে $3 {{GENDER:$2|আমদানি করেছে}}",
+       "logentry-merge-merge": "$1 $4-এ $3 {{GENDER:$2|একত্রীকরণ করেছেন}} ($5 তারিখের সংশোধন পর্যন্ত)",
        "logentry-move-move": "$1 ব্যবহারকারী $3 পাতাটিকে $4 শিরোনামে {{GENDER:$2|স্থানান্তর}} করেছেন",
        "logentry-move-move-noredirect": "$1 ব্যবহারকারী $3 পাতাটিকে $4 শিরোনামে কোনো পুনর্নির্দেশনা ছাড়াই {{GENDER:$2|স্থানান্তর}} করেছেন",
        "logentry-move-move_redir": "$1 ব্যবহারকারী $3 পাতাটিকে $4 শিরোনামে পুনির্নির্দেশনার মাধ্যমে {{GENDER:$2|স্থানান্তর}} করেছেন",
        "logentry-newusers-create2": "$1 ব্যবহারকারী $3 নামের অ্যাকাউন্টটি {{GENDER:$2|তৈরী}} করেছেন",
        "logentry-newusers-byemail": "$1, $3 ব্যবহারকরী অ্যাকাউন্টটি {{GENDER:$2|তৈরী করেছেন}} এবং পাসওয়ার্ড ইমেইলের মাধ্যমে পাঠানো হয়েছে",
        "logentry-newusers-autocreate": "$1 অ্যাকাউন্টটি স্বয়ংক্রিয়ভাবে {{GENDER:$2|তৈরি}} হয়েছে",
+       "logentry-protect-move_prot": "$1 সুরক্ষা সেটিং $4 থেকে $3-এ {{GENDER:$2|সরিয়েছেন}}",
        "logentry-rights-rights": "$1 ব্যবহারকারী, $3 এর দলগত সদস্যপদ $4 থেকে $5 এ {{GENDER:$2|পরিবর্তন}} করেছেন",
        "logentry-rights-rights-legacy": "$1 দলের সদস্যপদ পরিবর্তন করেছেন {{GENDER:$2|changed}} এর জন্য $3",
        "logentry-rights-autopromote": "$1 সয়ংক্রিয়ভাবে $4 থেকে $5 এ {{GENDER:$2|উন্নীত}} হয়েছে",
        "special-characters-title-endash": "en ড্যাশ",
        "special-characters-title-emdash": "em ড্যাশ",
        "special-characters-title-minus": "বিয়োগ চিহ্ন",
+       "mw-widgets-dateinput-no-date": "কোন তারিখ নির্বাচন করা হয়নি",
        "mw-widgets-titleinput-description-new-page": "পাতা এখনো বিদ্যমান নয়",
        "mw-widgets-titleinput-description-redirect": "$1-এ পুনঃনির্দেশিত"
 }
index 5ec7a30..f49965f 100644 (file)
        "sectioneditnotsupported-text": "Uređivanje sekcije nije podržano na ovoj stranici.",
        "permissionserrors": "Greške pri odobrenju",
        "permissionserrorstext": "Nemate dopuštenje da to uradite, iz {{PLURAL:$1|slijedećeg razloga|slijedećih razloga}}:",
-       "permissionserrorstext-withaction": "Nemate dopuštenje da $2, iz {{PLURAL:$1|slijedećeg|slijedećih}} razloga:",
+       "permissionserrorstext-withaction": "Nemate dopuštenje da $2, iz {{PLURAL:$1|sljedećeg|sljedećih}} razloga:",
        "recreate-moveddeleted-warn": "'''Upozorenje: Postavljate stranicu koja je prethodno brisana.'''\n\nRazmotrite da li je nastavljanje uređivanja ove stranice u skladu s pravilima.\nOvdje je naveden zapisnik brisanja i premještanja s obrazloženjem:",
-       "moveddeleted-notice": "Ova stranica je obrisana.\nZapis brisanja i pomjeranja stranice je prikazan ispod kao referenca.",
+       "moveddeleted-notice": "Ova stranica je obrisana.\nZapisnik brisanja i premještanja stranice je prikazan ispod kao referenca.",
        "log-fulllog": "Vidi potpuni zapisnik",
        "edit-hook-aborted": "Izmjena je poništena putem interfejsa.\nNije ponuđeno nikakvo objašnjenje.",
        "edit-gone-missing": "Stranica se nije mogla osvježiti.\nIzgleda da je obrisana.",
        "emailuser": "Pošalji e-poštu",
        "emailuser-title-target": "Pošalji e-poruku {{GENDER:$1|korisniku|korisnici|korisniku}}",
        "emailuser-title-notarget": "Pošalji e-mail korisniku",
-       "emailpage": "Pošalji e-mail korisniku",
        "emailpagetext": "Možete korisiti obrazac ispod za slanje poruke e-poštom {{GENDER:$1|ovom korisniku|ovoj korisnici|ovom korisniku}}.\nAdresa e-pošte koju ste unijeli u [[Special:Preferences|svojim korisničkim postavkama]] će biti prikazana kao adresa pošiljaoca, tako da će primaoc poruke moći da Vam odgovori.",
        "defemailsubject": "{{SITENAME}} e-pošta od {{GENDER:$1|korisnika|korisnice|korisnika}} $1",
        "usermaildisabled": "Korisnički e-mail onemogućen",
        "emailccsubject": "Kopiraj Vašu poruku za $1: $2",
        "emailsent": "Poruka poslata",
        "emailsenttext": "Vaša poruka je poslata e-poštom.",
-       "emailuserfooter": "Ovaj e-mail je poslao $1 korisniku $2 putem funkcije \"{{int:emailpage}}\" sa {{SITENAME}}.",
+       "emailuserfooter": "Ovaj e-mail je poslao $1 korisniku $2 putem funkcije \"{{int:emailuser}}\" sa {{SITENAME}}.",
        "usermessage-summary": "Ostavljanje sistemske poruke.",
        "usermessage-editor": "Sistem za poruke",
        "watchlist": "Spisak praćenja",
        "changed": "promijenjena",
        "deletepage": "Obrišite stranicu",
        "confirm": "Potvrdite",
-       "excontent": "sadržaj je bio: '$1'",
-       "excontentauthor": "sadržaj je bio: '$1' (i jedini korisnik koji je mijenjao bio je '[[Special:Contributions/$2|$2]]')",
-       "exbeforeblank": "sadržaj prije brisanja je bio: '$1'",
+       "excontent": "sadržaj je bio: \"$1\"",
+       "excontentauthor": "sadržaj je bio: \"$1\" (a jedini urednik \"[[Special:Contributions/$2|$2]]\")",
+       "exbeforeblank": "sadržaj prije brisanja je bio: \"$1\"",
        "delete-confirm": "Brisanje \"$1\"",
        "delete-legend": "Obriši",
        "historywarning": "<strong>Upozorenje</strong>: Stranica koju želite da obrišete ima historiju sa otprilike $1 {{PLURAL:$1|revizijom|revizije|revizija}}:",
index 3a1f17f..375af4d 100644 (file)
        "boteditletter": "b",
        "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|Un usuari vigila|$1 usuaris vigilen}} aquesta pàgina]",
-       "rc_categories": "Limita a les categories (separades amb \"|\")",
+       "rc_categories": "Limita a les categories (separades amb «|»):",
        "rc_categories_any": "Qualsevol de les triades",
        "rc-change-size": "$1",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} després del canvi",
        "upload-copy-upload-invalid-domain": "Les càrregues de còpia no són disponibles des d'aquest domini.",
        "upload-dialog-title": "Carrega un fitxer",
        "upload-dialog-error": "S’ha produït un error",
+       "upload-dialog-warning": "S'ha produït un avís",
        "upload-dialog-button-cancel": "Cancel·la",
        "upload-dialog-button-done": "Fet",
        "upload-dialog-button-save": "Desa",
        "emailuser": "Envia un missatge de correu electrònic a aquest usuari",
        "emailuser-title-target": "Envia un missatge electrònic a {{GENDER:$1|aquest usuari|aquesta usuària}}",
        "emailuser-title-notarget": "Enviar un correu electrònic a un usuari",
-       "emailpage": "Correu electrònic a usuari",
        "emailpagetext": "Podeu usar el següent formulari per a enviar un missatge de correu electrònic a {{GENDER:$1|aquest usuari|aquesta usuària}}.\nL'adreça electrònica que vau indicar a [[Special:Preferences|les vostres preferències d'usuari]] apareixerà com a remitent del correu electrònic, de manera que el destinatari us podrà respondre directament.",
        "defemailsubject": "Correu electrònic de l'usuari \"$1\" de {{SITENAME}}",
        "usermaildisabled": "Correu electrònic d'usuaris deshabilitat",
        "emailccsubject": "Còpia del vostre missatge a $1: $2",
        "emailsent": "Correu electrònic enviat",
        "emailsenttext": "S'ha enviat el vostre correu electrònic.",
-       "emailuserfooter": "Aquest missatge de correu electrònic l'ha enviat $1 a $2 amb la funció «{{int:emailpage}}» de {{SITENAME}}.",
+       "emailuserfooter": "Aquest missatge de correu electrònic l'ha enviat $1 a $2 amb la funció «{{int:emailuser}}» de {{SITENAME}}.",
        "usermessage-summary": "Deixant missatges de sistema.",
        "usermessage-editor": "Missatger del sistema",
        "watchlist": "Llista de seguiment",
        "rollback-success": "Edicions revertides de $1; s'ha canviat a la darrera versió de $2.",
        "sessionfailure-title": "Error de sessió",
        "sessionfailure": "S'ha produït un error amb la vostra sessió. S'ha anul·lat aquesta acció en prevenció de pirateig de sessió. Premeu «Torna», recarregueu la pàgina des d'on veniu i torneu-ho a intentar.",
+       "changecontentmodel": "Canvia el model de contingut d'una pàgina",
        "changecontentmodel-legend": "Canvia el model de contingut",
        "changecontentmodel-title-label": "Títol de la pàgina",
        "changecontentmodel-model-label": "Nou model de contingut",
        "tags-edit-reason": "Motiu:",
        "tags-edit-success": "S’han aplicat els canvis correctament.",
        "tags-edit-failure": "No s’han pogut aplicar els canvis:\n$1",
+       "tags-edit-nooldid-title": "Revisió de l'objectiu no vàlida",
        "tags-edit-none-selected": "Seleccioneu com a mínim una etiqueta per afegir o suprimir.",
        "comparepages": "Comparar pàgines",
        "compare-page1": "Pàgina 1",
        "special-characters-title-endash": "guió curt",
        "special-characters-title-emdash": "guió llarg",
        "special-characters-title-minus": "signe menys",
+       "mw-widgets-dateinput-no-date": "No s'ha seleccionat cap data",
        "mw-widgets-dateinput-placeholder-day": "AAAA-MM-DD",
        "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
        "mw-widgets-titleinput-description-new-page": "la pàgina no existeix encara",
index 3992509..2ad45a8 100644 (file)
        "storedversion": "Ӏалашйина верси",
        "editingold": "'''ДӀахьедар. Ахьа таеш ю хӀокху агӀона шира елла верси.'''\nАгӀо Ӏалаш йинчул тӀехьа хьалхо бина хийцамаш дӀабяра бу.",
        "yourdiff": "Башхаллаш",
-       "copyrightwarning": "Тергаме хьажа, массо яззаман чутухуш долу йозан хийцам хьажарехь бу, арахоьцушсанна оцу лицензи хьоляхь $2 (хьаж. $1).\nНагахь хьо лууш вацахь хьай йозанаш маьрша даржа а кхечаьрга хийцам байта, мадаха уьш кху чу.<br />\nИшта чӀагӀо йой ахьа, айхьа далош долучуьн хьо куьг да ву аьлла, я хьаэцна цхьан\nхьостера, хийцам ба а дӀаса даржада а чулацам болуш.<br />\n'''МАТОХИЙШ БАКЪО ЙОЦУ ГӀИРСАШ КХУ ЧУ, КУЬГ ДЕ БАКЪО ЛАР ЙЕШ ЙОЛУ!'''",
+       "copyrightwarning": "Тергаме хьажа, массо яззаман чутухуш долу йозан хийцам хьажарехь бу, арахоьцушсанна оцу лицензи хьоляхь $2 (хьаж. $1).\nНагахь хьо лууш вацахь хьайн йозанаш маьрша даржа а кхечаьрга хийцам байта, мадаха уьш кху чу.<br />\nИшта чӀагӀо йой ахьа, айхьа далош долучуьн хьо куьг да ву аьлла, я хьаэцна цхьан\nхьостера, хийцам ба а дӀаса даржада а чулацам болуш.<br />\n'''МАТОХИЙШ БАКЪО ЙОЦУ ГӀИРСАШ КХУ ЧУ, КУЬГ ДЕ БАКЪО ЛАР ЙЕШ ЙОЛУ!'''",
        "readonlywarning": "'''ДӀАХЬЕДО. ГӀирса бух блоктоьхна оьшуш долучу хьаштан, цундера хӀинц хьоьга дӀа ца йазло хийцам.\nХила мега, ахьа Ӏалаш дан дезаш хьайн йоза, юха тӀаьхьо леладан иза йоза.'''\n\nКуьйгалхочо блоктоьхна гӀирса бух, цо битина кхетош хӀара хаам: $1",
        "protectedpagewarning": "'''ДӀахьедар. ХӀара агӀо ларйина ю хийцам цабайта, иза хийца я нисъян а бакъо йолуш куьйгалла лелош болу декъашхой бе бац.'''\nЛахахьа гойту хаамаш тӀаьххьара бина болу хийцамна тептар чура:",
        "semiprotectedpagewarning": "'''ДӀахьедо.''' ХӀара агӀо ларйина ю; дӀабазбиначу декъашхошка бе цӀе хийцалуш яц.\nЛахахьа тептаро балийна тӀаьххьаралера дӀаязбина хаам:",
        "recentchanges-noresult": "Билгал йинчу хенахь цхьа хийцамаш бина бац.",
        "recentchanges-feed-description": "Тергам бе тӀаьххьара вики хийцаман хӀокху ларца.",
        "recentchanges-label-newpage": "Оцу нисдарца кхоьллина керла агӀо.",
-       "recentchanges-label-minor": "Хlара нисдинарг къастийна жимо долушсан",
+       "recentchanges-label-minor": "ХӀара пайда боцу хийцам бу",
        "recentchanges-label-bot": "ХӀара нисдар бото дина",
        "recentchanges-label-unpatrolled": "ХӀара нисдар хӀинца цхьано патрулировать дина дац",
        "recentchanges-label-plusminus": "байташкахь барам хийцар",
        "speciallogtitlelabel": "Ӏалашо (цӀе я декъашхо):",
        "log": "Тéптарш",
        "all-logs-page": "Дерриге тӀекхочучехь долу тептарш",
-       "alllogstext": "Ð\9cаÑ\81Ñ\81о Ñ\82éпÑ\82аÑ\80 могӀам. {{SITENAME}}.\nШуьга харжалур бу хилам оцу тептаре хьаьжжина, декъашхочун цӀе (дӀаяздар диц а цадеш) я цо хьейина агӀонаш (ишта дӀаяздар а диц цадеш).",
+       "alllogstext": "Ð\9cаÑ\81Ñ\81о Ñ\8eкÑ\8aаÑ\80а Ð¶Ñ\83Ñ\80лийн могӀам. {{SITENAME}}.\nШуьга харжалур бу хилам оцу тептаре хьаьжжина, декъашхочун цӀе (дӀаяздар диц а цадеш) я цо хьейина агӀонаш (ишта дӀаяздар а диц цадеш).",
        "logempty": "Тептарш чохь хӀокху агӀона дӀаяздарш дац.",
        "log-title-wildcard": "ХӀокху символашца болалуш болу кортанаш карабе",
        "showhideselectedlogentries": "Гайта/къайлаяха хаьржина башхонаш",
        "emailuser": "Декъашхочун хааман кехат",
        "emailuser-title-target": "{{GENDER:$1|декъашхочунга}} электронан хаам базбар",
        "emailuser-title-notarget": "Декъашхочунга кехат яздар",
-       "emailpage": "Декъашхочунга кехат яздар",
        "emailpagetext": "ХӀокху агӀона гӀоьнца йиш ю {{GENDER:$1|декъашхочун}} электронан почте хаам бахьийта.\nХьоьга жоп лур ду ахьа [[Special:Preferences|хьайн гӀирса чу]] дӀаяздина долу адрес тӀе.",
        "defemailsubject": "Хаам {{grammar:genitive|{{SITENAME}}}} чура бу",
        "usermaildisabled": "Декъашхочун электронан пошт дӀаяйина ю",
        "watchthispage": "Тергам бé хӀокху агӀона",
        "unwatch": "Тергамах къаста",
        "unwatchthispage": "ДӀадаккха терго яр",
-       "notanarticle": "Ð\91аÑ\86 Ñ\8fззам",
+       "notanarticle": "Яззам Ð±Ð°Ñ\86",
        "notvisiblerev": "Верси дӀаяьккхина хила",
        "watchlist-details": "Хьан тергаме могӀанца $1 {{PLURAL:$1|агӀо}} ю, дийцаре агӀонаш йоцуш.",
        "wlheader-enotif": "Электронан почте хаамаш байтар латина ду.",
index bc238c4..2fba2bd 100644 (file)
        "emailuser": "ئیمەیل بنێرە بۆ ئەم بەکارھێنەرە",
        "emailuser-title-target": "ئیمەیلی ئەم {{GENDER:$1|بەکارھێنەر}}ە",
        "emailuser-title-notarget": "ئیمەیل بۆ بەکارھێنەر",
-       "emailpage": "ئیمەیل بۆ بەکارھێنەر",
        "emailpagetext": "دەتوانی لەم فۆرمەی ژێرەوە بۆ ناردنی ئیمەیلێک بۆ ئەم {{GENDER:$1|بەکارھێنەر}}ە کەڵک وەربگریت.\nئەو ناونیشانە ئیمەیلە لە [[Special:Preferences|ھەڵبژاردەکانی بەکارھێنەر‌یتدا]] نووسیوتە، لە ناونیشانی «لەلایەن»ی (From) ئیمەیلەکەدا نیشان دەدرێت، کە وایە بەکارھێنەری وەرگر دەتوانێ ڕاستەوخۆ وەڵامت بداتەوە.",
        "defemailsubject": "ئیمەیلی {{SITENAME}} لە بەکارھێنەر «$1»ەوە",
        "usermaildisabled": "ئیمەیڵی بەکارهێنەر لەکاردانیە",
index deae105..29d0707 100644 (file)
        "mailnologin": "Мектюп ёлланаджакъ адреси ёкътыр",
        "mailnologintext": "Дигер къулланыджыларгъа электрон мектюплер ёллап олмакъ ичюн [[Special:UserLogin|отурым ачмалысынъыз]] ве [[Special:Preferences|сазламаларынъызда]] мевджут олгъан e-mail адресининъ саиби олмалысынъыз.",
        "emailuser": "Къулланыджыгъа мектюп",
-       "emailpage": "Къулланыджыгъа электрон мектюп ёлла",
        "emailpagetext": "Ашагъыдаки форманы толдурып бу къулланыджыгъа мектюп ёллап олурсынъыз.\n[[Special:Preferences|Озь сазламаларынъызда]] язгъан электрон адресинъиз мектюпнинъ «Кимден» сатырында языладжакъ, бунынъ ичюн мектюп алыджы догърудан-догъру сизинъ адресинъизге джевап ёллап олур.",
        "defemailsubject": "{{SITENAME}} e-mail",
        "noemailtitle": "E-mail адреси ёкътыр",
index a102c17..2cccdc1 100644 (file)
        "mailnologin": "Mektüp yollanacaq adresi yoqtır",
        "mailnologintext": "Diger qullanıcılarğa elektron mektüpler yollap olmaq içün [[Special:UserLogin|oturım açmalısıñız]] ve [[Special:Preferences|sazlamalarıñızda]] mevcut olğan e-mail adresiniñ saibi olmalısıñız.",
        "emailuser": "Qullanıcığa mektüp",
-       "emailpage": "Qullanıcığa elektron mektüp yolla",
        "emailpagetext": "Aşağıdaki formanı toldurıp bu qullanıcığa mektüp yollap olursıñız.\n[[Special:Preferences|Öz sazlamalarıñızda]] yazğan elektron adresiñiz mektüpniñ \"Kimden\" satırında yazılacaq, bunıñ içün mektüp alıcı doğrudan-doğru siziñ adresiñizge cevap yollap olur.",
        "defemailsubject": "{{SITENAME}} e-mail",
        "noemailtitle": "E-mail adresi yoqtır",
index e37172f..51c0571 100644 (file)
@@ -34,7 +34,6 @@
        "tog-hideminor": "Skrýt malé editace v posledních změnách",
        "tog-hidepatrolled": "Skrýt patrolované editace v posledních změnách",
        "tog-newpageshidepatrolled": "Skrýt patrolované stránky v seznamu nových stránek",
-       "tog-hidecategorization": "Skrýt kategorizaci stránek",
        "tog-extendwatchlist": "Na seznamu sledovaných stránek zobrazovat všechny změny, ne jen tu poslední",
        "tog-usenewrc": "V posledních změnách a sledovaných stránkách seskupovat změny podle stránek",
        "tog-numberheadings": "Automaticky číslovat nadpisy",
@@ -64,7 +63,6 @@
        "tog-watchlisthideliu": "Na seznamu sledovaných stránek skrýt editace přihlášených uživatelů",
        "tog-watchlisthideanons": "Na seznamu sledovaných stránek skrýt editace nepřihlášených uživatelů",
        "tog-watchlisthidepatrolled": "Skrýt patrolované editace ve sledovaných stránkách",
-       "tog-watchlisthidecategorization": "Skrýt kategorizaci stránek",
        "tog-ccmeonemails": "Zasílat mi kopie e-mailů, které pošlu jiným uživatelům",
        "tog-diffonly": "Nezobrazovat obsah stránky pod rozdílem verzí",
        "tog-showhiddencats": "Zobrazit skryté kategorie",
        "createacct-benefit-body2": "{{PLURAL:$1|stránka|stránky|stránek}}",
        "createacct-benefit-body3": "{{PLURAL:$1|nedávný přispěvatel|nedávní přispěvatelé|nedávných přispěvatelů}}",
        "badretype": "Vámi napsaná hesla nesouhlasí.",
+       "usernameinprogress": "Vytváření účtu tohoto uživatele již probíhá. Čekejte prosím.",
        "userexists": "Zadané uživatelské jméno se již používá.\nZvolte si prosím jiné jméno.",
        "loginerror": "Chyba při přihlašování",
        "createacct-error": "Chyba při zakládání účtu",
        "rcshowhidemine": "$1 moje editace",
        "rcshowhidemine-show": "Zobrazit",
        "rcshowhidemine-hide": "Skrýt",
-       "rcshowhidecategorization": "$1 kategorizaci stránek",
-       "rcshowhidecategorization-show": "Zobrazit",
-       "rcshowhidecategorization-hide": "Skrýt",
        "rclinks": "Ukázat $1 posledních změn během posledních $2 dnů<br />\n$3",
        "diff": "rozdíl",
        "hist": "historie",
        "recentchangeslinked-summary": "Níže je seznam nedávných změn stránek odkazovaných ze zadané stránky (nebo patřících do dané kategorie). Vaše [[Special:Watchlist|sledované stránky]] jsou '''zvýrazněny'''.",
        "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 {{PLURAL:$2|jedna další zařazeny|$2 další zařazeny|$2 dalších zařazeno}} do kategorie",
-       "recentchanges-page-removed-from-category": "Stránka [[:$1]] vyřazena z kategorie",
-       "recentchanges-page-removed-from-category-bundled": "Stránka [[:$1]] a {{PLURAL:$2|jedna další vyřazeny|$2 další vyřazeny|$2 dalších vyřazeno}} z kategorie",
        "upload": "Načíst soubor",
        "uploadbtn": "Načíst soubor",
        "reuploaddesc": "Zrušit načítání a vrátit se do formuláře.",
        "emailuser": "Poslat e-mail",
        "emailuser-title-target": "Poslat e-mail {{GENDER:$1|tomuto uživateli|této uživatelce}}",
        "emailuser-title-notarget": "Poslat e-mail uživateli",
-       "emailpage": "Poslat e-mail",
        "emailpagetext": "Pomocí níže zobrazeného formuláře můžete {{GENDER:$1|tomuto uživateli|této uživatelce}} poslat zprávu e-mailem.\nE-mailová adresa, kterou máte uvedenu v [[Special:Preferences|nastavení]], se objeví jako adresa odesílatele pošty, aby vám adresát mohl odpovědět přímo.",
        "defemailsubject": "E-mail z {{grammar:2sg|{{SITENAME}}}} od {{gender:$1|uživatele|uživatelky|uživatele}} „$1“",
        "usermaildisabled": "Posílání e-mailů je vypnuto",
        "emailccsubject": "Kopie Vaší zprávy pro uživatele $1: $2",
        "emailsent": "E-mail odeslán",
        "emailsenttext": "Váš e-mail byl odeslán.",
-       "emailuserfooter": "Tento e-mail byl odeslán z {{grammar:2sg|{{SITENAME}}}} pomocí funkce „{{int:emailpage}}“; {{GENDER:$1|odeslal ho uživatel|odeslala ho uživatelka}} $1 {{GENDER:$2|uživateli|uživatelce}} $2.",
+       "emailuserfooter": "Tento e-mail byl odeslán z {{grammar:2sg|{{SITENAME}}}} pomocí funkce „{{int:emailuser}}“; {{GENDER:$1|odeslal ho uživatel|odeslala ho uživatelka}} $1 {{GENDER:$2|uživateli|uživatelce}} $2.",
        "usermessage-summary": "Doručena zpráva od systému.",
        "usermessage-editor": "Systémový poslíček",
        "watchlist": "Sledované stránky",
        "logentry-newusers-create2": "$1 {{GENDER:$2|založil|založila}} uživatelský účet $3",
        "logentry-newusers-byemail": "$1 {{GENDER:$2|založil|založila}} uživatelský účet $3, heslo bylo posláno e-mailem",
        "logentry-newusers-autocreate": "Automaticky byl {{GENDER:$2|založen}} účet $1",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|přesunul|přesunula}} nastavení zámků ze stránky $4 na stránku $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|změnil|změnila}} členství $3 ve skupinách z $4 na $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|změnil|změnila}} členství $3 ve skupinách",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|byl automaticky povýšen|byla automaticky povýšena}} z $4 na $5",
index c57b00d..47bd2c8 100644 (file)
        "category-subcat-count": "{{PLURAL:$2|Ку категоринче çак айри категори пур.|$2-ран(-рен,-тан,-тен) {{PLURAL:$1|$1 айри категорине кăтартнă|$1 айри категорине кăтартнă|$1 айри категорине кăтартнă}}.}}",
        "category-subcat-count-limited": "Ку категоринче {{PLURAL:$1|$1 айри категори|$1 айри категори|$1 айри категори}}.",
        "category-article-count": "{{PLURAL:$2|1=Ку категоринче пĕр страница кăна.|Ку категорири $2 страницăран $1 кăтартнă.}}",
-       "category-article-count-limited": "Ку категоринче $1 страница.",
+       "category-article-count-limited": "Ку категоринче {{PLURAL:$1|страница|$1 страницăсем}}.",
        "category-file-count": "{{PLURAL:$2|1=Ку категоринче пĕр файл кăна.|Ку категоринчи $2 файлтан $1 кăтартнă.}}",
-       "category-file-count-limited": "Ку категоринче $1 файл.",
+       "category-file-count-limited": "Ку категоринче {{PLURAL:$1|файл|$1 файлсем}}.",
        "listingcontinuesabbrev": "(малалли)",
        "about": "Ăнлантарни",
        "article": "Статья",
        "hidetoc": "кӑтартмалла мар",
        "thisisdeleted": "$1 пăхса каялла тавăрмалла-и?",
        "viewdeleted": "$1 пăхар-и?",
-       "restorelink": "$1 кăларса пăрахнă тӳрлетĕве",
+       "restorelink": "{{PLURAL:$1|кăларса пăрахнă тӳрлетнине|$1 кăларса пăрахнă тӳрлетнисене}}",
        "feedlinks": "Çапла кур:",
        "feed-invalid": "Çырăнмашкăн ку канал тĕсĕ каймасть.",
        "feed-unavailable": "{{SITENAME}} сайтри синдикаци хăйăвĕсем тупăнмарĕç",
        "unexpected": "Тĕрĕс мар пĕлтерĕш: «$1»=«$2».",
        "formerror": "Йăнăш: формăри даннăйсене леçме май çук",
        "badarticleerror": "Çак страницăра эсир ку ĕçĕ тăваймастăр.",
-       "cannotdelete": "Эсир кăтартнă страницăна е файла кăларса пăрахаймастпăр. Ăна, тен, урăххи кăларса пăрахнă?",
+       "cannotdelete": "Эсир кăтартнă страницăна е файла \"$1\" кăларса пăрахаймастпăр.\nĂна, тен, урăххи кăларса пăрахнă.",
        "badtitle": "Ку ят килĕшмест",
        "badtitletext": "Эсир кăтартнă статья ячĕ тĕрĕс мар, пушă, е чĕлхе хушшинчипе интервики ячĕ тĕрĕс мар. Ятра усă курма юраман паллăсене çырнинче пулма пултарать.",
        "perfcached": "Ку даннăйсене кэшран илнĕ, çавна май унта юлашки улшăнусем палăрмасăр пултараççĕ. A maximum of {{PLURAL:$1|1=one result is|$1 results are}} available in the cache.",
        "blocked-mailpassword": "Ку IP-адреслисене статьясене тӳрлетме чарнă. Вăрттăн сăмаха аса илмелли функципе те усă кураймăр.",
        "mailerror": "Çыру яраймарăмăр, йăнăш тухрĕ: $1",
        "acct_creation_throttle_hit": "Сирĕн $1 хутшăнакан пур ĕнтĕ, урăх кĕртейместĕр.",
-       "emailauthenticated": "Сирĕн электронлă адреса çирĕплетнĕ $1.",
+       "emailauthenticated": "Сирĕн электронлă адреса çирĕплетнĕ $2 $3.",
        "emailconfirmlink": "Хăвăр эл. почтăн адресне çирĕплетĕр",
        "accountcreated": "Сире хутшăнакансем шутне кĕртрĕмĕр",
        "accountcreatedtext": "Хутшăнакансем шутне $1 ятлă çĕнĕ хутшăнакана кĕртрĕмĕр.",
        "accmailtitle": "Пароле леçрĕмĕр.",
        "accmailtext": "$1 вăрттăн сăмахне кунта леçрĕмĕр: $2.",
        "newarticle": "(Çĕнни)",
-       "newarticletext": "Ссылка урлă эсир халлĕхе çук статья çине куçрăр.\nÇĕнĕ статьяна кĕртес тесен аяларах вырнаçнă чӳречере текста çырăр.\n(тĕплĕнрех пĕлес тесен [[Help:Пулăшу|пулăшу страниципе] паллашăр).\nЕнчен те эсир кунта йăнăшпа лекнĕ пулсан — сирĕн браузерăн «Каялла» кнопка çине пусăр.",
+       "newarticletext": "Ссылка урлă эсир халлĕхе çук статья çине куçрăр.\nÇĕнĕ статьяна кĕртес тесен аяларах вырнаçнă чӳречере текста çырăр.\n(тĕплĕнрех пĕлес тесен [$1 пулăшу страниципе] паллашăр).\nЕнчен те эсир кунта йăнăшпа лекнĕ пулсан — сирĕн браузерăн <strong>Каялла</strong> кнопка çине пусăр.",
        "usercsspreview": "'''Ан манăр, эсир сирĕн css файл епле пулассине çеç куратăр, ăна халлĕхе çырса хуман!'''",
        "userjspreview": "'''Астăвăр, ку сирĕн javascript-файлăн малтанхи курăмĕ кăна, ăна хальлĕхе çырса хуман!'''",
        "updated": "(Çĕнелнĕ)",
        "yourvariant": "Чĕлхе варианчĕ",
        "yournick": "Сирĕн ят (алă пусма усă курăнĕ):",
        "badsig": "Алă пуснинче йăнăш пур. HTML тэгĕсене тĕрĕслĕр.",
-       "badsiglength": "Ð\90лÄ\83 Ð¿Ñ\83Ñ\81ни Ñ\8bÑ\82ла Ð²Ä\83Ñ\80Ä\83м, $1 Ñ\81имволÑ\82ан ÐºÄ\95Ñ\81кеÑ\80еÑ\85 Ð¿Ñ\83лмалла.",
+       "badsiglength": "СиÑ\80Ä\95н Ð°Ð»Ä\83 Ð¿Ñ\83Ñ\81ни Ñ\8bÑ\82лаÑ\88и Ð²Ä\83Ñ\80Ä\83м.\nÐ\92Ä\83л {{PLURAL:$1|Ñ\81имвол|Ñ\81имволÑ\81енÑ\87ен}} Ð²Ä\83Ñ\80Ä\83мÑ\80аÑ\85 Ð¿Ñ\83лмалла Ð¼Ð°Ñ\80.",
        "email": "Эл. почта",
        "prefs-help-email": "Электронлă почта (вăл кирлисем шутне кĕмест пулин те) ытти хутшăнакансене сирĕнпе ун урлă çыхăнма май парать. Çыхăну тытнă вăхăтра ыттисем сирĕн адреса пĕлеймеççĕ.",
        "prefs-help-email-required": "Электронлă почтăн адресне кăтартмалла.",
        "prefs-editor": "Редактор",
        "userrights": "Хутшăнакансен прависемпе ĕçлесси",
        "userrights-lookup-user": "Хутшăнакансен ушкăнĕсемпе ĕçлесси",
-       "userrights-user-editname": "Ð¥Ñ\83Ñ\82Ñ\88Ä\83накан Ñ\8fÑ\82не ÐºÄ\83Ñ\82аÑ\80Ñ\82Ä\83р:",
-       "editinguser": "тӳрлетни '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
+       "userrights-user-editname": "Ð¥Ñ\83Ñ\82Ñ\88Ä\83накан Ñ\8fÑ\82не ÐºÄ\95Ñ\80Ñ\82Ä\95р:",
+       "editinguser": "{{GENDER:$1|хутшăнакан}} правине улăштарни <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Хутшăнакансен ушкăнĕсене улăштар",
        "saveusergroups": "Хутшăнаканăн ушкăнĕсем астуса юл",
        "userrights-groupsmember": "Çак ушкăнсене кĕрет:",
        "upload": "Файла кĕртесси",
        "uploadbtn": "Файла кĕрт",
        "uploadnologin": "Эсир сайта кĕмен.",
-       "uploadnologintext": "Файла ÐºÄ\95Ñ\80Ñ\82еÑ\81 Ñ\83мÄ\95н Ñ\81иÑ\80Ä\95н Ð¼Ð°Ð»Ñ\82ан [[Special:UserLogin|Ñ\81айÑ\82а ÐºÄ\95мелле]].",
+       "uploadnologintext": "СиÑ\80Ä\95н $1 Ñ\84айлÑ\81ем ÐºÄ\95Ñ\80Ñ\82еÑ\81 Ñ\82еÑ\81ен.",
        "uploaderror": "Файла кĕртне чухне йăнăш пулчĕ",
        "uploadlogpage": "Файлсене кĕртнине кăтартакан журнал",
        "uploadlogpagetext": "Аяларах эсир юлашкинчен кĕртнĕ файлсене куратăр.\nПур çĕрте те сервер вăхăтне (Гринвич тăрăх, UTC) кăтартнă.",
        "linksearch-ok": "Шырамалли",
        "listusers-submit": "Кăтарт",
        "listusers-noresult": "Хутшăнакансем тупăнмарĕç.",
+       "activeusers-hidesysops": "Администраторĕсене пытар",
        "listgrouprights-group": "Ушкăн",
        "listgrouprights-helppage": "Help:Ушкăн прависем",
+       "listgrouprights-members": "(хутшăнакансен списокĕ)",
        "emailuser": "Хутшăнакана çыру яр... (Письмо участнику)",
        "noemailtitle": "Электронлă почта адресĕ çук",
        "noemailtext": "Ку хутшăнакан электронлă адресне кăтартман е ытти хутшăнакансенчен çыру илесшĕн мар.",
        "restriction-edit": "Тӳрлет",
        "undelete": "Кăларса пăрахнă страницăсене пăх",
        "viewdeletedpage": "Кăларса пăрахнă страницăсене пăх",
-       "undeleterevisions": "Архивра пурĕ $1 верси",
+       "undeleterevisions": "$1 {{PLURAL:$1|верси|версисене}} пăса утнă",
        "undeletebtn": "Каялла тавăр!",
        "undeleteviewlink": "пăх",
-       "undeletedrevisions": "$1 кăларса пăрахнă тӳрлетӳсене каялла тавăрнă",
+       "undeletedrevisions": "{{PLURAL:$1|1 улăштарни|$1 улăштарнисене}} тавăрнă.",
+       "undeletedfiles": "{{PLURAL:$1|1 файл|$1 файлсене}} тавăрнă",
        "undelete-search-box": "Кăларса пăрахнă страницăсен хушшинчи шырав",
        "undelete-search-submit": "Шыра",
        "blanknamespace": "(Тĕп)",
        "whatlinkshere-links": "← каçăсем",
        "whatlinkshere-hideredirs": "куçарнисене $1",
        "whatlinkshere-filters": "Аласем",
-       "blockip": "Хăтшăнакана ĕçлеме чар",
+       "blockip": "{{GENDER:$1|хутшăнакана}} чар",
        "ipaddressorusername": "IP адрес е усă куракан ят:",
        "ipbreason": "Сăлтавĕ",
        "ipbother": "Урăх вăхăт:",
        "delete_and_move": "Кăларса пăрахса куçарасси",
        "delete_and_move_text": "==Кăларса пăрахмалла==\n[[:$1|«$1»]] ятлă страница пур. Урăх ят парас тесе ăна кăларса пăрахмалла-и?",
        "delete_and_move_confirm": "Ку страницăна чăнах та кăларса пăрахмалла",
-       "delete_and_move_reason": "УÑ\80Ä\83Ñ\85 Ñ\8fÑ\82 Ð¿Ð°Ð¼Ð°Ñ\88кÄ\83н ÐºÄ\83лаÑ\80Ñ\81а Ð¿Ð°Ñ\80аÑ\85нÄ\83",
+       "delete_and_move_reason": "ЯÑ\82не Ñ\83лÄ\83Ñ\88Ñ\82аÑ\80ма ÐºÄ\83лаÑ\80Ñ\81а Ð¿Ä\83Ñ\80аÑ\85нÄ\83 \"[[$1]]\"",
        "export": "Статьясен экспорчĕ",
        "export-submit": "Экспортла",
        "export-addcat": "Хуш",
        "tooltip-save": "Тӳрлетӳсене астуса хăвармалла",
        "tooltip-watch": "Çак страницăна пăхса тăмаллисем шутне хуш",
        "tooltip-summary": "Кĕскĕн ăнлантарса парăр",
-       "anonymous": "{{GRAMMAR:genitive|{{SITENAME}}}} анонимлă хутшăнакансем",
+       "anonymous": "Паллă мар {{PLURAL:$1|хутшăнакан|хутшăнакансем}} {{SITENAME}}",
        "siteuser": "{{SITENAME}} усă куракан $1",
        "lastmodifiedatby": "Ку страницăна юлашки хут $2, $1 вăхăтра $3 улăштарнă.",
        "othercontribs": "$1 ĕçĕ çинче никĕсленнĕ.",
index affb473..ee33863 100644 (file)
        "emailuser": "E-mail til denne bruger",
        "emailuser-title-target": "Send e-mail til denne {{GENDER:$1|bruger}}",
        "emailuser-title-notarget": "Send e-mail til en bruger",
-       "emailpage": "E-mail til bruger",
        "emailpagetext": "Du kan bruge formularen nedenfor til at sende en e-mail til denne {{GENDER:$1|bruger}}.\nDen e-mailadresse, du har angivet i [[Special:Preferences|dine indstillinger]], vil dukke op i \"fra\"-feltet på e-mailen, så modtageren kan svare dig.",
        "defemailsubject": "{{SITENAME}}-e-mail fra brugeren \"$1\"",
        "usermaildisabled": "Bruger-e-mail deaktiveret",
        "emailccsubject": "Kopi af din besked til $1: $2",
        "emailsent": "E-mail sendt",
        "emailsenttext": "Din e-mail er blevet sendt.",
-       "emailuserfooter": "Denne e-mail er sendt af $1 til $2 ved hjælp af funktionen \"{{int:emailpage}}\" på {{SITENAME}}.",
+       "emailuserfooter": "Denne e-mail er sendt af $1 til $2 ved hjælp af funktionen \"{{int:emailuser}}\" på {{SITENAME}}.",
        "usermessage-summary": "Efterlader system besked.",
        "usermessage-editor": "System messenger",
        "watchlist": "Overvågningsliste",
index bfac000..5a52a76 100644 (file)
                        "Robby",
                        "Andreasburmeister",
                        "Tiin",
-                       "Freddy2001"
+                       "Freddy2001",
+                       "Luke081515"
                ]
        },
        "tog-underline": "Links unterstreichen:",
        "tog-hideminor": "Kleine Änderungen in den „Letzten Änderungen“ ausblenden",
        "tog-hidepatrolled": "Kontrollierte Änderungen in den „Letzten Änderungen“ ausblenden",
        "tog-newpageshidepatrolled": "Kontrollierte Seiten bei den „Neuen Seiten“ ausblenden",
-       "tog-hidecategorization": "Kategorisierungen von Seiten ausblenden",
        "tog-extendwatchlist": "In der Beobachtungsliste alle und nicht nur die aktuellsten Änderungen anzeigen",
        "tog-usenewrc": "Änderungen auf „Letzte Änderungen“ und der Beobachtungsliste nach Seite gruppieren",
        "tog-numberheadings": "Überschriften automatisch nummerieren",
        "tog-watchlisthideliu": "Bearbeitungen angemeldeter Benutzer in der Beobachtungsliste ausblenden",
        "tog-watchlisthideanons": "Bearbeitungen anonymer Benutzer (IP-Adressen) in der Beobachtungsliste ausblenden",
        "tog-watchlisthidepatrolled": "Kontrollierte Änderungen in der Beobachtungsliste ausblenden",
-       "tog-watchlisthidecategorization": "Kategorisierungen von Seiten ausblenden",
        "tog-ccmeonemails": "Schicke mir Kopien der E-Mails, die ich anderen Benutzern sende",
        "tog-diffonly": "Beim Versionsvergleich nur die Unterschiede und nicht die vollständige Seite anzeigen",
        "tog-showhiddencats": "Versteckte Kategorien anzeigen",
        "createacct-benefit-body2": "{{PLURAL:$1|Seite|Seiten}}",
        "createacct-benefit-body3": "{{PLURAL:$1|aktiver Autor|aktive Autoren}}",
        "badretype": "Die beiden Passwörter stimmen nicht überein.",
+       "usernameinprogress": "Eine Benutzerkontenerstellung für diesen Benutzernamen ist bereits in Bearbeitung.\nBitte warten.",
        "userexists": "Dieser Benutzername ist schon vergeben.\nBitte wähle einen anderen.",
        "loginerror": "Fehler bei der Anmeldung",
        "createacct-error": "Fehler beim Erstellen des Benutzerkontos",
        "password-name-match": "Dein Passwort muss sich von deinem Benutzernamen unterscheiden.",
        "password-login-forbidden": "Die Verwendung dieses Benutzernamens und Passwortes ist nicht erlaubt.",
        "mailmypassword": "Passwort zurücksetzen",
-       "passwordremindertitle": "Neues Passwort für dein {{SITENAME}}-Benutzerkonto",
+       "passwordremindertitle": "Neues temporäres Passwort für dein {{SITENAME}}-Benutzerkonto",
        "passwordremindertext": "Jemand mit der IP-Adresse $1, wahrscheinlich du selbst, hat ein neues Passwort für die Anmeldung bei {{SITENAME}} ($4) angefordert.\n\nDas automatisch generierte Passwort für Benutzer „$2“ lautet nun: $3\n\nFalls du dies wirklich gewünscht hast, solltest du dich jetzt anmelden und das Passwort ändern.\nDas neue Passwort ist {{PLURAL:$5|1 Tag|$5 Tage}} gültig.\n\nBitte ignoriere diese E-Mail, falls du sie nicht selbst angefordert hast. Das alte Passwort bleibt weiterhin gültig.",
        "noemail": "{{GENDER:$1|Benutzer|Benutzerin|Benutzer}} „$1“ hat keine E-Mail-Adresse angegeben.",
        "noemailcreate": "Du musst eine gültige E-Mail-Adresse angeben.",
        "resetpass-expired-soft": "Dein Passwort ist abgelaufen und muss zurückgesetzt werden. Bitte wähle jetzt ein neues Passwort aus oder klicke auf „{{int:resetpass-submit-cancel}}“, um es später zurückzusetzen.",
        "resetpass-validity-soft": "Dein Passwort ist nicht gültig: $1\n\nBitte wähle jetzt ein neues Passwort oder klicke auf „{{int:resetpass-submit-cancel}}“, um es später zurückzusetzen.",
        "passwordreset": "Passwort zurücksetzen",
-       "passwordreset-text-one": "Fülle dieses Formular aus, um dein Passwort zurückzusetzen.",
+       "passwordreset-text-one": "Fülle dieses Formular aus, um ein temporäres Passwort per E-Mail zu erhalten.",
        "passwordreset-text-many": "{{PLURAL:$1|Füll eines der Felder aus, um ein temporäres Passwort per E-Mail zugesandt zu bekommen.}}",
        "passwordreset-disabled": "Das Zurücksetzen von Passwörtern wurde in diesem Wiki deaktiviert.",
        "passwordreset-emaildisabled": "Die E-Mail-Funktionen wurden auf diesem Wiki deaktiviert.",
        "anonpreviewwarning": "''Du bist nicht angemeldet. Beim Speichern wird deine IP-Adresse in der Versionsgeschichte aufgezeichnet.''",
        "missingsummary": "'''Hinweis:''' Du hast keine Zusammenfassung angegeben. Wenn du erneut auf „{{int:savearticle}}“ klickst, wird deine Änderung ohne Zusammenfassung übernommen.",
        "selfredirect": "<strong>Warnung:</strong> Du leitest auf diese Seite selbst weiter.\nDu hast vermutlich das falsche Weiterleitungsziel angegeben oder du bearbeitest die falsche Seite.\nWenn du erneut auf „{{int:savearticle}}“ klickst, wird die Weiterleitung dennoch erstellt.",
-       "missingcommenttext": "Dein Abschnitt enthält keinen Text.",
+       "missingcommenttext": "Bitte gib unten einen Kommentar ein.",
        "missingcommentheader": "'''Achtung:''' Du hast kein Betreff/Überschrift eingegeben. Wenn du erneut auf „{{int:savearticle}}“ klickst, wird deine Bearbeitung ohne Überschrift gespeichert.",
        "summary-preview": "Vorschau der Zusammenfassungszeile:",
        "subject-preview": "Vorschau der Zusammenfassungszeile:",
        "rcshowhidemine": "Eigene Beiträge $1",
        "rcshowhidemine-show": "anzeigen",
        "rcshowhidemine-hide": "ausblenden",
-       "rcshowhidecategorization": "Seitenkategorisierungen $1",
-       "rcshowhidecategorization-show": "anzeigen",
-       "rcshowhidecategorization-hide": "ausblenden",
        "rclinks": "Zeige die letzten $1 Änderungen der letzten $2 Tage.<br />$3",
        "diff": "Unterschied",
        "hist": "Versionen",
        "recentchangeslinked-summary": "Diese Spezialseite listet die letzten Änderungen an den verlinkten Seiten auf (bzw. an in dieser Kategorie enthaltenen Kategorien). Seiten auf deiner [[Special:Watchlist|Beobachtungsliste]] sind <strong>fett</strong> dargestellt.",
        "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 {{PLURAL:$2|eine weitere Seite|$2 weitere Seiten}} zur Kategorie hinzugefügt",
-       "recentchanges-page-removed-from-category": "[[:$1]] von der Kategorie entfernt",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] und {{PLURAL:$2|eine weitere Seite|$2 weitere Seiten}} von der Kategorie entfernt",
        "upload": "Datei hochladen",
        "uploadbtn": "Datei hochladen",
        "reuploaddesc": "Abbrechen und zurück zur Hochladen-Seite",
        "emailuser": "E-Mail an diesen Benutzer",
        "emailuser-title-target": "E-Mail an {{GENDER:$1|diesen Benutzer|diese Benutzerin}} senden",
        "emailuser-title-notarget": "E-Mail an Benutzer",
-       "emailpage": "E-Mail an Benutzer",
        "emailpagetext": "Du kannst {{GENDER:$1|dem Benutzer|der Benutzerin}} mit dem unten stehenden Formular eine E-Mail senden.\nAls Absender wird die E-Mail-Adresse aus deinen [[Special:Preferences|Einstellungen]] eingetragen, damit {{GENDER:$1|der Benutzer|die Benutzerin}} dir direkt antworten kann.",
        "defemailsubject": "{{SITENAME}} – E-Mail von Benutzer „$1“",
        "usermaildisabled": "E-Mail-Empfang deaktiviert",
        "emailccsubject": "Kopie deiner Nachricht an $1: $2",
        "emailsent": "E-Mail verschickt",
        "emailsenttext": "Deine E-Mail wurde verschickt.",
-       "emailuserfooter": "Diese E-Mail wurde von „$1“ an „$2“ durch die Funktion „{{int:emailpage}}“ bei {{SITENAME}} gesendet.",
+       "emailuserfooter": "Diese E-Mail wurde von „$1“ an „$2“ durch die Funktion „{{int:emailuser}}“ bei {{SITENAME}} gesendet.",
        "usermessage-summary": "Systemnachricht gespeichert.",
        "usermessage-editor": "System-Messenger",
        "usermessage-template": "MediaWiki:Benutzernachricht",
        "logentry-newusers-create2": "Benutzerkonto $3 wurde von $1 {{GENDER:$2|erstellt}}",
        "logentry-newusers-byemail": "Benutzerkonto $3 wurde von $1 {{GENDER:$2|erstellt}} und das Passwort wurde per E-Mail zugesandt",
        "logentry-newusers-autocreate": "Benutzerkonto $1 wurde automatisch {{GENDER:$2|erstellt}}",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|verschob}} die Schutzeinstellungen von $4 nach $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|änderte}} die Gruppenzugehörigkeit für $3 von $4 zu $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|änderte}} die Gruppenzugehörigkeit für $3",
        "logentry-rights-autopromote": "$1 wurde automatisch von $4 zu $5 {{GENDER:$2|zugeordnet}}",
index 414a559..5367162 100644 (file)
        "nstab-help": "सहायता पानो",
        "nstab-category": "श्रेणी",
        "nosuchaction": "यसो काम हैन",
-       "nosuchactiontext": "URL à¤²à¥\87 à¤\96à¥\81लाà¤\8fà¤\95à¥\8b à¤\95ाम à¤®à¤¾à¤¨à¥\8dय à¤\9bà¥\88न à¥¤\nतमà¥\81लà¥\87 URL à¤\97लत à¤\9fाà¤\87पà¤\97रà¥\87à¤\95ा à¤¹à¥\8c , à¤µà¤¾ à¤\97लत à¤²à¤¿à¤\82à¤\95à¤\95 à¤ªà¤\9bाडà¥\80 à¤²à¤¾à¤\97à¥\87à¤\95ा à¤¹à¥\81नसà¤\95à¥\8dदà¥\87हà¥\8c à¥¤\nयà¥\88{{SITENAME}}लà¥\87 à¤¸à¤«à¥\8dà¤\9fवà¥\87यरमà¥\80 à¤­à¤\8fà¤\95à¥\8b à¤\97लà¥\8dति à¤¦à¥\87à¤\96ायाà¤\95à¥\8b à¤ªà¤¨à¤¿ हुनसक्छ ।",
+       "nosuchactiontext": "URL à¤²à¥\87 à¤\96à¥\81लाà¤\8fà¤\95à¥\8b à¤\95ाम à¤®à¤¾à¤¨à¥\8dय à¤\9bà¥\88न à¥¤\nतमà¥\80लà¥\87 URL à¤\97लत à¤\9fाà¤\87पà¤\97रà¥\87à¤\95ा à¤¹à¥\8c , à¤µà¤¾ à¤\97लत à¤²à¤¿à¤\82à¤\95à¤\95 à¤ªà¤\9bाडà¥\80 à¤²à¤¾à¤\97à¥\87à¤\95ा à¤¹à¥\81नसà¤\95à¥\8dदà¥\87हà¥\8c à¥¤\nयà¥\8b {{SITENAME}}लà¥\87 à¤¸à¤«à¥\8dà¤\9fवà¥\87यरमà¥\80 à¤­à¤¯à¤¾à¤\95à¥\8b à¤\97लà¥\8dति à¤¦à¥\87à¤\96ायाà¤\95à¥\8b à¤²à¥\88 हुनसक्छ ।",
        "nosuchspecialpage": "तसो विशेष पानो छैन",
        "nospecialpagetext": "<strong>तमीले अनुरोध गर्याको विशेष पानो अमान्य छ ।</strong>\n\nमान्य पानाहरूको सूची यहाँ [[Special:SpecialPages|{{int:specialpages}}]] उपलब्ध छ ।",
        "error": "त्रुटी",
        "viewsource": "स्रोत हेर",
        "viewsource-title": " $1 को स्रोत हेर",
        "actionthrottled": "कार्य रोकिईयो",
+       "actionthrottledtext": "स्पामको रोकथामको लागि , तमीलाई यो कार्य नापै समयमी मैथै पटक गद्दाबठे सिमित गरियाको छ, र तमीले आफ्नो सिमा पार गरिसक्याछौ ।\nकृपया केही मिनेट पछि पुन: प्रयास गर  ।",
        "viewyourtext": "यै पानामी रह्याका '''तमरा सम्पादनहरू''' हेद्द या प्रतिलिपी गद्द सक्द्या हौ :",
        "editinginterface": "<strong>चेतावनी:</strong> तमी यै पानालाई सम्पादन गद्द लाग्याछौ, जनले सफ्टवेयरको लागि \nइन्टरफेस सामग्रीहरू प्रदान गरन्छ।\nयै पानामी गरियाको परिवर्तनले यै विकिमी अरु प्रयोगकर्तानको इन्टरफेसको प्रदर्शनमी प्रभाव पडन्छ ।",
        "namespaceprotected": "तमलाई '''$1'''  नेमस्पेसमी रह्याका पानाहरू सम्पादन गद्या अनुमति छैन ।",
        "createacct-benefit-body2": "{{PLURAL:$1|पाना|पानाहरू}}",
        "createacct-benefit-body3": "हालैका {{PLURAL:$1|योगदानकर्ता|योगदानकर्ताहरू}}",
        "badretype": "तमले दिया पासवर्ड मिल्लो नाइँ।",
+       "userexists": "तमीले प्रविष्ट गर्याको प्रयोगकर्ता नाम पैल्ली बठे प्रयोगमी छ ।\nकृपया फरक नाम छान ।",
        "loginerror": "प्रवेश गल्ती",
        "createacct-error": "खाता बनाउँन्ज्या गल्ती",
        "createaccounterror": "खाता बनाउन सकिएन: $1",
+       "noname": "तमीले सही प्रयोगकर्ता नाम दिएनौ।",
        "loginsuccesstitle": "प्रवेश सफल",
        "loginsuccess": "'''तमले {{SITENAME}}मी  \"$1\" को रुपमी प्रवेश गरया छौ।'''",
        "nouserspecified": "प्रयोगकर्ता नाम दिनु अनिवार्य छ।",
        "createaccount-text": "कसैले तमरो इमेल ठेगानालाई {{SITENAME}} ($4) मी \"$2\" नामको खाता बनायाको छ, जैको पासवर्ड \"$3\" छ ।\nअब तमी तुरुन्त लगइन गरिबर आफ्नो पासवर्डशब्द परिवर्तन गर ।\nयदी यो खाता गल्तिले खोलियाको रहेछ भण्या तम यै सन्देशलाई बेवास्ता गद्द सक्द्याहौ ।",
        "login-migrated-generic": "तमरो खाता स्थानान्तरण भयाको छ, र तमरो प्रयोगकर्ता नाम यै विकिमी नाइथि ।",
        "loginlanguagelabel": "भाषा: $1",
+       "createacct-another-realname-tip": "वास्तविक नाम ऐच्छिक हो ।\nतमले यो खुलायौ भण्या तमरो काममी प्रयोगकर्ता श्रेय दिनका निउती यैको प्रयोग गरिन्या छ ।",
        "pt-login": "प्रवेश (लग ईन)",
        "pt-login-button": "प्रवेश",
        "pt-createaccount": "नयाँ खाता खोल",
        "passwordreset-emailelement": "प्रयोगकर्ताको नाम: $1\nअस्थाई पासवर्ड: $2",
        "passwordreset-emailsent": "पासवर्ड परिवर्तनका लागि इमेल पठाइया छ।",
        "changeemail": "इमेल ठेगाना बदेल",
+       "changeemail-text": "आफ्नो इमेल ठेगाना परिवर्तन गद्द यो फारम भर । यैलाई पुष्टि गद्द तमीले आफ्नो पासवर्ड हाल्नु पडन्छ।",
        "changeemail-oldemail": "अईलको इमेल-ठेगाना:",
        "changeemail-newemail": "नयाँ इमेल-ठेगाना:",
        "changeemail-none": "(के लै नाइँ)",
        "showdiff": "परिवर्तन धेकाउन्या",
        "blankarticle": "<strong>चेतावनी:</strong> तम एक खालि पानाको निर्माण गद्द लाग्याछौ ।\nयदि तमले \"{{int:savearticle}}\" लाई पुनः थिच्यौ भण्या पानो बिना कुनै सामग्री नै निर्मित गरिन्याछ ।",
        "anoneditwarning": "<strong>चेतावनी:</strong> तमले प्रवेश अरेको नाइथिन । तमरो आइपि ठेगाना पाना सम्पादन इतिहासमि दर्ता गरिन्या छ र यो सब्बैले हेद्द सक्कान । यदि तमलाईँ <strong>[$1 लगईन]</strong> वा <strong>[$2 नयाँ खाता बनाउन्या] गर्याभण्या तमबठे गरियाको सम्पादन तमरो प्रयोगकर्तानाममि जोडिन्याछ ।",
+       "missingsummary": "'''यादगर्या :''' तमीले सम्पादन सारांश दियाका छैनौ ।\nयदि तमीले \"{{int:savearticle}}\"  थिच्यौ भण्या , सारांश बिना नै सङ्ग्रहित गरिन्या छ ।",
        "selfredirect": "<strong>चेतावनी:</strong> तम यै पानालाई आफुमी पुनः निर्देशित गद्द लाग्याछौ ।\nहुनसक्छ तम अनुप्रेषितको लागि गलत लक्ष्य निर्दिष्ट गद्द लाग्याछौ, वा गलत पानाको सम्पादन गद्द लाग्याछौ ।\nतम पुनः एकपल्ट \"{{int:savearticle}}\" क्लिक गद्दाछौ, पुनः निर्देशित तसै लै बनाइन्याछ।",
        "missingcommentheader": "'''याद गर :''' तमीले टिप्पणीमी विषय /शीर्ष पंक्ति  दियाका छैनौ ।\nतमीले फेरि \"{{int:savearticle}}\"  थिच्यौ भण्या , तमरो सम्पादन यसै रुपमी संग्रहित हुन्याछ ।",
        "summary-preview": "सारांश पूर्वालोकन:",
        "subject-preview": "विषय/शीर्षपंक्ति पूर्वरुप:",
        "previewerrortext": "तमरो परिवर्तनको पूर्वावलोकन बनाउन खोज्दा समस्या आयाको छ ।",
        "blockedtitle": "प्रयोककर्तालाई रोक लगाइया छ",
-       "blockedtext": "'''तमरो प्रयोगकर्ता नाम या IP ठेगानालाई रोक लगाइएको छ ।'''\n\nरोक लगाउने  $1.\nरोक लगाउनाको कारण ''$2''.\n\n* रोक सुरू हुने : $8\n* रोक सकिने: $6\n* रोकबाट लक्षित: $7\n\nतमले  $1 वा और कोइ  [[{{MediaWiki:Grouppage-sysop}}|administrator]] सँग रोकको बारेमी छलफल गर्न सम्पर्क गर्न सकुन्छौ ।\nतमले  'प्रयोगकर्तालाई इ-मेल गर्ने ' सुविधा मान्य इमेल ठेगाना [[Special:Preferences|account preferences]] मी नखुलाए सम्म प्रयोगगर्न पाउनुहुन्या छैन र येको प्रयोग गर्नबठे रोक लगाइया छैन ।\nतमरो IP ठेगाना $3 को, र रोक्का संख्या #$5.\nकृपया तमरा प्रश्नमी सबै जानकारी खुलाया ।",
+       "blockedtext": "'''तमरो प्रयोगकर्ता नाम या IP ठेगानालाई रोक लगाइएको छ ।'''\n\nरोक लगाउने  $1.\nरोक लगाउनाको कारण ''$2''.\n\n* रोक सुरू हुने : $8\n* रोक सकिने: $6\n* रोकबाट लक्षित: $7\n\nतमले  $1 वा और कोइ  [[{{MediaWiki:Grouppage-sysop}}|प्रवन्धक]] सँग रोकको बारेमी छलफल गर्न सम्पर्क गद्द सकुन्छौ ।\nतमले  'प्रयोगकर्तालाई इ-मेल गर्ने ' सुविधा मान्य इमेल ठेगाना [[Special:Preferences|रोजाइहरू]] मी नखुलाए सम्म प्रयोगगर्न पाउनुहुन्या छैन र यैको प्रयोग गर्नबठे रोक लगाइया छैन ।\nतमरो IP ठेगाना $3 को, र रोक्का संख्या #$5.\nकृपया तमरा प्रश्नमी सबै जानकारी खुलाया ।",
+       "autoblockedtext": "तमरो IP ठेगानामी रोक लगाइयाकोछ किन भण्या यो अर्को प्रयोगकर्ताले प्रयोग गर्याको थ्यो, जैलाई $1ले रोक लगायाका थ्या । \nरोक लगाउनाको कारण:\n:''$2''  \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 गद्दु पडन्छ।",
        "nosuchsectiontext": "तमले तसो खण्डको सम्पादन गद्या प्रयास गर्यौ जो अस्तित्वमी छैन।\nयैको नाम बदलियाको अथवा मेटाइयाको हुनुपडन्छ जब तमी यै पानालाई हेद्द लाग्याका छियौ ।",
        "loginreqtitle": "प्रवेशगर्नु जरुरी छ।",
        "loginreqlink": "प्रवेश (लग ईन)",
-       "loginreqpagetext": "à¤\85रà¥\81 à¤ªà¥\83षà¥\8dठहà¥\87रà¥\8dन तमले $1 गद्दु पडन्छ ।",
+       "loginreqpagetext": "à¤\85रà¥\81 à¤ªà¤¾à¤¨à¤¾ à¤¹à¥\87दà¥\8dद तमले $1 गद्दु पडन्छ ।",
        "accmailtitle": "पासवर्ड पठाइयो",
        "newarticle": "(नयाँ)",
        "newarticletext": "तमले ऐलसम्म नभयाका पानाको लिंङ्क पहिल्याउनु भयाको छ।\nयो पानो बनौनाखी तल्तिरको कोष्ठमा टाइप गरिदिय ।(और जाण्णाखीलेखा [$1 help page] हेरिदिय )।\nताखाइ सुधिसार आइपुग्या हौ भण्या, ब्राउजरको  '''back''' बटन थिचिहाल ।",
        "revdel-restore": "दृष्टि परिवर्तन गर्न्या",
        "pagehist": "पाना इतिहास",
        "deletedhist": "मेटाईया इतिहास",
-       "revdelete-concurrent-change": " $2, $1 मिति गरियाको वस्तु परिवर्तन गद्द सकिएन: यसको स्थितीले तमीले परिवर्तन गर्नलाग्दे बेला कोहीअरुले नै परिवर्तन गर्याजसो धेकाउँछ\nकृपया लगहरू हेर्न सकन्छौ ।",
+       "revdelete-concurrent-change": " $2, $1 मिति गरियाको वस्तु परिवर्तन गद्द सकिएन: यैको स्थितीले तमीले परिवर्तन गर्नलाग्दे बेला कोहीअरुले नै परिवर्तन गर्याजसो धेकाउँछ\nकृपया लगहरू हेर्न सकन्छौ ।",
+       "revdelete-only-restricted": "$2, $1 मिति भयाको वस्तु लुकाउँदा त्रुटी भया छ:तमीले वस्तुहरूलाई प्रवन्धकहरूको दृष्टीबठे दमन गद्द सक्दाइनौ अझ कुनै पनि अरु दृष्टी विकल्पहरू नछानीकन।",
        "revdelete-otherreason": "और/थप कारण:",
        "revdelete-reasonotherlist": "और कारण",
        "revdelete-edit-reasonlist": "मेट्ने कार्यहरु सम्पादन गर्ने",
        "powersearch-toggleall": "सबै",
        "powersearch-togglenone": "कोइ लै होइनन",
        "search-external": "भाइरका खोज",
+       "searchdisabled": "{{SITENAME}} खोज निस्क्रिय पारियाको छ ।\nअहिल तमी गूगलद्वारा खोज्न सकन्छौ ।\nयाद गर्या उनीहरूको {{SITENAME}}को सूची सामग्री पुरानो भयाको हुनसकन्छ ।",
        "preferences": "मेरी रोजाई",
        "mypreferences": "मेरी रोजाई",
        "prefs-edits": "सम्पादन संख्या:",
        "badsiglength": "तमरो दस्तखत मैथै लामो छ।\nयो $1 {{PLURAL:$1|अक्षर|अक्षरहरू}} भन्दा लामो हुनु हुँदैन ।",
        "prefs-help-realname": "वास्तविक नाम ऐच्छिक हो ।\nतमीले खुलायौ भण्या तमरो कामको श्रेय दिनको लेखा यैको प्रयोग गरिन्या छ ।",
        "prefs-help-prefershttps": "यो रोजाई तमरो अर्को  लग इन बठे लागु हुन्याछ ।",
+       "userrights-unchangeable-col": "तमीले परिवर्तन गद्द नसक्ने समूहहरू",
        "userrights-conflict": "प्रयोगकर्ताको अधिकार परिवर्तनमी मतभेद भयो ! कृपया तमरो परिवर्तन पुनरावलोकन तथा पुष्टि गर ।",
        "userrights-removed-self": "तमीले सफलतापूर्वक आफ्नो अधिकारहरूलाई मेटायौ । त्यै कारण तमी अब यो पानो हेद्द नाइसक्दा ।",
        "group-user": "प्रयोगकर्ताहरू",
        "rcshowhidemine": "$1 मेरा सम्पादनहरू",
        "rcshowhidemine-show": "धेकाइदिय",
        "rcshowhidemine-hide": "लुकाइदिय",
-       "rcshowhidecategorization-show": "धेकाउन्या",
-       "rcshowhidecategorization-hide": "लुकाउन्या",
        "rclinks": "पछिल्ला $1 परिवर्तनहरू पछाडिका $2 दिनहरूमी<br />$3",
        "diff": "फरक",
        "hist": "इतिहास",
        "upload-recreate-warning": "'''चेतावनी: त्यस नाममी रह्याका फाइलहरू सारियाको या हटायाको छ।'''\n\nयै पानाको सारियाको र हटायाको लग तमरो सहजताको लागि दियाको छ।",
        "filedesc": "सारांश:",
        "large-file": "यो सिफारिस गर्याछकि फाइलहरूको आकार $1 भन्दा ठूला हुनु हुँदैन;\nयै फाइलको आकार $2 छ ।",
+       "emptyfile": "तमीले अपलोड गर्याको फाइल रित्तो छ ।\nयो फाइल नाम गलत राख्याका कारणले भयाको हुनसकन्छ\nयो फाइल साँच्चै अपलोड गद्दे कुरडीमी निश्चित होइजाओ ।",
        "fileexists": "यै नामको फाइल पैल्ली नैं छ, यदि तम परिवर्तन गद्या कुरडीमू सुनिश्चित छैनौ भण्या कृपया <strong>[[:$1]]</strong> जाँच गर।\n[[$1|thumb]]",
        "filewasdeleted": "यै नामको एक फाइल पहिली पनि अपलोड गरिबर पछि हटाई सकियाको छ।\nपुनः अपलोड गद्दु पूर्व तम $1 लाई निक्करी जाँच गर ।",
        "upload-dialog-title": "चित्र अपलोड गर",
        "morelinkstoimage": "यै फाइलको [[Special:WhatLinksHere/$1|थप लिंकहरू]] हेर ।",
        "sharedupload-desc-here": "यो फाइल $1 बठे हो र और  परियोजनाहरू बठे पन प्रयोग गद्द सकिन्याछ । \nताखाइ यैको [$2 फ़ाइल विवरण पानो]मि रयाका विवरण तल्तिर दियाको छ।",
        "upload-disallowed-here": "तमलाई यो फाइल अधिलेखन गद्द नाइसक्का ।",
+       "filedelete-intro-old": "तमी <strong>[[Media:$1|$1]]</strong> को संस्करणलाई [$4 $3, $2] हुन्या गरि मेट्ट लाग्याछौ ।",
        "filedelete-maintenance": "रखरखाव चलिरह्याको हुनाले अस्थायी रुपमी फाइलहरू मेट्ट्या र मेट्याकोलाई पुनर्बहाली गर्न निष्क्रिय गरियाकोछ।",
        "mimesearch-summary": "MIME-प्रकार अनुसार फाइलहरू खोज्न यै पानाको प्रयोग गद्द सकिन्याछ ।\nइनपुट: फाइलको प्रकार/उपप्रकार, उदा. <code>image/jpeg</code>।",
        "randompage": "कोइ एक लेख",
        "newpages": "नयाँ पानाहरू",
        "move": "नाम बदल",
        "movethispage": "पानाको नाम बदल्न्या",
+       "notargettext": "यै कार्यका लेखाई तमीले कुनै लक्षित पानो वा प्रयोगकर्ता निर्दिष्ट गर्याको छैनौ ।",
+       "nopagetext": "तमीले खुलायाको गन्तव्य पानो अस्तित्वमी  छैन।",
        "pager-older-n": "{{PLURAL:$1|पुरानो १|पुरानो $1}}",
        "booksources": "किताबका श्रोतहरु",
        "booksources-search-legend": "किताबका श्रोतहरु खोज्या",
        "booksources-search": "खोज अर",
+       "booksources-text": "तल दियाको सूची नौला तथा पूराना किताब बेच्न्या लगायत तमीले खोज्याका किताबका बारेमी थप जानकारी भयाका अन्य साइटका लिंकहरू हुन् ।",
        "log": "लगहरू",
        "all-logs-page": "सब्बै सार्वजनिक लगहरू",
        "allarticles": "सब्बै लेखहरू",
        "confirmdeletetext": "तमी यो पानो र यैको इतिहास मेट्ट लाग्याछौ । कृपया पुष्टि गर कि [[{{MediaWiki:Policy-url}}|नियम]] मुताबिक तम मेट्ट लाग्याछौ।",
        "dellogpage": "मेटाइयाको लग",
        "delete-toobig": "यै पानाको सम्पादन इतिहास भौतै र  $1 {{PLURAL:$1|पुनरावलोक|पुनरावलोकहरू}}भन्दा बढी रह्याको छ।\n {{SITENAME}}मी दुर्घटनाको कारणले गडबडी आउनसक्द्या कुरडीलाई रोक्न यसा पानाहरूलाई मेट्नबठे निषेध गरियाको छ ।",
+       "deleteprotected": "यै पानालाई सुरक्षित गर्याकोले तमी यैलाई मेटाउन सक्दाइनौ ।",
        "rollback": "सम्पादनहरू उल्टाउन्या",
        "rollbacklink": "पैल्लिका रुपमि फर्काउन्या",
        "rollbacklinkcount": "रोल्ब्याक $1 {{PLURAL:$1|सम्पादन|सम्पादनहरू}}",
        "block-log-flags-anononly": "नाम नभयाका प्रयोकर्ताहरू मात्र",
        "proxyblockreason": "तमरो IP ठेगानामी रोक लगायाको छ किनकी यो खुला प्रोक्सी हो ।\nकृपया तमरो इन्टरनेट सेवा प्रदायक या प्राविधिक सहायतासँग सम्पर्क गरीबर यै सुरक्षा समस्याका बारेमी जानकारी गराओ ।",
        "sorbsreason": "तमरो IP ठेगाना खुल्ला प्रोक्सीको रुपमी  DNSBL मा सूचीकरण गरिएको छ यैलाई{{SITENAME}}ले प्रयोगमी ल्यायाको छ।",
+       "sorbs_create_account_reason": "तमरो IP ठेगाना खुल्ला प्रोक्सीको रुपमी  DNSBL मी सूचीकरण गरियाको छ यैलाई{{SITENAME}}ले प्रयोगमी ल्यायाको छ ।\nतम खाता खोल्न नाइसक्दा ।",
        "xffblockreason": "एउटा आइपि ठेगाना जुन X-Forwarded-For हेडरमी रह्याको छ, या त तमरो हो वा त्यै प्रक्सी सर्भरको हो जैको प्रयोग तमी गद्दा छौ रे यै माथि प्रतिबन्ध लगाइयाको छ । वास्तविक कारण थ्यो:$1",
+       "cant-see-hidden-user": "तमीले ब्लक गद्द खोज्याको प्रयोगकर्ता पहिले नै ब्लक गरि लुकाइ सक्याको छ ।\nतमीसँग hideuser अधिकार नभयाकोले यैलाई हेद्द या सम्पादन गद्द सक्दाइनौ ।",
        "ipbblocked": "तमी अरु प्रयोगकर्तानहरूलाई ब्लक गर्न वा उनीहरूको ब्लक खोल्न नाइसक्दा किनभने तमी आफै ब्लक भयाका छौ ।",
        "ipbnounblockself": "तमी आफुलाई आफै अनब्लक गद्द नाइ सक्दा ।",
        "lockdbtext": "डेटाबेसमी ताला लगाउनाले सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो रौजाईमी परिवर्तन, आफ्नो ध्यानसूचीमी सम्पादन, र अन्य वस्तु जैको लागि डेटाबेसमी परिवर्तन गरें हुन्छ, त्यैबठे वन्चित हुन्याछ । कृपया यो सुनिश्चित गर कि तम यो गर्न चाहन्छौ, र तम रक्षण पश्चात ताला खोल्न्या हौ ।",
        "movenologintext": "पानाको नाम बदल्नको लागि तमी दर्ता गरियाको र [[Special:UserLogin|लगइन गर्याको]] प्रयोगकर्ता हुनुपडन्छ ।",
        "cant-move-user-page": "तमसँग प्रयोगकर्ता पानाहरू साद्या अनुमती नाइथिन् (सहपानाहरू बाहेक)",
        "cant-move-to-user-page": "तमसँग पानाहरूलाई प्रयोगकर्ता पानामी साद्या अनुमती नाइथिन् (प्रयोगकर्ता सहपृष्ठहरूमी बाहेक)",
+       "cantmove-titleprotected": "तमी यै ठौरमी पानो साद्द सक्दाइनौ, किनकी यो नौलो शिर्षकलाई सिर्जना हुनबठे जगाइयाको छ",
        "move-subpages": "उप पानाहरू सार्न्या($1 सम्मको)",
        "move-talk-subpages": "कुरडी पानाको सह-पानाहरू साद्य($1 सम्मको )",
        "movepage-max-pages": "अधिकतम $1 {{PLURAL:$1|पाना|पानाहरू}}को नाम बदलि सकियाको छ र अरु स्वत: नाम बदलिन्या छैन ।",
        "import-noarticle": "आयात गद्दाकी लाई पानाहरू नाइथिन्",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|संशोधन|संशोधनहरू}} आयात भयो",
        "tooltip-pt-userpage": "तमरो प्रयोगकर्ता पानो",
+       "tooltip-pt-anonuserpage": "तमी जो IP ठेगानाको रुपमी सम्पादन गद्दै छौ , त्यैको प्रयोगकर्ता पानो निम्न छ :",
        "tooltip-pt-mytalk": "तमरो कुरडीकानी पानो",
        "tooltip-pt-preferences": "तमरा अभिरुचिहरू",
        "tooltip-pt-watchlist": "पृष्ठहरूको सूची जैका फेरबदलहरुलाई तमले पहरा गरिराखेका छौ ।",
        "confirmemail_pending": "तमरो इमेलमी प्रपाणिकरण कोड पैल्ली नै पठाइ सकियाको छ;\nयदि तमले अल्लै खाता खोल्याका भया कोडका निउती पुन: अनुरोध गद्द अघाडी कोड नआइपुगुन्ज्या कृपया एक पल्ट पख ।",
        "confirmemail_oncreate": "प्रमाणिकरण कोड तमरो इमेल ठेगानामी पठायाको छ ।\nयो कोड लगइन गद्दाका लागि अत्यवश्यक छैन, तर यै विकिमी इमेल ठेगानामी आधारित सेवाहरू उपभोग गद्द कोड उपलब्ध गराउनु पड्ड्या हुन्छ ।",
        "confirmemail_sendfailed": "{{SITENAME}} प्रमाणिकरण इमेल पठाई सकियोन।\nतमरा इमेलमी अमान्य अक्षरहरू छन् कि जाँचियल ।\n\nमेलरले पठायाको त्रुटी रैबार: $1",
+       "confirmemail_needlogin": "तमीले आफ्नो इमेल प्रमाणिकरण गराउन $1 गद्दु पडन्छ ।",
        "confirmemail_success": "तमरो इमेल ठेगाना प्रमाणिकरण गरियाको छ ।\nअब तमी [[Special:UserLogin|प्रवेश गरी]] विकिको मजा लिन सक्द्याहौ ।",
        "confirmemail_loggedin": "तमरो इमेल ठेगाना प्रमाणित भयाको छ।",
        "confirmrecreate": "प्रयोगकर्ता [[User:$1|$1]] ([[User talk:$1|कुरडी]])ले  तमले  सम्पादन सुरु गर्यापछि यो पानो मेट्याकाछन् । कारण थ्यो:\n: ''$2''\nकृपया सुनिश्चित गर कि तम यो पानो साँच्चै निर्माण गद्द चाहन्छौ ।",
+       "confirmrecreate-noreason": "प्रयोगकर्ता [[User:$1|$1]] ([[User talk:$1|कुरडी ]])ले यो पानो तमी सम्पादन गद्द थाल्या पछि मेट्याका छन् । यै पानालाई पुन: सिर्जना गद्दे भया कृपया पुष्टि गर ।",
        "size-bytes": "$1 अक्षरहरू",
        "size-kilobytes": "$1 किलोबाइट",
        "size-megabytes": "$1 मेगाबाइट",
        "watchlistedit-clear-explain": "तमरा ध्यान सूचीबठे सम्पूर्ण पाना हटाइया",
        "watchlistedit-clear-done": "तमरो ध्यान सूची खाली गरीयाको छ।",
        "watchlisttools-view": "आधारित फेरबदलीहरू हेर",
-       "signature": "[[{{एनस:प्रयोगकर्ता}}:$1|$2]]([[{{एनस:प्रयोगकर्ता_कुरडी}}:$1|कुरडी]])",
+       "signature": "[[{{ns:प्रयोगकर्ता}}:$1|$2]]([[{{ns:प्रयोगकर्ता_कुरडी}}:$1|कुरडी]])",
        "specialpages": "खास पानो",
        "specialpages-note": "* साधारण खास पानाहरू।\n* <span class=\"mw-specialpagerestricted\">निषेधित खास पानाहरू।</span>",
        "specialpages-group-changes": "अल्लैका परिवर्तन लगहरू",
        "tag-filter": "[[Special:Tags|पुछड]] छानिन्या",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ट्याग|ट्यागहरू}}]]: $2)",
        "tags-hitcount": "$1 {{PLURAL:$1|परिवर्तन|परिवर्तनहरू}}",
+       "tags-create-no-name": "तमीले ट्याग नाम निर्दिष्ट गद्दु पड्ड्या हुन्छ ।",
        "tags-create-warnings-below": "क्या तमी यो ट्याग बनाउन्या काम जारी राख्न चाहन्छौ ?",
+       "tags-delete-explanation-initial": "तमी ट्याग \"$1\" लाई डाटावेसबठे हटाउँन लाग्याछौ ।",
        "tags-delete-explanation-warning": "यो क्रिया <strong>अपरिवर्तनीय</strong> हो र <strong>त्यसलाई परिवर्तन गर्न नाईसकिंदो</strong>, डेटाबेस प्रवन्धक पनि यैलाई केहि गद्द सक्दाइनन् । विश्वासपूर्ण रूपले तम तय गर कि तमी यै ट्यागलाई हटाउन चाहन्छौ ।",
+       "tags-activate-question": "तमी ट्याग \"$1\"लाई सक्रिय गद्द लाग्याछौ ।",
+       "tags-deactivate-question": "तमी ट्याग \"$1\" लाई निस्क्रिय गद्द लाग्याछौ ।",
+       "compare-invalid-title": "तमीले खुलायाको शिर्षक अमान्य छ ।",
+       "compare-title-not-exists": "तमीले खुलायाको शिर्षक उपलब्ध छैन ।",
+       "compare-revision-not-exists": "तमीले खुलायाको संस्करण उपलब्ध छैन ।",
+       "dberr-usegoogle": "तमी अहिले गुगलबठे खोज्न्या प्रयास गद्द सक्न्याहौ ।",
        "htmlform-invalid-input": "तमले प्रविष्ठ गर्याका कुनै सामग्रीहरू ठिक नाइथिन्",
+       "htmlform-select-badoption": "तमीले खुलायाको मान मान्य विकल्प हैन ।",
+       "htmlform-float-invalid": "तमीले जनायाको मान कुनै संख्या हैन ।",
+       "htmlform-int-toolow": "तमीले जनायाको मान न्युनतम $1 भन्दा कम भयो ।",
+       "htmlform-int-toohigh": "तमीले जनायाको मान अधिकतम $1 भन्दा बढी भयो ।",
        "logentry-delete-delete": "$1 बठे पानो $3 {{GENDER:$2|मेटाइयो}}",
        "logentry-move-move": "$1 {{GENDER:$2|द्वारा}} $3 पृष्ठलाई $4 मि सारियो",
        "logentry-newusers-create": "प्रयोगकर्ता खाता $1 {{GENDER:$2|खोलियो}}",
index ac0a415..9b109f5 100644 (file)
@@ -5,7 +5,8 @@
                        "Reder",
                        "Geitost",
                        "아라",
-                       "Shirayuki"
+                       "Shirayuki",
+                       "Gloria sah"
                ]
        },
        "tog-underline": "Tîra 'na rîga sòta i colegamèint.",
        "passwordreset": "Câmbia la cêva 'd ingrès",
        "passwordreset-text-one": "Impés cól môdul ché per  turnêr a impustêr la tó cêva 'd ingrès.",
        "passwordreset-text-many": "{{PLURAL:$1|Impés ûn di câmp per ricēver 'na cêva 'd ingrès pruvişôria per mèz ed la pôsta eletrônica}}",
-       "passwordreset-legend": "Tōrna mèter la cêva 'd ingrès",
        "passwordreset-disabled": "In cla wiki ché an pōlen mia turnêr impustêr al cêvi 'd ingrès",
        "passwordreset-emaildisabled": "In cla wiki ché è stê bluchê al funsiòun ed la pôsta eletrônica.",
        "passwordreset-username": "Nòm utèint:",
        "resettokens": "Tōrna 'd impustêr la cêva",
        "resettokens-text": "Ché 't pō turnêr a impustêr al cêvi ch'ét permèten l'ingrès a precîşi infurmasiòun privêdi lighêdi a la tó utèinsa. Ét duvrés fêrel se per chêş ét j ê spartîdi cun quelchidûn o se al j infurmasiòun ed la tó utèinsa în  in perécol.",
        "resettokens-no-tokens": "An gh'é mìa di token da turnêr a impustêr.",
-       "resettokens-legend": "Tōrna 'd impustêr la cêva",
        "resettokens-tokens": " Token:",
        "resettokens-token-label": "$1 (valōr 'd adèsa: $2)",
        "resettokens-watchlist-token": "Token p'r al feed web (Atom/RSS) dal [[Special:Watchlist|mudéfichi al pàgini ch'ét tîn sòt' ôc]]",
        "pageinfo-watchers": "Nómer  'd utèint che gh'àn la pàgina sòt ôc.",
        "pageinfo-edits": "Nómer totêl dal mudéfichi",
        "pageinfo-authors": "Nómer totêl di divêrs avtôr",
+       "pageinfo-toolboxlink": "Infurmasiòun in sìm'ala pàśna",
        "previousdiff": "← Diferèinsa 'd préma",
        "nextdiff": "Diferèinsa dôp →",
        "file-info-size": "$1 × $2 pixel, amzûra dal file:$3, gèner MIME: $4",
        "rightsnone": "(nisûn)",
        "feedback-cancel": "Scanşela",
        "feedback-message": "Mesâg",
-       "feedback-subject": "Argomèint:"
+       "feedback-subject": "Argomèint:",
+       "searchsuggest-search": "Sèirca"
 }
index 03fe0c6..f4fdf48 100644 (file)
        "createacct-benefit-body2": "{{PLURAL:$1|σελίδα|σελίδες}}",
        "createacct-benefit-body3": "πρόσφατοι {{PLURAL:$1|συνεισφέρων|συνεισφέροντες}}",
        "badretype": "Οι κωδικοί που έχετε δηλώσει δεν συμφωνούν μεταξύ τους.",
+       "usernameinprogress": "Μία δημιουργία λογαριασμού για αυτό το όνομα χρήστη είναι ήδη σε εξέλιξη.\nΠαρακαλώ περιμένετε.",
        "userexists": "Το όνομα χρήστη που εισαγάγατε βρίσκεται ήδη σε χρήση.\nΠαρακαλούμε, διαλέξτε ένα διαφορετικό.",
        "loginerror": "Σφάλμα σύνδεσης",
        "createacct-error": "Σφάλμα δημιουργίας λογαριασμού",
        "uploaded-event-handler-on-svg": "Δεν επιτρέπεται ο ορισμός ιδιοτήτων χειρισμού συμβάντων <code>$1=\"$2\"</code> σε αρχεία SVG.",
        "uploaded-href-attribute-svg": "Δεν επιτρέπονται οι ιδιότητες href <code>&lt;$1 $2=\"$3\"&gt;</code> με μη τοπικό προορισμό (π.χ. http://, javascript:, κ.τ.λ.) σε αρχεία SVG.",
        "uploaded-href-unsafe-target-svg": "Βρέθηκε href προς έναν μη ασφαλή προορισμό <code>&lt;$1 $2=\"$3\"&gt;</code> στο ανεβασμένο αρχείο SVG.",
+       "uploaded-animate-svg": "Βρέθηκε μία ετικέτα <code>&lt;animate&gt;</code> που ίσως να αλλάζει το href, με την ιδιότητα \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> στο ανεβασμένο αρχείο SVG.",
+       "uploaded-setting-event-handler-svg": "Η ρύθμιση ιδιοτήτων χειρισμού σφαλμάτων είναι αποκλεισμένη, βρέθηκε <code>&lt;$1 $2=\"$3\"&gt;</code> στο ανεβασμένο αρχείο SVG.",
        "uploaded-setting-href-svg": "Η χρήση της ετικέτας «set» για την προσθήκη του χαρακτηριστικού «href» στο γονικό στοιχείο είναι αποκλεισμένη.",
        "uploaded-wrong-setting-svg": "Η χρήση της ετικέτας «set» για την προσθήκη απομακρυσμένου προορισμού/προορισμού δεδομένων/προορισμού δέσμης ενεργειών είναι αποκλεισμένη. Βρέθηκε <code>&lt;set to=\"$1\"&gt;</code> στο ανεβασμένο αρχείο SVG.",
        "uploaded-setting-handler-svg": "Κάθε SVG που θέτει το χαρακτηριστικό «χειρισμού» με απομακρυσμένο προορισμό/προορισμό δεδομένων/προορισμό δέσμης ενεργειών είναι αποκλεισμένο. Βρέθηκε <code>$1=\"$2\"</code> στο ανεβασμένο αρχείο SVG.",
        "upload-too-many-redirects": "Το URL περιείχε πάρα πολλές ανακατευθύνσεις",
        "upload-http-error": "Εμφανίστηκε κάποιο σφάλμα HTTP: $1",
        "upload-copy-upload-invalid-domain": "Δεν υπάρχουν διαθέσιμα ανεβάσματα αντιγράφων από αυτό τον τομέα.",
+       "upload-dialog-title": "Ανέβασμα αρχείου",
+       "upload-dialog-error": "Ένα σφάλμα συνέβη",
+       "upload-dialog-warning": "Προέκυψε μία προειδοποίηση",
+       "upload-dialog-button-cancel": "Ακύρωση",
+       "upload-dialog-button-done": "Ολοκληρώθηκε",
+       "upload-dialog-button-save": "Αποθήκευση",
+       "upload-dialog-button-upload": "Ανέβασμα",
+       "upload-dialog-label-select-file": "Επιλογή αρχείου",
+       "upload-dialog-label-infoform-title": "Λεπτομέρειες",
+       "upload-dialog-label-infoform-name": "Όνομα",
+       "upload-dialog-label-infoform-description": "Περιγραφή",
+       "upload-dialog-label-usage-title": "Χρήση",
+       "upload-dialog-label-usage-filename": "Όνομα αρχείου",
        "backend-fail-stream": "Αδύνατη η μετάδοση του αρχείου $1.",
        "backend-fail-backup": "Αδύνατη η δημιουργία αντίγραφου ασφαλείας του αρχείου $1.",
        "backend-fail-notexists": "Το αρχείο $1 δεν υπάρχει.",
        "unwatchedpages": "Μη παρακολουθούμενες σελίδες",
        "listredirects": "Λίστα ανακατευθύνσεων",
        "listduplicatedfiles": "Κατάλογος αρχείων με διπλότυπα",
+       "listduplicatedfiles-summary": "Αυτή είναι μια λίστα αρχείων, όπου η πιο πρόσφατη έκδοση του κάθε αρχείου είναι ένα αντίγραφο της πιο πρόσφατης έκδοσης κάποιου άλλου αρχείου. Μόνο τοπικά αρχεία λαμβάνονται υπόψη.",
        "listduplicatedfiles-entry": "Το [[:File:$1|$1]] έχει [[$3|{{PLURAL:$2|διπλότυπο|$2 διπλότυπα}}]].",
        "unusedtemplates": "Αχρησιμοποίητα πρότυπα",
        "unusedtemplatestext": "Αυτή η σελίδα περιέχει όλες τις σελίδες στην περιοχή ονομάτος των {{ns:template}}, οι οποίες δεν περιλαμβάνονται σε άλλη σελίδα. Θυμηθείτε να ελέγξετε για άλλους συνδέσμους προς τα πρότυπα πριν τα διαγράψετε.",
        "unusedimages": "Αχρησιμοποίητες εικόνες",
        "wantedcategories": "Επιθυμητές κατηγορίες",
        "wantedpages": "Ζητούμενες σελίδες",
+       "wantedpages-summary": "Λίστα των ανύπαρκτων σελίδων με τους περισσότερους συνδέσμους προς αυτές, εξαιρουμένων των σελίδων στις οποίες συνδέονται μόνο σελίδες ανακατεύθυνσης. Για μία λίστα με τις ανύπαρκτες σελίδες στις οποίες συνδέονται σελίδες ανακατεύθυνσης, δείτε [[{{#special:BrokenRedirects}}| τη λίστα με τις λανθασμένες ανακατευθύνσεις]].",
        "wantedpages-badtitle": "Μη εγκυρός τίτλος στο σύνολο αποτελέσματος: $1",
        "wantedfiles": "Ζητούμενα αρχεία",
        "wantedfiletext-cat": "Τα ακόλουθα αρχεία χρησιμοποιούνται αλλά δεν υπάρχουν. Αρχεία από εξωτερικά αποθετήρια ενδέχεται να παρατίθενται παρότι υπάρχουν. Κάθε τέτοιες λανθασμένες αναφορές θα <del>διαγραμμίζονται</del>. Επιπλέον, σελίδες που ενσωματώνουν αρχεία που δεν υπάρχουν παρατίθενται στο [[:$1]].",
        "deadendpagestext": "Οι σελίδες που ακολουθούν δεν συνδέονται με άλλες σελίδες στο {{SITENAME}}.",
        "protectedpages": "Προστατευμένες σελίδες",
        "protectedpages-indef": "Προστασίες επαόριστον μόνο",
+       "protectedpages-summary": "Αυτή η σελίδα περιέχει υπάρχουσες σελίδες που τώρα είναι προστατευμένες. Για μία λίστα τίτλων που προστατεύονται από τη δημιουργία των σελίδων, δείτε τους [[{{#special:ProtectedTitles}}|Προστατευμένους τίτλους]].",
        "protectedpages-cascade": "Μόνο διαδοχικές προστασίες",
        "protectedpages-noredirect": "Απόκρυψη ανακατευθύνσεων",
        "protectedpagesempty": "Καμία σελίδα με αυτές τις παραμέτρους δεν είναι προς το παρόν προστατευμένη.",
        "protectedpages-unknown-timestamp": "Άγνωστο",
        "protectedpages-unknown-performer": "Άγνωστος χρήστης",
        "protectedtitles": "Προστατευμένοι τίτλοι",
+       "protectedtitles-summary": "Αυτή η σελίδα περιέχει τίτλους που προστατεύονται από δημιουργία σελίδας. Για μία λίστα υπάρχουσων σελίδων που προστατεύονται, δείτε τις [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
        "protectedtitlesempty": "Δεν υπάρχουν προστατευμένοι τίτλοι με αυτές τις παραμέτρους.",
        "listusers": "Κατάλογος χρηστών",
        "listusers-editsonly": "Εμφάνιση μόνο των χρηστών με επεξεργασίες",
        "emailuser": "Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου σε αυτόν τον χρήστη",
        "emailuser-title-target": "Αποστολή e-mail {{GENDER:$1|στο|στη}} χρήστη",
        "emailuser-title-notarget": "Αποστολή e-mail σε χρήστη",
-       "emailpage": "Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείο στο χρήστη",
        "emailpagetext": "Μπορείτε να χρησιμοποιήσετε την παρακάτω φόρμα για να στείλετε ένα μήνυμα ηλεκτρονικού ταχυδρομείου σε {{GENDER:$1|αυτόν το χρήστη|αυτήν τη χρήστρια}}.\nΗ διεύθυνση ηλεκτρονικού ταχυδρομείου που έχετε εισαγάγει στις [[Special:Preferences|προτιμήσεις χρήστη σας]] θα εμφανιστεί ως διεύθυνση αποστολέα του μηνύματος ηλεκτρονικού ταχυδρομείου, ούτως ώστε ο παραλήπτης να μπορέσει να απαντήσει απευθείας σε σας.",
        "defemailsubject": "{{SITENAME}} e-mail από τον χρήστη \"$1\"",
        "usermaildisabled": "To e-mail χρήστη είναι απενεργοποιημένο",
        "emailccsubject": "Αντίγραφο του μηνυματός σας στο $1: $2",
        "emailsent": "Το μήνυμα έχει σταλεί",
        "emailsenttext": "Το μήνυμά σας έχει σταλεί.",
-       "emailuserfooter": "Αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου στάλθηκε από {{GENDER:$1|το χρήστη|τη χρήστρια}} $1 σ{{GENDER:$2|το χρήστη|τη χρήστρια}} $2 μέσω της λειτουργίας «{{int:emailpage}}» στο {{SITENAME}}.",
+       "emailuserfooter": "Αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου στάλθηκε από {{GENDER:$1|το χρήστη|τη χρήστρια}} $1 σ{{GENDER:$2|το χρήστη|τη χρήστρια}} $2 μέσω της λειτουργίας «{{int:emailuser}}» στο {{SITENAME}}.",
        "usermessage-summary": "Φεύγετε από τις ειδοποιήσεις συστήματος.",
        "usermessage-editor": "Μηνύματα συστήματος",
        "usermessage-template": "MediaWiki:UserMessage",
        "watchlistanontext": "Παρακαλούμε συνδεθείτε για να δείτε ή να επεξεργαστείτε αντικείμενα στη λίστα παρακολούθησής σας.",
        "watchnologin": "Δεν έχετε συνδεθεί.",
        "addwatch": "Προσθήκη στη λίστα παρακολούθησης",
-       "addedwatchtext": "Î\97 Ï\83ελίδα Â«[[:$1]]» Î­Ï\87ει Ï\80Ï\81οÏ\83Ï\84εθεί Ï\83Ï\84η [[Special:Watchlist|λίÏ\83Ï\84α Ï\80αÏ\81ακολοÏ\8dθηÏ\83ήÏ\82 Ï\83αÏ\82]].\nÎ\9cελλονÏ\84ικέÏ\82 Î±Î»Î»Î±Î³Î­Ï\82 Ï\83ε Î±Ï\85Ï\84ή Ï\84η Ï\83ελίδα ÎºÎ±Î¹ Ï\83Ï\84η Ï\83Ï\85Ï\83Ï\87εÏ\84ιÏ\83μένη Ï\83ελίδα Ï\83Ï\85ζήÏ\84ηÏ\83ήÏ\82 Ï\84ηÏ\82 Î¸Î± ÎµÎ¼Ï\86ανίζονÏ\84αι ÎµÎ´Ï\8e.",
+       "addedwatchtext": "Το Î»Î®Î¼Î¼Î± Â«[[:$1]]» ÎºÎ±Î¹ Î· Ï\83ελίδα Ï\83Ï\85ζήÏ\84ηÏ\83ήÏ\82 Ï\84οÏ\85 Î­Ï\87οÏ\85ν Ï\80Ï\81οÏ\83Ï\84εθεί Ï\83Ï\84η [[Special:Watchlist|λίÏ\83Ï\84α Ï\80αÏ\81ακολοÏ\8dθηÏ\83ήÏ\82]] Ï\83αÏ\82.",
        "addedwatchtext-short": "Η σελίδα «$1» έχει προστεθεί στην λίστα παρακολούθησής σας.",
        "removewatch": "Αφαίρεση από τη λίστα παρακολούθησης",
-       "removedwatchtext": "Î\97 Ï\83ελίδα \"[[:$1]]\" Î­Ï\87ει Î±Ï\86αιÏ\81εθεί Î±Ï\80Ï\8c [[Special:Watchlist|Ï\84η Î»Î¯Ï\83Ï\84α Ï\80αÏ\81ακολοÏ\8dθηÏ\83ήÏ\82 Ï\83αÏ\82]].",
+       "removedwatchtext": "Το Î»Î®Î¼Î¼Î± Â«[[:$1]]» ÎºÎ±Î¹ Î· Ï\83ελίδα Ï\83Ï\85ζήÏ\84ηÏ\83ήÏ\82 Ï\84οÏ\85 Î­Ï\87οÏ\85ν Î±Ï\86αιÏ\81εθεί Î±Ï\80Ï\8c Ï\84η [[Special:Watchlist|λίÏ\83Ï\84α Ï\80αÏ\81ακολοÏ\8dθηÏ\83ήÏ\82]] Ï\83αÏ\82.",
        "removedwatchtext-short": "Η σελίδα «$1» έχει αφαιρεθεί από τη λίστα παρακολούθησής σας.",
        "watch": "Παρακολούθηση",
        "watchthispage": "Παρακολούθηση αυτής της σελίδας",
        "rollback-success": "Ανεστραμμένες εκδόσεις από $1, αλλάχθηκαν στην προηγούμενη έκδοση από $2.",
        "sessionfailure-title": "Η συνεδρία απέτυχε",
        "sessionfailure": "Υπάρχει πρόβλημα με τη σύνδεσή σας -η ενέργεια αυτή ακυρώθηκε προληπτικά για την αντιμετώπιση τυχόν πειρατείας συνόδου (session hijacking). Παρακαλoύμε πατήστε \"Επιστροφή\", ξαναφορτώστε τη σελίδα από την οποία φθάσατε εδώ και προσπαθήστε ξανά.",
+       "changecontentmodel-title-label": "Τίτλος σελίδας",
+       "changecontentmodel-reason-label": "Αιτία:",
+       "logentry-contentmodel-change": "{{GENDER:$2|Ο|Η}} $1 άλλαξε το πρότυπο περιεχομένου της σελίδας $3 από «$4» σε «$5»",
        "protectlogpage": "Αρχείο καταγραφών προστασίας",
        "protectlogtext": "Παρακάτω είναι μια λίστα αλλαγών που έγιναν στις ρυθμίσεις προστασίας.\nΡίξτε μια ματιά στη [[Special:ProtectedPages|λίστα προστατευμένων σελίδων]] για ένα κατάλογο των τρεχουσών ρυθμίσεων προστασίας σελίδων.",
        "protectedarticle": "προστάτευσε τη σελίδα «[[$1]]»",
        "protect-locked-blocked": "Δεν μπορείτε να αλλάξετε επίπεδα προστασίας ενώ είστε σε φραγή.\nΕδώ είναι οι τρέχουσες ρυθμίσεις για τη σελίδα '''$1''':",
        "protect-locked-dblock": "Τα επίπεδα προστασίας δεν μπορούν να αλλαχθούν λόγω ενός ενεργού κλεδώματος της βάσης δεδομένων.\nΕδώ είναι οι τρέχουσες ρυθμίσεις για τη σελίδα '''$1''':",
        "protect-locked-access": "Ο λογαριασμός σας δεν έχει δικαίωμα να αλλάξει τα επίπεδα προστασίας σελίδας.\nΕδώ είναι οι τρέχουσες ρυθμίσεις για τη σελίδα '''$1''':",
-       "protect-cascadeon": "Αυτή η σελίδα είναι προς το παρόν προστατευμένη επειδή περιλαμβάνεται {{PLURAL:$1|στην ακόλουθη σελίδα, η οποία έχει|στις ακόλουθες σελίδες, οι οποίες έχουν}} τη διαδοχική προστασία ενεργοποιημένη. Αλλαγές στο επίπεδο προστασίας αυτής της σελίδας δεν θα επηρεάσουν τη διαδοχική προστασία.",
+       "protect-cascadeon": "Αυτή η σελίδα είναι προς το παρόν προστατευμένη επειδή ενσωματώνεται {{PLURAL:$1|στην ακόλουθη σελίδα, η οποία έχει|στις ακόλουθες σελίδες, οι οποίες έχουν}} τη διαδοχική προστασία ενεργοποιημένη. Αλλαγές στο επίπεδο προστασίας αυτής της σελίδας δεν θα επηρεάσουν τη διαδοχική προστασία.",
        "protect-default": "Να επιτρέπονται όλοι οι χρήστες",
        "protect-fallback": "Να επιτρέπεται μόνο σε χρήστες με δικαιώματα «$1»",
        "protect-level-autoconfirmed": "Να επιτρέπονται μόνο αυτοεπιβεβαιωμένοι χρήστες",
        "deletedwhileediting": "'''Προσοχή''': Αυτή η σελίδα έχει διαγραφεί αφότου ξεκινήσατε την επεξεργασία!",
        "confirmrecreate": "Ο χρήστης [[User:$1|$1]] ([[User talk:$1|συζήτηση]]) διέγραψε αυτή τη σελίδα αφότου ξεκινήσατε την επεξεργασία με αιτιολόγηση:\n: ''$2''\nΠαρακαλώ επιβεβαιώστε ότι θέλετε πραγματικά να ξαναδημιουργήσετε αυτή τη σελίδα.",
        "confirmrecreate-noreason": "Ο χρήστης [[User:$1|$1]] ([[User talk:$1|συζήτηση]]) διέγραψε αυτή τη σελίδα αφότου ξεκινήσατε την επεξεργασία.\nΠαρακαλούμε επιβεβαιώστε ότι θέλετε πραγματικά να ξαναδημιουργήσετε αυτή τη σελίδα.",
-       "recreate": "Î\97 Ï\83ελίδα Î­Ï\87ει Î´Î¹Î±Î³Ï\81αÏ\86εί Î±Ï\80Ï\8c Ï\84Ï\8cÏ\84ε Ï\80οÏ\85 Î±Ï\81Ï\87ίÏ\83αÏ\84ε Î½Î± Ï\84ην ÎµÏ\80εξεÏ\81γάζεÏ\83Ï\84ε. Î Î±Ï\84ήÏ\83Ï\84ε \"$1\" Î³Î¹Î± Î½Î± Ï\84η Î´Î·Î¼Î¹Î¿Ï\85Ï\81γήÏ\83εÏ\84ε Î¾Î±Î½Î¬.",
+       "recreate": "Î\91ναδημιοÏ\85Ï\81γία",
        "confirm_purge_button": "Εντάξει",
        "confirm-purge-top": "Καθαρισμός της λανθάνουσας μνήμης αυτής της σελίδας.",
        "confirm-purge-bottom": "Η εκκαθάριση μιας σελίδας εκκαθαρίζει την μνήμη cache και εξαναγκάζει την πλέον πρόσφατη έκδοση να εμφανιστεί.",
        "watchlisttools-raw": "Επεξεργασία πρωτογενούς λίστας παρακολούθησης",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|συζήτηση]])",
        "duplicate-defaultsort": "'''Προειδοποίηση:''' Το προεπιλεγμένο κλειδί ταξινόμησης «$2» υπερισχύει του προηγούμενου προεπιλεγμένου κλειδιού «$1».",
+       "duplicate-displaytitle": "<strong>Προειδοποίηση:</strong> Ο εμφανιζόμενος τίτλος «$2» παρακάμπτει τον προηγούμενο «$1».",
+       "invalid-indicator-name": "<strong>Σφάλμα:</strong> Η ιδιότητα <code>name</code> των δεικτών κατάστασης σελίδων δεν πρέπει να είναι κενή.",
        "version": "Έκδοση",
        "version-extensions": "Εγκαταστημένες επεκτάσεις",
        "version-skins": "Εγκατεστημένα θέματα εμφάνισης",
        "version-libraries": "Εγκαταστημένες βιβλιοθήκες",
        "version-libraries-library": "Βιβλιοθήκη",
        "version-libraries-version": "Έκδοση",
+       "version-libraries-license": "Άδεια χρήσης",
+       "version-libraries-description": "Περιγραφή",
        "redirect": "Ανακατεύθυνση κατά αρχείο, χρήστη, σελίδα ή αναγνωριστικό αναθεώρησης",
        "redirect-legend": "Ανακατεύθυνση σε ένα αρχείο ή μια σελίδα",
        "redirect-submit": "Μετάβαση",
        "tags-delete-reason": "Αιτία:",
        "tags-delete-submit": "Μη αναστρέψιμη διαγραφή αυτής της ετικέτας",
        "tags-delete-not-found": "Η ετικέτα «$1» δεν υπάρχει.",
+       "tags-delete-too-many-uses": "Η ετικέτα «$1» εφαρμόζεται σε πάνω από {{PLURAL:$2|μία αναθεώρηση|$2 αναθεωρήσεις}}, που σημαίνει ότι δεν μπορεί να διαγραφεί.",
+       "tags-delete-warnings-after-delete": "Η ετικέτα «$1» διαγράφηκε με επιτυχία, αλλά {{PLURAL:$2|προέκυψε η ακόλουθη προειδοποίηση|προέκυψαν οι ακόλουθες προειδοποιήσεις}}:",
        "tags-activate-title": "Ενεργοποίηση ετικέτας",
        "tags-activate-question": "Πρόκειται να ενεργοποιήσετε την ετικέτα «$1».",
        "tags-activate-reason": "Αιτία:",
        "tags-update-remove-not-allowed-one": "Η ετικέτα «$1» δεν επιτρέπεται να αφαιρεθεί.",
        "tags-edit-title": "Επεξεργασία ετικετών",
        "tags-edit-manage-link": "Διαχείριση ετικετών",
+       "tags-edit-logentry-selected": "{{PLURAL:$1|Επιλεγμένο γεγονός|Επιλεγμένα γεγονότα}} αρχείου καταγραφής:",
+       "tags-edit-revision-legend": "Προσθαφαιρέσετε ετικέτες {{PLURAL:$1|από αυτή την αναθεώρηση|και από τις $1 αναθεωρήσεις}}",
+       "tags-edit-logentry-legend": "Προσθαφαιρέσετε ετικέτες {{PLURAL:$1|από αυτήν την καταχώριση|και από τις $1 καταχωρίσεις}} του αρχείου καταγραφής",
        "tags-edit-existing-tags": "Υπάρχουσες ετικέτες:",
        "tags-edit-existing-tags-none": "''Καμία''",
        "tags-edit-new-tags": "Νέες ετικέτες:",
        "tags-edit-chosen-placeholder": "Επιλέξτε μερικές ετικέτες",
        "tags-edit-chosen-no-results": "Δεν βρέθηκαν ετικέτες που να ταιριάζουν",
        "tags-edit-reason": "Αιτία:",
+       "tags-edit-revision-submit": "Εφαρμογή αλλαγών σε {{PLURAL:$1|αυτή την αναθεώρηση|$1 αναθεωρήσεις}}",
+       "tags-edit-logentry-submit": "Εφαρμογή αλλαγών σε {{PLURAL:$1|αυτήν την καταχώρηση|$1 καταχωρήσεις}} του αρχείου καταγραφής",
        "tags-edit-success": "Οι αλλαγές εφαρμόστηκαν με επιτυχία.",
        "tags-edit-failure": "Οι αλλαγές δεν ήταν δυνατόν να εφαρμοστούν:\n$1",
        "tags-edit-nooldid-title": "Μη έγκυρη αναθεώρηση προορισμού",
        "htmlform-cloner-create": "Προσθήκη περισσοτέρων",
        "htmlform-cloner-delete": "Αφαίρεση",
        "htmlform-cloner-required": "Απαιτείται τουλάχιστον μία τιμή.",
+       "htmlform-title-not-exists": "Ο τίτλος [[:$1]] δεν υπάρχει.",
+       "htmlform-user-not-exists": "Δεν υπάρχει χρήστης με όνομα <strong>$1</strong>.",
+       "htmlform-user-not-valid": "Το <strong>$1</strong> δεν είναι έγκυρο όνομα χρήστη.",
        "sqlite-has-fts": "$1 με υποστήριξη αναζήτησης πλήρους κειμένου",
        "sqlite-no-fts": "$1 χωρίς την υποστήριξη αναζήτησης πλήρους κειμένου",
        "logentry-delete-delete": "{{GENDER:$1|Ο|Η}} $1 διέγραψε τη σελίδα $3",
        "logentry-upload-revert": "{{GENDER:$2|Ο|Η}} $1 ανέβασε το $3",
        "log-name-managetags": "Αρχείο καταγραφών διαχείρισης ετικετών",
        "logentry-managetags-create": "{{GENDER:$2|Ο|Η}} $1 δημιούργησε την ετικέτα «$4»",
+       "logentry-managetags-delete": "{{GENDER:$2|Ο|Η}} $1 διέγραψε την ετικέτα «$4» (αφαιρέθηκε από $5 {{PLURAL:$5|αναθεώρηση ή καταχώρηση αρχείου καταγραφής|αναθεωρήσεις και/ή καταχωρήσεις του αρχείου καταγραφής}})",
+       "logentry-managetags-deactivate": "{{GENDER:$2|Ο|Η}} $1 απενεργοποίησε την ετικέτα «$4» για χρήση από χρήστες και bots",
        "log-name-tag": "Αρχείο καταγραφών ετικετών",
+       "logentry-tag-update-add-revision": "{{GENDER:$2|Ο|Η}} $1 πρόσθεσε {{PLURAL:$7|την ετικέτα|τις ετικέτες}} $6 στην αναθεώρηση $4 της σελίδας $3",
+       "logentry-tag-update-remove-revision": "{{GENDER:$2|Ο|Η}} $1 αφαίρεσε {{PLURAL:$9|την ετικέτα|τις ετικέτες}} $8 από την αναθεώρηση $4 της σελίδας $3",
+       "logentry-tag-update-revision": "{{GENDER:$2|Ο|Η}} $1 ενημέρωσε ετικέτες στην αναθεώρηση $4 της σελίδας $3 (πρόσθεσε {{PLURAL:$7|την|τις}} $6• αφαίρεσε {{PLURAL:$9|την|τις}} $8)",
        "rightsnone": "(κανένα)",
        "revdelete-summary": "επεξεργασία σύνοψης",
        "feedback-adding": "Προσθήκη σχολίων στην σελίδα...",
        "special-characters-title-emdash": "διπλή παύλα",
        "special-characters-title-minus": "σύμβολο πλην",
        "mw-widgets-dateinput-placeholder-day": "ΕΕΕΕ-ΜΜ-ΗΗ",
-       "mw-widgets-dateinput-placeholder-month": "ΕΕΕΕ-ΜΜ"
+       "mw-widgets-dateinput-placeholder-month": "ΕΕΕΕ-ΜΜ",
+       "mw-widgets-titleinput-description-redirect": "ανακατεύθυνση στο $1"
 }
index 0387df5..51cc927 100644 (file)
@@ -7,7 +7,6 @@
        "tog-hideminor": "Hide minor edits from recent changes",
        "tog-hidepatrolled": "Hide patrolled edits from recent changes",
        "tog-newpageshidepatrolled": "Hide patrolled pages from new page list",
-       "tog-hidecategorization": "Hide categorization of pages",
        "tog-extendwatchlist": "Expand watchlist to show all changes, not just the most recent",
        "tog-usenewrc": "Group changes by page in recent changes and watchlist",
        "tog-numberheadings": "Auto-number headings",
@@ -37,7 +36,6 @@
        "tog-watchlisthideliu": "Hide edits by logged in users from the watchlist",
        "tog-watchlisthideanons": "Hide edits by anonymous users from the watchlist",
        "tog-watchlisthidepatrolled": "Hide patrolled edits from the watchlist",
-       "tog-watchlisthidecategorization": "Hide categorization of pages",
        "tog-ccmeonemails": "Send me copies of emails I send to other users",
        "tog-diffonly": "Do not show page content below diffs",
        "tog-showhiddencats": "Show hidden categories",
        "rcshowhidemine": "$1 my edits",
        "rcshowhidemine-show": "Show",
        "rcshowhidemine-hide": "Hide",
-       "rcshowhidecategorization": "$1 page categorization",
-       "rcshowhidecategorization-show": "Show",
-       "rcshowhidecategorization-hide": "Hide",
        "rclinks": "Show last $1 changes in last $2 days<br />$3",
        "diff": "diff",
        "hist": "hist",
        "recentchangeslinked-summary": "This is a list of changes made recently to pages linked from a specified page (or to members of a specified category).\nPages on [[Special:Watchlist|your watchlist]] are <strong>bold</strong>.",
        "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 {{PLURAL:$2|one page|$2 pages}} added to category",
-       "recentchanges-page-removed-from-category": "[[:$1]] removed from category",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] and {{PLURAL:$2|one page|$2 pages}} removed from category",
        "upload": "Upload file",
        "uploadbtn": "Upload file",
        "reuploaddesc": "Cancel upload and return to the upload form",
        "emailuser-title-target": "Email this {{GENDER:$1|user}}",
        "emailuser-title-notarget": "Email user",
        "emailuser-summary": "",
-       "emailpage": "Email user",
        "emailpagetext": "You can use the form below to send an email message to this {{GENDER:$1|user}}.\nThe email address you entered in [[Special:Preferences|your user preferences]] will appear as the \"From\" address of the email, so the recipient will be able to reply directly to you.",
        "defemailsubject": "{{SITENAME}} email from user \"$1\"",
        "usermaildisabled": "User email disabled",
        "emailccsubject": "Copy of your message to $1: $2",
        "emailsent": "Email sent",
        "emailsenttext": "Your email message has been sent.",
-       "emailuserfooter": "This email was sent by $1 to $2 by the \"{{int:emailpage}}\" function at {{SITENAME}}.",
+       "emailuserfooter": "This email was sent by $1 to $2 by the \"{{int:emailuser}}\" function at {{SITENAME}}.",
        "usermessage-summary": "Leaving system message.",
        "usermessage-editor": "System messenger",
        "usermessage-template": "MediaWiki:UserMessage",
        "logentry-newusers-create2": "User account $3 was {{GENDER:$2|created}} by $1",
        "logentry-newusers-byemail": "User account $3 was {{GENDER:$2|created}} by $1 and password was sent by email",
        "logentry-newusers-autocreate": "User account $1 was {{GENDER:$2|created}} automatically",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|moved}} protection settings from $4 to $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|changed}} group membership for $3 from $4 to $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|changed}} group membership for $3",
        "logentry-rights-autopromote": "$1 was automatically {{GENDER:$2|promoted}} from $4 to $5",
index f86e4e7..7f1e39f 100644 (file)
        "emailuser": "Retpoŝti ĉi tiun uzanton",
        "emailuser-title-target": "Retpoŝti ĉi tiun {{GENDER:$1|uzanton}}",
        "emailuser-title-notarget": "Retpoŝti uzanton",
-       "emailpage": "Retpoŝti uzanton",
        "emailpagetext": "Vi povas uzi la jenan paĝon por sendi retpoŝtan mesaĝon al ĉi tiu {{GENDER:$1|uzanto|uzantino}}.\nLa retadreso kiun vi enigis en [[Special:Preferences|viaj preferoj]] aperos kiel la \"De\" adreso de la retpoŝto, do la ricevonto eblos respondi rekte al vi.",
        "defemailsubject": "{{SITENAME}} retmesaĝo de uzanto \"$1\"",
        "usermaildisabled": "Retpoŝto de uzantoj estas malŝaltita",
        "emailccsubject": "Kopio de via mesaĝo al $1: $2",
        "emailsent": "Retmesaĝo sendita",
        "emailsenttext": "Via retmesaĝo estas sendita.",
-       "emailuserfooter": "Ĉi tiun retpoŝton sendis $1 al $2 per la funkcio \"{{int:emailpage}}\" ĉe {{SITENAME}}.",
+       "emailuserfooter": "Ĉi tiun retpoŝton sendis $1 al $2 per la funkcio \"{{int:emailuser}}\" ĉe {{SITENAME}}.",
        "usermessage-summary": "Lasanta sisteman mesaĝon.",
        "usermessage-editor": "Mesaĝanto de sistemo",
        "watchlist": "Mia atentaro",
index 62ae0ae..d7f6b1a 100644 (file)
        "tog-hideminor": "Ocultar las ediciones menores en los cambios recientes",
        "tog-hidepatrolled": "Ocultar las ediciones patrulladas en los cambios recientes",
        "tog-newpageshidepatrolled": "Ocultar las páginas patrulladas en la lista de páginas nuevas",
-       "tog-hidecategorization": "Ocultar la categorización de páginas",
        "tog-extendwatchlist": "Mostrar todos los cambios en la lista de seguimiento, no solo los más recientes",
        "tog-usenewrc": "Agrupar los cambios por página en los cambios recientes y en la lista de seguimiento",
        "tog-numberheadings": "Numerar automáticamente los encabezados",
        "tog-watchlisthideliu": "Ocultar las ediciones de los usuarios registrados en la lista de seguimiento",
        "tog-watchlisthideanons": "Ocultar las ediciones de los usuarios anónimos en la lista de seguimiento",
        "tog-watchlisthidepatrolled": "Ocultar las ediciones patrulladas en la lista de seguimiento",
-       "tog-watchlisthidecategorization": "Ocultar la categorización de páginas",
        "tog-ccmeonemails": "Recibir copias de los correos electrónicos que envíe a otros usuarios",
        "tog-diffonly": "No mostrar el contenido de la página debajo de la lista de diferencias",
        "tog-showhiddencats": "Mostrar categorías ocultas",
        "createacct-benefit-body2": "{{PLURAL:$1|página|páginas}}",
        "createacct-benefit-body3": "{{PLURAL:$1|colaborador reciente|colaboradores recientes}}",
        "badretype": "Las contraseñas no coinciden.",
+       "usernameinprogress": "Ya está en marcha la creación de una cuenta para este nombre de usuario.\nEspera.",
        "userexists": "El nombre de usuario indicado ya está en uso.\nElige un nombre diferente.",
        "loginerror": "Error de inicio de sesión",
        "createacct-error": "Error al crear la cuenta",
        "content-model-css": "CSS",
        "content-json-empty-object": "Objeto vacío",
        "content-json-empty-array": "Matriz vacía",
-       "duplicate-args-warning": "<strong>Aviso:</strong> [[:$1]] convoca a [[:$2]] con más de un valor para el parámetro «$3». Se usará solo el último valor proporcionado.",
+       "duplicate-args-warning": "<strong>Aviso:</strong> [[:$1]] llama a [[:$2]] con más de un valor para el parámetro «$3». Se usará solo el último valor proporcionado.",
        "duplicate-args-category": "Páginas que usan argumentos duplicados en invocaciones de plantillas",
        "duplicate-args-category-desc": "La página contiene invocaciones de plantillas que utilizan argumentos duplicados, como <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> o <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "<strong>Advertencia:</strong> esta página contiene demasiadas llamadas a funciones sintácticas costosas.\n\nTiene {{PLURAL:$1|una llamada|$1 llamadas}}, pero debería tener menos de {{PLURAL:$2|una|$2}}.",
        "rcshowhidemine": "$1 mis ediciones",
        "rcshowhidemine-show": "Mostrar",
        "rcshowhidemine-hide": "Ocultar",
-       "rcshowhidecategorization": "$1 categorización de página",
-       "rcshowhidecategorization-show": "Mostrar",
-       "rcshowhidecategorization-hide": "Ocultar",
        "rclinks": "Ver los últimos $1 cambios en los últimos $2 días.<br />$3",
        "diff": "dif",
        "hist": "hist",
        "recentchangeslinked-summary": "Esta página es una lista de los últimos cambios en las páginas enlazadas desde una página dada (o en las pertenecientes a una categoría dada). Las páginas que están en tu [[Special:Watchlist|lista de seguimiento]] aparecen en <strong>negrita</strong>.",
        "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 {{PLURAL:$2|una página|$2 páginas}} añadidas a la categoría",
-       "recentchanges-page-removed-from-category": "[[:$1]] eliminada de la categoría",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] y {{PLURAL:$2|una página|$2 páginas}} eliminadas de la categoría",
        "upload": "Subir archivo",
        "uploadbtn": "Subir un archivo",
        "reuploaddesc": "Cancelar subida y volver al formulario",
        "filetype-missing": "El archivo no tiene extensión (como «.jpg»).",
        "empty-file": "El archivo que enviaste estaba vacío.",
        "file-too-large": "El archivo que enviste era demasiado grande.",
-       "filename-tooshort": "El nombre de archivo es demasiado corto.",
+       "filename-tooshort": "El nombre del archivo es demasiado corto.",
        "filetype-banned": "El tipo de archivo está prohibido.",
        "verification-error": "Este archivo no superó la verificación de archivos.",
        "hookaborted": "Una extensión ha impedido la modificación que intentaste realizar.",
-       "illegal-filename": "El nombre de archivo no está permitido.",
-       "overwrite": "Sobrescribir un archivo existente no está permitido.",
+       "illegal-filename": "El nombre del archivo no está permitido.",
+       "overwrite": "No está permitido sobrescribir un archivo existente.",
        "unknown-error": "Ocurrió un error desconocido.",
        "tmp-create-error": "No se pudo crear archivo temporal.",
-       "tmp-write-error": "Error al escribir archivo temporal.",
+       "tmp-write-error": "Error al escribir el archivo temporal.",
        "large-file": "Se recomienda que los archivos no sean mayores de $1; este archivo ocupa $2.",
        "largefileserver": "El tamaño de este archivo es mayor del que este servidor admite por configuración.",
        "emptyfile": "El archivo que has intentado subir parece estar vacío; por favor, verifica que realmente se trate del archivo que intentabas subir.",
        "upload-misc-error-text": "Ha ocurrido un error durante la subida.\nVerifica que la URL es válida y accesible e inténtalo de nuevo.\nSi el problema persiste, contacta con un [[Special:ListUsers/sysop|administrador]].",
        "upload-too-many-redirects": "La URL contenía demasiadas redirecciones",
        "upload-http-error": "Ha ocurrido un error HTTP: $1",
-       "upload-copy-upload-invalid-domain": "No se pueden realizar cargas remotas desde este dominio.",
+       "upload-copy-upload-invalid-domain": "No se pueden realizar subidas remotas desde este dominio.",
        "upload-dialog-title": "Subir archivo",
        "upload-dialog-error": "Ha ocurrido un error",
        "upload-dialog-warning": "Ha ocurrido una advertencia",
        "filedelete-nofile": "<strong>$1</strong> no existe.",
        "filedelete-nofile-old": "No existe una versión guardada de <strong>$1</strong> con los atributos especificados.",
        "filedelete-otherreason": "Otra razón:",
-       "filedelete-reason-otherlist": "Otra razón",
+       "filedelete-reason-otherlist": "Otro motivo",
        "filedelete-reason-dropdown": "*Razones habituales de borrado\n** Violación de derechos de autor\n** Archivo duplicado",
        "filedelete-edit-reasonlist": "Edita los motivos del borrado",
        "filedelete-maintenance": "Borrado y restauración de archivos temporalmente deshabilitados durante el mantenimiento.",
        "ancientpages": "Artículos más antiguos",
        "move": "Trasladar",
        "movethispage": "Trasladar esta página",
-       "unusedimagestext": "Los siguientes archivos existen pero no están insertados en ninguna página.\nPor favor note que otros sitios web pueden vincular a un archivo con un URL directo, y por tanto pueden ser listados aquí a pesar de estar en uso activo.",
+       "unusedimagestext": "Los siguientes archivos existen pero no están insertados en ninguna página.\nTen en cuenta que otros sitios web pueden enlazar un archivo directamente por la URL, y por tanto pueden estar listados aquí a pesar de estar siendo usados de forma activa.",
        "unusedcategoriestext": "Las siguientes categorías han sido creadas, pero ningún artículo o categoría las utiliza.",
        "notargettitle": "No hay página objetivo",
        "notargettext": "No has especificado sobre qué página deseas llevar a cabo esta acción.",
        "emailuser": "Enviar un mensaje de correo a {{GENDER:{{BASEPAGENAME}}|este usuario|esta usuaria}}",
        "emailuser-title-target": "Enviar un mensaje a {{GENDER:$1|este usuario|esta usuaria}}",
        "emailuser-title-notarget": "Enviar un correo electrónico al usuario",
-       "emailpage": "Enviar mensaje al usuario",
        "emailpagetext": "Puedes usar el formulario de abajo para enviar un correo electrónico a {{GENDER:$1|este usuario|esta usuaria}}.\nLa dirección de correo electrónico que indicaste en [[Special:Preferences|tus preferencias de usuario]] aparecerá en el campo \"Remitente\" o \"De\" para que el destinatario pueda responderte.",
        "defemailsubject": "Correo electrónico enviado por el usuario «$1» desde {{SITENAME}}",
        "usermaildisabled": "Correo electrónico del usuario desactivado",
        "protect-existing-expiry": "Fecha de caducidad actual: $2 a las $3",
        "protect-existing-expiry-infinity": "Tiempo de caducidad existente: infinito",
        "protect-otherreason": "Otra razón:",
-       "protect-otherreason-op": "Otra razón",
+       "protect-otherreason-op": "Otro motivo",
        "protect-dropdown": "*Razones de protección habituales\n**Vandalismo excesivo\n**Spam excesivo\n**Guerra de ediciones\n**Página muy visitada",
        "protect-edit-reasonlist": "Editar las razones de protección",
        "protect-expiry-options": "1 hora:1 hour,1 día:1 day,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,para siempre:infinite",
        "ip_range_invalid": "El rango de IP no es válido.",
        "ip_range_toolarge": "Los bloqueos de rango superiores a /$1 no están permitidos.",
        "proxyblocker": "Bloqueador de proxies",
-       "proxyblockreason": "Su dirección IP ha sido bloqueada porque es un proxy abierto. Por favor, contacte con su proveedor de servicios de Internet o con su servicio de asistencia técnica e infórmeles de este grave problema de seguridad.",
+       "proxyblockreason": "Tu dirección IP ha sido bloqueada porque es un proxy abierto.\nContacta con tu proveedor de servicios de Internet o con tu servicio de asistencia técnica e infórmales de este grave problema de seguridad.",
        "sorbsreason": "Su dirección IP está listada como proxy abierto en DNSBL.",
        "sorbs_create_account_reason": "Su dirección IP está listada como proxy abierto en DNSBL. No puede crear una cuenta",
        "xffblockreason": "Una dirección IP presente en la cabecera X-Forwarded-For, tuya o del servidor proxy que estás usando, ha sido bloqueada. El motivo original del bloqueo fue: $1",
        "export-submit": "Exportar",
        "export-addcattext": "Añadir páginas desde la categoría:",
        "export-addcat": "Añadir",
-       "export-addnstext": "Agregar páginas del nombre del sitio:",
+       "export-addnstext": "Agregar páginas desde el espacio de nombres:",
        "export-addns": "Agregar",
        "export-download": "Guardar como archivo",
        "export-templates": "Incluir plantillas",
        "importstart": "Importando páginas...",
        "import-revision-count": "$1 {{PLURAL:$1|revisión|revisiones}}",
        "importnopages": "No hay páginas que importar.",
-       "imported-log-entries": "Importados $1 {{PLURAL:$1|entradas de registro|entradas de registro}}.",
+       "imported-log-entries": "{{PLURAL:$1|Se importó|Se importaron}} $1 {{PLURAL:$1|entrada|entradas}} de registro.",
        "importfailed": "La importación ha fallado: $1",
        "importunknownsource": "Tipo de fuente de importación desconocida",
        "importcantopen": "No se pudo importar el archivo",
        "group-sysop.js": "/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Administradores */",
        "group-bureaucrat.js": "/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Burócratas */",
        "anonymous": "{{PLURAL:$1|Usuario anónimo|Usuarios anónimos}} de {{SITENAME}}",
-       "siteuser": "{{GENDER:$1|Usuario|Usuaria}} $1 de {{SITENAME}}",
-       "anonuser": "{{SITENAME}} usuario anónimo $1",
+       "siteuser": "{{GENDER:$1|el usuario|la usuaria}} $1 de {{SITENAME}}",
+       "anonuser": "el usuario anónimo $1 de {{SITENAME}}",
        "lastmodifiedatby": "Esta página fue modificada por última vez en $2, $1 por $3.",
        "othercontribs": "Basado en el trabajo de $1.",
        "others": "otros",
-       "siteusers": "{{PLURAL:$2|Usuario|Usuarios}} $1 de {{SITENAME}}",
-       "anonusers": "{{SITENAME}} {{PLURAL:$2|usuario|usuarios}} anónimos $1",
+       "siteusers": "{{PLURAL:$2|el usuario|los usuarios}} $1 de {{SITENAME}}",
+       "anonusers": "{{PLURAL:$2|el usuario anónimo|los usuarios anónimos}} $1 de {{SITENAME}}",
        "creditspage": "Créditos de la página",
        "nocredits": "No hay información de créditos para esta página.",
        "spamprotectiontitle": "Filtro de protección contra spam",
        "dberr-usegoogle": "Mientras tanto puedes probar buscando a través de Google.",
        "dberr-outofdate": "Ten en cuenta que su índice de nuestro contenido puede estar desactualizado.",
        "dberr-cachederror": "La siguiente es una página guardada de la página solicitada, y puede no estar actualizada.",
-       "htmlform-invalid-input": "Hay problemas con alguno de los datos que has ingresado",
+       "htmlform-invalid-input": "Hay problemas con alguno de los datos que has ingresado.",
        "htmlform-select-badoption": "El valor que especificaste no es una opción válida.",
        "htmlform-int-invalid": "El valor que especificaste no es un entero.",
        "htmlform-float-invalid": "El valor que ha especificado no es un número.",
-       "htmlform-int-toolow": "El valor que especificaste está debajo del mínimo de $1",
-       "htmlform-int-toohigh": "El valor que especificaste está arriba del máximo de $1",
-       "htmlform-required": "Este valor es obligatorio",
+       "htmlform-int-toolow": "El valor que especificaste está debajo del mínimo de $1.",
+       "htmlform-int-toohigh": "El valor que especificaste está arriba del máximo de $1.",
+       "htmlform-required": "Este valor es obligatorio.",
        "htmlform-submit": "Enviar",
        "htmlform-reset": "Deshacer cambios",
        "htmlform-selectorother-other": "Otro",
        "htmlform-chosen-placeholder": "Selecciona una opción",
        "htmlform-cloner-create": "Añadir más",
        "htmlform-cloner-delete": "Eliminar",
-       "htmlform-cloner-required": "Se requiere al menos un valor",
+       "htmlform-cloner-required": "Se requiere al menos un valor.",
        "htmlform-title-badnamespace": "[[:$1]] no está en el espacio de nombres \"{{ns:$2}}\".",
        "htmlform-title-not-creatable": "\"$1\" no es un título de página que se pueda crear",
        "htmlform-title-not-exists": "[[:$1]] no existe.",
        "htmlform-user-not-valid": "<strong>$1</strong> no es un nombre de usuario válido.",
        "sqlite-has-fts": "$1 con soporte para búsqueda de texto completo",
        "sqlite-no-fts": "$1 sin soporte para búsqueda de texto completo",
-       "logentry-delete-delete": "$1 {{GENDER:$2|borró}} la página «$3»",
+       "logentry-delete-delete": "$1 {{GENDER:$2|borró}} la página $3",
        "logentry-delete-restore": "$1 restauró la página «$3»",
        "logentry-delete-event": "$1 {{GENDER:$2|modificó}} la visibilidad de {{PLURAL:$5|un evento|$5 eventos}} del registro en $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|modificó}} la visibilidad de {{PLURAL:$5|una revisión |$5 revisiones}} en la página  $3: $4",
        "logentry-delete-event-legacy": "$1 ha {{GENDER:$2|cambiado}} la visibilidad de registro de eventos en $3",
        "logentry-delete-revision-legacy": "$1 ha {{GENDER:$2|cambiado}} la visibilidad de las revisiones en la página $3",
-       "logentry-suppress-delete": "$1 {{GENDER:$2|borró}}, con restricciones para administradores aplicadas, la página $3",
+       "logentry-suppress-delete": "$1 {{GENDER:$2|borró}} la página $3",
        "logentry-suppress-event": "$1 {{GENDER:$2|modificó}} secretamente la visibilidad de {{PLURAL:$5|una edición|$5 ediciones}} en la página $3: $4",
        "logentry-suppress-revision": "$1 {{GENDER:$2|modificó}} secretamente la visibilidad de {{PLURAL:$5|una edición|$5 ediciones}} en la página $3: $4",
        "logentry-suppress-event-legacy": "$1 {{GENDER:$2|modificó}} secretamente la visibilidad de los eventos del registro en $3",
        "logentry-newusers-create2": "La cuenta de usuario $3 ha sido {{GENDER:$2|creada}} por $1",
        "logentry-newusers-byemail": "La cuenta de usuario $3 ha sido {{GENDER:$2|creada}} por $1 y la contraseña ha sido enviada por correo",
        "logentry-newusers-autocreate": "La cuenta $1 se {{GENDER:$2|creó}} automáticamente",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|trasladó}} las preferencias de protección de $4 a $3",
        "logentry-rights-rights": "$1 modificó los grupos a los que pertenece $3: de $4 a $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|modificó}} los grupos a los que pertenece $3",
        "logentry-rights-autopromote": "$1 ha sido {{GENDER:$2|promocionado|promocionada}} automáticamente de $4 a $5",
        "expand_templates_html_output": "Salida HTML en crudo",
        "expand_templates_ok": "Aceptar",
        "expand_templates_remove_comments": "Eliminar comentarios (<!-- ... -->)",
-       "expand_templates_remove_nowiki": "Suprimir <nowiki> etiquetas en resultado",
+       "expand_templates_remove_nowiki": "Suprimir etiquetas <nowiki> en el resultado",
        "expand_templates_generate_xml": "Mostrar el árbol XML.",
        "expand_templates_generate_rawhtml": "Mostrar HTML en crudo",
        "expand_templates_preview": "Previsualización",
index bf80fdc..3b48a1a 100644 (file)
@@ -32,7 +32,6 @@
        "tog-hideminor": "Peida pisiparandused viimastes muudatustes",
        "tog-hidepatrolled": "Peida kontrollitud redaktsioonid viimastes muudatustes",
        "tog-newpageshidepatrolled": "Peida uute lehtede loendis kontrollitud leheküljed",
-       "tog-hidecategorization": "Peida lehekülgede kategoriseerimine",
        "tog-extendwatchlist": "Laienda jälgimisloendit, et näha kõiki muudatusi, mitte vaid kõige värskemaid",
        "tog-usenewrc": "Rühmita viimased muudatused ja muudatused jälgimisloendis lehekülje järgi",
        "tog-numberheadings": "Pealkirjade automaatnummerdus",
@@ -62,7 +61,6 @@
        "tog-watchlisthideliu": "Peida sisselogitud kasutajate muudatused jälgimisloendist",
        "tog-watchlisthideanons": "Peida anonüümsete kasutajate muudatused jälgimisloendist",
        "tog-watchlisthidepatrolled": "Peida kontrollitud muudatused jälgimisloendist",
-       "tog-watchlisthidecategorization": "Peida lehekülgede kategoriseerimine",
        "tog-ccmeonemails": "Saada mulle koopiad minu läkitatud e-kirjadest",
        "tog-diffonly": "Ära näita erinevuste vaate all lehe sisu",
        "tog-showhiddencats": "Näita peidetud kategooriaid",
        "createacct-benefit-body2": "{{PLURAL:$1|lehekülg|lehekülge}}",
        "createacct-benefit-body3": "{{PLURAL:$1|hiljutine kaastööline|hiljutist kaastöölist}}",
        "badretype": "Sisestatud paroolid ei lange kokku.",
+       "usernameinprogress": "Selle kasutajanimega konto loomine on juba pooleli.\nPalun oota.",
        "userexists": "Sisestatud kasutajanimi on juba kasutusel.\nPalun valige uus nimi.",
        "loginerror": "Viga sisselogimisel",
        "createacct-error": "Tõrge konto loomisel",
        "search-category": "(kategooria \"$1\")",
        "search-file-match": "(vastab faili sisule)",
        "search-suggest": "Kas mõtlesid: $1",
-       "search-rewritten": "Vasted otsingule $1. Otsi hoopis teksti $2.",
+       "search-rewritten": "Vasted otsingule $1. Otsi selle asemel teksti $2.",
        "search-interwiki-caption": "Sõsarprojektid",
        "search-interwiki-default": "Tulemused asukohast $1:",
        "search-interwiki-more": "(veel)",
        "rcshowhidemine": "Minu parandused ($1)",
        "rcshowhidemine-show": "näita",
        "rcshowhidemine-hide": "peida",
-       "rcshowhidecategorization": "Kategoriseerimine ($1)",
-       "rcshowhidecategorization-show": "näita",
-       "rcshowhidecategorization-hide": "peida",
        "rclinks": "Näita viimast $1 muudatust viimase $2 päeva jooksul<br />$3",
        "diff": "erin",
        "hist": "ajal",
        "recentchangeslinked-summary": "Siin on loetletud määratud leheküljelt viidatud (või määratud kategooria) lehekülgedel tehtud viimased muudatused.\nSinu [[Special:Watchlist|jälgimisloendi]] leheküljed on  '''rasvaselt''' esile toodud.",
        "recentchangeslinked-page": "Lehekülje nimi:",
        "recentchangeslinked-to": "Näita hoopis muudatusi lehekülgedel, mis sellele lehele lingivad",
-       "recentchanges-page-added-to-category": "kategooriasse lisatud \"[[:$1]]\"",
-       "recentchanges-page-added-to-category-bundled": "kategooriasse lisatud \"[[:$1]]\" ja veel {{PLURAL:$2|üks lehekülg|$2 lehekülge}}",
-       "recentchanges-page-removed-from-category": "kategooriast eemaldatud \"[[:$1]]\"",
-       "recentchanges-page-removed-from-category-bundled": "kategooriast eemaldatud \"[[:$1]]\" ja veel {{PLURAL:$2|üks lehekülg|$2 lehekülge}}",
        "upload": "Faili üleslaadimine",
        "uploadbtn": "Laadi fail üles",
        "reuploaddesc": "Tagasi üleslaadimise vormi juurde.",
        "emailuser": "Saada sellele kasutajale e-kiri",
        "emailuser-title-target": "{{GENDER:$1|Kasutajale}} e-kirja saatmine",
        "emailuser-title-notarget": "Kasutajale e-kirja saatmine",
-       "emailpage": "Saada kasutajale e-kiri",
        "emailpagetext": "Alloleva vormi kaudu saad sellele {{GENDER:$1|kasutajale}} e-kirja saata. Et kasutaja saaks vastata, täidetakse kirja saatja väli e-posti aadressiga, mille oled sisestanud [[Special:Preferences|oma eelistuste leheküljel]].",
        "defemailsubject": "E-kiri {{GRAMMAR:genitive|{{SITENAME}}}} kasutajalt $1",
        "usermaildisabled": "Kasutajatele e-kirjade saatmine keelatud",
        "emailccsubject": "Koopia sinu sõnumist kasutajale $1: $2",
        "emailsent": "E-kiri saadetud",
        "emailsenttext": "Sinu teade on e-kirjaga saadetud.",
-       "emailuserfooter": "Selle e-kirja saatis $1 {{GRAMMAR:elative|{{SITENAME}}}} kasutajale $2 toimingu \"{{int:emailpage}}\" abil.",
+       "emailuserfooter": "Selle e-kirja saatis $1 {{GRAMMAR:elative|{{SITENAME}}}} kasutajale $2 toimingu \"{{int:emailuser}}\" abil.",
        "usermessage-summary": "Jätan süsteemiteate.",
        "usermessage-editor": "Süsteemiteadete edastaja",
        "watchlist": "Jälgimisloend",
        "move-watch": "Jälgi lähte- ja sihtlehekülge",
        "movepagebtn": "Teisalda lehekülg",
        "pagemovedsub": "Lehekülg on teisaldatud",
-       "movepage-moved": "'''\"$1\" teisaldatud pealkirja \"$2\" alla'''",
+       "movepage-moved": "<strong>\"$1\" on teisaldatud pealkirja \"$2\" alla.</strong>",
        "movepage-moved-redirect": "Ümbersuunamisleht loodud.",
        "movepage-moved-noredirect": "Ümbersuunamist ei loodud.",
        "articleexists": "Sellise pealkirjaga lehekülg on juba olemas või pole valitud pealkiri lubatav.\nPalun vali teistsugune pealkiri.",
        "logentry-newusers-create2": "$1 {{GENDER:$2|lõi}} kasutajakonto $3",
        "logentry-newusers-byemail": "$1 {{GENDER:$2|lõi}} kasutajakonto $3 ja parool saadeti e-kirjatsi",
        "logentry-newusers-autocreate": "Konto $1 {{GENDER:$2|loodi}} automaatselt",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|teisaldas}} kaitsesätted leheküljelt $4 leheküljele $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|muutis}} kasutaja $3 rühmaliikmesust; enne oli $4, nüüd on $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|muutis}} kasutaja $3 rühmaliikmesust",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|viidi}} automaatselt üle teise rühma; enne oli $4, nüüd on $5",
index ced9668..eb2e660 100644 (file)
        "emailuser": "Erabiltzaile honi e-posta bidali",
        "emailuser-title-target": "{{GENDER:$1|Erabiltzale}} honi e-posta bidali",
        "emailuser-title-notarget": "Erabiltzaileari e-maila bidali",
-       "emailpage": "Erabiltzaileari e-posta bidali",
        "emailpagetext": "{{GENDER:$1|Erabiltzaile}} honek baliozko e-posta helbide bat ezarri badu bere hobespenetan, beheko formularioa erabiliz mezu bat bidal dakioke.\n[[Special:Preferences|Hobespenetan]] daukazun e-posta helbidea azalduko da mezuaren bidaltzaile bezala eta beraz erantzun ahal izango dizu.",
        "defemailsubject": "{{SITENAME}} e-posta \"$1\" lankideak",
        "usermaildisabled": "Erabiltzailearen e-maila desaktibatuta",
        "emailccsubject": "Zure mezuaren kopia $1(r)i: $2",
        "emailsent": "Mezua bidali egin da",
        "emailsenttext": "Zure e-posta mezua bidali egin da.",
-       "emailuserfooter": "E-posta hau $1(e)k bidali dio $2(r)i {{SITENAME}}ko \"{{int:emailpage}}\" funtzioa erabiliz.",
+       "emailuserfooter": "E-posta hau $1(e)k bidali dio $2(r)i {{SITENAME}}ko \"{{int:emailuser}}\" funtzioa erabiliz.",
        "usermessage-summary": "Sistema mezua uzten.",
        "usermessage-editor": "Sistemako mezularia",
        "watchlist": "Jarraipen zerrenda",
index c2796bf..8a19223 100644 (file)
        "createacct-benefit-body2": "{{PLURAL:$1|صفحه}}",
        "createacct-benefit-body3": "{{PLURAL:$1|مشارکت‌کنندهٔ}} اخیر",
        "badretype": "گذرواژه‌هایی که وارد کرده‌اید یکسان نیستند.",
+       "usernameinprogress": "ایجاد حساب برای این نام کاربر در جریان است. لطفا صبور باشید.",
        "userexists": "نام کاربری‌ای که وارد کردید قبلاً استفاده شده‌است.\nلطفاً یک نام دیگر انتخاب کنید.",
        "loginerror": "خطا در ورود به سامانه",
        "createacct-error": "خطای ایجاد حساب کاربری",
        "group-bot": "ربات‌ها",
        "group-sysop": "مدیران",
        "group-bureaucrat": "دیوان‌سالاران",
-       "group-suppress": "Ù\86اظران",
+       "group-suppress": "Ù¾Ù\86Ù\87اÙ\86Ú¯ران",
        "group-all": "(همه)",
        "group-user-member": "{{GENDER:$1|کاربر}}",
        "group-autoconfirmed-member": "{{GENDER:$1|کاربر تأییدشده}}",
        "group-bot-member": "ربات",
        "group-sysop-member": "{{GENDER:$1|مدیر}}",
        "group-bureaucrat-member": "{{GENDER:$1|دیوان‌سالار}}",
-       "group-suppress-member": "{{GENDER:$1|Ù\86ظارت}}",
+       "group-suppress-member": "{{GENDER:$1|Ù¾Ù\86Ù\87اÙ\86گر}}",
        "grouppage-user": "{{ns:project}}:کاربران",
        "grouppage-autoconfirmed": "{{ns:project}}:کاربران تأییدشده",
        "grouppage-bot": "{{ns:project}}:ربات‌ها",
        "grouppage-sysop": "{{ns:project}}:مدیران",
        "grouppage-bureaucrat": "{{ns:project}}:دیوان‌سالاران",
-       "grouppage-suppress": "{{ns:project}}:Ù\86ظارت",
+       "grouppage-suppress": "{{ns:project}}:Ù¾Ù\86Ù\87اÙ\86گر",
        "right-read": "خواندن صفحه",
        "right-edit": "ویرایش صفحه",
        "right-createpage": "ایجاد صفحه (در مورد صفحه‌های غیر بحث)",
        "boteditletter": "ر",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|کاربر}} پی‌گیرنده]",
        "rc_categories": "محدود به این رده‌ها (رده‌ها را با «|» جدا کنید)",
-       "rc_categories_any": "هر کدام",
+       "rc_categories_any": "هر کدام از منتخب‌ها",
        "rc-change-size-new": "$1 {{PLURAL:$1|بایت}} پس از تغییر",
        "newsectionsummary": "/* $1 */ بخش جدید",
        "rc-enhanced-expand": "نمایش جزئیات",
        "upload-too-many-redirects": "نشانی اینترتی حاوی تعداد بیش از اندازه‌ای تغییرمسیر است",
        "upload-http-error": "یک خطای اچ‌تی‌تی‌پی رخ داد: $1",
        "upload-copy-upload-invalid-domain": "بارگذاری کپی پرونده‌ها از این دامنه امکان‌پذیر نیست.",
+       "upload-dialog-title": "بارگذاری پرونده",
+       "upload-dialog-warning": "یک هشدار رخ‌داد",
+       "upload-dialog-button-cancel": "لغو",
+       "upload-dialog-button-done": "انجام شد",
+       "upload-dialog-button-save": "ذخیره",
+       "upload-dialog-button-upload": "بارگذاری",
+       "upload-dialog-label-select-file": "یک فایل انتخاب کنید",
+       "upload-dialog-label-infoform-title": "جزئیات",
+       "upload-dialog-label-infoform-name": "نام",
+       "upload-dialog-label-infoform-description": "توضیحات",
+       "upload-dialog-label-usage-title": "کاربرد",
+       "upload-dialog-label-usage-filename": "نام پرونده",
        "backend-fail-stream": "نمی‌توان پروندهٔ $1 را ارسال کرد.",
        "backend-fail-backup": "نمی‌توان نسخهٔ پشتیبان برای پروندهٔ $1 ایجاد کرد.",
        "backend-fail-notexists": "پروندهٔ $1 وجود ندارد.",
        "emailuser": "ایمیل به این کاربر",
        "emailuser-title-target": "ارسال ایمیل به این {{GENDER:$1|کاربر}}",
        "emailuser-title-notarget": "ارسال ایمیل به کاربر",
-       "emailpage": "ایمیل به کاربر",
        "emailpagetext": "شما می‌توانید از فرم زیر برای ارسال ایمیلی به این {{GENDER:$1|کاربر}} استفاده کنید.\nنشانی ایمیلی که در [[Special:Preferences|ترجیحات کاربریتان]] وارد کرده‌اید در نشانی فرستندهٔ ایمیل خواهد آمد، تا گیرنده بتواند پاسخ دهد.",
        "defemailsubject": "ایمیل {{SITENAME}} از طرف کاربر «$1»",
        "usermaildisabled": "ایمیل کاربر غیر قعال است",
        "emailccsubject": "رونوشت پیغام شما به $1: $2",
        "emailsent": "ایمیل ارسال شد",
        "emailsenttext": "پیام ایمیل شما فرستاده شد.",
-       "emailuserfooter": "این ایمیل با استفاده از ویژگی «{{int:emailpage}}» {{SITENAME}} توسط $1 به $2 ارسال شد.",
+       "emailuserfooter": "این ایمیل با استفاده از ویژگی «{{int:emailuser}}» {{SITENAME}} توسط $1 به $2 ارسال شد.",
        "usermessage-summary": "گذاشتن پیغام سامانه.",
        "usermessage-editor": "پیغام رسان سامانه",
        "watchlist": "فهرست پی‌گیری",
        "special-characters-title-endash": "خط فاصله",
        "special-characters-title-emdash": "خط فاسله کشیده",
        "special-characters-title-minus": "علامت منفی",
+       "mw-widgets-dateinput-no-date": "هیچ داده‌ای انتخاب نشده",
        "mw-widgets-titleinput-description-new-page": "این صفحه هنوز وجود ندارد",
        "mw-widgets-titleinput-description-redirect": "تغییر مسیر به $1"
 }
index 644bd2d..6b81891 100644 (file)
@@ -81,7 +81,6 @@
        "tog-watchlisthideliu": "Piilota kirjautuneiden käyttäjien muokkaukset tarkkailulistalta",
        "tog-watchlisthideanons": "Piilota rekisteröitymättömien käyttäjien muokkaukset tarkkailulistalta",
        "tog-watchlisthidepatrolled": "Piilota muutostentarkastajien hyväksymät muokkaukset tarkkailulistalta",
-       "tog-watchlisthidecategorization": "Piilota muutokset, jotka koskevat sivujeen lisäämistä tai poistamista luokkiin",
        "tog-ccmeonemails": "Lähetä minulle kopio MediaWikin kautta lähetetyistä sähköposteista",
        "tog-diffonly": "Älä näytä sivun sisältöä eroavaisuusvertailun alapuolella",
        "tog-showhiddencats": "Näytä piilotetut luokat",
        "rcshowhidemine": "$1 omat muutokset",
        "rcshowhidemine-show": "Näytä",
        "rcshowhidemine-hide": "Piilota",
-       "rcshowhidecategorization": "$1 sivujen luokkien muutokset",
-       "rcshowhidecategorization-show": "Näytä",
-       "rcshowhidecategorization-hide": "Piilota",
        "rclinks": "Näytä $1 tuoretta muutosta viimeisten $2 päivän ajalta.<br />$3",
        "diff": "ero",
        "hist": "historia",
        "upload-too-many-redirects": "URL sisälsi liian monta ohjausta",
        "upload-http-error": "HTTP-virhe: $1",
        "upload-copy-upload-invalid-domain": "Tiedostojen tallentamista tästä verkko-osoitteesta ei ole sallittu.",
+       "upload-dialog-title": "Tiedoston tallennus",
+       "upload-dialog-error": "Tapahtui virhe",
+       "upload-dialog-warning": "Sisältää varoituksen",
+       "upload-dialog-button-cancel": "Peru",
+       "upload-dialog-button-done": "Valmis",
+       "upload-dialog-button-save": "Tallenna",
+       "upload-dialog-label-select-file": "Valitse tiedosto",
+       "upload-dialog-label-infoform-title": "Yksityiskohdat",
+       "upload-dialog-label-infoform-name": "Nimi",
+       "upload-dialog-label-infoform-description": "Kuvaus",
+       "upload-dialog-label-usage-filename": "Tiedostonimi",
        "backend-fail-stream": "Tiedoston $1 virtauttaminen epäonnistui.",
        "backend-fail-backup": "Tiedostoa $1 ei voitu varmuuskopioida.",
        "backend-fail-notexists": "Tiedostoa $1 ei ole olemassa.",
        "emailuser": "Lähetä sähköpostia tälle käyttäjälle",
        "emailuser-title-target": "Lähetä sähköpostia tälle {{GENDER:$1|käyttäjälle}}",
        "emailuser-title-notarget": "Lähetä sähköpostia käyttäjälle",
-       "emailpage": "Lähetä sähköpostia käyttäjälle",
        "emailpagetext": "Jos tämä {{GENDER:$1|käyttäjä}} on antanut asetuksissaan kelvollisen sähköpostiosoitteen, alla olevalla lomakkeella voit lähettää hänelle viestin. [[Special:Preferences|Omissa asetuksissasi]] annettu sähköpostiosoite näkyy sähköpostin lähettäjän osoitteena, jotta vastaanottaja voi suoraan vastata viestiin.",
        "defemailsubject": "Sähköpostia käyttäjältä $1 sivustolta {{SITENAME}}",
        "usermaildisabled": "Käyttäjien sähköposti poistettu käytöstä",
        "emailccsubject": "Kopio lähettämästäsi viestistä osoitteeseen $1: $2",
        "emailsent": "Sähköposti lähetetty",
        "emailsenttext": "Sähköpostiviestisi on lähetetty.",
-       "emailuserfooter": "Tämän sähköpostin lähetti $1 vastaanottajalle $2 käyttämällä ”{{int:emailpage}}” -toimintoa {{GRAMMAR:inessive|{{SITENAME}}}}.",
+       "emailuserfooter": "Tämän sähköpostin lähetti $1 vastaanottajalle $2 käyttämällä ”{{int:emailuser}}” -toimintoa {{GRAMMAR:inessive|{{SITENAME}}}}.",
        "usermessage-summary": "Jätetään järjestelmäviesti.",
        "usermessage-editor": "Järjestelmäviestittäjä",
        "watchlist": "Tarkkailulista",
        "undeletepagetext": "{{PLURAL:$1|Seuraava sivu|Seuraavat sivut}} on poistettu, mutta {{PLURAL:$1|se löytyy|ne löytyvät}} vielä arkistosta, joten {{PLURAL:$1|se|ne}} voidaan palauttaa takaisin. Arkisto saatetaan tyhjentää aika ajoin.",
        "undelete-fieldset-title": "Palauta versioita",
        "undeleteextrahelp": "Palauttaaksesi sivun koko muutoshistorian jätä kaikki valintalaatikot tyhjiksi ja napsauta '''''{{int:undeletebtn}}'''''.\nVoit palauttaa versioita valikoivasti valitsemalla vain niiden versioiden valintalaatikot, jotka haluat palauttaa.",
-       "undeleterevisions": "$1 {{PLURAL:$1|versio|versiota}} on arkistoitu.",
+       "undeleterevisions": "$1 {{PLURAL:$1|versio|versiota}} on poistettu.",
        "undeletehistory": "Jos palautat sivun, kaikki versiot lisätään sivun historiaan. Jos uusi sivu samalla nimellä on luotu poistamisen jälkeen, palautetut versiot lisätään sen historiaan.",
        "undeleterevdel": "Palautusta ei tehdä, jos sen seurauksena sivun uusin versio olisi osittain piilotettu. \nTässä tilanteessa älä valitse palautettavaksi näkyviin viimeisintä poistettua versiota tai poista version piilotus.",
        "undeletehistorynoadmin": "Tämä sivu on poistettu. \nSyy sivun poistamiseen näkyy alla olevassa yhteenvedossa, jossa on myös tiedot, ketkä olivat muokanneet tätä sivua ennen poistamista. \nNäiden poistettujen versioiden varsinainen tekstisisältö on vain ylläpitäjien luettavissa.",
index a46cfa3..315e8f0 100644 (file)
        "tog-hideminor": "Masquer les modifications mineures dans les changements récents",
        "tog-hidepatrolled": "Masquer les modifications surveillées dans les modifications récentes",
        "tog-newpageshidepatrolled": "Masquer les pages surveillées dans la liste des nouvelles pages",
-       "tog-hidecategorization": "Masquer la catégorisation des pages",
        "tog-extendwatchlist": "Étendre la liste de suivi pour afficher toutes les modifications et pas uniquement les plus récentes",
        "tog-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-watchlisthideliu": "Masquer les modifications faites par des utilisateurs inscrits dans la liste de suivi",
        "tog-watchlisthideanons": "Masquer les modifications anonymes dans la liste de suivi",
        "tog-watchlisthidepatrolled": "Masquer les modifications surveillées 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-diffonly": "Ne pas afficher le contenu des pages sous les diffs",
        "tog-showhiddencats": "Afficher les catégories cachées",
        "createacct-benefit-body2": "{{PLURAL:$1|article|articles}}",
        "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.",
        "loginerror": "Erreur de connexion",
        "createacct-error": "Erreur lors de la création du compte",
        "subject-preview": "Prévisualisation du sujet/titre :",
        "previewerrortext": "Une erreur s’est produite lors de la tentative de prévisualisation de vos modifications.",
        "blockedtitle": "L’utilisateur est bloqué.",
-       "blockedtext": "'''Votre compte utilisateur ou votre adresse IP a été bloqué.'''\n\nLe blocage a été effectué par $1.\nLa raison invoquée est la suivante : ''$2''.\n\n* Début du blocage : $8\n* Expiration du blocage : $6\n* Compte bloqué : $7.\n\nVous pouvez contacter $1 ou un autre [[{{MediaWiki:Grouppage-sysop}}|administrateur]] pour en discuter.\nVous ne pouvez utiliser la fonction « {{MediaWiki:emailpage}} » que si une adresse de courriel valide est spécifiée dans vos [[Special:Preferences|préférences]] et que si cette fonctionnalité n’a pas été bloquée.\nVotre adresse IP actuelle est $3 et votre identifiant de blocage est $5.\nVeuillez préciser ces indications dans toutes les requêtes que vous ferez.",
+       "blockedtext": "'''Votre compte utilisateur ou votre adresse IP a été bloqué.'''\n\nLe blocage a été effectué par $1.\nLa raison invoquée est la suivante : ''$2''.\n\n* Début du blocage : $8\n* Expiration du blocage : $6\n* Compte bloqué : $7.\n\nVous pouvez contacter $1 ou un autre [[{{MediaWiki:Grouppage-sysop}}|administrateur]] pour en discuter.\nVous ne pouvez utiliser la fonction « {{int:emailuser}} » que si une adresse de courriel valide est spécifiée dans vos [[Special:Preferences|préférences]] et que si cette fonctionnalité n’a pas été bloquée.\nVotre adresse IP actuelle est $3 et votre identifiant de blocage est $5.\nVeuillez préciser ces indications dans toutes les requêtes que vous ferez.",
        "autoblockedtext": "Votre adresse IP a été bloquée automatiquement car elle a été utilisée par un autre utilisateur, lui-même bloqué par $1.\nLa raison invoquée est :\n\n:''$2''\n\n* Début du blocage : $8\n* Expiration du blocage : $6\n* Compte bloqué : $7\n\nVous pouvez contacter $1 ou l’un des autres [[{{MediaWiki:Grouppage-sysop}}|administrateurs]] pour discuter de ce blocage.\n\nNotez que vous ne pourrez utiliser la fonctionnalité d’envoi de courriel que si vous avez une adresse de courriel validée dans vos [[Special:Preferences|préférences]] et que si cette fonctionnalité n’a pas été désactivée.\n\nVotre adresse IP actuelle est $3, et le numéro de blocage est $5.\nVeuillez préciser ces indications dans toutes les requêtes que vous ferez.",
        "blockednoreason": "aucune raison donnée",
        "whitelistedittext": "Vous devez vous $1 pour avoir la permission de modifier le contenu.",
        "rcshowhidemine": "$1 mes modifications",
        "rcshowhidemine-show": "Afficher",
        "rcshowhidemine-hide": "Masquer",
-       "rcshowhidecategorization": "$1 la catégorisation des pages",
-       "rcshowhidecategorization-show": "Afficher",
-       "rcshowhidecategorization-hide": "Cacher",
        "rclinks": "Afficher les $1 dernières modifications effectuées au cours des $2 derniers jours<br />$3.",
        "diff": "diff",
        "hist": "hist",
        "recentchangeslinked-summary": "Cette page spéciale montre les modifications récentes sur les pages qui sont liées. Les pages de votre liste de suivi sont '''en gras'''.",
        "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 {{PLURAL:$2|une page ajoutée|$2 pages ajoutées}} à la catégorie",
-       "recentchanges-page-removed-from-category": "[[:$1]] supprimé de la catégorie",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] et {{PLURAL:$2|une page retirée|$2 pages retirées}} de la catégorie",
        "upload": "Importer un fichier",
        "uploadbtn": "Importer le fichier",
        "reuploaddesc": "Annuler et retourner au formulaire d'import",
        "upload-too-many-redirects": "L’URL contient trop de redirections.",
        "upload-http-error": "Une erreur HTTP est survenue : $1",
        "upload-copy-upload-invalid-domain": "La copie des téléversements n’est pas disponible depuis ce domaine.",
-       "upload-dialog-title": "Télécharger un fichier",
+       "upload-dialog-title": "Téléverser un fichier",
        "upload-dialog-error": "Une erreur est survenue",
        "upload-dialog-warning": "Un avertissement s’est produit",
        "upload-dialog-button-cancel": "Annuler",
        "upload-dialog-button-done": "Fait",
        "upload-dialog-button-save": "Enregistrer",
-       "upload-dialog-button-upload": "Télécharger",
+       "upload-dialog-button-upload": "Téléverser",
        "upload-dialog-label-select-file": "Sélectionner un fichier",
        "upload-dialog-label-infoform-title": "Détails",
        "upload-dialog-label-infoform-name": "Nom",
        "emailuser": "Lui envoyer un courriel",
        "emailuser-title-target": "Envoyer un courriel à {{GENDER:$1|cet utilisateur|cette utilisatrice}}",
        "emailuser-title-notarget": "Envoyer un courriel à l'utilisateur",
-       "emailpage": "Envoyer un courriel à l'utilisateur",
        "emailpagetext": "Vous pouvez utiliser le formulaire ci-dessous pour envoyer un courriel à {{GENDER:$1|cet utilisateur|cette utilisatrice}}.\nL'adresse électronique que vous avez indiquée dans [[Special:Preferences|vos préférences]] apparaîtra dans le champ « Expéditeur » de votre message ; ainsi, le destinataire pourra vous répondre directement.",
        "defemailsubject": "Courriel de {{SITENAME}} de l'utilisateur « $1 »",
        "usermaildisabled": "L'envoi de courriels entre utilisateurs est désactivé",
        "emailccsubject": "Copie de votre message à $1 : $2",
        "emailsent": "Courriel envoyé",
        "emailsenttext": "Votre message a été envoyé par courriel.",
-       "emailuserfooter": "Ce courriel a été envoyé par « $1 » à « $2 » par la fonction « {{int:emailpage}} » de {{SITENAME}}.",
+       "emailuserfooter": "Ce courriel a été envoyé par « $1 » à « $2 » par la fonction « {{int:emailuser}} » de {{SITENAME}}.",
        "usermessage-summary": "A laissé un message système.",
        "usermessage-editor": "Messager du système",
        "watchlist": "Liste de suivi",
        "logentry-newusers-create2": "Le compte utilisateur $3 {{GENDER:$2|a été créé}} par $1",
        "logentry-newusers-byemail": "Le compte utilisateur $3 {{GENDER:$2|a été créé}} par $1 et le mot de passe a été envoyé par courriel",
        "logentry-newusers-autocreate": "Le compte $1 {{GENDER:$2|a été créé}} automatiquement",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|a déplacé}} les paramètres de protection de $4 vers $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|a modifié}} l'appartenance au groupe pour $3 de $4 à $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|a modifié}} l'appartenance au groupe pour $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|a été promu}} automatiquement de $4 à $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|a téléchargé}} $3",
-       "logentry-upload-overwrite": "$1 {{GENDER:$2|a téléchargé}} une nouvelle version de $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|a téléversé}} une nouvelle version de $3",
        "logentry-upload-revert": "$1 {{GENDER:$2|a téléchargé}} $3",
        "log-name-managetags": "Journal des modifications de balises",
        "log-description-managetags": "Cette page recense les tâches de maintenance liées aux [[Special:Tags|balises]]. Le journal contient uniquement les actions faites manuellement par un administrateur ; les balises peuvent être créées ou supprimées par le logiciel wiki sans que cette action ne soit inscrite dans ce journal.",
index 62a05cb..6caa44d 100644 (file)
@@ -15,7 +15,6 @@
        "tog-hideminor": "Letj anrangen fersteeg",
        "tog-hidepatrolled": "Letj anrangen fersteeg",
        "tog-newpageshidepatrolled": "Kontroliaret sidjen bi a \"Nei sidjen\" fersteeg",
-       "tog-hidecategorization": "Kategorisiarang faan sidjen fersteeg",
        "tog-extendwatchlist": "Ütjwidjet list faan sidjen, diar dü uun't uug behual wel",
        "tog-usenewrc": "Ütjwidjet uunwisin faan a ''Leetst feranrangen'' an bi a sidjen, diar dü ''Uun't uug behual'' wel",
        "tog-numberheadings": "Auerskraften automaatisk numeriare",
@@ -45,7 +44,6 @@
        "tog-watchlisthideliu": "Feranrangen faan uunmeldet brükern bi sidjen, diar ik uun't uug behual wal, fersteeg",
        "tog-watchlisthideanons": "Feranrangen faan anonüüm brükern (IPs) bi sidjen, diar ik uun't uug behual wal, fersteeg",
        "tog-watchlisthidepatrolled": "Kontroliaret feranrangen bi a sidjen, diar ik uun't uug behual wal, fersteeg",
-       "tog-watchlisthidecategorization": "Kategorisiarang faan sidjen fersteeg",
        "tog-ccmeonemails": "Schüür mi kopiin faan e-mails, diar ik tu ööder brükern schüür",
        "tog-diffonly": "Bi en werjuunsferglik bluas di ferskeel uunwise, ei det hialer sidj",
        "tog-showhiddencats": "Ferbürgen kategoriin uunwise",
        "createacct-benefit-body2": "{{PLURAL:$1|sidj|sidjen}}",
        "createacct-benefit-body3": "aktiif {{PLURAL:$1|skriiwer|skriiwern}}",
        "badretype": "Jo tau paaswurden san ei likedenang.",
+       "usernameinprogress": "För didiar brükernööm woort jüst en konto maaget. Teew en uugenblak.",
        "userexists": "Didiar brükernööm as al wech.\nWees so gud an schük di en öödern.",
        "loginerror": "Bi't uunmeldin as wat skiaf gingen",
        "createacct-error": "Bi't iinrachten faan det brükerkonto as wat skiaf gingen",
        "wrongpassword": "Det paaswurd as ferkiard.\nWees so gud an ferschük det noch ans.",
        "wrongpasswordempty": "Dü heest nian paaswurd iinden.\nFerschük det man noch ans.",
        "passwordtooshort": "Paaswurden skel tumanst {{PLURAL:$1|1 tiaken|$1 tiakens}} lung wees.",
+       "passwordtoolong": "Paaswurden kön ei linger üs {{PLURAL:$1|1 tiaken|$1 tiakens}} wees.",
        "password-name-match": "Dü könst dan brükernööm ei üs paaswurd nem.",
        "password-login-forbidden": "Didiar brükernööm mä detdiar paaswurd as ei tuläät.",
        "mailmypassword": "Paaswurd turagsaat",
        "missingcommentheader": "'''Paase üüb:''' Dü heest nian auerskraft uunden.\nWan dü det sidj seekerst, woort det saner auerskraft auernimen.",
        "summary-preview": "Föörskau faan det tuupfaadang:",
        "subject-preview": "Föörskau faan det auerskraft:",
+       "previewerrortext": "Diar as wat skiaf gingen, üs en föörskau faan din feranrangen wiset wurd skul.",
        "blockedtitle": "Brüker as speret",
        "blockedtext": "'''Dan brükernööm of din IP-adres as speret wurden.'''\n\nDet as maaget wurden faan $1.\nDi grünj as ''$2''.\n\n* Began: $8\n* Aanj: $6\n* Bedraapt: $7\n\nDü könst $1 kontaktiare of uk en [[{{MediaWiki:Grouppage-sysop}}|administraator]] am det tu diskutiarin.\n\nDü könst ei det e-mail-funktjuun 'E-mail tu didiar brüker' brük, so loong dü nian e-mail-adres uun din [[Special:Preferences|brükerkonto-iinstelangen]] uunden heest of wan det e-mail-funktjuun för di speret wurden as.\n\nUugenblakelk as din IP-addres $3, an det sper-ID as #$5.\nFör arke uunfraag wurd aal jo informatjuunen boowen brükt.",
        "autoblockedtext": "'''Din IP-adres as speret wurden, auer det faan en öödern spereten brüker brükt wurden as.'''\n\nDi grünj as:\n: ''$2''.\n\n* Began: $8\n* Aanj: $6\n* Bedraapt: $7\n\nDü könst $1 kontaktiare of uk en [[{{MediaWiki:Grouppage-sysop}}|administraator]] am det tu diskutiarin.\n\nDü könst ei det e-mail-funktjuun 'E-mail tu didiar brüker' brük, so loong dü nian e-mail-adres uun din [[Special:Preferences|brükerkonto-iinstelangen]] uunden heest of wan det e-mail-funktjuun för di speret wurden as.\n\nUugenblakelk as din IP-addres $3, an det sper-ID as #$5.\nFör arke uunfraag wurd aal jo informatjuunen boowen brükt.",
        "yourdiff": "Ferskeeler",
        "copyrightwarning": "Seenk diaram, dat bidracher tu {{SITENAME}} oner det $1 ütjden wurd (muar stäänt bi $2).\nWan dü ei wel, dat öödern dan bidrach widjer bewerke, do trak ei üüb \"Seekre\".<br />\nDü ferspräächst, dat dü di tekst salew skrewen heest of dat diar nian kopiarrochten üüb lei.\n'''Dü mutst nian werk mä kopiarrochten saner ferloof heer iinstel!'''",
        "copyrightwarning2": "Seenk diaram, dat det sidj {{SITENAME}} faan öödern bewerket, feranert of uk stregen wurd koon. Wan dü det ei wel, do skriiw heer niks iin! \n\nWan dü heer wat iinskrafst, do beest dü diarmä iinferstenen an seekerst tu, dat dü det '''salew skrewen''' heest of faan en steed auernimen heest, huar '''nian rochten''' üüb lei. (Luke bi $1, wan dü muar wed wel.)\n\n'''Auerdreeg nään frääm teksten an bilen saner ferloof!'''",
+       "editpage-cannot-use-custom-model": "Det muude faan detheer sidj koon ei feranert wurd.",
        "longpageerror": "'''Error: Dan tekst as {{PLURAL:$1|ian kilobyte|$1 kilobytes}} lung, hi mut oober ei linger wees üs {{PLURAL:$2|ian kilobyte|$2 kilobytes}}.'''Hi koon ei ufspiikerd wurd.",
        "readonlywarning": "'''Paase üüb: Dü könst uun uugenblak ei üüb det dootenbeenk tugrip. Din dooten kön ei seekert wurd.''' Wees so gud an seekre dan tekst iarst ans üüb dan reegner, an ferschük leederhen, ham tu auerdreegen.\n\nGrünj för det sperin: $1",
        "protectedpagewarning": "'''Paase üüb: Detdiar sidj as speret wurden. Bluas administratooren kön det bewerke.'''\nUun't logbuk stäänt muar diartu:",
        "rcshowhidemine": "$1 min bidracher",
        "rcshowhidemine-show": "Wise",
        "rcshowhidemine-hide": "Fersteeg",
-       "rcshowhidecategorization": "$1 kategorisiarang faan sidjen",
-       "rcshowhidecategorization-show": "Wise",
-       "rcshowhidecategorization-hide": "Fersteeg",
        "rclinks": "Wise a leetst $1 feranrangen faan a leetst $2 daar.<br />$3",
        "diff": "ferskeel",
        "hist": "werjuunen",
        "recentchangeslinked-summary": "Detdiar spezial-sidj wiset a leetst feranrangen faan ferwiset sidjen (of faan sidjen uun en was kategorii). Sidjen, diar dü [[Special:Watchlist|uun't uug behual]] wel, san '''fäät''' skrewen.",
        "recentchangeslinked-page": "Sidjennööm:",
        "recentchangeslinked-to": "Wise feranrangen üüb sidjen, diar heerhen ferwise.",
-       "recentchanges-page-added-to-category": "[[:$1]] tu kategorii saat",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] an {{PLURAL:$2|ian sidj muar|$2 muar sidjen}} tu kategorii saat",
-       "recentchanges-page-removed-from-category": "[[:$1]] faan't kategorii wechnimen",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] an {{PLURAL:$2|ian sidj muar|$2 muar sidjen}} faan det kategorii wechnimen",
        "upload": "Datei huuchschüür",
        "uploadbtn": "Datei huuchschüür",
        "reuploaddesc": "Ufbreeg an turag tu't sidj för't huuchschüüren",
        "upload-too-many-redirects": "Det URL hää tuföl widjerfeerangen.",
        "upload-http-error": "Diar as en HTTP-feeler mä: $1",
        "upload-copy-upload-invalid-domain": "Kopiin faan datein kön faan detdiar domeen ei huuchschüürd wurd.",
+       "upload-dialog-title": "Datei huuchschüür",
+       "upload-dialog-error": "Diar as wat skiaf gingen",
+       "upload-dialog-warning": "Diar as en wäärnang kimen",
+       "upload-dialog-button-cancel": "Ufbreeg",
+       "upload-dialog-button-done": "Klaar",
+       "upload-dialog-button-save": "Seekre",
+       "upload-dialog-button-upload": "Huuchschüür",
+       "upload-dialog-label-select-file": "Datei ütjschük",
+       "upload-dialog-label-infoform-title": "Enkelthaiden",
+       "upload-dialog-label-infoform-name": "Nööm",
+       "upload-dialog-label-infoform-description": "Beskriiwang",
+       "upload-dialog-label-usage-title": "Brük",
+       "upload-dialog-label-usage-filename": "Dateinööm",
        "backend-fail-stream": "Det datei $1 küd ei auerdraanj wurd.",
        "backend-fail-backup": "Det datei $1 küd ei seekert wurd.",
        "backend-fail-notexists": "Det datei $1 jaft at ei.",
        "listfiles-delete": "strik",
        "listfiles-summary": "Üüb detdiar spezialsidj wurd aal a huuchschüürd datein uunwiset.",
        "listfiles_search_for": "Schük efter det datei:",
+       "listfiles-userdoesnotexist": "Son brükerkonto \"$1\" jaft at ei.",
        "imgfile": "datei",
        "listfiles": "List faan datein",
        "listfiles_thumb": "Letjer bil",
        "randomincategory-nopages": "Diar san nian sidjen uun [[:Category:$1]].",
        "randomincategory-category": "Kategorii:",
        "randomincategory-legend": "Tufelag sidj uun't kategorii",
+       "randomincategory-submit": "Widjer",
        "randomredirect": "Tufelag widjerfeerang",
        "randomredirect-nopages": "Uun di nöömrüm „$1“ san nian widjerfeerangen.",
        "statistics": "Statistik",
        "logempty": "Diar as niks uun.",
        "log-title-wildcard": "Sidjennööm begant mä ...",
        "showhideselectedlogentries": "Wise/fersteeg jodiar logbukiindracher",
+       "log-edit-tags": "Markiarangen faan enkelt logbuk-iindracher bewerke",
        "allpages": "Aal a sidjen",
        "nextpage": "Naist sidj ($1)",
        "prevpage": "Leetst sidj ($1)",
        "emailuser": "E-mail tu didiar brüker",
        "emailuser-title-target": "E-mail tu {{GENDER:$1|didiar brüker|detdiar brükerin}} schüür",
        "emailuser-title-notarget": "E-mail tu brüker",
-       "emailpage": "E-mail tu brüker",
        "emailpagetext": "Dü könst {{GENDER:$1|di brüker|det brükerin}} mä det formulaar en e-mail schüür.\nDin aanj e-mail adres faan din [[Special:Preferences|iinstelangen]] woort uunwiset, so dat {{GENDER:$1|di brüker|det brükerin}} di saner amwai swaare koon.",
        "defemailsubject": "{{SITENAME}} e-mail faan brüker „$1“",
        "usermaildisabled": "E-mail fun as ei aktiif",
        "emailccsubject": "Kopii faan din mädialang tu $1: $2",
        "emailsent": "E-mail as wechschüürd wurden",
        "emailsenttext": "Din e-mail as wechschüürd wurden.",
-       "emailuserfooter": "Detdiar e-mail as faan „$1“ tu „$2“ auer det funktjuun „{{int:emailpage}}“ bi {{SITENAME}} schüürd wurden.",
+       "emailuserfooter": "Detdiar e-mail as faan „$1“ tu „$2“ auer det funktjuun „{{int:emailuser}}“ bi {{SITENAME}} schüürd wurden.",
        "usermessage-summary": "Süsteemnooracht seekert.",
        "usermessage-editor": "Süsteemnoorachten siinst",
        "watchlist": "Uun't uug behual",
        "rollback-success": "Feranrangen faan $1 turagsaat an det leetst werjuun faan $2 weder iinsteld.",
        "sessionfailure-title": "session feeler",
        "sessionfailure": "Diar as wat skiaf gingen bi't auerdreegen faan din brükerdooten.\nAm dat diar ei noch muar skiaf gongt, as det aktjuun ufbreegen wurden.\nGung turag, an began faan föören.",
+       "changecontentmodel": "Det muude faan det sidj feranre",
+       "changecontentmodel-legend": "Det muude feranre",
+       "changecontentmodel-title-label": "Sidjennööm",
+       "changecontentmodel-model-label": "Nei muude",
+       "changecontentmodel-reason-label": "Grünj:",
+       "changecontentmodel-success-title": "Det muude as feranert wurden",
+       "changecontentmodel-success-text": "Det muude faan [[:$1]] as feranert wurden.",
+       "changecontentmodel-cannot-convert": "Det muude faan [[:$1]] koon ei tu typ $2 feranert wurd.",
+       "changecontentmodel-nodirectediting": "Uun det $1 muude könst dü ei direkt bewerke",
+       "log-name-contentmodel": "Muude-feranrang-logbuk",
+       "log-description-contentmodel": "Föörkemen am det sidjenmuude",
+       "logentry-contentmodel-change": "$1 {{GENDER:$2|hää}} det muude faan sidj $3 faan „$4“ efter „$5“ feranert.",
+       "logentry-contentmodel-change-revertlink": "turagsaat",
+       "logentry-contentmodel-change-revert": "turagsaat",
        "protectlogpage": "Sidjenseekerangs-logbuk",
        "protectlogtext": "Detheer as det logbuk mä seekert sidjen.\nÜüb [[Special:ProtectedPages|detdiar list]] stun a seekert sidjen.",
        "protectedarticle": "hää „[[$1]]“ seekert.",
        "newtitle": "Müülj:",
        "move-watch": "Jodiar sidjen uun't uug behual",
        "movepagebtn": "Sidj fersküüw",
-       "pagemovedsub": "Ferschüwing luket",
+       "pagemovedsub": "Fersküüwen hää loket",
        "movepage-moved": "'''Det sidj „$1“ as efter „$2“ fersköwen wurden.'''",
        "movepage-moved-redirect": "En widjerfeerang as iinracht wurden.",
        "movepage-moved-noredirect": "Det maagin faan en widjerfeerang as ferhanert wurden.",
        "import-interwiki-history": "Aal a werjuunen faan det sidj importiare",
        "import-interwiki-templates": "Mä aal a föörlaagen",
        "import-interwiki-submit": "Import",
+       "import-mapping-default": "Tu normool seekerangsteeden importiare",
+       "import-mapping-namespace": "Tu en nöömrüm importiare:",
+       "import-mapping-subpage": "Üs onersidjen faan detdiar sidj importiare:",
        "import-upload-filename": "Dateinööm:",
        "import-comment": "Komentaar:",
        "importtext": "Wees so gud an eksportiare det datei mä det spezial-sidj [[Special:Export|Eksport]] ütj det ööder Wiki. Det seekerst dü üüb dan reegner an schüürst det do heer huuch.",
        "pageinfo-robot-index": "Tuläät",
        "pageinfo-robot-noindex": "Ei tuläät",
        "pageinfo-watchers": "Taal faan brükern, diar det sidj uun't uug haa",
+       "pageinfo-visiting-watchers": "Taal faan beschükern, diar a leetst feranrangen beluket haa",
        "pageinfo-few-watchers": "Maner üs {{PLURAL:$1|ään brüker|$1 brükern}}, diar det sidj uun't uug haa",
+       "pageinfo-few-visiting-watchers": "At as ei seeker, wäär diar en beschüker a leetst feranrangen besoocht hää",
        "pageinfo-redirects-name": "Taal faan widjerfeerangen tu detdiar sidj",
        "pageinfo-subpages-name": "Onersidjen faan detdiar sidj",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|widjerfeerang|widjerfeerangen}}; $3 {{PLURAL:$3|onersidj|onersidjen}})",
        "pageinfo-protect-cascading-yes": "Ja",
        "pageinfo-protect-cascading-from": "Sidjen mä kaskaadenseekerhaid faan",
        "pageinfo-category-info": "Kategorii-informatjuun",
+       "pageinfo-category-total": "Taal faan lasmooten",
        "pageinfo-category-pages": "Taal faan sidjen",
        "pageinfo-category-subcats": "Taal faan onerkategoriin",
        "pageinfo-category-files": "Taal faan datein",
        "patrol-log-page": "Kontrol-logbuk",
        "patrol-log-header": "Det as det kontrol-logbuk.",
        "log-show-hide-patrol": "Kontrol-logbuk $1",
+       "log-show-hide-tag": "Markiarang-logbuk $1",
        "deletedrevision": "Ual werjuun $1 stregen",
        "filedeleteerror-short": "Bi't striken faan det datei $1 as wat skiaf gingen.",
        "filedeleteerror-long": "Bi't striken faan det datei as wat skiaf gingen:\n\n$1",
        "version-libraries": "Instaliaret bibleteeken",
        "version-libraries-library": "Bibleteek",
        "version-libraries-version": "Werjuun",
+       "version-libraries-license": "Lisens",
+       "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]].",
        "logentry-managetags-delete": "$1 {{GENDER:$2|hää}} det markiarang „$4“ stregen (faan {{PLURAL:$5|ian werjuun of ään logbuk-iindrach|$5 werjuunen an/of logbuk-iindracher}} wechnimen).",
        "logentry-managetags-activate": "$1 {{GENDER:$2|hää}} det markiarang \"$4\" för't bewerkin faan brükern of bots iinracht.",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|hää}} det markiarang \"$4\" för't bewerkin faan brükern of bots de-aktiwiaret.",
+       "log-name-tag": "Markiarang-logbuk",
        "rightsnone": "(-)",
        "revdelete-summary": "tuhuupefootings-komäntoor",
        "feedback-adding": "Komentaar woort tu det sidj skrewen ...",
index e98c382..be4fc89 100644 (file)
        "mailnologintext": "Jo moatte [[Special:UserLogin|oanmelden]] wêze, en in jildich e-postadres [[Special:Preferences|ynsteld]] hawwe, om oan oare meidoggers e-post stjoere te kinnen.",
        "emailuser": "E-mail meidogger",
        "emailuser-title-notarget": "E-mail nei meidogger",
-       "emailpage": "E-mail nei meidogger",
        "emailpagetext": "Fia dit berjocht kinne jo in e-mail oan dizze brûker ferstjoere.\nIt e-mailadres dat jo opjûn hawwe by [[Special:Preferences|jo foarkarren]] wurdt as ôfstjoerder  brûkt.\nDe ûntfanger kin dus daliks nei jo reagearje.",
        "defemailsubject": "E-mail fan {{SITENAME}}-brûker \"$1\"",
        "noemailtitle": "Gjin e-postadres",
index 4bb53e2..eeecb07 100644 (file)
        "mailnologin": "Níl aon seoladh maith ann",
        "mailnologintext": "Ní mór duit bheith  [[Special:UserLogin|logáilte isteach]]\nagus bheith le seoladh ríomhphoist bhailí i do chuid [[Special:Preferences|sainroghanna]]\nmás mian leat ríomhphost a sheoladh chuig úsáideoirí eile.",
        "emailuser": "Cuir ríomhphost chuig an úsáideoir seo",
-       "emailpage": "Seol ríomhphost",
        "emailpagetext": "Má d'iontráil an úsáideoir seo seoladh ríomhphoist bhailí ina chuid sainroghanna úsáideora, cuirfidh an foirm anseo thíos teachtaireacht amháin do.\nBeidh do seoladh ríomhphoist a d'iontráil tú i [[Special:Preferences|do chuid sainroghanna úsáideora]] sa bhosca \"Seoltóir\" an riomhphoist, agus mar sin ba féidir léis an faighteoir ríomhphost eile a chur leatsa.",
        "defemailsubject": "Ríomhphost {{GRAMMAR:genitive|{{SITENAME}}}}",
        "noemailtitle": "Níl aon seoladh ríomhphoist ann",
index 77b77ff..87b9415 100644 (file)
        "createacct-benefit-body2": "{{PLURAL:$1|páxina|páxinas}}",
        "createacct-benefit-body3": "{{PLURAL:$1|colaborador recente|colaboradores recentes}}",
        "badretype": "Os contrasinais que inseriu non coinciden.",
+       "usernameinprogress": "Xa está en marcha a creación dunha conta para este nome de usuario.\nPor favor, agarde.",
        "userexists": "O nome de usuario que inseriu xa está en uso.\nEscolla un nome diferente.",
        "loginerror": "Erro ao acceder ao sistema",
        "createacct-error": "Erro ao crear a conta",
        "blocked-notice-logextract": "Este usuario está bloqueado.\nVelaquí está a última entrada do rexistro de bloqueos, por se quere consultala:",
        "clearyourcache": "'''Nota:''' Despois de gardar, cómpre limpar a memoria caché do seu navegador para ver os cambios.\n* '''Firefox/Safari:''' Prema ''Maiúsculas'' á vez que en ''Recargar'', ou prema en ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' nos Mac)\n* '''Google Chrome:''' Prema en ''Ctrl-Maiús-R'' (''⌘-Maiús-R'' nos Mac)\n* '''Internet Explorer:''' Prema ''Ctrl'' ao tempo que fai clic en ''Refrescar'', ou prema en ''Ctrl-F5''\n* '''Opera:''' Limpe a súa memoria caché en ''Ferramentas → Preferencias''",
        "usercssyoucanpreview": "'''Nota:''' Use o botón \"{{int:showpreview}}\" para verificar o novo CSS antes de gardalo.",
-       "userjsyoucanpreview": "'''Nota:''' Use o botón \"{{int:showpreview}}\" para verificar o novo JS antes de gardalo.",
+       "userjsyoucanpreview": "<strong>Nota:</strong> Use o botón \"{{int:showpreview}}\" para verificar o novo JavaScript antes de gardalo.",
        "usercsspreview": "'''Lembre que só está vendo a vista previa do seu CSS de usuario.'''\n'''Este aínda non foi gardado!'''",
        "userjspreview": "'''Lembre que só está probando/previsualizando o seu JavaScript de usuario.'''\n'''Este aínda non foi gardado!'''",
        "sitecsspreview": "'''Lembre que só está vendo a vista previa deste CSS.'''\n'''Este aínda non foi gardado!'''",
        "sitejspreview": "'''Lembre que só está vendo a vista previa deste código JavaScript.'''\n'''Este aínda non foi gardado!'''",
-       "userinvalidcssjstitle": "'''Aviso:''' Non hai ningunha aparencia chamada \"$1\".\nLembre que as páxinas .css e .js personalizadas utilizan un título en minúsculas, como por exemplo \"{{ns:user}}:Foo/vector.css\" no canto de \"{{ns:user}}:Foo/Vector.css\".",
+       "userinvalidcssjstitle": "<strong>Aviso:</strong> Non hai ningunha aparencia chamada \"$1\".\nLembre que as páxinas .css e .js personalizadas utilizan un título en minúsculas, como por exemplo \"{{ns:user}}:Exemplo/vector.css\" no canto de \"{{ns:user}}:Exemplo/Vector.css\".",
        "updated": "(Actualizado)",
        "note": "'''Nota:'''",
        "previewnote": "'''Lembre que esta é só unha vista previa e que aínda non gardou os seus cambios!'''",
        "default": "predeterminado",
        "prefs-files": "Ficheiros",
        "prefs-custom-css": "CSS personalizado",
-       "prefs-custom-js": "JS personalizado",
-       "prefs-common-css-js": "CSS/JS compartido por todas as aparencias:",
+       "prefs-custom-js": "JavaScript personalizado",
+       "prefs-common-css-js": "CSS/JavaScript compartido por todas as aparencias:",
        "prefs-reset-intro": "Pode usar esta páxina para restablecer as súas preferencias ás que veñen dadas por defecto.\nEste cambio non se poderá desfacer.",
        "prefs-emailconfirm-label": "Confirmación do correo:",
        "youremail": "Correo electrónico:",
        "noindex-category-desc": "A páxina non está indexada polos bots porque contén a palabra máxica <code><nowiki>__NOINDEX__</nowiki></code> e está nun espazo de nomes no que esa marca está permitida.",
        "index-category-desc": "A páxina contén a palabra máxica <code><nowiki>__INDEX__</nowiki></code> (e está nun espazo de nomes no que esa marca está permitida) e, polo tanto, será indexada polos bots cando non debera selo normalmente.",
        "post-expand-template-inclusion-category-desc": "O tamaño da páxina é maior que <code>$wgMaxArticleSize</code> despois de expandir todos os modelos; algúns modelos non se expandiron.",
-       "post-expand-template-argument-category-desc": "A páxina é maior que <code>$wgMaxArticleSize</code> despois de expandir o argumento dun modelo (algo entre chaves triples, como <code>{{{Proba}}}</code>).",
+       "post-expand-template-argument-category-desc": "A páxina é maior que <code>$wgMaxArticleSize</code> despois de expandir o argumento dun modelo (algo entre chaves triples, como <code>{{{Exemplo}}}</code>).",
        "expensive-parserfunction-category-desc": "A páxina utiliza demasiadas funcións analíticas custosas (como <code>#ifexist</code>). Consulte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
        "broken-file-category-desc": "A páxina contén unha ligazón de ficheiro rota (unha ligazón para incorporar un ficheiro que non existe).",
        "hidden-category-category-desc": "A categoría contén a palabra máxica <code><nowiki>__HIDDENCAT__</nowiki></code>, que impide que se mostre por defecto na caixa de categorías das páxinas.",
        "emailuser": "Enviar un correo electrónico a {{GENDER:{{BASEPAGENAME}}|este usuario|esta usuaria}}",
        "emailuser-title-target": "Enviar un correo electrónico a {{GENDER:$1|este usuario|esta usuaria}}",
        "emailuser-title-notarget": "Enviar un correo electrónico a un usuario",
-       "emailpage": "Enviar un correo electrónico a un usuario",
        "emailpagetext": "Pode usar o seguinte formulario para enviar unha mensaxe de correo electrónico a {{GENDER:$1|este usuario|esta usuaria}}.\nO enderezo de correo electrónico que inseriu [[Special:Preferences|nas súas preferencias]] aparecerá no campo \"De:\" do correo, polo que {{GENDER:$1|o receptor|a receptora}} da mensaxe poderá responderlle directamente.",
        "defemailsubject": "Correo electrónico do usuario $1 de {{SITENAME}}",
        "usermaildisabled": "O correo electrónico do usuario está desactivado",
        "emailccsubject": "Copia da súa mensaxe para $1: $2",
        "emailsent": "Mensaxe enviada",
        "emailsenttext": "A súa mensaxe de correo electrónico foi enviada.",
-       "emailuserfooter": "Este correo electrónico foi enviado por $1 a $2 mediante a función \"{{int:emailpage}}\" en {{SITENAME}}.",
+       "emailuserfooter": "Este correo electrónico foi enviado por $1 a $2 mediante a función \"{{int:emailuser}}\" en {{SITENAME}}.",
        "usermessage-summary": "Mensaxe deixada polo sistema.",
        "usermessage-editor": "Editor das mensaxes do sistema",
        "watchlist": "Lista de vixilancia",
        "logentry-newusers-create2": "$1 {{GENDER:$2|creou}} a conta de usuario $3",
        "logentry-newusers-byemail": "$1 {{GENDER:$2|creou}} a conta de usuario $3; o contrasinal enviouse por correo electrónico",
        "logentry-newusers-autocreate": "A conta de {{GENDER:$2|usuario|usuaria}} $1 creouse automaticamente",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|trasladou}} a protección de \"$4\" a \"$3\"",
        "logentry-rights-rights": "$1 {{GENDER:$2|cambiou}} o grupo ao que pertence $3 de $4 a $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|cambiou}} o grupo ao que pertence $3",
        "logentry-rights-autopromote": "$1 foi {{GENDER:$2|promovido|promovida}} automaticamente de $4 a $5",
        "json-warn-trailing-comma": "{{PLURAL:$1|Eliminouse $1 coma final|Elimináronse $1 comas finais}} do JSON.",
        "json-error-unknown": "Houbo un problema co JSON. Erro: $1",
        "json-error-depth": "Superouse o número máximo de ficheiros apartados.",
-       "json-error-state-mismatch": "O JSON non é válido.",
+       "json-error-state-mismatch": "O JSON non é válido ou ten un formato incorrecto",
        "json-error-ctrl-char": "Produciuse un erro de carácter de control, trátase probablemente dun problema de codificación.",
        "json-error-syntax": "Erro de sintaxe",
        "json-error-utf8": "Hai caracteres UTF-8 incorrectos, trátase probablemente dun problema de codificación.",
index 6302baa..c7006d3 100644 (file)
        "no-null-revision": "Di nej Nullversion fir d Syte „$1“ het nit chennen aagleit wäre",
        "badtitle": "Ugültiger Titel",
        "badtitletext": "Dr Titel vu dr agforderte Syte isch nit giltig gsi, leer, oder e nit giltig Sprochgleich vun eme andre Wiki.",
+       "title-invalid-empty": "Der beatreit Sytetitel isch läär oder beisteit nur us em Name vomene Namensruum.",
+       "title-invalid-utf8": "Im beatreite Sytetitel het’s Zeiche, wo gäge UTF-8 verstoosse.",
+       "title-invalid-interwiki": "Im beatreite Sytetitel het’s en Interwiki-Link. Das geit imne Titel nid.",
+       "title-invalid-talk-namespace": "Der beatreit Sytetitel beziet sech uf’ne Diskussionssyte wo’s nid cha gä.",
+       "title-invalid-characters": "Im beatreite Sytetitel het’s ungültigi Zeiche: «$1».",
+       "title-invalid-relative": "Im Titel het’s e relative Pfad (./, ../). Relativi Pfäd sy i Title nid zuegla. Si chöü derzue füere, das e Browser d Syte nid cha erreiche.",
+       "title-invalid-magic-tilde": "Im beatreite Sytetitel het’s ds magische Wort <nowiki>~~~</nowiki>. Das isch nid zuegla.",
+       "title-invalid-too-long": "Der beatreit Sytetitel isch z läng. Är darf nid länger sy als $1 {{PLURAL:$1|Byte|Bytes}} ir UTF-8-Codierig.",
+       "title-invalid-leading-colon": "Der beatreit Sytetitel fat mit emne Strichpunkt a. Das isch nid zuegla.",
        "perfcached": "Die Informatione chemme us em Zwischespycher un sin derwyl villicht nit aktuäll. Maximal {{PLURAL:$1|ei Ergebnis isch|$1 Ergebnis sin}} im Cache verfiegbar.",
        "perfcachedts": "Die Date stamme us em Zwischespycher un sin am $1 s letscht Mol aktualisiert wore. Maximal {{PLURAL:$4|ei Ergebnis isch|$4 Ergebnis sin}} im Zwischespycher verfiegbar.",
        "querypage-no-updates": "'''D Aktualisierigsfunktion fir die Syte isch im Momänt deaktiviert. D Date wäre vorerscht nit ernejert.'''",
        "actionthrottled": "Aktionsaazahl limitiert",
        "actionthrottledtext": "As Schutz vor Spam cha die Aktion im e churze Zytabstand nume begränzt durgfiert wäre. Du bisch ebe an die Gränz cho. Bitte versuech s in e paar Minute non emol.",
        "protectedpagetext": "Die Syte isch fir s Bearbeite gsperrt.",
-       "viewsourcetext": "Quelltext vo dere Syte:",
-       "viewyourtext": "Du chasch dr Quälltext vu '''Dyre Bearbeitig''' vu däre Syte aaluege un kopiere:",
+       "viewsourcetext": "Du chasch der Quelltext vo dere Syten aluegen u kopiere.",
+       "viewyourtext": "Du chasch dr Quälltext vu '''Dyne Bearbeitige''' vu däre Syte aaluege un kopiere.",
        "protectedinterface": "In däre Syte het s Text fir s Sproch-Interface vu dr Software un si isch gsperrt, zum Missbruch z verhindre.",
        "editinginterface": "<strong>Warnig:</strong> Uf däre Syte het s Täxt, wu vu dr MediaWiki-Software brucht wird. Änderigen uf däre Syte wirke si uf d Benutzeroberflechi vu däm Wiki uus.",
        "translateinterface": "Go Ibersetzige fir alli Wiki zuefiege oder ändere, bruuch bitte [//translatewiki.net/ translatewiki.net], s MediaWiki-Lokalisierigsprojäkt.",
        "createacct-benefit-body2": "{{PLURAL:$1|Syte|Syte}}",
        "createacct-benefit-body3": "{{PLURAL:$1|aktive Autor|aktivi Autore}}",
        "badretype": "Di beidi Passwörter stimme nid zämme.",
+       "usernameinprogress": "Es Konto für dä Namen isch am erstellt wärde.\nBitte warte.",
        "userexists": "Dä Benutzername git s scho.\nBitte nimm e andere.",
        "loginerror": "Fähler bir Aamäldig",
        "createacct-error": "Fähler bim Aalege vum Benutzerkonto",
        "allpagesto": "Syten aazeige bis:",
        "allarticles": "alli Artikel",
        "allinnamespace": "alli Sytene im Namensruum $1",
-       "allpagessubmit": "gang",
+       "allpagessubmit": "Sueche",
        "allpagesprefix": "Alli Sytene mit em Präfix:",
        "allpagesbadtitle": "Dr Sytename, wu yygee hesch, isch nit giltig: Er het entwäder e vorgstellt Sproch-, e Interwiki-Chirzel oder s het ei oder meh Zeiche din, wu in eme Sytename nit derfe brucht wäre.",
        "allpages-bad-ns": "Dr Namensruum „$1“ isch in {{SITENAME}} nit vorhande.",
        "emailuser": "Es Mail schrybe",
        "emailuser-title-target": "E-Mail an {{GENDER:$1|dää Benutzer|die Benutzeri}} schicke",
        "emailuser-title-notarget": "E-Mail an Benutzer",
-       "emailpage": "E-Mail an Benutzer",
        "emailpagetext": "Du chasch {{GENDER:$1|em Benutzer|dr Benutzeri}} mit däm Formular e E-Mail schicke.\nAs Absender wird d E-Mail-Adräss us Dyyne [[Special:Preferences|Yystellige]] yytrait, ass {{GENDER:$1|dr Benutzer|d Benutzeri}} Dir cha Antwort gee.",
        "defemailsubject": "{{SITENAME}}-E-Mail vum Benutzer „$1“",
        "usermaildisabled": "Benutzer-E-Mail abgstellt",
        "tooltip-pt-logout": "Abmälde",
        "tooltip-pt-createaccount": "Du chasch gärn e Bentuzerkonto aalege un Di aamälde. Du muesch s aber nit",
        "tooltip-ca-talk": "Diskussion zum Artikelinhalt",
-       "tooltip-ca-edit": "Syte bearbeite. Bitte vor em Spychere d Vorschou aaluege.",
+       "tooltip-ca-edit": "Die Syte bearbeite",
        "tooltip-ca-addsection": "Neje Abschnitt aafange",
        "tooltip-ca-viewsource": "Die Syte isch geschützt. Du chasch der Quelltext aaluege.",
        "tooltip-ca-history": "Früecheri Versione vo dere Syte.",
        "spam_reverting": "Letschti Version ohni Links zue $1 widerhärgstellt.",
        "spam_blanking": "In allene Versione het s Links zue $1 gha, sufer gmacht.",
        "spam_deleting": "Alli Versione mit eme Link zue $1 sin glescht woret.",
-       "simpleantispam-label": "Spamschutz-Priefig. \nDo <strong>NYT</strong> yytrage!",
+       "simpleantispam-label": "Spamschutz-Priefig. \nDo <strong>nyt</strong> yytrage!",
        "pageinfo-title": "Informatione zue „$1“",
        "pageinfo-not-current": "Die Informatione chenne leider nit fir alti Versionen aazeigt wäre.",
        "pageinfo-header-basic": "Basisinformatione",
        "watchlistedit-raw-done": "Dyni Beobachtigslischt isch aktualisiert worde.",
        "watchlistedit-raw-added": "{{PLURAL:$1|ei Ytrag isch|$1 Yträg sin}} dezuedüü worde:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|ei Ytrag isch|$1 Yträg sin}} usegnoo worde:",
+       "watchlisttools-clear": "Beobachtigsliste lääre",
        "watchlisttools-view": "Beobachtigsliste: Änderige",
        "watchlisttools-edit": "normal bearbeite",
        "watchlisttools-raw": "imene große Textfäld bearbeite",
index f3b46f1..f8680a3 100644 (file)
        "emailuser": "સભ્યને ઇ-મેલ કરો",
        "emailuser-title-target": "આ {{GENDER:$1|સભ્ય}}ને ઇમેલ કરો",
        "emailuser-title-notarget": "ઇ-મેલ વપરાશકર્તા",
-       "emailpage": "ઈ-મેલ સભ્ય",
        "emailpagetext": "તમે નીચે દર્શાવેલ ફોર્મ વાપરી આ {{GENDER:$1|સભ્ય}}ને ઇ-મેલ મોકલી શકો છો.\nતમે [[Special:Preferences|તમારી પસંદમાં]] જે ઇ-મેલ સરનામું લખ્યું હશે તે \"દ્વારા\"ના નામ હેઠળ દેખાશે, જેથી ઇ-મેલ મેળવનાર તમને સંદેશાનો જવાબ આપી શકશે.",
        "defemailsubject": "{{SITENAME}} સભ્ય $1 તરફથી ઈ-મેલ",
        "usermaildisabled": "સભ્યનો ઈ-મેલ નિષ્ક્રિય કરાયો",
        "emailccsubject": "$1ને તમે મોકલેલા સંદેશાની પ્રત: $2",
        "emailsent": "ઈ-મેલ મોકલી દેવાયો",
        "emailsenttext": "તમારો ઈ-મેલ મોકલી દેવાયો છે",
-       "emailuserfooter": "આ પત્ર $1 દ્વારા $2ને  {{SITENAME}} પરની \"{{int:emailpage}} (સભ્યને ઇ-મેલ કરો)\" કડી મારફતે મોકલવામાં આવ્યો છે.",
+       "emailuserfooter": "આ પત્ર $1 દ્વારા $2ને  {{SITENAME}} પરની \"{{int:emailuser}} (સભ્યને ઇ-મેલ કરો)\" કડી મારફતે મોકલવામાં આવ્યો છે.",
        "usermessage-summary": "તંત્ર સંદેશ મૂક્યો",
        "usermessage-editor": "તંત્ર સંદેશાઓ",
        "watchlist": "ધ્યાનસૂચી",
index 20e5cde..35095e6 100644 (file)
@@ -36,7 +36,6 @@
        "tog-hideminor": "הסתרת שינויים משניים ברשימת השינויים האחרונים",
        "tog-hidepatrolled": "הסתרת שינויים בדוקים ברשימת השינויים האחרונים",
        "tog-newpageshidepatrolled": "הסתרת דפים בדוקים ברשימת הדפים החדשים",
-       "tog-hidecategorization": "הסתרת הוספות והסרות של דפים מקטגוריות",
        "tog-extendwatchlist": "הרחבת רשימת המעקב כך שתציג את כל השינויים, לא רק את השינויים האחרונים בכל דף",
        "tog-usenewrc": "קיבוץ השינויים לפי דף בשינויים האחרונים וברשימת המעקב",
        "tog-numberheadings": "מספור כותרות אוטומטי",
@@ -66,7 +65,6 @@
        "tog-watchlisthideliu": "הסתרת עריכות של משתמשים רשומים ברשימת המעקב",
        "tog-watchlisthideanons": "הסתרת עריכות של משתמשים אנונימיים ברשימת המעקב",
        "tog-watchlisthidepatrolled": "הסתרת עריכות בדוקות ברשימת המעקב",
-       "tog-watchlisthidecategorization": "הסתרת הוספות והסרות של דפים מקטגוריות",
        "tog-ccmeonemails": "לשלוח אליי העתקים של הודעות דואר אלקטרוני ששלחתי למשתמשים אחרים",
        "tog-diffonly": "ביטול הצגת תוכן הדף מתחת להשוואות הגרסאות",
        "tog-showhiddencats": "הצגת קטגוריות מוסתרות",
        "createacct-benefit-body2": "{{PLURAL:$1|דף|דפים}}",
        "createacct-benefit-body3": "{{PLURAL:$1|תורם|תורמים}} לאחרונה",
        "badretype": "הסיסמאות שהזנת אינן מתאימות.",
+       "usernameinprogress": "יצירת חשבון עבור שם המשתמש הזה כבר התחילה.\nנא להמתין.",
        "userexists": "שם המשתמש שבחרתם כבר נמצא בשימוש.\nאנא בחרו שם אחר.",
        "loginerror": "שגיאה בכניסה לאתר",
        "createacct-error": "שגיאה ביצירת חשבון",
        "prefs-watchlist-days": "מספר הימים המרבי שיוצגו ברשימת המעקב:",
        "prefs-watchlist-days-max": "לכל היותר {{PLURAL:$1|יום אחד|יומיים|$1 ימים}}",
        "prefs-watchlist-edits": "מספר העריכות המרבי שיוצגו ברשימת המעקב המורחבת:",
-       "prefs-watchlist-edits-max": "×\9eספר ×\9e×\99ר×\91×\99: 1000",
+       "prefs-watchlist-edits-max": "מספר מרבי: 1000",
        "prefs-watchlist-token": "אסימון לרשימת המעקב:",
        "prefs-misc": "שונות",
        "prefs-resetpass": "שינוי סיסמה",
        "rcshowhidemine": "$1 עריכות שלי",
        "rcshowhidemine-show": "הצגת",
        "rcshowhidemine-hide": "הסתרת",
-       "rcshowhidecategorization": "$1 הוספות והסרות של דפים מקטגוריות",
-       "rcshowhidecategorization-show": "הצגת",
-       "rcshowhidecategorization-hide": "הסתרת",
        "rclinks": "הצגת $1 שינויים אחרונים ב־$2 הימים האחרונים.<br /> $3",
        "diff": "הבדל",
        "hist": "היסטוריה",
        "recentchangeslinked-summary": "בדף מיוחד זה רשומים השינויים האחרונים בדפים המקושרים מתוך הדף (או בדפים הכלולים בקטגוריה).\nדפים ב[[Special:Watchlist|רשימת המעקב שלכם]] מוצגים ב'''הדגשה'''.",
        "recentchangeslinked-page": "שם הדף:",
        "recentchangeslinked-to": "הצגת השינויים בדפים המקשרים לדף הנתון במקום זאת",
-       "recentchanges-page-added-to-category": "הדף [[:$1]] נוסף לקטגוריה",
-       "recentchanges-page-added-to-category-bundled": "הדף [[:$1]] {{PLURAL:$2|ועוד דף אחד|ועוד $2 דפים}} נוספו לקטגוריה",
-       "recentchanges-page-removed-from-category": "הדף [[:$1]] הוסר מקטגוריה",
-       "recentchanges-page-removed-from-category-bundled": "הדף [[:$1]] {{PLURAL:$2|ועוד דף אחד|ועוד $2 דפים}} הוסרו מקטגוריה",
        "upload": "העלאת קובץ לשרת",
        "uploadbtn": "העלאה",
        "reuploaddesc": "ביטול ההעלאה וחזרה לטופס העלאת קבצים לשרת",
        "emailuser": "שליחת דואר אלקטרוני למשתמש זה",
        "emailuser-title-target": "שליחת דוא\"ל {{GENDER:$1|למשתמש זה|למשתמשת זו}}",
        "emailuser-title-notarget": "שליחת דוא\"ל למשתמש",
-       "emailpage": "שליחת דואר למשתמש",
        "emailpagetext": "ניתן להשתמש בטופס כדי לשלוח הודעת דואר אלקטרוני {{GENDER:$1|למשתמש זה|למשתמשת זו}}.\nכתובת הדואר האלקטרוני שכתבת ב[[Special:Preferences|העדפות המשתמש שלך]] תופיע ככתובת שההודעה נשלחה ממנה, כדי לאפשר תגובה ישירה.",
        "defemailsubject": "דוא\"ל מ{{grammar:תחילית|{{SITENAME}}}} מהמשתמש \"$1\"",
        "usermaildisabled": "שליחת דוא\"ל למשתמשים מבוטלת",
        "emailccsubject": "העתק של הודעתך למשתמש $1: $2",
        "emailsent": "הדואר נשלח",
        "emailsenttext": "הודעת הדואר האלקטרוני שלך נשלחה.",
-       "emailuserfooter": "דואר זה נשלח על־ידי $1 ל{{GRAMMAR:תחילית|$2}} באמצעות פעולת \"{{int:emailpage}}\" ב{{GRAMMAR:תחילית|{{SITENAME}}}}.",
+       "emailuserfooter": "דואר זה נשלח על־ידי $1 ל{{GRAMMAR:תחילית|$2}} באמצעות פעולת \"{{int:emailuser}}\" ב{{GRAMMAR:תחילית|{{SITENAME}}}}.",
        "usermessage-summary": "השארת הודעת מערכת.",
        "usermessage-editor": "שולח הודעות המערכת",
        "watchlist": "רשימת המעקב",
        "logentry-newusers-create2": "חשבון המשתמש $3 נוצר על־ידי $1",
        "logentry-newusers-byemail": "חשבון המשתמש $3 נוצר על־ידי $1 והסיסמה נשלחה בדוא\"ל",
        "logentry-newusers-autocreate": "חשבון המשתמש $1 {{GENDER:$2|נוצר}} אוטומטית",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|העביר|העבירה}} את הגדרות ההגנה מהדף $4 אל הדף $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של $3 מ{{GRAMMAR:תחילית|$4}} ל{{GRAMMAR:תחילית|$5}}&rlm;",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של $3&rlm;",
        "logentry-rights-autopromote": "$1 קודם אוטומטית מ{{GRAMMAR:תחילית|$4}} ל{{GRAMMAR:תחילית|$5}}",
index 8f468ea..a007245 100644 (file)
        "emailuser": "इस सदस्य को ई-मेल भेजें",
        "emailuser-title-target": "इस {{GENDER:$1|सदस्य|सदस्या}} को ई-मेल करें।",
        "emailuser-title-notarget": "सदस्य को ई-मेल करें",
-       "emailpage": "सदस्य को ई-मेल करें",
        "emailpagetext": "नीचे दिए पर्चे को जरिए आप इस {{GENDER:$1|सदस्य}} को ई-मेल भेज सकते हैं।\nआपने जो पता [[Special:Preferences|अपनी पसंद]] में दिया था वह इस ई-मेल के \"भेजने वाले\" के तौर पर आएगा, अतः प्राप्तकर्ता आपको सीधे जवाब दे सकेंगे।",
        "defemailsubject": "{{SITENAME}} ई-मेल \"$1\" सदस्य से",
        "usermaildisabled": "सदस्य ई-मेल अक्षम किया गया",
        "emailccsubject": "आपके ई-मेल की प्रति जो $1 को भेजा गया: $2",
        "emailsent": "ई-मेल भेज दिया गया है।",
        "emailsenttext": "आपका ई-मेल संदेश भेज दिया गया है।",
-       "emailuserfooter": "इस ई-मेल को $1 द्वारा $2 को भेजा गया था जिसके लिए \"{{int:emailpage}}\" कार्य को {{SITENAME}} पर प्रयोग में लाया गया था।",
+       "emailuserfooter": "इस ई-मेल को $1 द्वारा $2 को भेजा गया था जिसके लिए \"{{int:emailuser}}\" कार्य को {{SITENAME}} पर प्रयोग में लाया गया था।",
        "usermessage-summary": "प्रणाली सन्देश छोड़ रहा है।",
        "usermessage-editor": "सिस्टम दूत",
        "watchlist": "ध्यानसूची",
index eace87c..fa9ce16 100644 (file)
        "emailuser": "Wužiwarjej mejlku pósłać",
        "emailuser-title-target": "E-mejl na {{GENDER:$1|tutomu wužiwarjej|tutej wužiwarce}} pósłać",
        "emailuser-title-notarget": "Wužiwarjej mejlku pósłać",
-       "emailpage": "Wužiwarjej mejlku pósłać",
        "emailpagetext": "Móžeš slědowacy formular wužiwać, zo by tutomu {{GENDER:$1|wužiwarjej}} e-mejlku pósłał.\nE-mejlowa adresa, kotruž sy w [[Special:Preferences|swojich wužiwarskich nastajenjach]] zapodał, zjewi so jako adresa \"Wot\" e-mejlki, tak zo přijimowar móže ći direktnje wotmołwić.",
        "defemailsubject": "{{SITENAME}} - e-mejlka wot wužiwarja \"$1\"",
        "usermaildisabled": "Wužiwarska e-mejl znjemóžnjena",
        "emailccsubject": "Kopija twojeje powěsće wužiwarjej $1: $2",
        "emailsent": "Mejlka wotesłana",
        "emailsenttext": "Twoja mejlka bu wotesłana.",
-       "emailuserfooter": "Tuta e-mejlka je so z pomocu funkcije \"{{int:emailpage}}\" na {{GRAMMAR:lokatiw|{{SITENAME}}}} wot $1 do $2 pósłała.",
+       "emailuserfooter": "Tuta e-mejlka je so z pomocu funkcije \"{{int:emailuser}}\" na {{GRAMMAR:lokatiw|{{SITENAME}}}} wot $1 do $2 pósłała.",
        "usermessage-summary": "Systemowu  zdźělenku zawostajić.",
        "usermessage-editor": "Systemowy powěstnik",
        "watchlist": "Wobkedźbowanki",
index fb13227..0b9fd87 100644 (file)
        "emailuser": "E-mail küldése ezen szerkesztőnek",
        "emailuser-title-target": "E-mail küldése ennek a felhasználónak: $1",
        "emailuser-title-notarget": "E-mail küldése a felhasználónak",
-       "emailpage": "E-mail küldése",
        "emailpagetext": "Ezzel az űrlappal tudsz ennek a {{GENDER:$1|felhasználónak}} e-mailt küldeni.\nFeladóként a [[Special:Preferences|beállításaidnál]] megadott e-mail címed fog szerepelni, így a címzett közvetlenül tud majd válaszolni neked.",
        "defemailsubject": "{{SITENAME}} e-mail a következő felhasználótól: „$1”",
        "usermaildisabled": "Email fogadás letiltva",
        "emailccsubject": "$1 szerkesztőnek küldött $2 tárgyú üzenet másolata",
        "emailsent": "E-mail elküldve",
        "emailsenttext": "E-mail üzenetedet elküldtük.",
-       "emailuserfooter": "Ezt az e-mailt $1 küldte $2 számára, az „{{int:emailpage}}” funkció használatával a(z) {{SITENAME}} wikin.",
+       "emailuserfooter": "Ezt az e-mailt $1 küldte $2 számára, az „{{int:emailuser}}” funkció használatával a(z) {{SITENAME}} wikin.",
        "usermessage-summary": "Rendszerüzenet megadása.",
        "usermessage-editor": "Rendszerüzenetek",
        "watchlist": "Figyelőlistám",
index 149cc42..da0f648 100644 (file)
        "content-model-wikitext": "վիքիտեքստ",
        "content-model-javascript": "ՋավաՍկրիպտ",
        "content-model-css": "ՍիԷսԷս",
-       "duplicate-args-category": "Ô¿Õ¡Õ²Õ¡ÕºÕ¡Ö\80Õ¶Õ¥Ö\80Õ¸Ö\82Õ´ Õ¯Ö\80Õ¯Õ¶Õ¡Õ¯Õ« արգումենտներով էջեր",
+       "duplicate-args-category": "Ô¿Õ¡Õ²Õ¡ÕºÕ¡Ö\80Õ¶Õ¥Ö\80Õ¸Ö\82Õ´ Õ¯Ö\80Õ¯Õ¶Õ¾Õ¸Õ² արգումենտներով էջեր",
        "undo-success": "Խմբագրումը կարող է հետ շրջվել։ Ստուգեք տարբերակների համեմատությունը ստորև, որպեսզի համոզվեք, որ դա է ձեզ հետաքրքրող փոփոխությունը և մատնահարեք «Հիշել էջը»՝ գործողությունն ավարտելու համար։",
        "undo-failure": "Խմբագրումը չի կարող հետ շրջվել միջանկյալ խմբագրումների ընդհարման պատճառով։",
        "undo-summary": "Հետ է շրջվում $1 խմբագրումը, որի հեղինակն է՝ [[Special:Contributions/$2|$2]] ([[User talk:$2|քննարկում]]) {{GENDER:$2|մասնակիցը|մասնակցուհին}}",
        "emailuser": "էլ-նամակ ուղարկել այս մասնակցին",
        "emailuser-title-target": "Ուղարկել էլ․ նամակ {{GENDER:$1|մասնակցին}}",
        "emailuser-title-notarget": "Ուղարկել էլ․ նամակ",
-       "emailpage": "Էլ-նամակ ուղարկել մասնակցին",
        "emailpagetext": "Դուք կարող եք օգտագործել ներքևի ձևը այս {{GENDER:$1|մասնակցին}} էլ-նամաակ ուղարկելու համար։\n\nՁեր նախընտրանքներում նշված էլ-հասցեն կերևա «Ումից» դաշտում և ստացողը կարող է անմիջապես պատասխանել ձեզ։",
        "defemailsubject": "{{SITENAME}} էլ-նամակ",
        "usermaildisabled": "Էլ․ նամակ ուղարկելը թույլատրված չէ։",
index 3aba75b..b6391d8 100644 (file)
@@ -21,7 +21,6 @@
        "tog-hideminor": "Celar le modificationes minor in le modificationes recente",
        "tog-hidepatrolled": "Celar le modificationes patruliate in le modificationes recente",
        "tog-newpageshidepatrolled": "Celar le paginas patruliate del lista de nove paginas",
-       "tog-hidecategorization": "Celar le categorisation de paginas",
        "tog-extendwatchlist": "Displicar le observatorio pro monstrar tote le modificationes, non solmente les plus recente",
        "tog-usenewrc": "Gruppar modificationes per pagina in modificationes recente e observatorio",
        "tog-numberheadings": "Numerar titulos automaticamente",
@@ -51,7 +50,6 @@
        "tog-watchlisthideliu": "Celar modificationes de usatores registrate in le observatorio",
        "tog-watchlisthideanons": "Celar modificationes de usatores anonyme in le observatorio",
        "tog-watchlisthidepatrolled": "Celar le modificationes patruliate in le observatorio",
-       "tog-watchlisthidecategorization": "Celar le categorisation de paginas",
        "tog-ccmeonemails": "Inviar me copias del messages de e-mail que io invia a altere usatores",
        "tog-diffonly": "Non monstrar le contento del pagina sub le comparation de duo versiones",
        "tog-showhiddencats": "Monstrar categorias celate",
        "rcshowhidemine": "$1 mi modificationes",
        "rcshowhidemine-show": "Monstrar",
        "rcshowhidemine-hide": "Celar",
-       "rcshowhidecategorization": "$1 le categorisation de paginas",
-       "rcshowhidecategorization-show": "Monstrar",
-       "rcshowhidecategorization-hide": "Celar",
        "rclinks": "Monstrar le $1 ultime modificationes in le $2 ultime dies<br />$3",
        "diff": "diff",
        "hist": "hist",
        "recentchangeslinked-summary": "Isto es un lista de modificationes facite recentemente in paginas ligate ab un pagina specific (o in membros de un categoria specific).\nLe paginas presente in [[Special:Watchlist|tu observatorio]] appare in litteras '''grasse'''.",
        "recentchangeslinked-page": "Nomine del pagina:",
        "recentchangeslinked-to": "Monstrar modificationes in paginas con ligamines al pagina specificate",
-       "recentchanges-page-added-to-category": "[[:$1]] addite al categoria",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] e {{PLURAL:$2|un pagina|$2 paginas}} addite al categoria",
-       "recentchanges-page-removed-from-category": "[[:$1]] removite del categoria",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] e {{PLURAL:$2|un pagina|$2 paginas}} removite del categoria",
        "upload": "Incargar file",
        "uploadbtn": "Incargar file",
        "reuploaddesc": "Cancellar e retornar al formulario de incargamento",
        "emailuser": "Inviar e-mail a iste usator",
        "emailuser-title-target": "Inviar e-mail a iste {{GENDER:$1|usator|usatrice}}",
        "emailuser-title-notarget": "Inviar e-mail al usator",
-       "emailpage": "Inviar e-mail al usator",
        "emailpagetext": "Le formulario sequente es pro inviar un message de e-mail a iste {{GENDER:$1|usator}}.\nLe adresse de e-mail que tu specificava in [[Special:Preferences|tu preferentias de usator]] apparera\ncomo le adresse del expeditor, de sorta que le destinatario potera responder te directemente.",
        "defemailsubject": "E-mail del usator \"$1\" de {{SITENAME}}",
        "usermaildisabled": "E-mail a usatores disactivate",
        "emailccsubject": "Copia de tu message a $1: $2",
        "emailsent": "E-mail inviate",
        "emailsenttext": "Tu message de e-mail ha essite inviate.",
-       "emailuserfooter": "Iste e-mail ha essite inviate per $1 a $2 con le function \"{{int:emailpage}}\" in {{SITENAME}}.",
+       "emailuserfooter": "Iste e-mail ha essite inviate per $1 a $2 con le function \"{{int:emailuser}}\" in {{SITENAME}}.",
        "usermessage-summary": "Lassante un message de systema.",
        "usermessage-editor": "Messagero del systema",
        "watchlist": "Observatorio",
index 83f90fa..265bb2d 100644 (file)
        "emailuser": "Surel pengguna",
        "emailuser-title-target": "Kirim surel ke {{GENDER:$1|pengguna}} ini",
        "emailuser-title-notarget": "Kirim surel",
-       "emailpage": "Kirim surel ke pengguna ini",
        "emailpagetext": "Anda dapat menggunakan formulir di bawah ini untuk mengirimkan surel ke {{GENDER:$1|pengguna}} ini.\nAlamat surel yang Anda masukkan di [[Special:Preferences|preferensi akun Anda]] akan muncul sebagai alamat \"Dari\" dalam surel tersebut, sehingga penerima dapat langsung membalas kepada Anda.",
        "defemailsubject": "Surel {{SITENAME}} dari pengguna \"$1\"",
        "usermaildisabled": "Surel pengguna dinonaktifkan",
        "emailccsubject": "Salinan pesan Anda untuk $1: $2",
        "emailsent": "Surel terkirim",
        "emailsenttext": "Surel Anda telah dikirimkan.",
-       "emailuserfooter": "Email ini dikirimkan dengan $1 pada $2 dengan fungsi \"{{int:emailpage}}\" pada {{SITENAME}}.",
+       "emailuserfooter": "Email ini dikirimkan dengan $1 pada $2 dengan fungsi \"{{int:emailuser}}\" pada {{SITENAME}}.",
        "usermessage-summary": "Tinggalkan pesan sistem.",
        "usermessage-editor": "Penyampai pesan sistem",
        "usermessage-template": "MediaWiki:UserMessage",
index a3886aa..089ca43 100644 (file)
@@ -15,7 +15,6 @@
        "tog-hideminor": "Ilemmeng dagiti bassit nga inurnos manipud iti kaudian a balbaliw",
        "tog-hidepatrolled": "Ilemmeng dagiti napatruliaan nga inurnos manipud iti kaudian a balbaliw",
        "tog-newpageshidepatrolled": "Ilemmeng dagiti napatruliaan a panid manipud iti baro a listaan ti panid",
-       "tog-hidecategorization": "Ilemmeng ti pannakaikategoria dagiti panid",
        "tog-extendwatchlist": "Ipalawa ti listaan ti bambantayan tapno maipakita amin a nasukatan, saan laeng a ti kabiitan",
        "tog-usenewrc": "Dagiti grupo a panagbaliw babaen ti panid ti kaudian a balbaliw ken listaan ti bambantayan",
        "tog-numberheadings": "Automatiko a pabilangan dagiti paulo",
@@ -45,7 +44,6 @@
        "tog-watchlisthideliu": "Ilemmeng dagiti inurnos babaen dagiti nakastrek nga agar-aramat manipud iti listaan ti bambantayan",
        "tog-watchlisthideanons": "Ilemmeng dagiti inurnos babaen dagiti di ammo nga agar-aramat manipud iti listaan ti bambantayan",
        "tog-watchlisthidepatrolled": "Ilemmeng dagiti napatruliaan nga inurnos manipud iti listaan ti bambantayan",
-       "tog-watchlisthidecategorization": "Ilemmeng ti pannakaikategoria dagiti panid",
        "tog-ccmeonemails": "Patulodandak kadagiti kopia ti esurat nga ipatulodko kadagiti sabali nga agar-aramat",
        "tog-diffonly": "Saan nga iparang ti linaon ti panid dita baba dagiti pagiddiatan",
        "tog-showhiddencats": "Ipakita dagiti nailemmeng a kategoria",
        "hidden-category-category": "Nailemmeng a katkategoria",
        "category-subcat-count": "{{PLURAL:$2|Daytoy a kategoria ket addaan laeng iti sumaganad a subkategoria.|Daytoy a kategoria ket addaan {{PLURAL:$1|iti sumaganad a  subkategoria|kadagiti sumaganad a $1 a subkategoria}}, manipud iti $2 a dagup.}}",
        "category-subcat-count-limited": "Daytoy a kategoria ket addaan {{PLURAL:$1|iti sumaganad a subkategoria|kadagiti sumaganad a $1 a subkategoria}}.",
-       "category-article-count": "{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng iti sumaganad a panid.|{{PLURAL:$1|Ti sumaganad a panid|Dagiti sumaganad a $1 a panid}} ket adda iti daytoy a kategoria, manipud ti $2 a dagup.}}",
+       "category-article-count": "{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng iti sumaganad a panid.|{{PLURAL:$1|Ti sumaganad a panid|Dagiti sumaganad a $1 a panid}} ket adda iti daytoy a kategoria, manipud iti $2 a dagup.}}",
        "category-article-count-limited": "{{PLURAL:$1|Ti sumaganad a panid|Dagiti sumaganad a $1 a panid}} ket adda iti agdama a kategoria.",
        "category-file-count": "{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng iti sumaganad a papeles.|{{PLURAL:$1|Ti sumaganad a papeles|Dagiti sumaganad a $1 a papeles}} ket adda iti daytoy a kategoria, iti $2 a dagup.}}",
        "category-file-count-limited": "{{PLURAL:$1|Ti sumaganad a papeles|Dagiti sumaganad a $1 a papeles}} ket adda iti agdama a kategoria.",
        "rcshowhidemine": "$1 dagiti inurnosko",
        "rcshowhidemine-show": "Ipakita",
        "rcshowhidemine-hide": "Ilemmeng",
-       "rcshowhidecategorization": "$1 a pannakaikategoria ti panid",
-       "rcshowhidecategorization-show": "Ipakita",
-       "rcshowhidecategorization-hide": "Ilemmeng",
        "rclinks": "Ipakita dagiti naudi a $1 a sinukatan iti kallabes a $2 nga al-aldaw<br />$3",
        "diff": "dip",
        "hist": "hist",
        "recentchangeslinked-summary": "Daytoy ket listaan dagiti kaudian a sinukatan kadagiti pampanid a nakasilpo manipud iti naisangayan a panid (wenno kadagiti kameng ti maysa a nainaganan a kategoria).\nDagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket dagiti <strong>napuskol</strong>.",
        "recentchangeslinked-page": "Nagan ti panid:",
        "recentchangeslinked-to": "Ipakita dagiti sinukatan kadagiti panid nga imbes a naisilpo iti naited a panid",
-       "recentchanges-page-added-to-category": "nainayon ti [[:$1]] iti kategoria",
-       "recentchanges-page-added-to-category-bundled": "nainayon ti [[:$1]] ken {{PLURAL:$2|maysa a panid|$2 a pampanid}} iti kategoria",
-       "recentchanges-page-removed-from-category": "naikkat ti [[:$1]] manipud iti kategoria",
-       "recentchanges-page-removed-from-category-bundled": "Naikkat ti [[:$1]] ken {{PLURAL:$2|maysa a panid|$2 a pampanid}} manipud iti kategoria",
        "upload": "Agikarga iti papeles",
        "uploadbtn": "Agikarga iti papeles",
        "reuploaddesc": "Ukasen ti panagikarga ken agsubli idiay porma ti panagikarga",
        "emailuser": "Esuratan daytoy nga agar-aramat",
        "emailuser-title-target": "Esuratam daytoy nga {{GENDER:$1|agar-aramat}}",
        "emailuser-title-notarget": "Esuratan ti agar-aramat",
-       "emailpage": "Esuratan ti agar-aramat",
        "emailpagetext": "Mabalinmo nga usaren ti porma dita baba tapno makaipatulod iti esurat a mensahe iti daytoy nga {{GENDER:$1|agar-aramat}}.\nTi esurat nga inkabilmo iti [[Special:Preferences|kakaykayatam]] ket agparang a kas \"Naggapo\" a pagtaengan ti esurat, tapno ti nagipatulodam ket makasungbat kenka.",
        "defemailsubject": "Esurat ti {{SITENAME}} a naggapo kenni \"$1\"",
        "usermaildisabled": "Saanmo a mabalin ti agipatulod ti esurat",
        "emailccsubject": "Kopia ti mensahem kenni $1: $2",
        "emailsent": "Naipatuloden ti esurat",
        "emailsenttext": "Naipatuloden ti esurat a mensahem.",
-       "emailuserfooter": "Daytoy nga esurat ket impatulod babaen ni $1 kenni $2 iti \"{{int:emailpage}}\" nga annong iti {{SITENAME}}",
+       "emailuserfooter": "Daytoy nga esurat ket impatulod babaen ni $1 kenni $2 iti \"{{int:emailuser}}\" nga annong iti {{SITENAME}}",
        "usermessage-summary": "Pumanpanaw iti mesahe ti sistema.",
        "usermessage-editor": "Mensahero ti sistema",
        "watchlist": "Bambantayan",
        "tooltip-p-logo": "Sarungkaran ti umuna a panid",
        "tooltip-n-mainpage": "Sarungkaran ti umuna a panid",
        "tooltip-n-mainpage-description": "Sarungkaran ti umuna a panid",
-       "tooltip-n-portal": "Maipapan ti gandat, ti aniaman a maaramidmo, no sadino ti pagbirukam kadagiti banbanag",
+       "tooltip-n-portal": "Maipapan iti proyekto, no ania ti maaramidmo, ti pagbirukan kadagiti banag",
        "tooltip-n-currentevents": "Agsapul ti pakaammo kadagiti agdama a paspasamak",
        "tooltip-n-recentchanges": "Listaan dagiti naudi a sinukatan iti wiki",
        "tooltip-n-randompage": "Agikarga iti pugto a panid",
index da8aff7..5ec43fe 100644 (file)
        "emailuser": "Senda þessum notanda tölvupóst",
        "emailuser-title-target": "Sendu þessum {{GENDER:$1|notanda}} tölvupóst",
        "emailuser-title-notarget": "Senda tölvupóst",
-       "emailpage": "Senda tölvupóst",
        "emailpagetext": "Hafi notandinn tilgreint netfang í stillingunum sínum er hægt að senda póst til {{GENDER:$1|hans|hennar|hans}} hér.\nPóstfangið sem þú tilgreindir í [[Special:Preferences|stillingunum þínum]] birtist í \"Frá:\" hluta tölvupóstsins, svo að viðtakandi hans geti svarað beint til þín.",
        "defemailsubject": "{{SITENAME}} skilaboð frá notandanum \"$1\"",
        "usermaildisabled": "Netfang notenda er óvirkt",
        "emailccsubject": "Afrit af skilaboðinu þínu til $1: $2",
        "emailsent": "Sending tókst",
        "emailsenttext": "Skilaboðin þín hafa verið send.",
-       "emailuserfooter": "Þessi tölvupóstur var sendur af $1 til $2 með möguleikanum \"{{int:emailpage}}\" á {{SITENAME}}.",
+       "emailuserfooter": "Þessi tölvupóstur var sendur af $1 til $2 með möguleikanum \"{{int:emailuser}}\" á {{SITENAME}}.",
        "usermessage-summary": "Skil eftir meldingu.",
        "usermessage-editor": "Meldinga sendiboði",
        "watchlist": "Vaktlistinn",
index 1f238fa..93a136b 100644 (file)
@@ -96,7 +96,6 @@
        "tog-hideminor": "Nascondi le modifiche minori nelle ultime modifiche",
        "tog-hidepatrolled": "Nascondi le modifiche verificate nelle ultime modifiche",
        "tog-newpageshidepatrolled": "Nascondi le pagine verificate dall'elenco delle pagine più recenti",
-       "tog-hidecategorization": "Nascondi la categorizzazione delle pagine",
        "tog-extendwatchlist": "Mostra tutte le modifiche agli osservati speciali, non solo l'ultima",
        "tog-usenewrc": "Raggruppa le modifiche per pagina nelle ultime modifiche e negli osservati speciali",
        "tog-numberheadings": "Numerazione automatica dei titoli di sezione",
        "tog-watchlisthideliu": "Nascondi le modifiche degli utenti registrati negli osservati speciali",
        "tog-watchlisthideanons": "Nascondi le modifiche degli utenti anonimi negli osservati speciali",
        "tog-watchlisthidepatrolled": "Nascondi le modifiche verificate negli osservati speciali",
-       "tog-watchlisthidecategorization": "Nascondi la categorizzazione delle pagine",
        "tog-ccmeonemails": "Inviami una copia dei messaggi spediti agli altri utenti",
        "tog-diffonly": "Non visualizzare il contenuto della pagina dopo il confronto tra versioni",
        "tog-showhiddencats": "Mostra le categorie nascoste",
        "actionthrottled": "Azione ritardata",
        "actionthrottledtext": "Come misura di sicurezza contro lo spam, l'esecuzione di alcune azioni è limitata a un numero massimo di volte in un determinato periodo di tempo, limite che in questo caso è stato superato. Si prega di riprovare tra qualche minuto.",
        "protectedpagetext": "Questa pagina è stata protetta per impedirne la modifica o altre operazioni.",
-       "viewsourcetext": "È possibile visualizzare e copiare il codice sorgente di questa pagina:",
-       "viewyourtext": "È possibile visualizzare e copiare il codice sorgente delle '''tue modifiche''' a questa pagina:",
+       "viewsourcetext": "È possibile visualizzare e copiare il codice sorgente di questa pagina.",
+       "viewyourtext": "È possibile visualizzare e copiare il codice sorgente delle <strong>tue modifiche</strong> a questa pagina.",
        "protectedinterface": "Questa pagina contiene un elemento che fa parte dell'interfaccia utente del software di questo sito ed è protetta per evitare possibili abusi.\nPer aggiungere o modificare le traduzioni valide su tutti i wiki, usa [//translatewiki.net/ translatewiki.net], il progetto di localizzazione di MediaWiki.",
        "editinginterface": "<strong>Attenzione:</strong> il testo di questa pagina fa parte dell'interfaccia utente del software di questo sito. Tutte le modifiche apportate a questa pagina si riflettono sui messaggi visualizzati per tutti gli utenti su questo wiki.",
        "translateinterface": "Per aggiungere o modificare le traduzioni valide su tutti i wiki, usa [//translatewiki.net/ translatewiki.net], il progetto MediaWiki per la localizzazione.",
        "createacct-benefit-body2": "{{PLURAL:$1|pagina|pagine}}",
        "createacct-benefit-body3": "{{PLURAL:$1|contributore recente|contributori recenti}}",
        "badretype": "Le password inserite non coincidono tra loro.",
+       "usernameinprogress": "La creazione di account con questo nome utente è già in corso.\nSi prega di attendere.",
        "userexists": "Il nome utente inserito è già utilizzato.\nScegli un nome utente diverso.",
        "loginerror": "Errore durante l'accesso",
        "createacct-error": "Errore durante la creazione dell'utenza",
        "rcshowhidemine": "$1 le mie modifiche",
        "rcshowhidemine-show": "Mostra",
        "rcshowhidemine-hide": "Nascondi",
-       "rcshowhidecategorization": "$1 la categorizzazione della pagina",
-       "rcshowhidecategorization-show": "Mostra",
-       "rcshowhidecategorization-hide": "Nascondi",
        "rclinks": "Mostra le $1 modifiche più recenti apportate negli ultimi $2 giorni<br />$3",
        "diff": "diff",
        "hist": "cron",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[osservata da {{PLURAL:$1|un utente|$1 utenti}}]",
-       "rc_categories": "Limita alle categorie (separate da \"|\")",
-       "rc_categories_any": "Qualsiasi",
+       "rc_categories": "Limita alle categorie (separate da \"|\"):",
+       "rc_categories_any": "Qualsiasi fra quelle indicate",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte}} dopo la modifica",
        "newsectionsummary": "/* $1 */ nuova sezione",
        "rc-enhanced-expand": "Mostra dettagli",
        "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]] aggiunto alla categoria",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] e {{PLURAL:$2|una pagina è aggiunta|$2 pagine sono aggiunte}} alla categoria",
-       "recentchanges-page-removed-from-category": "[[:$1]] rimosso dalla categoria",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] e {{PLURAL:$2|una pagina è rimossa|$2 pagine sono rimosse}} dalla categoria",
        "upload": "Carica un file",
        "uploadbtn": "Carica",
        "reuploaddesc": "Torna al modulo per il caricamento.",
        "emailuser": "Invia una email all'utente",
        "emailuser-title-target": "Invia una email a questo {{GENDER:$1|utente}}",
        "emailuser-title-notarget": "Invia una email a un utente",
-       "emailpage": "Invia una email all'utente",
        "emailpagetext": "Usare il modulo sottostante per inviare un messaggio e-mail all'{{GENDER:$1|utente}} indicato. L'indirizzo specificato nelle [[Special:Preferences|preferenze]] del mittente apparirà nel campo \"Da:\" del messaggio per consentire al destinatario di rispondere direttamente.",
        "defemailsubject": "Messaggio da {{SITENAME}} dall'utente \"$1\"",
        "usermaildisabled": "e-mail utente disabilitata",
        "emailccsubject": "Copia del messaggio inviato a $1: $2",
        "emailsent": "Messaggio inviato",
        "emailsenttext": "Il messaggio e-mail è stato inviato.",
-       "emailuserfooter": "Questa email è stata inviata da $1 a $2 attraverso la funzione \"{{int:emailpage}}\" su {{SITENAME}}.",
+       "emailuserfooter": "Questa email è stata inviata da $1 a $2 attraverso la funzione \"{{int:emailuser}}\" su {{SITENAME}}.",
        "usermessage-summary": "Messaggio di sistema",
        "usermessage-editor": "Messaggero di sistema",
        "usermessage-template": "MediaWiki:MessaggioUtente",
        "watchlistanontext": "Per visualizzare e modificare l'elenco degli osservati speciali è necessario eseguire l'accesso.",
        "watchnologin": "Accesso non effettuato",
        "addwatch": "Aggiungi agli osservati speciali",
-       "addedwatchtext": "La pagina \"[[:$1]]\" è stata aggiunta alla propria [[Special:Watchlist|lista degli osservati speciali]].\nD'ora in poi, le modifiche apportate alla pagina e alla sua discussione verranno elencate in quella sede.",
+       "addedwatchtext": "\"[[:$1]]\" e la sua pagina di discussione sono state aggiunte alla propria [[Special:Watchlist|lista degli osservati speciali]].",
        "addedwatchtext-short": "La pagina \"$1\" è stata aggiunta alla propria lista degli osservati speciali.",
        "removewatch": "Rimuovi dagli osservati speciali",
-       "removedwatchtext": "La pagina \"[[:$1]]\" è stata rimossa dalla propria [[Special:Watchlist|lista degli osservati speciali]].",
+       "removedwatchtext": "\"[[:$1]]\" e la sua pagina di discussione sono state rimosse dalla propria [[Special:Watchlist|lista degli osservati speciali]].",
        "removedwatchtext-short": "La pagina \"$1\" è stata rimossa dalla propria lista degli osservati speciali.",
        "watch": "Segui",
        "watchthispage": "Segui questa pagina",
        "undeletepagetext": "{{PLURAL:$1|La pagina indicata di seguito è stata cancellata, ma è ancora in archivio e pertanto può essere recuperata|Le pagine indicate di seguito sono state cancellate, ma sono ancora in archivio e pertanto possono essere recuperate}}. L'archivio può essere svuotato periodicamente.",
        "undelete-fieldset-title": "Ripristina versioni",
        "undeleteextrahelp": "Per recuperare l'intera cronologia della pagina, lasciare tutte le caselle deselezionate e fare clic su '''''{{int:undeletebtn}}'''''.\nPer effettuare un ripristino selettivo, selezionare le caselle corrispondenti alle versioni da ripristinare e fare clic su '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "{{PLURAL:$1|Una versione|$1 versioni}} in archivio",
+       "undeleterevisions": "{{PLURAL:$1|Una versione cancellata|$1 versioni cancellate}}",
        "undeletehistory": "Recuperando questa pagina, tutte le sue versioni saranno ripristinate nella relativa cronologia.\nSe dopo la cancellazione è stata creata una nuova pagina con lo stesso titolo, le versioni recuperate saranno inserite nella cronologia precedente.",
        "undeleterevdel": "Il ripristino non verrà effettuato se determina la cancellazione parziale della versione attuale della pagina o del file interessato. In tal caso, è necessario rimuovere il segno di spunta o l'oscuramento dalle versioni cancellate più recenti.",
        "undeletehistorynoadmin": "Questa pagina è stata cancellata.\nIl motivo della cancellazione è mostrato qui sotto, assieme ai dettagli dell'utente che ha modificato questa pagina prima della cancellazione.\nIl testo contenuto nelle versioni cancellate è disponibile solo agli amministratori.",
        "special-characters-title-endash": "lineetta enne",
        "special-characters-title-emdash": "lineetta emme",
        "special-characters-title-minus": "segno meno",
+       "mw-widgets-dateinput-no-date": "Nessuna data selezionata",
        "mw-widgets-dateinput-placeholder-day": "AAAA-MM-GG",
        "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
        "mw-widgets-titleinput-description-new-page": "questa pagina non esiste ancora",
index 7060214..acbffe3 100644 (file)
        "createacct-benefit-body2": "{{PLURAL:$1|ページ}}",
        "createacct-benefit-body3": "最近の{{PLURAL:$1|投稿者数}}",
        "badretype": "入力したパスワードが一致しません。",
+       "usernameinprogress": "この利用者名のためのアカウント作成は、すでに進行中です。お待ちください。",
        "userexists": "入力した利用者名は既に使用されています。\n別の利用者名を指定してください。",
        "loginerror": "ログインのエラー",
        "createacct-error": "アカウント作成エラー",
        "rcshowhidemine": "自分の編集を$1",
        "rcshowhidemine-show": "表示",
        "rcshowhidemine-hide": "非表示",
-       "rcshowhidecategorization": "$1 ページ カテゴリ化",
-       "rcshowhidecategorization-show": "表示",
-       "rcshowhidecategorization-hide": "非表示",
        "rclinks": "最近 $2 日間の更新を最大 $1 件表示<br />$3",
        "diff": "差分",
        "hist": "履歴",
        "upload-too-many-redirects": "そのURLに含まれるリダイレクトが多すぎます",
        "upload-http-error": "HTTP エラー発生: $1",
        "upload-copy-upload-invalid-domain": "このドメインからのアップロードは許可されていません。",
+       "upload-dialog-title": "ファイルをアップロード",
+       "upload-dialog-error": "エラーが発生しました",
+       "upload-dialog-warning": "警告",
        "upload-dialog-button-cancel": "中止",
        "upload-dialog-button-done": "完了",
        "upload-dialog-button-save": "保存",
        "emailuser": "この利用者にメールを送信",
        "emailuser-title-target": "この{{GENDER:$1|利用者}}にメールを送信",
        "emailuser-title-notarget": "利用者にメールを送信",
-       "emailpage": "利用者にメールを送信",
        "emailpagetext": "以下のフォームを使用してこの{{GENDER:$1|利用者}}にメールを送信できます。\n「差出人」として、[[Special:Preferences|利用者の個人設定]]で入力したメールアドレスが設定されます。これにより、受信者があなたに直接返信できるようになります。",
        "defemailsubject": "{{SITENAME}} 利用者「$1」からのメール",
        "usermaildisabled": "利用者メール機能は無効です",
        "emailccsubject": "$1 に送信したメールの控え: $2",
        "emailsent": "メールを送信しました",
        "emailsenttext": "メールを送信しました。",
-       "emailuserfooter": "このメールは$1から$2へ、{{SITENAME}}の「{{int:emailpage}}」機能で送信されました。",
+       "emailuserfooter": "このメールは$1から$2へ、{{SITENAME}}の「{{int:emailuser}}」機能で送信されました。",
        "usermessage-summary": "システムメッセージを残す。",
        "usermessage-editor": "システムメッセンジャー",
        "watchlist": "ウォッチリスト",
        "sessionfailure-title": "セッションの失敗",
        "sessionfailure": "ログインのセッションに問題が発生しました。\nセッション乗っ取りを防ぐため、操作を取り消しました。\n前のページへ戻って再度読み込んだ後に、もう一度試してください。",
        "changecontentmodel": "ページのコンテント・モデルの変更",
+       "changecontentmodel-legend": "コンテンツモデルを変更",
        "changecontentmodel-title-label": "ページ タイトル",
        "changecontentmodel-model-label": "新しい コンテンツ モデル",
        "changecontentmodel-reason-label": "理由:",
        "tags-deactivate-reason": "理由:",
        "tags-deactivate-not-allowed": "タグ「$1」は無効化できません。",
        "tags-deactivate-submit": "無効化",
+       "tags-apply-no-permission": "あなたは変更と同時に変更タグを適応する権限がありません。",
        "tags-apply-not-allowed-one": "タグ \"$1\" の手動適用は認められていません。",
        "tags-apply-not-allowed-multi": "以下の {{PLURAL:$2|タグ}} は手動適用が認められていません: $1",
        "tags-update-no-permission": "あなたには個々の版または記録項目のタグの追加または除去を行う権限はありません。",
index 011a9fb..8b1a04d 100644 (file)
                        "Teak",
                        "Urhixidur",
                        "아라",
-                       "SalemB"
+                       "SalemB",
+                       "Mezgoug"
                ]
        },
-       "tog-underline": "Derrer izdayen:",
+       "tog-underline": "Aderrer n yezdayen:",
        "tog-hideminor": "Ffer ibeddlen ifessasen deg yibeddlen imaynuten",
        "tog-hidepatrolled": "Ffer ibeddlen iεessan deg yibeddlen imaynuten",
        "tog-newpageshidepatrolled": "Ffer isebtaren iɛessan gar umuɣ n isebtaren imaynuten",
        "emailuser": "Azen e-mail i wemseqdac-agi",
        "emailuser-title-target": "Ceggaɛ tirawt i {{GENDER:$1|aseqdac agi|taseqdact agi}}",
        "emailuser-title-notarget": "Ceggaɛ tirawt i useqdac",
-       "emailpage": "Ceggaɛ tirawt i useqdac",
        "emailpagetext": "Tzemreḍ ad seqdeceḍ tiferkit ddaw agi iwakken ad ceggɛeḍ tirawt i {{GENDER:$1|umseqdac|tamseqdact}} agi.\nTansa e-mail id ekfeḍ deg [[Special:Preferences|iɣewwaren inek/inem]] ad tban deg urti \"Amceggaɛ\" n izen ; akka, anermas ad yezmer ak/akem yefk tiririt.",
        "defemailsubject": "{{SITENAME}} tirawt n useqdac « $1 »",
        "usermaildisabled": "Aceggaɛ n tira gar iseqdacen yensa",
index 2e1162c..12848c4 100644 (file)
        "emailuser": "Қатысушыға хат жазу",
        "emailuser-title-target": "Бұл {{GENDER:$1|қатысушы}} email-ы",
        "emailuser-title-notarget": "Қатысушы е-поштасы",
-       "emailpage": "Қатысушыға хат жазу",
        "emailpagetext": "Төмендегі пішін арқылы бұл {{GENDER:$1|қатысушыға}} е-пошта хабарламасын жөнелтуге болады.\n[[Special:Preferences|Қатысушы баптауыңызда]] енгізген е-пошта мекенжайыңыз «Кімнен» деген бас жолағында көрінеді, сондықтан хат алушысы тура жауап бере алады.",
        "defemailsubject": "«$1» есімді қатысушының {{SITENAME}} е-поштасының хаты",
        "usermaildisabled": "Қатысушының электронды поштасы қосылмаған",
        "emailccsubject": "$1 дегенге хатыңыздың көшірмесі: $2",
        "emailsent": "Хат жөнелтілді",
        "emailsenttext": "Е-пошта хатыңыз жөнелтілді.",
-       "emailuserfooter": "Бұл электронды хатты {{SITENAME}} сайтындағы «{{int:emailpage}}» функцияцы арқылы $1 деген $2 дегенге жіберген.",
+       "emailuserfooter": "Бұл электронды хатты {{SITENAME}} сайтындағы «{{int:emailuser}}» функцияцы арқылы $1 деген $2 дегенге жіберген.",
        "usermessage-summary": "Жүйе хабарламасы қалдырылуда.",
        "usermessage-editor": "Жүйе мессенжері",
        "watchlist": "Бақылау тізімі",
        "tooltip-whatlinkshere-invert": "Бұл белгіні қойсаңыз таңдалған есім кеңістігіндегі беттердегі сілтемелерді жасырады.",
        "namespace_association": "Қатысты есім аясы",
        "tooltip-namespace_association": "Бұл белгіні қойсаңыз кейде таңдалған есім кеңістігіне қатысты талқылау немесе бастауыш есім кеңістігіндегі өзгерістер қосылып көрсетіледі",
-       "blanknamespace": "Ð\9dегÑ\96згÑ\96 Ð±ÐµÑ\82Ñ\82еÑ\80ден",
+       "blanknamespace": "Ð\9dегÑ\96згÑ\96 Ð±ÐµÑ\82Ñ\82еÑ\80дегÑ\96",
        "contributions": "{{GENDER:$1|Қатысушы}} үлестері",
        "contributions-title": "$1 есімді қатысушының үлесі",
        "mycontris": "Үлесім",
index 208744f..666aac4 100644 (file)
@@ -22,7 +22,6 @@
        "tog-hideminor": "លាក់​កំណែប្រែតិចតួច​ពីបញ្ជីបន្លាស់ប្ដូរថ្មីៗ",
        "tog-hidepatrolled": "លាក់​កំណែប្រែ​ដែល​បាន​ល្បាតពីបញ្ជីបន្លាស់ប្ដូរ​ថ្មីៗ",
        "tog-newpageshidepatrolled": "លាក់​ទំព័រ​ដែល​បាន​ល្បាតពី​បញ្ជី​ទំព័រ​ថ្មី",
-       "tog-hidecategorization": "លាក់ការដាក់ចំណាត់ថ្នាក់ក្រុមទំព័រ",
        "tog-extendwatchlist": "ពន្លាត​បញ្ជីតាមដាន​ដើម្បី​បង្ហាញ​គ្រប់​បន្លាស់ប្ដូរទាំងអស់ មិន​មែន​ត្រឹមតែ​បន្លាស់ប្ដូរថ្មី​ៗ​នោះ​ទេ",
        "tog-usenewrc": "បន្លាស់ប្ដូរជាក្រុមតាមទំព័រក្នុងបន្លាស់ប្តូរថ្មីៗនិងបញ្ជីតាមដាន",
        "tog-numberheadings": "ដាក់លេខ​ចំណងជើងរង​ដោយស្វ័យប្រវត្តិ",
@@ -52,7 +51,6 @@
        "tog-watchlisthideliu": "លាក់កំណែប្រែរបស់អ្នកប្រើប្រាស់ដែលបានកត់ឈ្មោះចូលពីបញ្ជីតាមដាន",
        "tog-watchlisthideanons": "លាក់កំណែប្រែរបស់អ្នកប្រើប្រាស់អនាមិកពីបញ្ជីតាមដាន",
        "tog-watchlisthidepatrolled": "លាក់​កំណែប្រែ​ដែល​បាន​ល្បាតពី​បញ្ជីតាមដាន",
-       "tog-watchlisthidecategorization": "លាក់ការដាក់ចំណាត់ថ្នាក់ក្រុមទំព័រ",
        "tog-ccmeonemails": "ផ្ញើច្បាប់ចម្លង​អ៊ីមែលដែលខ្ញុំផ្ញើទៅកាន់អ្នកប្រើប្រាស់ផ្សេងទៀតមកខ្ញុំខ្លួនឯងផងដែរ",
        "tog-diffonly": "កុំបង្ហាញខ្លឹមសារទំព័រនៅពីក្រោមតារាងប្រៀបធៀបចំណុចខុសគ្នា",
        "tog-showhiddencats": "បង្ហាញចំណាត់ថ្នាក់ក្រុមដែលត្រូវបានលាក់",
        "rcshowhidemine": "$1កំណែប្រែរបស់ខ្ញុំ",
        "rcshowhidemine-show": "បង្ហាញ",
        "rcshowhidemine-hide": "លាក់",
-       "rcshowhidecategorization-show": "បង្ហាញ​",
-       "rcshowhidecategorization-hide": "លាក់",
        "rclinks": "បង្ហាញបន្លាស់ប្ដូរ$1ចុងក្រោយធ្វើឡើងក្នុងរយៈពេល$2ថ្ងៃចុងក្រោយ<br />$3",
        "diff": "ប្រៀបធៀប",
        "hist": "ប្រវត្តិ",
        "recentchangeslinked-summary": "នេះជាបញ្ជីបន្លាស់ប្ដូរនានា ដែលត្រូវបានធ្វើឡើងនៅលើទំព័រទាំងឡាយ ដែលមានតំណភ្ជាប់ពីទំព័រកំណត់មួយ(ឬ មានតំណភ្ជាប់ទៅទំព័រ ដែលមានក្នុងចំណាត់ថ្នាក់ក្រុមណាមួយ) នាពេលថ្មីៗនេះ ។ ទំព័រ​នានាក្នុង[[Special:Watchlist|បញ្ជីតាមដាន​របស់អ្នក]]ត្រូវបានសរសេរជា '''អក្សរដិត''' ។",
        "recentchangeslinked-page": "ឈ្មោះទំព័រ៖",
        "recentchangeslinked-to": "បង្ហាញ​បន្លាស់ប្ដូររបស់​ទំព័រដែល​មានតំណភ្ជាប់នឹង​ទំព័រ​ដែល​បាន​ផ្ដល់​ឱ្យ​​វិញ",
-       "recentchanges-page-added-to-category": "[[:$1]] ត្រូវបានបន្ថែមទៅក្នុងចំណាត់ថ្នាក់ក្រុម",
        "upload": "ផ្ទុកឯកសារឡើង",
        "uploadbtn": "ផ្ទុកឯកសារឡើង",
        "reuploaddesc": "ឈប់ផ្ទុកឡើងរួចត្រឡប់ទៅបែបបទផ្ទុកឡើងវិញ។",
        "emailuser": "ផ្ញើអ៊ីមែល​ទៅកាន់​អ្នក​ប្រើប្រាស់នេះ",
        "emailuser-title-target": "ផ្ញើសារទៅកាន់ {{GENDER:$1|អ្នកប្រើប្រាស់}} នេះ",
        "emailuser-title-notarget": "ផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើប្រាស់",
-       "emailpage": "ផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើប្រាស់",
        "emailpagetext": "អ្នក​អាច​ប្រើសំនុំ​បែប​បទ​ខាង​ក្រោម​ក្នុង​ការ​ផ្ញើ​សារ​ជា​អ៊ីមែល​ទៅ​កាន់​{{GENDER:$1|អ្នកប្រើប្រាស់}}នេះ។\nអាសយដ្ឋាន​អ៊ីមែល​ដែល​អ្នក​បាន​វាយ​បញ្ចូល​ក្នុង [[Special:Preferences|ចំណង់ចំណូលចិត្តរបស់អ្នក]]នឹង​បង្ហាញ​ជា​អាសយដ្ឋាន​អ៊ីមែល \"From\" ដូច្នោះ​អ្នក​ទទួល​នឹង​អាច​ឆ្លើយ​តប​ទៅ​អ្នក​វិញ​ដោយ​ផ្ទាល់​។",
        "defemailsubject": "អ៊ីមែល{{SITENAME}}ពី \"$1\"",
        "usermaildisabled": "មិនប្រើអ៊ីមែល",
        "emailccsubject": "ច្បាប់ចម្លងនៃសារដែលអ្នកផ្ញើទៅកាន់ $1 ៖ $2",
        "emailsent": "អ៊ីមែលត្រូវបានផ្ញើទៅហើយ",
        "emailsenttext": "សារអ៊ីមែលរបស់អ្នកត្រូវបានផ្ញើរួចហើយ។",
-       "emailuserfooter": "អ៊ីមែលនេះត្រូវបានផ្ញើដោយ$1ទៅកាន់$2ដោយប្រើមុខងារ\"{{int:emailpage}}\"របស់{{SITENAME}}។",
+       "emailuserfooter": "អ៊ីមែលនេះត្រូវបានផ្ញើដោយ$1ទៅកាន់$2ដោយប្រើមុខងារ\"{{int:emailuser}}\"របស់{{SITENAME}}។",
        "usermessage-summary": "ទម្លាក់សារក្នុងប្រព័ន្ធ",
        "usermessage-editor": "ប្រព័ន្ធផ្ញើសារ",
        "watchlist": "បញ្ជីតាមដាន",
index c2166e3..35d5b26 100644 (file)
@@ -51,7 +51,8 @@
                        "LiteHell",
                        "Lefion",
                        "Leeheonjin",
-                       "Hwangjy9"
+                       "Hwangjy9",
+                       "Kurousagi"
                ]
        },
        "tog-underline": "링크에 밑줄:",
        "no-null-revision": "\"$1\" 문서에 대한 새 빈 판을 만들 수 없습니다",
        "badtitle": "잘못된 제목",
        "badtitletext": "요청한 문서 제목이 잘못되었거나, 비어있거나, 잘못된 인터위키 제목으로 링크했습니다.\n문서 제목에 사용할 수 없는 문자를 사용했을 수 있습니다.",
+       "title-invalid-empty": "요청한 페이지의 제목이 비거나 이름공간밖에 안 들어있습니다.",
+       "title-invalid-utf8": "요청한 페이지 제목에 잘못된 UTF-8 글자가 있습니다.",
+       "title-invalid-interwiki": "요청한 페이지 제목에 제목에는 사용될 수 없는 위키간 링크가 있습니다.",
+       "title-invalid-talk-namespace": "요청한 페이지 제목이 존재하지 않는 토론 문서를 가리킵니다.",
        "title-invalid-characters": "요청된 문서 제목이 잘못된 문자를 포함하고 있습니다: \"$1\".",
        "perfcached": "다음 자료는 캐시된 것이며 최신이 아닐 수 있습니다. 캐시에 최대 {{PLURAL:$1|결과 한 개|결과 $1개}}가 있습니다.",
        "perfcachedts": "다음 자료는 캐시된 것으로, $1에 마지막으로 업데이트되었습니다. 캐시에 최대 {{PLURAL:$4|결과 한 개|결과 $4개}}가 있습니다.",
        "protectedinterface": "이 문서는 이 위키의 소프트웨어 인터페이스에 쓰이는 문서로, 부정 행위를 막기 위해 보호되어 있습니다.\n모든 위키에 대한 번역을 추가하거나 바꾸려면 미디어위키 지역화 프로젝트인 [//translatewiki.net/wiki/Main_Page?setlang=ko translatewiki.net]에 참여하시기 바랍니다.",
        "editinginterface": "<strong>경고:</strong> 소프트웨어 인터페이스에 쓰이는 문서를 고치고 있습니다.\n이 문서에 있는 내용을 바꾸면 이 위키에 있는 모든 사용자에게 영향을 끼칩니다.",
        "translateinterface": "모든 위키를 위해 번역을 추가하거나 바꾸려면, 미디어위키 지역화 프로젝트인 [//translatewiki.net/ translatewiki.net]을 사용해 주시기 바랍니다.",
-       "cascadeprotected": "이 문서는 다음 \"연쇄적\" 보호가 걸린 {{PLURAL:$1|문서}}에 포함되어 있어 함께 보호됩니다:\n$2",
+       "cascadeprotected": "이 문서는 다음 \"연쇄적\" 보호가 걸린 {{PLURAL:$1|문서|문서들}}에 포함되어 있어 함께 보호됩니다:\n$2",
        "namespaceprotected": "<strong>$1</strong> 이름공간의 문서를 편집할 수 있는 권한이 없습니다.",
        "customcssprotected": "여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 이 CSS 문서를 편집할 수 없습니다.",
        "customjsprotected": "여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 이 자바스크립트 문서를 편집할 수 없습니다.",
        "createacct-benefit-body2": "{{PLURAL:$1|문서}}",
        "createacct-benefit-body3": "최근 {{PLURAL:$1|기여자}}",
        "badretype": "입력한 비밀번호가 일치하지 않습니다.",
+       "usernameinprogress": "이 사용자 이름에 대한 계정 생성이 이미 시작되었습니다. 기다려 주세요.",
        "userexists": "입력한 사용자 계정 이름이 이미 사용되고 있습니다.\n다른 이름을 선택하세요.",
        "loginerror": "로그인 오류",
        "createacct-error": "계정 만들기 오류",
        "changeemail": "이메일 주소 바꾸기",
        "changeemail-text": "이메일 주소를 바꾸려면 이 양식을 채우세요. 이 바뀜을 확인하기 위해 비밀번호를 입력해야 합니다.",
        "changeemail-no-info": "이 특수 문서에 직접 접근하려면 반드시 로그인해야 합니다.",
-       "changeemail-oldemail": "현재 이메일 주소 :",
+       "changeemail-oldemail": "현재 이메일 주소:",
        "changeemail-newemail": "새 이메일 주소:",
        "changeemail-none": "(없음)",
        "changeemail-password": "{{SITENAME}} 비밀번호:",
        "rcshowhidemine": "내 편집을 $1",
        "rcshowhidemine-show": "보이기",
        "rcshowhidemine-hide": "숨기기",
-       "rcshowhidecategorization-show": "보이기",
-       "rcshowhidecategorization-hide": "숨기기",
        "rclinks": "최근 $2일간의 $1개 바뀐 문서 보기<br />$3",
        "diff": "차이",
        "hist": "역사",
        "boteditletter": "봇",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|사용자}} $1명이 주시하고 있음]",
        "rc_categories": "다음 분류로 제한 (\"|\"로 구분):",
-       "rc_categories_any": "모두",
+       "rc_categories_any": "선택된 것 중 아무거나",
        "rc-change-size-new": "바꾼 후 $1 {{PLURAL:$1|바이트}}",
        "newsectionsummary": "/* $1 */ 새 문단",
        "rc-enhanced-expand": "자세한 내용 보기",
        "recentchangeslinked-summary": "지정된 문서를 가리키는 문서(또는 지정된 분류에 들어 있는 문서)에 대한 최근에 바뀐 목록입니다.\n[[Special:Watchlist|주시문서 목록]]에 있는 문서는 <strong>굵게</strong> 나타납니다.",
        "recentchangeslinked-page": "문서 이름:",
        "recentchangeslinked-to": "해당 문서를 가리키는 문서의 바뀜 보기",
-       "recentchanges-page-added-to-category": "[[:$1]]이(가) 분류에 추가되었습니다",
-       "recentchanges-page-removed-from-category": "[[:$1]]이(가) 분류에서 제거되었습니다",
        "upload": "파일 올리기",
        "uploadbtn": "파일 올리기",
        "reuploaddesc": "올리기를 취소하고 올리기 양식으로 돌아가기",
        "upload-copy-upload-invalid-domain": "이 도메인에 속하지 않는 웹사이트의 파일을 올릴 수 없습니다.",
        "upload-dialog-title": "파일 올리기",
        "upload-dialog-error": "오류가 발생했습니다",
+       "upload-dialog-warning": "경고가 일어났습니다",
        "upload-dialog-button-cancel": "취소",
        "upload-dialog-button-done": "완료",
        "upload-dialog-button-save": "저장",
        "upload-dialog-button-upload": "올리기",
+       "upload-dialog-label-select-file": "파일을 선택해주세요.",
        "upload-dialog-label-infoform-title": "자세한 사항",
        "upload-dialog-label-infoform-name": "이름",
        "upload-dialog-label-infoform-description": "설명",
+       "upload-dialog-label-usage-title": "사용",
        "upload-dialog-label-usage-filename": "파일 이름",
        "backend-fail-stream": "\"$1\" 파일을 스트림할 수 없습니다.",
        "backend-fail-backup": "\"$1\" 파일을 백업할 수 없습니다.",
        "emailuser": "이메일 보내기",
        "emailuser-title-target": "이 {{GENDER:$1|사용자}}에게 이메일 보내기",
        "emailuser-title-notarget": "사용자에게 이메일 보내기",
-       "emailpage": "사용자에게 이메일 보내기",
        "emailpagetext": "이 {{GENDER:$1|사용자}}가 환경 설정에 올바른 이메일 주소를 적었다면, 아래 양식을 통해 이메일을 보낼 수 있습니다.\n이메일을 받은 사용자가 바로 답장할 수 있도록 하기 위해 [[Special:Preferences|사용자 환경 설정]]에 적은 이메일 주소가 \"보내는 사람\" 정보에 들어갑니다. 따라서 받는 사람이 당신에게 직접 답장을 보낼 수 있습니다.",
        "defemailsubject": "\"$1\" 사용자가 보낸 {{SITENAME}} 이메일",
        "usermaildisabled": "사용자 이메일 비활성화됨",
        "emailccsubject": "$1에게 보낸 메시지의 복사본: $2",
        "emailsent": "이메일 보냄",
        "emailsenttext": "이메일을 보냈습니다.",
-       "emailuserfooter": "이 이메일은 {{SITENAME}}의 $1 사용자가 $2 사용자에게 \"{{int:emailpage}}\" 기능을 통해 보냈습니다.",
+       "emailuserfooter": "이 이메일은 {{SITENAME}}의 $1 사용자가 $2 사용자에게 \"{{int:emailuser}}\" 기능을 통해 보냈습니다.",
        "usermessage-summary": "시스템 메시지 남기기",
        "usermessage-editor": "시스템 메신저",
        "usermessage-template": "MediaWiki:UserMessage",
        "protect-locked-blocked": "차단된 동안에는 보호 설정을 바꿀 수 없습니다.\n'''$1''' 문서의 보호 설정은 다음과 같습니다:",
        "protect-locked-dblock": "데이터베이스가 잠겨 문서 보호 설정을 바꿀 수 없습니다.\n'''$1''' 문서의 현재 설정은 다음과 같습니다:",
        "protect-locked-access": "문서 보호 수준을 바꿀 권한이 없습니다.\n'''$1''' 문서의 권한은 다음과 같습니다.",
-       "protect-cascadeon": "다음 {{PLURAL:$1|문서}}에 연쇄적 보호가 작동하고 있어 그 문서에 속한 이 문서도 현재 보호됩니다.\n이 문서의 보호 설정을 바꾸는 것은 연쇄적 보호에는 영향을 주지 않습니다.",
+       "protect-cascadeon": "다음 {{PLURAL:$1|문서|문서들}}에 연쇄적 보호가 작동하고 있어 그 문서에 속한 이 문서도 현재 보호됩니다.\n이 문서의 보호 설정을 바꾸는 것은 연쇄적 보호에는 영향을 주지 않습니다.",
        "protect-default": "모든 사용자에게 허용",
        "protect-fallback": "\"$1\" 권한의 사용자만 허용",
        "protect-level-autoconfirmed": "자동 인증된 사용자만 허용",
        "undeletepagetext": "다음 {{PLURAL:$1|문서는 삭제되었지만|문서 $1개는 삭제되었지만}} 아직 보관되어 있고 되살릴 수 있습니다.\n보관된 문서는 주기적으로 삭제될 것입니다.",
        "undelete-fieldset-title": "문서 되살리기",
        "undeleteextrahelp": "문서 역사 전체를 되살리려면 모든 체크박스의 선택을 해제하고 '''{{int:undeletebtn}}'''를 누르세요.\n특정한 버전만 되살리려면 되살리려는 버전을 선택하고 '''{{int:undeletebtn}}'''를 누르세요.",
-       "undeleterevisions": "{{PLURAL:$1|판}} $1개가 보존되어 있습니다",
+       "undeleterevisions": "{{PLURAL:$1|판|판들}} $1개가 보존되어 있습니다",
        "undeletehistory": "문서를 되살리면 모든 역사가 같이 복구됩니다.\n문서가 삭제된 뒤 같은 이름의 문서가 만들어졌다면, 복구되는 역사는 지금 역사의 과거 부분에 나타날 것입니다.",
        "undeleterevdel": "복구하려는 문서의 최신판이 삭제되어 있는 경우 문서를 되살릴 수 없습니다.\n이러한 경우 삭제된 최신판 문서의 확인 상자를 선택 해제하거나 숨김을 해제해야 합니다.",
        "undeletehistorynoadmin": "이 문서는 삭제되었습니다.\n삭제된 이유와 삭제되기 전에 이 문서를 편집한 사용자가 아래에 나와 있습니다.\n삭제된 문서의 내용을 보려면 관리자 권한이 필요합니다.",
        "htmlform-cloner-create": "더 추가",
        "htmlform-cloner-delete": "제거",
        "htmlform-cloner-required": "적어도 하나의 값이 필요합니다.",
+       "htmlform-title-badnamespace": "[[:$1]] 문서는 \"{{ns:$2}}\" 이름공간에 없습니다.",
        "htmlform-title-not-creatable": "\"$1\"은 만들 수 없는 문서 제목입니다.",
        "htmlform-title-not-exists": "[[:$1]] 문서는 존재하지 않습니다.",
        "htmlform-user-not-exists": "<strong>$1</strong> 문서는 존재하지 않습니다.",
        "logentry-block-reblock": "$1 {{GENDER:$2|사용자가}} {{GENDER:$4|$3}} 사용자의 차단을 $5 $6 설정으로 변경했습니다.",
        "logentry-suppress-block": "$1 {{GENDER:$2|사용자가}} {{GENDER:$4|$3}} 사용자를 $5 $6 설정으로 차단했습니다.",
        "logentry-suppress-reblock": "$1 {{GENDER:$2|사용자가}} {{GENDER:$4|$3}} 사용자의 차단을 $5 $6 설정으로 변경했습니다.",
-       "logentry-import-upload": "$1 사용자가 $3 파일 올리기로 {{GENDER:$2|가져왔습니다}}",
+       "logentry-import-upload": "$1 사용자가 $3 문서를 파일 올리기로 {{GENDER:$2|가져왔습니다}}",
        "logentry-import-interwiki": "$1 사용자가 $3을 다른 위키에서 {{GENDER:$2|가져왔습니다}}",
        "logentry-merge-merge": "$1 사용자가 $3 문서를 $4 안에 {{GENDER:$2|병합했습니다}} (판은 $5까지)",
        "logentry-move-move": "$1 사용자가 $3 문서를 $4 문서로 {{GENDER:$2|옮겼습니다}}",
        "logentry-newusers-create2": "$1 사용자가 $3 사용자 계정을 {{GENDER:$2|만들었습니다}}",
        "logentry-newusers-byemail": "$3 사용자 계정을 $1님이 {{GENDER:$2|만들었고}} 비밀번호는 이메일로 보냈습니다",
        "logentry-newusers-autocreate": "$1 사용자 계정을 자동으로 {{GENDER:$2|만들었습니다}}",
+       "logentry-protect-move_prot": "$1 사용자가 보호 설정을 $4에서 $3으로 {{GENDER:$2|옮겼습니다}}",
        "logentry-rights-rights": "$1 사용자가 $3 사용자의 권한을 $4에서 $5(으)로 {{GENDER:$2|바꾸었습니다}}",
        "logentry-rights-rights-legacy": "$1 사용자가 $3 사용자의 권한을 {{GENDER:$2|바꾸었습니다}}",
        "logentry-rights-autopromote": "$1 사용자의 권한을 자동적으로 $4에서 $5으로 {{GENDER:$2|바꾸었습니다}}",
index c726976..f108e80 100644 (file)
        "december-date": "$1. Dezämber",
        "pagecategories": "{{PLURAL:$1|Saachjropp|Saachjroppe|nix}}",
        "category_header": "Atikkele en dä Saachjropp „$1“",
-       "subcategories": "Ungerjruppe",
+       "subcategories": "Ongerjroppe",
        "category-media-header": "Dateije en dä Saachjropp „$1“",
        "category-empty": "''En dä Saachjropp heh sin kein Sigge un kein Datteije.''",
        "hidden-categories": "Verschtoche Saachjropp{{PLURAL:$1||e|e }}",
        "hidden-category-category": "Verschtoche Saachjroppe",
-       "category-subcat-count": "En dä Saachrupp heh {{PLURAL:$2|es ein Ungerjrupp dren:|sin $2 Ungerjruppe dren, {{PLURAL:$1|un dovun weed heh nur ein|un dovun weede $1 heh|ävver dovun weed heh keine}} aanjezeich:|sinn_er kein Ungerjruppe dren.}}",
+       "category-subcat-count": "En dä Saachjropp heh {{PLURAL:$2|es ein Ongerjropp dren:|sin $2 Ongerjroppe dren, {{PLURAL:$1|un dovun weed heh nur ein|un dovun wehde $1 heh|ävver dovun weed heh keine}} aanjezeijsch:|sinn_er kein Ongerjroppe dren.}}",
        "category-subcat-count-limited": "En dä Saachrupp heh {{PLURAL:$1|es ein Ungerjrupp dren:|sin $1 Ungerjruppe dren:|sin kein Ungerjruppe dren.}}",
        "category-article-count": "En dä Saachjropp heh {{PLURAL:$2|es ein Sigg dren:|sin $2 Sigge dren, {{PLURAL:$1|un dovun weed heh nur ein|un dovun weede $1 heh|ävver dovun weed heh keine}} aanjezeijsch:|sin kein Sigge dren.}}",
        "category-article-count-limited": "En dä Saachrupp heh {{PLURAL:$1|es ein Sigg dren:|sin $1 Sigge dren:|es kein Sigg dren.}}",
        "history": "Väsjohne",
        "history_short": "Väsjohne",
        "updatedmarker": "(jeändert)",
-       "printableversion": "För ze Drocke",
+       "printableversion": "För ze Dröcke",
        "permalink": "Ne Permalink noh heh",
        "print": "Drocke",
        "view": "Beloore",
        "gender-female": "Dat Su-wi-De-heiß schriiv heh em Wiki met.",
        "prefs-help-gender": "* Moß mer nit aanjävve, un dat kritt de janne Welt ze sinn, nit nur Do allein.",
        "email": "<i lang=\"en\">e-mail</i>",
-       "prefs-help-realname": "Dinge rechteje Nahme kanns De fott lohße.\nWann De en ävver nenne wells, dann kann dä jebruch weede, öm Ding Beidrähch domet ze schmöcke.",
+       "prefs-help-realname": "Dinge rechteje Nahme kanns De fott lohße.\nWann De en ävver nenne wells, dann kann dä jebruch wähde, öm Ding Beijdrähschdomet ze schmöke.",
        "prefs-help-email": "Ding <i lang=\"en\">e-mail</i> Adress - kanns De fottlooße, un se es för Andre nit ze sinn - mäht et ävver müjjelich, Der e neu Passwoot ze schecke, wann De et ens verjäße häß.",
        "prefs-help-email-others": "Do kannß och zohlohße, dat mer Der domet övver Ding Metmaacherklaafsigg en <i lang=\"en\">e-mail</i> schecke kann. Esu künne ander Metmaacher met Der en Kontak kumme, ohne dat se Dinge Name oder Ding <i lang=\"en\">e-Mail</i> Adress kenne mööte.",
        "prefs-help-email-required": "Do moß en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß aanjävve.",
        "unusedtemplates": "Schablohne uder Bauschteijn, di nit jebruch wähde",
        "unusedtemplatestext": "Hee sin all de Schablohne opjeleß, di em Appachtameng „{{ns:template}}“ sin, di nit en ander Sigge enjeföhsch wähde. Ih De jet dovun fottschmiiß, dängk drahn, se künnte och op en ander Aat jebruch wähde, un luhr Der dä iehr andere Lengks aan!",
        "unusedtemplateswlh": "ander Lengks",
-       "randompage": "Zofällije Sigg",
+       "randompage": "En zohfälleje Sigg",
        "randompage-nopages": "En {{PLURAL:$2|dem Appachtemang|dä Appachtemangs|keinem Appachtemang}} „$1“ sin ja kein Sigge dren.",
        "randomincategory": "En zohfälleje Sigg us ener Saachjropp",
        "randomincategory-invalidcategory": "„$1“ es keine jölteje Nahme för en Saachjropp.",
        "emailuser": "E-mail aan dä Metmaacher",
        "emailuser-title-target": "<i lang=\"en\">E-mail</i> aan {{GENDER:$1|dä Metmaacher|di Metmaacherėn|dä Metmaacher|di Metmaacherėn|dä Metmaacher}} $1",
        "emailuser-title-notarget": "Verschegg en <i lang=\"en\">e-mail</i> aan ene Metmaacher",
-       "emailpage": "Verscheck <i lang=\"en\">e-mail</i> aan ene Metmaacher",
        "emailpagetext": "Wann {{GENDER:$1|dä Metmaacher heh|dat heh|heh dä Metmaacher|sei|dat heh}} en Adräß för sing <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>aanjejovve hätt en singe Enstellunge, un di deihd et och, dann kanns De met däm Fomular heh unge en einzel <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> aan {{GENDER:$1|inn|it|dä Metmaacher|heh di Metmaacherėn|et}} schecke.\n\nDing <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß, di De en [[Special:Preferences|Ding eije Enstellunge]] aanjejovve häs, di weed als em Afsender sing Adräß enjedrare.\nDomet kann, wä di <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> kritt, drop antwoote, un di Antwood jeiht tirek aan Desch.\nAlles klor?",
        "defemailsubject": "e-mail fum $1 {{GRAMMAR:fun|{{SITENAME}}}}.",
        "usermaildisabled": "De <i lang=\"en\">e-mail</i> zwesche Metmaachere es ußjeschalt",
        "emailccsubject": "En Kopie vun Dinger E-Mail aan $1: $2",
        "emailsent": "De <i lang=\"en\">e-mail</i> es ongerwähs",
        "emailsenttext": "Ding E-Mail es jetz lossjescheck woode.",
-       "emailuserfooter": "Hee di e-mail hät dä „$1“ an dä „$2“ jescheck, un doför {{GRAMMAR:en dative|{{SITENAME}}}} dat „{{int:emailpage}}“ jebruch.",
+       "emailuserfooter": "Hee di e-mail hät dä „$1“ an dä „$2“ jescheck, un doför {{GRAMMAR:en dative|{{SITENAME}}}} dat „{{int:emailuser}}“ jebruch.",
        "usermessage-summary": "En Nohreesch vum Wiki afjelivvert.",
        "usermessage-editor": "Name vum Metmaacher för de Täxte un Nohreshte vum Wiki ze beärbeide",
        "watchlist": "ming Oppaßleß",
        "blanknamespace": "(Atikkele)",
        "contributions": "{{GENDER:$1|Däm Metmaacher|Däm|Däm Metmaacher|Dä Metmaacherėn|Däm}} $1 {{GENDER:$1|singe|singe|singe|iere|singe}} Beijdrähsch",
        "contributions-title": "Beijdrähsch fum $1",
-       "mycontris": "Beidrähch",
+       "mycontris": "Beijdrähsch",
        "contribsub2": "För {{GENDER:$3|dä|et|dä Metmaacher|de|dat}} $1: $1 ($2)",
        "contributions-userdoesnotexist": "Ene Metmaacher mem Nahme „$1“ ham_mer nit.",
        "nocontribs": "Mer han kein Änderunge jefonge, en de Logböcher, di do paße dähte.",
        "specialpages-group-media": "Dateije — Huhlahde un Opleßte",
        "specialpages-group-users": "Metmaacher un denne ier Rääschte",
        "specialpages-group-highuse": "Öff jebruch…",
-       "specialpages-group-pages": "Siggeliste",
+       "specialpages-group-pages": "Siggeleste",
        "specialpages-group-pagetools": "Werrekzüch för Sigge",
        "specialpages-group-wiki": "Werrekzüch un Daate vum Syßteem",
        "specialpages-group-redirects": "{{int:nstab-special}}e, di ömleide, söhke, un fenge",
index 70d1536..be5d028 100644 (file)
@@ -22,7 +22,6 @@
        "tog-hideminor": "Kleng Ännerungen an de rezenten Ännerunge verstoppen",
        "tog-hidepatrolled": "Nogekuckt Ännerungen an de \"Rezenten Ännerungen\" verstoppen",
        "tog-newpageshidepatrolled": "Nogekuckt Säiten op der Lëscht vun den \"Neie Säite\" verstoppen",
-       "tog-hidecategorization": "Kategorisatioun vu Säite verstoppen",
        "tog-extendwatchlist": "Iwwerwaachungslëscht op all Ännerungen ausbreeden, net nëmmen op déi rezentst",
        "tog-usenewrc": "Rezent Ännerungen an Iwwerwaachungslëscht pro Säit weisen",
        "tog-numberheadings": "Iwwerschrëften automatesch numeréieren",
@@ -52,7 +51,6 @@
        "tog-watchlisthideliu": "Ännerunge vun ugemellte Benotzer verstoppen",
        "tog-watchlisthideanons": "Ännerunge vun anonyme Benotzer (IP-Adressen) verstoppen",
        "tog-watchlisthidepatrolled": "Iwwerkuckten Ännerungen op der Iwwerwaachungslëscht verstoppen",
-       "tog-watchlisthidecategorization": "Kategorisatioun vu Säite verstoppen",
        "tog-ccmeonemails": "Schéck mir eng Kopie vun de Mailen, déi ech anere Benotzer schécken.",
        "tog-diffonly": "Weis bei Versiounsvergläicher just d'Ënnerscheeder an net déi ganz Säit",
        "tog-showhiddencats": "Verstoppt Kategorië weisen",
        "rcshowhidemine": "Meng Ännerunge $1",
        "rcshowhidemine-show": "Weisen",
        "rcshowhidemine-hide": "Verstoppen",
-       "rcshowhidecategorization": "Kategorisatioun vu Säite $1",
-       "rcshowhidecategorization-show": "Weisen",
-       "rcshowhidecategorization-hide": "Verstoppen",
        "rclinks": "Déi lescht $1 Ännerunge vun de leschten $2 Deeg weisen.<br />$3",
        "diff": "Ënnerscheed",
        "hist": "Versiounen",
        "recentchangeslinked-summary": "Dëst ass eng Lëscht mat Ännerunge vu verlinkte Säiten op eng bestëmmte Säit (oder vu Membersäite vun der spezifizéierter Kategorie).\nSäite vun [[Special:Watchlist|Ärer Iwwerwaachungslëscht]] si '''fett''' geschriwwen.",
        "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) {{PLURAL:$2|eng Säit|$2 Säiten}} an d'Kategorie derbäigesat",
-       "recentchanges-page-removed-from-category": "[[:$1]] erausgeholl aus der Kategorie",
-       "recentchanges-page-removed-from-category-bundled": "{{PLURAL:$2|}}[[:$1]] a(n) {{PLURAL:$2|eng Säit|$2 Säiten}} aus der Kategorie erausgeholl",
        "upload": "Eroplueden",
        "uploadbtn": "Fichier eroplueden",
        "reuploaddesc": "Eroplueden ofbriechen an zréck op de Formulaire fir Eropzelueden",
        "emailuser": "Dësem Benotzer eng E-Mail schécken",
        "emailuser-title-target": "{{GENDER:$1|Dëser Benotzerin|Dësem Benotzer}} eng Mail schécken",
        "emailuser-title-notarget": "Dem Benotzer eng E-Mail schécken",
-       "emailpage": "Dem Benotzer eng E-Mail schécken",
        "emailpagetext": "Dir kënnt mat dësem Formulaire {{GENDER:$1|dësem Benotzer}} en E-Mail-Message schécken.\nD'E-Mail-Adress, déi Dir an [[Special:Preferences|Ären Astellungen]] aginn hutt, steet an der \"From\" Adress vun der Mail, sou datt den Destinataire Iech direkt äntwerte kann.",
        "defemailsubject": "{{SITENAME}} E-Mail vum Benotzer \"$1\"",
        "usermaildisabled": "Benotzer E-Mail ausgeschalt",
        "emailccsubject": "Kopie vun denger Noriicht un $1: $2",
        "emailsent": "E-Mail geschéckt",
        "emailsenttext": "Är E-Mail gouf fortgeschéckt.",
-       "emailuserfooter": "Dës E-Mail gouf vum $1 dem $2 geschéckt dobäi gouf d'Funktioun \"{{int:emailpage}}\" op {{SITENAME}} benotzt.",
+       "emailuserfooter": "Dës E-Mail gouf vum $1 dem $2 geschéckt dobäi gouf d'Funktioun \"{{int:emailuser}}\" op {{SITENAME}} benotzt.",
        "usermessage-summary": "Benoriichtegung hannerloossen.",
        "usermessage-editor": "Benoriichtegungs-System",
        "watchlist": "Iwwerwaachungslëscht",
index a8681c1..33bd086 100644 (file)
        "noarticletext": "د ئیسئنیا د ئی بألگؤ نیسئسە یی ڤوجوٙد ناشتە.\nشوما می توٙنیت د[[Special:Search/{{PAGENAME}}|بگردید]] د ئی بألگە یا د بألگە هأنی یا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} د هأنی نە پئی جوری بوٙە]</span>، <span class=\"plainlinks\">[{{fullurl:{{FULLPAGENAME}}|action=edit}} یا ئی بألگە نە ڤیرایئشت بأکیت]</span>.",
        "noarticletext-nopermission": "د ئیسئنیا د ئی بألگؤ نیسئسە یی ڤوجوٙد ناشتە.\nشوما می توٙنیت د[[Special:Search/{{PAGENAME}}|بگردید]] د ئی بألگە یا د بألگە هأنی یا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} د هأنی نە پئی جوری بوٙە]</span>، <span class=\"plainlinks\">[{{fullurl:{{FULLPAGENAME}}|action=edit}}</span>.ڤألی شوما صئلا یە نە کئ ئی بألگە نە راس بأکیت ناریت.",
        "missing-revision": "ڤانئیأری #$1 د بألگە یی کئ نومئش ڤئنە \"{{FULLPAGENAME}}\" ڤوجوٙد نارە.\n\nگاسی سی یئ گئل ڤیرگار ڤئ هئنگوم نأبییە کئ د یئ گئل بألگە پاکسا بییە هوم پئیڤأند بییە رأڤأندیاری بییە.\nگاسی جوزئیات د[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] دیاری بأکأن.",
-       "userpage-userdoesnotexist": "حساÙ\88 Ú©Ø§Ø±Û\8cارÛ\8c\"$1\" Ø«Ù\88ت Ù\86اÙ\85 Ù\86بÛ\8cÙ\87.\nار Ù\85Û\8cÙ\87اÛ\8cت Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Ù\86Ù\87 Ø¨Ø³Ø§Ø²Û\8cتÙ\88 Û\8cا Ù\88Û\8cراÛ\8cشت Ø¨Ú©Û\8cت Û\8cÙ\87 Ú¯Ù\84 Ù\88ارسÛ\8c Ø§Ù\86جÙ\88Ù\85 Ø¨Ø¦Û\8cت.",
+       "userpage-userdoesnotexist": "حئساڤ Ú©Ø§Ø±Û\8cارÛ\8c \"$1\" Ø«Ø£Ú¤Øª Ù\86Ø£Ù\85 Ù\86أبÛ\8cÛ\8cÛ\95.\nأر Ù\85Û\8cھاÛ\8cت Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Ù\86ئ Ø¨Ø£Ø³Ø§Ø²Û\8cت Û\8cا Ú¤Û\8cراÛ\8cئشت Ú©Ø§Ø±Û\8c Ø¨Ø£Ú©Û\8cت Û\8cئ Ú¯Ø¦Ù\84 Ú¤Ø§Ø±Ø¦Ø³Û\8c Ø£Ù\86جÙ\88Ù\85 Ø¨Ø¦Û\8cتÙ\88Ù\99.",
        "userpage-userdoesnotexist-view": "حئساڤ کاریاری \"$1\" ثأڤت نأبییە.",
-       "blocked-notice-logextract": "اÛ\8c Ú©Ø§Ø±Û\8cار Ø§Û\8cسÙ\86Û\8c Ø¯Ø³Ø±Ø³Û\8c Ù\86ارÙ\87.\nآخرÛ\8c Ù¾Ù\87رستÙ\86Ù\88Ù\85Ù\87 Ù\82Ù\84Ù\81 Ù\88رÙ\88دÛ\8c Ø¯ Ù\87ار Ø§Û\8cÚ\86Ù\87 Ø³Û\8c Ø³Ø±Ú\86Ø´Ù\85Ù\87 Ø¢Ù\85ادÙ\87 Ø¨Û\8cÙ\87:",
-       "clearyourcache": "<strong>د ویر داشتویت:</strong> نها اماییه کاری, شات مژبور وه وه کار ونن ویرگه نهو دوارته نیئر خوتو سی دیئن ای آلشتیا بوئیت .\n* <strong>فایرفاکس/ سفری:</strong> بپورنیت ری<em>شیفت</em> اوسه که می پورنیت<em>د نو سوار بوئه</em>یا هنی ری <em>Ctrl-F5</em> بپورنیت یا<em>Ctrl-R</em> (<em>⌘-R</em> د سامونه مک)\n* <strong>گوگل کروم:</ strong>بپورنیت ری <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> یا د سامونه)\n* <strong>اینترنت اکسپلورر:</strong> <em>Ctrl</em> واداریت اوسه که می پورنیت ری <em>Refresh</em>, یل بپورنیت ری<em>Ctrl-F5</em>\n* <strong>اوپرا:</strong> ویرگه نهو نه د <em>اوزاریا→ اولویتیا پاک بکیت</em>",
-       "usercssyoucanpreview": "<strong>نکته:</strong> د دگمه \"{{int:showpreview}}\" سی آزماشت کردن سی اس اس تازه دما اماییه کاری وه کار بیئریت.",
-       "userjsyoucanpreview": "<strong>نکته:</strong> د دگمه \"{{int:showpreview}}\" سی آزماشت کردن دما اماییه کاری جاوا اسکریپت تازه وه کار بیئریت.",
-       "usercsspreview": "<strong>د ویر داشتوئیت که شما فقط می تونیت سی اس اس کاریاری تونه پیش سیل بکیت. وه د ایسنی هنی اماییه نبیه!</strong>",
-       "userjspreview": "<strong>د ویر داشتوئیت که شما فقط می تونیت جاوا اسکریپت کاریاری تونه پیش سیل بکیت. وه د ایسنی هنی اماییه نبیه!</strong>",
-       "sitecsspreview": "<strong>د ویر داشتوئیت که شما فقط می تونیت ای سی اس اس  نه فقط پیش سیل بکیت. وه د ایسنی هنی اماییه نبیه!</strong>",
-       "sitejspreview": "<strong>د ویر داشتوئیت که شما فقط می تونیت ای ای جاوا اسکریپت نه فقط پیش سیل بکیت. وه د ایسنی هنی اماییه نبیه!</strong>",
-       "userinvalidcssjstitle": "<strong>زئنار:</strong> پوسه \"$1\" نیئش.\nسی اس اس جاونه و بلگه یا جاوا اسکریپت  سرون وا حرف کؤچک نه وه کار بسته، همچنو{{ns:کاریار}}:فو/وکتور.سی اس اس چی د ضد{{ns:کاریار}}:فو/وکتور. سی اس اسه.",
+       "blocked-notice-logextract": "ئÛ\8c Ú©Ø§Ø±Û\8cار Ø¯ Ø¦Û\8cسئÙ\86Û\8c Ù\86ئھاگئرÛ\8c Ø¨Û\8cÛ\8cÛ\95.\nآخئرÛ\8c Ù¾Ø¦Ø±Ø¦Ø³ØªÙ\86Ù\88Ù\99Ù\85Û\95 Ù\86ئھاگئرÛ\8c Ú¤Ø§Ù\85Û\8cÙ\86 Û\8cارÛ\8cا Ø¯ Ú¾Ø§Ø± Ø³Û\8c Ø³Ø£Ø±Ú\86ئشÙ\85Û\95 Ø¢Ù\85ادÛ\95 Ú©Ø§Ø±Û\8c Ø¨Û\8cÛ\8cÛ\95:",
+       "clearyourcache": "<strong>د ڤیر داشتوٙیت:</strong> نئها ئمایە کاری،گاسی شوما مأژبوٙر د ڤئ کار ڤأنئن ڤیرگە قام بییە دوڤارتە نییأر خوتوٙ سی دیئن ئی آلئشتکاری بوٙئیت.\n* <strong>فایئرفاکس/ سأفأری:</strong> بأپوٙرنیت ری<em>شیفت</em> ئوٙسئ کئ می پوٙرنیت <em> ڤئ د نۊ سۊڤار موٙە </em>یا ھأنی ری <em>Ctrl-F5</em> بأپوٙرنیت یا<em>Ctrl-R</em> (<em>⌘-R</em> د ساموٙنە مأک)\n* <strong>گوٙگئل کئروم:</ strong>بأپوٙرنیت ری <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> یا د ساموٙنە)\n* <strong>ئینتئرنئت ئکسپئلورئر:</strong> <em>Ctrl</em> نە ڤاداریت ئوٙسئ کئ می پوٙرنیت <em>ری کئلیت رئفرئش</em>،یا ڤاداشتیتە<em>Ctrl-F5</em>\n* <strong>اوپرا:</strong> ڤیرگە قام بییە د <em>أڤزاریا→ ئولأڤی یأتیانە پاکسا بأکیت</em>",
+       "usercssyoucanpreview": "<strong>چی ڤأرتیە گئر:</strong>  دوگمە\"{{int:showpreview}}\" سی ئزماشت کاری سی ئس ئس تازە دئما ئمایە کاری ڤئ کار بئیریت.",
+       "userjsyoucanpreview": "<strong>چی ڤأرتیە گئر:</strong>  دوگمە\"{{int:showpreview}}\" سی ئزماشت کاری جاڤا ئسکئریپت تازە دئما ئمایە کاری ڤئ کار بئیریت.",
+       "usercsspreview": "<strong>د ڤیر داشتوٙئیت کئ شوما فأقأط می توٙنیت سی ئس ئس کاریاری توٙنە پیش سئیل بأکیت. ڤئ ئیسئنی ئمایە نأبییە!</strong>",
+       "userjspreview": "<strong>د ڤیر داشتوٙئیت کئ شوما فأقأط می توٙنیت جاڤا ئسکئریپت کاریاری توٙنە پیش سئیل بأکیت. ڤئ ئیسئنی ئمایە نأبییە!</strong>",
+       "sitecsspreview": "<strong>د ڤیر داشتوٙئیت کئ شوما فأقأط می توٙنیت ئی سی ئس ئس کاریاری توٙنە پیش سئیل بأکیت. ڤئ ئیسئنی ئمایە نأبییە!</strong>",
+       "sitejspreview": "<strong>د ڤیر داشتوٙئیت کئ شوما فأقأط می توٙنیت ئی جاڤا ئسکئریپت کاریاری توٙنە پیش سئیل بأکیت. ڤئ ئیسئنی ئمایە نأبییە!</strong>",
+       "userinvalidcssjstitle": "<strong>زئنار:</strong> پوٙسە \"$1\" نیئش.\nسی ئس ئس جاڤأنە و بألگە یا جاڤا ئسکئریپت سأربألگ ڤا حأرفیا کوچئک نە ڤئ کار گئرئتە، ھأمچئنی {{ns:کاریار}}:فو/ڤئکتور.سی ئس ئس چی د ری ڤئ ری {{ns:کاریار}}:فو/ڤئکتور. سی ئس ئسە.",
        "updated": "(ڤئ هئنگوم سازی بییە)",
        "note": "'''نیسأنئن:'''",
-       "previewnote": "فقط ای پیش سیل د ویرتو با.\nآلشتیاتو هنی اماییه نبیه.",
+       "previewnote": "فأقأط ئی پیش سئیل د ڤیرتوٙ با.\nآلئشت کاریاتوٙ ھأنی ئمایە نأبینە",
        "continue-editing": "رو د راساگە ڤیرایئشت کاری",
-       "previewconflict": "ورگشت پیش سیل د نیسسه د راساگه وارو ویرایشت چی شکل دیار بیین بوئه ار شما وه نه سی اماییه کردن انتخاو بکیت.",
-       "session_fail_preview": "<strong>د Ø¨Ø¯Ø¨Ø®ØªÛ\8c Ù\85ا Ø³Û\8c Û\8cÙ\87 Ú©Ù\87 Ø±Ø³Û\8cÙ\86Ù\87 Û\8cا Ø¬Ù\84سÙ\87 Ù\85Ù\88Ù\86Ù\87 Ø¯ Ø¯Ø³ Ø¯Ø¦Û\8cÙ\85Ù\87 Ù\86Ù\85Û\8c ØªÙ\88Ù\86Û\8cÙ\85 Ú©Ø§Ø± Ù¾Ø±Ø¯Ø§Ø²Ø´Øª Ù\88Û\8cراÛ\8cشت Ø´Ù\85اÙ\86Ù\87 Ø§Ù\86جÙ\88Ù\85 Ø¨Û\8cئÙ\85Ù\88.</strong>\nÙ\84Ø·Ù\81Ù\86 Ù\87Ù\86Û\8c ØªÙ\84اش Ø¨Ú©Û\8cت.\nار Ù\87Ù\86Û\8c Ú©Ø§Ø± Ù\88Ù\87 Ø¯Ø±Ù\88س Ú©Ø§Ø± Ù\86کردØ\8c[[Special:UserLogout|اÙ\88Ù\85ائÙ\86 Ù\88Ù\87 Ø¯Ø±]] Ù\86Ù\87 Ø§Ø²Ù\85اÛ\8cشت Ø¨Ú©Û\8cت Ù\88 Ø¯ Ù\86Ù\88 Ø¨Û\8cاÛ\8cت Ù\88امین.",
-       "session_fail_preview_html": "<strong>د Ø¨Ø¯Ø¨Ø®ØªÛ\8c Ù\85ا Ø³Û\8c Û\8cÙ\87 Ú©Ù\87 Ø±Ø³Û\8cÙ\86Ù\87 Û\8cا Ø¬Ù\84سÙ\87 Ù\85Ù\88Ù\86Ù\87 Ø¯ Ø¯Ø³ Ø¯Ø¦Û\8cÙ\85Ù\87 Ù\86Ù\85Û\8c ØªÙ\88Ù\86Û\8cÙ\85 Ú©Ø§Ø± Ù¾Ø±Ø¯Ø§Ø²Ø´Øª Ù\88Û\8cراÛ\8cشت Ø´Ù\85اÙ\86Ù\87 Ø§Ù\86جÙ\88Ù\85 Ø¨Û\8cئÙ\85Ù\88.</strong>\nÙ\84Ø·Ù\81Ù\86 Ù\87Ù\86Û\8c ØªÙ\84اش Ø¨Ú©Û\8cت.\n\n<em>سÛ\8c Û\8cÙ\87 Ú©Ù\87 {{Ù\86Ù\88Ù\85 Ø¯Û\8cارگÙ\87}} Û\8cÙ\87 Ú¯Ù\84 Ø±Ø¯Û\8cÙ\81 Ø§Ú\86 ØªÛ\8c Ø§Ù\85 Ø§Ù\84 Ú©Ù\86شتگر Ø¨Û\8cÙ\87 Ø¯Ø§Ø±Ù\87Ø\8c Ù¾Û\8cØ´ Ø³Û\8cÙ\84 Ø³Û\8c Û\8cÙ\87 Ú©Ù\87 Ø¯ Ø¯Ø³ Ø­Ù\85Ù\84Ù\87 Û\8cا Ø¬Ø§Ù\88ا Ø§Ø³Ú©Ø±Û\8cÙ¾ Ø¯ Ø§Ù\85Ù\88Ù\86 Ø¨Ø§ Ù\82اÙ\85 Ú©Ø±Ø¯Ù\87 Ø¨Û\8cÙ\87..</em>\n\n<strong>ار Ù\88Ù\87 Ú¯Ø§Øª Ù\82اÙ\86Ù\88Ù\86Û\8c ØªÙ\84اش Ø³Û\8c Ù\88Û\8cراÛ\8cشتÙ\87Ø\8cÙ\84Ø·Ù\81ا Ø¯ Ù\86Ù\88 ØªÙ\84اش Ø¨Ú©Û\8cت.</strong>\nار Ù\87Ù\86Û\8c Ú©Ø§Ø± Ù\88Ù\87 Ø¯Ø±Ù\88س Ú©Ø§Ø± Ù\86کردØ\8c[[Special:UserLogout|اÙ\88Ù\85ائÙ\86 Ù\88Ù\87 Ø¯Ø±]] Ù\86Ù\87 Ø§Ø²Ù\85اÛ\8cشت Ø¨Ú©Û\8cت Ù\88 Ø¯ Ù\86Ù\88 Ø¨Û\8cاÛ\8cت Ù\88امین.",
+       "previewconflict": "ڤئرگأشت پیش سئیل د نیسئسە د راساگە ڤارو ڤیرایئشت کاری چی شئکل دیار بییئن بوٙەأر شوما  ڤئ نە سی ئمایە کئردئن ئنتئخاڤ بأکیت.",
+       "session_fail_preview": "<strong>د Ø¨Ø£Ø®Øª Ú¯Ø£Ù\86 Ø³Û\8c Û\8cÛ\95 Ú©Ø¦ Ø±Ø¦Ø³Û\8cÙ\86Û\95 Û\8cا Ù\86ئشأسجا Ù\86Û\95 Ø¯ Ø¯Ø£Ø³ Ø¯Ø£Ø¦Û\8cÙ\85Û\95 Ù\86ئÙ\85Û\8c ØªÙ\88Ù\99Ù\86Û\8cÙ\85 Ú©Ø§Ø± Ù¾Ø£Ø±Ø¯Ø§Ø²Ø¦Ø´Øª Ú¤Û\8cراÛ\8cئشت Ú©Ø§Ø±Û\8c Ø´Ù\88Ù\85اÙ\86Û\95 Ø£Ù\86جÙ\88Ù\85 Ø¨Ø¦Ù\85Û\8cÙ\86Ù\88Ù\99.</strong>\nÙ\84Ù\88Ø·Ù\81 Ø¨Ø£Ú©Û\8cت Û\8cئ Ú¯Ø¦Ù\84 Ú¾Ø£Ù\86Û\8c ØªØ¦Ù\84اش Ø¨Ø£Ú©Û\8cت.\nأر Ú¾Ø£Ù\86Û\8c Ú¤Ø¦ Ø¯Ù\88رÙ\88س Ú©Ø§Ø± Ù\86أکئردØ\8c[[Special:UserLogout|ئÙ\88Ù\99Ù\85ائÙ\86 Ú¤Ø¦ Ø¯Ø£Ø±]] Ù\86Û\95 Ø¦Ø²Ù\85اÛ\8cئشت Ø¨Ø£Ú©Û\8cت Ù\88 Ø¯ Ù\86Û\8a Ø¨Û\8cائÛ\8cت Ú¤امین.",
+       "session_fail_preview_html": "<strong>د Ø¨Ø£Ø®Øª Ú¯Ø£Ù\86 Ø³Û\8c Û\8cÛ\95 Ú©Ø¦ Ø±Ø¦Ø³Û\8cÙ\86Û\95 Û\8cا Ù\86ئشأسجا Ù\86Û\95 Ø¯ Ø¯Ø£Ø³ Ø¯Ø£Ø¦Û\8cÙ\85Û\95 Ù\86ئÙ\85Û\8c ØªÙ\88Ù\99Ù\86Û\8cÙ\85 Ú©Ø§Ø± Ù¾Ø£Ø±Ø¯Ø§Ø²Ø¦Ø´Øª Ú¤Û\8cراÛ\8cئشت Ú©Ø§Ø±Û\8c Ø´Ù\88Ù\85اÙ\86Û\95 Ø£Ù\86جÙ\88Ù\85 Ø¨Ø¦Ù\85Û\8cÙ\86Ù\88Ù\99.</strong>\n\n\n<em>سÛ\8c Û\8cÛ\95 Ú©Ø¦ {{SITENAME}} Û\8cئ Ú¯Ø¦Ù\84 Ø±Ø£Ú¯ Ø¦Ú\86 ØªÛ\8c Ø¦Ù\85 Ø¦Ù\84 Ú©Ù\88Ù\86ئشتکار Ø¨Û\8cÛ\8cÛ\95 Ø¯Ø§Ø±Û\95Ø\8c Ù¾Û\8cØ´ Ø³Ø¦Û\8cÙ\84 Ø³Û\8c Û\8cÛ\95 Ú©Ø¦ Ø¯ Ø¯Ø£Ø³ Ú\86Ù\88Ù\84 Ú©Ø§Ø±Û\8cا Ø¬Ø§Ú¤Ø§ Ø¦Ø³Ú©Ø¦Ø±Û\8cپت Ù\84Û\8cز Ø¯Ø§Ø´ØªÙ\88Ù\99Û\95 Ù\86ئھÙ\88Ù\99 Ø¨Û\8cÛ\8cÛ\95..</em>\n\nÙ\84Ù\88Ø·Ù\81 Ø¨Ø£Ú©Û\8cت Û\8cئ Ú¯Ø¦Ù\84 Ú¾Ø£Ù\86Û\8c ØªØ¦Ù\84اش Ø¨Ø£Ú©Û\8cت.\nأر Ú¾Ø£Ù\86Û\8c Ú¤Ø¦ Ø¯Ù\88رÙ\88س Ú©Ø§Ø± Ù\86أکئردØ\8c[[Special:UserLogout|ئÙ\88Ù\99Ù\85ائÙ\86 Ú¤Ø¦ Ø¯Ø£Ø±]] Ù\86Û\95 Ø¦Ø²Ù\85اÛ\8cئشت Ø¨Ø£Ú©Û\8cت Ù\88 Ø¯ Ù\86Û\8a Ø¨Û\8cائÛ\8cت Ú¤امین.",
        "token_suffix_mismatch": "<strong>ویرایشتیا شما سی یه که دووارته نئر شما نیسسه یا نقطه نیائن نه د رازینه امنیتی ویرایشت د یک تیچسه.</strong>\nویرایشت سی یه که د خراو بیئن نیسسه بلگه نهاگری با رد بیه.\nای رخ ون د گاتیایی پیش میا که شما د یه گل رسینه جا پروکسی استفاده می کیت.",
        "edit_form_incomplete": "<strong>پاره ای د ویرایشتا وه رسینه جا نمی رسن، هنی وارسی بکیت سی یه که بوینیت ویرایشتیا شما خوئه و هنی تلاش بکیت .</strong>",
        "editing": "د حال و بال ڤیرایئشت $1",
        "recreate-moveddeleted-warn": "'''زنهار شما بلگه ای که وادما پاکسا بیه هنی راس کردیته'''\nشما باید دونسه بایت که آیا هنی سی نها گرتن ویرایشت ای بلگه خوئه.\nپاکسا بیئن و جمشت سی ای بلگه سی فراغتتو آماده بیه:",
        "moveddeleted-notice": "ای بلگه پاکسا بیه.\nپاکسا بین و جمشت ای بلگه سی سرچشمه دئین آماده بیه",
        "log-fulllog": "دیئن هأمە پئهئرستنوٙمە یا",
-       "edit-hook-aborted": "ویرایشت وا قلاو نهاگری بیه.\nهیچ توضیئ سیش نئ.",
+       "edit-hook-aborted": "ڤیرایئشت ڤا قولاڤ نئھاگئری بییە.\nھیچ توضیی سیش نی.",
        "edit-gone-missing": "نبوئه ای بلگه نه وه هنگوم بکیت.\nوه نظر میا که وه پاکسا بیه.",
        "edit-conflict": "ری ڤئ ری کاری د ڤیرایئشت.",
        "edit-no-change": "سی یه که آلشتیا د یه گل نیسسه دروس بیه د ویرایشت شما تیه پوشی بیه.",
        "edit-already-exists": "نبوئه یه گل بلگه تازه راس بکید.\nوه هئیش.",
        "defaultmessagetext": "نیسسه پیغوم پیش فرض",
        "content-failed-to-parse": "د یک تیچیسن چیا مئن $2 د مدل $1:$3",
-       "invalid-content-data": "دÙ\86سÙ\85Ù\86Û\8c Ù\85Û\8cÙ\86Ù\88Ù\86Ù\87 Ù\86اÙ\85عتÙ\88ر",
+       "invalid-content-data": "دÙ\88Ù\86ئسÙ\85Ø£Ù\86Û\8c Ù\85Û\8cÙ\86Ù\88Ù\99Ù\86Û\95 Ù\86ادÛ\8cار",
        "content-not-allowed-here": " مینونه\"$1\" سی بلگه [[$2]] صلا نه دئه بیه",
        "editwarning-warning": "ار ای بلگه نه ول بکیت هر آلشتی که دئیته پاک بوئه.\nار شما هاییت وا مین،شما می تونیت ای زئنار نه د \"{{int:prefs-editing}}\" که ها د بخش اولویتیا شما ناکشتگر بکیت.",
        "editpage-notsupportedcontentformat-title": "شلک مینونه دماگری نبیه",
        "editpage-notsupportedcontentformat-text": "وضع و بار مینونه $1 د مدل مینونه $2 حامین نبوئه.",
-       "content-model-wikitext": "ويكی نیسسه",
-       "content-model-text": "Ù\86Û\8cسسÙ\87 Ø³Ø§Ø¯Ù\87",
-       "content-model-javascript": "جاوا اسكريپت",
+       "content-model-wikitext": "ڤیکی نیسئسە",
+       "content-model-text": "Ù\86Û\8cسئسÛ\95 Ø³Ø§Ø¯Û\95",
+       "content-model-javascript": "جاڤا ئسکئریپت",
        "content-model-css": "سی اس اس",
-       "content-json-empty-object": "سرتاÙ\84 حالی",
-       "content-json-empty-array": "آرایه حالی",
+       "content-json-empty-object": "داسÙ\88Ù\99Ù\86 حالی",
+       "content-json-empty-array": "آرایە حالی",
        "duplicate-args-category": "بلگه یا یی که چک چنه کاریا دو کونه نه د چوئه یا واحونیشو وه کار میئرن",
        "duplicate-args-category-desc": "بلگه یی که آرگومان دوکونه داره چی، <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> یا <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "<strong>زئنار:</strong>ای بلگه مینونه دار واحونی دستوریا مئن اشکافت فره ای هئ.\n\nانازه و باید د کمتر با$2 {{PLURAL:$2|واحونی|واحونیا}}، ایسه {{PLURAL:$1|$1 واحونی|$1 واحونیا}}ئه.",
        "revdelete-concurrent-change": "خطا د قام کردن چیی که ها د ویرگار $2 ساعت $1: وه ویر و باور میا که د او گاتی که شما سی آلشت دئن حال و بار وه سعی می کردیته، حال و بارش وه دس کسی تر آلشت دئه بیه.\nلطفن پهرستنومه یا نه وارسی بکیت.",
        "revdelete-only-restricted": "خطا د قام کردن چیی که ها د ویرگار $2 ساعت $1: شما نیمی تونیت چیانه د ورتیه دیوونداریا قام بکیتو مر یه که یه گل د گزینه یا دیاری کردن هنی نه انتخاو بکیت.",
        "revdelete-reason-dropdown": "*دلیلیا جاونه سی پاکسا کردن\n** تیه پوشی د حق درتیچ کردن\n** ویر و باور یا دونسمنیا شخصی نامناسو\n** نوم کاریاری نامناسو\n** دونسمنیا فره تنادار",
-       "revdelete-otherreason": "دلیل هنی:",
-       "revdelete-reasonotherlist": "دلیل هنی",
+       "revdelete-otherreason": "دألیل ھأنی:",
+       "revdelete-reasonotherlist": "دألیل ھأنی",
        "revdelete-edit-reasonlist": "دلیلیا پاکسا کردنه نه ویرایشت بکید",
        "revdelete-offender": "نیسنه وانیری:",
        "suppressionlog": "پهرستنومه پاکساگری",
        "search-interwiki-more": "(بیشتر)",
        "search-relatedarticle": "مرتوط",
        "searchrelated": "مرتوط",
-       "searchall": "همه",
+       "searchall": "ھأمە",
        "showingresults": "نمائشت بیشترونه {{PLURAL:$1|'''۱''' نتیجه|'''$1''' نتیجه}} د هار، شرو د شماره'''$2'''.",
        "showingresultsinrange": "نمائشت بیشترونه {{PLURAL:$1|'''۱''' نتیجه|'''$1''' نتیجه}} د هار، شرو د شماره'''$2''' تا شماره '''$3'''.",
        "search-showingresults": "{{PLURAL:$4|نتیجه یا<strong>$1</strong> د <strong>$3</strong>|نتیجه یا<strong>$1 - $2</strong د <strong>$3</strong>}}",
        "saveprefs": "ئمایە کئردئن",
        "restoreprefs": "د نو زنه کردن همه میزونکاریا پیش فرض(د همه جایا)",
        "prefs-editing": "د حال و بال ڤیرایئشت",
-       "rows": "ردÙ\8aÙ\81Ù\8aا:",
+       "rows": "رأگÛ\8cا:",
        "columns": "ستينا:",
        "searchresultshead": "پئی جوٙری",
        "stub-threshold": "آستونه ویرایشتیا د یک دیسسه<a href=\"#\" class=\"stub\">ناقص</a> (بایت):",
        "emailuser": "ای كارور نه ايميل كو",
        "emailuser-title-target": "ایمیل سی ای {{GENDER:$1|کارور}}",
        "emailuser-title-notarget": "أنجومانامە کاریار",
-       "emailpage": "أنجومانامه کاریار",
        "emailpagetext": "شما می تونیت  نوم بلگه هار نه سی کل کردن یه گل انجومانامه وه ای  {{GENDER:$1|کاریار}} وه کار بئیرت.\nتیرنشون انجومانامه یی که د [[Special:Preferences|ترجیحات کاریارتو]] دئیه ته د تیرنشون کلکار انجومانامه میا، سی یه که گیرنه بتونه جواوش بیه.",
        "defemailsubject": "{{نوم سیل جا}} ایمیل د کارور \"$1\"",
        "usermaildisabled": "ایمیل کارور د کار افتائه",
index 7900e30..4fd8b2b 100644 (file)
        "createacct-benefit-body2": "{{PLURAL:$1|puslapis|puslapiai}}",
        "createacct-benefit-body3": "Neseni {{PLURAL:$1|autorius|autoriai|autorių}}",
        "badretype": "Įvesti slaptažodžiai nesutampa.",
+       "usernameinprogress": "Profilio kūrimas šiam naudotojo vardui jau vyksta.\nPrašome palaukti.",
        "userexists": "Įvestasis naudotojo vardas jau naudojamas.\nPrašome pasirinkti kitą vardą.",
        "loginerror": "Prisijungimo klaida",
        "createacct-error": "Paskyros kūrimo klaida",
        "emailuser": "Rašyti laišką šiam naudotojui",
        "emailuser-title-target": "Siųsti E-pašto žinutę {{GENDER:$1|user}}",
        "emailuser-title-notarget": "El. pašto vartotojas",
-       "emailpage": "Siųsti el. laišką naudotojui",
        "emailpagetext": "Jūs galite pasinaudoti šiuo pavyzdžiu, norėdami nusiųsti elektroninį laišką šiam naudotojui.\nElektroninio pašto adresas, kurį įvedėte [[Special:Preferences|savo naudotojo nustatymuose]], bus rodomas kaip el. pašto siuntėjo adresas, tam, kad gavėjas galėtų jums iškart atsakyti.",
        "defemailsubject": "{{SITENAME}} el. pašto iš vartotojo \" $1 \"",
        "usermaildisabled": "Naudotojo elektroninis paštas išjungtas",
        "emailccsubject": "Laiško kopija naudotojui $1: $2",
        "emailsent": "El. laiškas išsiųstas",
        "emailsenttext": "Jūsų el. pašto žinutė išsiųsta.",
-       "emailuserfooter": "Šis el. laiškas buvo išsiųstas naudotojo $1 naudotojui $2 naudojant „{{int:emailpage}}“ funkciją {{SITENAME}}.",
+       "emailuserfooter": "Šis el. laiškas buvo išsiųstas naudotojo $1 naudotojui $2 naudojant „{{int:emailuser}}“ funkciją {{SITENAME}}.",
        "usermessage-summary": "Paliekamas sistemos pranešimas.",
        "usermessage-editor": "Sistemos pranešėjas",
        "watchlist": "Stebimų sąrašas",
        "logentry-newusers-create2": "Vartotojo paskyra $3 buvo {{GENDER:$2|sukurta}} $1",
        "logentry-newusers-byemail": "Vartotojo paskyra $3 buvo {{GENDER:$2|sukurta}} $1 ir slaptažodis išsiųstas el. paštu",
        "logentry-newusers-autocreate": "Vartotojo paskyra $1 buvo {{GENDER:$2|sukurta}} automatiškai",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|perkėlė}} apsaugos nustatymus iš $4 į $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|pakeitė}} grupės narystę $3 iš $4 į $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|pakeista}} narystė grupėje $3",
        "logentry-rights-autopromote": "$1 buvo automatiškai {{GENDER:$2|pervestas}} iš $4 į $5",
index 6f61e3b..dd4cc41 100644 (file)
        "title-invalid-talk-namespace": "Pieprasītais lapas nosaukums norāda uz diskusijas lapu, kas nevar pastāvēt.",
        "title-invalid-characters": "Pieprasītais lapas nosaukums satur nederīgus simbolus: \"$1\".",
        "perfcached": "Šie dati ir no servera kešatmiņas un var būt novecojuši. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
-       "perfcachedts": "Šie dati ir no servera kešatmiņas (''cache''), kas pēdējo reizi bija atjaunota $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
+       "perfcachedts": "Šie dati ir no servera kešatmiņas (''cache''), kas pēdējo reizi bija atjaunota $1. Kešatmiņā {{PLURAL:$4|pieejami|pieejams|pieejami}} ne vairāk kā {{PLURAL:$4|$4 rezultāti|viens rezultāts|$4 rezultāti}}.",
        "querypage-no-updates": "Šīs lapas atjaunošana pagaidām ir atslēgta. Te esošie dati tuvākajā laikā netiks atjaunoti.",
        "viewsource": "Aplūkot kodu",
        "viewsource-title": "Apskatīt $1 izejas kodu",
        "accmailtitle": "Parole nosūtīta.",
        "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": "Tu šeit nonāci sekojot saitei uz, pagaidām vēl neuzrakstītu, lapu.\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 '''back''' pogu pārlūkprogrammā.",
+       "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.''",
        "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.",
        "searchrelated": "saistītais",
        "searchall": "viss",
        "showingresults": "Šobrīd ir {{PLURAL:$1|redzamas|redzama|redzamas}} '''$1''' {{PLURAL:$1|lapas|lapa|lapas}}, sākot ar #'''$2'''.",
+       "showingresultsinrange": "Tiek {{PLURAL:$1|rādīti <strong>$1</strong> rezultāti|rādīts <strong>1</strong> rezultāts|rādīti <strong>$1</strong> rezultāti}} no <strong>$2</strong>. līdz <strong>$3</strong>. rezultātam.",
        "search-nonefound": "Nav atrasti pieprasījumam atbilstoši rezultāti.",
        "powersearch-legend": "Izvērstā meklēšana",
        "powersearch-ns": "Meklēt šajās lapu grupās:",
        "rcshowhidemine": "$1 manus",
        "rcshowhidemine-show": "Rādīt",
        "rcshowhidemine-hide": "Slēpt",
-       "rcshowhidecategorization-show": "Rādīt",
-       "rcshowhidecategorization-hide": "Paslēpt",
        "rclinks": "Parādīt pēdējās $1 izmaiņas pēdējās $2 dienās.<br />$3",
        "diff": "izmaiņas",
        "hist": "hronoloģija",
        "emailuser": "Sūtīt e-pastu šim lietotājam",
        "emailuser-title-target": "Nosūtīt e-pastu {{GENDER:$1|šim lietotājam|šai lietotājai}}",
        "emailuser-title-notarget": "Sūtīt e-pastu lietotājam",
-       "emailpage": "Sūtīt e-pastu lietotājam",
        "emailpagetext": "Ar šo veidni ir iespējams nosūtīt e-pastu šim {{GENDER:$1|lietotājam}}.\nTā e-pasta adrese, kuru tu esi norādījis [[Special:Preferences|savā izvēļu lapā]], parādīsies e-pasta \"From\" lauciņā, tādejādi saņēmējs varēs tev atbildēt.",
        "defemailsubject": "{{SITENAME}} e-pasts no lietotāja \"$1\"",
        "usermaildisabled": "Lietotāja e-pasts atslēgts",
        "feedback-cancel": "Atcelt",
        "feedback-close": "Gatavs",
        "feedback-dialog-title": "Iesniegt atsauksmes",
+       "feedback-error-title": "Kļūda",
        "feedback-error1": "Kļūda: API neatpazīts rezultāts",
        "feedback-error2": "Kļūda: Labojums neizdevās",
        "feedback-error3": "Kļūda: Nav atbildes no API",
index e4f3d6e..37ca9f5 100644 (file)
        "search-category": "(sokajy $1)",
        "search-file-match": "(miady amin'ny votoatin-drakitra)",
        "search-suggest": "Andramo : $1",
+       "search-rewritten": "Maneho vokam-pikarohana ho an'i $1. Hisolo ary hikaroka momba an'i $2.",
        "search-interwiki-caption": "zandri-tetikasa",
        "search-interwiki-default": "Valiny amin'ny $1 :",
        "search-interwiki-more": "(be kokoa)",
        "searchrelated": "voadinika",
        "searchall": "rehetra",
        "showingresults": "Omeo ny valiny{{PLURAL:$1||}} miisa hatramin'ny <b>$1</b> manomboka ny #<b>$2</b>.",
+       "showingresultsinrange": "Maneho hatramin'ny {{PLURAL:$1|valim-pikarohana <strong>1</strong> |valim-pikarohana <strong>$1</strong>}} amin'ny elanelana #<strong>$2</strong> hatramin'i #<strong>$3</strong>.",
        "search-showingresults": "{{PLURAL:$4|Valim-pikarohana <strong>$1</strong> amin'ny <strong>$3</strong>| Valim-pikarohana <strong>$1 - $2</strong> amin'ny <strong>$3</strong>}}",
        "search-nonefound": "Tsy nahitana valiny ilay fanontaniana.",
        "powersearch-legend": "Fikarohana havanana",
        "badsig": "Tsy mety io sonia io; hamarino ny kialo HTML.",
        "badsiglength": "Lava loatra ny sonianao. {{PLURAL:$1||}}\nTokony mba manana lohavy ambanimbany kokoa non'ny $1",
        "yourgender": "Tiana hofaritana ahoana ianao?",
-       "gender-unknown": "Tsy tia hanome ny antsipirihany aho",
+       "gender-unknown": "Rehefa milaza momba anao, hampiasa teny tsy mampilaza ny lahivavinao rehefa afaka atao.",
        "gender-male": "Manova pejy wiki izy (lehilahy)",
        "gender-female": "Manova pejy wiki izy (vehivavy)",
        "prefs-help-gender": "Ankifidy : ampiasaina ho an'ny fifandraisan'ny rindrankajy aminao. Ho sarababem-bahoaka ity fampahalalana ity.",
        "action-editmyprivateinfo": "Mijery ny fampahalalana sarababem-bahoakanao",
        "action-editcontentmodel": "manova ny modelim-botoatin'ny pejy",
        "action-managechangetags": "hamorona ary hamafa balizy ao amin'ny banky angona",
+       "action-applychangetags": "mampihatra balizy miaraka amin'ny fanovanao",
+       "action-changetags": "manampy ary manala balizy amin'ny versiona manokana ary iditry ny laogy",
        "nchanges": "{{PLURAL:$1|fanovana|fanovana}} $1",
        "enhancedrc-since-last-visit": "$1 ({{PLURAL:$1|hatry ny famangiana farany}})",
        "enhancedrc-history": "tantara",
        "newpageletter": "V",
        "boteditletter": "r",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|mpikambana|mpikambana}} manara-maso]",
-       "rc_categories": "Ferana amin'ireto sokajy ireto ihany (saraho amin'ny \"|\")",
-       "rc_categories_any": "Tsy misy fetrany",
+       "rc_categories": "Ferana amin'ireto sokajy ireto (saraho amin'ny \"|\")",
+       "rc_categories_any": "Anisan'ireo nofidiana",
        "rc-change-size-new": "$1{{PLURAL:}} oktety taorian'ny fanovana",
        "newsectionsummary": "/* $1 */ fizarana vaovao",
        "rc-enhanced-expand": "Hijery ny antsipirihany",
        "upload-too-many-redirects": "Be loatra ny fihodinan'ny URL.",
        "upload-http-error": "Nisy tsy fetezana HTTP nitranga : $1",
        "upload-copy-upload-invalid-domain": "Tsy misy eto amin'ity dômenina ity ny tahaky ny upload.",
+       "upload-dialog-title": "Hanafatra rakitra",
+       "upload-dialog-error": "Nisy hadisoana nitranga",
+       "upload-dialog-warning": "Nisy fampitandremana nitranga",
+       "upload-dialog-button-cancel": "Aoka",
+       "upload-dialog-button-done": "Vita",
+       "upload-dialog-button-save": "Tehirizina",
+       "upload-dialog-button-upload": "Mampiditra",
+       "upload-dialog-label-select-file": "Hifidy rakitra",
+       "upload-dialog-label-infoform-title": "Antsipirihany",
+       "upload-dialog-label-infoform-name": "Anarana",
+       "upload-dialog-label-infoform-description": "Famisavisana",
+       "upload-dialog-label-usage-title": "Fampiasana",
+       "upload-dialog-label-usage-filename": "Anaran-drakitra",
        "backend-fail-stream": "Tsy afaka mamaky ilay rakitra $1.",
        "backend-fail-backup": "Tsy afaka mitahiry ilay rakitra $1.",
        "backend-fail-notexists": "Tsy misy ilay rakitra $1.",
        "backend-fail-closetemp": "Tsy afaka manidy ilay rakitra miserana.",
        "backend-fail-read": "Tsy afaka mamaky ilay rakitra $1.",
        "backend-fail-create": "Tsy afaka manoratra anatin'ilay rakitra $1.",
+       "backend-fail-maxsize": "Tsy afaka nanoratra rakitra \"$1\" satria lehibe kokoa noho {{PLURAL:$2|iray oktety|$2 oktety}}.",
        "backend-fail-readonly": "Amin'izao fotoana dia famakiana ihany ny fitahirizana terminal an'i \"$1\". \"''$2''\" no antony nomena",
+       "backend-fail-synced": "Anaty toetra tsy mitombina ilay rakitra \"$1\" ao amin'ny fitahirizana anaty",
        "backend-fail-connect": "Tsy afaka mifandray amin'ny terminal fitahirizana \"$1\".",
        "backend-fail-internal": "Hadisoana tsy fantatra tao anatin'ny terminal fitahirizana \"$1\".",
        "backend-fail-contenttype": "Tsy afaka maminavina ny karazam-botoatin'ny rakitra hotahirizina ao amin'i \"$1\".",
        "license": "Lisansy:",
        "license-header": "Navoaka tambanin'ny lisansy",
        "nolicense": "Tsy misy safidy",
+       "licenses-edit": "Hanova safidim-pahazoan-dalana",
        "license-nopreview": "(Tsy misy topi-maso)",
        "upload_source_url": " (URL misy ary azo vangian'ny daholobe)",
        "upload_source_file": " (rakitra eo amin'ny milinao)",
        "listfiles-delete": "fafao",
        "listfiles-summary": "Ahitana ny rakitra rehetra nampidirina ity pejy manokana ity.",
        "listfiles_search_for": "Hitady anarana media :",
+       "listfiles-userdoesnotexist": "Tsy nisoratra anarana i \"$1\".",
        "imgfile": "rakitra",
        "listfiles": "Lisitran'ny rakitra",
        "listfiles_thumb": "Sary nakelezina",
        "download": "Hampidina",
        "unwatchedpages": "Pejy voaaisotra ny fanaraha-maso azy",
        "listredirects": "Lisitra ny fihodinana",
+       "listduplicatedfiles": "Lisitry ny rakitra misy in-droa",
        "unusedtemplates": "Endrika tsy miasa",
        "unusedtemplatestext": "Ity pejy ity dia manalisitra ny pejy rehetra ao amin'ny anaran-tsehatra « {{ns:template}} » ao tsy anaty pejy hafa.\nAza manadino manamarina raha tsy misy rohy makany amin'ny endrika hafa alohan'ny mamafa azy.",
        "unusedtemplateswlh": "rohy hafa",
        "randomincategory-invalidcategory": "Tsy anaran-tsokajy azo raisina \"$1\"",
        "randomincategory-nopages": "Tsy misy pejy ao amin'i [[:Category:$1]]",
        "randomincategory-category": "Sokajy:",
+       "randomincategory-legend": "Pejy kisendra anaty sokajy",
        "randomincategory-submit": "Lasa",
        "randomredirect": "Pejy fihodinana kisendra",
        "randomredirect-nopages": "Tsy misy pejy fihodinana eo amin'ny anaran-tsehatra «$1»",
        "emailuser": "Andefaso imailaka io mpikambana io",
        "emailuser-title-target": "Handefa mailaka any amin'ity mpikambana ity{{GENDER:$1}}",
        "emailuser-title-notarget": "Handefa imailaka an'ilay mpikambana",
-       "emailpage": "Andefaso imailaka io mpikambana io",
        "emailpagetext": "Azonao ampiasaina io fôrmiolera eo ambany io mba handefa mailaka mankany amin'ny mpikambana $1. Ho ao amin'ny saha \"Mpandefa\" (Expéditeur) ny adiresy mailakao ka ho afaka hamaly anao avy hatrany ilay mpandray ny hafatra.",
        "defemailsubject": "{{SITENAME}} Mailaky ny mpikambana \"$1\"",
        "usermaildisabled": "Tsy azo mifandefa imailaka ny mpikambana",
        "rollback-success": "Fanesorana ny fiovana nataon'i $1 ;\nfiverenana amin'ny fiovana farany nataon'i $2.",
        "sessionfailure-title": "Tsi-fetezaka mikasika ny kaonty idirana",
        "sessionfailure": "Ohatry ny misy olana ny fidirana amin'ny kaontinao ; \nnofoanana ilay tao mba tsy hisy fanodinana fotaom-pidirana (session).\nTsindrio \"Mialoha\" ary vaozy ilay pejy niavianao ary andramo fanindroany.",
+       "changecontentmodel-title-label": "Lohatenim-pejy",
+       "changecontentmodel-model-label": "Môdelim-botoatiny",
+       "changecontentmodel-reason-label": "Antony :",
+       "changecontentmodel-success-title": "Niova ny môdelim-botoatiny",
+       "logentry-contentmodel-change-revertlink": "mamerina",
+       "logentry-contentmodel-change-revert": "mamerina",
        "protectlogpage": "Laogim-piarovana",
        "protectlogtext": "Eto ambany ny lisitry ny fiarovana/fanalana hidy ny pejy. \nHo ann'y fanazavana fanampiny, jereo [[Special:ProtectedPages|ny lisitry ny pejy voaaro]] ho an'ny pejy fiarovana amin'izao fotoana izao.",
        "protectedarticle": "voaaro ny pejy \"[[$1]]\"",
        "prot_1movedto2": "[[$1]] voaova anarana ho [[$2]]",
        "protect-badnamespace-title": "Anaran-tsehatra tsy azo arovana",
        "protect-badnamespace-text": "Tsy afaka arovana ny pejy ao amin'io anaran-tsehatra io.",
+       "protect-norestrictiontypes-text": "Tsy afaka arovana i ty pejy ity satria tsy misy karazam-petra hita.",
        "protect-norestrictiontypes-title": "Pejy tsy azo arovana",
        "protect-legend": "Fanekena ny fiarovana pejy",
        "protectcomment": "Antony :",
        "allmessages-prefix": "Tantavanina araka ny tovona :",
        "allmessages-language": "Tenim-pirenena/fiteny :",
        "allmessages-filter-submit": "Alefa",
+       "allmessages-filter-translate": "Dikaina",
        "thumbnail-more": "Angedazina",
        "filemissing": "Tsy hita ny rakitra",
        "thumbnail_error": "Tsy fetezana eo am-panamboarana ilay saritapaka : $1",
index 619c32a..5033ace 100644 (file)
@@ -23,7 +23,6 @@
        "tog-hideminor": "Скривај ги ситните уредувања во скорешните промени",
        "tog-hidepatrolled": "Скриј испатролирани уредувања во скорешните промени",
        "tog-newpageshidepatrolled": "Скриј испатролирани страници од списокот на нови страници",
-       "tog-hidecategorization": "Сокриј ја категоризацијата на страниците",
        "tog-extendwatchlist": "Прошири го список на набљудувања за приказ на сите промени, не само скорешните",
        "tog-usenewrc": "Промени во групи по страници во списокот на скорешни промени",
        "tog-numberheadings": "Нумерирај ги заглавијата",
@@ -53,7 +52,6 @@
        "tog-watchlisthideliu": "Скриј ги уредувањата на најавените корисници во набљудуваните",
        "tog-watchlisthideanons": "Скриј ги уредувањата од анонимни корисници во набљудуваните",
        "tog-watchlisthidepatrolled": "Скриј испатролирани уредувања од мојот список на набљудувања",
-       "tog-watchlisthidecategorization": "Сокриј ја категоризацијата на страниците",
        "tog-ccmeonemails": "Испраќај ми мои примероци од писмата што ги праќам на другите корисници",
        "tog-diffonly": "Не ја покажувај содржината на страницата под разликите",
        "tog-showhiddencats": "Прикажи скриени категории",
        "help": "Помош",
        "search": "Пребарај",
        "searchbutton": "Пребарај",
-       "go": "Ð\9eди",
-       "searcharticle": "Ð\9eди",
+       "go": "Ð\94аÑ\98",
+       "searcharticle": "Ð\94аÑ\98",
        "history": "историја",
        "history_short": "Историја",
        "updatedmarker": "подновено од мојата последна посета",
        "createacct-benefit-body2": "{{PLURAL:$1|страница|страници}}",
        "createacct-benefit-body3": "{{PLURAL:$1|скорешен учесник|скорешни учесници}}",
        "badretype": "Внесените лозинки не се совпаѓаат.",
+       "usernameinprogress": "Создавањето на сметката за овој корисни е веќе во тек.",
        "userexists": "Корисничкото име што го внесовте е зафатено.\nИзберете друго име.",
        "loginerror": "Грешка при најавувањето",
        "createacct-error": "Грешка во создавањето на сметката",
        "rcshowhidemine": "$1 мои уредувања",
        "rcshowhidemine-show": "Прикажи",
        "rcshowhidemine-hide": "Скриј",
-       "rcshowhidecategorization": "$1 ја категоризацијата на страниците",
-       "rcshowhidecategorization-show": "Прикажи",
-       "rcshowhidecategorization-hide": "Скриј",
        "rclinks": "Прикажи скорешни $1 промени во последните $2 дена<br />$3",
        "diff": "разл",
        "hist": "истор",
        "recentchangeslinked-summary": "Ова е список на промени направени на страниците поврзани преку назначената страница (или до членови на назначената категорија).\nСтраниците на [[Special:Watchlist|вашиот список на набљудувања]] се прикажани '''задебелено'''.",
        "recentchangeslinked-page": "Име на страницата:",
        "recentchangeslinked-to": "Прикажи ги промените на страниците поврзани со дадената страница",
-       "recentchanges-page-added-to-category": "[[:$1]] ставена во категорија",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] и уште {{PLURAL:$2|една страница ставена|$2 страници ставеи}} во категорија",
-       "recentchanges-page-removed-from-category": "[[:$1]] отстранета од категорија",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] и уште {{PLURAL:$2|една страница отстранета|$2 страници отстранети}} од категорија",
        "upload": "Подигање",
        "uploadbtn": "Подигни",
        "reuploaddesc": "Прекини и назад кон образецот за подигање",
        "randomincategory-nopages": "Нема страници во [[:Category:$1]].",
        "randomincategory-category": "Категорија:",
        "randomincategory-legend": "Случајна страница во категорија",
-       "randomincategory-submit": "Ð\9eди",
+       "randomincategory-submit": "Ð\94аÑ\98",
        "randomredirect": "Случајно пренасочување",
        "randomredirect-nopages": "Нема пренасочувања во именскиот простор „$1“.",
        "statistics": "Статистики",
        "pageswithprop-legend": "Страници со својство",
        "pageswithprop-text": "На страницава се наведени страници што користат дадено својство.",
        "pageswithprop-prop": "Име на својството:",
-       "pageswithprop-submit": "Ð\9eди",
+       "pageswithprop-submit": "Ð\94аÑ\98",
        "pageswithprop-prophidden-long": "долгата вредност на текстуалното својство е скриена ($1)",
        "pageswithprop-prophidden-binary": "бинарната вредност на својството за долгиот текст е скриена  ($1)",
        "doubleredirects": "Двојни пренасочувања",
        "allpagesto": "Прикажи страници кои завршуваат со:",
        "allarticles": "Сите страници",
        "allinnamespace": "Сите страници (именски простор $1)",
-       "allpagessubmit": "Ð\9eди",
+       "allpagessubmit": "Ð\94аÑ\98",
        "allpagesprefix": "Прикажи страници со претставка:",
        "allpagesbadtitle": "Дадениот наслов е неважечки или има меѓујазичен или меѓувики-претставка. Може да содржи повеќе знаци кои не смеат да се користат во наслови.",
        "allpages-bad-ns": "Википедија не содржи именски простор „$1“.",
        "emailuser": "Пиши е-пошта на корисникот",
        "emailuser-title-target": "Составување на е-пошта за {{GENDER:$1|корисникот}}",
        "emailuser-title-notarget": "Е-пошта за корисникот",
-       "emailpage": "Е-пошта",
        "emailpagetext": "Можете да го употребите следниов образец за да му испратите е-пошта на овој {{GENDER:$1|корисник}}.\nАдреса која ја имате наведено во [[Special:Preferences|вашите нагодувања]] ќе се прикаже во полето „Од“ на пораката, со што примачот ќе може да ви одговори непосредно вам.",
        "defemailsubject": "{{SITENAME}} — писмо од корисникот „$1“",
        "usermaildisabled": "Корисничката е-пошта е оневозможена",
        "emailccsubject": "Копија од вашата порака до $1: $2",
        "emailsent": "Писмото е испратено",
        "emailsenttext": "Писмото е испратено.",
-       "emailuserfooter": "$1 го испрати писмово на $2 со помош на функцијата „{{int:emailpage}}“ на {{SITENAME}}.",
+       "emailuserfooter": "$1 го испрати писмово на $2 со помош на функцијата „{{int:emailuser}}“ на {{SITENAME}}.",
        "usermessage-summary": "Оставете системска порака.",
        "usermessage-editor": "Системски гласник",
        "usermessage-template": "MediaWiki:КорисникПорака",
        "allmessages-filter-modified": "Изменети",
        "allmessages-prefix": "Филтрирај по претставка:",
        "allmessages-language": "Јазик:",
-       "allmessages-filter-submit": "Ð\9eди",
+       "allmessages-filter-submit": "Ð\94аÑ\98",
        "allmessages-filter-translate": "Преведување",
        "thumbnail-more": "Зголеми",
        "filemissing": "Недостасува податотека",
        "table_pager_last": "Последна страница",
        "table_pager_limit": "Прикажи $1 записи по страница",
        "table_pager_limit_label": "Ставки по страница:",
-       "table_pager_limit_submit": "Ð\9eди",
+       "table_pager_limit_submit": "Ð\94аÑ\98",
        "table_pager_empty": "Нема резултати",
        "autosumm-blank": "Целосно избришана страница",
        "autosumm-replace": "Ја заменувам страницата со '$1'",
        "redirect": "Пренасочување по податотеки, корисник или назнака на преработка",
        "redirect-legend": "Пренасочување кон податотека или страница",
        "redirect-summary": "Оваа службена страница пренасочува кон податотека (се задава името), страница (се задава назнаката на преработката или страницата) или корисничка странца (се задава бројчената назнака на корисникот). Употреба: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].",
-       "redirect-submit": "Ð\9eди",
+       "redirect-submit": "Ð\94аÑ\98",
        "redirect-lookup": "Пребарај:",
        "redirect-value": "Вредност:",
        "redirect-user": "Корисничка назнака",
        "logentry-newusers-create2": "{{GENDER:$2|Направена}} корисничката сметка $3 од $1",
        "logentry-newusers-byemail": "$1 {{GENDER:$2|ја направи}} корисничката сметка $3. Лозинката ви ја испративме по е-пошта",
        "logentry-newusers-autocreate": "Автоматски {{GENDER:$2|создадена}} корисничката сметка $1",
+       "logentry-protect-move_prot": "$1 ги {{GENDER:$2|премести}} заштитните поставки од $4 на $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|го измени}} групното членство на $3 од $4 во $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|го измени}} групното членство во $3",
        "logentry-rights-autopromote": "$1 автоматски {{GENDER:$2|унапреден|унапредена}} од $4 во $5",
index f7ed855..210ede0 100644 (file)
@@ -36,7 +36,6 @@
        "tog-hideminor": "പുതിയ മാറ്റങ്ങളുടെ പട്ടികയിൽ ചെറിയ തിരുത്തുകൾ പ്രദർശിപ്പിക്കാതിരിക്കുക",
        "tog-hidepatrolled": "റോന്തുചുറ്റിയ തിരുത്തുകൾ പുതിയമാറ്റങ്ങളിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക",
        "tog-newpageshidepatrolled": "റോന്തുചുറ്റപ്പെട്ട താളുകൾ പുതിയതാളുകളുടെ പട്ടികയിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക",
-       "tog-hidecategorization": "താളുകളുടെ വർഗ്ഗീകരണം മറയ്ക്കുക",
        "tog-extendwatchlist": "ഏറ്റവും പുതിയവ മാത്രമല്ല, എല്ലാ മാറ്റങ്ങളും ദൃശ്യമാകുന്ന വിധത്തിൽ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക വികസിപ്പിക്കുക.",
        "tog-usenewrc": "സമീപകാല മാറ്റങ്ങൾ, ശ്രദ്ധിക്കുന്നവയുടെ പട്ടിക എന്നീ താളുകളിൽ മാറ്റങ്ങൾ ഗണംതിരിക്കുക",
        "tog-numberheadings": "ഉപവിഭാഗങ്ങൾക്ക് ക്രമസംഖ്യ കൊടുക്കുക",
@@ -66,7 +65,6 @@
        "tog-watchlisthideliu": "ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളിലെ മാറ്റങ്ങളിൽ നിന്നും ലോഗിൻ ചെയ്തിട്ടുള്ളവരുടെ തിരുത്തുകൾ മറയ്ക്കുക",
        "tog-watchlisthideanons": "ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളിലെ മാറ്റങ്ങളിൽ നിന്നും അജ്ഞാത ഉപയോക്താക്കളുടെ തിരുത്തുകൾ മറയ്ക്കുക",
        "tog-watchlisthidepatrolled": "ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽനിന്ന് റോന്തുചുറ്റിയ തിരുത്തുകൾ മറയ്ക്കുക",
-       "tog-watchlisthidecategorization": "താളുകളുടെ വർഗ്ഗീകരണം മറയ്ക്കുക",
        "tog-ccmeonemails": "ഞാൻ മറ്റുള്ളവർക്കയക്കുന്ന ഇമെയിലുകളുടെ ഒരു പകർപ്പ് എനിക്കും അയക്കുക",
        "tog-diffonly": "രണ്ട് പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസത്തിനു താഴെ താളിന്റെ ഉള്ളടക്കം കാണിക്കരുത്.",
        "tog-showhiddencats": "മറഞ്ഞിരിക്കുന്ന വർഗ്ഗങ്ങളെ കാണിക്കുക",
        "rcshowhidemine": "എന്റെ തിരുത്തുകൾ $1",
        "rcshowhidemine-show": "പ്രദർശിപ്പിക്കുക",
        "rcshowhidemine-hide": "മറയ്ക്കുക",
-       "rcshowhidecategorization": "താളുകളുടെ വർഗ്ഗീകരണം $1",
-       "rcshowhidecategorization-show": "പ്രദർശിപ്പിക്കുക",
-       "rcshowhidecategorization-hide": "മറയ്ക്കുക",
        "rclinks": "കഴിഞ്ഞ $2 ദിവസങ്ങൾക്കുള്ളിലുണ്ടായ $1 മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക<br />$3",
        "diff": "മാറ്റം",
        "hist": "നാൾവഴി",
        "recentchangeslinked-summary": "ഒരു പ്രത്യേക താളിൽ നിന്നു കണ്ണി ചേർക്കപ്പെട്ടിട്ടുള്ള താളുകളിൽ അവസാനമായി വരുത്തിയ മാറ്റങ്ങളുടെ പട്ടിക താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്നു. ഈ പട്ടികയിൽ പെടുന്ന [[Special:Watchlist|താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകൾ]] '''കടുപ്പിച്ച്''' കാണിച്ചിരിക്കുന്നു.",
        "recentchangeslinked-page": "താളിന്റെ പേര്:",
        "recentchangeslinked-to": "തന്നിരിക്കുന്ന താളിലെ മാറ്റങ്ങൾക്കു പകരം ബന്ധപ്പെട്ട താളുകളിലെ മാറ്റങ്ങൾ കാണിക്കുക",
-       "recentchanges-page-added-to-category": "[[:$1]] വർഗ്ഗത്തിലേക്ക് ചേർത്തിരിക്കുന്നു",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] താളും ഒപ്പം {{PLURAL:$2|മറ്റൊരു താളും|$2 താളുകളും}} വർഗ്ഗത്തിലേക്ക് ചേർത്തിരിക്കുന്നു",
-       "recentchanges-page-removed-from-category": "[[:$1]] വർഗ്ഗത്തിൽ നിന്ന് നീക്കംചെയ്തു",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] താളും ഒപ്പം {{PLURAL:$2|മറ്റൊരു താളും|$2 താളുകളും}} വർഗ്ഗത്തിൽ നിന്ന് നീക്കംചെയ്തിരിക്കുന്നു",
        "upload": "അപ്‌ലോഡ്‌",
        "uploadbtn": "പ്രമാണം അപ്‌ലോഡ് ചെയ്യുക",
        "reuploaddesc": "വീണ്ടും അപ്‌ലോഡ് ചെയ്ത് നോക്കാനായി തിരിച്ചു പോവുക.",
        "emailuser": "ഈ ഉപയോക്താവിനു ഇമെയിൽ അയക്കുക",
        "emailuser-title-target": "ഈ {{GENDER:$1|ഉപയോക്താവിന്}} ഇമെയിൽ അയയ്ക്കുക",
        "emailuser-title-notarget": "ഉപയോക്താവിന് ഇമെയിൽ അയക്കുക",
-       "emailpage": "ഉപയോക്താവിന് ഇമെയിൽ അയക്കുക",
        "emailpagetext": "താഴെ കാണുന്ന ഫോം ഈ {{GENDER:$1|ഉപയോക്താവിന്‌}} ഇമെയിൽ അയക്കാൻ ഉപയോഗിക്കാവുന്നതാണ്.\n[[Special:Preferences|ഉപയോക്താവിന്റെ ക്രമീകരണങ്ങളിൽ]] കൊടുത്തിട്ടുള്ള ഇമെയിൽ വിലാസം \"ദാതാവ്\" ആയി വരുന്നതാണ്‌, അതുകൊണ്ട് സ്വീകർത്താവിന്‌ താങ്കൾക്ക് നേരിട്ട് മറുപടി അയക്കാൻ കഴിയും.",
        "defemailsubject": "\"$1\" എന്ന ഉപയോക്താവ് അയച്ച {{SITENAME}} ഇമെയിൽ",
        "usermaildisabled": "ഉപയോക്തൃ ഇമെയിൽ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു",
        "emailccsubject": "$1 എന്ന ഉപയോക്താവിനയച്ച സന്ദേശത്തിന്റെ പകർപ്പ്: $2",
        "emailsent": "ഇമെയിൽ അയച്ചിരിക്കുന്നു",
        "emailsenttext": "താങ്കളുടെ ഇമെയിൽ അയച്ചു കഴിഞ്ഞിരിക്കുന്നു.",
-       "emailuserfooter": "ഈ ഇമെയിൽ, {{SITENAME}} സംരംഭത്തിലെ \"{{int:emailpage}}\" എന്ന സൗകര്യം ഉപയോഗിച്ച്, $1 എന്ന ഉപയോക്താവ് $2 എന്ന ഉപയോക്താവിന് അയച്ചതാണ്.",
+       "emailuserfooter": "ഈ ഇമെയിൽ, {{SITENAME}} സംരംഭത്തിലെ \"{{int:emailuser}}\" എന്ന സൗകര്യം ഉപയോഗിച്ച്, $1 എന്ന ഉപയോക്താവ് $2 എന്ന ഉപയോക്താവിന് അയച്ചതാണ്.",
        "usermessage-summary": "വ്യവസ്ഥാസന്ദേശം ഉപേക്ഷിക്കുക.",
        "usermessage-editor": "വ്യവസ്ഥാസന്ദേശകൻ",
        "watchlist": "ശ്രദ്ധിക്കുന്നവ",
        "changecontentmodel-reason-label": "കാരണം:",
        "changecontentmodel-success-title": "ഉള്ളടക്കരീതി മാറിയിരിക്കുന്നു",
        "changecontentmodel-success-text": "[[:$1]] എന്നതിന്റെ ഉള്ളടക്കരീതി മാറിയിട്ടുണ്ട്.",
+       "changecontentmodel-cannot-convert": "[[:$1]] താളിലെ ഉള്ളടക്കം $2 തരത്തിലേക്ക് മാറ്റാനാവില്ല.",
        "logentry-contentmodel-change-revertlink": "പൂർവ്വസ്ഥിതിയിലാക്കുക",
        "logentry-contentmodel-change-revert": "പൂർവ്വസ്ഥിതിയിലാക്കുക",
        "protectlogpage": "സംരക്ഷണ പ്രവർത്തനരേഖ",
index a2691a9..3dc9089 100644 (file)
        "preview": "झलक",
        "showpreview": "झलक दाखवा",
        "showdiff": "बदल दाखवा",
-       "anoneditwarning": "'''इशारा:''' तुम्ही विकिपीडियाचे सदस्य म्हणून सनोंद-प्रवेश (लॉग-इन) केलेला नाही. या पानाच्या संपादन इतिहासात तुमचा अंकपत्ता (आयपी) नोंदला जाईल.",
+       "anoneditwarning": "<strong>इशारा:</strong> तुम्ही विकिपीडियाचे सदस्य म्हणून सनोंद-प्रवेश (लॉग-इन) केलेले नाही.आपण काही संपादन केले तर, तुमचा अंकपत्ता (आयपी) सार्वजनिक रित्या दृष्य होईल. जर आपण <strong>[$1 सनोंद प्रवेश केला]</strong> किंवा <strong>[$2 खाते उघडले]</strong>,तर आपण केलेली संपादने ही आपल्या नांवाशी संलग्न होतील, त्याशिवाय याचे इतरही फायदे आहेत.",
        "anonpreviewwarning": "\"'''सावधान:''' तुम्ही विकिपीडियाचे सदस्य म्हणून सनोंद-प्रवेश (लॉग-इन) केलेला नाही. या पानाच्या संपादन इतिहासात तुमचा अंकपत्ता (आय.पी. ॲड्रेस) नोंदला जाईल.\"",
        "missingsummary": "'''आठवण:''' आपण संपादन सारांश पुरवलेला नाही.आपण 'जतन करा' वर पुन्हा टिचकी मारली तर, ते त्याशिवायच जतन होईल.",
        "missingcommenttext": "कृपया खाली प्रतिक्रिया भरा.",
        "emailuser": "या सदस्याला ई-मेल पाठवा",
        "emailuser-title-target": "{{GENDER:$1|सदस्याला}} विपत्र पाठवा",
        "emailuser-title-notarget": "विपत्र (ईमेल) उपयोगकर्ता",
-       "emailpage": "विपत्र (ईमेल) उपयोगकर्ता",
        "emailpagetext": "या {{GENDER:$1|सदस्याला}}विपत्र पाठविण्यास खालील आवेदनाचा आपण वापर करु शकता.\n\nआपल्या [[Special:Preferences|पसंतीक्रमात]] नमूद केलेला विपत्रपत्ता, \"च्या कडून\" पत्त्यात येईल म्हणजे  प्राप्तकर्ता आपल्याला थेट उत्तर देऊ शकेल.",
        "defemailsubject": "{{SITENAME}} \"$1\" सदस्याकडून विपत्र",
        "usermaildisabled": "सदस्य विपत्र निष्क्रिय आहे",
        "tooltip-pt-mycontris": "तुमच्या योगदानांची यादी",
        "tooltip-pt-login": "आपणांस सदस्यत्व घेण्याची विनंती करण्यात येत आहे. सदस्यत्व घेणे अनिवार्य नाही.",
        "tooltip-pt-logout": "सनोंद निर्गम",
+       "tooltip-pt-createaccount": "आम्ही आपणास खाते उघडून सनोंद-प्रवेशास प्रोत्साहीत करत आहे;पण ते अत्यावश्यक नाही.",
        "tooltip-ca-talk": "आशय पानाबद्दलच्या चर्चा",
-       "tooltip-ca-edit": "तà¥\81मà¥\8dहà¥\80 à¤¹à¥\87 à¤ªà¤¾à¤¨ à¤¬à¤¦à¥\8dलà¥\82 à¤¶à¤\95ता. à¤\95à¥\83पया à¤\9cतन à¤\95रणà¥\8dयापà¥\82रà¥\8dवà¥\80 à¤\9dलà¤\95 à¤\95ळ à¤µà¤¾à¤ªà¤°à¥\82न à¤ªà¤¹à¤¾.",
+       "tooltip-ca-edit": "या à¤ªà¤¾à¤¨à¤¾à¤\9aà¥\87 à¤¸à¤\82पादन à¤\95रा",
        "tooltip-ca-addsection": "नवीन विभाग सुरू करा",
        "tooltip-ca-viewsource": "हे पान सुरक्षित आहे. तुम्ही याचा स्रोत पाहू शकता.",
        "tooltip-ca-history": "या पानाच्या जुन्या आवृत्या.",
        "spam_reverting": "$1शी दुवे नसलेल्या गेल्या आवर्तनाकडे परत उलटवत आहे",
        "spam_blanking": "$1शी दुवे असलेली सर्व आवर्तने,रिक्त केली जात आहेत",
        "spam_deleting": "यातील सर्व आवृत्त्यांचे $1शी दुवे आहेत.गाळत आहे",
-       "simpleantispam-label": "चिखलणी विरोधक तपासणी.\nहे भरू '''नका'''!",
+       "simpleantispam-label": "चिखलणी विरोधक तपासणी.\nहे<strong>भरु नका</strong>!\nहे भरू '''नका'''!",
        "pageinfo-title": "\"$1\" च्याबद्दल माहिती",
        "pageinfo-not-current": "माफ करा, जुन्या अवृतिला माहिती देणे अक्षक्य आहे|",
        "pageinfo-header-basic": "मूलभूत माहिती",
index 19d1089..e27a3f4 100644 (file)
        "emailuser": "Kirim e-mel kepada pengguna ini",
        "emailuser-title-target": "E-mel {{GENDER:$1|pengguna}} ini",
        "emailuser-title-notarget": "E-mel pengguna",
-       "emailpage": "E-mel pengguna",
        "emailpagetext": "Gunakan borang berikut untuk mengirim pesanan e-mel kepada {{GENDER:$1|pengguna}} ini.\n\nAlamat e-mel yang ditetapkan dalam [[Special:Preferences|keutamaan anda]] akan digunakan sebagai alamat \"Daripada\" dalam e-mel tersebut supaya si penerima boleh membalasnya.",
        "defemailsubject": "E-mel {{SITENAME}} daripada pengguna \"$1\"",
        "usermaildisabled": "E-mel pengguna telah dilumpuhkan",
        "emailccsubject": "Salinan bagi mesej anda kepada $1: $2",
        "emailsent": "E-mel dikirim",
        "emailsenttext": "E-mel anda telah dikirim.",
-       "emailuserfooter": "E-mel ini telah dikirim oleh $1 kepada $2 oleh fungsi \"{{int:emailpage}}\" di {{SITENAME}}.",
+       "emailuserfooter": "E-mel ini telah dikirim oleh $1 kepada $2 oleh fungsi \"{{int:emailuser}}\" di {{SITENAME}}.",
        "usermessage-summary": "Meninggalkan pesanan sistem.",
        "usermessage-editor": "Utusan sistem",
        "watchlist": "Senarai pantau",
index 361049c..3fcfbff 100644 (file)
        "emailuser": "Ikteb lil dan l-utent",
        "emailuser-title-target": "Ibgħat lill-{{GENDER:$1|utent}}",
        "emailuser-title-notarget": "Ibgħat ittre lil utent",
-       "emailpage": "Ibgħat messaġġ lil dan l-utent bil-posta elettronika",
        "emailpagetext": "Tista' tuża' din il-formola t'hawn taħt sabiex tibgħat ittra elettronika lil dan l-{{GENDER:$1|utent}}.\nL-indirizz elettroniku li daħħalt fil-[[Special:Preferences|preferenzi]] jidher fl-ispazju \"Minn\" tal-messaġġ, biex dak li jirċievi l-messaġġ ikun jista' jagħtik risposta.",
        "defemailsubject": "Messaġ minn {{SITENAME}} mingħand l-utent \"$1\"",
        "usermaildisabled": "Il-posta elettronika tal-utent mhux attivata",
        "emailccsubject": "Kopja tal-messaġġ tiegħek lil $1: $2",
        "emailsent": "Il-messaġġ intbagħat",
        "emailsenttext": "Il-messaġġ bil-posta elettronika intbagħat.",
-       "emailuserfooter": "Din il-posta elettronika intbgħatet minn $1 lil $2 bl-użu tal-funzjoni \"{{int:emailpage}}\" fuq {{SITENAME}}.",
+       "emailuserfooter": "Din il-posta elettronika intbgħatet minn $1 lil $2 bl-użu tal-funzjoni \"{{int:emailuser}}\" fuq {{SITENAME}}.",
        "usermessage-summary": "Messaġġ tas-sistema",
        "usermessage-editor": "Messaġġier tas-sistema",
        "watchlist": "Lista ta' osservazzjonijiet",
index 63d9878..bec75f5 100644 (file)
        "mailnologin": "Bô siu-phoe ê chū-chí",
        "mailnologintext": "Lí it-tēng ài [[Special:UserLogin|teng-ji̍p]] jī-chhiáⁿ ū 1 ê ū-hāu ê e-mail chū-chí tī lí ê [[Special:Preferences|iōng-chiá siat-tēng]] chiah ē-tàng kià e-mail hō· pa̍t-ūi iōng-chiá.",
        "emailuser": "Kià e-mail hō· iōng-chiá",
-       "emailpage": "E-mail iōng-chiá",
        "emailpagetext": "Ká-sú chit ê iōng-chiá ū siat-tēng 1 ê ū-hāu ê e-mail chū-chí, lí tō ē-tàng ēng ē-kha chit tiuⁿ FORM hoat sìn-sek hō· i. Lí siat-tēng ê e-mail chū-chí ē chhut-hiān tī e-mail ê \"Kià-phoe-jîn\" (From) hit ūi. Án-ne siu-phoe-jîn chiah ū hoat-tō· kā lí hôe-phoe.",
        "noemailtitle": "Bô e-mail chū-chí",
        "noemailtext": "Chit ūi iōng-chiá pēng-bô lâu ū-hāu ê e-mail chū-chí, bô tio̍h-sī i bô beh chiap-siū pat-ūi iōng-chiá ê e-mail.",
index 96ee1c1..2dc5a97 100644 (file)
@@ -18,7 +18,6 @@
        "tog-hideminor": "Annascunne 'e cagne piccirille  'int'a ll'úrdeme cagne",
        "tog-hidepatrolled": "Annascunne 'e cagne 'verificate' 'int'a ll'úrdeme cagne",
        "tog-newpageshidepatrolled": "Annascunne 'e paggene cuntrullate 'a ll'elenco 'e ppaggene",
-       "tog-hidecategorization": "Annascunne 'a categorizzaziona d' 'e paggene",
        "tog-extendwatchlist": "Spanne ll'asservate speciale pe fà vedé tutte 'e cagnàmiente, nun solo l'ultimo",
        "tog-usenewrc": "Urdeme càgnamiente avanzate (JavaScript)",
        "tog-numberheadings": "Annúmmera automatecamente 'e títule",
@@ -48,7 +47,6 @@
        "tog-watchlisthideliu": "Annascunne 'e cagnamiénte 'e l'utente riggistrate 'a l'elenco 'e cuntrollo",
        "tog-watchlisthideanons": "Annascunne 'e cagnamiente fatte d'anonime 'a l'elenco 'e cuntrollo",
        "tog-watchlisthidepatrolled": "Annascunne 'e modifiche cuntrullate 'a l'elenco 'e cuntrollo",
-       "tog-watchlisthidecategorization": "Annascunne 'a categorizzazione d' 'e paggene",
        "tog-ccmeonemails": "Famme na masciata pùre c' 'a copia 'e le mail mannate a l'ati utente",
        "tog-diffonly": "Nun me fà vedé cuntenute aropp'o cunfronto nfra verziune",
        "tog-showhiddencats": "Fa' vedé 'e categurie annascunnute",
        "createacct-benefit-body2": "{{PLURAL:$1|paggena|paggene}}",
        "createacct-benefit-body3": "{{PLURAL:$1|contribbutòre recente|contribbuttore recente}}",
        "badretype": "'E passwords ch'è mis nun songe eguale.",
+       "usernameinprogress": "Na criazione 'e cunto pe' st'utente è già nprugresso. Pe' piacere aspettate.",
        "userexists": "'O nomme utente ch'avete miso è già ausàto.\nPe' piacere sciglite n'atu nomme.",
        "loginerror": "Probblema 'e accièsso",
        "createacct-error": "Errore 'e criazione 'e cunto",
        "rcshowhidemine": "$1 'e ffatiche mieie",
        "rcshowhidemine-show": "Faje vedé",
        "rcshowhidemine-hide": "Annascunne",
-       "rcshowhidecategorization": "$1 categorizzaziona d' 'a paggena",
-       "rcshowhidecategorization-show": "Faje vedé",
-       "rcshowhidecategorization-hide": "Annascunne",
        "rclinks": "Faje vedé ll'urdeme $1 cagnamiente dint' ll'urdeme $2 juorne<br />$3",
        "diff": "diff",
        "hist": "cron",
        "recentchangeslinked-summary": "Chest'è n'alenco d' 'e cagnamiente fatte mò a 'e paggene cullegate 'a chilla specificata (o pe' cuntenute dint'a na categurìa specificata). 'E paggene cuntenute dint' 'o proprio elenco 'e l'[[Special:Watchlist|Paggene cuntrullate]] songo mmustate 'n '''grassetto'''.",
        "recentchangeslinked-page": "Nomme dda paggena",
        "recentchangeslinked-to": "Mmusta sulamente 'e cagnamiente a 'e paggene cullegate a chilla specificata",
-       "recentchanges-page-added-to-category": "[[:$1]] azzeccato â categurìa",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] e {{PLURAL:$2|na paggena|$2 paggene}} azzeccate â categurìa",
-       "recentchanges-page-removed-from-category": "[[:$1]] luvato d' 'a categurìa",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] e {{PLURAL:$2|na paggena|$2 paggena}} luvate d' 'a categurìa",
        "upload": "Carreca file",
        "uploadbtn": "Carreca file",
        "reuploaddesc": "Torna a 'o modulo pe ffà 'a carreca",
        "emailuser": "Email chisto utente",
        "emailuser-title-target": "Manna n'email a chist'{{GENDER:$1|utente}}",
        "emailuser-title-notarget": "E-mail 'e l'utente",
-       "emailpage": "E-mail 'e l'utente",
        "emailpagetext": "Putite ausà 'o modulo ccà abbascio pe' mannà na mmasciata e-mail a st'{{GENDER:$1|utente}}.\nL'indirizzo e-mail ch'avite nzertàto dint' 'e [[Special:Preferences|preferenze vuoste]] accumpararrà dint' 'o campo \"'A\" dint' 'a mmasciata e-mail, accussì chillo ca ricevese 'a mail 'o sape ca v'avess'a risponnere direttamente a vuje.",
        "defemailsubject": "e-mail 'e {{SITENAME}} 'a l'utente \"$1\"",
        "usermaildisabled": "L'e-mail utente è stutato",
        "emailccsubject": "Copia d' 'a mmasciata tua 'a $1: $2",
        "emailsent": "Mmasciata e-mail mannata",
        "emailsenttext": "'A mmasciata d' 'a toja s'è mannata.",
-       "emailuserfooter": "Chista mmasciata e-mail è stata mannata 'a $1 a $2 p' 'a funziona \"{{int:emailpage}}\" 'e {{SITENAME}}.",
+       "emailuserfooter": "Chista mmasciata e-mail è stata mannata 'a $1 a $2 p' 'a funziona \"{{int:emailuser}}\" 'e {{SITENAME}}.",
        "usermessage-summary": "Lassanno na mmasciata 'e sistema.",
        "usermessage-editor": "Mmasciatore d' 'o sistema",
        "watchlist": "Paggene cuntrullate",
        "logentry-newusers-create2": "'O cunto utente $3 fuje {{GENDER:$2|criato|criata}} pe' $1",
        "logentry-newusers-byemail": "'O cunto utente $3 fuje {{GENDER:$2|criato|criata}} pe' $1 e 'a passuor è stata mannata pe' bbìa 'e na mmasciata e-mail",
        "logentry-newusers-autocreate": "'O cunto utente $1 fuje {{GENDER:$2|criato|criata}} automatecamente",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|spustaje}} mpustaziune 'e pruteziona 'a $4 a $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|cagnaje}} 'e gruppo pe' $3 'a $4 a $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|cagnaje}} 'e gruppo pe' $3",
        "logentry-rights-autopromote": "$1 è {{GENDER:$2|stato promosso|stata promossa}} automatecamente 'a $4 a $5",
index 630cb5b..d4048dc 100644 (file)
        "emailuser": "E-post til denne brukeren",
        "emailuser-title-target": "Send e-post til denne {{GENDER:$1|brukeren}}",
        "emailuser-title-notarget": "E-post til bruker",
-       "emailpage": "E-post til bruker",
        "emailpagetext": "Du kan bruke skjemaet under for å sende en e-post til denne {{GENDER:$1|brukeren}}.\nE-postadressen du har satt i [[Special:Preferences|innstillingene dine]] vil vises i «Fra»-feltet i e-posten, slik at mottakeren kan svare deg direkte.",
        "defemailsubject": "E-post fra {{SITENAME}}-brukeren «$1»",
        "usermaildisabled": "Brukerepost deaktivert",
        "emailccsubject": "Kopi av din beskjed til $1: $2",
        "emailsent": "E-post sendt",
        "emailsenttext": "E-postbeskjeden er sendt",
-       "emailuserfooter": "Denne e-posten ble sendt av $1 til $2 via funksjonen «{{int:emailpage}}» på {{SITENAME}}.",
+       "emailuserfooter": "Denne e-posten ble sendt av $1 til $2 via funksjonen «{{int:emailuser}}» på {{SITENAME}}.",
        "usermessage-summary": "Etterlater en systembeskjed.",
        "usermessage-editor": "Systembudbringer",
        "watchlist": "Overvåkningsliste",
index 059c931..dcf2b1c 100644 (file)
        "privacy": "गोपनियता नीति",
        "privacypage": "Project:गोपनीयता नीति",
        "badaccess": "अनुमतिमा त्रुटि",
-       "badaccess-group0": "तपाà¤\88लà¥\87 à¤\85नà¥\81रà¥\8bध à¤\97रà¥\8dनà¥\81भà¤\8fà¤\95à¥\8b à¤\95ारà¥\8dय à¤\97रà¥\8dन à¤¤à¤ªà¤¾à¤\88लाई अनुमति दिइएको छैन।",
+       "badaccess-group0": "तपाà¤\88à¤\81लà¥\87 à¤\85नà¥\81रà¥\8bध à¤\97रà¥\87à¤\95à¥\8b à¤\95ारà¥\8dय à¤\97रà¥\8dन à¤¤à¤ªà¤¾à¤\88à¤\82लाई अनुमति दिइएको छैन।",
        "badaccess-groups": "तपाईंले अनुरोध गर्नुभएको कार्य  {{PLURAL:$2|समूह |कुनै एक समूह}}: $1 मा रहेका प्रयोगकर्ताहरूले मात्र गर्नसक्छन ।",
        "versionrequired": "MediaWiki संस्करण $1 चाहिने",
        "versionrequiredtext": "यो पृष्ठ प्रयोग गर्नको लागि MediaWiki $1 संस्करण चाहिन्छ ।\nहेर्नुहोस्  [[Special:Version|version page]]",
        "nstab-help": "सहायता पृष्ठ",
        "nstab-category": "श्रेणी",
        "nosuchaction": "यस्तो कार्य हैन",
-       "nosuchactiontext": "URL à¤²à¥\87 à¤\96à¥\81लाà¤\8fà¤\95à¥\8b à¤\95ारà¥\8dय à¤®à¤¾à¤¨à¥\8dय à¤\9bà¥\88न à¥¤\nतपाà¤\88लà¥\87 URL à¤\97लत à¤\9fाà¤\87पà¤\97रà¥\8dनà¥\81 à¤­à¤\8fà¤\95à¥\8b , à¤µà¤¾ à¤\97लत à¤²à¤¿à¤\82à¤\95 à¤ªà¤\9bà¥\8dयाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤¹à¥\81नसà¤\95à¥\8dà¤\9b à¥¤\nयस{{SITENAME}}ले सफ्टवेयरमा भएको गल्ति देखाएको पनि हुनसक्छ ।",
+       "nosuchactiontext": "URL à¤²à¥\87 à¤\96à¥\81लाà¤\8fà¤\95à¥\8b à¤\95ारà¥\8dय à¤®à¤¾à¤¨à¥\8dय à¤\9bà¥\88न à¥¤\nतपाà¤\88à¤\82लà¥\87 URL à¤\97लत à¤\9fाà¤\87पà¤\97रà¥\8dनà¥\81 à¤­à¤\8fà¤\95à¥\8b , à¤µà¤¾ à¤\97लत à¤²à¤¿à¤\82à¤\95 à¤ªà¤\9bà¥\8dयाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤¹à¥\81नसà¤\95à¥\8dà¤\9b à¥¤\nयà¥\8b{{SITENAME}}ले सफ्टवेयरमा भएको गल्ति देखाएको पनि हुनसक्छ ।",
        "nosuchspecialpage": "त्यस्तो विशेष पृष्ठ छैन",
        "nospecialpagetext": "<strong>तपाईँले अनुरोध गर्नुभएको विशेष पृष्ठ अमान्य छ ।</strong>\n\nमान्य पृष्ठहरूको सूची यहाँ [[Special:SpecialPages|{{int:specialpages}}]] उपलब्ध छ ।",
        "error": "त्रुटि",
        "viewsource": "स्रोत हेर्नुहोस",
        "viewsource-title": " $1 को स्रोत हेर्नुहोस",
        "actionthrottled": "कार्य रोकियो",
-       "actionthrottledtext": "स्पामबाट बच्ने तरिकाको रुपमा , तपाईँलाई यो कार्य थोरै समयमा धेरै पटक गर्नबाट सिमित गरिएको छ, र तपाईले आफ्नो सिमा पार गरिसक्नु भयो ।\nकृपया केही मिनेटहरु पछि पुन: प्रयास गर्नुहोस्  ।",
+       "actionthrottledtext": "स्पाम रोकथामको लागि , तपाईँलाई यो कार्य थोरै समयमा धेरै पटक गर्नबाट सिमित गरिएको छ, र तपाईंले आफ्नो सिमा पार गरिसक्नु भयो ।\nकृपया केही मिनेट पछि पुन: प्रयास गर्नुहोस्  ।",
        "protectedpagetext": "यो पृष्ठ सम्पादन हुनबाट बचाउन सम्पादनमा तथा अन्यकार्यमा रोक लगाइएको छ।",
        "viewsourcetext": "तपाईँले यस पृष्ठको स्रोत हेर्न र प्रतिलिपी गर्न सक्नुहुन्छ ।",
        "viewyourtext": "यस पृष्ठमा रहेका '''तपाईँका सम्पादनहरू''' हेर्न या प्रतिलिपी गर्न सक्नुहुन्छ :",
        "createacct-benefit-body2": "{{PLURAL:$1|पृष्ठ|पृष्ठहरू}}",
        "createacct-benefit-body3": "हालैका {{PLURAL:$1|योगदानकर्ता|योगदानकर्ताहरू}}",
        "badretype": "तपाईंले दिनुभएको पासवर्ड मिल्दैन।",
-       "userexists": "तपाà¤\88लà¥\87 à¤ªà¥\8dरविषà¥\8dà¤\9f à¤\97रà¥\8dनà¥\81भà¤\8fà¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95à¥\8b नाम पहिले देखिनै प्रयोगमा छ ।\nकृपया फरक नाम छान्नुहोस् ।",
+       "userexists": "तपाà¤\88à¤\82लà¥\87 à¤ªà¥\8dरविषà¥\8dà¤\9f à¤\97रà¥\8dनà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता नाम पहिले देखिनै प्रयोगमा छ ।\nकृपया फरक नाम छान्नुहोस् ।",
        "loginerror": "प्रवेश त्रुटि",
        "createacct-error": "खाता बनाउँदा त्रुटि",
        "createaccounterror": "खाता बनाउन सकिएन: $1",
        "nocookieslogin": "{{SITENAME}} ले प्रयोगकर्ता प्रवेश गराउन कुकीहरू प्रयोग गर्छ । तपाईँको कुकीहरू निस्क्रिय गरिएको छ। कृपया सक्रिय बनाइ , नाम र प्रवेशशव्द राखी प्रवेश गर्नुहोला ।",
        "nocookiesfornew": "प्रयोगकर्ताको खाता निर्माण गरिएन, हामीले यसको मूल स्रोत निर्धारण गर्न सकेनौं।\nनिश्चित गर्नुहोस् तपाईंले कुकी सक्रिय गर्नुभएको छ, पुनः यस पृष्ठलाई खोल्ने प्रयास गर्नुहोस्।",
        "nocookiesforlogin": "{{int:nocookieslogin}}",
-       "noname": "तपाईले सही प्रयोगकर्ता नाम दिनु भएन।",
+       "noname": "तपाà¤\88à¤\82लà¥\87 à¤¸à¤¹à¥\80 à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¨à¤¾à¤® à¤¦à¤¿à¤¨à¥\81 à¤­à¤\8fन।",
        "loginsuccesstitle": "प्रवेश सफल",
        "loginsuccess": "'''तपाईंले {{SITENAME}}मा  \"$1\" को रुपमा प्रवेश गर्नुभएकोछ।'''",
        "nosuchuser": "\"$1\" को नामबाट कुनै पनि प्रयोगकर्ता भेटिएनन् ।\nप्रयोगकर्ता नाम वर्णसंवेदनशील हुन्छन् ।\nहिज्जे जाँच्नुहोस् , या [[Special:UserLogin/signup|नयाँ खाता बनाउनुहोस्]].",
        "login-migrated-generic": "तपाईंको खाता स्थानान्तरण भएको छ, र तपाईंको प्रयोगकर्ता नाम यस विकिमा छैन ।",
        "loginlanguagelabel": "भाषा: $1",
        "suspicious-userlogout": "तपाईंको निर्गमन अनुरोध अस्विकार गरिन्छ किन कि यो खराब ब्राउजर वा क्यासिङ प्रोक्सिले पठाएको जस्तो देखिन्छ।",
-       "createacct-another-realname-tip": "वासà¥\8dतविà¤\95 à¤¨à¤¾à¤® à¤\90à¤\9aà¥\8dà¤\9bिà¤\95 à¤¹à¥\8b à¥¤\nतपाà¤\88लà¥\87 à¤¯à¥\8b à¤\96à¥\81लाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤\96णà¥\8dडमा à¤¤à¤ªà¤¾à¤\88को काममा प्रयोगकर्ता श्रेय दिनको लागि यसको प्रयोग गरिने छ ।",
+       "createacct-another-realname-tip": "वासà¥\8dतविà¤\95 à¤¨à¤¾à¤® à¤\90à¤\9aà¥\8dà¤\9bिà¤\95 à¤¹à¥\8b à¥¤\nतपाà¤\88à¤\82लà¥\87 à¤¯à¥\8b à¤\96à¥\81लाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤\96णà¥\8dडमा à¤¤à¤ªà¤¾à¤\88à¤\82को काममा प्रयोगकर्ता श्रेय दिनको लागि यसको प्रयोग गरिने छ ।",
        "pt-login": "प्रवेश (लग ईन)",
        "pt-login-button": "प्रवेश",
        "pt-createaccount": "खाता खोल्नुहोस्",
        "passwordreset-emailsent-capture": "पासवर्ड परिवर्तनको लागि इमेल पठाइयो, जुन तल देखाइएकोछ।",
        "passwordreset-emailerror-capture": "पासवर्ड रिसेट इमेल जारि गरिएको छ, जुन तल देखाइएको छ, तर यसलाई {{GENDER:$2|प्रयोगकर्ता}}मा पठाउन विफल भयो: $1",
        "changeemail": "इमेल ठेगाना परिवर्तन गर्नुहोस",
-       "changeemail-text": "à¤\86फà¥\8dनà¥\8b à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤¯à¥\8b à¤«à¤¾à¤°à¤® à¤­à¤°à¥\8dनà¥\81हà¥\8bस। à¤¯à¤¸à¤²à¤¾à¤\88 à¤ªà¥\81षà¥\8dà¤\9fि à¤\97रà¥\8dन à¤¤à¤ªà¤¾à¤\88ले आफ्नो पासवर्ड हाल्नु पर्नेछ।",
+       "changeemail-text": "à¤\86फà¥\8dनà¥\8b à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤¯à¥\8b à¤«à¤¾à¤°à¤® à¤­à¤°à¥\8dनà¥\81हà¥\8bसà¥\8d à¥¤ à¤¯à¤¸à¤²à¤¾à¤\88 à¤ªà¥\81षà¥\8dà¤\9fि à¤\97रà¥\8dन à¤¤à¤ªà¤¾à¤\88à¤\82ले आफ्नो पासवर्ड हाल्नु पर्नेछ।",
        "changeemail-no-info": "यस पृष्ठमा सिधै जानको लागि प्रवेश गर्नु पर्ने हुन्छ ।",
        "changeemail-oldemail": "हालको इमेल-ठेगाना:",
        "changeemail-newemail": "नयाँ इमेल-ठेगाना:",
        "blankarticle": "<strong>चेतावनी:</strong> तपाईं एउटा खालि पृष्ठको निर्माण गर्दै हुनुहुन्छ।\nयदि तपाईं \"{{int:savearticle}}\" लाई पुनः थिच्नुहुन्छ भने पृष्ठ बिना कुनै सामग्री नै निर्मित गरिनेछ।",
        "anoneditwarning": "<strong>चेतावनी:</strong> तपाईँले प्रवेश गर्नु भएको छैन । तपाईँको आइपि ठेगाना पृष्ठ सम्पादन इतिहासमा दर्ता गरिने छ र यो सबैले हेर्न सक्छन । यदि तपाईं <strong>[$1 लगईन]</strong> वा <strong>[$2 नयाँ खाता बनाउने] गर्नुभयो भने तपाईंद्वारा गरिएको सम्पादन तपाईंको प्रयोगकर्तानाममा जोडिनेछ।",
        "anonpreviewwarning": "''तपाईंले प्रवेश गर्नु भएको छैन। संग्रह (Save) गरेको खण्डमा पृष्ठको इतिहासमा तपाईंको IP ठेगाना अंकित गरिनेछ।''",
-       "missingsummary": "'''यादà¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d :''' à¤¤à¤ªà¤¾à¤\88लà¥\87 à¤¸à¤®à¥\8dपादन à¤¸à¤¾à¤°à¤¾à¤\82श à¤¦à¤¿à¤¨à¥\81भà¤\8fà¤\95à¥\8b à¤\9bà¥\88न à¥¤\nयदि à¤¤à¤ªà¤¾à¤\88लà¥\87 à¤¸à¤\82à¤\97à¥\8dरहà¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d  थिच्नुभयो भने , सारांश बिना नै संग्रहित गरिने छ ।",
+       "missingsummary": "'''यादà¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d :''' à¤¤à¤ªà¤¾à¤\88à¤\82लà¥\87 à¤¸à¤®à¥\8dपादन à¤¸à¤¾à¤°à¤¾à¤\82श à¤¦à¤¿à¤¨à¥\81भà¤\8fà¤\95à¥\8b à¤\9bà¥\88न à¥¤\nयदि à¤¤à¤ªà¤¾à¤\88à¤\82लà¥\87 \"{{int:savearticle}}\"  थिच्नुभयो भने , सारांश बिना नै संग्रहित गरिने छ ।",
        "selfredirect": "<strong>चेतावनी:</strong> तपाईं यस पृष्ठलाई आफुमा पुनः निर्देशित गर्दै हुनुहुन्छ।\nहुनसक्छ तपाईं अनुप्रेषितको लागि गलत लक्ष्य निर्दिष्ट गर्दै हुनुहुन्छ, वा गलत पृष्ठको सम्पादन गर्दै हुनुहुन्छ।\nतपाईं पुनः एकपटक \"{{int:savearticle}}\" क्लिक गर्नुहुन्छ, पुनः निर्देशित त्यसै पनि बनाइनेछ।",
        "missingcommenttext": "कृपया टिप्पणी प्रविष्ठ गर्नुहोस् ।",
        "missingcommentheader": "'''याद गर्नुहोस् :''' तपाईँले टिप्पणीमा विषय /शीर्ष पंक्ति  दिनुभएको छैन ।\nतपाईँले फेरि \"{{int:savearticle}}\"  थिच्नु भएमा , तपाईंको सम्पादन यसै रुपमा संग्रहित हुनेछ ।",
        "subject-preview": "विषय/शीर्षपंक्ति पूर्वरुप:",
        "previewerrortext": "तपाईंको परिवर्तनको पूर्वावलोकन बनाउन खोज्दा समस्या आएको छ ।",
        "blockedtitle": "प्रयोककर्तालाई रोक लगाइएको छ",
-       "blockedtext": "'''तपाà¤\88à¤\81à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¨à¤¾à¤® à¤¯à¤¾ IP à¤ à¥\87à¤\97ानालाà¤\88 à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤\9b à¥¤'''\n\nरà¥\8bà¤\95 à¤²à¤\97ाà¤\89नà¥\87  $1.\nरà¥\8bà¤\95 à¤²à¤\97ाà¤\89नाà¤\95à¥\8b à¤\95ारण ''$2''.\n\n* à¤°à¥\8bà¤\95 à¤¸à¥\81रà¥\82 à¤¹à¥\81नà¥\87 : $8\n* à¤°à¥\8bà¤\95 à¤¸à¤\95िनà¥\87: $6\n* à¤°à¥\8bà¤\95बाà¤\9f à¤²à¤\95à¥\8dषित: $7\n\nतपाà¤\88लà¥\87  $1 à¤µà¤¾ à¤\85रà¥\81 à¤\95à¥\81नà¥\88  [[{{MediaWiki:Grouppage-sysop}}|administrator]] à¤¸à¤\81à¤\97 à¤°à¥\8bà¤\95à¤\95à¥\8b à¤¬à¤¾à¤°à¥\87मा à¤\9bलफल à¤\97रà¥\8dन à¤¸à¤®à¥\8dपरà¥\8dà¤\95 à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¥¤\nतपाà¤\88à¤\81लà¥\87  'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dतालाà¤\88 à¤\87-मà¥\87ल à¤\97रà¥\8dनà¥\87 ' à¤¸à¥\81विधा à¤®à¤¾à¤¨à¥\8dय à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना [[Special:Preferences|account preferences]] à¤®à¤¾ à¤¨à¤\96à¥\81लाà¤\8f à¤¸à¤®à¥\8dम à¤ªà¥\8dरयà¥\8bà¤\97à¤\97रà¥\8dन à¤ªà¤¾à¤\89नà¥\81हà¥\81नà¥\87 à¤\9bà¥\88न à¤° à¤¯à¤¸à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dनबाà¤\9f à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤\9bà¥\88न à¥¤\nतपाà¤\88को IP ठेगाना $3 को, र रोक्का संख्या #$5.\nकृपया तपाईँको प्रश्नमा सबै जानकारी खुलाउनुहोला ।",
-       "autoblockedtext": "तपाईंको IP ठेगानामाथि रोक लगाइएकोछ किन भनें यो अर्को प्रयोगकर्ताले प्रयोग गरेको थियो, जसलाई $1ले रोक लगाएका थिए। \nरोक लगाउनुको कारण:\n:''$2''  \n\n* रोकावट सुरु: $8\n* रोकावट सकिने: $6\n* रोकावटको प्रयोजन: $7\n\nतपाईंले $1 सित संपर्क गर्न सक्नुहुन्छ अथवा कुनै [[{{MediaWiki:Grouppage-sysop}}|प्रबन्धकसित]] रोकबारे चर्चा गर्न सक्नुहु्न्छ।\n\nध्यान दिनुहोस् कि तपाईंले यस प्रयोगकर्ताका लागि ई-मेलको प्रयोग तबसम्म गर्नसक्नुहुन्न जबसम्म तपाईको [[Special:Preferences|अभिरुचि]] पंजिकृत गर्नु हुन्न वा यस ई-मेलको प्रयोगमाथि रोक लगाइएको हुँदैन। \n\nतपाईंको वर्तमान IP ठेगाना हो- $3, अनि रोक लगाइएको ID हो- #$5.\nकृपया कुनै बेला सोधनी गर्नु परे उपर्युक्त विवरण दर्शाउनु होला।",
+       "blockedtext": "'''तपाà¤\88à¤\81à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¨à¤¾à¤® à¤¯à¤¾ IP à¤ à¥\87à¤\97ानालाà¤\88 à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤\9b à¥¤'''\n\nरà¥\8bà¤\95 à¤²à¤\97ाà¤\89नà¥\87  $1.\nरà¥\8bà¤\95 à¤²à¤\97ाà¤\89नाà¤\95à¥\8b à¤\95ारण ''$2''.\n\n* à¤°à¥\8bà¤\95 à¤¸à¥\81रà¥\82 à¤¹à¥\81नà¥\87 : $8\n* à¤°à¥\8bà¤\95 à¤¸à¤\95िनà¥\87: $6\n* à¤°à¥\8bà¤\95बाà¤\9f à¤²à¤\95à¥\8dषित: $7\n\nतपाà¤\88à¤\82लà¥\87  $1 à¤µà¤¾ à¤\85रà¥\81 à¤\95à¥\81नà¥\88  [[{{MediaWiki:Grouppage-sysop}}|पà¥\8dरवनà¥\8dधà¤\95]] à¤¸à¤\81à¤\97 à¤°à¥\8bà¤\95à¤\95à¥\8b à¤¬à¤¾à¤°à¥\87मा à¤\9bलफल à¤\97रà¥\8dन à¤¸à¤®à¥\8dपरà¥\8dà¤\95 à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¥¤\nतपाà¤\88à¤\81लà¥\87  'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dतालाà¤\88 à¤\87-मà¥\87ल à¤\97रà¥\8dनà¥\87 ' à¤¸à¥\81विधा à¤®à¤¾à¤¨à¥\8dय à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना [[Special:Preferences|à¤\85भिरà¥\81à¤\9aà¥\80हरà¥\82]]मा à¤¨à¤\96à¥\81लाà¤\8f à¤¸à¤®à¥\8dम à¤ªà¥\8dरयà¥\8bà¤\97à¤\97रà¥\8dन à¤ªà¤¾à¤\89नà¥\81हà¥\81नà¥\87 à¤\9bà¥\88न à¤° à¤¯à¤¸à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dनबाà¤\9f à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤\9bà¥\88न à¥¤\nतपाà¤\88à¤\82को IP ठेगाना $3 को, र रोक्का संख्या #$5.\nकृपया तपाईँको प्रश्नमा सबै जानकारी खुलाउनुहोला ।",
+       "autoblockedtext": "तपाईंको IP ठेगानामाथि रोक लगाइएकोछ किन भनें यो अर्को प्रयोगकर्ताले प्रयोग गरेको थियो, जसलाई $1ले रोक लगाएका थिए। \nरोक लगाउनुको कारण:\n:''$2''  \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": "तपाईंले पृष्ठ संपादन गर्नअघि आफ्नो ई-मेल ठेगानाको पुष्टि गर्नुपर्छ।\nकृपया ई-मेल ठेगाना तयार गरी [[Special:Preferences|प्रयोगकर्ता अभिरूचि]] मार्फत मंजुर गराउनुहोस्।",
        "nosuchsectiontext": "तपाईं त्यस्तो खण्डको सम्पादन गर्ने प्रयास गर्नुभयो जो अस्तित्वमा छैन।\nयो सारिएको अथवा मेटाइएको हुनुपर्छ जब तपाईं यस पृष्ठलाई हेर्नुहुँदैथियो।",
        "loginreqtitle": "प्रवेशगर्नु जरुरी छ।",
        "loginreqlink": "प्रवेश (लग ईन)",
-       "loginreqpagetext": "अरु पृष्ठहेर्न तपाईले $1 गर्नुपर्छ ।",
+       "loginreqpagetext": "अरु पृष्ठ हेर्न तपाईंले $1 गर्नुपर्छ ।",
        "accmailtitle": "पासवर्ड पठाइयो",
        "accmailtext": "जथाभावीरूपमा सृजना गरिएको प्रवेशशब्द प्रयोगकर्ता [[User talk:$1|$1]] को  $2 मा पठाइएको छ।\n\nयो नयाँ खाताको प्रवेशशब्द  ''[[Special:ChangePassword|change password]]'' मा प्रवेश गरेर परिवर्तन गर्न सकिन्छ ।",
        "newarticle": "(नयाँ)",
        "revdelete-modify-no-access": "  $2समय र $1 मिति भएको वस्तु परिवर्तन गर्न सकिएन यसलाई \"निषेधित\"भनि चिनो लगाइएको छ।\nयसलाई परिवर्तन गर्न तपाईसँग अनुमती छैन ।",
        "revdelete-modify-missing": "आइडी  $1 रहेको वस्तु परिवर्तन गर्दा त्रुटी भएको छ: यस वस्तु डेटावेसबाट हराइरहेको छ !",
        "revdelete-no-change": "'''चेतावनी:''' $2, $1मिति भइको वस्तुको पहिले नै अनुरोध गरे अनुसारको दृश्य सेटिङ्गहरु छन् ।",
-       "revdelete-concurrent-change": " $2, $1 मिति गरिएको वस्तु परिवर्तन गर्न सकिएन: यसको स्थितीले तपाईले परिवर्तन गर्नलाग्नुहुँदा कोहीअरुले नै परिवर्तन गरेजस्तो देखाउँछ\nकृपया लगहरू हेर्नुहोला ।",
-       "revdelete-only-restricted": "$2, $1 à¤®à¤¿à¤¤à¤¿ à¤­à¤\8fà¤\95à¥\8b à¤µà¤¸à¥\8dतà¥\81 à¤²à¥\81à¤\95ाà¤\89दा à¤¤à¥\8dरà¥\81à¤\9fà¥\80 à¤­à¤\8fà¤\95à¥\8b à¤\9b:तपाà¤\88लà¥\87 à¤µà¤¸à¥\8dतà¥\81हरà¥\81लाà¤\88 à¤ªà¥\8dरवनà¥\8dधà¤\95हरà¥\81à¤\95à¥\8b à¤¦à¥\83षà¥\8dà¤\9fà¥\80बाà¤\9f à¤¦à¤®à¤¨ à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dन à¤\85à¤\9d à¤\95à¥\81नà¥\88 à¤ªà¤¨à¤¿ à¤\85रà¥\81 à¤¦à¥\83षà¥\8dà¤\9fà¥\80 à¤µà¤¿à¤\95लà¥\8dपहरà¥\81 नछानीकन।",
+       "revdelete-concurrent-change": " $2, $1 à¤®à¤¿à¤¤à¤¿ à¤\97रिà¤\8fà¤\95à¥\8b à¤µà¤¸à¥\8dतà¥\81 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤¸à¤\95िà¤\8fन: à¤¯à¤¸à¤\95à¥\8b à¤¸à¥\8dथितà¥\80लà¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82लà¥\87 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dनलाà¤\97à¥\8dनà¥\81हà¥\81à¤\81दा à¤\95à¥\8bहà¥\80à¤\85रà¥\81लà¥\87 à¤¨à¥\88 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\87à¤\9cसà¥\8dतà¥\8b à¤¦à¥\87à¤\96ाà¤\89à¤\81à¤\9b\nà¤\95à¥\83पया à¤²à¤\97हरà¥\82 à¤¹à¥\87रà¥\8dनà¥\81हà¥\8bला à¥¤",
+       "revdelete-only-restricted": "$2, $1 à¤®à¤¿à¤¤à¤¿ à¤­à¤\8fà¤\95à¥\8b à¤µà¤¸à¥\8dतà¥\81 à¤²à¥\81à¤\95ाà¤\89दा à¤¤à¥\8dरà¥\81à¤\9fà¥\80 à¤­à¤\8fà¤\95à¥\8b à¤\9b:तपाà¤\88à¤\82लà¥\87 à¤µà¤¸à¥\8dतà¥\81हरà¥\82लाà¤\88 à¤ªà¥\8dरवनà¥\8dधà¤\95हरà¥\82à¤\95à¥\8b à¤¦à¥\83षà¥\8dà¤\9fà¥\80बाà¤\9f à¤¦à¤®à¤¨ à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dन à¤\85à¤\9d à¤\95à¥\81नà¥\88 à¤ªà¤¨à¤¿ à¤\85रà¥\81 à¤¦à¥\83षà¥\8dà¤\9fà¥\80 à¤µà¤¿à¤\95लà¥\8dपहरà¥\82 नछानीकन।",
        "revdelete-reason-dropdown": "मेटाउनका सामान्य कारणहरु\n** कपीराइट उल्लंघन\n** अनुचित व्यक्तिगत जानकारी\n** अनुचित प्रयोगकर्ता नाम\n** संभावित अपमानजनक जानकारी",
        "revdelete-otherreason": "अन्य/थप कारण:",
        "revdelete-reasonotherlist": "अरु कारण",
        "powersearch-togglenone": "कुनै पनि होइन",
        "powersearch-remember": "चयन गरिएको लाई भविष्यमा गरिने खोजहरूको लागि सम्झिने",
        "search-external": "बाह्य खोज",
-       "searchdisabled": "{{SITENAME}} à¤\96à¥\8bà¤\9c à¤¨à¤¿à¤¸à¥\8dà¤\95à¥\8dरिय à¤ªà¤¾à¤°à¤¿à¤\8fà¤\95à¥\8b à¤\9b à¥¤\nहाललाà¤\88 à¤¤à¤ªà¤¾à¤\88लà¥\87 à¤\97à¥\82à¤\97लदà¥\8dवारा à¤\96à¥\8bà¤\9cà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¥¤\nयाद à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d à¤\89नà¥\80हरà¥\81को {{SITENAME}}को सूची सामग्री पुरानो भएको हुनसक्छ ।",
+       "searchdisabled": "{{SITENAME}} à¤\96à¥\8bà¤\9c à¤¨à¤¿à¤¸à¥\8dà¤\95à¥\8dरिय à¤ªà¤¾à¤°à¤¿à¤\8fà¤\95à¥\8b à¤\9b à¥¤\nहाललाà¤\88 à¤¤à¤ªà¤¾à¤\88à¤\82 à¤\97à¥\82à¤\97लदà¥\8dवारा à¤\96à¥\8bà¤\9cà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¥¤\nयाद à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d à¤\89नà¥\80हरà¥\82को {{SITENAME}}को सूची सामग्री पुरानो भएको हुनसक्छ ।",
        "search-error": "खोज्ने क्रममा समस्या देखियोः $1",
        "preferences": "रोजाइहरू",
        "mypreferences": "प्राथमिकताहरू",
        "prefs-custom-css": "अनुकुलित CSS",
        "prefs-custom-js": "अनुकुलित JS",
        "prefs-common-css-js": "साझा CSS/जाभा स्क्रिप्ट सबै त्वचा(स्किन)को लागि:",
-       "prefs-reset-intro": "तपाà¤\88लà¥\87 à¤¯à¥\8b à¤ªà¥\83षà¥\8dठ à¤\86फà¥\8dनà¥\8b à¤\85भिरà¥\81à¤\9aà¥\80हरà¥\82 à¤¸à¤¾à¤\87à¤\9f à¤ªà¥\82रà¥\8dवावसà¥\8dथामा à¤«à¤°à¥\8dà¤\95ाà¤\89न à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¥¤\nयà¥\8b à¤°à¤¦à¥\8dद à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b ।",
+       "prefs-reset-intro": "तपाà¤\88à¤\81 à¤¯à¥\8b à¤ªà¥\83षà¥\8dठलाà¤\88 à¤\86फà¥\8dनà¥\8b à¤\85भिरà¥\81à¤\9aà¥\80हरà¥\82 à¤¸à¤¾à¤\87à¤\9f à¤ªà¥\82रà¥\8dवावसà¥\8dथामा à¤«à¤°à¥\8dà¤\95ाà¤\89न à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¥¤ à¤¤à¥\8dयस à¤ªà¤\9bि à¤¯à¤¸à¤²à¤¾à¤\88 à¤°à¤¦à¥\8dद à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dन ।",
        "prefs-emailconfirm-label": "इ-मेल एकिन प्रक्रिया :",
        "youremail": "ईमेल",
        "username": "{{GENDER:$1|प्रयोगकर्ता नाम}}:",
        "userrights-nologin": "प्रयोगकर्ता अधिकार प्रदान गर्न तपाईंले प्रबन्धक खाताबाट [[Special:UserLogin|प्रवेश]] गर्नुपर्छ।",
        "userrights-notallowed": "प्रयोगकर्तालाई अधिकार प्रदान गर्ने वा हटाउने अनुमति तपाईंलाई छैन।",
        "userrights-changeable-col": "परिवर्तन गर्न सकिने समूहहरु",
-       "userrights-unchangeable-col": "तपाà¤\88लà¥\87 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81नहà¥\81नà¥\87 à¤¸à¤®à¥\82हहरà¥\81",
+       "userrights-unchangeable-col": "तपाà¤\88à¤\82लà¥\87 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤¨à¤¸à¤\95à¥\8dनà¥\87 à¤¸à¤®à¥\82हहरà¥\82",
        "userrights-irreversible-marker": "$1*",
        "userrights-conflict": "प्रयोगकर्ताको अधिकार परिवर्तनमा मतभेद भयो ! कृपया तपाईंको परिवर्तन पुनरावलोकन तथा पुष्टि गर्नुहोस् ।",
        "userrights-removed-self": "तपाईंले सफलतापूर्वक आफ्नो अधिकारहरूलाई मेटाउनु भयो । त्यस कारण तपाईं अब यो पृष्ठ हेर्न सक्नु हुन्न ।",
        "tmp-write-error": "अस्थायी फाइल लेख्दै गर्दा त्रुटि।",
        "large-file": "यो सिफारिस गरिन्छ कि फाइलहरू  $1 भन्दा ठूला हुनु हुँदैन;\nयो फाइल $2 छ।",
        "largefileserver": "उर्ध्वभरण गरिएको फाइल सर्भरमा निर्धारित सीमा भन्दा ठूलो छ।",
-       "emptyfile": "तपाà¤\88लà¥\87 à¤\89रà¥\8dधà¥\8dवभरण à¤\97रà¥\8dनà¥\81भà¤\8fà¤\95à¥\8b à¤«à¤¾à¤\87ल à¤°à¤¿à¤¤à¥\8dतà¥\8b à¤\9b।\nयà¥\8b à¤«à¤¾à¤\87लनाम à¤\97लत à¤°à¤¾à¤\96िà¤\8fà¤\95à¥\8b à¤\95ारणलà¥\87 à¤­à¤\8fà¤\95à¥\8b à¤¹à¥\81नसà¤\95à¥\8dà¤\9b\nयà¥\8b à¤«à¤¾à¤\87ल à¤¸à¤¾च्चै उर्ध्वभरण गर्नेकुरामा निश्चित हुनुहोस् ।",
+       "emptyfile": "तपाà¤\88à¤\82लà¥\87 à¤\89रà¥\8dधà¥\8dवभरण à¤\97रà¥\8dनà¥\81भà¤\8fà¤\95à¥\8b à¤«à¤¾à¤\87ल à¤°à¤¿à¤¤à¥\8dतà¥\8b à¤\9b à¥¤\nयà¥\8b à¤«à¤¾à¤\87ल à¤¨à¤¾à¤® à¤\97लत à¤°à¤¾à¤\96िà¤\8fà¤\95à¥\8b à¤\95ारणलà¥\87 à¤­à¤\8fà¤\95à¥\8b à¤¹à¥\81नसà¤\95à¥\8dà¤\9b\nयà¥\8b à¤«à¤¾à¤\87ल à¤¸à¤¾à¤\81च्चै उर्ध्वभरण गर्नेकुरामा निश्चित हुनुहोस् ।",
        "windows-nonascii-filename": "विशेष वर्ण सहितका फाइलनामहरु यस विकिद्वारा समर्थित छैनन् ।",
        "fileexists": "यो नामको फाइल पहिले नैं छ, यदि तपाईं परिवर्तन गर्ने कुरामा सुनिश्चित हुनुहुन्न भने कृपया <strong>[[:$1]]</strong> जाँच गर्नुहोस्।\n[[$1|thumb]]",
        "filepageexists": "यस फाइलको लागि विवरण पृष्ठ पहिले नै <strong>[[:$1]]</strong> बनाइ सकिएको छ, तर यस नामको कुनै फाइल अहिले उपस्थित छैन। \nतपाईं जुन विवरण दिनुहुन्छ त्यो विवरण पृष्ठमा देखिंदैन। \nतपाईंको आफ्नो विवरणलाई त्यहाँ राख्न म्यानुअली सम्पादन गर्नु पर्नेछ।\n[[$1|thumb]]",
        "filedelete": " $1 मेट्नुहोस्",
        "filedelete-legend": "फाइल मेट्ने",
        "filedelete-intro": "तपाईं फाइल <strong>[[Media:$1|$1]]</strong> लाई इतिहास समेत हटाउन जाँदै हुनुहुन्छ।",
-       "filedelete-intro-old": "तपाà¤\88लà¥\87 <strong>[[Media:$1|$1]]</strong> à¤\95à¥\8b à¤¸à¤\82सà¥\8dà¤\95रणलाà¤\88 [$4 $3, $2] à¤¹à¥\81नà¥\87 à¤\97रि à¤®à¥\87à¤\9fाà¤\89दै हुनु हुन्छ ।",
+       "filedelete-intro-old": "तपाà¤\88à¤\82 <strong>[[Media:$1|$1]]</strong> à¤\95à¥\8b à¤¸à¤\82सà¥\8dà¤\95रणलाà¤\88 [$4 $3, $2] à¤¹à¥\81नà¥\87 à¤\97रि à¤®à¥\87à¤\9fाà¤\89à¤\81दै हुनु हुन्छ ।",
        "filedelete-comment": "कारण :",
        "filedelete-submit": "मेट्ने",
        "filedelete-success": "'''$1''' मेटियो ।",
        "unusedimagestext": "निम्न फाइलहरू छन्, तर कुनै पनि पृष्ठमा प्रयोग गरिएको छैन। कृपया ध्यान दें कि अन्य वेबसाइट एउटा सिधै लिङ्कको फाइलसँग जोड्न सकिन्छ, र सक्रिय उपयोगमा हुँदा पनि यहाँ देखाउन सकिन्छ।",
        "unusedcategoriestext": "तल श्रेणीका पृष्ठहरू उपलब्ध भएता पनि उक्त पृष्ठहरूलाई अन्य पृष्ठहरू तथा श्रेणीले प्रयोग गर्न सक्दैनन् ।",
        "notargettitle": "कुनैपनि निसाना(टारगेट) छैन",
-       "notargettext": "यà¥\8b à¤\95ारà¥\8dयà¤\95à¥\8b à¤²à¤¾à¤\97à¥\80 à¤¤à¤ªà¤¾à¤\88लà¥\87 à¤\95à¥\81नà¥\88 à¤²à¤\95à¥\8dषà¥\8dयित à¤ªà¥\83षà¥\8dठ à¤µà¤¾ à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f à¤\97रà¥\8dनà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤\9bà¥\88नà¥\8d ।",
+       "notargettext": "यà¥\8b à¤\95ारà¥\8dयà¤\95à¥\8b à¤²à¤¾à¤\97à¥\80 à¤¤à¤ªà¤¾à¤\88à¤\82लà¥\87 à¤\95à¥\81नà¥\88 à¤²à¤\95à¥\8dषित à¤ªà¥\83षà¥\8dठ à¤µà¤¾ à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f à¤\97रà¥\8dनà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤\9bà¥\88न ।",
        "nopagetitle": "त्यस्तो गन्तव्या पृष्ठ भेटिएन",
-       "nopagetext": "तपाईले खुलाउनु भएको गन्तव्य पृष्ठ अस्तित्वमा  छैन।",
+       "nopagetext": "तपाà¤\88à¤\82लà¥\87 à¤\96à¥\81लाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤\97नà¥\8dतवà¥\8dय à¤ªà¥\83षà¥\8dठ à¤\85सà¥\8dतितà¥\8dवमा  à¤\9bà¥\88न।",
        "pager-newer-n": "{{PLURAL:$1|नयाँ १|नयाँ $1}}",
        "pager-older-n": "{{PLURAL:$1|पुरानो १|पुरानो $1}}",
        "suppress": "अतिदृष्टि",
        "booksources": "किताबका श्रोतहरु",
        "booksources-search-legend": "किताबका श्रोतहरु खोज्ने",
        "booksources-search": "खोज",
-       "booksources-text": "तल à¤¦à¤¿à¤\87à¤\8fà¤\95à¥\8b à¤¸à¥\82à¤\9aà¥\80 à¤¨à¤¯à¤¾à¤\81 à¤¤à¤¥à¤¾ à¤ªà¥\82राना à¤\95िताब à¤¬à¥\87à¤\9aà¥\8dनà¥\87 à¤²à¤\97ायत à¤¤à¤ªà¤¾à¤\88लà¥\87 à¤\96à¥\8bà¤\9cà¥\8dनà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤\95िताबà¤\95ा à¤¬à¤¾à¤°à¥\87मा à¤¥à¤ª à¤\9cानà¤\95ारà¥\80 à¤­à¤\8fà¤\95à¥\8b à¤\85नà¥\8dय à¤¸à¤¾à¤\87à¤\9fà¤\95ा à¤\95डिहरू हुन् ।",
+       "booksources-text": "तल à¤¦à¤¿à¤\87à¤\8fà¤\95à¥\8b à¤¸à¥\82à¤\9aà¥\80 à¤¨à¤¯à¤¾à¤\81 à¤¤à¤¥à¤¾ à¤ªà¥\82राना à¤\95िताब à¤¬à¥\87à¤\9aà¥\8dनà¥\87 à¤²à¤\97ायत à¤¤à¤ªà¤¾à¤\88à¤\82लà¥\87 à¤\96à¥\8bà¤\9cà¥\8dनà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤\95िताबà¤\95ा à¤¬à¤¾à¤°à¥\87मा à¤¥à¤ª à¤\9cानà¤\95ारà¥\80 à¤­à¤\8fà¤\95ा à¤\85नà¥\8dय à¤¸à¤¾à¤\87à¤\9fà¤\95ा à¤²à¤¿à¤\82à¤\95हरू हुन् ।",
        "booksources-invalid-isbn": "यो आइएसबीएन सहि छैन; मूल स्रोतबाट नक्कल गर्दा भएको त्रुटिको जाँच गर्नुहोस।",
        "specialloguserlabel": "निष्पादक:",
        "speciallogtitlelabel": "लक्ष्य (शीर्षक वा प्रयोगकर्ता)",
        "emailuser": "यो प्रयोगकर्तालाई ई-मेल पठाउनुहोस्",
        "emailuser-title-target": "{{GENDER:$1|प्रयोगकर्ता}}लाई इमेल गर्ने",
        "emailuser-title-notarget": "प्रयोगकर्तालाई इमेल गर्नुहोस्",
-       "emailpage": "प्रयोगकर्तालाई इमेल गर्नुहोस्",
        "emailpagetext": "तल दिइएको फर्मले तपाईं यस {{GENDER:$1|प्रयोगकर्ता}}लाई इमेल पठाउन सक्नुहुन्छ। तपाईंले जुन ठेगाना [[Special:Preferences|आफ्नो प्रयोगकर्ता अभिरूचीहरू]]मा दिनुभएको थियो त्यो यस इमेललाई \"पठाउने\" को रूपमा आउनेछ, अतः प्राप्तकर्ता तपाईंलाई सिधै जवाफ दिनसक्छ।",
        "defemailsubject": "{{SITENAME}} प्रयपोगकर्ता \"$1\" बाट इमेल",
        "usermaildisabled": "प्रयोगकर्ता इमेल निरस्त गरिएको",
        "delete-edit-reasonlist": "मेट्नुको कारण सम्पादन गर्नुहोस्",
        "delete-toobig": "यो पृष्ठको सम्पादन इतिहास धेरै र  $1 {{PLURAL:$1|पुनरावलोक|पुनरावलोकहरू}}भन्दा बढी रहेको छ।\n {{SITENAME}}मा दुर्घटनाको कारणले गडबडी आउनसक्ने कुरालाई रोक्न यस्ता पृष्ठहरूलाई मेट्नबाट निषेध गरिएको छ ।",
        "delete-warning-toobig": "This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.\nDeleting it may disrupt database operations of {{SITENAME}};\nproceed with caution.",
-       "deleteprotected": "यà¥\8b à¤ªà¥\83षà¥\8dठलाà¤\88 à¤¸à¥\81रà¤\95à¥\8dषित à¤\97रिà¤\8fà¤\95à¥\8bलà¥\87 à¤¤à¤ªà¤¾à¤\88लà¥\87 यसलाई मेटाउन सक्नु हुन्न ।",
+       "deleteprotected": "यà¥\8b à¤ªà¥\83षà¥\8dठलाà¤\88 à¤¸à¥\81रà¤\95à¥\8dषित à¤\97रिà¤\8fà¤\95à¥\8bलà¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82 यसलाई मेटाउन सक्नु हुन्न ।",
        "deleting-backlinks-warning": "'''चेतावनी:''' जुन पृष्ठ तपाईं हटाउन गइरहनु भएको छ त्यससँग [[Special:WhatLinksHere/{{FULLPAGENAME}}|अन्य पृष्ठहरू]] जोडिन्छ अथवा त्यसलाई ट्रान्सक्लयुड गर्छ।",
        "rollback": "सम्पादनहरू पछाडि लिने",
        "rollbacklink": "पहिलेको रुपमा फर्काउने",
        "proxyblockreason": "तपाईंको IP ठेगानामा रोक लगाइएको छ किनकी यो खुला प्रोक्सी हो ।\nकृपया तपाईंको इन्टरनेट सेवा प्रदायक या प्राविधिक सहायतासँग सम्पर्क गरी यस सुरक्षा समस्याको बारेमा जानकारी गराउनुहोस् ।",
        "sorbs": "DNSBL",
        "sorbsreason": "तपाईंको IP ठेगाना खुल्ला प्रोक्सीको रुपमा  DNSBL मा सूचीकरण गरिएको छ यसलाई{{SITENAME}}ले प्रयोगमा ल्याएको छ।",
-       "sorbs_create_account_reason": "तपाà¤\88à¤\95à¥\8b IP à¤ à¥\87à¤\97ाना à¤\96à¥\81लà¥\8dला à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80à¤\95à¥\8b à¤°à¥\81पमा  DNSBL à¤®à¤¾ à¤¸à¥\81à¤\9aà¥\80à¤\95रण à¤\97रिà¤\8fà¤\95à¥\8b à¤\9b à¤¯à¤¸à¤²à¤¾à¤\88{{SITENAME}}लà¥\87 à¤ªà¥\8dरयà¥\8bà¤\97मा à¤²à¥\8dयाà¤\8fà¤\95à¥\8b à¤\9b।\nतपाà¤\88ले खाता खोल्न सक्नुहुन्न ।",
+       "sorbs_create_account_reason": "तपाà¤\88à¤\82à¤\95à¥\8b IP à¤ à¥\87à¤\97ाना à¤\96à¥\81लà¥\8dला à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80à¤\95à¥\8b à¤°à¥\81पमा  DNSBL à¤®à¤¾ à¤¸à¥\82à¤\9aà¥\80à¤\95रण à¤\97रिà¤\8fà¤\95à¥\8b à¤\9b à¤¯à¤¸à¤²à¤¾à¤\88{{SITENAME}}लà¥\87 à¤ªà¥\8dरयà¥\8bà¤\97मा à¤²à¥\8dयाà¤\8fà¤\95à¥\8b à¤\9b।\nतपाà¤\88à¤\82ले खाता खोल्न सक्नुहुन्न ।",
        "xffblockreason": "एउटा आइपि ठेगाना जुन X-Forwarded-For हेडरमा रहेको छ, या त तपाईंको हो वा त्यस प्रक्सी सर्भरको हो जसको प्रयोग तपाईं गर्दै हुनुहुन्छ र यस माथि प्रतिबन्ध लगाइएको छ। वास्तविक कारण थियो:$1",
-       "cant-see-hidden-user": "तपाà¤\88लà¥\87 à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\89न à¤\96à¥\8bà¤\9cà¥\8dनà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤ªà¤¹à¤¿à¤²à¥\87 à¤¨à¥\88 à¤°à¥\8bà¤\95लà¤\97ाà¤\87 à¤²à¥\81à¤\95ाà¤\87 à¤¸à¤\95िà¤\8fà¤\95à¥\8b à¤\9b à¥¤\nतपाà¤\88सà¤\81à¤\97 hideuser à¤\85धिà¤\95ार à¤¨à¤­à¤\8fà¤\95à¥\8bलà¥\87 à¤¯à¤¸à¤²à¤¾à¤\88 à¤¹à¥\87रà¥\8dना या सम्पादन गर्न सक्नुहुन्न ।",
+       "cant-see-hidden-user": "तपाà¤\88à¤\82लà¥\87 à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\89न à¤\96à¥\8bà¤\9cà¥\8dनà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤ªà¤¹à¤¿à¤²à¥\87 à¤¨à¥\88 à¤°à¥\8bà¤\95लà¤\97ाà¤\87 à¤²à¥\81à¤\95ाà¤\87 à¤¸à¤\95िà¤\8fà¤\95à¥\8b à¤\9b à¥¤\nतपाà¤\88à¤\82सà¤\81à¤\97 hideuser à¤\85धिà¤\95ार à¤¨à¤­à¤\8fà¤\95à¥\8bलà¥\87 à¤¯à¤¸à¤²à¤¾à¤\88 à¤¹à¥\87रà¥\8dन या सम्पादन गर्न सक्नुहुन्न ।",
        "ipbblocked": "तपाईंले अरु प्रयोगकर्ताहरूलाई प्रतिबन्धित गर्न वा उनीहरूको प्रतिबन्ध खोल्न सक्नुहुन्न किनभने तपाईं आफै प्रतिबन्धित हुनुहुन्छ।",
        "ipbnounblockself": "तपाईं आफैले आफैलाई रोक खुलाउन सक्नुहुन्न ।",
        "lockdb": "डेटाबेस ताल्चामार्ने",
        "movepage-moved-redirect": "अनुप्रेषित पृष्ठ सृजना गरियो।",
        "movepage-moved-noredirect": "रिडाइरेक्ट पृष",
        "articleexists": "यस नामको पृष्ठ पहिले देखि नै रहेको ,या तपाईँले छान्नु भएको नाम अमान्य छ।\nकृपया अर्कै नाम छान्नुहोस् ।",
-       "cantmove-titleprotected": "तपाà¤\88लà¥\87 यो स्थानमा पृष्ठ सार्न सक्नुहुन्न, किनकी यो नयाँ शिर्षकलाई सिर्जना हुनबाट जोगाइएको छ",
+       "cantmove-titleprotected": "तपाà¤\88à¤\82 यो स्थानमा पृष्ठ सार्न सक्नुहुन्न, किनकी यो नयाँ शिर्षकलाई सिर्जना हुनबाट जोगाइएको छ",
        "movetalk": "सम्बन्धित वार्ता पृष्ठ",
        "move-subpages": "सहायक पृष्ठहरू सार्ने($1 सम्मको)",
        "move-talk-subpages": "वार्तालाप पृष्ठको सह-पृष्ठहरू सार्ने($1 सम्मको )",
        "javascripttest-pagetext-skins": "परीक्षणको लागि खोल छान्नुहोस्:",
        "javascripttest-qunit-intro": "mediawiki.org मा [$1 जाँचको कागजात] हेर्नुहोस् ।",
        "tooltip-pt-userpage": "तपाईंको प्रयोगकर्ता पृष्ठ",
-       "tooltip-pt-anonuserpage": "तपाà¤\88लà¥\87 जुन IP ठेगानाको रुपमा सम्पादन गर्दै हुनुहुन्छ , त्यसको प्रयोगकर्ता पृष्ठ निम्न छ :",
+       "tooltip-pt-anonuserpage": "तपाà¤\88à¤\81 जुन IP ठेगानाको रुपमा सम्पादन गर्दै हुनुहुन्छ , त्यसको प्रयोगकर्ता पृष्ठ निम्न छ :",
        "tooltip-pt-mytalk": "तपाईंको वार्ता पृष्ठ",
        "tooltip-pt-anontalk": "यो IP ठेगानाबाट गरिएका सम्पादनका बारेमा बार्तालाप",
        "tooltip-pt-preferences": "तपाईंका अभिरुचिहरू",
        "confirmemail_oncreate": "प्रमाणिकरण कोड तपाईंको इमेल ठेगानामा पठाइएको छ ।\nयो कोड प्रवेश गर्नको लागि अत्यवश्यक छैन, तर यस विकिमा इमेल ठेगानामा आधारित सेवाहरू उपभोग गर्न कोड उपलब्ध गराउनु पर्ने हुन्छ ।",
        "confirmemail_sendfailed": "{{SITENAME}} प्रमाणिकरण इमेल पठाउन सकिएन।\nतपाईंको इमेलमा अमान्य वर्णहरू छन् कि जाँच गर्नुहोस् ।\n\nहुलाकीले दिएको त्रुटी सन्देश: $1",
        "confirmemail_invalid": "अमान्य प्रमाणिकरण कोड ।\nकोडको मान्य अवधी समाप्त भएको हुनसक्छ ।",
-       "confirmemail_needlogin": "तपाईले आफ्नो इमेल प्रमाणिकरण गराउन $1 गर्नु पर्छ ।",
+       "confirmemail_needlogin": "तपाà¤\88à¤\82लà¥\87 à¤\86फà¥\8dनà¥\8b à¤\87मà¥\87ल à¤ªà¥\8dरमाणिà¤\95रण à¤\97राà¤\89न $1 à¤\97रà¥\8dनà¥\81 à¤ªà¤°à¥\8dà¤\9b à¥¤",
        "confirmemail_success": "तपाईंको इमेल ठेगाना प्रमाणिकरण गरिएको छ ।\nअब तपाईं [[Special:UserLogin|प्रवेश गरी]] विकिको मजा लिन सक्नुहुन्छ ।",
        "confirmemail_loggedin": "तपाईंको इमेल ठेगाना प्रमाणित भएको छ।",
        "confirmemail_subject": "{{SITENAME}} ई मेलl ठेगानाको पुष्टि",
        "scarytranscludetoolong": "[URL अति लामो छ ]",
        "deletedwhileediting": "'''चेतावनी''': तपाईंले सम्पादन सुरु गरेपछि यो पृष्ठ मेटिएकोछ!",
        "confirmrecreate": "प्रयोगकर्ता [[User:$1|$1]] ([[User talk:$1|वार्तालाप]])ले  तपाईंले  सम्पादन सुरु गरेपछि यो पृष्ठ मेटेकाछन् । कारण थियो:\n: ''$2''\nकृपया सुनिश्चित गर्नुहोस् कि तपाईं यो पृष्ठ साँच्चै निर्माण गर्न चाहनुहुन्छ।",
-       "confirmrecreate-noreason": "प्रयोगकर्ता [[User:$1|$1]] ले ([[User talk:$1|वार्तालाप ]])पृष्ठ तपाईले सम्पादन गर्न थाले पछि हटाइएका छन् । यो पृष्ठलाई पुन: सिर्जना गर्ने भए कृपया पुष्टि गर्नुहोस?",
+       "confirmrecreate-noreason": "प्रयोगकर्ता [[User:$1|$1]] ([[User talk:$1|वार्तालाप ]])ले यो पृष्ठ तपाईं सम्पादन गर्न थाले पछि हटाएका छन् । यो पृष्ठलाई पुन: सिर्जना गर्ने भए कृपया पुष्टि गर्नुहोस् ।",
        "recreate": "पुनर्निर्माण",
        "unit-pixel": "पिक्सेल",
        "confirm_purge_button": "हुन्छ",
        "tags-create-tag-name": "ट्याग नाम:",
        "tags-create-reason": "कारण:",
        "tags-create-submit": "सृजना गर्ने",
-       "tags-create-no-name": "तपाईले ट्याग नाम निर्दिष्ट गर्नु पर्ने हुन्छ ।",
+       "tags-create-no-name": "तपाà¤\88à¤\82लà¥\87 à¤\9fà¥\8dयाà¤\97 à¤¨à¤¾à¤® à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f à¤\97रà¥\8dनà¥\81 à¤ªà¤°à¥\8dनà¥\87 à¤¹à¥\81नà¥\8dà¤\9b à¥¤",
        "tags-create-invalid-chars": "ट्याग नामहरूमा कमा(<code>,</code>) वा अगाडी स्ल्यास हुनु हुँदैन। (<code>/</code>)",
        "tags-create-invalid-title-chars": "ट्याग नामहरूमा यस्तो क्यारेक्टर हुनुहुँदैन जुन पृष्ठको शीर्षकमा प्रयोग नहोस्।",
        "tags-create-already-exists": "ट्याग $1 पहिला देखि नै उपलब्ध ।",
        "tags-create-warnings-above": "निम्नलिखित {{PLURAL:$2|चेतावनी देखाइयो|चेतावनीहरू देखाइयो}} जब ट्याग \"$1\" बनाउने प्रयास गरिएको थियो:",
        "tags-create-warnings-below": "के तपाईं यो ट्याग बनाउने काम जारी राख्न चाहनु हुन्छ ?",
        "tags-delete-title": "ट्याग मेट्नुहोस्",
-       "tags-delete-explanation-initial": "तपाà¤\88लà¥\87 à¤\9fà¥\8dयाà¤\97 \"$1\" à¤²à¤¾à¤\88 à¤¡à¤¾à¤\9fावà¥\87सबाà¤\9f à¤¹à¤\9fाà¤\89न à¤\96à¥\8bà¤\9cà¥\8dदà¥\88 à¤¹à¥\81नà¥\81 हुन्छ ।",
+       "tags-delete-explanation-initial": "तपाà¤\88à¤\82 à¤\9fà¥\8dयाà¤\97 \"$1\" à¤²à¤¾à¤\88 à¤¡à¤¾à¤\9fावà¥\87सबाà¤\9f à¤¹à¤\9fाà¤\89à¤\81दà¥\88 à¤¹à¥\81नà¥\81हुन्छ ।",
        "tags-delete-explanation-in-use": "ट्यागलाई {{PLURAL:$2|$2 संशोधन वा लग प्रविष्टि|सबै $2 संशोधन र/वा लग प्रविष्टिहरू}}बाट हटाइनेछ जहाँ अहिले त्यसको प्रयोग गरिंदै छ।",
        "tags-delete-explanation-warning": "यो क्रिया <strong>अपरिवर्तनीय</strong> हो र <strong>त्यसलाई परिवर्तन गर्न सकिंदैन</strong>, डेटाबेस प्रवन्धक पनि यसलाई केहि गर्न सक्दैनन्। विश्वासपूर्ण रूपले तपाईं तय गर्नुहोस् कि तपाईं यस ट्यागलाई हटाउन चाहनुहुन्छ।",
        "tags-delete-explanation-active": "<strong>ट्याग \"$1\" अहिले पनि सक्रिय छ, र यसको प्रयोग भविष्यमा पनि जारी रहनेछ।</strong> यसलाई रोकनका लागि, ती स्थानहरूमा जानुहोस जहाँ यस ट्यागको प्रयोग भइरहेको छ र त्यहाँ देखि यसलाई अक्षम गर्नुहोस।",
        "tags-delete-too-many-uses": "ट्याग \"$1\" को प्रयोग $2 सँग {{PLURAL:$2|संशोधन|संशोधनहरू}}भन्दा अधिक छ, जसको अर्थ यो छ कि त्यसलाई हटाउन सकिंदैन।",
        "tags-delete-warnings-after-delete": "ट्याग \"$1\" लाई सफलतापूर्वक हटाइयो, तर निम्नलिखित {{PLURAL:$2|चेतावनी|चेतावनीहरू}} देखियो:",
        "tags-activate-title": "ट्याग सक्रिय गर्नुहोस्",
-       "tags-activate-question": "तपाà¤\88लà¥\87 à¤\9fà¥\8dयाà¤\97 \"$1\" सक्रिय गर्न लाग्नु भएको छ ।",
+       "tags-activate-question": "तपाà¤\88à¤\82 à¤\9fà¥\8dयाà¤\97 \"$1\"लाà¤\88 सक्रिय गर्न लाग्नु भएको छ ।",
        "tags-activate-reason": "कारणः",
        "tags-activate-not-allowed": "ट्याग \"$1\" सक्रिय गर्न सम्भव छैन ।",
        "tags-activate-not-found": "ट्याग \"$1\" उपलब्ध छैन् ।",
        "tags-activate-submit": "सक्रिय",
        "tags-deactivate-title": "ट्याग निष्क्रिय गर्नुहोस्",
-       "tags-deactivate-question": "तपाà¤\88लà¥\87 à¤\9fà¥\8dयाà¤\97 \"$1\" निस्क्रिय गर्न लाग्नु भएको छ ।",
+       "tags-deactivate-question": "तपाà¤\88à¤\82 à¤\9fà¥\8dयाà¤\97 \"$1\" à¤²à¤¾à¤\88 निस्क्रिय गर्न लाग्नु भएको छ ।",
        "tags-deactivate-reason": "कारण:",
        "tags-deactivate-not-allowed": "ट्याग \"$1\" निस्क्रिय गर्न सम्भव छैन ।",
        "tags-deactivate-submit": "निष्क्रिय",
        "compare-rev1": "संशोधन 1",
        "compare-rev2": "संशोधन 2",
        "compare-submit": "दँजाउनुहोस्",
-       "compare-invalid-title": "तपाईले खुलाउनु भएको शिर्षक अमान्य छ।",
-       "compare-title-not-exists": "तपाईले खुलाउनु भएको शिर्षक उपलब्ध छैन ।",
-       "compare-revision-not-exists": "तपाईले खुलाउनु भएको संस्करण उपलब्ध छैन ।",
+       "compare-invalid-title": "तपाà¤\88à¤\82लà¥\87 à¤\96à¥\81लाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤¶à¤¿à¤°à¥\8dषà¤\95 à¤\85मानà¥\8dय à¤\9b।",
+       "compare-title-not-exists": "तपाà¤\88à¤\82लà¥\87 à¤\96à¥\81लाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤¶à¤¿à¤°à¥\8dषà¤\95 à¤\89पलबà¥\8dध à¤\9bà¥\88न à¥¤",
+       "compare-revision-not-exists": "तपाà¤\88à¤\81लà¥\87 à¤\96à¥\81लाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤¸à¤\82सà¥\8dà¤\95रण à¤\89पलबà¥\8dध à¤\9bà¥\88न à¥¤",
        "dberr-problems": "क्षमा पाउँ! यो साइटमा तकनीकी गड़बड़ी आइपरेकोछ।",
        "dberr-again": "केही समय पर्खिएर पुन: लोड हुन दिनुहोस् ।",
        "dberr-info": "(डेटाबेस सर्भर: $1 सँग सम्पर्क स्थापित गर्न सकिएन)",
        "dberr-info-hidden": "(डेटाबेसमा सम्पर्क स्थापना गर्न सकिएन)",
-       "dberr-usegoogle": "तपाà¤\88लà¥\87 अहिले गुगलबाट खोज गर्न प्रयास गर्न सक्नुहुन्छ।",
+       "dberr-usegoogle": "तपाà¤\88à¤\82 अहिले गुगलबाट खोज गर्न प्रयास गर्न सक्नुहुन्छ।",
        "dberr-outofdate": "कृपया स्मरणमा राख्नुहोस् हाम्रा लेखहरूको सूची जुन उनीहरूले राखेका छन् त्यो अद्यावधिक नहुन सक्छ ।",
        "dberr-cachederror": "यो अनुरोध गरिएको पृष्ठको क्याशमा रहेका प्रतिलिपी हो , र अद्यावधिक नहुन सक्छ ।",
        "htmlform-invalid-input": "तपाईंको कुनै प्रविष्ठिहरू सही छैनन्",
-       "htmlform-select-badoption": "तपाईले खुलाउनु भएको मान मान्य विकल्प हैन ।",
-       "htmlform-int-invalid": "तपाईले खुलाउनु भएको मान कुनै इन्टिजर हैन ।",
-       "htmlform-float-invalid": "तपाईले जनाउनु भएको मान कुनै संख्या हैन ।",
-       "htmlform-int-toolow": "तपाईले जनाउनु भएको मान न्युनतम $1 भन्दा कम भयो ।",
-       "htmlform-int-toohigh": "तपाईले जनाउनु भएको मान अधिकतम $1 भन्दा बढी भयो ।",
+       "htmlform-select-badoption": "तपाà¤\88à¤\82लà¥\87 à¤\96à¥\81लाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤®à¤¾à¤¨ à¤®à¤¾à¤¨à¥\8dय à¤µà¤¿à¤\95लà¥\8dप à¤¹à¥\88न à¥¤",
+       "htmlform-int-invalid": "तपाà¤\88à¤\82लà¥\87 à¤\96à¥\81लाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤®à¤¾à¤¨ à¤\95à¥\81नà¥\88 à¤\87नà¥\8dà¤\9fिà¤\9cर à¤¹à¥\88न à¥¤",
+       "htmlform-float-invalid": "तपाà¤\88à¤\81लà¥\87 à¤\9cनाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤®à¤¾à¤¨ à¤\95à¥\81नà¥\88 à¤¸à¤\82à¤\96à¥\8dया à¤¹à¥\88न à¥¤",
+       "htmlform-int-toolow": "तपाà¤\88à¤\82लà¥\87 à¤\9cनाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤®à¤¾à¤¨ à¤¨à¥\8dयà¥\81नतम $1 à¤­à¤¨à¥\8dदा à¤\95म à¤­à¤¯à¥\8b à¥¤",
+       "htmlform-int-toohigh": "तपाà¤\88à¤\82लà¥\87 à¤\9cनाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤®à¤¾à¤¨ à¤\85धिà¤\95तम $1 à¤­à¤¨à¥\8dदा à¤¬à¤¢à¥\80 à¤­à¤¯à¥\8b à¥¤",
        "htmlform-required": "यसको मूल्य(value) चाहिन्छ",
        "htmlform-submit": "बुझाउने",
        "htmlform-reset": "परिवर्तनहरू परित्याग गर्नुहोस्",
index 7faff2f..bdcd614 100644 (file)
        "tog-prefershttps": "Altijd een beveiligde verbinding gebruiken wanneer u bent aangemeld",
        "underline-always": "Altijd",
        "underline-never": "Nooit",
-       "underline-default": "Standaard gedrag van vormgeving of webbrowser",
+       "underline-default": "Standaardgedrag van vormgeving of webbrowser",
        "editfont-style": "Lettertypestijl bewerkingsvenster:",
        "editfont-default": "Webbrowser-standaard",
        "editfont-monospace": "Monospaced lettertype",
        "delete": "Verwijderen",
        "deletethispage": "Deze pagina verwijderen",
        "undeletethispage": "Pagina terugplaatsen",
-       "undelete_short": "$1 {{PLURAL:$1|bewerking|bewerkingen}} terugplaatsen",
+       "undelete_short": "{{PLURAL:$1|één bewerking|$1 bewerkingen}} terugplaatsen",
        "viewdeleted_short": "{{PLURAL:$1|Eén geschrapte bewerking |$1 geschrapte bewerkingen}} bekijken",
        "protect": "Beveiligen",
        "protect_change": "wijzigen",
        "versionrequiredtext": "Versie $1 van MediaWiki is vereist om deze pagina te gebruiken.\nMeer informatie is beschikbaar op de pagina [[Special:Version|softwareversie]].",
        "ok": "OK",
        "retrievedfrom": "Overgenomen van \"$1\"",
-       "youhavenewmessages": "U hebt $1 ($2).",
-       "youhavenewmessagesfromusers": "U heeft $1 van {{PLURAL:$3|een andere gebruiker|$3 gebruikers}} ($2).",
+       "youhavenewmessages": "{{PLURAL:$3|U hebt|Jullie hebben}} $1 ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|U hebt|Jullie hebben}} $1 van {{PLURAL:$3|een andere gebruiker|$3 gebruikers}} ($2).",
        "youhavenewmessagesmanyusers": "U heeft $1 van een groot aantal gebruikers ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|een nieuw bericht|999=nieuwe berichten}}",
        "newmessagesdifflinkplural": "laatste {{PLURAL:$1|wijziging|999=wijzigingen}}",
        "databaseerror-query": "Zoekopdracht: $1",
        "databaseerror-function": "Functie: $1",
        "databaseerror-error": "Fout: $1",
-       "laggedslavemode": "'''Waarschuwing:''' in deze pagina zijn recente wijzigingen mogelijk nog niet verwerkt.",
+       "laggedslavemode": "<strong>Waarschuwing:</strong> in deze pagina zijn recente wijzigingen mogelijk nog niet verwerkt.",
        "readonly": "Database geblokkeerd",
        "enterlockreason": "Geef een reden op voor de blokkade en geef op wanneer die waarschijnlijk wordt opgeheven",
        "readonlytext": "De database is geblokkeerd voor bewerkingen, waarschijnlijk voor regulier databaseonderhoud. Na afronding wordt de functionaliteit hersteld.\n\nDe beheerder heeft de volgende reden opgegeven: $1",
        "title-invalid-characters": "De opgevraagde paginanaam bevat ongeldige tekens: \"$1\".",
        "title-invalid-relative": "De paginanaam bevat een relatief pad. Relatieve paginanamen (\"./\", \"../\") zijn ongeldig omdat ze vaak onbereikbaar zijn als de browser van een gebruiker ze toepast.",
        "title-invalid-magic-tilde": "De opgevraagde paginanaam bevat een ongeldige volgorde van magische tildes (<nowiki>~~~</nowiki>).",
-       "title-invalid-too-long": "De opgevraagde paginanaam is te lang. Deze mag niet langer zijn dan {{PLURAL:$1|$1 bytes}} in UTF-8-codering.",
+       "title-invalid-too-long": "De opgevraagde paginanaam is te lang. Deze mag niet langer zijn dan $1 {{PLURAL:$1|byte|bytes}} in UTF-8-codering.",
        "title-invalid-leading-colon": "De opgevraagde paginanaam bevat een ongeldige dubbele punt aan het begin.",
        "perfcached": "Deze gegevens komen uit een cache en zijn mogelijk niet actueel. Er {{PLURAL:$1|is maximaal één resultaat|zijn maximaal $1 resultaten}} beschikbaar in de cache.",
        "perfcachedts": "Deze gegevens komen uit een cache die voor het laatst is bijgewerkt op $2 om $3. Er {{PLURAL:$4|is maximaal één resultaat|zijn maximaal $4 resultaten}} beschikbaar in de cache.",
-       "querypage-no-updates": "Deze pagina wordt niet bijgewerkt.\nGegevens op deze pagina worden niet ververst.",
+       "querypage-no-updates": "Het bijwerken van deze pagina is momenteel uitgeschakeld.\nGegevens op deze pagina worden niet ververst.",
        "viewsource": "Brontekst bekijken",
        "viewsource-title": "Brontekst bekijken van $1",
        "actionthrottled": "Handeling tegengehouden",
        "actionthrottledtext": "Als maatregel tegen spam is het aantal keren per tijdseenheid dat u deze handeling kunt verrichten beperkt.\nDe limiet is overschreden.\nProbeer het over een aantal minuten opnieuw.",
        "protectedpagetext": "Deze pagina is beveiligd. Bewerken of andere handelingen zijn niet mogelijk.",
-       "viewsourcetext": "U kunt de brontekst van deze pagina bekijken en kopiëren:",
-       "viewyourtext": "U kunt '''uw bewerkingen''' aan de brontekst van deze pagina bekijken en kopiëren:",
+       "viewsourcetext": "U kunt de brontekst van deze pagina bekijken en kopiëren.",
+       "viewyourtext": "U kunt <strong>uw bewerkingen</strong> aan de brontekst van deze pagina bekijken en kopiëren.",
        "protectedinterface": "Deze pagina bevat tekst voor berichten van de software op deze wiki en is beveiligd om misbruik te voorkomen.\nGebruik [//translatewiki.net/ translatewiki.net], het vertaalproject voor MediaWiki, om vertalingen voor alle wiki's toe te voegen of te wijzigen.",
        "editinginterface": "<strong>Waarschuwing:</strong> u bewerkt een pagina die interfacetekst voor de software bevat.\nBewerkingen op deze pagina beïnvloeden de gebruikersinterface van iedereen op deze wiki.\nGebruik [//translatewiki.net/ translatewiki.net], het vertaalproject voor MediaWiki, om vertalingen toe te voegen of te wijzigen voor alle wiki's.",
        "translateinterface": "Om vertalingen voor alle wiki's toe te voegen of te wijzigen kunt u gebruik maken van [//translatewiki.net/ translatewiki.net], het vertaalproject voor MediaWiki.",
-       "cascadeprotected": "Deze pagina kan niet bewerkt worden, omdat die is opgenomen in de volgende {{PLURAL:$1|pagina|pagina's}} die beveiligd {{PLURAL:$1|is|zijn}} met de cascade-optie:\n$2",
-       "namespaceprotected": "U hebt geen rechten om pagina's in de naamruimte '''$1''' te bewerken.",
+       "cascadeprotected": "Deze pagina kan niet bewerkt worden, omdat ze is opgenomen in de volgende {{PLURAL:$1|pagina|pagina's}} die beveiligd {{PLURAL:$1|is|zijn}} met de cascade-optie:\n$2",
+       "namespaceprotected": "U hebt geen rechten om pagina's in de naamruimte <strong>$1</strong> te bewerken.",
        "customcssprotected": "U kunt deze CSS-pagina niet bewerken, omdat die persoonlijke instellingen van een andere gebruiker bevat.",
        "customjsprotected": "U kunt deze JavaScriptpagina niet bewerken, omdat die persoonlijke instellingen van een andere gebruiker bevat.",
        "mycustomcssprotected": "U hebt geen rechten om deze CSS-pagina te bewerken.",
        "myprivateinfoprotected": "U hebt geen rechten om uw privégegevens te bewerken.",
        "mypreferencesprotected": "U hebt geen rechten om uw voorkeuren aan te passen.",
        "ns-specialprotected": "Pagina's in de naamruimte \"{{ns:special}}\" kunnen niet bewerkt worden.",
-       "titleprotected": "Het aanmaken van deze pagina is beveiligd door [[User:$1|$1]].\nDe gegeven reden is ''$2''.",
+       "titleprotected": "Het aanmaken van deze pagina is beveiligd door [[User:$1|$1]].\nDe gegeven reden is \"<em>$2</em>\".",
        "filereadonlyerror": "Het was niet mogelijk het bestand \"$1\" aan te passen omdat de bestandsrepository \"$2\" op dit moment alleen-lezen is.\n\nDe opgegeven reden is \"''$3''\".",
        "invalidtitle-knownnamespace": "Ongeldige titel met naamruimte \"$2\" en tekst \"$3\"",
        "invalidtitle-unknownnamespace": "Ongeldige titel met onbekend naamruimtenummer $1 en tekst \"$2\"",
        "exception-nologin": "Niet aangemeld",
        "exception-nologin-text": "Meld u aan om deze pagina te bekijken of deze handeling uit te voeren.",
        "exception-nologin-text-manual": "U moet $1 om deze pagina te kunnen bekijken of de handeling uit te voeren.",
-       "virus-badscanner": "Onjuiste configuratie: onbekende virusscanner: ''$1''.",
+       "virus-badscanner": "Onjuiste configuratie: Onbekende virusscanner: <em>$1</em>.",
        "virus-scanfailed": "scannen is mislukt (code $1)",
        "virus-unknownscanner": "onbekend antivirusprogramma:",
-       "logouttext": "'''U bent nu afgemeld.'''\n\nSommige pagina's kunnen blijven weergegeven alsof u nog aangemeld bent, totdat u uw browsercache leegt.",
+       "logouttext": "<strong>U bent nu afgemeld.</strong>\n\nSommige pagina's kunnen blijven weergegeven alsof u nog aangemeld bent, totdat u uw browsercache leegt.",
        "welcomeuser": "Welkom, $1!",
        "welcomecreation-msg": "Uw account is aangemaakt.\nIndien gewenst kunt u uw [[Special:Preferences|voorkeuren]] voor {{SITENAME}} aanpassen.",
        "yourname": "Gebruikersnaam:",
        "createacct-yourpassword-ph": "Geef een wachtwoord op",
        "yourpasswordagain": "Geef uw wachtwoord opnieuw in:",
        "createacct-yourpasswordagain": "Bevestig wachtwoord",
-       "createacct-yourpasswordagain-ph": "Geef het wachtwoord opnieuw op",
+       "createacct-yourpasswordagain-ph": "Geef het wachtwoord opnieuw in",
        "remembermypassword": "Aanmeldgegevens onthouden (maximaal $1 {{PLURAL:$1|dag|dagen}})",
        "userlogin-remembermypassword": "Aangemeld blijven",
        "userlogin-signwithsecure": "Beveiligde verbinding gebruiken",
        "userlogin-resetpassword-link": "Wachtwoord vergeten?",
        "userlogin-helplink2": "Hulp bij aanmelden",
        "userlogin-loggedin": "U bent al aangemeld als {{GENDER:$1|$1}}.\nGebruik het onderstaande formulier om aan te melden als een andere gebruiker.",
-       "userlogin-createanother": "Een andere gebruiker aanmaken",
+       "userlogin-createanother": "Een andere gebruiker registreren",
        "createacct-emailrequired": "E-mailadres",
        "createacct-emailoptional": "E-mailadres (optioneel)",
        "createacct-email-ph": "Geef uw e-mailadres op",
        "createacct-reason-ph": "Waarom u een andere gebruiker aanmaakt",
        "createacct-captcha": "Veiligheidscontrole",
        "createacct-imgcaptcha-ph": "Geef de tekst in die u hierboven ziet",
-       "createacct-submit": "Gebruiker aanmaken",
+       "createacct-submit": "Gebruiker registreren",
        "createacct-another-submit": "Gebruiker aanmaken",
        "createacct-benefit-heading": "{{SITENAME}} wordt gemaakt door mensen zoals u.",
        "createacct-benefit-body1": "bewerking{{PLURAL:$1||en}}",
        "createacct-benefit-body2": "pagina{{PLURAL:$1||'s}}",
        "createacct-benefit-body3": "recente bijdrager{{PLURAL:$1||s}}",
        "badretype": "De ingevoerde wachtwoorden verschillen van elkaar.",
+       "usernameinprogress": "Het aanmaken van een gebruiker met die naam is al bezig.\nGelieve te wachten.",
        "userexists": "De gekozen gebruikersnaam is al in gebruik.\nKies een andere naam.",
        "loginerror": "Aanmeldfout",
        "createacct-error": "Fout tijdens aanmaken gebruiker",
        "createaccounterror": "Het was niet mogelijk de gebruiker aan te maken: $1",
        "nocookiesnew": "De gebruiker is geregistreerd, maar niet aangemeld.\n{{SITENAME}} gebruikt cookies voor het aanmelden van gebruikers.\nSchakel die in en meld daarna aan met uw nieuwe gebruikersnaam en wachtwoord.",
-       "nocookieslogin": "{{SITENAME}} gebruikt cookies voor het aanmelden van gebruikers.\nCookies zijn uitgeschakeld in uw browser.\nSchakel deze optie aan en probeer het opnieuw.",
+       "nocookieslogin": "{{SITENAME}} gebruikt cookies voor het aanmelden van gebruikers.\nCookies zijn uitgeschakeld in uw browser.\nSchakel deze optie in en probeer het opnieuw.",
        "nocookiesfornew": "De gebruiker is niet gemaakt omdat de bron niet bevestigd kon worden.\nZorg ervoor dat u cookies hebt ingeschakeld, herlaad deze pagina en probeer het opnieuw.",
        "noname": "U hebt geen geldige gebruikersnaam opgegeven.",
        "loginsuccesstitle": "Aanmelden geslaagd",
-       "loginsuccess": "'''U bent nu aangemeld bij {{SITENAME}} als \"$1\".'''",
-       "nosuchuser": "De gebruiker \"$1\" bestaat niet.\nGebruikersnamen zijn hoofdlettergevoelig.\nControleer de schrijfwijze of [[Special:UserLogin/signup|maak een nieuw gebruiker aan]].",
+       "loginsuccess": "<strong>U bent nu aangemeld bij {{SITENAME}} als \"$1\".</strong>",
+       "nosuchuser": "De gebruiker \"$1\" bestaat niet.\nGebruikersnamen zijn hoofdlettergevoelig.\nControleer de schrijfwijze of [[Special:UserLogin/signup|registreer een nieuw gebruiker]].",
        "nosuchusershort": "De gebruiker \"$1\" bestaat niet.\nControleer de schrijfwijze.",
        "nouserspecified": "Geef een gebruikersnaam op.",
        "login-userblocked": "Deze gebruiker is geblokkeerd.\nAanmelden is niet mogelijk.",
        "readonlywarning": "'''Waarschuwing: u kunt deze bewerking nu niet opslaan omdat de database is geblokkeerd voor bewerkingen wegens onderhoudswerkzaamheden.'''\nHet is misschien verstandig om uw tekst tijdelijk in een tekstbestand op te slaan om dit te bewaren voor wanneer de blokkering van de database opgeheven is.\n\nEen beheerder heeft de database geblokkeerd om de volgende reden: $1",
        "protectedpagewarning": "'''Waarschuwing: deze beveiligde pagina kan alleen door gebruikers met beheerdersrechten bewerkt worden.'''\nDe laatste logboekregel staat hieronder:",
        "semiprotectedpagewarning": "'''Let op:''' deze pagina is beveiligd en kan alleen door geregistreerde gebruikers bewerkt worden.\nDe laatste logboekregel staat hieronder:",
-       "cascadeprotectedwarning": "'''Waarschuwing:''' deze pagina is beveiligd en kan alleen door beheerders bewerkt worden, omdat deze is opgenomen in de volgende {{PLURAL:$1|pagina|pagina's}} die beveiligd {{PLURAL:$1|is|zijn}} met de cascade-optie:",
+       "cascadeprotectedwarning": "<strong>Waarschuwing:</strong> deze pagina is beveiligd en kan alleen door beheerders bewerkt worden, omdat ze is opgenomen in de volgende {{PLURAL:$1|pagina|pagina's}} die beveiligd {{PLURAL:$1|is|zijn}} met de cascade-optie:",
        "titleprotectedwarning": "'''Waarschuwing: Deze pagina is beveiligd. Er zijn [[Special:ListGroupRights|speciale rechten]] nodig om de pagina aan te kunnen maken.'''\nDe laatste logboekregel staat hieronder:",
        "templatesused": "Op deze pagina {{PLURAL:$1|gebruikt sjabloon|gebruikte sjablonen}}:",
        "templatesusedpreview": "{{PLURAL:$1|Sjabloon|Sjablonen}} gebruikt in deze voorvertoning:",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|keer|keer}} op een volglijst]",
-       "rc_categories": "Beperken tot categorieën (scheiden met een \"|\")",
-       "rc_categories_any": "Elke",
+       "rc_categories": "Beperken tot categorieën (scheiden met een \"|\"):",
+       "rc_categories_any": "Een van de aangeduide",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} na de wijziging",
        "newsectionsummary": "/* $1 */ nieuwe subkop",
        "rc-enhanced-expand": "Details weergeven",
        "php-uploaddisabledtext": "Het uploaden van bestanden is uitgeschakeld in PHP.\nControleer de instelling \"file_uploads\".",
        "uploadscripted": "Dit bestand bevat HTML- of scriptcode die foutief door uw browser kan worden weergegeven.",
        "upload-scripted-pi-callback": "Het uploaden van een bestand met instructies voor de verwerking van XML-stijlbladen is niet mogelijk.",
-       "uploaded-script-svg": "Gevonden scriptable element \"$1\" in het geüploade SVG-bestand.",
-       "uploaded-hostile-svg": "Gevonden onveilige CSS in de stijl element van het geüploade SVG-bestand .",
+       "uploaded-script-svg": "Scriptable element \"$1\" in het geüploade SVG-bestand gevonden.",
+       "uploaded-hostile-svg": "Onveilige CSS in het \"style\"-element van het geüploade SVG-bestand gevonden.",
        "uploaded-event-handler-on-svg": "Het instellen van de event-handler attributen <code>$1=\"$2\"</code> is niet toegestaan in SVG-bestanden.",
        "uploaded-href-attribute-svg": "href-attributen <code>&lt;$1 $2=\"$3\"&gt;</code> met niet-lokaal doel (bv. http://, javascript:, enz.) zijn niet toegestaan in SVG-bestanden.",
-       "uploaded-href-unsafe-target-svg": "Gevonden href tot onveilige doel <code><$1 $2=\"$3\"></code> in het geüploade SVG-bestand .",
-       "uploaded-animate-svg": "Gevonden \"animeren\" tag die kan veranderen href behulp van de \"uit\" - attribuut <code><$1 $2=\"$3\"></code> in het geüploade svg-bestand.",
-       "uploaded-setting-event-handler-svg": "Het instellen van de event-handler attributen is geblokkeerd, gevonden <code><$1 $2=\"$3\"></code> in het geüploade SVG-bestand.",
+       "uploaded-href-unsafe-target-svg": "href met onveilig doel <code>&lt;$1 $2=\"$3\"&gt;</code> in het geüploade SVG-bestand gevonden.",
+       "uploaded-animate-svg": "\"animate\"-tag gevonden in het geüploade svg-bestand die href zou kunnen veranderen, met behulp van het \"from\"-attribuut <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-setting-event-handler-svg": "Het instellen van de event-handler-attributen is geblokkeerd, <code>&lt;$1 $2=\"$3\"&gt;</code> gevonden in het geüploade SVG-bestand.",
        "uploaded-setting-href-svg": "Met behulp van de \"set\" tag toevoegen \"href\" attribuut te bovenliggende element is geblokkeerd.",
        "uploaded-wrong-setting-svg": "Met behulp van de \"set\" tag toevoegen van een afstandsbediening/data/script doel aan een kenmerk is geblokkeerd. Gevonden <code><set=\"$1\"></code> in het geüploade SVG-bestand.",
        "uploaded-setting-handler-svg": "SVG-dat stelt de \"handler\" attribuut met afstandsbediening/data/script geblokkeerd. Gevonden <code>$1=\"$2\"</code> in de SVG-bestand geüpload.",
        "emailuser": "Deze gebruiker e-mailen",
        "emailuser-title-target": "Deze {{GENDER:$1|gebruiker}} e-mailen",
        "emailuser-title-notarget": "Gebruiker e-mailen",
-       "emailpage": "Gebruiker e-mailen",
        "emailpagetext": "Via dit formulier kunt u een e-mail aan {{GENDER:$1|deze gebruiker}} verzenden.\nHet e-mailadres dat u hebt opgegeven bij [[Special:Preferences|uw voorkeuren]] wordt als afzender gebruikt.\nDe ontvanger kan dus direct naar u reageren.",
        "defemailsubject": "E-mail van {{SITENAME}}-gebruiker \"$1\"",
        "usermaildisabled": "Gebruikerse-mail uitgeschakeld",
        "emailccsubject": "Kopie van uw bericht aan $1: $2",
        "emailsent": "E-mail verzonden",
        "emailsenttext": "Uw e-mail is verzonden.",
-       "emailuserfooter": "Deze e-mail is verstuurd door $1 aan $2 door de functie \"{{int:emailpage}}\" van {{SITENAME}}.",
+       "emailuserfooter": "Deze e-mail is verstuurd door $1 aan $2 door de functie \"{{int:emailuser}}\" van {{SITENAME}}.",
        "usermessage-summary": "Systeembericht achtergelaten",
        "usermessage-editor": "Systeembericht",
        "watchlist": "Volglijst",
index c4c3884..80ddb30 100644 (file)
        "emailuser": "Send e-post åt denne brukaren",
        "emailuser-title-target": "Send epost åt {{GENDER:$1|brukaren}}",
        "emailuser-title-notarget": "Send e-post åt brukar",
-       "emailpage": "Send e-post åt brukar",
        "emailpagetext": "Du kan nytte skjemaet nedanfor til å sende ein e-post til denne {{GENDER:$1|brukaren}}.\nE-postadressa du har sett i [[Special:Preferences|innstillingane dine]] vil dukke opp i «frå»-feltet på denne e-posten, så mottakaren er i stand til å svare.",
        "defemailsubject": "{{SITENAME}} epost frå brukar \"$1\"",
        "usermaildisabled": "Brukare-post slegen av",
index ce750b8..e3b19e2 100644 (file)
        "rcshowhideanons": "$1 talagamit a e migpakilala",
        "rcshowhidepatr": "$1 edit a babanten (patrolled edits)",
        "rcshowhidemine": "$1 deng elilan ku",
-       "rcshowhidecategorization-show": "Pakit",
        "rclinks": "Pakit la reng tauling $1 miyalilan anyang tauling $2 aldo<br />$3",
        "diff": "aliwa",
        "hist": "amlat",
        "mailnologin": "Alang piparalan (no send address)",
        "mailnologintext": "Kailangan [[Special:UserLogin|maka-login]] ka at maki gaganang e-mail address kareng kekang  [[Special:Preferences|pinili]] ba kang makaparalang e-mail kareng aliwang talagamit.",
        "emailuser": "E-mail me ing talagamit a ini",
-       "emailpage": "E-mail talagamit",
        "emailpagetext": "Nung atin yang gaganang e-mail address ketang kayang pinili ning talagamit (user preferences) ing talagamit a ini, magparla yang metung a mensahi ing form king lalam. Lunto ya ing e-mail address a sinulat mu ketang kekang pinili ning talagamit ketang  \"From\" address (\"ibat kang\") ning sulat, ba yang makapakibat itang miparalan.",
        "defemailsubject": "e-mail ning {{SITENAME}}",
        "noemailtitle": "Alang e-mail address",
index f5f0c3d..9051f4c 100644 (file)
@@ -79,7 +79,8 @@
                        "Kszapsza",
                        "Openbk",
                        "Doctore",
-                       "PiotrAntosz"
+                       "PiotrAntosz",
+                       "The Polish"
                ]
        },
        "tog-underline": "Podkreślenie linków:",
        "upload-too-many-redirects": "URL zawiera zbyt wiele przekierowań",
        "upload-http-error": "Wystąpił błąd protokołu HTTP – $1",
        "upload-copy-upload-invalid-domain": "Przesyłanie kopii z tej domeny nie jest dostępne.",
+       "upload-dialog-title": "Prześlij plik",
+       "upload-dialog-error": "Wystąpił błąd",
+       "upload-dialog-warning": "Pojawiło się ostrzeżenie",
+       "upload-dialog-button-cancel": "Anuluj",
+       "upload-dialog-button-done": "Gotowe",
+       "upload-dialog-button-save": "Zapisz",
+       "upload-dialog-button-upload": "Prześlij",
+       "upload-dialog-label-select-file": "Wybierz plik",
+       "upload-dialog-label-infoform-title": "Szczegóły",
+       "upload-dialog-label-infoform-name": "Nazwa",
+       "upload-dialog-label-infoform-description": "Opis",
+       "upload-dialog-label-usage-title": "Korzystanie",
+       "upload-dialog-label-usage-filename": "Nazwa pliku",
        "backend-fail-stream": "Nie można odczytać pliku $1.",
        "backend-fail-backup": "Nie można utworzyć kopii zapasowej pliku  $1 .",
        "backend-fail-notexists": "Plik  $1  nie istnieje.",
        "emailuser": "Wyślij e‐mail do tego użytkownika",
        "emailuser-title-target": "Wyślij e-mail do {{GENDER:$1|tego użytkownika|tej użytkowniczki|tego użytkownika}}",
        "emailuser-title-notarget": "Wyślij wiadomość e‐mail",
-       "emailpage": "Wyślij e‐mail do użytkownika",
        "emailpagetext": "Możesz użyć poniższego formularza, aby wysłać wiadomość e‐mail do {{GENDER:$1|tego użytkownika|tej użytkowniczki}}.\nAdres e‐mailowy, który został przez Ciebie wprowadzony w [[Special:Preferences|Twoich preferencjach]], zostanie umieszczony w polu „Od”, dzięki czemu odbiorca będzie mógł Ci odpowiedzieć.",
        "defemailsubject": "{{SITENAME}} – e‐mail od użytkownika „$1”",
        "usermaildisabled": "E‐mail użytkownika jest wyłączony",
        "sessionfailure-title": "Błąd sesji",
        "sessionfailure": "Wystąpił problem z weryfikacją zalogowania.\nPolecenie zostało anulowane, aby uniknąć przechwycenia sesji.\nNaciśnij „wstecz” w przeglądarce, przeładuj stronę, po czym ponownie wydaj polecenie.",
        "changecontentmodel": "Edycja modelu zawartości strony",
+       "changecontentmodel-legend": "Zmienić model zawartości",
        "changecontentmodel-title-label": "Tytuł strony",
        "changecontentmodel-model-label": "Nowy model zawartości",
        "changecontentmodel-reason-label": "Powód:",
        "spam_reverting": "Przywracanie ostatniej wersji nie zawierającej linków do $1",
        "spam_blanking": "Wszystkie wersje zawierały odnośniki do $1. Czyszczenie strony.",
        "spam_deleting": "Wszystkie wersje zawierały linki do $1, usuwam.",
-       "simpleantispam-label": "Filtr antyspamowy.\n'''NIE''' wpisuj tu nic!",
+       "simpleantispam-label": "Filtr antyspamowy.\n<strong>Not</strong> wpisuj tu nic!",
        "pageinfo-title": "Informacje o „$1”",
        "pageinfo-not-current": "Niestety, te informacje nie są dostępne dla starych wersji stron.",
        "pageinfo-header-basic": "Podstawowe informacje",
index 9b3450e..26cf2d0 100644 (file)
        "emailuser": "Mandeje un mëssagi eletrònich a st'utent-sì",
        "emailuser-title-target": "Mandé un mëssagi ëd pòsta eletrònica a cost {{GENDER:$1|utent}}",
        "emailuser-title-notarget": "Mandeje un mëssagi ëd pòsta eletrònica a st'utent-sì",
-       "emailpage": "Mandeje un mëssagi ëd pòsta eletrònica a st'utent-sì",
        "emailpagetext": "A peul dovré ël formolari sì-sota për mandé un mëssagi ëd pòsta eletrònica a st'{{GENDER:$1|utent}}-sì.\nL'adrëssa ëd pòsta eletrònica ch'a l'ha butà ant ij [[Special:Preferences|sò gust]] a sarà butà ant l'adrëssa «Da» ëd sò mëssagi, parèj chi ch'a l'arsèiv a podrà rësponde diretament a chiel.",
        "defemailsubject": "Mëssagi da l'utent \"$1\"",
        "usermaildisabled": "Pòsta eletrònica dl'utent disabilità",
        "emailccsubject": "Còpia dël mëssagi mandà a $1: $2",
        "emailsent": "Mëssagi eletrònich mandà",
        "emailsenttext": "Sò mëssagi eletrònich a l'é stàit mandà",
-       "emailuserfooter": "Ës mëssagi eletrònich a l'é stàit mandà da $1 a $2 con la fonsion «{{int:emailpage}}» ëd {{SITENAME}}.",
+       "emailuserfooter": "Ës mëssagi eletrònich a l'é stàit mandà da $1 a $2 con la fonsion «{{int:emailuser}}» ëd {{SITENAME}}.",
        "usermessage-summary": "A l'ha lassà un mëssagi ëd sistema.",
        "usermessage-editor": "Mëssagerìa ëd sistema",
        "watchlist": "Ròba che as ten sot-euj",
index b2118c4..8c10941 100644 (file)
        "mailnologin": "ناں پیح پتہ",
        "mailnologintext": "تسیں لازمی [[Special:UserLogin|لاگان]] ہوو تے اک پکا ای-میل پتہ تواڈی [[Special:Preferences|تانگ]] چ ہووے تاں جے دوجے ورتن والے توانوں ای-میل کرسکن۔",
        "emailuser": "اس ورتن والے نو ای میل کرو",
-       "emailpage": "ای-میل ورتن والا",
        "emailpagetext": "تسیں تھلے دتا گیا فارم  ورت سکدے اوہ ایس ورتن والے نوں ای-میل سنیعہ کلن لئی۔ \nای-میل پتہ تساں [[Special:Preferences|تواڈے ورتن تانکآں]] چ پایا اے  ای-میل توں تواڈا پتہ دسے گا جتھے چٹھی چلی تاں جے چٹھی لین والا توانوں سدا جواب دے سکے۔",
        "defemailsubject": "{{SITENAME}}ای-میل ورتن والے \"$1\" توں",
        "usermaildisabled": "ورتن ای-میل ناکارہ",
index 30be292..c37ec0e 100644 (file)
        "emailuser": "کارن ته برېښليک لېږل",
        "emailuser-title-target": "دې {{GENDER:$1|کارن}} ته برېښليک لېږل",
        "emailuser-title-notarget": "کارن ته برېښليک لېږل",
-       "emailpage": "کارن ته برېښليک لېږل",
        "defemailsubject": "د \"$1\" کارن لخوا د {{SITENAME}} برېښليک",
        "usermaildisabled": "د کارن برېښليک ناچارند دی",
        "usermaildisabledtext": "په دې ويکي تاسې نورو کارنانو ته برېښليک نه شی ورلېږلی",
        "emailccsubject": "$1 ته ستاسې د پيغام لمېسه: $2",
        "emailsent": "برېښليک مو ولېږل شو",
        "emailsenttext": "ستاسې برېښليکي پيغام ولېږل شو.",
-       "emailuserfooter": "دا برېښليک $2 ته د $1 لخوا د \"{{int:emailpage}}\" کړنې په مرسته د {{SITENAME}} له لارې لېږل شوی.",
+       "emailuserfooter": "دا برېښليک $2 ته د $1 لخوا د \"{{int:emailuser}}\" کړنې په مرسته د {{SITENAME}} له لارې لېږل شوی.",
        "usermessage-summary": "د غونډال پيغام پرېښودل.",
        "usermessage-editor": "د غونډال پيغام رسونکی",
        "watchlist": "کتنلړ",
index 613a05e..d03c991 100644 (file)
        "shown-title": "Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página",
        "viewprevnext": "Ver ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "<strong>Há uma página com o nome \"[[:$1]]\" nesta wiki.</strong> {{PLURAL:$2|0=|Veja também os outros resultados da pesquisa encontrados.}}",
-       "searchmenu-new": "<strong>Criar a página \"[[:$1]]\" nesta wiki!</strong>{{PLURAL:$2|0=| Veja também a página encontrada com sua pesquisa.|Veja também os resultados das pesquisas encontradas.}}",
+       "searchmenu-new": "<strong>Criar a página \"[[:$1]]\" nesta wiki!</strong> {{PLURAL:$2|0=|Veja também a página encontrada com sua pesquisa.|Veja também os resultados da pesquisa encontrados.}}",
        "searchprofile-articles": "Páginas de conteúdo",
        "searchprofile-images": "Multimídia",
        "searchprofile-everything": "Tudo",
        "log": "Registros",
        "all-logs-page": "Todos os registros públicos",
        "alllogstext": "Exibição combinada de todos registros disponíveis para o {{SITENAME}}.\nVocê pode diminuir a lista escolhendo um tipo de registro, um nome de usuário (sensível a maiúsculas e minúsculas), ou uma página afetada (também sensível a maiúsculas e minúsculas).",
-       "logempty": "Nenhum item idêntico no registro.",
+       "logempty": "Nenhum item correspondente no registro.",
        "log-title-wildcard": "Procurar por títulos que sejam iniciados com o seguinte texto",
        "showhideselectedlogentries": "Exibir/ocultar os itens de registros selecionados",
        "log-edit-tags": "Editar etiquetas das entradas selecionadas",
        "emailuser": "Enviar-lhe um e-mail",
        "emailuser-title-target": "Enviar e-mail para {{GENDER:$1|este usuário|esta usuária}}",
        "emailuser-title-notarget": "Enviar e-mail",
-       "emailpage": "Enviar e-mail ao usuário",
        "emailpagetext": "Você pode usar o formulário a seguir para enviar um e-mail para {{GENDER:$1|este usuário|esta usuária}}.\nO endereço de e-mail que você inseriu em [[Special:Preferences|suas preferências de usuário]] irá aparecer como o endereço do remetente da mensagem, com o destinatário podendo responder diretamente para você.",
        "defemailsubject": "E-mail do usuário \"$1\" da {{SITENAME}}",
        "usermaildisabled": "O e-mail do usuário foi desativado",
        "emailccsubject": "Cópia de sua mensagem para $1: $2",
        "emailsent": "E-mail enviado",
        "emailsenttext": "Sua mensagem foi enviada.",
-       "emailuserfooter": "Este email foi enviado por $1 para $2 através da função\"{{int:emailpage}}\" do site {{SITENAME}}.",
+       "emailuserfooter": "Este email foi enviado por $1 para $2 através da função\"{{int:emailuser}}\" do site {{SITENAME}}.",
        "usermessage-summary": "Deixar mensagem de sistema.",
        "usermessage-editor": "Mensagens de sistema",
        "watchlist": "Páginas vigiadas",
index e85b9ad..90e0f86 100644 (file)
        "log": "Registos",
        "all-logs-page": "Todos os registos públicos",
        "alllogstext": "Apresentação combinada de todos os registos disponíveis na wiki {{SITENAME}}.\nPode reduzir a lista escolhendo um tipo de registo, um nome de utilizador ou um título de página. Respeite maiúsculas e minúsculas.",
-       "logempty": "Não há dados a apresentar.",
+       "logempty": "Nenhum item correspondente no registo.",
        "log-title-wildcard": "Procurar títulos iniciados por este texto",
        "showhideselectedlogentries": "Mostrar ou ocultar as entradas selecionadas",
        "log-edit-tags": "Editar etiquetas das entradas de registo selecionadas",
        "emailuser": "Enviar correio eletrónico a este utilizador",
        "emailuser-title-target": "Enviar correio eletrónico a {{GENDER:$1|este utilizador|esta utilizadora}}",
        "emailuser-title-notarget": "Enviar correio eletrónico ao utilizador",
-       "emailpage": "Enviar correio eletrónico ao utilizador",
        "emailpagetext": "Pode usar o formulário abaixo para enviar uma mensagem por correio eletrónico para {{GENDER:$1|este utilizador|esta utilizadora}}.\nO endereço de correio que introduziu nas [[Special:Preferences|suas preferências]] irá aparecer no campo do remetente da mensagem \"De:\", para que o destinatário lhe possa responder diretamente.",
        "defemailsubject": "Correio eletrónico da {{SITENAME}}, do utilizador \"$1\"",
        "usermaildisabled": "O correio eletrónico do utilizador foi desativado",
        "emailccsubject": "Cópia da sua mensagem para $1: $2",
        "emailsent": "Mensagem enviada",
        "emailsenttext": "A sua mensagem foi enviada.",
-       "emailuserfooter": "Esta mensagem foi enviada por $1 para $2 através da opção \"{{int:emailpage}}\" em {{SITENAME}}.",
+       "emailuserfooter": "Esta mensagem foi enviada por $1 para $2 através da opção \"{{int:emailuser}}\" em {{SITENAME}}.",
        "usermessage-summary": "Deixar mensagem de sistema.",
        "usermessage-editor": "Editor de mensagens de sistema",
        "watchlist": "Páginas vigiadas",
index ceb8642..0cf37cd 100644 (file)
        "tog-hideminor": "[[Special:Preferences]], tab 'Recent changes'. Offers user to hide minor edits in recent changes or not. {{Gender}}",
        "tog-hidepatrolled": "Option in Recent changes tab of [[Special:Preferences]] (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}",
        "tog-newpageshidepatrolled": "Toggle in [[Special:Preferences]], section \"Recent changes\" (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}",
-       "tog-hidecategorization": "Option in \"Recent changes\" tab of [[Special:Preferences]]. Offers user to hide/show categorization of pages. Appears next to messages such as {{msg-mw|tog-hideminor}}.",
        "tog-extendwatchlist": "[[Special:Preferences]], tab 'Watchlist'. Offers user to show all applicable changes in watchlist (by default only the last change to a page on the watchlist is shown). {{Gender}}",
        "tog-usenewrc": "{{Gender}}\nUsed as label for the checkbox in [[Special:Preferences]], tab \"Recent changes\".\n\nOffers user to use alternative representation of [[Special:RecentChanges]] and watchlist.",
        "tog-numberheadings": "[[Special:Preferences]], tab 'Misc'. Offers numbered headings on content pages to user. {{Gender}}",
        "tog-watchlisthideliu": "Option in tab 'Watchlist' of [[Special:Preferences]]. {{Gender}}",
        "tog-watchlisthideanons": "Option in tab 'Watchlist' of [[Special:Preferences]]. {{Gender}}",
        "tog-watchlisthidepatrolled": "Option in Watchlist tab of [[Special:Preferences]]. {{Gender}}",
-       "tog-watchlisthidecategorization": "Option in Watchlist tab of [[Special:Preferences]]. Offers user to hide/show categorization of pages. Appears next to checkboxes with labels such as {{msg-mw|tog-watchlisthideminor}}.",
        "tog-ccmeonemails": "Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}. {{Gender}}",
        "tog-diffonly": "Toggle option used in [[Special:Preferences]]. {{Gender}}",
        "tog-showhiddencats": "Toggle option used in [[Special:Preferences]]. {{Gender}}",
        "createacct-benefit-head3": "In vertical-layout create account form, the text in the heading for the third benefit. Do not edit the magic word; if you replace it you will probably need to adjust CSS.\n\nFollowed by the message {{msg-mw|Createacct-benefit-body3}}.\n\nSee example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]",
        "createacct-benefit-body3": "In vertical-layout create account form, the text for the third benefit.\n\nPreceded by the message {{msg-mw|Createacct-benefit-head3}} (number of contributors).\n\nSee example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]\n\nParameters:\n* $1 - number of contributors (users)",
        "badretype": "Used as error message when the new password and its retype do not match.",
-       "userexists": "Used as error message in creating a user account.",
        "usernameinprogress": "Used as error message in creating a user account.",
+       "userexists": "Used as error message in creating a user account.",
        "loginerror": "Used as title of error message.\n{{Identical|Login error}}",
        "createacct-error": "Used as heading for the error message.",
        "createaccounterror": "Parameters:\n* $1 - an error message",
        "rcshowhidemine": "Option text in [[Special:RecentChanges]]. Parameters:\n* $1 - the \"show/hide\" command, with the text taken from either {{msg-mw|rcshowhidemine-show}} or {{msg-mw|rcshowhidemine-hide}}",
        "rcshowhidemine-show": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidemine}}.\n\nSee also:\n* {{msg-mw|rcshowhidemine-hide}}\n{{Identical|show}}",
        "rcshowhidemine-hide": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidemine}}.\n\nSee also:\n* {{msg-mw|rcshowhidemine-show}}\n{{Identical|hide}}",
-       "rcshowhidecategorization": "Option text in [[Special:RecentChanges]]. Parameters:\n* $1 - the \"show/hide\" command, with the text taken from either {{msg-mw|rcshowhidecategorization-show}} or {{msg-mw|rcshowhidecategorization-hide}}",
-       "rcshowhidecategorization-show": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidecategorization}}.\n\nSee also:\n* {{msg-mw|rcshowhidecategorization-hide}}\n{{Identical|show}}",
-       "rcshowhidecategorization-hide": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidecategorization}}.\n\nSee also:\n* {{msg-mw|rcshowhidecategorization-show}}\n{{Identical|hide}}",
        "rclinks": "Used on [[Special:RecentChanges]].\n* $1 - a list of different choices with number of pages to be shown.<br />&nbsp;Example: \"''50{{int:pipe-separator}}100{{int:pipe-separator}}250{{int:pipe-separator}}500\".\n* $2 - a list of clickable links with a number of days for which recent changes are to be displayed.<br />&nbsp;Example: \"''1{{int:pipe-separator}}3{{int:pipe-separator}}7{{int:pipe-separator}}14{{int:pipe-separator}}30''\".\n* $3 - a block of text that consists of other messages.<br />&nbsp;Example: \"''Hide minor edits{{int:pipe-separator}}Show bots{{int:pipe-separator}}Hide anonymous users{{int:pipe-separator}}Hide logged-in users{{int:pipe-separator}}Hide patrolled edits{{int:pipe-separator}}Hide my edits''\"\nList elements are separated by {{msg-mw|Pipe-separator}} each. Each list element is, or contains, a link.",
        "diff": "Short form of \"differences\". Used on [[Special:RecentChanges]], [[Special:Watchlist]], ...\n{{Identical|Diff}}",
        "hist": "Short form of \"history\". Used on [[Special:RecentChanges]], [[Special:Watchlist]], ...",
        "recentchangeslinked-summary": "Summary of [[Special:RecentChangesLinked]].",
        "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-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 embedded by other pages removed from a category\n\nParameters:\n* $1 - name of the page being added\n* $2 - number of additional pages being affected",
        "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}}",
        "reuploaddesc": "Used as button text in the Upload form on [[Special:Upload]].\n\nSee also:\n* {{msg-mw|upload-tryagain|Submit button text}}\n* {{msg-mw|ignorewarning|button text}}",
        "emailuser-title-target": "{{doc-special|EmailUser|unlisted=1}}\nUsed when a user was given to e-mail. Parameters:\n* $1 - a plain text username, used for GENDER.",
        "emailuser-title-notarget": "{{doc-special|EmailUser|unlisted=1}}\nUsed when no user given to e-mail yet.",
        "emailuser-summary": "{{doc-specialpagesummary|emailuser}}",
-       "emailpage": "Title of special page [[Special:EmailUser]], when it is the destination of the sidebar link {{msg-mw|Emailuser}} on a user's page.",
        "emailpagetext": "This is the text that is displayed above the email form on [[Special:EmailUser]].\n\nSpecial:EmailUser appears when you click on the link \"Email this user\" in the sidebar, but only if there is an email address in the recipient's user preferences. If there isn't then the message {{msg-mw|Noemailtext}} will appear instead of Special:EmailUser.\n\nParameters:\n* $1 - username",
        "defemailsubject": "The default subject of EmailUser emails. Parameters:\n* $1 - the username of the user sending the email and can be used for GENDER",
        "usermaildisabled": "Caption for an error message ({{msg-mw|Usermaildisabledtext}}) shown when the user-to-user e-mail feature is disabled on the wiki (see [[mw:Manual:$wgEnableEmail]], [[mw:Manual:$wgEnableUserEmail]]).",
        "protectedarticle": "Text describing an action on [[Special:Log]]. $1 is a page title.",
        "modifiedarticleprotection": "Text describing an action on [[Special:Log]]. $1 is a page title.",
        "unprotectedarticle": "Used as action in the log. Parameters:\n* $1 - target page title",
-       "movedarticleprotection": "This is a log entry. It appears in the log if a protected page is renamed.\n\nExample:\n<code>00:51, 16 September 2010 Siebrand +(Talk • contribs • block) moved protection settings from \"User:Siebrand/prot-move\" to \"User:Siebrand/prot-moved\" ‎ (User:Siebrand/prot-move moved to User:Siebrand/prot-moved: prot_move test.)</code>\n\nParameters:\n* $1 - target page title\n* $2 - source page title",
+       "movedarticleprotection": "This is a ''logentry'' message only used on IRC. It appears in the log if a protected page is renamed.\n\nExample:\n<code>00:51, 16 September 2010 Siebrand +(Talk • contribs • block) moved protection settings from \"User:Siebrand/prot-move\" to \"User:Siebrand/prot-moved\" ‎ (User:Siebrand/prot-move moved to User:Siebrand/prot-moved: prot_move test.)</code>\n\nParameters:\n* $1 - target page title\n* $2 - source page title",
        "protect-title": "Title for the protection form. $1 is the title of the page to be (un)protected.",
        "protect-title-notallowed": "Same as {{msg-mw|Protect-title}}, but when the user does not have the right to change protection levels.\n\nParameters:\n* $1 - page title",
        "prot_1movedto2": "Message description: [[mw:Manual:Interface/1movedto2]]\n\nParameters:\n* $1 - source page title\n* $2 - target page title",
        "logentry-newusers-create2": "{{Logentry|[[Special:Log/newusers]]}}\n\n$4 is the name of the user that was created.",
        "logentry-newusers-byemail": "{{Logentry|[[Special:Log/newusers]]}}\n\n$4 is the name of the user that was created.",
        "logentry-newusers-autocreate": "{{Logentry|[[Special:Log/newusers]]}}\n\n$4 is the gender of the target user.",
+       "logentry-protect-move_prot": "{{Logentry|[[Special:Log/protect]]}}\n* $4 - the old title",
        "logentry-rights-rights": "* $1 - username\n* $2 - (see below)\n* $3 - username\n* $4 - list of user groups or {{msg-mw|Rightsnone}}\n* $5 - list of user groups or {{msg-mw|Rightsnone}}\n----\n{{Logentry|[[Special:Log/rights]]}}",
        "logentry-rights-rights-legacy": "* $1 - username\n* $2 - (see below)\n* $3 - username\n----\n{{Logentry|[[Special:Log/rights]]}}",
        "logentry-rights-autopromote": "* $1 - username\n* $2 - (see below)\n* $3 - (see below)\n* $4 - comma separated list of old user groups or {{msg-mw|Rightsnone}}\n* $5 - comma separated list of new user groups\n----\n{{Logentry|[[Special:Log/rights]]}}",
index 0479ec9..0980b6f 100644 (file)
@@ -33,7 +33,6 @@
        "tog-hideminor": "Ascunde modificările minore în schimbări recente",
        "tog-hidepatrolled": "Ascunde modificările patrulate în schimbările recente",
        "tog-newpageshidepatrolled": "Ascunde paginile patrulate din lista de pagini noi",
-       "tog-hidecategorization": "Ascunde categorisirea paginilor",
        "tog-extendwatchlist": "Extinde lista de articole urmărite pentru a arăta toate schimbările efectuate, nu doar pe cele mai recente",
        "tog-usenewrc": "Grupează modificările după pagină în cadrul schimbărilor recente și listei paginilor urmărite",
        "tog-numberheadings": "Numerotează automat secțiunile",
@@ -63,7 +62,6 @@
        "tog-watchlisthideliu": "Ascunde modificările făcute de utilizatori anonimi din lista de pagini urmărite",
        "tog-watchlisthideanons": "Ascunde modificările făcute de utilizatori anonimi din lista de pagini urmărite",
        "tog-watchlisthidepatrolled": "Ascunde paginile patrulate din lista de pagini urmărite",
-       "tog-watchlisthidecategorization": "Ascunde categorisirea paginilor",
        "tog-ccmeonemails": "Doresc să primesc o copie a mesajelor e-mail pe care le trimit",
        "tog-diffonly": "Nu arăta conținutul paginii sub dif",
        "tog-showhiddencats": "Arată categoriile ascunse",
        "createacct-benefit-body2": "{{PLURAL:$1|pagină|pagini|de pagini}}",
        "createacct-benefit-body3": "{{PLURAL:$1|contribuitor recent|contribuitori recenți|de contribuitori recenți}}",
        "badretype": "Parolele pe care le-ați introdus diferă.",
+       "usernameinprogress": "Crearea unui cont pentru acest nume de utilizator este deja în derulare. Vă rugăm să așteptați.",
        "userexists": "Numele de utilizator pe care l-ați introdus este deja folosit.\nVă rugăm să alegeți un alt nume.",
        "loginerror": "Eroare de autentificare",
        "createacct-error": "Eroare la crearea contului",
        "rcshowhidemine": "$1 contribuțiile mele",
        "rcshowhidemine-show": "Arată",
        "rcshowhidemine-hide": "Ascunde",
-       "rcshowhidecategorization": "$1 categorisirea paginilor",
-       "rcshowhidecategorization-show": "Arată",
-       "rcshowhidecategorization-hide": "Ascunde",
        "rclinks": "Se arată ultimele $1 modificări din ultimele $2 zile.<br />\n$3",
        "diff": "dif",
        "hist": "ist",
        "recentchangeslinked-summary": "Aceasta este o listă a schimbărilor efectuate recent asupra paginilor cu legături de la o anumită pagină (sau asupra membrilor unei anumite categorii).\nPaginile pe care le [[Special:Watchlist|urmăriți]] apar cu <strong>aldine</strong>.",
        "recentchangeslinked-page": "Numele paginii:",
        "recentchangeslinked-to": "Afișează schimbările în paginile care se leagă de pagina dată",
-       "recentchanges-page-added-to-category": "[[:$1]] a fost adăugată în categorii",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] și încă {{PLURAL:$2|o pagină|$2 pagini|$2 de pagini}} au fost adăugate în categorii",
-       "recentchanges-page-removed-from-category": "[[:$1]] eliminată din categorii",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] și încă {{PLURAL:$2|o pagină|$2 pagini|$2 de pagini}} au fost eliminate din categorii",
        "upload": "Încărcare fișier",
        "uploadbtn": "Încarcă fișier",
        "reuploaddesc": "Revocare încărcare și întoarcere la formularul de trimitere.",
        "trackingcategories-disabled": "Categoria este dezactivată",
        "mailnologin": "Nu există adresă de trimitere",
        "mailnologintext": "Trebuie să fii [[Special:UserLogin|autentificat]] și să ai o adresă validă de e-mail în [[Special:Preferences|preferințe]] pentru a trimite e-mail altor utilizatori.",
-       "emailuser": "Trimiteți un e-mail",
+       "emailuser": "Trimite-i un e-mail",
        "emailuser-title-target": "E-mail către {{GENDER:$1|acest utilizator|această utilizatoare}}",
        "emailuser-title-notarget": "E-mail către utilizator",
-       "emailpage": "E-mail către utilizator",
        "emailpagetext": "Puteți folosi formularul de mai jos pentru a trimite un e-mail {{GENDER:$1|acestui utilizator|acestei utilizatoare}}.\nAdresa de e-mail specificată de dumneavoastră în [[Special:Preferences|preferințele de utilizator]] va apărea ca adresa expeditorului e-mailului; astfel, destinatarul va putea să vă răspundă direct.",
        "defemailsubject": "E-mail {{SITENAME}} de la utilizatorul „$1”",
        "usermaildisabled": "E-mail dezactivat",
        "emailccsubject": "O copie a mesajului la $1: $2",
        "emailsent": "E-mail trimis",
        "emailsenttext": "E-mailul dumneavoastră a fost trimis.",
-       "emailuserfooter": "Acest mesaj a fost trimis de $1 către $2 prin intermediul funcției „{{int:emailpage}}” de la {{SITENAME}}.",
+       "emailuserfooter": "Acest mesaj a fost trimis de $1 către $2 prin intermediul funcției „{{int:emailuser}}” de la {{SITENAME}}.",
        "usermessage-summary": "a lăsat un mesaj de sistem",
        "usermessage-editor": "Mesager de sistem",
        "watchlist": "Pagini urmărite",
        "logentry-newusers-create2": "Contul de utilizator $3 a fost {{GENDER:$2|creat}} de către $1",
        "logentry-newusers-byemail": "Contul de utilizator $3 a fost {{GENDER:$2|creat}} de către $1, iar parola a fost trimisă prin e-mail",
        "logentry-newusers-autocreate": "Contul de utilizator $1 a fost {{GENDER:$2|creat}} în mod automat",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|a mutat}} setările de protecție de la $4 la $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|a schimbat}} apartenența la grup pentru $3 de la $4 la $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|a schimbat}} apartenența la grup pentru $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|a fost promovat|a fost promovată}} în mod automat de la $4 la $5",
index 5fae28f..9f60825 100644 (file)
        "emailuser": "Manne n'email a stu utende",
        "emailuser-title-target": "Manne n'email a quiste {{GENDER:$1|utende}}",
        "emailuser-title-notarget": "E-mail de l'utende",
-       "emailpage": "E-mail de l'utende",
        "emailpagetext": "Tu puè ausà 'a schermate aqquà sotte pe mannà 'n'email a stu {{GENDER:$1|utende}}.\nL'indirizze e-mail ca tu è 'nzerite jndr'à le [[Special:Preferences|preferenze tune]] iesse jndr'à 'u cambe \"Da\" de l'e-mail, accussì ce riceve 'a mail sape a ce addà responnere.",
        "defemailsubject": "e-mail de {{SITENAME}} da l'utende \"$1\"",
        "usermaildisabled": "L'e-mail de l'utende è disabbilitate",
        "emailccsubject": "Copie de le messàgge tue a $1: $2",
        "emailsent": "E-mail mannete",
        "emailsenttext": "'U messagge email tue ha state mannete.",
-       "emailuserfooter": "Sta e-mail ha state mannate da $1 a $2 da 'a funziona \"{{int:emailpage}}\" de {{SITENAME}}.",
+       "emailuserfooter": "Sta e-mail ha state mannate da $1 a $2 da 'a funziona \"{{int:emailuser}}\" de {{SITENAME}}.",
        "usermessage-summary": "Lassanne 'nu messagge de sisteme.",
        "usermessage-editor": "Messaggiatore de sisteme",
        "usermessage-template": "MediaWiki:UserMessage",
index 0fb5cd5..208e887 100644 (file)
@@ -90,7 +90,6 @@
        "tog-hideminor": "Скрывать малые правки из списка свежих правок",
        "tog-hidepatrolled": "Скрывать патрулированные правки в списке свежих правок",
        "tog-newpageshidepatrolled": "Скрывать отпатрулированные страницы в списке новых страниц",
-       "tog-hidecategorization": "Скрывать категоризацию страниц",
        "tog-extendwatchlist": "Расширенный список наблюдения, включающий все изменения, а не только последние",
        "tog-usenewrc": "Группировать изменения в свежих правках и списке наблюдения",
        "tog-numberheadings": "Автоматически нумеровать заголовки",
        "tog-watchlisthideliu": "Скрывать правки представившихся участников из списка наблюдения",
        "tog-watchlisthideanons": "Скрывать правки анонимных участников из списка наблюдения",
        "tog-watchlisthidepatrolled": "Скрывать отпатрулированные правки из списка наблюдения",
-       "tog-watchlisthidecategorization": "Скрывать категоризацию страниц",
        "tog-ccmeonemails": "Отправлять мне копии писем, которые я посылаю другим участникам",
        "tog-diffonly": "Не показывать содержание страницы под сравнением двух версий",
        "tog-showhiddencats": "Показывать скрытые категории",
        "createacct-benefit-body2": "{{PLURAL:$1|статья|статьи|статей}}",
        "createacct-benefit-body3": "{{PLURAL:$1|участник|участника|участников}} за последнее время",
        "badretype": "Введённые вами пароли не совпадают.",
+       "usernameinprogress": "Создание учётной записи для данного имени участника уже выполняется.\nПожалуйста, подождите.",
        "userexists": "Введённое имя участника уже используется.\nПожалуйста, выберите другое имя.",
        "loginerror": "Ошибка опознавания участника",
        "createacct-error": "Ошибка создания учётной записи",
        "right-override-export-depth": "экспортирование страниц, включая связанные страницы с глубиной до 5",
        "right-sendemail": "отправка электронной почты другим участникам",
        "right-passwordreset": "просмотр электронных писем с изменением пароля",
-       "right-managechangetags": "Создавать и удалять [[Special:Tags|метки]] из базы данных",
-       "right-applychangetags": "Ð\9fÑ\80имениÑ\82Ñ\8c [[Special:Tags|tags]] Ð½Ð°Ñ\80Ñ\8fдÑ\83 Ñ\81 Ð\92аÑ\88ими Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8fми",
-       "right-changetags": "Ð\94обавлÑ\8fÑ\82Ñ\8c Ð¸ Ñ\83далÑ\8fÑ\82Ñ\8c Ð¿Ñ\80оизволÑ\8cнÑ\8bе  [[Special:Tags|tags]] Ð½Ð° Ð¾Ñ\82делÑ\8cнÑ\8bÑ\85 Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8fх и записях в журнале",
+       "right-managechangetags": "создание и удаление [[Special:Tags|меток]] из базы данных",
+       "right-applychangetags": "пÑ\80именение [[Special:Tags|меÑ\82ок]] Ð²Ð¼ÐµÑ\81Ñ\82е Ñ\81о Ñ\81воими Ð¿Ñ\80авками",
+       "right-changetags": "добавление Ð¸ Ñ\83даление Ð¿Ñ\80оизволÑ\8cнÑ\8bÑ\85 [[Special:Tags|меÑ\82ок]] Ð½Ð° Ð¾Ñ\82делÑ\8cнÑ\8bÑ\85 Ð¿Ñ\80авках и записях в журнале",
        "newuserlogpage": "Журнал регистрации участников",
        "newuserlogpagetext": "Список недавно зарегистрировавшихся участников",
        "rightslog": "Журнал прав участника",
        "rcshowhidemine": "$1 свои правки",
        "rcshowhidemine-show": "Показать",
        "rcshowhidemine-hide": "Скрыть",
-       "rcshowhidecategorization": "$1 категоризацию страницы",
-       "rcshowhidecategorization-show": "Показать",
-       "rcshowhidecategorization-hide": "Скрыть",
        "rclinks": "Показать последние $1 изменений за $2 дней<br />$3",
        "diff": "разн.",
        "hist": "история",
        "recentchangeslinked-summary": "Это список недавних изменений в страницах, на которые ссылается указанная страница (или входящих в указанную категорию).\nСтраницы, входящие в [[Special:Watchlist|ваш список наблюдения]] '''выделены'''.",
        "recentchangeslinked-page": "Название страницы:",
        "recentchangeslinked-to": "Наоборот, показать изменения на страницах, которые ссылаются на указанную страницу",
-       "recentchanges-page-added-to-category": "[[:$1]] добавлена в категорию",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] и {{PLURAL:$2|одна страница|$2 страниц}} добавлены в категорию",
-       "recentchanges-page-removed-from-category": "[[:$1]] убрана из категории",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] и {{PLURAL:$2|одна страница|$2 страниц}} убраны из категории",
        "upload": "Загрузить файл",
        "uploadbtn": "Загрузить файл",
        "reuploaddesc": "Вернуться к форме загрузки",
        "emailuser": "Письмо участнику",
        "emailuser-title-target": "Написание электронного письма {{GENDER:$1|участнику|участнице}}",
        "emailuser-title-notarget": "Написание электронного письма участнику",
-       "emailpage": "Письмо участнику",
        "emailpagetext": "С помощью данной формы можно отправить сообщение на адрес электронной почты {{GENDER:$1|этого участника|этой участницы}}.\nВ качестве обратного адреса будет указан тот адрес, который вы указали в [[Special:Preferences|своих настройках]], таким образом получатель будет иметь возможность ответить непосредственно вам.",
        "defemailsubject": "{{SITENAME}} — Письмо от $1",
        "usermaildisabled": "Электронная почта участника отключена",
        "emailccsubject": "Копия вашего сообщения для $1: $2",
        "emailsent": "Письмо отправлено",
        "emailsenttext": "Ваше электронное сообщение отправлено.",
-       "emailuserfooter": "Это письмо было отправлено {{GENDER:$2|участнику|участнице}} $2 от {{GENDER:$1|участника|участницы}} $1 с помощью функции «{{int:emailpage}}» проекта {{SITENAME}}.",
+       "emailuserfooter": "Это письмо было отправлено {{GENDER:$2|участнику|участнице}} $2 от {{GENDER:$1|участника|участницы}} $1 с помощью функции «{{int:emailuser}}» проекта {{SITENAME}}.",
        "usermessage-summary": "Оставить системное сообщение.",
        "usermessage-editor": "Системная доставка",
        "watchlist": "Список наблюдения",
        "logentry-newusers-create2": "$1 {{GENDER:$2|создал|создала}} учётную запись $3",
        "logentry-newusers-byemail": "$1 {{GENDER:$2|создал|создала}} учётную запись $3 и пароль был отправлен по электронной почте",
        "logentry-newusers-autocreate": "Автоматически создана учётная запись {{GENDER:$2|участника|участницы}} $1",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|перенёс|перенесла}} настройки защиты с $4 на $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|изменил|изменила}} членство в группах для $3 с $4 на $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|изменил|изменила}} членство в группах для $3",
        "logentry-rights-autopromote": "$1 был{{GENDER:$2||а}} автоматически переведен{{GENDER:$2||а}} из $4 в $5",
index 1d1c81a..7853e83 100644 (file)
        "emailuser": "एतस्मै योजकाय वि-पत्रं प्रेष्यताम्",
        "emailuser-title-target": "{{GENDER:$1|एतस्मै सदस्याय}} वि-पत्रं प्रैष्यताम्",
        "emailuser-title-notarget": "ईपत्र योजकः",
-       "emailpage": "वि-पत्रोपयोक्ता",
        "emailpagetext": "{{GENDER:$1|अस्मै}} योजकाय विद्युन्मानपत्रं प्रेषयितुम् अधो दत्तप्रपत्रम् उपयोक्तुं शक्नोति । \n[[Special:Preferences|your user preferences]] अत्र भवता विनिवेशितः वि-पत्रसङ्केतः सकाशात् इति स्थाने प्रतिभाति । अनेन स्वीकर्ता साक्षात् प्रत्युत्तरं दातुं प्रभविष्यति ।",
        "defemailsubject": "{{SITENAME}}\"$1\" इति योजकात् विद्युन्मानपत्रम् ।",
        "usermaildisabled": "योजकस्य विद्युन्मानपत्रं निष्क्रियम् ।",
        "emailccsubject": "$1: $2 कृते अपि भवतः सन्देशस्य प्रकृतीः ।",
        "emailsent": "वि-पत्रं प्रेषितम्",
        "emailsenttext": "भवतः/भवत्याः वि-पत्रसन्देशः प्रेषितः",
-       "emailuserfooter": "एतद्वि-पत्रं {{SITENAME}} इत्यस्य योजपत्राचरव्यवस्थाद्वारा  $1 इत्यनेन $2 {{int:emailpage}} कृते प्रेषितम् ।",
+       "emailuserfooter": "एतद्वि-पत्रं {{SITENAME}} इत्यस्य योजपत्राचरव्यवस्थाद्वारा  $1 इत्यनेन $2 {{int:emailuser}} कृते प्रेषितम् ।",
        "usermessage-summary": "तान्त्रिकसन्देशानां त्यागः ।",
        "usermessage-editor": "तान्त्रिकसन्देशवाहकः ।",
        "watchlist": "निरीक्षासूचिः",
index 11efac4..ee7c91b 100644 (file)
        "rcshowhidemine": "Мин уларытыыларбын $1",
        "rcshowhidemine-show": "Көрдөр",
        "rcshowhidemine-hide": "Кистээ",
-       "rcshowhidecategorization-show": "Көрдөр",
-       "rcshowhidecategorization-hide": "Кистээ",
        "rclinks": "$2 күҥҥэ бүтэһик $1 уларытыыны көрдөр;<br />$3.",
        "diff": "уратыта",
        "hist": "устуоруйата",
        "emailuser": "Кыттааччыга сурук",
        "emailuser-title-target": "Эл. суругу {{GENDER:$1|кыттааччыга}} суруйуу",
        "emailuser-title-notarget": "Кыттааччыга e-mail сурук ыытыы",
-       "emailpage": "Кыттааччыга E-mail ыыт",
        "emailpagetext": "Бу фуорма көмөтүнэн {{GENDER:$1|кыттааччыга}} сурук ыытыаххын сөп.\n\"Кимтэн\" диэҥҥэ эн [[Special:Preferences|туруорууларгар]] баар аадырыһыҥ киириэҕэ,\nонон суругу туппут киһи ол аадырыскар чопчу хардарар кыахтаныа.",
        "defemailsubject": "{{SITENAME}} — $1 диэн киһиттэн сурук кэлбит",
        "usermaildisabled": "Кыттааччы эл почтата арахса сылдьар",
index ccae3bf..c44e0d6 100644 (file)
        "emailuser": "Manna nu missaggiu di posta elittrònica a' st'utenti",
        "emailuser-title-target": "Mannari nu missaggiu di posta elittrònica a' {{GENDER:$1|stu utenti|sta utenti}}",
        "emailuser-title-notarget": "Mannari nu missaggiu di posta elittrònica a' n'utenti",
-       "emailpage": "Mannari nu missaggiu di posta elittrònica a' l'utenti",
        "emailpagetext": "Poi adupirari lu mòdulu ccassutta pi' mannari nu missaggiu di posta elittrònica a' {{GENDER:$1|stu utenti|sta utenti}}.\nLu nnirizzu di posta elittrònica ca mittisti ntê [[Special:Preferences|prifirenzi dû to utenti]] và a' cumpàriri comu mittenti dû missaggiu, di manera ca lu distinatariu ti pò arrispùnniri dirittamenti.",
        "defemailsubject": "Missaggiu di {{SITENAME}} di l'utenti \"$1\"",
        "usermaildisabled": "Missaggi di posta elittrònica a' l'utenti disattivati",
        "emailccsubject": "Copia dû missaggiu ca mannasti a' $1: $2",
        "emailsent": "Missaggiu di posta elittrònica mannatu",
        "emailsenttext": "Lu to missaggiu di posta elittrònica fu' mannatu.",
-       "emailuserfooter": "Stu missaggiu fu' mannatu di $1 a' $2 pi' menzu dâ funzioni \"{{int:emailpage}}\" supra a' {{SITENAME}}.",
+       "emailuserfooter": "Stu missaggiu fu' mannatu di $1 a' $2 pi' menzu dâ funzioni \"{{int:emailuser}}\" supra a' {{SITENAME}}.",
        "usermessage-summary": "Lassatu nu missaggiu di sistema.",
        "usermessage-editor": "Missaggeri di sistema",
        "watchlist": "Lista taliata",
index 37e3344..76ea3ff 100644 (file)
        "emailuser": "E-mail this uiser",
        "emailuser-title-target": "Wab-mail this {{GENDER:$1|uiser}}",
        "emailuser-title-notarget": "Wab-mail uiser",
-       "emailpage": "Wab-mail uiser",
        "emailpagetext": "Ye can uise the form ablo tae send ae wab-mail message til this {{GENDER:$1|uiser}}.\nThe wab-mail address that ye entered in [[Special:Preferences|yer uiser preeferances]] will kith aes the \"Fae\" address o the wab-mail, sae that the receepient will be able tae replie directlie til ye.",
        "defemailsubject": "{{SITENAME}} wab-mail fae uiser \"$1\"",
        "usermaildisabled": "Uiser wab-mail disablit",
        "tooltip-pt-logout": "Log oot",
        "tooltip-pt-createaccount": "We encoorage ye tae creaute aen accoont n log in; houever, it's no strictllie nesisair",
        "tooltip-ca-talk": "Discussion aneat the content page",
-       "tooltip-ca-edit": "Ye can eedit this page. Please uise the luikower button afore hainin",
+       "tooltip-ca-edit": "Eedit this page",
        "tooltip-ca-addsection": "Stairt ae new section",
        "tooltip-ca-viewsource": "This page is protectit.\nYe can see its soorce",
        "tooltip-ca-history": "Bygane reveesions o this page",
        "spam_reverting": "Revertin til the laist reveesion na containin links til $1",
        "spam_blanking": "Aw reveesions contained links til $1, blankin",
        "spam_deleting": "Aw reveesions contained links til $1, delytin",
-       "simpleantispam-label": "Anti-spam check.\nDiv <strong>NAW</strong> ful this in!",
+       "simpleantispam-label": "Anti-spam check.\nDae <strong>nae</strong> fill this in!",
        "pageinfo-title": "Information fer \"$1\"",
        "pageinfo-not-current": "Sairrie, it's na possible tae provide this information fer auld reveesions.",
        "pageinfo-header-basic": "Baseec information",
index e39de39..dc7ac9a 100644 (file)
        "emailuser": "Rašītė gruomata šėtam nauduotuojō",
        "emailuser-title-target": "Rašītė gromata {{GENDER:$1|tam nauduotuojuo}}",
        "emailuser-title-notarget": "Rašītė gromata",
-       "emailpage": "Siūstė el. gruomata nauduotuojui",
        "defemailsubject": "{{SITENAME}} - gromata nug nauduotuojė $1",
        "usermaildisabled": "El. paštos ėšjongts īr",
        "noemailtitle": "Nier el. pašta adreso",
        "emailccsubject": "Gruomatas kuopėjė nauduotuojō $1: $2",
        "emailsent": "El. gruomata ėšsiōsta",
        "emailsenttext": "Tamstas el. pašta žėnotė ėšsiōsta.",
-       "emailuserfooter": "Nauduotuos $1 nosiontė gromata nauduotuojuo $2 par \"{{int:emailpage}}\" rakonda svetainie {{SITENAME}}.",
+       "emailuserfooter": "Nauduotuos $1 nosiontė gromata nauduotuojuo $2 par \"{{int:emailuser}}\" rakonda svetainie {{SITENAME}}.",
        "watchlist": "Keravuojamė poslapē",
        "mywatchlist": "Keravuojamė poslapē",
        "watchlistfor2": "Nauduotuojė $1 ($2)",
        "specialpages-group-maintenance": "Sėstemas palaikīma pranešėmā",
        "specialpages-group-other": "Kėtė specēlė̄jė poslapē",
        "specialpages-group-login": "Prisėjongėms / Registracėjė",
-       "specialpages-group-changes": "Vielībiė̅ jė pakeitėmā ė regėstrā",
+       "specialpages-group-changes": "Vielībė̄jė pakeitėmā ė sārošā",
        "specialpages-group-media": "Infuormacėjė aple failus ėr anū pakruovėms",
        "specialpages-group-users": "Nauduotuojē ė teisės",
        "specialpages-group-highuse": "Platē nauduojamė poslapē",
-       "specialpages-group-pages": "Poslapiu sarašas",
+       "specialpages-group-pages": "Poslapiu sārošos",
        "specialpages-group-pagetools": "Poslapiu rakondā",
        "specialpages-group-wiki": "Wiki doumenīs ė rakondā",
        "specialpages-group-redirects": "Specēlė̄jė nusokėma poslapē",
index d317988..549d49e 100644 (file)
        "emailuser": "මෙම පරිශීලක වෙත විද්‍යුත්-ලිපියක් යවන්න",
        "emailuser-title-target": "මෙම {{GENDER:$1|පරිශීලක}} ඊ-තැපැල් කරන්න",
        "emailuser-title-notarget": " පරිශීලකට විද්‍යුත්-ලිපියක් යවන්න",
-       "emailpage": " පරිශීලකට විද්‍යුත්-ලිපියක් යවන්න",
        "emailpagetext": "මෙම {{GENDER:$1|පරිශීලකයා}} හට විද්‍යුත්-තැපෑල් පණිවුඩයක් යැවීම සඳහා මෙම ආකෘති පත්‍රය භාවිතා කිරීමට ඔබ හට හැක.\nලබන්නා විසින් සෘජු ලෙස ඔබ හට පිළිතුරු එවනු හැකි වන පරිදි, ඔබ විසින් [[Special:Preferences|ඔබගේ පරිශීලක අභිරුචියන්]] හි ඇතුළත් කල විද්‍යුත්-තැපැල් ලිපිනය,  විද්‍යුත්-තැපෑලෙහි \"වෙතින්\" ලිපිනයෙහි පෙන්නුම් කරනු ඇත.",
        "defemailsubject": "{{SITENAME}} පරිශීලක \"$1\" වෙතින් විද්‍යුත්-තැපෑල",
        "usermaildisabled": "ඔබගේ විද්‍යුත්-තැපෑල අක්‍රීය කොට ඇත",
        "emailccsubject": "$1: $2 වෙත ඔබගේ පණිවුඩය පිටපත් කරන්න",
        "emailsent": "විද්‍යුත්-තැපෑල යවන ලදි",
        "emailsenttext": "ඔබගේ  විද්‍යුත්-තැපැල්  පණිවුඩය යවා ඇත.",
-       "emailuserfooter": "{{SITENAME}} හි \"{{int:emailpage}}\" ශ්‍රිතය අනුසාරයෙන් $1 විසින්  $2  වෙත  විද්‍යුත්-තැපෑලක් යවන ලදි.",
+       "emailuserfooter": "{{SITENAME}} හි \"{{int:emailuser}}\" ශ්‍රිතය අනුසාරයෙන් $1 විසින්  $2  වෙත  විද්‍යුත්-තැපෑලක් යවන ලදි.",
        "usermessage-summary": "පද්ධති පණිවුඩයක් තබමි.",
        "usermessage-editor": "පද්ධති පණිවුඩ කරු",
        "watchlist": "මුරලැයිස්තුව",
index bbf7874..555db1a 100644 (file)
@@ -17,7 +17,6 @@
        "tog-hideminor": "Skrij manjše popravke v zadnjih spremembah",
        "tog-hidepatrolled": "Skrij pregledana urejanja v zadnjih spremembah",
        "tog-newpageshidepatrolled": "Skrij pregledane strani iz seznama novih strani",
-       "tog-hidecategorization": "Skrij kategorizacijo strani",
        "tog-extendwatchlist": "Razširi spisek nadzorov, da bo prikazoval vse spremembe, ne le najnovejše",
        "tog-usenewrc": "Združi spremembe posamezne strani na zadnjih spremembah in spisku nadzorov",
        "tog-numberheadings": "Samodejno številči poglavja",
@@ -47,7 +46,6 @@
        "tog-watchlisthideliu": "Na spisku nadzorov skrij urejanja prijavljenih uporabnikov",
        "tog-watchlisthideanons": "Na spisku nadzorov skrij urejanja anonimnih uporabnikov",
        "tog-watchlisthidepatrolled": "Na spisku nadzorov skrij pregledana urejanja",
-       "tog-watchlisthidecategorization": "Skrij kategorizacijo strani",
        "tog-ccmeonemails": "Pošlji mi kopijo e-pošt, ki jih pošljem drugim uporabnikom",
        "tog-diffonly": "Pod primerjavo ne prikaži vsebine strani",
        "tog-showhiddencats": "Prikaži skrite kategorije",
        "createacct-benefit-body2": "{{PLURAL:$1|stran|strani}}",
        "createacct-benefit-body3": "{{PLURAL:$1|nedavni sodelavec|nedavna sodelavca|nedavni sodelavci|nedavnih sodelavcev}}",
        "badretype": "Gesli, ki ste ju vnesli, se ne ujemata.",
+       "usernameinprogress": "Ustvarjanje računa za to uporabniško ime je že v teku. Prosimo, počakajte.",
        "userexists": "Uporabniško ime, ki ste ga vnesli, je že zasedeno.\nProsimo, izberite drugo.",
        "loginerror": "Napaka ob prijavi",
        "createacct-error": "Napaka pri ustvarjanju računa",
        "rcshowhidemine": "$1 moja urejanja",
        "rcshowhidemine-show": "Prikaži",
        "rcshowhidemine-hide": "Skrij",
-       "rcshowhidecategorization": "$1 kategorizacijo strani",
-       "rcshowhidecategorization-show": "Prikaži",
-       "rcshowhidecategorization-hide": "Skrij",
        "rclinks": "Prikaži zadnjih $1 sprememb v zadnjih $2 dneh<br />$3",
        "diff": "prim",
        "hist": "zgod",
        "recentchangeslinked-summary": "To je seznam nedavnih sprememb strani povezanih na določeno stran (ali iz določene kategorije).\nStrani iz [[Special:Watchlist|vašega spiska nadzorov]] so '''odebeljene'''.",
        "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 $2 {{PLURAL:$2|stran dodana|strani dodani|strani dodane|strani dodanih}} v kategorijo",
-       "recentchanges-page-removed-from-category": "[[:$1]] odstranjeno iz kategorije",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] in $2 {{PLURAL:$2|stran odstranjena|strani odstranjeni|strani odstranjene|strani odstranjenih}} iz kategorije",
        "upload": "Naloži datoteko",
        "uploadbtn": "Naloži datoteko",
        "reuploaddesc": "Prekliči nalaganje in se vrni na obrazec za nalaganje",
        "emailuser": "Pošlji uporabniku e-pismo",
        "emailuser-title-target": "Pošlji {{GENDER:$1|uporabniku|uporabnici}} e-pošto",
        "emailuser-title-notarget": "Pošlji uporabniku e-pismo",
-       "emailpage": "Pošlji uporabniku e-pismo",
        "emailpagetext": "S spodnjim obrazcem lahko {{GENDER:$1|uporabniku|uporabnici}} pošljete e-poštno sporočilo.\nE-poštni naslov, ki ste ga vpisali v [[Special:Preferences|uporabniških nastavitvah]], bo v e-sporočilu naveden kot naslov »Od:«, tako da bo {{GENDER:$1|prejemnik lahko odgovoril|prejemnica lahko odgovorila}} neposredno vam.",
        "defemailsubject": "Elektronska pošta {{GRAMMAR:rodilnik|{{SITENAME}}}} od uporabnika »$1«",
        "usermaildisabled": "Uporabniška e-pošta je onemogočena",
        "emailccsubject": "Kopija tvojega sporočila iz $1: $2",
        "emailsent": "E-pismo je poslano!",
        "emailsenttext": "E-pismo je poslano.",
-       "emailuserfooter": "To e-poštno sporočilo je bilo poslal(-a) $1 uporabniku $2 s funkcijo »{{int:emailpage}}« na {{GRAMMAR:dative|{{SITENAME}}}}.",
+       "emailuserfooter": "To e-poštno sporočilo je bilo poslal(-a) $1 uporabniku $2 s funkcijo »{{int:emailuser}}« na {{GRAMMAR:dative|{{SITENAME}}}}.",
        "usermessage-summary": "Pusti sistemsko sporočilo.",
        "usermessage-editor": "Sistemski sporočevalec",
        "watchlist": "Spisek nadzorov",
        "logentry-newusers-create2": "$1 je {{GENDER:$2|ustvaril|ustvarila|ustvaril(-a)}} uporabniški račun $3",
        "logentry-newusers-byemail": "$1 je {{GENDER:$2|ustvaril|ustvarila|ustvaril(-a)}} uporabniški račun $3; geslo je bilo poslano po e-pošti",
        "logentry-newusers-autocreate": "Račun $1 je bil samodejno {{GENDER:$2|ustvarjen}}",
+       "logentry-protect-move_prot": "$1 je {{GENDER:$2|prestavil|prestavila|prestavil(-a)}} nastavitve zaščite s strani $4 na $3",
        "logentry-rights-rights": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} uporabniške pravice uporabnika $3 z $4 na $5",
        "logentry-rights-rights-legacy": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} uporabniške pravice uporabnika $3",
        "logentry-rights-autopromote": "$1 je {{GENDER:$2|bil samodejno povišan|bila samodejno povišana|bil(-a) samodejno povišan(-a)}} z $4 na $5",
index f25d51a..b18cc6b 100644 (file)
@@ -34,7 +34,6 @@
        "tog-hideminor": "Сакриј мање измене у списку скорашњих измена",
        "tog-hidepatrolled": "Сакриј патролиране измене у списку скорашњих измена",
        "tog-newpageshidepatrolled": "Сакриј патролиране странице са списка нових страница",
-       "tog-hidecategorization": "Сакриј категоризацију страница",
        "tog-extendwatchlist": "Прошири списак надгледања за приказ свих измена, не само скорашњих",
        "tog-usenewrc": "Промене у групи по страници у списку скорашњих измена и надгледаних страница",
        "tog-numberheadings": "Аутоматски нумериши поднаслове",
@@ -64,7 +63,6 @@
        "tog-watchlisthideliu": "Сакриј измене пријављених корисника са списка надгледања",
        "tog-watchlisthideanons": "Сакриј измене анонимних корисника са списка надгледања",
        "tog-watchlisthidepatrolled": "Сакриј патролиране измене са списка надгледања",
-       "tog-watchlisthidecategorization": "Сакриј категоризацију страница",
        "tog-ccmeonemails": "Пошаљи ми копије е-порука које пошаљем другим корисницима",
        "tog-diffonly": "Не приказуј садржај странице испод разлика",
        "tog-showhiddencats": "Прикажи скривене категорије",
        "createacct-benefit-body2": "{{PLURAL:$1|страница|странице}}",
        "createacct-benefit-body3": "{{PLURAL:$1|активни корисник|активних корисника}}",
        "badretype": "Унете лозинке се не поклапају.",
+       "usernameinprogress": "Налог за ово корисничко име се већ прави, молимо сачекајте.",
        "userexists": "Корисничко име је заузето. Изаберите друго.",
        "loginerror": "Грешка при пријављивању",
        "createacct-error": "Дошло је до грешке при отварању налога",
        "rows": "Редова:",
        "columns": "Колона",
        "searchresultshead": "Претрага",
-       "stub-threshold": "Праг за обликовање <a href=\"#\" class=\"stub\">везе као клице</a> (у бајтовима):",
+       "stub-threshold": "Праг за обликовање <a href=\"#\" class=\"stub\">везе као клице</a>:",
        "stub-threshold-disabled": "Онемогућено",
        "recentchangesdays": "Број дана у скорашњим изменама:",
        "recentchangesdays-max": "Највише $1 {{PLURAL:$1|дан|дана}}",
        "recentchangescount": "Број измена за приказ:",
        "prefs-help-recentchangescount": "Подразумева скорашње измене, историје страница и дневнике.",
-       "prefs-help-watchlist-token2": "Ово је тајни кључ за веб довод вашег списка надгледања.\nСвако ко зна овај кључ биће у могућности да види ваша надгледања стога немојте га одавати никоме.\nАко је потребно можете га [[Special:ResetTokens|ресетовати]].",
+       "prefs-help-watchlist-token2": "Ово је тајни кључ за веб-довод Вашег списка надгледања. \nСвако ко зна овај кључ биће у могућности да види Ваша надгледања; стога, кључ немојте одавати никоме. \nАко је потребно, кључ можете [[Special:ResetTokens|ресетовати]].",
        "savedprefs": "Ваша подешавања су сачувана.",
        "timezonelegend": "Временска зона:",
        "localtime": "Локално време:",
        "yourvariant": "Варијанта језика:",
        "prefs-help-variant": "Жељена варијанта или правопис за приказ страница са садржајем овог викија.",
        "yournick": "Нови потпис:",
-       "prefs-help-signature": "Ð\9aоменÑ\82аÑ\80е Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86ама Ð·Ð° Ñ\80азговоÑ\80 Ð¿Ð¾Ñ\82пиÑ\88иÑ\82е Ñ\81а ''<nowiki>~~~~</nowiki>''. Ð\9eви Ð·Ð½Ð°ÐºÐ¾Ð²Ð¸ Ñ\9bе Ð±Ð¸Ñ\82и Ð¿Ñ\80еÑ\82воÑ\80ени Ñ\83 Ð²аш потпис и тренутно време.",
+       "prefs-help-signature": "Ð\9aоменÑ\82аÑ\80е Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86ама Ð·Ð° Ñ\80азговоÑ\80 Ð¿Ð¾Ñ\82пиÑ\81Ñ\83Ñ\98Ñ\82е Ñ\81а Ñ\87еÑ\82иÑ\80и Ñ\82илде: <nowiki>~~~~</nowiki>. Ð\9eваÑ\98 Ð²Ð¸ÐºÐ¸Ñ\82екÑ\81Ñ\82 Ñ\9bе Ð±Ð¸Ñ\82и Ð¿Ñ\80еÑ\82воÑ\80ен Ñ\83 Ð\92аш потпис и тренутно време.",
        "badsig": "Потпис је неисправан.\nПроверите ознаке HTML.",
        "badsiglength": "Ваш потпис је предугачак.\nНе сме бити дужи од $1 {{PLURAL:$1|знака|знака|знакова}}.",
        "yourgender": "Како желите да се представите?",
        "rcshowhidemine": "$1 моје измене",
        "rcshowhidemine-show": "Прикажи",
        "rcshowhidemine-hide": "Сакриј",
-       "rcshowhidecategorization": "$1 категоризацију страница",
-       "rcshowhidecategorization-show": "Прикажи",
-       "rcshowhidecategorization-hide": "Сакриј",
        "rclinks": "Прикажи последњих $1 измена {{PLURAL:$2|претходни дан|у последња $2 дана|у последњих $2 дана}}<br />$3",
        "diff": "разл",
        "hist": "ист",
        "recentchangeslinked-summary": "Ова посебна страница приказује списак последњих измена на страницама које су повезане (или чланови одређене категорије).\nСтранице с [[Special:Watchlist|вашег списка надгледања]] су '''подебљане'''.",
        "recentchangeslinked-page": "Назив странице:",
        "recentchangeslinked-to": "Прикажи измене страница које су повезане с датом страницом",
-       "recentchanges-page-added-to-category": "[[:$1]] је додата у категорију",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] и још {{PLURAL:$2|једна страница|$2 странице}} су додате у категорију",
-       "recentchanges-page-removed-from-category": "[[:$1]] је уклоњена из категорије",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] и још {{PLURAL:$2|једна страница|$2 странице}} су уклоњене из категорије",
        "upload": "Пошаљи датотеку",
        "uploadbtn": "Пошаљи датотеку",
        "reuploaddesc": "Назад на образац за отпремање",
        "upload-copy-upload-invalid-domain": "Примерци отпремања нису доступни на овом домену.",
        "upload-dialog-button-cancel": "Откажи",
        "upload-dialog-button-done": "Готово",
+       "upload-dialog-button-save": "Сачувај",
+       "upload-dialog-button-upload": "Пошаљи",
+       "upload-dialog-label-select-file": "Изабери датотеку",
+       "upload-dialog-label-infoform-title": "Детаљи",
        "upload-dialog-label-infoform-name": "Назив",
        "upload-dialog-label-infoform-description": "Опис",
        "upload-dialog-label-usage-filename": "Назив датотеке",
        "logempty": "Нема пронађених ставки у историји.",
        "log-title-wildcard": "Тражи наслове који почињу с овим текстом",
        "showhideselectedlogentries": "Прикажи/сакриј изабране догађаје",
+       "log-edit-tags": "Уреди ознаке изабраних уноса у дневницима",
        "allpages": "Све странице",
        "nextpage": "Следећа страница ($1)",
        "prevpage": "Претходна страница ($1)",
        "emailuser": "Пошаљи е-поруку",
        "emailuser-title-target": "Слање е-поруке {{GENDER:$1|кориснику|корисници|кориснику}}",
        "emailuser-title-notarget": "Слање е-поруке кориснику",
-       "emailpage": "Слање е-порука",
        "emailpagetext": "Можете да користите доњи образац да пошаљете е-поруку {{GENDER:$1|овом кориснику|овој корисници}}.\nЕ-адреса коју сте унели у вашим [[Special:Preferences|подешавањима]] ће се приказати у пољу „Од“, тако да ће прималац моћи да вам одговори директно.",
        "defemailsubject": "{{SITENAME}} — Е-пошта од {{GENDER:$1|корисника|кориснице}} $1",
        "usermaildisabled": "Корисничка е-пошта је онемогућена",
        "emailccsubject": "Копија ваше поруке кориснику $1: $2",
        "emailsent": "Порука је послата",
        "emailsenttext": "Ваша е-порука је послата.",
-       "emailuserfooter": "Ову е-поруку је послао $1 кориснику $2 помоћу „{{int:emailpage}}“ с викија {{SITENAME}}.",
+       "emailuserfooter": "Ову е-поруку је послао $1 кориснику $2 помоћу „{{int:emailuser}}“ с викија {{SITENAME}}.",
        "usermessage-summary": "Слање системске поруке.",
        "usermessage-editor": "Уређивач системских порука",
        "usermessage-template": "MediaWiki:UserMessage",
        "protectedarticle": "{{GENDER:|је заштитио|је заштитила}} „[[$1]]“",
        "modifiedarticleprotection": "је променио степен заштите за „[[$1]]“",
        "unprotectedarticle": "је скинуо заштиту са странице „[[$1]]“",
-       "movedarticleprotection": "{{GENDER:|је преместио|је преместила|је преместио}} поставке заштите са „[[$2]]“ на „[[$1]]“",
+       "movedarticleprotection": "је преместио поставке заштите са „[[$2]]“ на „[[$1]]“",
        "protect-title": "Степен заштите за „$1“",
        "protect-title-notallowed": "Преглед степена заштите за „$1“",
        "prot_1movedto2": "је преместио [[$1]] на [[$2]]",
        "pagesize": "(бајтови)",
        "restriction-edit": "уређивање",
        "restriction-move": "премештање",
-       "restriction-create": "стварање",
+       "restriction-create": "Прављење",
        "restriction-upload": "слање",
        "restriction-level-sysop": "потпуно заштићено",
        "restriction-level-autoconfirmed": "полузаштићено",
        "movereason": "Разлог:",
        "revertmove": "врати",
        "delete_and_move": "Обриши и премести",
-       "delete_and_move_text": "== Потребно брисање ==\n\nОдредишна страница „[[:$1]]“ већ постоји. \nЖелите ли да је обришете да бисте ослободили место за преусмерење?",
+       "delete_and_move_text": "== Потребно брисање ==\n\nОдредишна страница „[[:$1]]“ већ постоји. \nЖелите ли да је обришете да бисте ослободили место за премештање?",
        "delete_and_move_confirm": "Да, обриши страницу",
        "delete_and_move_reason": "Обрисано да се ослободи место за премештање из „[[$1]]“",
        "selfmove": "Изворни и одредишни наслови су истоветни;\nне могу да преместим страницу преко саме себе.",
        "patrol-log-page": "Дневник патролирања",
        "patrol-log-header": "Ово је дневник патролираних измена.",
        "log-show-hide-patrol": "$1 дневник патролирања",
+       "log-show-hide-tag": "$1 дневник ознака",
        "deletedrevision": "Обрисана стара измена $1.",
        "filedeleteerror-short": "Грешка при брисању датотеке: $1",
        "filedeleteerror-long": "Дошло је до грешака при брисању датотеке:\n\n$1",
        "tags-actions-header": "Радње",
        "tags-active-yes": "Да",
        "tags-active-no": "Не",
+       "tags-source-extension": "Део екстензије",
+       "tags-source-manual": "Ручно је додају корисници и ботови",
        "tags-source-none": "Ван употребе",
        "tags-edit": "уреди",
        "tags-delete": "обриши",
        "tags-hitcount": "$1 {{PLURAL:$1|измена|измене|измена}}",
        "tags-manage-no-permission": "Немате дозволу да мењате ознаке.",
        "tags-create-heading": "Нова ознака",
+       "tags-create-explanation": "По подразумеваним подешавањима нове ознаке моћи ће да користе корисници и ботови.",
        "tags-create-tag-name": "Назив ознаке:",
        "tags-create-reason": "Разлог:",
        "tags-create-submit": "Направи",
        "tags-create-warnings-below": "Правите нову ознаку, желите ли да наставите?",
        "tags-delete-title": "Брисање ознака",
        "tags-delete-explanation-initial": "Бришете ознаку „$1“ из базе података.",
+       "tags-delete-explanation-warning": "Ова радња је <strong>неповратна</strong> и <strong>не може се поништити</strong>, чак ни администратори базе података је не могу поништити. Будите сигурни да је ово ознака коју желите обрисати.",
        "tags-delete-reason": "Разлог:",
        "tags-delete-submit": "Неповратно обриши ову ознаку",
        "tags-delete-not-found": "Ознака „$1“ не постоји.",
        "logentry-newusers-create2": "$1 је {{GENDER:$2|отворио|отворила}} кориснички налог $3",
        "logentry-newusers-byemail": "$1 је {{GENDER:$2|отворио|отворила}} кориснички налог $3 и лозинка је послата на е-пошту",
        "logentry-newusers-autocreate": "Кориснички налог $1 је аутоматски {{GENDER:$2|отворен}}",
+       "logentry-protect-move_prot": "$1 је {{GENDER:$2|преместио|преместила}} поставке заштите са $4 на $3",
        "logentry-rights-rights": "$1 је {{GENDER:$2|променио|променила}} чланство групе за $3 из $4 у $5",
        "logentry-rights-rights-legacy": "$1 је {{GENDER:$2|променио|променила}} чланство групе за $3",
        "logentry-rights-autopromote": "$1 је аутоматски {{GENDER:$2|унапређен|унапређена}} из $4 у $5",
        "logentry-upload-upload": "$1 је {{GENDER:$2|послао|послала}} $3",
        "logentry-upload-overwrite": "$1 је {{GENDER:$2|послао|послала}} нову верзију $3",
        "logentry-upload-revert": "$1 је {{GENDER:$2|послао|послала}} $3",
-       "log-name-managetags": "Дневник ознака",
+       "log-name-managetags": "Дневник уређивања ознака",
        "log-description-managetags": "Овај дневник садржи списак измена у вези [[Special:Tags|ознака]]. Дневник садржи само радње извршене од стране администратора, уноси за ознаке направљене или обрисане од стране вики софтвера се не налазе у овом дневнику.",
        "logentry-managetags-create": "$1 је {{GENDER:$2|направио|направила}} ознаку „$4“",
        "logentry-managetags-delete": "$1 је {{GENDER:$2|обрисао|обрисала}} ознаку „$4“ (уклоњена је из $5 {{PLURAL:$5|измене или дневника|измена и/или дневника}})",
        "logentry-managetags-activate": "$1 је {{GENDER:$2|активирао|активирала}} ознаку „$4“ за употребу од стране корисника и ботова",
        "logentry-managetags-deactivate": "$1 је {{GENDER:$2|деактивирао|деактивирала}} ознаку „$4“ за употребу од стране корисника и ботова",
+       "log-name-tag": "Дневник ознака",
        "rightsnone": "(нема)",
        "revdelete-summary": "опис измене",
        "feedback-adding": "Додајем повратну информацију на страницу…",
        "special-characters-group-telugu": "телугу",
        "special-characters-group-sinhala": "синхалски",
        "special-characters-group-gujarati": "гуџарати",
+       "special-characters-group-devanagari": "деванагари",
        "special-characters-group-thai": "тајландски",
        "special-characters-group-lao": "лаоски",
        "special-characters-group-khmer": "кмерски",
index ab993c9..d3f4458 100644 (file)
        "rows": "Redova:",
        "columns": "Kolona",
        "searchresultshead": "Pretraga",
-       "stub-threshold": "Prag za oblikovanje <a href=\"#\" class=\"stub\">veze kao klice</a> (u bajtovima):",
+       "stub-threshold": "Prag za oblikovanje <a href=\"#\" class=\"stub\">veze kao klice</a>:",
        "stub-threshold-disabled": "Onemogućeno",
        "recentchangesdays": "Broj dana u skorašnjim izmenama:",
        "recentchangesdays-max": "Najviše $1 {{PLURAL:$1|dan|dana}}",
        "recentchangescount": "Broj izmena za prikaz:",
        "prefs-help-recentchangescount": "Podrazumeva skorašnje izmene, istorije stranica i dnevnike.",
-       "prefs-help-watchlist-token2": "Ovo je tajni ključ za veb dovod vašeg spiska nadgledanja.\nSvako ko zna ovaj ključ biće u mogućnosti da vidi vaša nadgledanja stoga nemojte ga odavati nikome.\nAko je potrebno možete ga [[Special:ResetTokens|resetovati]].",
+       "prefs-help-watchlist-token2": "Ovo je tajni ključ za veb-dovod Vašeg spiska nadgledanja. \nSvako ko zna ovaj ključ biće u mogućnosti da vidi Vaša nadgledanja; stoga, ključ nemojte odavati nikome. \nAko je potrebno, ključ možete [[Special:ResetTokens|resetovati]].",
        "savedprefs": "Vaša podešavanja su sačuvana.",
        "timezonelegend": "Vremenska zona:",
        "localtime": "Lokalno vreme:",
        "yourvariant": "Varijanta jezika:",
        "prefs-help-variant": "Željena varijanta ili pravopis za prikaz stranica sa sadržajem ovog vikija.",
        "yournick": "Novi potpis:",
-       "prefs-help-signature": "Komentare na stranicama za razgovor potpišite sa ''<nowiki>~~~~</nowiki>''. Ovi znakovi će biti pretvoreni u vaš potpis i trenutno vreme.",
+       "prefs-help-signature": "Komentare na stranicama za razgovor potpisujte sa četiri tilde: <nowiki>~~~~</nowiki>. Ovaj vikitekst će biti pretvoren u Vaš potpis i trenutno vreme.",
        "badsig": "Potpis je neispravan.\nProverite oznake HTML.",
        "badsiglength": "Vaš potpis je predugačak.\nNe sme biti duži od $1 {{PLURAL:$1|znaka|znaka|znakova}}.",
        "yourgender": "Kako želite da se predstavite?",
        "emailuser": "Pošalji e-poruku",
        "emailuser-title-target": "Slanje e-poruke {{GENDER:$1|korisniku|korisnici|korisniku}}",
        "emailuser-title-notarget": "Slanje e-poruke korisniku",
-       "emailpage": "Slanje e-poruka",
        "emailpagetext": "Možete da koristite donji obrazac da pošaljete e-poruku {{GENDER:$1|ovom korisniku|ovoj korisnici}}.\nE-adresa koju ste uneli u vašim [[Special:Preferences|podešavanjima]] će se prikazati u polju „Od“, tako da će primalac moći da vam odgovori direktno.",
        "defemailsubject": "{{SITENAME}} — E-pošta od {{GENDER:$1|korisnika|korisnice}} $1",
        "usermaildisabled": "Korisnička e-pošta je onemogućena",
        "emailccsubject": "Kopija vaše poruke korisniku $1: $2",
        "emailsent": "Poruka je poslata",
        "emailsenttext": "Vaša e-poruka je poslata.",
-       "emailuserfooter": "Ovu e-poruku je poslao $1 korisniku $2 pomoću „{{int:emailpage}}“ s vikija {{SITENAME}}.",
+       "emailuserfooter": "Ovu e-poruku je poslao $1 korisniku $2 pomoću „{{int:emailuser}}“ s vikija {{SITENAME}}.",
        "usermessage-summary": "Slanje sistemske poruke.",
        "usermessage-editor": "Uređivač sistemskih poruka",
        "usermessage-template": "MediaWiki:UserMessage",
        "protectedarticle": "{{GENDER:|je zaštitio|je zaštitila}} „[[$1]]“",
        "modifiedarticleprotection": "je promenio stepen zaštite za „[[$1]]“",
        "unprotectedarticle": "je skinuo zaštitu sa stranice „[[$1]]“",
-       "movedarticleprotection": "{{GENDER:|je premestio|je premestila|je premestio}} postavke zaštite sa „[[$2]]“ na „[[$1]]“",
+       "movedarticleprotection": "je premestio postavke zaštite sa „[[$2]]“ na „[[$1]]“",
        "protect-title": "Stepen zaštite za „$1“",
        "protect-title-notallowed": "Pregled stepena zaštite za „$1“",
        "prot_1movedto2": "je premestio [[$1]] na [[$2]]",
        "pagesize": "(bajtovi)",
        "restriction-edit": "uređivanje",
        "restriction-move": "premeštanje",
-       "restriction-create": "stvaranje",
+       "restriction-create": "Pravljenje",
        "restriction-upload": "slanje",
        "restriction-level-sysop": "potpuno zaštićeno",
        "restriction-level-autoconfirmed": "poluzaštićeno",
        "movereason": "Razlog:",
        "revertmove": "vrati",
        "delete_and_move": "Obriši i premesti",
-       "delete_and_move_text": "== Potrebno brisanje ==\n\nOdredišna stranica „[[:$1]]“ već postoji. \nŽelite li da je obrišete da biste oslobodili mesto za preusmerenje?",
+       "delete_and_move_text": "== Potrebno brisanje ==\n\nOdredišna stranica „[[:$1]]“ već postoji. \nŽelite li da je obrišete da biste oslobodili mesto za premeštanje?",
        "delete_and_move_confirm": "Da, obriši stranicu",
        "delete_and_move_reason": "Obrisano da se oslobodi mesto za premeštanje iz „[[$1]]“",
        "selfmove": "Izvorni i odredišni naslovi su istovetni;\nne mogu da premestim stranicu preko same sebe.",
        "logentry-upload-upload": "$1 je {{GENDER:$2|poslao|poslala}} $3",
        "logentry-upload-overwrite": "$1 je {{GENDER:$2|poslao|poslala}} novu verziju $3",
        "logentry-upload-revert": "$1 je {{GENDER:$2|poslao|poslala}} $3",
-       "log-name-managetags": "Dnevnik oznaka",
+       "log-name-managetags": "Dnevnik uređivanja oznaka",
        "log-description-managetags": "Ovaj dnevnik sadrži spisak izmena u vezi [[Special:Tags|oznaka]]. Dnevnik sadrži samo radnje izvršene od strane administratora, unosi za oznake napravljene ili obrisane od strane viki softvera se ne nalaze u ovom dnevniku.",
        "logentry-managetags-create": "$1 je {{GENDER:$2|napravio|napravila}} oznaku „$4“",
        "logentry-managetags-delete": "$1 je {{GENDER:$2|obrisao|obrisala}} oznaku „$4“ (uklonjena je iz $5 {{PLURAL:$5|izmene ili dnevnika|izmena i/ili dnevnika}})",
        "special-characters-group-telugu": "telugu",
        "special-characters-group-sinhala": "sinhalski",
        "special-characters-group-gujarati": "Gudžarati",
+       "special-characters-group-devanagari": "devanagari",
        "special-characters-group-thai": "tajlandski",
        "special-characters-group-lao": "laoski",
        "special-characters-group-khmer": "kmerski",
index 2d8bd67..af99a41 100644 (file)
@@ -73,7 +73,6 @@
        "tog-hideminor": "Dölj mindre redigeringar i senaste ändringar",
        "tog-hidepatrolled": "Dölj patrullerade redigeringar i senaste ändringar",
        "tog-newpageshidepatrolled": "Dölj patrullerade sidor i listan över nya sidor",
-       "tog-hidecategorization": "Dölj kategorisering av sidor",
        "tog-extendwatchlist": "Utöka bevakningslistan till att visa alla ändringar, inte bara den senaste",
        "tog-usenewrc": "Gruppera ändringar efter sida i senaste ändringar och bevakningslistan",
        "tog-numberheadings": "Automatisk numrerade rubriker",
        "tog-watchlisthideliu": "Visa inte redigeringar av inloggade användare i bevakningslistan",
        "tog-watchlisthideanons": "Dölj redigeringar av anonyma användare i bevakningslistan",
        "tog-watchlisthidepatrolled": "Dölj patrullerade redigeringar i bevakningslistan",
-       "tog-watchlisthidecategorization": "Dölj kategorisering av sidor",
        "tog-ccmeonemails": "Skicka kopior till mig av e-post jag skickar till andra användare",
        "tog-diffonly": "Visa inte sidinnehåll under diffar",
        "tog-showhiddencats": "Visa dolda kategorier",
        "createacct-benefit-body2": "{{PLURAL:$1|sida|sidor}}",
        "createacct-benefit-body3": "{{PLURAL:$1|nylig|nyliga}} bidragsgivare",
        "badretype": "De lösenord du uppgett överensstämmer inte med varandra.",
+       "usernameinprogress": "Kontoskapandet för detta användarnamn är redan i full gång.\nVänligen vänta.",
        "userexists": "Det valda användarnamnet används redan.\nVar god välj ett annat namn.",
        "loginerror": "Inloggningsproblem",
        "createacct-error": "Fel när konto skulle skapas",
        "rcshowhidemine": "$1 mina ändringar",
        "rcshowhidemine-show": "Visa",
        "rcshowhidemine-hide": "Dölj",
-       "rcshowhidecategorization": "$1 kategorisering av sidor",
-       "rcshowhidecategorization-show": "Visa",
-       "rcshowhidecategorization-hide": "Dölj",
        "rclinks": "Visa senaste $1 ändringar under de senaste $2 dygnen<br />$3",
        "diff": "skillnad",
        "hist": "historik",
        "recentchangeslinked-summary": "Detta är en lista över de senaste ändringarna på sidor som länkas till från en given sida (eller på sidor som hör till en viss kategori).\nSidor på [[Special:Watchlist|din bevakningslista]] är markerade med '''fetstil'''.",
        "recentchangeslinked-page": "Sidnamn:",
        "recentchangeslinked-to": "Visa ändringar på sidor med länkar till den givna sidan istället",
-       "recentchanges-page-added-to-category": "[[:$1]] lades till i kategorin",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] och {{PLURAL:$2|en sida|$2 sidor}} lades till i kategorin",
-       "recentchanges-page-removed-from-category": "[[:$1]] togs bort från kategorin",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] och {{PLURAL:$2|en sida|$2 sidor}} togs bort från kategorin",
        "upload": "Ladda upp fil",
        "uploadbtn": "Ladda upp fil",
        "reuploaddesc": "Avbryt uppladdningen och gå tillbaka till uppladdningsformuläret.",
        "emailuser": "Skicka e-post till den här användaren",
        "emailuser-title-target": "Skicka e-post till denna {{GENDER:$1|användare}}",
        "emailuser-title-notarget": "E-postanvändare",
-       "emailpage": "Skicka e-post till användare",
        "emailpagetext": "Du kan använda formuläret nedan för att skicka e-post till den här {{GENDER:$1|användaren}}.\nDen e-postadress du har angivit i [[Special:Preferences|dina användarinställningar]] kommer att visas som \"Från\"-adress i meddelandet, så att mottagaren har möjlighet att svara direkt till dig.",
        "defemailsubject": "{{SITENAME}} e-post från användare \"$1\"",
        "usermaildisabled": "Användar-e-post avaktiverat",
        "emailccsubject": "Kopia av ditt meddelande till $1: $2",
        "emailsent": "E-post har nu skickats",
        "emailsenttext": "Ditt e-postmeddelande har skickats",
-       "emailuserfooter": "Detta e-postmeddelande skickades av $1 till $2 med funktionen \"{{int:emailpage}}\" på {{SITENAME}}.",
+       "emailuserfooter": "Detta e-postmeddelande skickades av $1 till $2 med funktionen \"{{int:emailuser}}\" på {{SITENAME}}.",
        "usermessage-summary": "Lämnar systemmeddelande.",
        "usermessage-editor": "Systemmeddelare",
        "watchlist": "Bevakningslista",
index a14238c..be1612f 100644 (file)
        "recentchanges-legend-heading": "'''குறியீட்டு விளக்கம்:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|புதிய பக்கங்கள் பட்டியலையும்]] காணவும்)",
        "rcnotefrom": "கீழே காணப்படுவது <strong>$3, $4</strong> இலிருந்து செய்யப்பட்ட (<strong>$1</strong> வரைக் காட்டப்பட்டுள்ளது) {{PLURAL:$5|மாற்றமாகும்.|மாற்றங்களாகும்.}}",
-       "rclistfrom": "$3 $2 தொடக்கம் செய்யப்பட்ட புதிய மாற்றங்களைக் காட்டவும்",
+       "rclistfrom": "$2, $3 தொடக்கம் செய்யப்பட்ட புதிய மாற்றங்களைக் காட்டவும்",
        "rcshowhideminor": "சிறிய தொகுப்புகளை $1",
        "rcshowhideminor-show": "காட்டு",
        "rcshowhideminor-hide": "மறை",
        "emailuser": "இப் பயனருக்கு மின்னஞ்சல் செய்",
        "emailuser-title-target": "{{GENDER:$1|user}} என்ற பயனருக்கு மின்னஞ்சல் செய்",
        "emailuser-title-notarget": "பயனருக்கு மின்னஞ்சல் செய்",
-       "emailpage": "மின்னஞ்சல் பயனர்",
        "emailpagetext": "நீங்கள் கீழ்வரும் படிவத்தை உபயோகித்து {{GENDER:$1|பயனருக்கு}} மின்னஞ்சல் செய்யலாம்.\n[[Special:Preferences|என் விருப்பத்தேர்வுகளில்]] நீங்கள் கொடுத்துள்ள மின்னஞ்சல் முகவரி மின்னஞ்சலின் \"From\" முகவரியாகக் காட்சி தரும், இதனால் பெறுநர் உங்களுக்கு நேரடியாக பதில் எழுத முடியும்.",
        "defemailsubject": "{{SITENAME}} மின்னஞ்சல் பயனர்  \"$1\"-இடமிருந்து.",
        "usermaildisabled": "பயனரின் மின்னஞ்சல் செயலிழக்கச் செய்யப்பட்டுள்ளது",
        "emailccsubject": "$1 பயனருக்கான உங்கள் மின்னஞ்சலின் நகல்: $2",
        "emailsent": "மின்னஞ்சல் அனுப்பப்பட்டது",
        "emailsenttext": "உங்கள் மின்னஞ்சல் செய்தி அனுப்பப்பட்டது.",
-       "emailuserfooter": "இந்த மின்னஞ்சல் $1ஆல்  $2க்கு   \"{{int:emailpage}}\" செயல்பாடு   மூலம் {{SITENAME}} லிருந்து அனுப்பப்பட்டது.",
+       "emailuserfooter": "இந்த மின்னஞ்சல் $1ஆல்  $2க்கு   \"{{int:emailuser}}\" செயல்பாடு   மூலம் {{SITENAME}} லிருந்து அனுப்பப்பட்டது.",
        "usermessage-summary": "அமைப்பின் தகவலை விட்டுவிடுகிறது.",
        "usermessage-editor": "அமைப்பு தூதன்(messenger).",
        "watchlist": "கவனிப்புப் பட்டியல்",
index f3a65a7..f0b2d41 100644 (file)
        "rcshowhidemine": "$1การแก้ไขของฉัน",
        "rcshowhidemine-show": "แสดง",
        "rcshowhidemine-hide": "ซ่อน",
-       "rcshowhidecategorization-show": "แสดง",
-       "rcshowhidecategorization-hide": "ซ่อน",
        "rclinks": "แสดงการปรับปรุงล่าสุด $1 รายการ ในช่วง $2 วันที่ผ่านมา<br />$3",
        "diff": "ต่าง",
        "hist": "ประวัติ",
        "emailuser": "ส่งอีเมลหาผู้ใช้นี้",
        "emailuser-title-target": "ส่งอีเมลหา{{GENDER:$1|ผู้ใช้}}",
        "emailuser-title-notarget": "อีเมลผู้ใช้",
-       "emailpage": "อีเมลผู้ใช้",
        "emailpagetext": "คุณสามารถใช้แบบด้านล่างส่งอีเมลหา{{GENDER:$1|ผู้ใช้}}นี้\nที่อยู่อีเมลที่คุณกรอกใน[[Special:Preferences|การตั้งค่าส่วนตัวของคุณ]]จะปรากฏเป็นที่อยู่ \"จาก\" ของอีเมล ซึ่งผู้รับสามารถตอบกลับคุณได้โดยตรง",
        "defemailsubject": "อีเมล {{SITENAME}} จากผู้ใช้ \"$1\"",
        "usermaildisabled": "ปิดใช้งานการส่งอีเมลหาผู้ใช้",
index 42f2077..0b9c883 100644 (file)
@@ -76,7 +76,9 @@
                        "Ömer Berkay",
                        "Demircimehmed",
                        "Uğurkent",
-                       "Kincki"
+                       "Kincki",
+                       "McAang",
+                       "Captantrips"
                ]
        },
        "tog-underline": "Bağlantıların altını çiz:",
        "rcshowhidemine": "Benim değişikliklerimi $1",
        "rcshowhidemine-show": "göster",
        "rcshowhidemine-hide": "gizle",
-       "rcshowhidecategorization-show": "Göster",
-       "rcshowhidecategorization-hide": "Gizle",
        "rclinks": "Son $2 günde yapılan son $1 değişikliği göster;<br /> $3",
        "diff": "fark",
        "hist": "geçmiş",
        "recentchangeslinked-summary": "Aşağıdaki liste, belirtilen sayfaya (ya da belirtilen kategorinin üyelerine) bağlantı veren sayfalarda yapılan son değişikliklerin listesidir.\n[[Special:Watchlist|İzleme listenizdeki]] sayfalar '''kalın''' olarak belirtilmiştir.",
        "recentchangeslinked-page": "Sayfa adı:",
        "recentchangeslinked-to": "Belirtilen sayfadan verilenler yerine, sayfaya verilen bağlantıları göster.",
-       "recentchanges-page-added-to-category": "[[:$1]] kategoriye eklendi",
        "upload": "Dosya yükle",
        "uploadbtn": "Dosya yükle",
        "reuploaddesc": "Yükleme formuna geri dön.",
        "upload-http-error": "Bir HTTP hatası oluştu: $1",
        "upload-copy-upload-invalid-domain": "Kopya yüklemeler bu etki alanında mevcut değil.",
        "upload-dialog-button-cancel": "İptal",
+       "upload-dialog-button-save": "Kaydet",
+       "upload-dialog-button-upload": "Yükle",
+       "upload-dialog-label-select-file": "Dosya seç",
+       "upload-dialog-label-infoform-title": "Ayrıntılar",
+       "upload-dialog-label-infoform-name": "Ad",
+       "upload-dialog-label-infoform-description": "Açıklama",
        "upload-dialog-label-usage-title": "Kullanımı",
+       "upload-dialog-label-usage-filename": "Dosya adı",
        "backend-fail-stream": "$1 dosyası okunamadı.",
        "backend-fail-backup": "\"$1\" dosyası yedeklenemedi.",
        "backend-fail-notexists": "$1 dosyası mevcut değil.",
        "emailuser": "Bu kullanıcıya e-posta gönder",
        "emailuser-title-target": "Bu {{GENDER:$1|kullanıcıya}} e-posta gönder",
        "emailuser-title-notarget": "Kullanıcı e-posta",
-       "emailpage": "Kullanıcıya e-posta gönder",
        "emailpagetext": "Bu {{GENDER:$1|kullanıcıya}} e-posta iletisi göndermek için aşağıdaki formu kullanabilirsiniz.\n[[Special:Preferences|Kullanıcı tercihlerinizde]] girdiğiniz e-posta adresiniz, e-postanın \"From (Kimden)\" adresinde görünecektir, bu yüzden alıcı size doğrudan yanıt verebilecektir.",
        "defemailsubject": "\"$1\" kullanıcısından {{SITENAME}} e-postası",
        "usermaildisabled": "Kullanıcı e-postası devre dışı",
        "emailccsubject": "$1'e gönderdiğiniz mesajın kopyası: $2",
        "emailsent": "E-posta gönderildi",
        "emailsenttext": "E-postanız gönderildi.",
-       "emailuserfooter": "Bu e-posta $1 tarafından $2 kullanıcısına, {{SITENAME}} sitesindeki \"Kullanıcıya e-posta gönder\" (\"{{int:emailpage}}\") fonksiyonu ile gönderilmiştir.",
+       "emailuserfooter": "Bu e-posta $1 tarafından $2 kullanıcısına, {{SITENAME}} sitesindeki \"Kullanıcıya e-posta gönder\" (\"{{int:emailuser}}\") fonksiyonu ile gönderilmiştir.",
        "usermessage-summary": "Sistem mesajı bırakın.",
        "usermessage-editor": "Sistem habercisi",
        "watchlist": "İzleme listesi",
index a9a1f30..348ff17 100644 (file)
@@ -69,7 +69,6 @@
        "tog-hideminor": "Приховати незначні редагування у списку останніх змін",
        "tog-hidepatrolled": "Приховувати патрульовані редагування у списку нових редагувань",
        "tog-newpageshidepatrolled": "Приховувати патрульовані сторінки у списку нових сторінок",
-       "tog-hidecategorization": "Приховати категоризацію сторінок",
        "tog-extendwatchlist": "Розгорнути список спостереження, щоб показати всі зміни, а не лише останні",
        "tog-usenewrc": "Групувати редагування на сторінках останніх змін та списку спостереження",
        "tog-numberheadings": "Автоматично нумерувати заголовки",
@@ -99,7 +98,6 @@
        "tog-watchlisthideliu": "Приховати редагування зареєстрованих дописувачів у списку спостереження",
        "tog-watchlisthideanons": "Приховати редагування анонімних користувачів у списку спостереження",
        "tog-watchlisthidepatrolled": "Приховати відпатрульовані редагування у списку спостереження",
-       "tog-watchlisthidecategorization": "Приховати категоризацію сторінок",
        "tog-ccmeonemails": "Надсилати мені копії листів, які я надсилаю іншим користувачам",
        "tog-diffonly": "Не показувати вміст сторінки під різницею версій",
        "tog-showhiddencats": "Показувати приховані категорії",
        "createacct-benefit-body2": "{{PLURAL:$1|сторінка|сторінки|сторінок}}",
        "createacct-benefit-body3": "{{PLURAL:$1|дописувач|дописувачі|дописувачів}} цього місяця",
        "badretype": "Введені паролі не співпадають.",
+       "usernameinprogress": "Створення облікового запису для цього імені користувача уже виконується.\nБудь ласка, зачекайте.",
        "userexists": "Введене ім'я користувача вже існує.\nБудь ласка оберіть інше ім'я.",
        "loginerror": "Помилка при вході до системи",
        "createacct-error": "Помилка створення облікового запису",
        "rcshowhidemine": "$1 мої редагування",
        "rcshowhidemine-show": "показати",
        "rcshowhidemine-hide": "приховати",
-       "rcshowhidecategorization": "$1 категоризацію сторінок",
-       "rcshowhidecategorization-show": "Показати",
-       "rcshowhidecategorization-hide": "Приховати",
        "rclinks": "Показати останні $1 редагувань за $2 днів<br />$3",
        "diff": "різн.",
        "hist": "історія",
        "recentchangeslinked-summary": "Це список нещодавніх змін на сторінках, на які посилається зазначена сторінка (або на сторінках, що містяться в цій категорії).\nСторінки з [[Special:Watchlist|вашого списку спостереження]] виділено '''жирним шрифтом'''.",
        "recentchangeslinked-page": "Назва сторінки:",
        "recentchangeslinked-to": "Показати зміни на сторінках, пов'язаних з даною",
-       "recentchanges-page-added-to-category": "[[:$1]] Додано до категорії",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] та ще {{PLURAL:$2|$2 сторінку|$2 сторінки|$2 сторінок|1=одну сторінку}} було додано до категорії",
-       "recentchanges-page-removed-from-category": "[[:$1]] було вилучено з категорії",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] та ще {{PLURAL:$2|$2 сторінку|$2 сторінки|$2 сторінок|1=одну сторінку}} було вилучено з категорії",
        "upload": "Завантажити файл",
        "uploadbtn": "Завантажити файл",
        "reuploaddesc": "Повернутися до форми завантаження",
        "emailuser": "Надіслати листа",
        "emailuser-title-target": "Надіслати електронного листа {{GENDER:$1|користувачеві|користувачці}}",
        "emailuser-title-notarget": "Надіслати електронного листа користувачеві",
-       "emailpage": "Лист користувачеві",
        "emailpagetext": "Заповнивши наведену нижче форму, можна надіслати повідомлення {{GENDER:$1|цьому користувачу|цій користувачці}}.\nЕлектронна адреса, яку Ви зазначили у [[Special:Preferences|своїх налаштуваннях]], буде зазначена в полі «Від кого» листа, тому одержувач матиме можливість відповісти безпосередньо вам.",
        "defemailsubject": "{{SITENAME}} — електронний лист від користувача «$1»",
        "usermaildisabled": "Електронне листування між користувачами вимкнене",
        "emailccsubject": "Копія вашого повідомлення до $1: $2",
        "emailsent": "Електронне повідомлення надіслано",
        "emailsenttext": "Ваше електронне повідомлення надіслано.",
-       "emailuserfooter": "Цей лист був надісланий користувачеві $2 від користувача $1 за допомогою функції «{{int:emailpage}}» проекту {{SITENAME}}.",
+       "emailuserfooter": "Цей лист був надісланий користувачеві $2 від користувача $1 за допомогою функції «{{int:emailuser}}» проекту {{SITENAME}}.",
        "usermessage-summary": "Залишити системне повідомлення.",
        "usermessage-editor": "Системний вісник",
        "usermessage-template": "MediaWiki:UserMessage",
        "logentry-newusers-create2": "$1 {{GENDER:$2|створив|створила}} обліковий запис {{GENDER:$4|користувача|користувачки}} $3",
        "logentry-newusers-byemail": "Обліковий запис $3 {{GENDER:$2|користувача|користувачки}} створений {{GENDER:$4|користувачем|користувачкою}} $1 і пароль було надіслано електронною поштою",
        "logentry-newusers-autocreate": "Обліковий запис $1 було {{GENDER:$2|створено}} автоматично",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|переніс|перенесла}} налаштування захисту із $4 до $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|змінив|змінила}} членство в групах для $3 із $4 на $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|змінив|змінила}} членство в групах для $3",
        "logentry-rights-autopromote": "$1 було автоматично переведено із $4 в $5",
index 8f009ca..cfa12e9 100644 (file)
        "permalink": "Link parmanente",
        "print": "Stanpa",
        "view": "Varda",
+       "view-foreign": "Varda su $1",
        "edit": "Canbia",
        "create": "Crea",
        "editthispage": "Canbia sta pagina",
        "loginlanguagelabel": "Lengua: $1",
        "suspicious-userlogout": "Ła to richiesta de disconesion xè sta negà parché e a senbra invià da on browser non funsionante o on proxy de caching.",
        "pt-login": "Va drento",
+       "pt-userlogout": "Và fora",
        "php-mail-error-unknown": "Erore sconosudo nte'l funsionamento deła posta ełetronega PHP",
        "user-mail-no-addy": "Te ghe provà spedire un mesajo de posta ełetronega sensa un indiriso.",
        "user-mail-no-body": "Tentà de inviar na e-mail có un testo vodo o masa curto.",
        "recentchanges-label-bot": "Sta modifica el la ga fata un bot",
        "recentchanges-label-unpatrolled": "Sta modifica no la xe stà gnancora verificà",
        "recentchanges-label-plusminus": "La dimension de la pagina la xe canbià de sto nùmaro de byte",
+       "recentchanges-legend-heading": "'''Legenda:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (varda anca [[Special:NewPages|l'elenco de le pagine nove]])",
        "rcnotefrom": "Qui di seguito sono elencate le modifiche da '''$2''' (fino a '''$1''').",
        "rclistfrom": "Mostra i canbiamenti fati da ƚe $2 del $3",
        "rcshowhideliu": "$1 i utenti registrài",
        "rcshowhideliu-hide": "Scondi",
        "rcshowhideanons": "$1 i utenti anonimi",
+       "rcshowhideanons-show": "Mostra",
        "rcshowhideanons-hide": "Scondi",
        "rcshowhidepatr": "$1 łe modifeghe controłae",
        "rcshowhidemine": "$1 i me canbiamenti",
        "emailuser": "Scrìveghe a sto utente",
        "emailuser-title-target": "Scrivi na e-mail a {{GENDER:$1|sto|sta}} utente",
        "emailuser-title-notarget": "Scrivi na e-mail a l'utente",
-       "emailpage": "Scrivi na e-mail a l'utente",
        "emailpagetext": "Te podi usar el moduło chi soto par mandare na e-mail a sto {{GENDER:$1|utente}}.\nŁa e-mail che te ghè indicà inte łe [[Special:Preferences|to prefarense]] ła vegnarà fora inte'l canpo \"Da\" de la mail, cusì che'l destinatario el posa rispóndarte diretamente a ti.",
        "defemailsubject": "Mesajo da {{SITENAME}} dal utente \"$1\"",
        "usermaildisabled": "e-mail utente disabiłità",
        "spam_reverting": "Ripristinà l'ultima version priva de colegamenti a $1",
        "spam_blanking": "Pàxena svodà, tute łe version le contegneva cołegamenti a $1",
        "spam_deleting": "Pàjina scansełà, tute łe version łe contegneva ligamenti a $1",
-       "simpleantispam-label": "Controlo anti spam.\n'''NO STA''' scrivar gnente qua de soto!",
+       "simpleantispam-label": "Controlo anti spam.\n<strong>No stà</strong> scrivar gnente qua drento!",
        "pageinfo-title": "Informasion par \"$1\"",
        "pageinfo-not-current": "Ne disipiaxe, ma xe inposibiłe fornir sta informasion par vecie version.",
        "pageinfo-header-basic": "Informassion de base",
        "logentry-rights-rights": "$1 {{GENDER:$2|el|la}} ga canbià l'apartenensa de $3 dal grupo $4 al grupo $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|el|la}} ga canbià l'apartenensa a grupi de $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|el|la}} xe stà automategamente promoso/a da $4 a $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|el|la}} gà cargà $3",
        "rightsnone": "(nissun)",
        "revdelete-summary": "modifica ogeto",
        "feedback-adding": "Inserimento del feedback inte ła pàjina...",
index 1a1cdbe..a8cb6ba 100644 (file)
        "createacct-benefit-body2": "{{PLURAL:$1}}trang nội dung",
        "createacct-benefit-body3": "{{PLURAL:$1}}người đóng góp gần đây",
        "badretype": "Hai mật khẩu không khớp.",
+       "usernameinprogress": "Đã tiến hành tạo tài khoản với tên người dùng này.\nXin vui lòng chờ đợi.",
        "userexists": "Tên người dùng được nhập đã có người lấy.\nHãy chọn một tên khác.",
        "loginerror": "Lỗi đăng nhập",
        "createacct-error": "Lỗi mở tài khoản",
        "upload-too-many-redirects": "URL có quá nhiều đổi hướng",
        "upload-http-error": "Xảy ra lỗi HTTP: $1",
        "upload-copy-upload-invalid-domain": "Không có sẵn các bản sao tải lên tại tên miền này.",
+       "upload-dialog-title": "Tải tập tin lên",
+       "upload-dialog-error": "Đã xuất hiện lỗi",
+       "upload-dialog-warning": "Đã xuất hiện cảnh báo",
+       "upload-dialog-button-cancel": "Hủy bỏ",
+       "upload-dialog-button-done": "Xong",
+       "upload-dialog-button-save": "Lưu",
+       "upload-dialog-button-upload": "Tải lên",
+       "upload-dialog-label-select-file": "Chọn tập tin",
+       "upload-dialog-label-infoform-title": "Chi tiết",
+       "upload-dialog-label-infoform-name": "Tên",
+       "upload-dialog-label-infoform-description": "Miêu tả",
+       "upload-dialog-label-usage-title": "Sử dụng",
+       "upload-dialog-label-usage-filename": "Tên tập tin",
        "backend-fail-stream": "Không thể gửi luồng tập tin $1.",
        "backend-fail-backup": "Không thể sao lưu tập tin $1.",
        "backend-fail-notexists": "Tập tin $1 không tồn tại.",
        "emailuser": "Gửi thư cho người này",
        "emailuser-title-target": "{{GENDER:$1}}Gửi thư cho người dùng này",
        "emailuser-title-notarget": "Gửi thư cho người dùng",
-       "emailpage": "Gửi thư",
        "emailpagetext": "{{GENDER:$1}}Mẫu dưới đây sẽ gửi một bức thư điện tử tới người dùng này.\nĐịa chỉ thư điện tử mà bạn đã cung cấp trong [[Special:Preferences|tùy chọn cá nhân của mình]] sẽ xuất hiện trong phần địa chỉ “Người gửi” của bức thư, do đó người nhận sẽ có thể trả lời trực tiếp cho bạn.",
        "defemailsubject": "Thư của người dùng \"$1\" tại {{SITENAME}}",
        "usermaildisabled": "Chức năng gửi thư cho người dùng đã bị tắt.",
        "undeletepagetext": "{{PLURAL:$1|Trang sau|$1 trang sau}} đã bị xóa nhưng vẫn nằm trong kho lưu trữ và có thể phục hồi được. Kho lưu trữ sẽ được xóa định kỳ.",
        "undelete-fieldset-title": "Phục hồi phiên bản",
        "undeleteextrahelp": "Để phục hồi toàn bộ lịch sử trang, hãy để trống các hộp kiểm và bấm nút '''''{{int:undeletebtn}}'''''.\nĐể thực hiện phục hồi có chọn lọc, hãy đánh dấu vào hộp kiểm của các phiên bản muốn phục hồi, rồi bấm nút '''''{{int:undeletebtn}}'''''.\nBấm nút '''''Tẩy trống''''' sẽ tẩy trống ô lý do và tất cả các hộp kiểm.",
-       "undeleterevisions": "$1 {{PLURAL:$1|bản|bản}} đã được lưu",
+       "undeleterevisions": "$1 phiên bản đã bị xóa",
        "undeletehistory": "Nếu bạn phục hồi trang này, tất cả các phiên bản của nó cũng sẽ được phục hồi vào lịch sử của trang.\nNếu một trang mới có cùng tên đã được tạo ra kể từ khi xóa trang này, các phiên bản được khôi phục sẽ xuất hiện trong lịch sử trước.",
        "undeleterevdel": "Việc phục hồi sẽ không được thực hiện nếu nó dẫn đến việc phiên bản trang hoặc tập tin trên cùng bị xóa mất một phần.\nTrong trường hợp đó, bạn phải bỏ đánh dấu hộp kiểm hoặc bỏ ẩn những phiên bản bị xóa mới nhất.",
        "undeletehistorynoadmin": "Trang này đã bị xóa.\nLý do xóa trang được hiển thị dưới đây, cùng với thông tin về những người đã sửa đổi trang này trước khi bị xóa.\nChỉ có bảo quản viên mới xem được văn bản đầy đủ của những phiên bản trang bị xóa.",
        "spam_reverting": "Lùi lại đến phiên bản cuối không chứa liên kết đến $1",
        "spam_blanking": "Tất cả các phiên bản có liên kết đến $1; tẩy trống",
        "spam_deleting": "Tất cả các phiên bản có liên kết đến $1; xóa",
-       "simpleantispam-label": "Hệ thông đang kiểm tra chống spam.\nXin '''ĐỪNG''' điền gì vào!",
+       "simpleantispam-label": "Hệ thông đang kiểm tra chống spam.\nXin <strong>đừng</strong> điền gì vào!",
        "pageinfo-title": "Thông tin về “$1”",
        "pageinfo-not-current": "Rất tiếc, không thể cung cấp các chi tiết này đối với các phiên bản cũ.",
        "pageinfo-header-basic": "Thông tin cơ bản",
        "autosumm-new": "Tạo trang mới với nội dung “$1”",
        "autosumm-newblank": "Đã tạo trang trống",
        "size-kilobytes": "$1 kB",
+       "size-kilopixel": "$1 kP",
        "bitrate-bits": "$1 bps",
        "bitrate-kilobits": "$1 kbps",
        "bitrate-megabits": "$1 Mbps",
        "logentry-newusers-create2": "$1 {{GENDER:$2}}đã mở tài khoản người dùng $3",
        "logentry-newusers-byemail": "$1 {{GENDER:$2}}đã mở tài khoản người dùng $3 và nhận mật khẩu qua thư điện tử",
        "logentry-newusers-autocreate": "Tài khoản $1 {{GENDER:$2}}đã được mở tự động",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2}}đã chuyển mức khóa từ $4 thành $3",
        "logentry-rights-rights": "$1 {{GENDER:$2}}đã đổi các nhóm bao gồm $3 từ $4 đến $5",
        "logentry-rights-rights-legacy": "{{GENDER:$2}}$1 đã đổi các nhóm bao gồm $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$2}}đã được tự động phong cấp từ $4 đến $5",
index 6360add..66ac477 100644 (file)
        "emailuser": "Ig-e-mail ini nga gumaramit",
        "emailuser-title-target": "Ig-E-mail ini nga {{HENERO:$1|gumaramit}}",
        "emailuser-title-notarget": "Gumaramit han e-mail",
-       "emailpage": "Gumaramit han e-mail",
        "defemailsubject": "{{SITENAME}} e-mail tikang kan gumaramit na hi \"$1\"",
        "usermaildisabled": "Waray ginpagana an e-mail han gumaramit",
        "usermaildisabledtext": "Diri ka makakapadangat hin e-mail ha iba nga mga gumaramit ha dinhi nga wiki",
index 11607af..6050760 100644 (file)
@@ -21,7 +21,6 @@
        "tog-hideminor": "დოფული ციქა რედაქტირაფა ეკონია თირაფეფს",
        "tog-hidepatrolled": "დოფულით პატრულირებულ რედაქტირაფეფი ასერდეიან თირაფეფს",
        "tog-newpageshidepatrolled": "დოფულით პატრულირებულ ხასჷლეფი ახალ ხასჷლეფიშ ერკებულშე",
-       "tog-hidecategorization": "ხასჷლეფიშ კატეგოიზაციაშ ტყობინაფა",
        "tog-extendwatchlist": "გოფაჩი ოთოჸუჯე ერკებული არძო თირაფეფიშ ოძირაფალო, ამარდეიან თირაფეფიშ მეკოროცხილო",
        "tog-usenewrc": "ბოლო ცვლილებების და კონტროლის სიის ცვლილებების დაჯგუფება",
        "tog-numberheadings": "ავტომატურო დონომერე დუდჯოხოეფი",
@@ -51,7 +50,6 @@
        "tog-watchlisthideliu": "დამალეთ დარეგისტრირებულ მოხმარებელთა ცვლილებები ჩემი კონტროლის სიიდან",
        "tog-watchlisthideanons": "დამალეთ ანონიმურ მომხმარებელთა შესწორებები ჩემი კონტროლის სიიდან",
        "tog-watchlisthidepatrolled": "დამალეთ საკონტროლო სიიდან პატრულირებული რედაქტირებები",
-       "tog-watchlisthidecategorization": "ხასჷლეფიშ კატეგოიზაციაშ ტყობინაფა",
        "tog-ccmeonemails": "გამომიგზავნე ელფოსტების ასლები, რომლებსაც მე სხვა მომხმარებლებს ვუგზავნი",
        "tog-diffonly": "დამალე გვერდის შიგთავსი ცვლილების ქვევით",
        "tog-showhiddencats": "ქაძირი ფულირი კატეგორიეფი",
        "rcshowhidemine": "ჩქიმ რედაქტირაფეფიშ $1",
        "rcshowhidemine-show": "ძირაფა",
        "rcshowhidemine-hide": "ტყობინაფა",
-       "rcshowhidecategorization": "$1 ხასჷლაშ კატეროტიზაცია",
-       "rcshowhidecategorization-show": "ძირაფა",
-       "rcshowhidecategorization-hide": "ტყობინაფა",
        "rclinks": "ეკონია $2 დღას ღოლამირ ეკონია $1 თირაფეფიშ ძირაფა <br />$3",
        "diff": "შხვანერობა",
        "hist": "ისტ.",
        "recentchangeslinked-summary": "თენა რე მეწურაფილი ხასჷლაწკჷმა (ვარა მეწურაფილი კატეგორიაშ მაკათურეფწკჷმა) მერსხუაფილი ხასჷლეფს ეკონია ბორჯის ღოლამირი თირაფეფიშ ერკებული. ხასჷლეფი [[Special:Watchlist|თქვანი კონტროლიშ ერკებულს]] გჷმორთილი რე '''ფსქელას'''.\"",
        "recentchangeslinked-page": "ხასილაშ ჯოხო:",
        "recentchangeslinked-to": "მანგიერო ქაძირე ათე ხასილაშა მერცხილ ხასილეფშა მიშაღალირ თირაფეფ",
-       "recentchanges-page-added-to-category": "[[:$1]] გეძინელჷ რე კატეგორიას",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] დო {{PLURAL:$2|ართ ხასჷლა|$2 ხასჷლა}} გეძინელ რე კატეგორიას",
-       "recentchanges-page-removed-from-category": "[[:$1]] ლასირი რე კატეგორიაშე",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] დო {{PLURAL:$2|ართ ხასჷლა|$2 ხასჷლა}} ლასირი რე კატეგორიაშე",
        "upload": "ფაილიშ ეხარგუა",
        "uploadbtn": "ფაილიშ გეთება",
        "reuploaddesc": "გააუქმეთ ატვირთვა და დაუბრუნდით ატვირთვის ფორმას",
index 05e48b3..5646814 100644 (file)
        "emailuser": "שיקן ע-פאסט צו דעם באַניצער",
        "emailuser-title-target": "שיקן {{GENDER:$1|דעם באניצער|די באניצערין}} ע־פאסט",
        "emailuser-title-notarget": "שיקן א באניצער ע־פאסט",
-       "emailpage": "שיקן ע-פאסט צו באַניצער",
        "emailpagetext": "איר קענט ניצן די פֿארעם אונטן צו שיקן א בליצבריוו צו {{GENDER:$1|דעם דאזיגן באַניצער|דער דאזיגער באַניצערין}}.\nדער ע-פאסט אדרעס וואס איר האט אריינגעלייגט אין [[Special:Preferences| אייערע באַניצער פרעפערנעצן]] וועט זיך ווײַזן כאילו דאס איז געקומען פון דארטן, בכדי צו דערמעגלעכן א תשובה.",
        "defemailsubject": "ע-פאסט פון באַניצער \"$1\" {{SITENAME}}",
        "usermaildisabled": "באַניצער ע־פאסט אומאַקטיוויזירט",
        "emailccsubject": "קאפיע פון אײַער מעלדונג צו $1: $2",
        "emailsent": "ע-פאסט געשיקט",
        "emailsenttext": "אײַער אי-בריוו איז געשיקט געווארן.",
-       "emailuserfooter": "דער בליצבריוו איז געשיקט געווארן דורך$1 צו $2 מיט דער  \"{{int:emailpage}}\" פֿונקציע בײַ {{SITENAME}}.",
+       "emailuserfooter": "דער בליצבריוו איז געשיקט געווארן דורך$1 צו $2 מיט דער  \"{{int:emailuser}}\" פֿונקציע בײַ {{SITENAME}}.",
        "usermessage-summary": "איבערלאזן סיסטעם אָנזאָג",
        "usermessage-editor": "סיסטעם שליח",
        "usermessage-template": "MediaWiki:באניצער־מעלדונג",
index d4596b8..2a0fac2 100644 (file)
        "actionthrottled": "動作已壓制",
        "actionthrottledtext": "基於反垃圾嘢嘅考量,你而家響呢段短時間之內限制咗去做呢一個動作,而你已經超過咗個上限。請響幾分鐘之後再試過。",
        "protectedpagetext": "呢一版已經保護咗唔畀改或者做其他動作。",
-       "viewsourcetext": "你可以睇吓或者複製呢一頁嘅原始碼",
-       "viewyourtext": "你可以睇同複製呢版入面<strong>由你改</strong>嘅原碼",
+       "viewsourcetext": "你可以睇吓或者複製呢一頁嘅原始碼",
+       "viewyourtext": "你可以睇同複製呢版入面<strong>由你改</strong>嘅原碼",
        "protectedinterface": "呢一頁提供軟件嘅介面文字,呢一頁已經保護咗以預防濫用。\n要加或者改所有維基站嘅翻譯,請去 [//translatewiki.net/ translatewiki.net]嘅  MediaWiki 本地化項目。",
        "editinginterface": "'''警告''':閣下而家編輯緊嘅係為爾隻軟件提供介面文字嘅版。\n改爾一版會自動改埋爾個維基嘅其他用戶用緊嘅介面嘅文字。",
        "translateinterface": "要加或者改所有維基項目嘅翻譯,請去MediaWiki嘅本地化項目:[//translatewiki.net/ translatewiki.net]。",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1位用戶監視]",
-       "rc_categories": "限定到分類(以\"|\"作分隔)",
-       "rc_categories_any": "任何",
+       "rc_categories": "限定到分類(以\"|\"作分隔)",
+       "rc_categories_any": "任何揀咗嘅",
        "rc-change-size-new": "改完後係$1位元組",
        "newsectionsummary": "/* $1 */ 新小節",
        "rc-enhanced-expand": "顯示細節",
        "upload-too-many-redirects": "個URL有太多跳轉",
        "upload-http-error": "一個HTTP錯誤發生咗: $1",
        "upload-copy-upload-invalid-domain": "從嗰個域名度冇複製上傳功能",
+       "upload-dialog-title": "上載檔案",
+       "upload-dialog-error": "出錯",
+       "upload-dialog-warning": "警告",
+       "upload-dialog-button-cancel": "取消",
+       "upload-dialog-button-done": "搞掂",
+       "upload-dialog-button-save": "儲存",
+       "upload-dialog-button-upload": "上載",
+       "upload-dialog-label-select-file": "揀檔案",
+       "upload-dialog-label-infoform-title": "細節",
+       "upload-dialog-label-infoform-name": "名",
+       "upload-dialog-label-infoform-description": "描述",
+       "upload-dialog-label-usage-title": "用法",
+       "upload-dialog-label-usage-filename": "文件名",
+       "backend-fail-stream": "傳送唔到檔案「$1」。",
        "backend-fail-backup": "檔案 \"$1\" 唔備份得。",
        "backend-fail-notexists": "檔案$1唔存在。",
        "backend-fail-invalidpath": "\"$1\"係冇效嘅儲存命令",
        "emailuser": "發電郵畀呢位用戶",
        "emailuser-title-target": "電郵畀呢個{{GENDER:$1|用戶}}",
        "emailuser-title-notarget": "發電郵畀用戶",
-       "emailpage": "發電郵畀用戶",
        "emailpagetext": "你可以用下面嘅表去寄一封電郵畀呢位{{GENDER:$1|用戶}}。\n你喺[[Special:Preferences|你嘅用戶喜好設定]]入面填寫嘅電郵地址會出現喺呢封電郵「由」嘅地址度,方便收件人可以直接回覆你。",
        "defemailsubject": "由用戶「$1」送嘅 {{SITENAME}} 電郵",
        "usermaildisabled": "用戶電郵已停用",
        "emailccsubject": "你畀$1: $2封信嘅副本",
        "emailsent": "電郵已傳送",
        "emailsenttext": "你嘅電郵信息已傳送。",
-       "emailuserfooter": "呢封電郵係由$1寄畀$2經{{SITENAME}}嘅「{{int:emailpage}}」功能發出嘅。",
+       "emailuserfooter": "呢封電郵係由$1寄畀$2經{{SITENAME}}嘅「{{int:emailuser}}」功能發出嘅。",
        "usermessage-summary": "留低系統訊息。",
        "usermessage-editor": "系統訊息",
        "watchlist": "監視名單",
        "watchlistanontext": "請先簽到去睇或者改響你監視清單度嘅項目。",
        "watchnologin": "未登入",
        "addwatch": "加到監視清單",
-       "addedwatchtext": "頁面「[[:$1]]」已加入到你嘅[[Special:Watchlist|監視清單]]度。\n呢個頁面以及佢個討論頁以後嘅修改都會列喺嗰度。",
+       "addedwatchtext": "「[[:$1]]」同佢個討論頁已加入到你嘅[[Special:Watchlist|監視清單]]度。",
        "addedwatchtext-short": "「$1」呢一版已經加咗入監視清單。",
        "removewatch": "響監視清單度拎走",
-       "removedwatchtext": "頁面「[[:$1]]」已經喺[[Special:Watchlist|你嘅監視清單]]度刪除。",
+       "removedwatchtext": "「[[:$1]]」同佢個討論頁已經喺[[Special:Watchlist|你嘅監視清單]]度刪除。",
        "removedwatchtext-short": "「$1」呢一版已經由監視清單度拎走咗。",
        "watch": "監視",
        "watchthispage": "監視呢頁",
        "undeletepagetext": "以下嘅$1個頁面已經刪除,但係重喺檔庫度可以恢復。檔案庫可能會定時清理。",
        "undelete-fieldset-title": "恢復修訂",
        "undeleteextrahelp": "要恢復成個頁面,唔好剔任何嘅核選盒,再撳<strong><em>{{int:undeletebtn}}</em></strong>。\n要恢復已經選擇咗嘅修訂,將要恢復代表有關修訂嘅核選盒剔上,再撳<strong><em>{{int:undeletebtn}}</em></strong>。",
-       "undeleterevisions": "$1å\80\8bä¿®è¨\82é\83½å·²ç¶\93å­\98æª\94",
+       "undeleterevisions": "$1å\80\8bä¿®è¨\82é\83½å·²ç¶\93å\88ªå\92\97",
        "undeletehistory": "如果你恢復呢個頁面,佢嘅所有修改歷史都會恢復返到嗰篇頁面嘅歷史度。如果喺佢刪除之後又新開咗同名嘅頁面,你恢復嘅修改歷史會顯示喺先前歷史度。",
        "undeleterevdel": "如果響最新修訂度部份刪除,噉就反刪除唔到。如果遇到呢種情況,你一定要反選或者反隱藏最新刪除咗嘅修訂。",
        "undeletehistorynoadmin": "呢版刪咗。原因喺下面有講,連同重有刪除之前編輯過呢頁嘅用戶嘅詳細資料。所刪除嘅版本嘅實際內容得管理員可以睇到。",
        "tags-create-reason": "原因:",
        "tags-create-submit": "開",
        "tags-delete-reason": "原因:",
+       "tags-activate-title": "啟用標籤",
        "tags-activate-reason": "原因:",
+       "tags-activate-submit": "啟用",
+       "tags-deactivate-title": "停用標籤",
        "tags-deactivate-reason": "原因:",
+       "tags-deactivate-submit": "停用",
+       "tags-edit-existing-tags-none": "''冇''",
+       "tags-edit-reason": "原因:",
        "comparepages": "比較版",
        "compare-page1": "第1版",
        "compare-page2": "第2版",
        "feedback-cancel": "取消",
        "feedback-close": "搞掂",
        "feedback-error-title": "出錯",
+       "feedback-message": "信息:",
+       "feedback-subject": "主旨:",
        "feedback-submit": "遞交",
        "feedback-thanks-title": "多謝!",
        "searchsuggest-search": "搵嘢",
index 7a80c23..ac3cb4e 100644 (file)
                        "LNDDYL",
                        "Jiang123aa",
                        "Cdz",
-                       "凡人丶"
+                       "凡人丶",
+                       "Nbdd0121"
                ]
        },
        "tog-underline": "链接下划线:",
        "tog-hideminor": "隐藏最近更改中的小编辑",
        "tog-hidepatrolled": "隐藏最近更改中的已巡查编辑",
        "tog-newpageshidepatrolled": "隐藏新页面列表中的已巡查页面",
-       "tog-hidecategorization": "隐藏对页面的分类",
        "tog-extendwatchlist": "扩展监视列表以显示所有更改,而不仅是最近的更改",
        "tog-usenewrc": "按页面合并最近更改和监视列表中的更改",
-       "tog-numberheadings": "自动编号标题",
+       "tog-numberheadings": "自动将标题编号",
        "tog-showtoolbar": "显示编辑工具栏",
        "tog-editondblclick": "双击编辑页面",
-       "tog-editsectiononrightclick": "å\8f³å\87»æ®µè\90½æ \87é¢\98å\90¯ç\94¨编辑段落",
+       "tog-editsectiononrightclick": "å\90¯ç\94¨å\8f³å\87»æ®µè\90½æ \87é¢\98编辑段落",
        "tog-watchcreations": "添加我创建的页面和我上传的文件至我的监视列表",
        "tog-watchdefault": "添加我编辑的页面和文件至我的监视列表",
        "tog-watchmoves": "添加我移动的页面和文件至我的监视列表",
        "tog-watchlisthideliu": "隐藏监视列表中的登录用户的编辑",
        "tog-watchlisthideanons": "隐藏监视列表中的匿名用户的编辑",
        "tog-watchlisthidepatrolled": "隐藏监视列表中的已巡查编辑",
-       "tog-watchlisthidecategorization": "隐藏对页面的分类",
        "tog-ccmeonemails": "把我给其他用户发送的电子邮件的副本发送给我",
        "tog-diffonly": "不在差异下面显示页面内容",
        "tog-showhiddencats": "显示隐藏分类",
        "createacct-benefit-body2": "{{PLURAL:$1|页面}}",
        "createacct-benefit-body3": "最近{{PLURAL:$1|贡献者}}",
        "badretype": "您所输入的密码并不相同。",
+       "usernameinprogress": "此用户名的账户创建已在进行中。请等待。",
        "userexists": "用户名已存在。请使用其他名称。",
        "loginerror": "登录错误",
        "createacct-error": "账户创建出错",
        "rcshowhidemine": "$1我的编辑",
        "rcshowhidemine-show": "显示",
        "rcshowhidemine-hide": "隐藏",
-       "rcshowhidecategorization": "$1页面分类",
-       "rcshowhidecategorization-show": "显示",
-       "rcshowhidecategorization-hide": "隐藏",
        "rclinks": "显示过去$2天的最后$1个更改<br />$3",
        "diff": "差异",
        "hist": "历史",
        "recentchangeslinked-summary": "这是链接自指定页面(或至指定分类的成员)的页面的最近更改的列表。[[Special:Watchlist|你的监视列表]]中的页面以<strong>粗体</strong>显示。",
        "recentchangeslinked-page": "页面名称:",
        "recentchangeslinked-to": "显示链到所给出的页面",
-       "recentchanges-page-added-to-category": "[[:$1]]已添加至分类",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]]及其他{{PLURAL:$2|$2个页面}}已添加至分类",
-       "recentchanges-page-removed-from-category": "[[:$1]]已从分类中移除",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]]及其他{{PLURAL:$2|$2个页面}}已从分类中移除",
        "upload": "上传文件",
        "uploadbtn": "上传文件",
        "reuploaddesc": "取消上传,返回上传表格",
        "emailuser": "电邮联系",
        "emailuser-title-target": "电邮联系该{{GENDER:$1|用户}}",
        "emailuser-title-notarget": "电邮联系",
-       "emailpage": "电邮联系",
        "emailpagetext": "你可以使用下面的表格发送电子邮件信息至该{{GENDER:$1|用户}}。你在[[Special:Preferences|系统设置]]中输入的电子邮件地址将显示为邮件的“发件人”地址,所以该用户将可以直接回复你。",
        "defemailsubject": "来自{{SITENAME}}用户“$1”的电子邮件",
        "usermaildisabled": "用户电子邮件停用",
        "emailccsubject": "您发送给$1的消息的副本:$2",
        "emailsent": "电子邮件已发送",
        "emailsenttext": "您的电子邮件已经发出。",
-       "emailuserfooter": "本电子邮件是通过{{SITENAME}}的“{{int:emailpage}}”功能被$1发送至$2的。",
+       "emailuserfooter": "本电子邮件是通过{{SITENAME}}的“{{int:emailuser}}”功能被$1发送至$2的。",
        "usermessage-summary": "留下系统消息。",
        "usermessage-editor": "系统信息编辑器",
        "watchlist": "监视列表",
        "lockedbyandtime": "(由 {{GENDER:$1|$1}} 于$2 $3执行)",
        "move-page": "移动$1",
        "move-page-legend": "移动页面",
-       "movepagetext": "您可以使用下面的表单来重命名一个页面,同时将其版本历史移动到新页面。同时老的条目将会被重定向到新条目。您可以自动地将重定向更新到原条目。如果您不选择这样做的话,请检查[[Special:DoubleRedirects|双重]]或[[Special:BrokenRedirects|损坏重定向]]链接。您有责任确保链接会被正确指向他们应该被指向的地方。\n\n注意:即使新条目已经有对应页面,此页面也'''不会'''被移动,除非新页面无任何编辑历史或是重定向页。这意味着您可在误操作后将页面移回原处,同时,您也无法覆盖现有页面。\n\n'''警告!'''对这样一个经常被访问的页面而言这可能是一个重大且唐突的更改;请在行动前先了解您的修改可能带来的一切后果。",
+       "movepagetext": "您可以使用下面的表单来重命名一个页面,同时将其版本历史移动到新页面。同时老的条目将会被重定向到新条目。您可以自动地将重定向更新到原条目。如果您不选择这样做的话,请检查[[Special:DoubleRedirects|双重]]或[[Special:BrokenRedirects|损坏重定向]]链接。您有责任确保链接会被正确指向他们应该被指向的地方。\n\n注意:即使新条目已经有对应页面,此页面也<strong>不会</strong>被移动,除非新页面无任何编辑历史或是重定向页。这意味着您可在误操作后将页面移回原处,同时,您也无法覆盖现有页面。\n\n<strong>警告!</strong>对这样一个经常被访问的页面而言这可能是一个重大且唐突的更改;请在行动前先了解您的修改可能带来的一切后果。",
        "movepagetext-noredirectfixer": "用下面的表单来重命名一个页面,并将其版本历史同时移动到新页面。\n老的页面将成为新页面的重定向页。\n请检查[[Special:DoubleRedirects|双重重定向]]或[[Special:BrokenRedirects|损坏重定向]]链接。\n您应当负责确定所有链接依然会链到指定的页面。\n\n注意如果新页面已经有内容的话,页面将'''不会'''被移动,\n除非新页面无内容或是重定向页,而且没有版本历史。\n这意味着您再必要时可以在移动到新页面后再移回老的页面,\n同时您也无法覆盖现有页面。\n\n'''警告!'''\n对一个经常被访问的页面而言这可能是一个重大与唐突的更改;\n请在行动前先确定您了解其所可能带来的后果。",
        "movepagetalktext": "有关的讨论页将被自动与该页面一起移动,'''除非''':\n*新页面已经有一个包含内容的讨论页,或者\n*您不勾选下面的复选框。\n\n在这些情况下,您在必要时必须手工移动或合并页面。",
        "movearticle": "移动页面:",
        "javascripttest-pagetext-frameworks": "请选择以下的框架之一:$1",
        "javascripttest-pagetext-skins": "选择外观来运行测试:",
        "javascripttest-qunit-intro": "请见mediawiki.org的[$1 测试说明文件]。",
-       "tooltip-pt-userpage": "你的用户页面",
+       "tooltip-pt-userpage": "您的用户页",
        "tooltip-pt-anonuserpage": "你用于编辑的IP地址的用户页面",
        "tooltip-pt-mytalk": "你的讨论页面",
        "tooltip-pt-anontalk": "有关本IP地址的编辑的讨论",
        "lag-warn-normal": "过去$1秒内的更改未必会在这个列表中显示。",
        "lag-warn-high": "由于数据库的过度延迟,过去$1秒的更改未必会在这个列表中显示。",
        "watchlistedit-normal-title": "编辑监视列表",
-       "watchlistedit-normal-legend": "删除监视列表中的标题",
-       "watchlistedit-normal-explain": "你的监视列表中的标题显示在下方。要删除标题,请勾选它前面选择框并单击“{{int:Watchlistedit-normal-submit}}”。你也可以[[Special:EditWatchlist/raw|编辑原始列表]]。",
-       "watchlistedit-normal-submit": "除标题",
-       "watchlistedit-normal-done": "已从你的监视列表删除$1个标题:",
+       "watchlistedit-normal-legend": "从监视列表移除标题",
+       "watchlistedit-normal-explain": "您的监视列表中的标题显示在下方。要移除标题,请勾选它旁边的复选框,然后点击“{{int:Watchlistedit-normal-submit}}”。您也可以[[Special:EditWatchlist/raw|编辑原始列表]]。",
+       "watchlistedit-normal-submit": "除标题",
+       "watchlistedit-normal-done": "已从您的监视列表移除{{PLURAL:$1|$1个}}标题:",
        "watchlistedit-raw-title": "编辑原始监视列表",
        "watchlistedit-raw-legend": "编辑原始监视列表",
        "watchlistedit-raw-explain": "您的监视列表中的标题在下面显示,并可通过编辑此表以添加或移除标题;每行一个标题。当完成以后,点击“{{int:Watchlistedit-raw-submit}}”。您也可以[[Special:EditWatchlist|使用标准编辑器]]。",
        "watchlisttools-edit": "查看并编辑监视列表",
        "watchlisttools-raw": "编辑原始监视列表",
        "signature": "[[{{ns:user}}:$1|$2]]([[{{ns:user_talk}}:$1|讨论]])",
-       "duplicate-defaultsort": "'''警告:'''默认排序关键词“$2”覆盖了之前的默认排序关键词“$1”。",
+       "duplicate-defaultsort": "<strong>警告:</strong>默认排序关键词“$2”覆盖了之前的默认排序关键词“$1”。",
        "duplicate-displaytitle": "<strong>警告:</strong>显示的标题“$2”重写了此前显示的标题“$1”。",
        "invalid-indicator-name": "<strong>错误:</strong>页面状态指示器的<code>name</code>属性必须不为空。",
        "version": "版本",
        "logentry-newusers-create2": "用户账户$3被$1{{GENDER:$2|创建}}",
        "logentry-newusers-byemail": "$1创建用户$3,并且密码已通过电子邮件发送",
        "logentry-newusers-autocreate": "用户账户$1被自动{{GENDER:$2|创建}}",
+       "logentry-protect-move_prot": "$1将保护设置从$4{{GENDER:$2|移动}}到了$3",
        "logentry-rights-rights": "$1{{GENDER:$2|更改}}$3的用户组自$4至$5",
        "logentry-rights-rights-legacy": "$1更改$3的用户组",
        "logentry-rights-autopromote": "$1被自动地{{GENDER:$2|提升}}自$4至$5",
index f5f6868..b795821 100644 (file)
        "actionthrottledtext": "您在短時間內執行此動作太多次,已超出系統上限,基於反濫用的考量,將限制您的動作。\n請稍後數分鐘後再試。",
        "protectedpagetext": "此頁面已設為保護防止編輯或其他操作。",
        "viewsourcetext": "您可以檢視並複製此頁面的原始碼。",
-       "viewyourtext": "您可以檢視並複製此頁面中<strong>您編輯</strong>的原始碼",
+       "viewyourtext": "您可以檢視並複製此頁面中<strong>您編輯</strong>的原始碼",
        "protectedinterface": "本頁用來提供此 Wiki 軟體介面上的文字,並且已被設為保護以防止惡意修改。\n如欲增加或修改 Wiki 的翻譯,請至 [//translatewiki.net/ translatewiki.net] 上的 MediaWiki 在地化專案。",
        "editinginterface": "<strong>警告:</strong>您正在編輯的頁面文字是用來作為軟體介面使用。\n更改此頁面將會影響其他使用者在此 Wiki 上看到的使用者介面。",
        "translateinterface": "如欲修改 Wiki 的翻譯,請至 [//translatewiki.net/ translatewiki.net] 上的 MediaWiki 在地化專案。",
        "createacct-benefit-body2": "$1 頁",
        "createacct-benefit-body3": " 位最近的{{PLURAL:$1|貢獻者}}",
        "badretype": "兩次輸入的密碼並不相同。",
+       "usernameinprogress": "已正在進行此使用者名稱的帳號建立作業。\n請稍候。",
        "userexists": "您所輸入的使用者名稱已存在,請另選一個名稱。",
        "loginerror": "登入錯誤",
        "createacct-error": "帳號建立錯誤",
        "search-category": "(分類 $1)",
        "search-file-match": "(符合檔案內容)",
        "search-suggest": "您指的是不是:$1",
+       "search-rewritten": "顯示 $1 的搜尋結果,改搜尋 $2。",
        "search-interwiki-caption": "姐妹專案",
        "search-interwiki-default": "來自 $1 的結果:",
        "search-interwiki-more": "(更多)",
        "rcshowhidemine": "$1 我的編輯",
        "rcshowhidemine-show": "顯示",
        "rcshowhidemine-hide": "隱藏",
-       "rcshowhidecategorization-show": "顯示",
-       "rcshowhidecategorization-hide": "隱藏",
        "rclinks": "顯示近期 $2 天內的 $1 次變更。<br />$3",
        "diff": "差異",
        "hist": "歷史",
        "newpageletter": "新",
        "boteditletter": "機",
        "number_of_watching_users_pageview": "[$1 位正在監視的使用者]",
-       "rc_categories": "分類限制 (以 \"|\" 分隔)",
-       "rc_categories_any": "任",
+       "rc_categories": "分類限制 (以 \"|\" 分隔)",
+       "rc_categories_any": "任何選擇的",
        "rc-change-size-new": "變更後為 $1 位元組",
        "newsectionsummary": "/* $1 */ 新章節",
        "rc-enhanced-expand": "顯示詳細資訊",
        "upload-copy-upload-invalid-domain": "此網域不允許複製上傳的檔案。",
        "upload-dialog-title": "上傳檔案",
        "upload-dialog-error": "發生錯誤",
+       "upload-dialog-warning": "發生警告",
        "upload-dialog-button-cancel": "取消",
        "upload-dialog-button-done": "完成",
        "upload-dialog-button-save": "儲存",
        "emailuser": "Email 聯絡此使用者",
        "emailuser-title-target": "E-mail 聯絡此{{GENDER:$1|使用者}}",
        "emailuser-title-notarget": "E-mail 聯絡使用者",
-       "emailpage": "E-mail 聯絡使用者",
        "emailpagetext": "您可以使用以下表格傳送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件地址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
        "defemailsubject": "{{SITENAME}} 使用者 \"$1\" 寄來的電子郵件",
        "usermaildisabled": "使用者電子郵件已停用",
        "emailccsubject": "您寄給 $1 的訊息副本:$2",
        "emailsent": "已寄出電子郵件",
        "emailsenttext": "已寄出您的電子郵件訊息。",
-       "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"{{int:emailpage}}\" 功能寄給 $2。",
+       "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"{{int:emailuser}}\" 功能寄給 $2。",
        "usermessage-summary": "留訊息至系統。",
        "usermessage-editor": "系統訊息",
        "watchlist": "監視清單",
        "watchlistanontext": "請先登入以檢視或修改在監視清單的項目。",
        "watchnologin": "尚未登入",
        "addwatch": "新增至監視清單",
-       "addedwatchtext": "已於[[Special:Watchlist|您的監視清單]]新增頁面 \"[[:$1]]\"。\n未來對此頁面及其關聯的對話頁面的變更將會在此清單中列出。",
+       "addedwatchtext": "已於[[Special:Watchlist|您的監視清單]]新增頁面 \"[[:$1]]\" 及其討論頁面。\n未來對此頁面及其關聯的對話頁面的變更將會在此清單中列出。",
        "addedwatchtext-short": "已於您的監視清單新增頁面 \"$1\"。",
        "removewatch": "從監視清單中移除",
-       "removedwatchtext": "已於[[Special:Watchlist|您的監視清單]]移除頁面 \"[[:$1]]\"。",
+       "removedwatchtext": "已於[[Special:Watchlist|您的監視清單]]移除頁面 \"[[:$1]]\" 及其討論頁面。",
        "removedwatchtext-short": "已於您的監視清單移除頁面 \"$1\"。",
        "watch": "監視",
        "watchthispage": "監視此頁面",
        "undeletepagetext": "下列 {{PLURAL:$1|1 個頁面已刪除|$1 個頁面已刪除}}但尚在封存,仍可還原。\n封存的檔案可能會定時清理。",
        "undelete-fieldset-title": "還原修訂",
        "undeleteextrahelp": "若要還原所有的頁面歷史,請取消勾選所有核選方塊並點選 <strong><em>{{int:undeletebtn}}</em></strong>。\n若要還原指定的頁面歷史,請勾選要還原的修訂核選方塊並點選 <strong><em>{{int:undeletebtn}}</em></strong>。",
-       "undeleterevisions": "å·²å°\81å­\98 $1 個修訂",
+       "undeleterevisions": "å·²å\88ªé\99¤ $1 個修訂",
        "undeletehistory": "若您還原該頁面,所有的修訂歷史也會一併還原。\n若刪除之後已有使用相同名稱建立的新頁面,還原的修訂歷史會出現在此頁面之前的歷史中。",
        "undeleterevdel": "若最新頁面或檔案修訂被部份刪除,將無法執行取消刪除的動作。\n這種情況您必須取選勾選或取消隱藏已刪除的最新修訂。",
        "undeletehistorynoadmin": "已刪除此頁面。\n以下摘要顯示刪除原因與刪除前所有編輯過此頁面的使用者詳細資料。\n只有管理員可檢視實際被刪除的文字內容。",
        "logentry-newusers-create2": "$1 {{GENDER:$2|已建立}}使用者帳號 $3",
        "logentry-newusers-byemail": "$1 {{GENDER:$2|已建立}}使用者帳號 $3 並且以電子郵件通知密碼",
        "logentry-newusers-autocreate": "已自動{{GENDER:$2|建立}}使用者帳號 $1",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|已移動}}保護設定從 $4 至 $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|已更改}} $3 的群組成員資格由 $4 成為 $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|已更改}} $3 的群組成員資格",
        "logentry-rights-autopromote": "$1 已自動{{GENDER:$2|提升}}從 $4 成為 $5",
        "special-characters-title-endash": "短破折號",
        "special-characters-title-emdash": "長破折號",
        "special-characters-title-minus": "減號",
+       "mw-widgets-dateinput-no-date": "未選擇日期",
        "mw-widgets-titleinput-description-new-page": "頁面不存在",
        "mw-widgets-titleinput-description-redirect": "重新導向至 $1"
 }
diff --git a/languages/messages/MessagesAdy.php b/languages/messages/MessagesAdy.php
new file mode 100644 (file)
index 0000000..b421a48
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+/** Adyghe (адыгабзэ)
+ *
+ * To improve a translation please visit https://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ * @comment falls back to Adyghe (Cyrillic)
+ */
+
+$fallback = 'ady-cyrl';
diff --git a/languages/messages/MessagesAdy_cyrl.php b/languages/messages/MessagesAdy_cyrl.php
new file mode 100644 (file)
index 0000000..1a23937
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+/** Adyghe (адыгабзэ)
+ *
+ * To improve a translation please visit https://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ */
+
+$namespaceNames = array(
+       NS_MEDIA            => 'Медиа',
+);
index bcc8328..b11e03e 100644 (file)
@@ -6,6 +6,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Rachitrali
  */
 
 $fallback = 'ur';
@@ -14,7 +15,19 @@ $rtl = true;
 $namespaceNames = array(
        NS_MEDIA            => 'میڈیا',
        NS_SPECIAL          => 'خاص',
-       NS_TALK             => 'مشقولگی',
-       NS_USER             => 'ممبار/یوزر',
+       NS_TALK             => 'تبادلۂ_خیال',
+       NS_USER             => 'صارف',
+       NS_USER_TALK        => 'تبادلۂ_خیال_صارف',
+       NS_PROJECT_TALK     => 'تبادلۂ_خیال_$1',
+       NS_FILE             => 'فائل',
+       NS_FILE_TALK        => 'تبادلۂ_خیال_فائل',
+       NS_MEDIAWIKI        => 'میڈیاویکی',
+       NS_MEDIAWIKI_TALK   => 'تبادلۂ_خیال_میڈیاویکی',
+       NS_TEMPLATE         => 'سانچہ',
+       NS_TEMPLATE_TALK    => 'تبادلۂ_خیال_سانچہ',
+       NS_HELP             => 'مدد',
+       NS_HELP_TALK        => 'تبادلۂ_خیال_مدد',
+       NS_CATEGORY         => 'زمرہ',
+       NS_CATEGORY_TALK    => 'تبادلۂ_خیال_زمرہ',
 );
 
index 93507b3..e6321e1 100644 (file)
@@ -97,7 +97,6 @@ class DeleteBatch extends Maintenance {
                        }
 
                        $this->output( $title->getPrefixedText() );
-                       $dbw->begin( __METHOD__ );
                        if ( $title->getNamespace() == NS_FILE ) {
                                $img = wfFindFile( $title, array( 'ignoreRedirect' => true ) );
                                if ( $img && $img->isLocal() && !$img->delete( $reason ) ) {
@@ -106,8 +105,7 @@ class DeleteBatch extends Maintenance {
                        }
                        $page = WikiPage::factory( $title );
                        $error = '';
-                       $success = $page->doDeleteArticle( $reason, false, 0, false, $error, $user );
-                       $dbw->commit( __METHOD__ );
+                       $success = $page->doDeleteArticle( $reason, false, 0, true, $error, $user );
                        if ( $success ) {
                                $this->output( " Deleted!\n" );
                        } else {
index 5aeeb8e..a1c0f61 100644 (file)
@@ -76,10 +76,9 @@ class DeleteDefaultMessages extends Maintenance {
                        $dbw->ping();
                        $title = Title::makeTitle( $row->page_namespace, $row->page_title );
                        $page = WikiPage::factory( $title );
-                       $dbw->begin( __METHOD__ );
                        $error = ''; // Passed by ref
-                       $page->doDeleteArticle( 'No longer required', false, 0, false, $error, $user );
-                       $dbw->commit( __METHOD__ );
+                       // FIXME: Deletion failures should be reported, not silently ignored.
+                       $page->doDeleteArticle( 'No longer required', false, 0, true, $error, $user );
                }
 
                $this->output( "done!\n", 'msg' );
index dbe9698..478e0d7 100644 (file)
@@ -182,14 +182,20 @@ class DeleteEqualMessages extends Maintenance {
                        $this->output( "\n* [[$title]]" );
                        $page = WikiPage::factory( $title );
                        $error = ''; // Passed by ref
-                       $page->doDeleteArticle( 'No longer required', false, 0, false, $error, $user );
+                       $success = $page->doDeleteArticle( 'No longer required', false, 0, true, $error, $user );
+                       if ( !$success ) {
+                               $this->output( " (Failed!)" );
+                       }
                        if ( $result['hasTalk'] && $doDeleteTalk ) {
                                $title = Title::makeTitle( NS_MEDIAWIKI_TALK, $result['title'] );
                                $this->output( "\n* [[$title]]" );
                                $page = WikiPage::factory( $title );
                                $error = ''; // Passed by ref
-                               $page->doDeleteArticle( 'Orphaned talk page of no longer required message',
-                                       false, 0, false, $error, $user );
+                               $success = $page->doDeleteArticle( 'Orphaned talk page of no longer required message',
+                                       false, 0, true, $error, $user );
+                               if ( !$success ) {
+                                       $this->output( " (Failed!)" );
+                               }
                        }
                }
                $this->output( "\n\ndone!\n" );
diff --git a/maintenance/fixSlaveDesync.php b/maintenance/fixSlaveDesync.php
deleted file mode 100644 (file)
index a5418ce..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-<?php
-/**
- * Fix erroneous page_latest values due to slave desynchronisation.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Maintenance
- */
-
-require_once __DIR__ . '/Maintenance.php';
-
-/**
- * Maintenance script that fixes erroneous page_latest values
- * due to slave desynchronisation.
- *
- * @ingroup Maintenance
- */
-class FixSlaveDesync extends Maintenance {
-       /** @var array */
-       private $slaveIndexes;
-
-       public function __construct() {
-               parent::__construct();
-               $this->mDescription = "";
-       }
-
-       public function getDbType() {
-               return Maintenance::DB_ADMIN;
-       }
-
-       public function execute() {
-               $this->slaveIndexes = array();
-               $serverCount = wfGetLB()->getServerCount();
-               for ( $i = 1; $i < $serverCount; $i++ ) {
-                       if ( wfGetLB()->isNonZeroLoad( $i ) ) {
-                               $this->slaveIndexes[] = $i;
-                       }
-               }
-
-               if ( $this->hasArg() ) {
-                       $this->desyncFixPage( $this->getArg() );
-               } else {
-                       $corrupt = $this->findPageLatestCorruption();
-                       foreach ( $corrupt as $id => $dummy ) {
-                               $this->desyncFixPage( $id );
-                       }
-               }
-       }
-
-       /**
-        * Find all pages that have a corrupted page_latest
-        * @return array
-        */
-       private function findPageLatestCorruption() {
-               $desync = array();
-               $n = 0;
-               $dbw = wfGetDB( DB_MASTER );
-               $masterIDs = array();
-               $res = $dbw->select(
-                       'page',
-                       array( 'page_id', 'page_latest' ),
-                       array( 'page_id<6054123' ),
-                       __METHOD__
-               );
-               $this->output( "Number of pages: " . $res->numRows() . "\n" );
-               foreach ( $res as $row ) {
-                       $masterIDs[$row->page_id] = $row->page_latest;
-                       if ( !( ++$n % 10000 ) ) {
-                               $this->output( "$n\r" );
-                       }
-               }
-               $this->output( "\n" );
-
-               foreach ( $this->slaveIndexes as $i ) {
-                       $db = wfGetDB( $i );
-                       $res = $db->select(
-                               'page',
-                               array( 'page_id', 'page_latest' ),
-                               array( 'page_id<6054123' ),
-                               __METHOD__
-                       );
-                       foreach ( $res as $row ) {
-                               if ( isset( $masterIDs[$row->page_id] ) && $masterIDs[$row->page_id] != $row->page_latest ) {
-                                       $desync[$row->page_id] = true;
-                                       $this->output( $row->page_id . "\t" );
-                               }
-                       }
-               }
-               $this->output( "\n" );
-
-               return $desync;
-       }
-
-       /**
-        * Fix a broken page entry
-        * @param int $pageID The page_id to fix
-        */
-       private function desyncFixPage( $pageID ) {
-               # Check for a corrupted page_latest
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->begin( __METHOD__ );
-               $realLatest = $dbw->selectField( 'page', 'page_latest', array( 'page_id' => $pageID ),
-                       __METHOD__, 'FOR UPDATE' );
-               # list( $masterFile, $masterPos ) = $dbw->getMasterPos();
-               $found = false;
-               foreach ( $this->slaveIndexes as $i ) {
-                       $db = wfGetDB( $i );
-                       /*
-                       if ( !$db->masterPosWait( $masterFile, $masterPos, 10 ) ) {
-                               $this->output( "Slave is too lagged, aborting\n" );
-                               $dbw->commit( __METHOD__ );
-                               sleep(10);
-                               return;
-                       }*/
-                       $latest = $db->selectField( 'page', 'page_latest', array( 'page_id' => $pageID ), __METHOD__ );
-                       $max = $db->selectField( 'revision', 'MAX(rev_id)', false, __METHOD__ );
-                       if ( $latest != $realLatest && $realLatest < $max ) {
-                               $this->output( "page_latest corrupted in page $pageID, server $i\n" );
-                               $found = true;
-                               break;
-                       }
-               }
-               if ( !$found ) {
-                       $this->output( "page_id $pageID seems fine\n" );
-                       $dbw->commit( __METHOD__ );
-
-                       return;
-               }
-
-               # Find the missing revisions
-               $res = $dbw->select( 'revision', array( 'rev_id' ), array( 'rev_page' => $pageID ),
-                       __METHOD__, 'FOR UPDATE' );
-               $masterIDs = array();
-               foreach ( $res as $row ) {
-                       $masterIDs[] = $row->rev_id;
-               }
-
-               $res = $dbw->select( 'revision', array( 'rev_id' ), array( 'rev_page' => $pageID ), __METHOD__ );
-               $slaveIDs = array();
-               foreach ( $res as $row ) {
-                       $slaveIDs[] = $row->rev_id;
-               }
-               if ( count( $masterIDs ) < count( $slaveIDs ) ) {
-                       $missingIDs = array_diff( $slaveIDs, $masterIDs );
-                       if ( count( $missingIDs ) ) {
-                               $this->output( "Found " . count( $missingIDs )
-                                       . " lost in master, copying from slave... " );
-                               $dbFrom = $dbw;
-                               $found = true;
-                               $toMaster = true;
-                       } else {
-                               $found = false;
-                       }
-               } else {
-                       $missingIDs = array_diff( $masterIDs, $slaveIDs );
-                       if ( count( $missingIDs ) ) {
-                               $this->output( "Found " . count( $missingIDs )
-                                       . " missing revision(s), copying from master... " );
-                               $dbFrom = $dbw;
-                               $found = true;
-                               $toMaster = false;
-                       } else {
-                               $found = false;
-                       }
-               }
-
-               if ( $found ) {
-                       foreach ( $missingIDs as $rid ) {
-                               $this->output( "$rid " );
-                               # Revision
-                               $row = $dbFrom->selectRow( 'revision', '*', array( 'rev_id' => $rid ), __METHOD__ );
-                               if ( $toMaster ) {
-                                       $id = $dbw->selectField( 'revision', 'rev_id', array( 'rev_id' => $rid ),
-                                               __METHOD__, 'FOR UPDATE' );
-                                       if ( $id ) {
-                                               $this->output( "Revision already exists\n" );
-                                               $found = false;
-                                               break;
-                                       } else {
-                                               $dbw->insert( 'revision', get_object_vars( $row ), __METHOD__, 'IGNORE' );
-                                       }
-                               } else {
-                                       foreach ( $this->slaveIndexes as $i ) {
-                                               $db = wfGetDB( $i );
-                                               $db->insert( 'revision', get_object_vars( $row ), __METHOD__, 'IGNORE' );
-                                       }
-                               }
-
-                               # Text
-                               $row = $dbFrom->selectRow( 'text', '*', array( 'old_id' => $row->rev_text_id ), __METHOD__ );
-                               if ( $toMaster ) {
-                                       $dbw->insert( 'text', get_object_vars( $row ), __METHOD__, 'IGNORE' );
-                               } else {
-                                       foreach ( $this->slaveIndexes as $i ) {
-                                               $db = wfGetDB( $i );
-                                               $db->insert( 'text', get_object_vars( $row ), __METHOD__, 'IGNORE' );
-                                       }
-                               }
-                       }
-                       $this->output( "done\n" );
-               }
-
-               if ( $found ) {
-                       $this->output( "Fixing page_latest... " );
-                       if ( $toMaster ) {
-                               /*
-                               $dbw->update(
-                                       'page',
-                                       array( 'page_latest' => $realLatest ),
-                                       array( 'page_id' => $pageID ),
-                                       __METHOD__
-                               );
-                               */
-                       } else {
-                               foreach ( $this->slaveIndexes as $i ) {
-                                       $db = wfGetDB( $i );
-                                       $db->update(
-                                               'page',
-                                               array( 'page_latest' => $realLatest ),
-                                               array( 'page_id' => $pageID ),
-                                               __METHOD__
-                                       );
-                               }
-                       }
-                       $this->output( "done\n" );
-               }
-               $dbw->commit( __METHOD__ );
-       }
-}
-
-$maintClass = "FixSlaveDesync";
-require_once RUN_MAINTENANCE_IF_MAIN;
index 07e72bf..ec2e51d 100644 (file)
@@ -31,7 +31,8 @@
                                        "mw.user",
                                        "mw.util",
                                        "mw.plugin.*",
-                                       "mw.cookie"
+                                       "mw.cookie",
+                                       "mw.experiments"
                                ]
                        },
                        {
@@ -40,7 +41,7 @@
                        },
                        {
                                "name": "API",
-                               "classes": ["mw.Api*"]
+                               "classes": ["mw.Api*", "mw.ForeignApi*"]
                        },
                        {
                                "name": "Language",
index d575c8d..7794911 100644 (file)
@@ -981,6 +981,20 @@ return array(
                        'oojs-ui',
                ),
        ),
+       'mediawiki.ForeignApi' => array(
+               'targets' => array( 'desktop', 'mobile' ),
+               'class' => 'ResourceLoaderForeignApiModule',
+               // Additional dependencies generated dynamically
+               'dependencies' => 'mediawiki.ForeignApi.core',
+       ),
+       'mediawiki.ForeignApi.core' => array(
+               'scripts' => 'resources/src/mediawiki.api/mediawiki.ForeignApi.js',
+               'dependencies' => array(
+                       'mediawiki.api',
+                       'oojs',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
        'mediawiki.helplink' => array(
                'position' => 'top',
                'styles' => array(
@@ -1184,6 +1198,10 @@ return array(
                'styles' => 'resources/src/mediawiki.toolbar/toolbar.less',
                'position' => 'top',
        ),
+       'mediawiki.experiments' => array(
+               'scripts' => 'resources/src/mediawiki/mediawiki.experiments.js',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
 
        /* MediaWiki Action */
 
@@ -1416,9 +1434,18 @@ return array(
        'mediawiki.page.gallery' => array(
                'scripts' => 'resources/src/mediawiki.page/mediawiki.page.gallery.js',
                'dependencies' => array(
+                       'mediawiki.page.gallery.styles',
                        'jquery.throttle-debounce',
                )
        ),
+       'mediawiki.page.gallery.styles' => array(
+               'styles' => array(
+                       'resources/src/mediawiki.page/mediawiki.page.gallery.print.css' => array( 'media' => 'print' ),
+                       'resources/src/mediawiki.page/mediawiki.page.gallery.css',
+               ),
+               'position' => 'top',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
        'mediawiki.page.ready' => array(
                'scripts' => 'resources/src/mediawiki.page/mediawiki.page.ready.js',
                'dependencies' => array(
@@ -1700,6 +1727,8 @@ return array(
        'mediawiki.legacy.commonPrint' => array(
                'position' => 'top',
                'styles' => array(
+                       // @todo: Remove mediawiki.page.gallery when cache has cleared
+                       'resources/src/mediawiki.page/mediawiki.page.gallery.print.css' => array( 'media' => 'print' ),
                        'resources/src/mediawiki.legacy/commonPrint.css' => array( 'media' => 'print' )
                ),
                'group' => 'print',
@@ -1713,6 +1742,8 @@ return array(
        'mediawiki.legacy.shared' => array(
                'position' => 'top',
                'styles' => array(
+                       // @todo: Remove when mediawiki.page.gallery in cached html.
+                       'resources/src/mediawiki.page/mediawiki.page.gallery.css',
                        'resources/src/mediawiki.legacy/shared.css' => array( 'media' => 'screen' )
                ),
        ),
@@ -1813,6 +1844,7 @@ return array(
                        'resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.NamespaceInputWidget.js',
+                       'resources/src/mediawiki.widgets/mw.widgets.ComplexNamespaceInputWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.TitleOptionWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.UserInputWidget.js',
@@ -1825,17 +1857,26 @@ return array(
                        ),
                ),
                'dependencies' => array(
+                       'oojs-ui',
                        'mediawiki.widgets.styles',
-                       'jquery.autoEllipsis',
+                       // DateInputWidget
+                       'moment',
+                       // TitleInputWidget
                        'mediawiki.Title',
                        'mediawiki.api',
-                       'moment',
-                       'oojs-ui',
+                       'jquery.byteLimit',
+                       // TitleOptionWidget
+                       'jquery.autoEllipsis',
                ),
                'messages' => array(
+                       // DateInputWidget
                        'mw-widgets-dateinput-no-date',
                        'mw-widgets-dateinput-placeholder-day',
                        'mw-widgets-dateinput-placeholder-month',
+                       // NamespaceInputWidget
+                       'blanknamespace',
+                       'namespacesall',
+                       // TitleInputWidget
                        'mw-widgets-titleinput-description-new-page',
                        'mw-widgets-titleinput-description-redirect',
                ),
@@ -1844,7 +1885,7 @@ return array(
        'mediawiki.widgets.styles' => array(
                'skinStyles' => array(
                        'default' => array(
-                               'resources/src/mediawiki.widgets/mw.widgets.NamespaceInputWidget.base.css',
+                               'resources/src/mediawiki.widgets/mw.widgets.ComplexNamespaceInputWidget.base.css',
                        ),
                ),
                'position' => 'top',
index 8c3d091..ad905c6 100644 (file)
@@ -114,8 +114,9 @@ return call_user_func( function () {
 
                if ( substr( $name, 0, 5 ) === 'icons' ) {
                        $module['selectorWithoutVariant'] = '.oo-ui-icon-{name}, .mw-ui-icon-{name}:before';
-                       $module['selectorWithVariant'] = '.oo-ui-image-{variant} .oo-ui-icon-{name},
+                       $module['selectorWithVariant'] = '
                                .oo-ui-image-{variant}.oo-ui-icon-{name}, .mw-ui-icon-{name}-{variant}:before,
+                               /* Hack for Flow, see T110051 */
                                .mw-ui-hovericon:hover .mw-ui-icon-{name}-{variant}-hover:before,
                                .mw-ui-hovericon.mw-ui-icon-{name}-{variant}-hover:hover:before';
                }
index 216df70..3ecbe50 100644 (file)
@@ -19,5 +19,6 @@
        "ooui-dialog-process-retry": "Vuelvi a intentalo",
        "ooui-dialog-process-continue": "Siguir",
        "ooui-selectfile-not-supported": "Nun hai encontu pa la seleición de ficheros",
-       "ooui-selectfile-placeholder": "Nun se seleicionó nengún ficheru"
+       "ooui-selectfile-placeholder": "Nun se seleicionó nengún ficheru",
+       "ooui-selectfile-dragdrop-placeholder": "Soltar el ficheru equí (o facer clic pa restolar)"
 }
index 35a550b..33b0ce0 100644 (file)
@@ -28,5 +28,6 @@
        "ooui-dialog-process-retry": "Torneu-ho a provar",
        "ooui-dialog-process-continue": "Continua",
        "ooui-selectfile-not-supported": "El tipus de fitxer no és compatible",
-       "ooui-selectfile-placeholder": "No s'ha seleccionat cap fitxer"
+       "ooui-selectfile-placeholder": "No s'ha seleccionat cap fitxer",
+       "ooui-selectfile-dragdrop-placeholder": "Deixeu-hi anar el fitxer (o feu clic a navega)"
 }
index d5649b0..ee735ce 100644 (file)
@@ -26,5 +26,6 @@
        "ooui-dialog-process-retry": "Erneut versuchen",
        "ooui-dialog-process-continue": "Fortfahren",
        "ooui-selectfile-not-supported": "Die Dateiauswahl wird nicht unterstützt",
-       "ooui-selectfile-placeholder": "Keine Datei ausgewählt"
+       "ooui-selectfile-placeholder": "Keine Datei ausgewählt",
+       "ooui-selectfile-dragdrop-placeholder": "Dateien hier ablegen (oder klicken zum Durchsuchen)"
 }
index 27f1996..b3c4845 100644 (file)
@@ -8,7 +8,8 @@
                        "Geraki",
                        "Glavkos",
                        "Nikosguard",
-                       "Tifa93"
+                       "Tifa93",
+                       "Stam.nikos"
                ]
        },
        "ooui-outline-control-move-down": "Μετακίνηση στοιχείου προς τα κάτω",
@@ -24,5 +25,6 @@
        "ooui-dialog-process-retry": "Δοκιμάστε ξανά",
        "ooui-dialog-process-continue": "Συνέχεια",
        "ooui-selectfile-not-supported": "Επιλογή αρχείου δεν υποστηρίζεται",
-       "ooui-selectfile-placeholder": "Κανένα αρχείο δεν είναι επιλεγμένο"
+       "ooui-selectfile-placeholder": "Κανένα αρχείο δεν είναι επιλεγμένο",
+       "ooui-selectfile-dragdrop-placeholder": "Σύρετε ένα αρχείο εδώ (ή κάντε κλικ για αναζήτηση)"
 }
index 9812ec6..db2399f 100644 (file)
@@ -30,5 +30,6 @@
        "ooui-dialog-process-continue": "Continue",
        "ooui-selectfile-not-supported": "File selection is not supported",
        "ooui-selectfile-placeholder": "No file is selected",
+       "ooui-selectfile-dragdrop-placeholder": "Drop file here (or click to browse)",
        "ooui-semicolon-separator": "; "
 }
index e5a8e45..3f690fc 100644 (file)
@@ -31,5 +31,6 @@
        "ooui-dialog-process-retry": "Intentar de nuevo",
        "ooui-dialog-process-continue": "Continuar",
        "ooui-selectfile-not-supported": "No se admite la selección de archivos",
-       "ooui-selectfile-placeholder": "Ningún archivo seleccionado"
+       "ooui-selectfile-placeholder": "Ningún archivo seleccionado",
+       "ooui-selectfile-dragdrop-placeholder": "Soltar el archivo aquí (o pulsa para examinar)"
 }
index e86f11e..1283c8d 100644 (file)
@@ -19,5 +19,6 @@
        "ooui-dialog-process-retry": "Proovi uuesti",
        "ooui-dialog-process-continue": "Jätka",
        "ooui-selectfile-not-supported": "Faili valiku tugi puudub",
-       "ooui-selectfile-placeholder": "Faili ei ole valitud"
+       "ooui-selectfile-placeholder": "Faili ei ole valitud",
+       "ooui-selectfile-dragdrop-placeholder": "Lohista fail siia (või klõpsa, et sirvida)"
 }
index 537f6b8..fe8ec04 100644 (file)
@@ -45,5 +45,6 @@
        "ooui-dialog-process-retry": "Réessayer",
        "ooui-dialog-process-continue": "Continuer",
        "ooui-selectfile-not-supported": "La sélection de fichier n’est pas prise en charge",
-       "ooui-selectfile-placeholder": "Aucun fichier sélectionné"
+       "ooui-selectfile-placeholder": "Aucun fichier sélectionné",
+       "ooui-selectfile-dragdrop-placeholder": "Déposer le fichier ici (ou cliquez pour parcourir)"
 }
index 1283c53..0f7ac78 100644 (file)
@@ -20,5 +20,6 @@
        "ooui-dialog-process-retry": "Inténteo de novo",
        "ooui-dialog-process-continue": "Continuar",
        "ooui-selectfile-not-supported": "Non está soportada a selección de ficheiros",
-       "ooui-selectfile-placeholder": "Non se seleccionou ningún ficheiro"
+       "ooui-selectfile-placeholder": "Non se seleccionou ningún ficheiro",
+       "ooui-selectfile-dragdrop-placeholder": "Solte un ficheiro aquí (ou prema para buscalo)"
 }
index de67665..b652d63 100644 (file)
@@ -28,5 +28,6 @@
        "ooui-dialog-process-retry": "לנסות שוב",
        "ooui-dialog-process-continue": "המשך",
        "ooui-selectfile-not-supported": "בחירת קבצים אינה נתמכת",
-       "ooui-selectfile-placeholder": "לא נבחר שום קובץ"
+       "ooui-selectfile-placeholder": "לא נבחר שום קובץ",
+       "ooui-selectfile-dragdrop-placeholder": "נא לשחרר את הקובץ כאן (או ללחוץ לעיון)"
 }
index 0a8bfac..e54099d 100644 (file)
@@ -16,5 +16,8 @@
        "ooui-dialog-process-error": "មានបញ្ហាអ្វីមួយ",
        "ooui-dialog-process-dismiss": "បិទ",
        "ooui-dialog-process-retry": "ព្យាយាមម្ដងទៀត",
-       "ooui-dialog-process-continue": "បន្ត"
+       "ooui-dialog-process-continue": "បន្ត",
+       "ooui-selectfile-not-supported": "ការជ្រើសរើសឯកសារមិនអាចប្រើបានទេ",
+       "ooui-selectfile-placeholder": "គ្មានឯកសារណាមួយត្រូវបានជ្រើសរើស",
+       "ooui-selectfile-dragdrop-placeholder": "ទម្លាក់ឯកសារនៅទីនេះ(ឬចុចដើម្បីរាវរក)"
 }
index 79bb469..65bce10 100644 (file)
@@ -22,5 +22,6 @@
        "ooui-dialog-process-dismiss": "Verwerfen",
        "ooui-dialog-process-retry": "Nach eng Kéier probéieren",
        "ooui-dialog-process-continue": "Virufueren",
-       "ooui-selectfile-placeholder": "Et ass kee Fichier erausgesicht"
+       "ooui-selectfile-placeholder": "Et ass kee Fichier erausgesicht",
+       "ooui-selectfile-dragdrop-placeholder": "Fichier hei deposéieren (oder klickt fir ze sichen)"
 }
index 4334efb..20aa2f1 100644 (file)
@@ -20,5 +20,6 @@
        "ooui-dialog-process-retry": "Bandykite dar kartą",
        "ooui-dialog-process-continue": "Tęsti",
        "ooui-selectfile-not-supported": "Failų pasirinkimas nepalaikomas",
-       "ooui-selectfile-placeholder": "Nėra pasirinktų failų"
+       "ooui-selectfile-placeholder": "Nėra pasirinktų failų",
+       "ooui-selectfile-dragdrop-placeholder": "Atitempkite failą čia (arba paspauskite paieškai)"
 }
index 53e5bf4..dd55db4 100644 (file)
@@ -19,5 +19,6 @@
        "ooui-dialog-process-retry": "Обиди се пак",
        "ooui-dialog-process-continue": "Продолжи",
        "ooui-selectfile-not-supported": "Изборот на податотеки не е поддржан",
-       "ooui-selectfile-placeholder": "Немате одбрано податотека"
+       "ooui-selectfile-placeholder": "Немате одбрано податотека",
+       "ooui-selectfile-dragdrop-placeholder": "Тука пуштете ја податотеката (или стиснете за да прелистате)"
 }
index 81da6f5..9dd84b0 100644 (file)
@@ -16,7 +16,8 @@
                        "Jacenty359",
                        "Matik7",
                        "Gloria sah",
-                       "Andrzej aa"
+                       "Andrzej aa",
+                       "The Polish"
                ]
        },
        "ooui-outline-control-move-down": "Przenieś niżej",
@@ -32,5 +33,6 @@
        "ooui-dialog-process-retry": "Spróbuj ponownie",
        "ooui-dialog-process-continue": "Kontynuuj",
        "ooui-selectfile-not-supported": "Wybór pliku nie jest obsługiwany",
-       "ooui-selectfile-placeholder": "Nie wybrano pliku"
+       "ooui-selectfile-placeholder": "Nie wybrano pliku",
+       "ooui-selectfile-dragdrop-placeholder": "Umieść plik tutaj (lub kliknij, aby je przeglądać)"
 }
index bef65ed..607229d 100644 (file)
@@ -34,5 +34,6 @@
        "ooui-dialog-process-continue": "Label for process dialog retry action button, visible when describing only warnings\n{{Identical|Continue}}",
        "ooui-selectfile-not-supported": "Label for the file selection dialog if file selection is not supported",
        "ooui-selectfile-placeholder": "Label for the file selection dialog when no file is currently selected",
+       "ooui-selectfile-dragdrop-placeholder": "Label for the file selection dialog when no file is currently selected in the drag drop UI. Suggests clicking to open the browse dialog.",
        "ooui-semicolon-separator": "{{optional}} Semicolon used as a separator"
 }
index 970a602..bf44621 100644 (file)
@@ -21,5 +21,6 @@
        "ooui-dialog-process-retry": "Reîncearcă",
        "ooui-dialog-process-continue": "Continuă",
        "ooui-selectfile-not-supported": "Selecția de fișiere nu este acceptată",
-       "ooui-selectfile-placeholder": "Niciun fișier selectat"
+       "ooui-selectfile-placeholder": "Niciun fișier selectat",
+       "ooui-selectfile-dragdrop-placeholder": "Trageți fișierul aici (sau faceți clic pentru a răsfoi)"
 }
diff --git a/resources/lib/oojs-ui/i18n/su.json b/resources/lib/oojs-ui/i18n/su.json
new file mode 100644 (file)
index 0000000..a8cf762
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kandar"
+               ]
+       },
+       "ooui-outline-control-move-down": "Pindahkeun ka handap",
+       "ooui-outline-control-move-up": "Pindahkeun ka luhur",
+       "ooui-outline-control-remove": "Hapus",
+       "ooui-toolbar-more": "Lobaan",
+       "ooui-toolgroup-expand": "Lobaan",
+       "ooui-toolgroup-collapse": "Saeutikan",
+       "ooui-dialog-message-accept": "Heug",
+       "ooui-dialog-message-reject": "Bolay",
+       "ooui-dialog-process-error": "Aya nu teu bener",
+       "ooui-dialog-process-dismiss": "Tutup",
+       "ooui-dialog-process-retry": "Cobaan deui",
+       "ooui-dialog-process-continue": "Teruskeun",
+       "ooui-selectfile-not-supported": "Pamilihan berkas teu dirojong",
+       "ooui-selectfile-placeholder": "Taya berkas anu dipilih"
+}
index 9e0b977..9e727e4 100644 (file)
@@ -16,7 +16,8 @@
                        "Tifinaghes",
                        "Ата",
                        "Piramidion",
-                       "A1"
+                       "A1",
+                       "Dars"
                ]
        },
        "ooui-outline-control-move-down": "Перемістити елемент униз",
@@ -32,5 +33,6 @@
        "ooui-dialog-process-retry": "Спробуйте ще раз",
        "ooui-dialog-process-continue": "Продовжити",
        "ooui-selectfile-not-supported": "Вибір файлу не підтримується",
-       "ooui-selectfile-placeholder": "Жодного файлу не вибрано"
+       "ooui-selectfile-placeholder": "Жодного файлу не вибрано",
+       "ooui-selectfile-dragdrop-placeholder": "Помістіть файл сюди (або натисніть, щоб переглянути)"
 }
index 7247d93..b5b51a0 100644 (file)
                        "Yfdyh000",
                        "Zhangjintao",
                        "乌拉跨氪",
-                       "Great Brightstar"
+                       "Great Brightstar",
+                       "Nbdd0121"
                ]
        },
-       "ooui-outline-control-move-down": "项目下移",
-       "ooui-outline-control-move-up": "项目上移",
+       "ooui-outline-control-move-down": "向下移动一项",
+       "ooui-outline-control-move-up": "向上移动一项",
        "ooui-outline-control-remove": "移除项目",
        "ooui-toolbar-more": "更多",
        "ooui-toolgroup-expand": "更多",
        "ooui-toolgroup-collapse": "更少",
        "ooui-dialog-message-accept": "确定",
        "ooui-dialog-message-reject": "取消",
-       "ooui-dialog-process-error": "发生一些错误",
-       "ooui-dialog-process-dismiss": "解除",
+       "ooui-dialog-process-error": "å\8f\91ç\94\9fäº\86ä¸\80äº\9bé\94\99误",
+       "ooui-dialog-process-dismiss": "关闭",
        "ooui-dialog-process-retry": "重试",
        "ooui-dialog-process-continue": "继续",
        "ooui-selectfile-not-supported": "文件选择不受支持",
-       "ooui-selectfile-placeholder": "没有选定文件"
+       "ooui-selectfile-placeholder": "没有选定文件",
+       "ooui-selectfile-dragdrop-placeholder": "将文件拖动至此(或点击以浏览)"
 }
index 6340e18..1d07fe9 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.4
+ * OOjs UI v0.12.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-08-13T21:01:12Z
+ * Date: 2015-08-26T00:14:44Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
@@ -82,8 +82,6 @@
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
        display: inline-block;
        vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-buttonElement-frameless {
        display: inline-block;
 }
 .oo-ui-iconElement .oo-ui-iconElement-icon,
 .oo-ui-iconElement.oo-ui-iconElement-icon {
-       opacity: 0.8;
        background-size: contain;
        background-position: center center;
+       background-repeat: no-repeat;
+}
+.oo-ui-iconElement .oo-ui-iconElement-icon,
+.oo-ui-iconElement.oo-ui-iconElement-icon {
+       opacity: 0.8;
 }
 .oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
 .oo-ui-indicatorElement.oo-ui-indicatorElement-indicator {
-       opacity: 0.8;
        background-size: contain;
        background-position: center center;
+       background-repeat: no-repeat;
+}
+.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
+.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator {
+       opacity: 0.8;
 }
 .oo-ui-lookupElement > .oo-ui-menuSelectWidget {
        z-index: 1;
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
        display: block;
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
        display: inline-block;
 .oo-ui-toolGroup .oo-ui-tool-link {
        text-decoration: none;
 }
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       background-position: center center;
-       background-repeat: no-repeat;
-}
 .oo-ui-toolbar-narrow .oo-ui-toolGroup + .oo-ui-toolGroup {
        margin-left: 0;
 }
 .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
 .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
        cursor: default;
        position: absolute;
        z-index: 4;
 }
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
-       background-repeat: no-repeat;
-       background-position: center center;
-}
 .oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
        display: block;
 }
 .oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
 .oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
        position: absolute;
-       background-repeat: no-repeat;
-       background-position: center center;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
 .oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
 .oo-ui-iconWidget {
        display: inline-block;
        vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
        line-height: 2.5em;
        height: 1.875em;
        width: 1.875em;
 .oo-ui-indicatorWidget {
        display: inline-block;
        vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
        line-height: 2.5em;
        height: 0.9375em;
        width: 0.9375em;
        position: absolute;
        top: 0;
        height: 100%;
-       background-repeat: no-repeat;
        -webkit-touch-callout: none;
        -webkit-user-select: none;
           -moz-user-select: none;
 .oo-ui-dropdownWidget {
        display: inline-block;
        position: relative;
-       margin: 0.25em 0;
        width: 100%;
        max-width: 50em;
        margin-right: 0.5em;
 .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator,
 .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-dropdownWidget > .oo-ui-menuSelectWidget {
        z-index: 1;
        display: inline-block;
        position: relative;
        vertical-align: middle;
-       margin: 0.25em 0;
        width: 100%;
        max-width: 50em;
        margin-right: 0.5em;
 .oo-ui-selectFileWidget-handle > .oo-ui-iconElement-icon,
 .oo-ui-selectFileWidget-handle > .oo-ui-selectFileWidget-clearButton {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-selectFileWidget-handle > input[type="file"] {
        position: absolute;
 .oo-ui-selectFileWidget-notsupported.oo-ui-indicatorElement .oo-ui-selectFileWidget-handle {
        padding-right: 2em;
 }
+.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle {
+       height: 3.5em;
+       border: 1px dashed #aaaaaa;
+       padding: 0.5em 1em;
+       background: #ffffff;
+       text-align: center;
+       vertical-align: middle;
+}
+.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle .oo-ui-iconElement-icon {
+       margin: 0.6em 0;
+}
+.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle .oo-ui-selectFileWidget-label {
+       color: #000000;
+}
+.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle:hover,
+.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui.oo-ui-selectFileWidget-canDrop .oo-ui-selectFileWidget-handle {
+       background-color: #eeeeee;
+}
 .oo-ui-outlineOptionWidget {
        position: relative;
        cursor: pointer;
 .oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
        float: left;
        background-position: right center;
-       background-repeat: no-repeat;
 }
 .oo-ui-outlineControlsWidget-items {
        float: left;
index 8c93afe..6d6d46a 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.4
+ * OOjs UI v0.12.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-08-13T21:01:04Z
+ * Date: 2015-08-26T00:14:36Z
  */
 /**
  * @class
index b6f8de8..f23902a 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.4
+ * OOjs UI v0.12.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-08-13T21:01:12Z
+ * Date: 2015-08-26T00:14:44Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
@@ -82,8 +82,6 @@
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
        display: inline-block;
        vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-buttonElement-frameless {
        display: inline-block;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-       color: #347bff;
+       color: #2962cc;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #777777;
+       color: #347bff;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active > .oo-ui-labelElement-label,
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-       color: #00af89;
+       color: #008064;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #777777;
+       color: #00af89;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active > .oo-ui-labelElement-label,
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-       color: #d11d13;
+       color: #8c130d;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #777777;
+       color: #d11d13;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active > .oo-ui-labelElement-label,
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
        box-shadow: inset 0 0 0 1px #1f4999;
        border-color: #1f4999;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
        color: #1f4999;
        border-color: #1f4999;
        box-shadow: inset 0 0 0 1px #005946;
        border-color: #005946;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
        color: #005946;
        border-color: #005946;
        box-shadow: inset 0 0 0 1px #73100a;
        border-color: #73100a;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
        color: #73100a;
        border-color: #73100a;
        box-shadow: inset 0 0 0 1px #ffffff;
        border-color: #347bff;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
        color: #ffffff;
        background-color: #1f4999;
        box-shadow: inset 0 0 0 1px #ffffff;
        border-color: #00af89;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
        color: #ffffff;
        background-color: #005946;
        box-shadow: inset 0 0 0 1px #ffffff;
        border-color: #d11d13;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
        color: #ffffff;
        background-color: #73100a;
 .oo-ui-iconElement.oo-ui-iconElement-icon {
        background-size: contain;
        background-position: center center;
+       background-repeat: no-repeat;
 }
 .oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
 .oo-ui-indicatorElement.oo-ui-indicatorElement-indicator {
        background-size: contain;
        background-position: center center;
+       background-repeat: no-repeat;
 }
 .oo-ui-lookupElement > .oo-ui-menuSelectWidget {
        z-index: 1;
 .oo-ui-fieldLayout-messages > li {
        margin: 0;
        padding: 0;
+       display: table;
 }
 .oo-ui-fieldLayout-messages .oo-ui-iconWidget {
-       margin-right: 0.5em;
+       display: table-cell;
+       border-right: 0.5em solid transparent;
 }
 .oo-ui-fieldLayout-messages .oo-ui-labelWidget {
+       display: table-cell;
        padding: 0;
        line-height: 1.875em;
        vertical-align: middle;
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
        display: block;
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
        display: inline-block;
 .oo-ui-toolGroup .oo-ui-tool-link {
        text-decoration: none;
 }
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       background-position: center center;
-       background-repeat: no-repeat;
-}
 .oo-ui-toolbar-narrow .oo-ui-toolGroup + .oo-ui-toolGroup {
        margin-left: 0;
 }
 .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
 .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
        cursor: default;
        position: absolute;
        z-index: 4;
 }
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
-       background-repeat: no-repeat;
-       background-position: center center;
-}
 .oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
        display: block;
 }
        background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/check.svg");
        background-image:         linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/check.svg");
        background-image:      -o-linear-gradient(transparent, transparent), url("themes/mediawiki/images/icons/check.png");
+       background-size: contain;
+       background-position: center center;
+       background-repeat: no-repeat;
 }
 .oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
        background-color: #eeeeee;
 .oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
 .oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
        position: absolute;
-       background-repeat: no-repeat;
-       background-position: center center;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
 .oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
 .oo-ui-iconWidget {
        display: inline-block;
        vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
        line-height: 2.5em;
        height: 1.875em;
        width: 1.875em;
 .oo-ui-indicatorWidget {
        display: inline-block;
        vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
        line-height: 2.5em;
        height: 0.9375em;
        width: 0.9375em;
        position: absolute;
        top: 0;
        height: 100%;
-       background-repeat: no-repeat;
        -webkit-touch-callout: none;
        -webkit-user-select: none;
           -moz-user-select: none;
 .oo-ui-dropdownWidget {
        display: inline-block;
        position: relative;
-       margin: 0.25em 0;
        width: 100%;
        max-width: 50em;
        background: #ffffff;
 .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator,
 .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-dropdownWidget > .oo-ui-menuSelectWidget {
        z-index: 1;
        display: inline-block;
        position: relative;
        vertical-align: middle;
-       margin: 0.25em 0;
        width: 100%;
        max-width: 50em;
        margin-right: 0.5em;
 .oo-ui-selectFileWidget-handle > .oo-ui-iconElement-icon,
 .oo-ui-selectFileWidget-handle > .oo-ui-selectFileWidget-clearButton {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-selectFileWidget-handle > input[type="file"] {
        position: absolute;
 .oo-ui-selectFileWidget-notsupported.oo-ui-indicatorElement .oo-ui-selectFileWidget-handle {
        padding-right: 2em;
 }
+.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle {
+       height: 3.5em;
+       border: 1px dashed #cccccc;
+       border-radius: 0;
+       padding: 0.5em 1em;
+       background: #ffffff;
+       text-align: center;
+       vertical-align: middle;
+}
+.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle .oo-ui-iconElement-icon {
+       margin: 0.6em 0;
+}
+.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle .oo-ui-selectFileWidget-label {
+       color: #000000;
+}
+.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle:hover,
+.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui.oo-ui-selectFileWidget-canDrop .oo-ui-selectFileWidget-handle {
+       background-color: #eeeeee;
+}
 .oo-ui-outlineOptionWidget {
        position: relative;
        cursor: pointer;
 .oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
        float: left;
        background-position: right center;
-       background-repeat: no-repeat;
 }
 .oo-ui-outlineControlsWidget-items {
        float: left;
index ed93566..ecb210a 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.4
+ * OOjs UI v0.12.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-08-13T21:01:04Z
+ * Date: 2015-08-26T00:14:36Z
  */
 /**
  * @class
@@ -57,6 +57,12 @@ OO.ui.MediaWikiTheme.prototype.getElementClasses = function ( element ) {
                }
        }
 
+       if ( element instanceof OO.ui.SelectFileWidget ) {
+               if ( !element.isDisabled() && element.active ) {
+                       variants.invert = true;
+               }
+       }
+
        for ( variant in variants ) {
                classes[ variants[ variant ] ? 'on' : 'off' ].push( 'oo-ui-image-' + variant );
        }
index ce067fc..e5f54fc 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.4
+ * OOjs UI v0.12.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-08-13T21:01:04Z
+ * Date: 2015-08-26T00:14:36Z
  */
 ( function ( OO ) {
 
@@ -64,10 +64,10 @@ OO.ui.generateElementId = function () {
  * Inspired from :focusable in jQueryUI v1.11.4 - 2015-04-14
  *
  * @param {jQuery} element Element to test
- * @return {Boolean} [description]
+ * @return {boolean}
  */
 OO.ui.isFocusableElement = function ( $element ) {
-       var node = $element[0],
+       var node = $element[ 0 ],
                nodeName = node.nodeName.toLowerCase(),
                // Check if the element have tabindex set
                isInElementGroup = /^(input|select|textarea|button|object)$/.test( nodeName ),
@@ -198,6 +198,38 @@ OO.ui.debounce = function ( func, wait, immediate ) {
        };
 };
 
+/**
+ * Proxy for `node.addEventListener( eventName, handler, true )`, if the browser supports it.
+ * Otherwise falls back to non-capturing event listeners.
+ *
+ * @param {HTMLElement} node
+ * @param {string} eventName
+ * @param {Function} handler
+ */
+OO.ui.addCaptureEventListener = function ( node, eventName, handler ) {
+       if ( node.addEventListener ) {
+               node.addEventListener( eventName, handler, true );
+       } else {
+               node.attachEvent( 'on' + eventName, handler );
+       }
+};
+
+/**
+ * Proxy for `node.removeEventListener( eventName, handler, true )`, if the browser supports it.
+ * Otherwise falls back to non-capturing event listeners.
+ *
+ * @param {HTMLElement} node
+ * @param {string} eventName
+ * @param {Function} handler
+ */
+OO.ui.removeCaptureEventListener = function ( node, eventName, handler ) {
+       if ( node.addEventListener ) {
+               node.removeEventListener( eventName, handler, true );
+       } else {
+               node.detachEvent( 'on' + eventName, handler );
+       }
+};
+
 /**
  * Reconstitute a JavaScript object corresponding to a widget created by
  * the PHP implementation.
@@ -251,6 +283,8 @@ OO.ui.infuse = function ( idOrNode ) {
                'ooui-selectfile-not-supported': 'File selection is not supported',
                // Default placeholder for file selection widgets
                'ooui-selectfile-placeholder': 'No file is selected',
+               // Default placeholder for file selection widgets when using drag drop UI
+               'ooui-selectfile-dragdrop-placeholder': 'Drop file here (or click to browse)',
                // Semicolon separator
                'ooui-semicolon-separator': '; '
        };
@@ -337,14 +371,14 @@ OO.ui.infuse = function ( idOrNode ) {
                        return true;
                }
 
-               protocol = url.split( ':', 1 )[0] + ':';
+               protocol = url.split( ':', 1 )[ 0 ] + ':';
                if ( !protocol.match( /^([A-za-z0-9\+\.\-])+:/ ) ) {
                        // Not a valid protocol, safe
                        return true;
                }
 
                // Safe if in the whitelist
-               return $.inArray( protocol, whitelist ) !== -1;
+               return whitelist.indexOf( protocol ) !== -1;
        };
 
 } )();
@@ -1037,8 +1071,7 @@ OO.ui.Element = function OoUiElement( config ) {
        this.$element = config.$element ||
                $( document.createElement( this.getTagName() ) );
        this.elementGroup = null;
-       this.debouncedUpdateThemeClassesHandler = this.debouncedUpdateThemeClasses.bind( this );
-       this.updateThemeClassesPending = false;
+       this.debouncedUpdateThemeClassesHandler = OO.ui.debounce( this.debouncedUpdateThemeClasses );
 
        // Initialization
        if ( Array.isArray( config.classes ) ) {
@@ -1139,7 +1172,7 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) {
        if ( !$elem.length ) {
                throw new Error( 'Widget not found: ' + id );
        }
-       data = $elem.data( 'ooui-infused' ) || $elem[0].oouiInfused;
+       data = $elem.data( 'ooui-infused' ) || $elem[ 0 ].oouiInfused;
        if ( data ) {
                // cached!
                if ( data === true ) {
@@ -1216,7 +1249,7 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) {
                // This element is now gone from the DOM, but if anyone is holding a reference to it,
                // let's allow them to OO.ui.infuse() it and do what they expect (T105828).
                // Do not use jQuery.data(), as using it on detached nodes leaks memory in 1.x line by design.
-               $elem[0].oouiInfused = obj;
+               $elem[ 0 ].oouiInfused = obj;
                top.resolve();
        }
        obj.$element.data( 'ooui-infused', obj );
@@ -1280,6 +1313,8 @@ OO.ui.Element.static.getDocument = function ( obj ) {
  */
 OO.ui.Element.static.getWindow = function ( obj ) {
        var doc = this.getDocument( obj );
+       // Support: IE 8
+       // Standard Document.defaultView is IE9+
        return doc.parentWindow || doc.defaultView;
 };
 
@@ -1395,9 +1430,13 @@ OO.ui.Element.static.getRelativePosition = function ( $element, $anchor ) {
  */
 OO.ui.Element.static.getBorders = function ( el ) {
        var doc = el.ownerDocument,
+               // Support: IE 8
+               // Standard Document.defaultView is IE9+
                win = doc.parentWindow || doc.defaultView,
                style = win && win.getComputedStyle ?
                        win.getComputedStyle( el, null ) :
+                       // Support: IE 8
+                       // Standard getComputedStyle() is IE9+
                        el.currentStyle,
                $el = $( el ),
                top = parseFloat( style ? style.borderTopWidth : $el.css( 'borderTopWidth' ) ) || 0,
@@ -1423,6 +1462,8 @@ OO.ui.Element.static.getBorders = function ( el ) {
 OO.ui.Element.static.getDimensions = function ( el ) {
        var $el, $win,
                doc = el.ownerDocument || el.document,
+               // Support: IE 8
+               // Standard Document.defaultView is IE9+
                win = doc.parentWindow || doc.defaultView;
 
        if ( win === el || el === doc.documentElement ) {
@@ -1539,16 +1580,18 @@ OO.ui.Element.static.getClosestScrollableContainer = function ( el, dimension )
  * @param {Function} [config.complete] Function to call when scrolling completes
  */
 OO.ui.Element.static.scrollIntoView = function ( el, config ) {
+       var rel, anim, callback, sc, $sc, eld, scd, $win;
+
        // Configuration initialization
        config = config || {};
 
-       var rel, anim = {},
-               callback = typeof config.complete === 'function' && config.complete,
-               sc = this.getClosestScrollableContainer( el, config.direction ),
-               $sc = $( sc ),
-               eld = this.getDimensions( el ),
-               scd = this.getDimensions( sc ),
-               $win = $( this.getWindow( el ) );
+       anim = {};
+       callback = typeof config.complete === 'function' && config.complete;
+       sc = this.getClosestScrollableContainer( el, config.direction );
+       $sc = $( sc );
+       eld = this.getDimensions( el );
+       scd = this.getDimensions( sc );
+       $win = $( this.getWindow( el ) );
 
        // Compute the distances between the edges of el and the edges of the scroll viewport
        if ( $sc.is( 'html, body' ) ) {
@@ -1709,18 +1752,16 @@ OO.ui.Element.prototype.supports = function ( methods ) {
  *   guaranteeing that theme updates do not occur within an element's constructor
  */
 OO.ui.Element.prototype.updateThemeClasses = function () {
-       if ( !this.updateThemeClassesPending ) {
-               this.updateThemeClassesPending = true;
-               setTimeout( this.debouncedUpdateThemeClassesHandler );
-       }
+       this.debouncedUpdateThemeClassesHandler();
 };
 
 /**
  * @private
+ * @localdoc This method is called directly from the QUnit tests instead of #updateThemeClasses, to
+ *   make them synchronous.
  */
 OO.ui.Element.prototype.debouncedUpdateThemeClasses = function () {
        OO.ui.theme.updateElementClasses( this );
-       this.updateThemeClassesPending = false;
 };
 
 /**
@@ -2677,7 +2718,7 @@ OO.ui.Dialog = function OoUiDialog( config ) {
        this.actions = new OO.ui.ActionSet();
        this.attachedActions = [];
        this.currentAction = null;
-       this.onDocumentKeyDownHandler = this.onDocumentKeyDown.bind( this );
+       this.onDialogKeyDownHandler = this.onDialogKeyDown.bind( this );
 
        // Events
        this.actions.connect( this, {
@@ -2760,7 +2801,7 @@ OO.ui.Dialog.static.escapable = true;
  * @private
  * @param {jQuery.Event} e Key down event
  */
-OO.ui.Dialog.prototype.onDocumentKeyDown = function ( e ) {
+OO.ui.Dialog.prototype.onDialogKeyDown = function ( e ) {
        if ( e.which === OO.ui.Keys.ESCAPE ) {
                this.close();
                e.preventDefault();
@@ -2857,7 +2898,7 @@ OO.ui.Dialog.prototype.getSetupProcess = function ( data ) {
                        this.actions.add( this.getActionWidgets( actions ) );
 
                        if ( this.constructor.static.escapable ) {
-                               this.$document.on( 'keydown', this.onDocumentKeyDownHandler );
+                               this.$element.on( 'keydown', this.onDialogKeyDownHandler );
                        }
                }, this );
 };
@@ -2870,7 +2911,7 @@ OO.ui.Dialog.prototype.getTeardownProcess = function ( data ) {
        return OO.ui.Dialog.parent.prototype.getTeardownProcess.call( this, data )
                .first( function () {
                        if ( this.constructor.static.escapable ) {
-                               this.$document.off( 'keydown', this.onDocumentKeyDownHandler );
+                               this.$element.off( 'keydown', this.onDialogKeyDownHandler );
                        }
 
                        this.actions.clear();
@@ -2882,10 +2923,12 @@ OO.ui.Dialog.prototype.getTeardownProcess = function ( data ) {
  * @inheritdoc
  */
 OO.ui.Dialog.prototype.initialize = function () {
+       var titleId;
+
        // Parent method
        OO.ui.Dialog.parent.prototype.initialize.call( this );
 
-       var titleId = OO.ui.generateElementId();
+       titleId = OO.ui.generateElementId();
 
        // Properties
        this.title = new OO.ui.LabelWidget( {
@@ -3511,12 +3554,14 @@ OO.ui.WindowManager.prototype.clearWindows = function () {
  * @chainable
  */
 OO.ui.WindowManager.prototype.updateWindowSize = function ( win ) {
+       var isFullscreen;
+
        // Bypass for non-current, and thus invisible, windows
        if ( win !== this.currentWindow ) {
                return;
        }
 
-       var isFullscreen = win.getSize() === 'full';
+       isFullscreen = win.getSize() === 'full';
 
        this.$element.toggleClass( 'oo-ui-windowManager-fullscreen', isFullscreen );
        this.$element.toggleClass( 'oo-ui-windowManager-floating', !isFullscreen );
@@ -3535,14 +3580,14 @@ OO.ui.WindowManager.prototype.updateWindowSize = function ( win ) {
  * @chainable
  */
 OO.ui.WindowManager.prototype.toggleGlobalEvents = function ( on ) {
-       on = on === undefined ? !!this.globalEvents : !!on;
-
        var scrollWidth, bodyMargin,
                $body = $( this.getElementDocument().body ),
                // We could have multiple window managers open so only modify
                // the body css at the bottom of the stack
                stackDepth = $body.data( 'windowManagerGlobalEvents' ) || 0 ;
 
+       on = on === undefined ? !!this.globalEvents : !!on;
+
        if ( on ) {
                if ( !this.globalEvents ) {
                        $( this.getElementWindow() ).on( {
@@ -4055,11 +4100,11 @@ OO.ui.ToolFactory.prototype.extract = function ( collection, used ) {
  * @constructor
  */
 OO.ui.ToolGroupFactory = function OoUiToolGroupFactory() {
+       var i, l, defaultClasses;
        // Parent constructor
        OO.Factory.call( this );
 
-       var i, l,
-               defaultClasses = this.constructor.static.getDefaultClasses();
+       defaultClasses = this.constructor.static.getDefaultClasses();
 
        // Register default toolgroups
        for ( i = 0, l = defaultClasses.length; i < l; i++ ) {
@@ -4128,9 +4173,17 @@ OO.ui.Theme.prototype.getElementClasses = function ( /* element */ ) {
  * @return {Object.<string,string[]>} Categorized class names with `on` and `off` lists
  */
 OO.ui.Theme.prototype.updateElementClasses = function ( element ) {
-       var classes = this.getElementClasses( element );
+       var $elements = $( [] ),
+               classes = this.getElementClasses( element );
 
-       element.$element
+       if ( element.$icon ) {
+               $elements = $elements.add( element.$icon );
+       }
+       if ( element.$indicator ) {
+               $elements = $elements.add( element.$indicator );
+       }
+
+       $elements
                .removeClass( classes.off.join( ' ' ) )
                .addClass( classes.on.join( ' ' ) );
 };
@@ -4245,7 +4298,8 @@ OO.ui.mixin.TabIndexedElement.prototype.updateTabIndex = function () {
                        // Do not index over disabled elements
                        this.$tabIndexed.attr( {
                                tabindex: this.isDisabled() ? -1 : this.tabIndex,
-                               // ChromeVox and NVDA do not seem to inherit this from parent elements
+                               // Support: ChromeVox and NVDA
+                               // These do not seem to inherit aria-disabled from parent elements
                                'aria-disabled': this.isDisabled().toString()
                        } );
                } else {
@@ -4288,7 +4342,6 @@ OO.ui.mixin.TabIndexedElement.prototype.getTabIndex = function () {
  * @cfg {jQuery} [$button] The button element created by the class.
  *  If this configuration is omitted, the button element will use a generated `<a>`.
  * @cfg {boolean} [framed=true] Render the button with a frame
- * @cfg {string} [accessKey] Button's access key
  */
 OO.ui.mixin.ButtonElement = function OoUiMixinButtonElement( config ) {
        // Configuration initialization
@@ -4297,7 +4350,6 @@ OO.ui.mixin.ButtonElement = function OoUiMixinButtonElement( config ) {
        // Properties
        this.$button = null;
        this.framed = null;
-       this.accessKey = null;
        this.active = false;
        this.onMouseUpHandler = this.onMouseUp.bind( this );
        this.onMouseDownHandler = this.onMouseDown.bind( this );
@@ -4309,7 +4361,6 @@ OO.ui.mixin.ButtonElement = function OoUiMixinButtonElement( config ) {
        // Initialization
        this.$element.addClass( 'oo-ui-buttonElement' );
        this.toggleFramed( config.framed === undefined || config.framed );
-       this.setAccessKey( config.accessKey );
        this.setButtonElement( config.$button || $( '<a>' ) );
 };
 
@@ -4367,7 +4418,7 @@ OO.ui.mixin.ButtonElement.prototype.setButtonElement = function ( $button ) {
 
        this.$button = $button
                .addClass( 'oo-ui-buttonElement-button' )
-               .attr( { role: 'button', accesskey: this.accessKey } )
+               .attr( { role: 'button' } )
                .on( {
                        mousedown: this.onMouseDownHandler,
                        keydown: this.onKeyDownHandler,
@@ -4389,7 +4440,7 @@ OO.ui.mixin.ButtonElement.prototype.onMouseDown = function ( e ) {
        this.$element.addClass( 'oo-ui-buttonElement-pressed' );
        // Run the mouseup handler no matter where the mouse is when the button is let go, so we can
        // reliably remove the pressed class
-       this.getElementDocument().addEventListener( 'mouseup', this.onMouseUpHandler, true );
+       OO.ui.addCaptureEventListener( this.getElementDocument(), 'mouseup', this.onMouseUpHandler );
        // Prevent change of focus unless specifically configured otherwise
        if ( this.constructor.static.cancelButtonMouseDownEvents ) {
                return false;
@@ -4408,7 +4459,7 @@ OO.ui.mixin.ButtonElement.prototype.onMouseUp = function ( e ) {
        }
        this.$element.removeClass( 'oo-ui-buttonElement-pressed' );
        // Stop listening for mouseup, since we only needed this once
-       this.getElementDocument().removeEventListener( 'mouseup', this.onMouseUpHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'mouseup', this.onMouseUpHandler );
 };
 
 /**
@@ -4439,7 +4490,7 @@ OO.ui.mixin.ButtonElement.prototype.onKeyDown = function ( e ) {
        this.$element.addClass( 'oo-ui-buttonElement-pressed' );
        // Run the keyup handler no matter where the key is when the button is let go, so we can
        // reliably remove the pressed class
-       this.getElementDocument().addEventListener( 'keyup', this.onKeyUpHandler, true );
+       OO.ui.addCaptureEventListener( this.getElementDocument(), 'keyup', this.onKeyUpHandler );
 };
 
 /**
@@ -4454,7 +4505,7 @@ OO.ui.mixin.ButtonElement.prototype.onKeyUp = function ( e ) {
        }
        this.$element.removeClass( 'oo-ui-buttonElement-pressed' );
        // Stop listening for keyup, since we only needed this once
-       this.getElementDocument().removeEventListener( 'keyup', this.onKeyUpHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'keyup', this.onKeyUpHandler );
 };
 
 /**
@@ -4500,29 +4551,6 @@ OO.ui.mixin.ButtonElement.prototype.toggleFramed = function ( framed ) {
        return this;
 };
 
-/**
- * Set the button's access key.
- *
- * @param {string} accessKey Button's access key, use empty string to remove
- * @chainable
- */
-OO.ui.mixin.ButtonElement.prototype.setAccessKey = function ( accessKey ) {
-       accessKey = typeof accessKey === 'string' && accessKey.length ? accessKey : null;
-
-       if ( this.accessKey !== accessKey ) {
-               if ( this.$button ) {
-                       if ( accessKey !== null ) {
-                               this.$button.attr( 'accesskey', accessKey );
-                       } else {
-                               this.$button.removeAttr( 'accesskey' );
-                       }
-               }
-               this.accessKey = accessKey;
-       }
-
-       return this;
-};
-
 /**
  * Set the button to its 'active' state.
  *
@@ -4684,7 +4712,7 @@ OO.ui.mixin.GroupElement.prototype.aggregate = function ( events ) {
                                item = this.items[ i ];
                                if ( item.connect && item.disconnect ) {
                                        remove = {};
-                                       remove[ itemEvent ] = [ 'emit', this.aggregateItemEvents[itemEvent], item ];
+                                       remove[ itemEvent ] = [ 'emit', this.aggregateItemEvents[ itemEvent ], item ];
                                        item.disconnect( this, remove );
                                }
                        }
@@ -4727,7 +4755,7 @@ OO.ui.mixin.GroupElement.prototype.addItems = function ( items, index ) {
                item = items[ i ];
 
                // Check if item exists then remove it first, effectively "moving" it
-               currentIndex = $.inArray( item, this.items );
+               currentIndex = this.items.indexOf( item );
                if ( currentIndex >= 0 ) {
                        this.removeItems( [ item ] );
                        // Adjust index to compensate for removal
@@ -4776,7 +4804,7 @@ OO.ui.mixin.GroupElement.prototype.removeItems = function ( items ) {
        // Remove specific items
        for ( i = 0, len = items.length; i < len; i++ ) {
                item = items[ i ];
-               index = $.inArray( item, this.items );
+               index = this.items.indexOf( item );
                if ( index !== -1 ) {
                        if (
                                item.connect && item.disconnect &&
@@ -4900,13 +4928,13 @@ OO.ui.mixin.DraggableElement.prototype.onDragStart = function ( e ) {
        // Define drop effect
        dataTransfer.dropEffect = 'none';
        dataTransfer.effectAllowed = 'move';
+       // Support: Firefox
        // We must set up a dataTransfer data property or Firefox seems to
        // ignore the fact the element is draggable.
        try {
                dataTransfer.setData( 'application-x/OOjs-UI-draggable', this.getIndex() );
        } catch ( err ) {
-               // The above is only for firefox. No need to set a catch clause
-               // if it fails, move on.
+               // The above is only for Firefox. Move on if it fails.
        }
        // Add dragging class
        this.$element.addClass( 'oo-ui-draggableElement-dragging' );
@@ -5014,8 +5042,8 @@ OO.ui.mixin.DraggableGroupElement = function OoUiMixinDraggableGroupElement( con
                itemDragEnd: 'onItemDragEnd'
        } );
        this.$element.on( {
-               dragover: $.proxy( this.onDragOver, this ),
-               dragleave: $.proxy( this.onDragLeave, this )
+               dragover: this.onDragOver.bind( this ),
+               dragleave: this.onDragLeave.bind( this )
        } );
 
        // Initialize
@@ -5345,6 +5373,8 @@ OO.ui.mixin.IconElement.prototype.setIconElement = function ( $icon ) {
        if ( this.iconTitle !== null ) {
                this.$icon.attr( 'title', this.iconTitle );
        }
+
+       this.updateThemeClasses();
 };
 
 /**
@@ -5514,6 +5544,8 @@ OO.ui.mixin.IndicatorElement.prototype.setIndicatorElement = function ( $indicat
        if ( this.indicatorTitle !== null ) {
                this.$indicator.attr( 'title', this.indicatorTitle );
        }
+
+       this.updateThemeClasses();
 };
 
 /**
@@ -5745,7 +5777,7 @@ OO.ui.mixin.LabelElement.prototype.setLabelContent = function ( label ) {
 };
 
 /**
- * LookupElement is a mixin that creates a {@link OO.ui.TextInputMenuSelectWidget menu} of suggested values for
+ * LookupElement is a mixin that creates a {@link OO.ui.FloatingMenuSelectWidget menu} of suggested values for
  * a {@link OO.ui.TextInputWidget text input widget}. Suggested values are based on the characters the user types
  * into the text input field and, in general, the menu is only displayed when the user types. If a suggested value is chosen
  * from the lookup menu, that value becomes the value of the input field.
@@ -5774,10 +5806,10 @@ OO.ui.mixin.LookupElement = function OoUiMixinLookupElement( config ) {
 
        // Properties
        this.$overlay = config.$overlay || this.$element;
-       this.lookupMenu = new OO.ui.TextInputMenuSelectWidget( this, {
+       this.lookupMenu = new OO.ui.FloatingMenuSelectWidget( {
                widget: this,
                input: this,
-               $container: config.$container
+               $container: config.$container || this.$element
        } );
 
        this.allowSuggestionsWhenEmpty = config.allowSuggestionsWhenEmpty || false;
@@ -5888,7 +5920,7 @@ OO.ui.mixin.LookupElement.prototype.onLookupMenuItemChoose = function ( item ) {
  * Get lookup menu.
  *
  * @private
- * @return {OO.ui.TextInputMenuSelectWidget}
+ * @return {OO.ui.FloatingMenuSelectWidget}
  */
 OO.ui.mixin.LookupElement.prototype.getLookupMenu = function () {
        return this.lookupMenu;
@@ -6482,12 +6514,21 @@ OO.ui.mixin.TitledElement.prototype.getTitle = function () {
  * {@link OO.ui.mixin.ClippableElement#clip} to make sure it's still
  * clipping correctly.
  *
+ * The dimensions of #$clippableContainer will be compared to the boundaries of the
+ * nearest scrollable container. If #$clippableContainer is too tall and/or too wide,
+ * then #$clippable will be given a fixed reduced height and/or width and will be made
+ * scrollable. By default, #$clippable and #$clippableContainer are the same element,
+ * but you can build a static footer by setting #$clippableContainer to an element that contains
+ * #$clippable and the footer.
+ *
  * @abstract
  * @class
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$clippable] Nodes to clip, assigned to #$clippable, omit to use #$element
+ * @cfg {jQuery} [$clippable] Node to clip, assigned to #$clippable, omit to use #$element
+ * @cfg {jQuery} [$clippableContainer] Node to keep visible, assigned to #$clippableContainer,
+ *   omit to use #$clippable
  */
 OO.ui.mixin.ClippableElement = function OoUiMixinClippableElement( config ) {
        // Configuration initialization
@@ -6495,18 +6536,22 @@ OO.ui.mixin.ClippableElement = function OoUiMixinClippableElement( config ) {
 
        // Properties
        this.$clippable = null;
+       this.$clippableContainer = null;
        this.clipping = false;
        this.clippedHorizontally = false;
        this.clippedVertically = false;
-       this.$clippableContainer = null;
+       this.$clippableScrollableContainer = null;
        this.$clippableScroller = null;
        this.$clippableWindow = null;
        this.idealWidth = null;
        this.idealHeight = null;
-       this.onClippableContainerScrollHandler = this.clip.bind( this );
+       this.onClippableScrollHandler = this.clip.bind( this );
        this.onClippableWindowResizeHandler = this.clip.bind( this );
 
        // Initialization
+       if ( config.$clippableContainer ) {
+               this.setClippableContainer( config.$clippableContainer );
+       }
        this.setClippableElement( config.$clippable || this.$element );
 };
 
@@ -6530,6 +6575,23 @@ OO.ui.mixin.ClippableElement.prototype.setClippableElement = function ( $clippab
        this.clip();
 };
 
+/**
+ * Set clippable container.
+ *
+ * This is the container that will be measured when deciding whether to clip. When clipping,
+ * #$clippable will be resized in order to keep the clippable container fully visible.
+ *
+ * If the clippable container is unset, #$clippable will be used.
+ *
+ * @param {jQuery|null} $clippableContainer Container to keep visible, or null to unset
+ */
+OO.ui.mixin.ClippableElement.prototype.setClippableContainer = function ( $clippableContainer ) {
+       this.$clippableContainer = $clippableContainer;
+       if ( this.$clippable ) {
+               this.clip();
+       }
+};
+
 /**
  * Toggle clipping.
  *
@@ -6544,13 +6606,13 @@ OO.ui.mixin.ClippableElement.prototype.toggleClipping = function ( clipping ) {
        if ( this.clipping !== clipping ) {
                this.clipping = clipping;
                if ( clipping ) {
-                       this.$clippableContainer = $( this.getClosestScrollableElementContainer() );
+                       this.$clippableScrollableContainer = $( this.getClosestScrollableElementContainer() );
                        // If the clippable container is the root, we have to listen to scroll events and check
                        // jQuery.scrollTop on the window because of browser inconsistencies
-                       this.$clippableScroller = this.$clippableContainer.is( 'html, body' ) ?
-                               $( OO.ui.Element.static.getWindow( this.$clippableContainer ) ) :
-                               this.$clippableContainer;
-                       this.$clippableScroller.on( 'scroll', this.onClippableContainerScrollHandler );
+                       this.$clippableScroller = this.$clippableScrollableContainer.is( 'html, body' ) ?
+                               $( OO.ui.Element.static.getWindow( this.$clippableScrollableContainer ) ) :
+                               this.$clippableScrollableContainer;
+                       this.$clippableScroller.on( 'scroll', this.onClippableScrollHandler );
                        this.$clippableWindow = $( this.getElementWindow() )
                                .on( 'resize', this.onClippableWindowResizeHandler );
                        // Initial clip after visible
@@ -6559,8 +6621,8 @@ OO.ui.mixin.ClippableElement.prototype.toggleClipping = function ( clipping ) {
                        this.$clippable.css( { width: '', height: '', overflowX: '', overflowY: '' } );
                        OO.ui.Element.static.reconsiderScrollbars( this.$clippable[ 0 ] );
 
-                       this.$clippableContainer = null;
-                       this.$clippableScroller.off( 'scroll', this.onClippableContainerScrollHandler );
+                       this.$clippableScrollableContainer = null;
+                       this.$clippableScroller.off( 'scroll', this.onClippableScrollHandler );
                        this.$clippableScroller = null;
                        this.$clippableWindow.off( 'resize', this.onClippableWindowResizeHandler );
                        this.$clippableWindow = null;
@@ -6633,40 +6695,51 @@ OO.ui.mixin.ClippableElement.prototype.setIdealSize = function ( width, height )
  * @chainable
  */
 OO.ui.mixin.ClippableElement.prototype.clip = function () {
+       var $container, extraHeight, extraWidth, ccOffset,
+               $scrollableContainer, scOffset, scHeight, scWidth,
+               ccWidth, scrollerIsWindow, scrollTop, scrollLeft,
+               desiredWidth, desiredHeight, allotedWidth, allotedHeight,
+               naturalWidth, naturalHeight, clipWidth, clipHeight,
+               buffer = 7; // Chosen by fair dice roll
+
        if ( !this.clipping ) {
-               // this.$clippableContainer and this.$clippableWindow are null, so the below will fail
+               // this.$clippableScrollableContainer and this.$clippableWindow are null, so the below will fail
                return this;
        }
 
-       var buffer = 7, // Chosen by fair dice roll
-               cOffset = this.$clippable.offset(),
-               $container = this.$clippableContainer.is( 'html, body' ) ?
-                       this.$clippableWindow : this.$clippableContainer,
-               ccOffset = $container.offset() || { top: 0, left: 0 },
-               ccHeight = $container.innerHeight() - buffer,
-               ccWidth = $container.innerWidth() - buffer,
-               cWidth = this.$clippable.outerWidth() + buffer,
-               scrollerIsWindow = this.$clippableScroller[0] === this.$clippableWindow[0],
-               scrollTop = scrollerIsWindow ? this.$clippableScroller.scrollTop() : 0,
-               scrollLeft = scrollerIsWindow ? this.$clippableScroller.scrollLeft() : 0,
-               desiredWidth = cOffset.left < 0 ?
-                       cWidth + cOffset.left :
-                       ( ccOffset.left + scrollLeft + ccWidth ) - cOffset.left,
-               desiredHeight = ( ccOffset.top + scrollTop + ccHeight ) - cOffset.top,
-               naturalWidth = this.$clippable.prop( 'scrollWidth' ),
-               naturalHeight = this.$clippable.prop( 'scrollHeight' ),
-               clipWidth = desiredWidth < naturalWidth,
-               clipHeight = desiredHeight < naturalHeight;
+       $container = this.$clippableContainer || this.$clippable;
+       extraHeight = $container.outerHeight() - this.$clippable.outerHeight();
+       extraWidth = $container.outerWidth() - this.$clippable.outerWidth();
+       ccOffset = $container.offset();
+       $scrollableContainer = this.$clippableScrollableContainer.is( 'html, body' ) ?
+               this.$clippableWindow : this.$clippableScrollableContainer;
+       scOffset = $scrollableContainer.offset() || { top: 0, left: 0 };
+       scHeight = $scrollableContainer.innerHeight() - buffer;
+       scWidth = $scrollableContainer.innerWidth() - buffer;
+       ccWidth = $container.outerWidth() + buffer;
+       scrollerIsWindow = this.$clippableScroller[ 0 ] === this.$clippableWindow[ 0 ];
+       scrollTop = scrollerIsWindow ? this.$clippableScroller.scrollTop() : 0;
+       scrollLeft = scrollerIsWindow ? this.$clippableScroller.scrollLeft() : 0;
+       desiredWidth = ccOffset.left < 0 ?
+               ccWidth + ccOffset.left :
+               ( scOffset.left + scrollLeft + scWidth ) - ccOffset.left;
+       desiredHeight = ( scOffset.top + scrollTop + scHeight ) - ccOffset.top;
+       allotedWidth = desiredWidth - extraWidth;
+       allotedHeight = desiredHeight - extraHeight;
+       naturalWidth = this.$clippable.prop( 'scrollWidth' );
+       naturalHeight = this.$clippable.prop( 'scrollHeight' );
+       clipWidth = allotedWidth < naturalWidth;
+       clipHeight = allotedHeight < naturalHeight;
 
        if ( clipWidth ) {
-               this.$clippable.css( { overflowX: 'scroll', width: desiredWidth } );
+               this.$clippable.css( { overflowX: 'scroll', width: Math.max( 0, allotedWidth ) } );
        } else {
-               this.$clippable.css( { width: this.idealWidth || '', overflowX: '' } );
+               this.$clippable.css( { width: this.idealWidth ? this.idealWidth - extraWidth : '', overflowX: '' } );
        }
        if ( clipHeight ) {
-               this.$clippable.css( { overflowY: 'scroll', height: desiredHeight } );
+               this.$clippable.css( { overflowY: 'scroll', height: Math.max( 0, allotedHeight ) } );
        } else {
-               this.$clippable.css( { height: this.idealHeight || '', overflowY: '' } );
+               this.$clippable.css( { height: this.idealHeight ? this.idealHeight - extraHeight : '', overflowY: '' } );
        }
 
        // If we stopped clipping in at least one of the dimensions
@@ -6680,6 +6753,113 @@ OO.ui.mixin.ClippableElement.prototype.clip = function () {
        return this;
 };
 
+/**
+ * AccessKeyedElement is mixed into other classes to provide an `accesskey` attribute.
+ * Accesskeys allow an user to go to a specific element by using
+ * a shortcut combination of a browser specific keys + the key
+ * set to the field.
+ *
+ *     @example
+ *     // AccessKeyedElement provides an 'accesskey' attribute to the
+ *     // ButtonWidget class
+ *     var button = new OO.ui.ButtonWidget( {
+ *         label: 'Button with Accesskey',
+ *         accessKey: 'k'
+ *     } );
+ *     $( 'body' ).append( button.$element );
+ *
+ * @abstract
+ * @class
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ * @cfg {jQuery} [$accessKeyed] The element to which the `accesskey` attribute is applied.
+ *  If this config is omitted, the accesskey functionality is applied to $element, the
+ *  element created by the class.
+ * @cfg {string|Function} [accessKey] The key or a function that returns the key. If
+ *  this config is omitted, no accesskey will be added.
+ */
+OO.ui.mixin.AccessKeyedElement = function OoUiMixinAccessKeyedElement( config ) {
+       // Configuration initialization
+       config = config || {};
+
+       // Properties
+       this.$accessKeyed = null;
+       this.accessKey = null;
+
+       // Initialization
+       this.setAccessKey( config.accessKey || null );
+       this.setAccessKeyedElement( config.$accessKeyed || this.$element );
+};
+
+/* Setup */
+
+OO.initClass( OO.ui.mixin.AccessKeyedElement );
+
+/* Static Properties */
+
+/**
+ * The access key, a function that returns a key, or `null` for no accesskey.
+ *
+ * @static
+ * @inheritable
+ * @property {string|Function|null}
+ */
+OO.ui.mixin.AccessKeyedElement.static.accessKey = null;
+
+/* Methods */
+
+/**
+ * Set the accesskeyed element.
+ *
+ * This method is used to retarget a AccessKeyedElement mixin so that its functionality applies to the specified element.
+ * If an element is already set, the mixin's effect on that element is removed before the new element is set up.
+ *
+ * @param {jQuery} $accessKeyed Element that should use the 'accesskeyes' functionality
+ */
+OO.ui.mixin.AccessKeyedElement.prototype.setAccessKeyedElement = function ( $accessKeyed ) {
+       if ( this.$accessKeyed ) {
+               this.$accessKeyed.removeAttr( 'accesskey' );
+       }
+
+       this.$accessKeyed = $accessKeyed;
+       if ( this.accessKey ) {
+               this.$accessKeyed.attr( 'accesskey', this.accessKey );
+       }
+};
+
+/**
+ * Set accesskey.
+ *
+ * @param {string|Function|null} accesskey Key, a function that returns a key, or `null` for no accesskey
+ * @chainable
+ */
+OO.ui.mixin.AccessKeyedElement.prototype.setAccessKey = function ( accessKey ) {
+       accessKey = typeof accessKey === 'string' ? OO.ui.resolveMsg( accessKey ) : null;
+
+       if ( this.accessKey !== accessKey ) {
+               if ( this.$accessKeyed ) {
+                       if ( accessKey !== null ) {
+                               this.$accessKeyed.attr( 'accesskey', accessKey );
+                       } else {
+                               this.$accessKeyed.removeAttr( 'accesskey' );
+                       }
+               }
+               this.accessKey = accessKey;
+       }
+
+       return this;
+};
+
+/**
+ * Get accesskey.
+ *
+ * @return {string} accessKey string
+ */
+OO.ui.mixin.AccessKeyedElement.prototype.getAccessKey = function () {
+       return this.accessKey;
+};
+
 /**
  * Tools, together with {@link OO.ui.ToolGroup toolgroups}, constitute {@link OO.ui.Toolbar toolbars}.
  * Each tool is configured with a static name, title, and icon and is customized with the command to carry
@@ -7674,8 +7854,8 @@ OO.ui.ToolGroup.prototype.onMouseKeyDown = function ( e ) {
                this.pressed = this.getTargetTool( e );
                if ( this.pressed ) {
                        this.pressed.setActive( true );
-                       this.getElementDocument().addEventListener( 'mouseup', this.onCapturedMouseKeyUpHandler, true );
-                       this.getElementDocument().addEventListener( 'keyup', this.onCapturedMouseKeyUpHandler, true );
+                       OO.ui.addCaptureEventListener( this.getElementDocument(), 'mouseup', this.onCapturedMouseKeyUpHandler );
+                       OO.ui.addCaptureEventListener( this.getElementDocument(), 'keyup', this.onCapturedMouseKeyUpHandler );
                }
                return false;
        }
@@ -7688,8 +7868,8 @@ OO.ui.ToolGroup.prototype.onMouseKeyDown = function ( e ) {
  * @param {Event} e Mouse up or key up event
  */
 OO.ui.ToolGroup.prototype.onCapturedMouseKeyUp = function ( e ) {
-       this.getElementDocument().removeEventListener( 'mouseup', this.onCapturedMouseKeyUpHandler, true );
-       this.getElementDocument().removeEventListener( 'keyup', this.onCapturedMouseKeyUpHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'mouseup', this.onCapturedMouseKeyUpHandler );
+       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'keyup', this.onCapturedMouseKeyUpHandler );
        // onMouseKeyUp may be called a second time, depending on where the mouse is when the button is
        // released, but since `this.pressed` will no longer be true, the second call will be ignored.
        this.onMouseKeyUp( e );
@@ -8058,6 +8238,26 @@ OO.ui.MessageDialog.prototype.getSetupProcess = function ( data ) {
                }, this );
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.MessageDialog.prototype.getReadyProcess = function ( data ) {
+       data = data || {};
+
+       // Parent method
+       return OO.ui.MessageDialog.parent.prototype.getReadyProcess.call( this, data )
+               .next( function () {
+                       // Focus the primary action button
+                       var actions = this.actions.get();
+                       actions = actions.filter( function ( action ) {
+                               return action.getFlags().indexOf( 'primary' ) > -1;
+                       } );
+                       if ( actions.length > 0 ) {
+                               actions[ 0 ].$button.focus();
+                       }
+               }, this );
+};
+
 /**
  * @inheritdoc
  */
@@ -8137,6 +8337,7 @@ OO.ui.MessageDialog.prototype.attachActions = function () {
 
        special = this.actions.getSpecial();
        others = this.actions.getOthers();
+
        if ( special.safe ) {
                this.$actions.append( special.safe.$element );
                special.safe.toggleFramed( false );
@@ -8492,14 +8693,14 @@ OO.ui.ProcessDialog.prototype.showErrors = function ( errors ) {
        }
        this.$errorItems = $( items );
        if ( recoverable ) {
-               abilities[this.currentAction] = true;
+               abilities[ this.currentAction ] = true;
                // Copy the flags from the first matching action
                actions = this.actions.get( { actions: this.currentAction } );
                if ( actions.length ) {
-                       this.retryButton.clearFlags().setFlags( actions[0].getFlags() );
+                       this.retryButton.clearFlags().setFlags( actions[ 0 ].getFlags() );
                }
        } else {
-               abilities[this.currentAction] = false;
+               abilities[ this.currentAction ] = false;
                this.actions.setAbilities( abilities );
        }
        if ( warning ) {
@@ -8574,16 +8775,24 @@ OO.ui.ProcessDialog.prototype.getTeardownProcess = function ( data ) {
  * @cfg {string|OO.ui.HtmlSnippet} [help] Help text. When help text is specified, a "help" icon will appear
  *  in the upper-right corner of the rendered field; clicking it will display the text in a popup.
  *  For important messages, you are advised to use `notices`, as they are always shown.
+ *
+ * @throws {Error} An error is thrown if no widget is specified
  */
 OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) {
+       var hasInputWidget, div, i;
+
        // Allow passing positional parameters inside the config object
        if ( OO.isPlainObject( fieldWidget ) && config === undefined ) {
                config = fieldWidget;
                fieldWidget = config.fieldWidget;
        }
 
-       var hasInputWidget = fieldWidget.constructor.static.supportsSimpleLabel,
-               div, i;
+       // Make sure we have required constructor arguments
+       if ( fieldWidget === undefined ) {
+               throw new Error( 'Widget not found' );
+       }
+
+       hasInputWidget = fieldWidget.constructor.static.supportsSimpleLabel;
 
        // Configuration initialization
        config = $.extend( { align: 'left' }, config );
@@ -8645,10 +8854,10 @@ OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) {
                .append( this.fieldWidget.$element );
 
        for ( i = 0; i < this.notices.length; i++ ) {
-               this.$messages.append( this.makeMessage( 'notice', this.notices[i] ) );
+               this.$messages.append( this.makeMessage( 'notice', this.notices[ i ] ) );
        }
        for ( i = 0; i < this.errors.length; i++ ) {
-               this.$messages.append( this.makeMessage( 'error', this.errors[i] ) );
+               this.$messages.append( this.makeMessage( 'error', this.errors[ i ] ) );
        }
 
        this.setAlignment( config.align );
@@ -9424,7 +9633,7 @@ OO.ui.BookletLayout.prototype.focusFirstFocusable = function () {
                }
                // Find all potentially focusable elements in the item
                // and check if they are focusable
-               items[i].$element
+               items[ i ].$element
                        .find( 'input, select, textarea, button, object' )
                        /* jshint loopfunc:true */
                        .each( checkAndFocus );
@@ -9495,7 +9704,7 @@ OO.ui.BookletLayout.prototype.toggleOutline = function ( show ) {
 OO.ui.BookletLayout.prototype.getClosestPage = function ( page ) {
        var next, prev, level,
                pages = this.stackLayout.getItems(),
-               index = $.inArray( page, pages );
+               index = pages.indexOf( page );
 
        if ( index !== -1 ) {
                next = pages[ index + 1 ];
@@ -9595,7 +9804,7 @@ OO.ui.BookletLayout.prototype.addPages = function ( pages, index ) {
 
                if ( Object.prototype.hasOwnProperty.call( this.pages, name ) ) {
                        // Correct the insertion index
-                       currentIndex = $.inArray( this.pages[ name ], stackLayoutPages );
+                       currentIndex = stackLayoutPages.indexOf( this.pages[ name ] );
                        if ( currentIndex !== -1 && currentIndex + 1 < index ) {
                                index--;
                        }
@@ -9944,7 +10153,7 @@ OO.ui.IndexLayout.prototype.focusFirstFocusable = function () {
                }
                // Find all potentially focusable elements in the item
                // and check if they are focusable
-               items[i].$element
+               items[ i ].$element
                        .find( 'input, select, textarea, button, object' )
                        .each( checkAndFocus );
        }
@@ -9971,7 +10180,7 @@ OO.ui.IndexLayout.prototype.onTabSelectWidgetSelect = function ( item ) {
 OO.ui.IndexLayout.prototype.getClosestCard = function ( card ) {
        var next, prev, level,
                cards = this.stackLayout.getItems(),
-               index = $.inArray( card, cards );
+               index = cards.indexOf( card );
 
        if ( index !== -1 ) {
                next = cards[ index + 1 ];
@@ -10056,7 +10265,7 @@ OO.ui.IndexLayout.prototype.addCards = function ( cards, index ) {
 
                if ( Object.prototype.hasOwnProperty.call( this.cards, name ) ) {
                        // Correct the insertion index
-                       currentIndex = $.inArray( this.cards[ name ], stackLayoutCards );
+                       currentIndex = stackLayoutCards.indexOf( this.cards[ name ] );
                        if ( currentIndex !== -1 && currentIndex + 1 < index ) {
                                index--;
                        }
@@ -10665,7 +10874,7 @@ OO.ui.StackLayout.prototype.removeItems = function ( items ) {
        // Mixin method
        OO.ui.mixin.GroupElement.prototype.removeItems.call( this, items );
 
-       if ( $.inArray( this.currentItem, items ) !== -1 ) {
+       if ( items.indexOf( this.currentItem ) !== -1 ) {
                if ( this.items.length ) {
                        this.setItem( this.items[ 0 ] );
                } else {
@@ -10705,7 +10914,7 @@ OO.ui.StackLayout.prototype.setItem = function ( item ) {
        if ( item !== this.currentItem ) {
                this.updateHiddenState( this.items, item );
 
-               if ( $.inArray( item, this.items ) !== -1 ) {
+               if ( this.items.indexOf( item ) !== -1 ) {
                        this.currentItem = item;
                        this.emit( 'set', item );
                } else {
@@ -11081,8 +11290,8 @@ OO.ui.PopupToolGroup.prototype.setActive = function ( value ) {
        if ( this.active !== value ) {
                this.active = value;
                if ( value ) {
-                       this.getElementDocument().addEventListener( 'mouseup', this.onBlurHandler, true );
-                       this.getElementDocument().addEventListener( 'keyup', this.onBlurHandler, true );
+                       OO.ui.addCaptureEventListener( this.getElementDocument(), 'mouseup', this.onBlurHandler );
+                       OO.ui.addCaptureEventListener( this.getElementDocument(), 'keyup', this.onBlurHandler );
 
                        this.$clippable.css( 'left', '' );
                        // Try anchoring the popup to the left first
@@ -11110,8 +11319,8 @@ OO.ui.PopupToolGroup.prototype.setActive = function ( value ) {
                                } );
                        }
                } else {
-                       this.getElementDocument().removeEventListener( 'mouseup', this.onBlurHandler, true );
-                       this.getElementDocument().removeEventListener( 'keyup', this.onBlurHandler, true );
+                       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'mouseup', this.onBlurHandler );
+                       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'keyup', this.onBlurHandler );
                        this.$element.removeClass(
                                'oo-ui-popupToolGroup-active oo-ui-popupToolGroup-left  oo-ui-popupToolGroup-right'
                        );
@@ -11275,8 +11484,9 @@ OO.ui.ListToolGroup.prototype.populate = function () {
 };
 
 OO.ui.ListToolGroup.prototype.getExpandCollapseTool = function () {
+       var ExpandCollapseTool;
        if ( this.expandCollapseTool === undefined ) {
-               var ExpandCollapseTool = function () {
+               ExpandCollapseTool = function () {
                        ExpandCollapseTool.parent.apply( this, arguments );
                };
 
@@ -11897,8 +12107,8 @@ OO.ui.OutlineControlsWidget.prototype.setAbilities = function ( abilities ) {
        var ability;
 
        for ( ability in this.abilities ) {
-               if ( abilities[ability] !== undefined ) {
-                       this.abilities[ability] = !!abilities[ability];
+               if ( abilities[ ability ] !== undefined ) {
+                       this.abilities[ ability ] = !!abilities[ ability ];
                }
        }
 
@@ -12093,6 +12303,7 @@ OO.mixinClass( OO.ui.ButtonGroupWidget, OO.ui.mixin.GroupElement );
  * @mixins OO.ui.mixin.TitledElement
  * @mixins OO.ui.mixin.FlaggedElement
  * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixins OO.ui.mixin.AccessKeyedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
@@ -12115,6 +12326,7 @@ OO.ui.ButtonWidget = function OoUiButtonWidget( config ) {
        OO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$button } ) );
        OO.ui.mixin.FlaggedElement.call( this, config );
        OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$button } ) );
+       OO.ui.mixin.AccessKeyedElement.call( this, $.extend( {}, config, { $accessKeyed: this.$button } ) );
 
        // Properties
        this.href = null;
@@ -12144,6 +12356,7 @@ OO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.LabelElement );
 OO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.TitledElement );
 OO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.FlaggedElement );
 OO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.TabIndexedElement );
+OO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.AccessKeyedElement );
 
 /* Methods */
 
@@ -12724,10 +12937,11 @@ OO.ui.CapsuleMultiSelectWidget = function OoUiCapsuleMultiSelectWidget( config )
        // Properties
        this.allowArbitrary = !!config.allowArbitrary;
        this.$overlay = config.$overlay || this.$element;
-       this.menu = new OO.ui.MenuSelectWidget( $.extend(
+       this.menu = new OO.ui.FloatingMenuSelectWidget( $.extend(
                {
                        widget: this,
                        $input: this.$input,
+                       $container: this.$element,
                        filterFromInput: true,
                        disabled: this.isDisabled()
                },
@@ -12847,8 +13061,8 @@ OO.ui.CapsuleMultiSelectWidget.prototype.setItemsFromData = function ( datas ) {
 
                item = null;
                for ( j = 0; j < items.length; j++ ) {
-                       if ( items[j].data === data && items[j].label === label ) {
-                               item = items[j];
+                       if ( items[ j ].data === data && items[ j ].label === label ) {
+                               item = items[ j ];
                                items.splice( j, 1 );
                                break;
                        }
@@ -12935,7 +13149,7 @@ OO.ui.CapsuleMultiSelectWidget.prototype.addItems = function ( items ) {
        } else {
                same = true;
                for ( i = 0, l = oldItems.length; same && i < l; i++ ) {
-                       same = same && this.items[i] === oldItems[i];
+                       same = same && this.items[ i ] === oldItems[ i ];
                }
        }
        if ( !same ) {
@@ -12959,7 +13173,7 @@ OO.ui.CapsuleMultiSelectWidget.prototype.removeItems = function ( items ) {
        } else {
                same = true;
                for ( i = 0, l = oldItems.length; same && i < l; i++ ) {
-                       same = same && this.items[i] === oldItems[i];
+                       same = same && this.items[ i ] === oldItems[ i ];
                }
        }
        if ( !same ) {
@@ -13039,7 +13253,7 @@ OO.ui.CapsuleMultiSelectWidget.prototype.onPopupFocusOut = function () {
        setTimeout( function () {
                if (
                        widget.isVisible() &&
-                       !OO.ui.contains( widget.$element[0], document.activeElement, true ) &&
+                       !OO.ui.contains( widget.$element[ 0 ], document.activeElement, true ) &&
                        ( !widget.$autoCloseIgnore || !widget.$autoCloseIgnore.has( document.activeElement ).length )
                ) {
                        widget.toggle( false );
@@ -13186,7 +13400,7 @@ OO.ui.CapsuleMultiSelectWidget.prototype.setDisabled = function ( disabled ) {
 
        if ( this.items ) {
                for ( i = 0, len = this.items.length; i < len; i++ ) {
-                       this.items[i].updateDisabled();
+                       this.items[ i ].updateDisabled();
                }
        }
 
@@ -13346,7 +13560,10 @@ OO.ui.CapsuleItemWidget.prototype.onCloseKeyDown = function ( e ) {
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object} [menu] Configuration options to pass to menu widget
+ * @cfg {Object} [menu] Configuration options to pass to {@link OO.ui.FloatingMenuSelectWidget menu select widget}
+ * @cfg {jQuery} [$overlay] Render the menu into a separate layer. This configuration is useful in cases where
+ *  the expanded menu is larger than its containing `<div>`. The specified overlay layer is usually on top of the
+ *  containing `<div>` and has a larger area. By default, the menu uses relative positioning.
  */
 OO.ui.DropdownWidget = function OoUiDropdownWidget( config ) {
        // Configuration initialization
@@ -13357,6 +13574,7 @@ OO.ui.DropdownWidget = function OoUiDropdownWidget( config ) {
 
        // Properties (must be set before TabIndexedElement constructor call)
        this.$handle = this.$( '<span>' );
+       this.$overlay = config.$overlay || this.$element;
 
        // Mixin constructors
        OO.ui.mixin.IconElement.call( this, config );
@@ -13366,7 +13584,10 @@ OO.ui.DropdownWidget = function OoUiDropdownWidget( config ) {
        OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$handle } ) );
 
        // Properties
-       this.menu = new OO.ui.MenuSelectWidget( $.extend( { widget: this }, config.menu ) );
+       this.menu = new OO.ui.FloatingMenuSelectWidget( $.extend( {
+               widget: this,
+               $container: this.$element
+       }, config.menu ) );
 
        // Events
        this.$handle.on( {
@@ -13381,7 +13602,8 @@ OO.ui.DropdownWidget = function OoUiDropdownWidget( config ) {
                .append( this.$icon, this.$label, this.$indicator );
        this.$element
                .addClass( 'oo-ui-dropdownWidget' )
-               .append( this.$handle, this.menu.$element );
+               .append( this.$handle );
+       this.$overlay.append( this.menu.$element );
 };
 
 /* Setup */
@@ -13483,16 +13705,21 @@ OO.ui.DropdownWidget.prototype.onKeyPress = function ( e ) {
  * @cfg {string} [placeholder] Text to display when no file is selected.
  * @cfg {string} [notsupported] Text to display when file support is missing in the browser.
  * @cfg {boolean} [droppable=true] Whether to accept files by drag and drop.
+ * @cfg {boolean} [dragDropUI=false] Whether to render the drag and drop UI.
  */
 OO.ui.SelectFileWidget = function OoUiSelectFileWidget( config ) {
-       var dragHandler;
+       var dragHandler,
+               placeholderMsg = ( config && config.dragDropUI ) ?
+                       'ooui-selectfile-dragdrop-placeholder' :
+                       'ooui-selectfile-placeholder';
 
        // Configuration initialization
        config = $.extend( {
                accept: null,
-               placeholder: OO.ui.msg( 'ooui-selectfile-placeholder' ),
+               placeholder: OO.ui.msg( placeholderMsg ),
                notsupported: OO.ui.msg( 'ooui-selectfile-not-supported' ),
-               droppable: true
+               droppable: true,
+               dragDropUI: false
        }, config );
 
        // Parent constructor
@@ -13509,6 +13736,8 @@ OO.ui.SelectFileWidget = function OoUiSelectFileWidget( config ) {
        OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$handle } ) );
 
        // Properties
+       this.active = false;
+       this.dragDropUI = config.dragDropUI;
        this.isSupported = this.constructor.static.isSupported();
        this.currentFile = null;
        if ( Array.isArray( config.accept ) ) {
@@ -13555,7 +13784,15 @@ OO.ui.SelectFileWidget = function OoUiSelectFileWidget( config ) {
                .addClass( 'oo-ui-selectFileWidget' )
                .append( this.$handle );
        if ( config.droppable ) {
-               this.$element.addClass( 'oo-ui-selectFileWidget-droppable' );
+               if ( config.dragDropUI ) {
+                       this.$element.addClass( 'oo-ui-selectFileWidget-dragdrop-ui' );
+                       this.$element.on( {
+                               mouseover: this.onMouseOver.bind( this ),
+                               mouseleave: this.onMouseLeave.bind( this )
+                       } );
+               } else {
+                       this.$element.addClass( 'oo-ui-selectFileWidget-droppable' );
+               }
        }
 };
 
@@ -13580,7 +13817,7 @@ OO.ui.SelectFileWidget.static.isSupported = function () {
        var $input;
        if ( OO.ui.SelectFileWidget.static.isSupportedCache === null ) {
                $input = $( '<input type="file">' );
-               OO.ui.SelectFileWidget.static.isSupportedCache = $input[0].files !== undefined;
+               OO.ui.SelectFileWidget.static.isSupportedCache = $input[ 0 ].files !== undefined;
        }
        return OO.ui.SelectFileWidget.static.isSupportedCache;
 };
@@ -13689,7 +13926,7 @@ OO.ui.SelectFileWidget.prototype.isFileAcceptable = function ( file ) {
 
        mime = file.type;
        for ( i = 0; i < this.accept.length; i++ ) {
-               mimeTest = this.accept[i];
+               mimeTest = this.accept[ i ];
                if ( mimeTest === mime ) {
                        return true;
                } else if ( mimeTest.substr( -2 ) === '/*' ) {
@@ -13712,8 +13949,8 @@ OO.ui.SelectFileWidget.prototype.isFileAcceptable = function ( file ) {
 OO.ui.SelectFileWidget.prototype.onFileSelected = function ( e ) {
        var file = null;
 
-       if ( e.target.files && e.target.files[0] ) {
-               file = e.target.files[0];
+       if ( e.target.files && e.target.files[ 0 ] ) {
+               file = e.target.files[ 0 ];
                if ( !this.isFileAcceptable( file ) ) {
                        file = null;
                }
@@ -13763,16 +14000,17 @@ OO.ui.SelectFileWidget.prototype.onDragEnterOrOver = function ( e ) {
 
        if ( this.isDisabled() || !this.isSupported ) {
                this.$element.removeClass( 'oo-ui-selectFileWidget-canDrop' );
+               this.setActive( false );
                dt.dropEffect = 'none';
                return false;
        }
 
-       if ( dt && dt.files && dt.files[0] ) {
-               file = dt.files[0];
+       if ( dt && dt.files && dt.files[ 0 ] ) {
+               file = dt.files[ 0 ];
                if ( !this.isFileAcceptable( file ) ) {
                        file = null;
                }
-       } else if ( dt && dt.types && $.inArray( 'Files', dt.types ) ) {
+       } else if ( dt && dt.types && dt.types.indexOf( 'Files' ) !== -1 ) {
                // We know we have files so set 'file' to something truthy, we just
                // can't know any details about them.
                // * https://bugzilla.mozilla.org/show_bug.cgi?id=640534
@@ -13780,8 +14018,10 @@ OO.ui.SelectFileWidget.prototype.onDragEnterOrOver = function ( e ) {
        }
        if ( file ) {
                this.$element.addClass( 'oo-ui-selectFileWidget-canDrop' );
+               this.setActive( true );
        } else {
                this.$element.removeClass( 'oo-ui-selectFileWidget-canDrop' );
+               this.setActive( false );
                dt.dropEffect = 'none';
        }
 
@@ -13796,6 +14036,7 @@ OO.ui.SelectFileWidget.prototype.onDragEnterOrOver = function ( e ) {
  */
 OO.ui.SelectFileWidget.prototype.onDragLeave = function () {
        this.$element.removeClass( 'oo-ui-selectFileWidget-canDrop' );
+       this.setActive( false );
 };
 
 /**
@@ -13811,13 +14052,14 @@ OO.ui.SelectFileWidget.prototype.onDrop = function ( e ) {
        e.preventDefault();
        e.stopPropagation();
        this.$element.removeClass( 'oo-ui-selectFileWidget-canDrop' );
+       this.setActive( false );
 
        if ( this.isDisabled() || !this.isSupported ) {
                return false;
        }
 
-       if ( dt && dt.files && dt.files[0] ) {
-               file = dt.files[0];
+       if ( dt && dt.files && dt.files[ 0 ] ) {
+               file = dt.files[ 0 ];
                if ( !this.isFileAcceptable( file ) ) {
                        file = null;
                }
@@ -13829,6 +14071,26 @@ OO.ui.SelectFileWidget.prototype.onDrop = function ( e ) {
        return false;
 };
 
+/**
+ * Handle mouse over events.
+ *
+ * @private
+ * @param {jQuery.Event} e Mouse over event
+ */
+OO.ui.SelectFileWidget.prototype.onMouseOver = function () {
+       this.setActive( true );
+};
+
+/**
+ * Handle mouse leave events.
+ *
+ * @private
+ * @param {jQuery.Event} e Mouse over event
+ */
+OO.ui.SelectFileWidget.prototype.onMouseLeave = function () {
+       this.setActive( false );
+};
+
 /**
  * @inheritdoc
  */
@@ -13840,6 +14102,20 @@ OO.ui.SelectFileWidget.prototype.setDisabled = function ( state ) {
        return this;
 };
 
+/**
+ * Set 'active' (hover) state, only matters for widgets with `dragDropUI: true`.
+ *
+ * @param {boolean} value Whether widget is active
+ * @chainable
+ */
+OO.ui.SelectFileWidget.prototype.setActive = function ( value ) {
+       if ( this.dragDropUI ) {
+               this.active = value;
+               this.updateThemeClasses();
+       }
+       return this;
+};
+
 /**
  * IconWidget is a generic widget for {@link OO.ui.mixin.IconElement icons}. In general, IconWidgets should be used with OO.ui.LabelWidget,
  * which creates a label that identifies the icon’s function. See the [OOjs UI documentation on MediaWiki] [1]
@@ -13961,11 +14237,14 @@ OO.ui.IndicatorWidget.static.tagName = 'span';
  * @extends OO.ui.Widget
  * @mixins OO.ui.mixin.FlaggedElement
  * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixins OO.ui.mixin.TitledElement
+ * @mixins OO.ui.mixin.AccessKeyedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
  * @cfg {string} [name=''] The value of the input’s HTML `name` attribute.
  * @cfg {string} [value=''] The value of the input.
+ * @cfg {string} [accessKey=''] The access key of the input.
  * @cfg {Function} [inputFilter] The name of an input filter function. Input filters modify the value of an input
  *  before it is accepted.
  */
@@ -13984,6 +14263,8 @@ OO.ui.InputWidget = function OoUiInputWidget( config ) {
        // Mixin constructors
        OO.ui.mixin.FlaggedElement.call( this, config );
        OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$input } ) );
+       OO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$input } ) );
+       OO.ui.mixin.AccessKeyedElement.call( this, $.extend( {}, config, { $accessKeyed: this.$input } ) );
 
        // Events
        this.$input.on( 'keydown mouseup cut paste change input select', this.onEdit.bind( this ) );
@@ -13997,6 +14278,7 @@ OO.ui.InputWidget = function OoUiInputWidget( config ) {
                .addClass( 'oo-ui-inputWidget' )
                .append( this.$input );
        this.setValue( config.value );
+       this.setAccessKey( config.accessKey );
 };
 
 /* Setup */
@@ -14004,6 +14286,8 @@ OO.ui.InputWidget = function OoUiInputWidget( config ) {
 OO.inheritClass( OO.ui.InputWidget, OO.ui.Widget );
 OO.mixinClass( OO.ui.InputWidget, OO.ui.mixin.FlaggedElement );
 OO.mixinClass( OO.ui.InputWidget, OO.ui.mixin.TabIndexedElement );
+OO.mixinClass( OO.ui.InputWidget, OO.ui.mixin.TitledElement );
+OO.mixinClass( OO.ui.InputWidget, OO.ui.mixin.AccessKeyedElement );
 
 /* Static Properties */
 
@@ -14097,6 +14381,30 @@ OO.ui.InputWidget.prototype.setValue = function ( value ) {
        return this;
 };
 
+/**
+ * Set the input's access key.
+ * FIXME: This is the same code as in OO.ui.mixin.ButtonElement, maybe find a better place for it?
+ *
+ * @param {string} accessKey Input's access key, use empty string to remove
+ * @chainable
+ */
+OO.ui.InputWidget.prototype.setAccessKey = function ( accessKey ) {
+       accessKey = typeof accessKey === 'string' && accessKey.length ? accessKey : null;
+
+       if ( this.accessKey !== accessKey ) {
+               if ( this.$input ) {
+                       if ( accessKey !== null ) {
+                               this.$input.attr( 'accesskey', accessKey );
+                       } else {
+                               this.$input.removeAttr( 'accesskey' );
+                       }
+               }
+               this.accessKey = accessKey;
+       }
+
+       return this;
+};
+
 /**
  * Clean up incoming value.
  *
@@ -14489,13 +14797,14 @@ OO.ui.CheckboxInputWidget.prototype.restorePreInfuseState = function ( state ) {
  * @constructor
  * @param {Object} [config] Configuration options
  * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: …, label: … }`
+ * @cfg {Object} [dropdown] Configuration options for {@link OO.ui.DropdownWidget DropdownWidget}
  */
 OO.ui.DropdownInputWidget = function OoUiDropdownInputWidget( config ) {
        // Configuration initialization
        config = config || {};
 
        // Properties (must be done before parent constructor which calls #setDisabled)
-       this.dropdownWidget = new OO.ui.DropdownWidget();
+       this.dropdownWidget = new OO.ui.DropdownWidget( config.dropdown );
 
        // Parent constructor
        OO.ui.DropdownInputWidget.parent.call( this, config );
@@ -14924,7 +15233,7 @@ OO.ui.RadioSelectInputWidget.prototype.gatherPreInfuseState = function ( node )
  *  pattern defined by the class: 'non-empty' (the value cannot be an empty string) or 'integer'
  *  (the value must contain only numbers); when RegExp, a regular expression that must match the
  *  value for it to be considered valid; when Function, a function receiving the value as parameter
- *  that must return true, or promise that resolves, for it to be considered valid.
+ *  that must return true, or promise resolving to true, for it to be considered valid.
  */
 OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
        // Configuration initialization
@@ -15185,7 +15494,7 @@ OO.ui.TextInputWidget.prototype.installParentChangeDetector = function () {
                }
 
                // Find topmost node in the tree
-               topmostNode = this.$element[0];
+               topmostNode = this.$element[ 0 ];
                while ( topmostNode.parentNode ) {
                        topmostNode = topmostNode.parentNode;
                }
@@ -15219,7 +15528,7 @@ OO.ui.TextInputWidget.prototype.installParentChangeDetector = function () {
                };
 
                // Create a fake parent and observe it
-               fakeParentNode = $( '<div>' ).append( topmostNode )[0];
+               fakeParentNode = $( '<div>' ).append( topmostNode )[ 0 ];
                mutationObserver.observe( fakeParentNode, { childList: true } );
        } else {
                // Using the DOMNodeInsertedIntoDocument event is much nicer and less magical, and works for
@@ -15333,6 +15642,23 @@ OO.ui.TextInputWidget.prototype.select = function () {
        return this;
 };
 
+/**
+ * Focus the input and move the cursor to the end.
+ */
+OO.ui.TextInputWidget.prototype.moveCursorToEnd = function () {
+       var textRange,
+               element = this.$input[ 0 ];
+       this.focus();
+       if ( element.selectionStart !== undefined ) {
+               element.selectionStart = element.selectionEnd = element.value.length;
+       } else if ( element.createTextRange ) {
+               // IE 8 and below
+               textRange = element.createTextRange();
+               textRange.collapse( false );
+               textRange.select();
+       }
+};
+
 /**
  * Set the validation pattern.
  *
@@ -15388,8 +15714,10 @@ OO.ui.TextInputWidget.prototype.setValidityFlag = function ( isValid ) {
  * @return {jQuery.Promise} A promise that resolves to a boolean `true` if the value is valid.
  */
 OO.ui.TextInputWidget.prototype.isValid = function () {
+       var result;
+
        if ( this.validate instanceof Function ) {
-               var result = this.validate( this.getValue() );
+               result = this.validate( this.getValue() );
                if ( $.isFunction( result.promise ) ) {
                        return result.promise();
                } else {
@@ -15505,6 +15833,7 @@ OO.ui.TextInputWidget.prototype.updateSearchIndicator = function () {
  * @chainable
  */
 OO.ui.TextInputWidget.prototype.positionLabel = function () {
+       var after, rtl, property;
        // Clear old values
        this.$input
                // Clear old values if present
@@ -15520,9 +15849,9 @@ OO.ui.TextInputWidget.prototype.positionLabel = function () {
                return;
        }
 
-       var after = this.labelPosition === 'after',
-               rtl = this.$element.css( 'direction' ) === 'rtl',
-               property = after === rtl ? 'padding-left' : 'padding-right';
+       after = this.labelPosition === 'after';
+       rtl = this.$element.css( 'direction' ) === 'rtl';
+       property = after === rtl ? 'padding-left' : 'padding-right';
 
        this.$input.css( property, this.$label.outerWidth( true ) );
 
@@ -15605,7 +15934,7 @@ OO.ui.TextInputWidget.prototype.restorePreInfuseState = function ( state ) {
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object} [menu] Configuration options to pass to the {@link OO.ui.MenuSelectWidget menu select widget}.
+ * @cfg {Object} [menu] Configuration options to pass to the {@link OO.ui.FloatingMenuSelectWidget menu select widget}.
  * @cfg {Object} [input] Configuration options to pass to the {@link OO.ui.TextInputWidget text input widget}.
  * @cfg {jQuery} [$overlay] Render the menu into a separate layer. This configuration is useful in cases where
  *  the expanded menu is larger than its containing `<div>`. The specified overlay layer is usually on top of the
@@ -15638,10 +15967,11 @@ OO.ui.ComboBoxWidget = function OoUiComboBoxWidget( config ) {
                role: 'combobox',
                'aria-autocomplete': 'list'
        } );
-       this.menu = new OO.ui.TextInputMenuSelectWidget( this.input, $.extend(
+       this.menu = new OO.ui.FloatingMenuSelectWidget( $.extend(
                {
                        widget: this,
                        input: this.input,
+                       $container: this.input.$element,
                        disabled: this.isDisabled()
                },
                config.menu
@@ -15677,7 +16007,7 @@ OO.mixinClass( OO.ui.ComboBoxWidget, OO.ui.mixin.TabIndexedElement );
 
 /**
  * Get the combobox's menu.
- * @return {OO.ui.TextInputMenuSelectWidget} Menu widget
+ * @return {OO.ui.FloatingMenuSelectWidget} Menu widget
  */
 OO.ui.ComboBoxWidget.prototype.getMenu = function () {
        return this.menu;
@@ -16124,6 +16454,7 @@ OO.mixinClass( OO.ui.DecoratedOptionWidget, OO.ui.mixin.IndicatorElement );
  * @extends OO.ui.DecoratedOptionWidget
  * @mixins OO.ui.mixin.ButtonElement
  * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixins OO.ui.mixin.TitledElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
@@ -16137,6 +16468,7 @@ OO.ui.ButtonOptionWidget = function OoUiButtonOptionWidget( config ) {
 
        // Mixin constructors
        OO.ui.mixin.ButtonElement.call( this, config );
+       OO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$button } ) );
        OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, {
                $tabIndexed: this.$button,
                tabIndex: -1
@@ -16152,6 +16484,7 @@ OO.ui.ButtonOptionWidget = function OoUiButtonOptionWidget( config ) {
 
 OO.inheritClass( OO.ui.ButtonOptionWidget, OO.ui.DecoratedOptionWidget );
 OO.mixinClass( OO.ui.ButtonOptionWidget, OO.ui.mixin.ButtonElement );
+OO.mixinClass( OO.ui.ButtonOptionWidget, OO.ui.mixin.TitledElement );
 OO.mixinClass( OO.ui.ButtonOptionWidget, OO.ui.mixin.TabIndexedElement );
 
 /* Static Properties */
@@ -16556,6 +16889,7 @@ OO.ui.TabOptionWidget.static.highlightable = false;
  *  [3]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Popups#containerExample
  * @cfg {number} [containerPadding=10] Padding between the popup and its container, specified as a number of pixels.
  * @cfg {jQuery} [$content] Content to append to the popup's body
+ * @cfg {jQuery} [$footer] Content to append to the popup's footer
  * @cfg {boolean} [autoClose=false] Automatically close the popup when it loses focus.
  * @cfg {jQuery} [$autoCloseIgnore] Elements that will not close the popup when clicked.
  *  This config option is only relevant if #autoClose is set to `true`. See the [OOjs UI docs on MediaWiki][2]
@@ -16574,14 +16908,18 @@ OO.ui.PopupWidget = function OoUiPopupWidget( config ) {
 
        // Properties (must be set before ClippableElement constructor call)
        this.$body = $( '<div>' );
+       this.$popup = $( '<div>' );
 
        // Mixin constructors
        OO.ui.mixin.LabelElement.call( this, config );
-       OO.ui.mixin.ClippableElement.call( this, $.extend( {}, config, { $clippable: this.$body } ) );
+       OO.ui.mixin.ClippableElement.call( this, $.extend( {}, config, {
+               $clippable: this.$body,
+               $clippableContainer: this.$popup
+       } ) );
 
        // Properties
-       this.$popup = $( '<div>' );
        this.$head = $( '<div>' );
+       this.$footer = $( '<div>' );
        this.$anchor = $( '<div>' );
        // If undefined, will be computed lazily in updateDimensions()
        this.$container = config.$container;
@@ -16607,12 +16945,16 @@ OO.ui.PopupWidget = function OoUiPopupWidget( config ) {
        this.$head
                .addClass( 'oo-ui-popupWidget-head' )
                .append( this.$label, this.closeButton.$element );
+       this.$footer.addClass( 'oo-ui-popupWidget-footer' );
        if ( !config.head ) {
                this.$head.addClass( 'oo-ui-element-hidden' );
        }
+       if ( !config.$footer ) {
+               this.$footer.addClass( 'oo-ui-element-hidden' );
+       }
        this.$popup
                .addClass( 'oo-ui-popupWidget-popup' )
-               .append( this.$head, this.$body );
+               .append( this.$head, this.$body, this.$footer );
        this.$element
                .addClass( 'oo-ui-popupWidget' )
                .append( this.$popup, this.$anchor );
@@ -16620,6 +16962,9 @@ OO.ui.PopupWidget = function OoUiPopupWidget( config ) {
        if ( config.$content instanceof jQuery ) {
                this.$body.append( config.$content );
        }
+       if ( config.$footer instanceof jQuery ) {
+               this.$footer.append( config.$footer );
+       }
        if ( config.padded ) {
                this.$body.addClass( 'oo-ui-popupWidget-body-padded' );
        }
@@ -16662,7 +17007,7 @@ OO.ui.PopupWidget.prototype.onMouseDown = function ( e ) {
  */
 OO.ui.PopupWidget.prototype.bindMouseDownListener = function () {
        // Capture clicks outside popup
-       this.getElementWindow().addEventListener( 'mousedown', this.onMouseDownHandler, true );
+       OO.ui.addCaptureEventListener( this.getElementWindow(), 'mousedown', this.onMouseDownHandler );
 };
 
 /**
@@ -16682,7 +17027,7 @@ OO.ui.PopupWidget.prototype.onCloseButtonClick = function () {
  * @private
  */
 OO.ui.PopupWidget.prototype.unbindMouseDownListener = function () {
-       this.getElementWindow().removeEventListener( 'mousedown', this.onMouseDownHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementWindow(), 'mousedown', this.onMouseDownHandler );
 };
 
 /**
@@ -16708,7 +17053,7 @@ OO.ui.PopupWidget.prototype.onDocumentKeyDown = function ( e ) {
  * @private
  */
 OO.ui.PopupWidget.prototype.bindKeyDownListener = function () {
-       this.getElementWindow().addEventListener( 'keydown', this.onDocumentKeyDownHandler, true );
+       OO.ui.addCaptureEventListener( this.getElementWindow(), 'keydown', this.onDocumentKeyDownHandler );
 };
 
 /**
@@ -16717,7 +17062,7 @@ OO.ui.PopupWidget.prototype.bindKeyDownListener = function () {
  * @private
  */
 OO.ui.PopupWidget.prototype.unbindKeyDownListener = function () {
-       this.getElementWindow().removeEventListener( 'keydown', this.onDocumentKeyDownHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementWindow(), 'keydown', this.onDocumentKeyDownHandler );
 };
 
 /**
@@ -16751,9 +17096,10 @@ OO.ui.PopupWidget.prototype.hasAnchor = function () {
  * @inheritdoc
  */
 OO.ui.PopupWidget.prototype.toggle = function ( show ) {
+       var change;
        show = show === undefined ? !this.isVisible() : !!show;
 
-       var change = show !== this.isVisible();
+       change = show !== this.isVisible();
 
        // Parent method
        OO.ui.PopupWidget.parent.prototype.toggle.call( this, show );
@@ -17011,7 +17357,7 @@ OO.ui.ProgressBarWidget.prototype.setProgress = function ( progress ) {
 
 /**
  * SearchWidgets combine a {@link OO.ui.TextInputWidget text input field}, where users can type a search query,
- * and a {@link OO.ui.TextInputMenuSelectWidget menu} of search results, which is displayed beneath the query
+ * and a menu of search results, which is displayed beneath the query
  * field. Unlike {@link OO.ui.mixin.LookupElement lookup menus}, search result menus are always visible to the user.
  * Users can choose an item from the menu or type a query into the text field to search for a matching result item.
  * In general, search widgets are used inside a separate {@link OO.ui.Dialog dialog} window.
@@ -17299,15 +17645,15 @@ OO.ui.SelectWidget.prototype.onMouseDown = function ( e ) {
                if ( item && item.isSelectable() ) {
                        this.pressItem( item );
                        this.selecting = item;
-                       this.getElementDocument().addEventListener(
+                       OO.ui.addCaptureEventListener(
+                               this.getElementDocument(),
                                'mouseup',
-                               this.onMouseUpHandler,
-                               true
+                               this.onMouseUpHandler
                        );
-                       this.getElementDocument().addEventListener(
+                       OO.ui.addCaptureEventListener(
+                               this.getElementDocument(),
                                'mousemove',
-                               this.onMouseMoveHandler,
-                               true
+                               this.onMouseMoveHandler
                        );
                }
        }
@@ -17336,16 +17682,10 @@ OO.ui.SelectWidget.prototype.onMouseUp = function ( e ) {
                this.selecting = null;
        }
 
-       this.getElementDocument().removeEventListener(
-               'mouseup',
-               this.onMouseUpHandler,
-               true
-       );
-       this.getElementDocument().removeEventListener(
-               'mousemove',
-               this.onMouseMoveHandler,
-               true
-       );
+       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'mouseup',
+               this.onMouseUpHandler );
+       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'mousemove',
+               this.onMouseMoveHandler );
 
        return false;
 };
@@ -17465,7 +17805,7 @@ OO.ui.SelectWidget.prototype.onKeyDown = function ( e ) {
  * @protected
  */
 OO.ui.SelectWidget.prototype.bindKeyDownListener = function () {
-       this.getElementWindow().addEventListener( 'keydown', this.onKeyDownHandler, true );
+       OO.ui.addCaptureEventListener( this.getElementWindow(), 'keydown', this.onKeyDownHandler );
 };
 
 /**
@@ -17474,7 +17814,7 @@ OO.ui.SelectWidget.prototype.bindKeyDownListener = function () {
  * @protected
  */
 OO.ui.SelectWidget.prototype.unbindKeyDownListener = function () {
-       this.getElementWindow().removeEventListener( 'keydown', this.onKeyDownHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementWindow(), 'keydown', this.onKeyDownHandler );
 };
 
 /**
@@ -17583,7 +17923,7 @@ OO.ui.SelectWidget.prototype.getItemMatcher = function ( s, exact ) {
  * @protected
  */
 OO.ui.SelectWidget.prototype.bindKeyPressListener = function () {
-       this.getElementWindow().addEventListener( 'keypress', this.onKeyPressHandler, true );
+       OO.ui.addCaptureEventListener( this.getElementWindow(), 'keypress', this.onKeyPressHandler );
 };
 
 /**
@@ -17595,7 +17935,7 @@ OO.ui.SelectWidget.prototype.bindKeyPressListener = function () {
  * @protected
  */
 OO.ui.SelectWidget.prototype.unbindKeyPressListener = function () {
-       this.getElementWindow().removeEventListener( 'keypress', this.onKeyPressHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementWindow(), 'keypress', this.onKeyPressHandler );
        this.clearKeyPressBuffer();
 };
 
@@ -17714,7 +18054,7 @@ OO.ui.SelectWidget.prototype.getItemFromLabel = function ( label, prefix ) {
                filter = this.getItemMatcher( label, true );
 
        for ( i = 0; i < len; i++ ) {
-               item = this.items[i];
+               item = this.items[ i ];
                if ( item instanceof OO.ui.OptionWidget && item.isSelectable() && filter( item ) ) {
                        return item;
                }
@@ -17724,7 +18064,7 @@ OO.ui.SelectWidget.prototype.getItemFromLabel = function ( label, prefix ) {
                found = null;
                filter = this.getItemMatcher( label, false );
                for ( i = 0; i < len; i++ ) {
-                       item = this.items[i];
+                       item = this.items[ i ];
                        if ( item instanceof OO.ui.OptionWidget && item.isSelectable() && filter( item ) ) {
                                if ( found ) {
                                        return null;
@@ -17871,7 +18211,7 @@ OO.ui.SelectWidget.prototype.getRelativeSelectableItem = function ( item, direct
        }
 
        if ( item instanceof OO.ui.OptionWidget ) {
-               currentIndex = $.inArray( item, this.items );
+               currentIndex = this.items.indexOf( item );
                nextIndex = ( currentIndex + increase + len ) % len;
        } else {
                // If no item is selected and moving forward, start at the beginning.
@@ -18241,7 +18581,7 @@ OO.ui.MenuSelectWidget.prototype.updateItemVisibility = function () {
                filter = showAll ? null : this.getItemMatcher( this.$input.val() );
 
        for ( i = 0; i < len; i++ ) {
-               item = this.items[i];
+               item = this.items[ i ];
                if ( item instanceof OO.ui.OptionWidget ) {
                        item.toggle( showAll || filter( item ) );
                }
@@ -18376,10 +18716,10 @@ OO.ui.MenuSelectWidget.prototype.clearItems = function () {
  * @inheritdoc
  */
 OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
-       visible = ( visible === undefined ? !this.visible : !!visible ) && !!this.items.length;
+       var i, len, change;
 
-       var i, len,
-               change = visible !== this.isVisible();
+       visible = ( visible === undefined ? !this.visible : !!visible ) && !!this.items.length;
+       change = visible !== this.isVisible();
 
        // Parent method
        OO.ui.MenuSelectWidget.parent.prototype.toggle.call( this, visible );
@@ -18399,16 +18739,12 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
 
                        // Auto-hide
                        if ( this.autoHide ) {
-                               this.getElementDocument().addEventListener(
-                                       'mousedown', this.onDocumentMouseDownHandler, true
-                               );
+                               OO.ui.addCaptureEventListener( this.getElementDocument(), 'mousedown', this.onDocumentMouseDownHandler );
                        }
                } else {
                        this.unbindKeyDownListener();
                        this.unbindKeyPressListener();
-                       this.getElementDocument().removeEventListener(
-                               'mousedown', this.onDocumentMouseDownHandler, true
-                       );
+                       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'mousedown', this.onDocumentMouseDownHandler );
                        this.toggleClipping( false );
                }
        }
@@ -18417,21 +18753,27 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
 };
 
 /**
- * TextInputMenuSelectWidget is a menu that is specially designed to be positioned beneath
- * a {@link OO.ui.TextInputWidget text input} field. The menu's position is automatically
- * calculated and maintained when the menu is toggled or the window is resized.
+ * FloatingMenuSelectWidget is a menu that will stick under a specified
+ * container, even when it is inserted elsewhere in the document (for example,
+ * in a OO.ui.Window's $overlay). This is sometimes necessary to prevent the
+ * menu from being clipped too aggresively.
+ *
+ * The menu's position is automatically calculated and maintained when the menu
+ * is toggled or the window is resized.
+ *
  * See OO.ui.ComboBoxWidget for an example of a widget that uses this class.
  *
  * @class
  * @extends OO.ui.MenuSelectWidget
  *
  * @constructor
- * @param {OO.ui.TextInputWidget} inputWidget Text input widget to provide menu for
+ * @param {OO.ui.Widget} [inputWidget] Widget to provide the menu for.
+ *   Deprecated, omit this parameter and specify `$container` instead.
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$container=input.$element] Element to render menu under
+ * @cfg {jQuery} [$container=inputWidget.$element] Element to render menu under
  */
-OO.ui.TextInputMenuSelectWidget = function OoUiTextInputMenuSelectWidget( inputWidget, config ) {
-       // Allow passing positional parameters inside the config object
+OO.ui.FloatingMenuSelectWidget = function OoUiFloatingMenuSelectWidget( inputWidget, config ) {
+       // Allow 'inputWidget' parameter and config for backwards compatibility
        if ( OO.isPlainObject( inputWidget ) && config === undefined ) {
                config = inputWidget;
                inputWidget = config.inputWidget;
@@ -18441,20 +18783,25 @@ OO.ui.TextInputMenuSelectWidget = function OoUiTextInputMenuSelectWidget( inputW
        config = config || {};
 
        // Parent constructor
-       OO.ui.TextInputMenuSelectWidget.parent.call( this, config );
+       OO.ui.FloatingMenuSelectWidget.parent.call( this, config );
 
        // Properties
-       this.inputWidget = inputWidget;
+       this.inputWidget = inputWidget; // For backwards compatibility
        this.$container = config.$container || this.inputWidget.$element;
        this.onWindowResizeHandler = this.onWindowResize.bind( this );
 
        // Initialization
+       this.$element.addClass( 'oo-ui-floatingMenuSelectWidget' );
+       // For backwards compatibility
        this.$element.addClass( 'oo-ui-textInputMenuSelectWidget' );
 };
 
 /* Setup */
 
-OO.inheritClass( OO.ui.TextInputMenuSelectWidget, OO.ui.MenuSelectWidget );
+OO.inheritClass( OO.ui.FloatingMenuSelectWidget, OO.ui.MenuSelectWidget );
+
+// For backwards compatibility
+OO.ui.TextInputMenuSelectWidget = OO.ui.FloatingMenuSelectWidget;
 
 /* Methods */
 
@@ -18464,17 +18811,18 @@ OO.inheritClass( OO.ui.TextInputMenuSelectWidget, OO.ui.MenuSelectWidget );
  * @private
  * @param {jQuery.Event} e Window resize event
  */
-OO.ui.TextInputMenuSelectWidget.prototype.onWindowResize = function () {
+OO.ui.FloatingMenuSelectWidget.prototype.onWindowResize = function () {
        this.position();
 };
 
 /**
  * @inheritdoc
  */
-OO.ui.TextInputMenuSelectWidget.prototype.toggle = function ( visible ) {
+OO.ui.FloatingMenuSelectWidget.prototype.toggle = function ( visible ) {
+       var change;
        visible = visible === undefined ? !this.isVisible() : !!visible;
 
-       var change = visible !== this.isVisible();
+       change = visible !== this.isVisible();
 
        if ( change && visible ) {
                // Make sure the width is set before the parent method runs.
@@ -18484,7 +18832,7 @@ OO.ui.TextInputMenuSelectWidget.prototype.toggle = function ( visible ) {
        }
 
        // Parent method
-       OO.ui.TextInputMenuSelectWidget.parent.prototype.toggle.call( this, visible );
+       OO.ui.FloatingMenuSelectWidget.parent.prototype.toggle.call( this, visible );
 
        if ( change ) {
                if ( this.isVisible() ) {
@@ -18504,7 +18852,7 @@ OO.ui.TextInputMenuSelectWidget.prototype.toggle = function ( visible ) {
  * @private
  * @chainable
  */
-OO.ui.TextInputMenuSelectWidget.prototype.position = function () {
+OO.ui.FloatingMenuSelectWidget.prototype.position = function () {
        var $container = this.$container,
                pos = OO.ui.Element.static.getRelativePosition( $container, this.$element.offsetParent() );
 
index 8fdc505..f7b3862 100644 (file)
@@ -5,6 +5,10 @@
                "alignCentre": { "file": "images/icons/align-center.svg" },
                "alignLeft": { "file": "images/icons/align-float-left.svg" },
                "alignRight": { "file": "images/icons/align-float-right.svg" },
+               "calendar": { "file": {
+                       "ltr": "images/icons/calendar-ltr.svg",
+                       "rtl": "images/icons/calendar-rtl.svg"
+               } },
                "find": { "file": {
                        "ltr": "images/icons/find-ltr.svg",
                        "rtl": "images/icons/find-rtl.svg"
index 2c5f858..92791d6 100644 (file)
@@ -2,12 +2,12 @@
        "prefix": "oo-ui-icon",
        "intro": "@import '../../../../src/styles/common';",
        "images": {
-               "circle": { "file": "images/icons/circle.svg" },
                "add": { "file": "images/icons/add.svg" },
                "advanced": { "file": "images/icons/advanced.svg" },
-               "cancel": { "file": "images/icons/cancel.svg" },
                "alert": { "file": "images/icons/alert.svg" },
+               "cancel": { "file": "images/icons/cancel.svg" },
                "check": { "file": "images/icons/check.svg" },
+               "circle": { "file": "images/icons/circle.svg" },
                "close": { "file": "images/icons/close.svg" },
                "code": { "file": "images/icons/code.svg" },
                "collapse": { "file": "images/icons/collapse.svg" },
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/calendar-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/calendar-ltr.png
new file mode 100644 (file)
index 0000000..8b3ed72
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/calendar-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/calendar-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/calendar-ltr.svg
new file mode 100644 (file)
index 0000000..121180e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/calendar-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/calendar-rtl.png
new file mode 100644 (file)
index 0000000..8ec5023
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/calendar-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/calendar-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/calendar-rtl.svg
new file mode 100644 (file)
index 0000000..9b736bf
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm-4 0c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm-4 0c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM7 6c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
+</svg>
index 0e1a8a1..ef368c2 100644 (file)
                "alignCentre": { "file": "images/icons/align-center.svg" },
                "alignLeft": { "file": "images/icons/align-float-left.svg" },
                "alignRight": { "file": "images/icons/align-float-right.svg" },
+               "calendar": { "file": {
+                       "ltr": "images/icons/calendar-ltr.svg",
+                       "rtl": "images/icons/calendar-rtl.svg"
+               } },
                "find": { "file": {
                        "ltr": "images/icons/find-ltr.svg",
                        "rtl": "images/icons/find-rtl.svg"
index f351b5b..a79b329 100644 (file)
@@ -1,6 +1,6 @@
 {
        "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant} .oo-ui-icon-{name}, .oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.png
new file mode 100644 (file)
index 0000000..330a53d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.svg
new file mode 100644 (file)
index 0000000..5eef30c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
+    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.png
new file mode 100644 (file)
index 0000000..8b3ed72
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.svg
new file mode 100644 (file)
index 0000000..121180e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.png
new file mode 100644 (file)
index 0000000..2f9c5ba
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.svg
new file mode 100644 (file)
index 0000000..f7202a9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
+    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm-4 0c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm-4 0c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM7 6c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.png
new file mode 100644 (file)
index 0000000..8ec5023
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.svg
new file mode 100644 (file)
index 0000000..9b736bf
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm-4 0c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm-4 0c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM7 6c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
+</svg>
index 3d66337..5a83258 100644 (file)
@@ -1,6 +1,6 @@
 {
        "selectorWithoutVariant": ".oo-ui-indicator-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant} .oo-ui-indicator-{name}, .oo-ui-image-{variant}.oo-ui-indicator-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-indicator-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index 6e7851a..9395ecf 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs v1.1.8 optimised for jQuery
+ * OOjs v1.1.9 optimised for jQuery
  * https://www.mediawiki.org/wiki/OOjs
  *
  * Copyright 2011-2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-07-23T19:16:00Z
+ * Date: 2015-08-25T21:35:29Z
  */
 ( function ( global ) {
 
@@ -22,7 +22,21 @@ var
        oo = {},
        // Optimisation: Local reference to Object.prototype.hasOwnProperty
        hasOwn = oo.hasOwnProperty,
-       toString = oo.toString;
+       toString = oo.toString,
+       // Object.create() is impossible to fully polyfill, so don't require it
+       createObject = Object.create || ( function () {
+               // Reusable constructor function
+               function Empty() {}
+               return function ( prototype, properties ) {
+                       var obj;
+                       Empty.prototype = prototype;
+                       obj = new Empty();
+                       if ( properties && hasOwn.call( properties, 'constructor' ) ) {
+                               obj.constructor = properties.constructor.value;
+                       }
+                       return obj;
+               };
+       } )();
 
 /* Class Methods */
 
@@ -88,7 +102,7 @@ oo.inheritClass = function ( targetFn, originFn ) {
        // allows people to comply with their style guide.
        targetFn['super'] = targetFn.parent = originFn;
 
-       targetFn.prototype = Object.create( originFn.prototype, {
+       targetFn.prototype = createObject( originFn.prototype, {
                // Restore constructor property of targetFn
                constructor: {
                        value: targetConstructor,
@@ -100,7 +114,7 @@ oo.inheritClass = function ( targetFn, originFn ) {
 
        // Extend static properties - always initialize both sides
        oo.initClass( originFn );
-       targetFn.static = Object.create( originFn.static );
+       targetFn.static = createObject( originFn.static );
 };
 
 /**
@@ -242,7 +256,7 @@ oo.setProp = function ( obj ) {
 oo.cloneObject = function ( origin ) {
        var key, r;
 
-       r = Object.create( origin.constructor.prototype );
+       r = createObject( origin.constructor.prototype );
 
        for ( key in origin ) {
                if ( hasOwn.call( origin, key ) ) {
@@ -891,6 +905,8 @@ oo.Registry.prototype.lookup = function ( name ) {
        }
 };
 
+/*global createObject */
+
 /**
  * @class OO.Factory
  * @extends OO.Registry
@@ -991,7 +1007,7 @@ oo.Factory.prototype.create = function ( name ) {
        // the constructor's prototype (which also makes it an "instanceof" the constructor),
        // then invoke the constructor with the object as context, and return it (ignoring
        // the constructor's return value).
-       obj = Object.create( constructor.prototype );
+       obj = createObject( constructor.prototype );
        constructor.apply( obj, args );
        return obj;
 };
index 5551232..afff463 100644 (file)
         * "fobo", not "foba". Basically emulating the native maxlength by
         * reconstructing where the insertion occurred.
         *
-        * @private
+        * @static
         * @param {string} safeVal Known value that was previously returned by this
         * function, if none, pass empty string.
         * @param {string} newVal New value that may have to be trimmed down.
         * @param {number} byteLimit Number of bytes the value may be in size.
-        * @param {Function} [fn] See jQuery.byteLimit.
+        * @param {Function} [fn] See jQuery#byteLimit.
         * @return {Object}
         * @return {string} return.newVal
         * @return {boolean} return.trimmed
         */
-       function trimValForByteLength( safeVal, newVal, byteLimit, fn ) {
+       $.trimByteLength = function ( safeVal, newVal, byteLimit, fn ) {
                var startMatches, endMatches, matchesLen, inpParts,
                        oldVal = safeVal;
 
@@ -92,7 +92,7 @@
                        newVal: newVal,
                        trimmed: true
                };
-       }
+       };
 
        var eventKeys = [
                'keyup.byteLimit',
                        // See http://www.w3.org/TR/DOM-Level-3-Events/#events-keyboard-event-order for
                        // the order and characteristics of the key events.
                        $el.on( eventKeys, function () {
-                               var res = trimValForByteLength(
+                               var res = $.trimByteLength(
                                        prevSafeVal,
                                        this.value,
                                        elLimit,
                                        this.value = res.newVal;
                                }
                                // Always adjust prevSafeVal to reflect the input value. Not doing this could cause
-                               // trimValForByteLength to compare the new value to an empty string instead of the
+                               // trimByteLength to compare the new value to an empty string instead of the
                                // old value, resulting in trimming always from the end (bug 40850).
                                prevSafeVal = res.newVal;
                        } );
diff --git a/resources/src/mediawiki.api/mediawiki.ForeignApi.js b/resources/src/mediawiki.api/mediawiki.ForeignApi.js
new file mode 100644 (file)
index 0000000..74e80e2
--- /dev/null
@@ -0,0 +1,109 @@
+( function ( mw, $ ) {
+
+       /**
+        * Create an object like mw.Api, but automatically handling everything required to communicate
+        * with another MediaWiki wiki via cross-origin requests (CORS).
+        *
+        * The foreign wiki must be configured to accept requests from the current wiki. See
+        * <https://www.mediawiki.org/wiki/Manual:$wgCrossSiteAJAXdomains> for details.
+        *
+        *     var api = new mw.ForeignApi( 'https://commons.wikimedia.org/w/api.php' );
+        *     api.get( {
+        *         action: 'query',
+        *         meta: 'userinfo'
+        *     } ).done( function ( data ) {
+        *         console.log( data );
+        *     } );
+        *
+        * To ensure that the user at the foreign wiki is logged in, pass the `assert: 'user'` parameter
+        * to #get/#post (since MW 1.23): if they are not, the API request will fail. (Note that this
+        * doesn't guarantee that it's the same user.)
+        *
+        * Authentication-related MediaWiki extensions may extend this class to ensure that the user
+        * authenticated on the current wiki will be automatically authenticated on the foreign one. These
+        * extension modules should be registered using the ResourceLoaderForeignApiModules hook. See
+        * CentralAuth for a practical example. The general pattern to extend and override the name is:
+        *
+        *     function MyForeignApi() {};
+        *     OO.inheritClass( MyForeignApi, mw.ForeignApi );
+        *     mw.ForeignApi = MyForeignApi;
+        *
+        * @class mw.ForeignApi
+        * @extends mw.Api
+        * @since 1.26
+        *
+        * @constructor
+        * @param {string|mw.Uri} url URL pointing to another wiki's `api.php` endpoint.
+        * @param {Object} [options] See mw.Api.
+        *
+        * @author Bartosz Dziewoński
+        * @author Jon Robson
+        */
+       function CoreForeignApi( url, options ) {
+               if ( !url || $.isPlainObject( url ) ) {
+                       throw new Error( 'mw.ForeignApi() requires a `url` parameter' );
+               }
+
+               this.apiUrl = String( url );
+
+               options = $.extend( /*deep=*/ true,
+                       {
+                               ajax: {
+                                       url: this.apiUrl,
+                                       xhrFields: {
+                                               withCredentials: true
+                                       }
+                               },
+                               parameters: {
+                                       // Add 'origin' query parameter to all requests.
+                                       origin: this.getOrigin()
+                               }
+                       },
+                       options
+               );
+
+               // Call parent constructor
+               CoreForeignApi.parent.call( this, options );
+       }
+
+       OO.inheritClass( CoreForeignApi, mw.Api );
+
+       /**
+        * Return the origin to use for API requests, in the required format (protocol, host and port, if
+        * any).
+        *
+        * @protected
+        * @return {string}
+        */
+       CoreForeignApi.prototype.getOrigin = function () {
+               var origin = location.protocol + '//' + location.hostname;
+               if ( location.port ) {
+                       origin += ':' + location.port;
+               }
+               return origin;
+       };
+
+       /**
+        * @inheritdoc
+        */
+       CoreForeignApi.prototype.ajax = function ( parameters, ajaxOptions ) {
+               var url, origin, newAjaxOptions;
+
+               // 'origin' query parameter must be part of the request URI, and not just POST request body
+               if ( ajaxOptions.type !== 'GET' ) {
+                       url = ( ajaxOptions && ajaxOptions.url ) || this.defaults.ajax.url;
+                       origin = ( parameters && parameters.origin ) || this.defaults.parameters.origin;
+                       url += ( url.indexOf( '?' ) !== -1 ? '&' : '?' ) +
+                               'origin=' + encodeURIComponent( origin );
+                       newAjaxOptions = $.extend( {}, ajaxOptions, { url: url } );
+               } else {
+                       newAjaxOptions = ajaxOptions;
+               }
+
+               return CoreForeignApi.parent.prototype.ajax.call( this, parameters, newAjaxOptions );
+       };
+
+       // Expose
+       mw.ForeignApi = CoreForeignApi;
+
+}( mediaWiki, jQuery ) );
index dbe45bf..e6161e4 100644 (file)
                 * cached token and start over.
                 *
                 * @param {Object} params API parameters
+                * @param {Object} [ajaxOptions]
                 * @return {jQuery.Promise} See #post
                 */
-               postWithEditToken: function ( params ) {
-                       return this.postWithToken( 'edit', params );
+               postWithEditToken: function ( params, ajaxOptions ) {
+                       return this.postWithToken( 'edit', params, ajaxOptions );
                },
 
                /**
index 5e3a962..cae65c5 100644 (file)
@@ -49,7 +49,7 @@
         *         console.log( data );
         *     } );
         *
-        * Multiple values for a parameter can be specified using an array (since MW 1.25):
+        * Since MW 1.25, multiple values for a parameter can be specified using an array:
         *
         *     var api = new mw.Api();
         *     api.get( {
@@ -59,6 +59,9 @@
         *         console.log( data );
         *     } );
         *
+        * Since MW 1.26, boolean values for a parameter can be specified directly. If the value is
+        * `false` or `undefined`, the parameter will be omitted from the request, as required by the API.
+        *
         * @constructor
         * @param {Object} [options] See #defaultOptions documentation above. Can also be overridden for
         *  each individual request by passing them to #get or #post (or directly #ajax) later on.
                        return this.ajax( parameters, ajaxOptions );
                },
 
+               /**
+                * Massage parameters from the nice format we accept into a format suitable for the API.
+                *
+                * @private
+                * @param {Object} parameters (modified in-place)
+                */
+               preprocessParameters: function ( parameters ) {
+                       var key;
+                       // Handle common MediaWiki API idioms for passing parameters
+                       for ( key in parameters ) {
+                               // Multiple values are pipe-separated
+                               if ( $.isArray( parameters[key] ) ) {
+                                       parameters[key] = parameters[key].join( '|' );
+                               }
+                               // Boolean values are only false when not given at all
+                               if ( parameters[key] === false || parameters[key] === undefined ) {
+                                       delete parameters[key];
+                               }
+                       }
+               },
+
                /**
                 * Perform the API call.
                 *
                                delete parameters.token;
                        }
 
-                       for ( key in parameters ) {
-                               if ( $.isArray( parameters[key] ) ) {
-                                       parameters[key] = parameters[key].join( '|' );
-                               }
-                       }
+                       this.preprocessParameters( parameters );
 
                        // If multipart/form-data has been requested and emulation is possible, emulate it
                        if (
index 64085e4..d05ba57 100644 (file)
                        .val( val );
        }
 
-       /**
-        * Parse response from an XHR to the server.
-        * @private
-        * @param {Event} e
-        * @return {Object}
-        */
-       function parseXHRResponse( e ) {
-               var response;
-
-               try {
-                       response = $.parseJSON( e.target.responseText );
-               } catch ( error ) {
-                       response = {
-                               error: {
-                                       code: e.target.code,
-                                       info: e.target.responseText
-                               }
-                       };
-               }
-
-               return response;
-       }
-
        /**
         * Process the result of the form submission, returned to an iframe.
         * This is the iframe's onload event.
        $.extend( mw.Api.prototype, {
                /**
                 * Upload a file to MediaWiki.
-                * @param {HTMLInputElement|File} file HTML input type=file element with a file already inside of it, or a File object.
+                *
+                * The file will be uploaded using AJAX and FormData, if the browser supports it, or via an
+                * iframe if it doesn't.
+                *
+                * Caveats of iframe upload:
+                * - The returned jQuery.Promise will not receive `progress` notifications during the upload
+                * - It is incompatible with uploads to a foreign wiki using mw.ForeignApi
+                * - You must pass a HTMLInputElement and not a File for it to be possible
+                *
+                * @param {HTMLInputElement|File} file HTML input type=file element with a file already inside
+                *     of it, or a File object.
                 * @param {Object} data Other upload options, see action=upload API docs for more
                 * @return {jQuery.Promise}
                 */
                upload: function ( file, data ) {
-                       var iframe, formData;
+                       var isFileInput, canUseFormData;
+
+                       isFileInput = file && file.nodeType === Node.ELEMENT_NODE;
+
+                       if ( formDataAvailable() && isFileInput && file.files ) {
+                               file = file.files[0];
+                       }
 
                        if ( !file ) {
                                return $.Deferred().reject( 'No file' );
                        }
 
-                       iframe = file.nodeType && file.nodeType === Node.ELEMENT_NODE;
-                       formData = formDataAvailable() && file instanceof window.File;
+                       canUseFormData = formDataAvailable() && file instanceof window.File;
 
-                       if ( !iframe && !formData ) {
+                       if ( !isFileInput && !canUseFormData ) {
                                return $.Deferred().reject( 'Unsupported argument type passed to mw.Api.upload' );
                        }
 
-                       if ( formData ) {
+                       if ( canUseFormData ) {
                                return this.uploadWithFormData( file, data );
                        }
 
                 * APIs, and continues to work in browsers with those APIs.
                 *
                 * The rough sketch of how this method works is as follows:
-                * * An iframe is loaded with no content.
-                * * A form is submitted with the passed-in file input and some extras.
-                * * The MediaWiki API receives that form data, and sends back a response.
-                * * The response is sent to the iframe, because we set target=(iframe id)
-                * * The response is parsed out of the iframe's document, and passed back
-                *   through the promise.
+                * 1. An iframe is loaded with no content.
+                * 2. A form is submitted with the passed-in file input and some extras.
+                * 3. The MediaWiki API receives that form data, and sends back a response.
+                * 4. The response is sent to the iframe, because we set target=(iframe id)
+                * 5. The response is parsed out of the iframe's document, and passed back
+                *    through the promise.
+                *
+                * @private
                 * @param {HTMLInputElement} file The file input with a file in it.
                 * @param {Object} data Other upload options, see action=upload API docs for more
                 * @return {jQuery.Promise}
                 */
                uploadWithIframe: function ( file, data ) {
-                       var tokenPromise = $.Deferred(),
+                       var key,
+                               tokenPromise = $.Deferred(),
                                api = this,
-                               filenameFound = false,
                                deferred = $.Deferred(),
                                nonce = getNonce(),
                                id = 'uploadframe-' + nonce,
                                iframe = getNewIframe( id ),
                                $iframe = $( iframe );
 
-                       $form.addClass( 'mw-api-upload-form' );
+                       for ( key in data ) {
+                               if ( !fieldsAllowed[key] ) {
+                                       delete data[key];
+                               }
+                       }
 
-                       $form.append(
-                               getHiddenInput( 'action', 'upload' ),
-                               getHiddenInput( 'format', 'json' ),
-                               file
-                       );
+                       data = $.extend( {}, this.defaults.parameters, { action: 'upload' }, data );
+                       $form.addClass( 'mw-api-upload-form' );
 
                        $form.css( 'display', 'none' )
                                .attr( {
                        file.name = 'file';
 
                        $.each( data, function ( key, val ) {
-                               if ( key === 'filename' ) {
-                                       filenameFound = true;
-                               }
-
-                               if ( fieldsAllowed[key] === true ) {
-                                       $form.append( getHiddenInput( key, val ) );
-                               }
+                               $form.append( getHiddenInput( key, val ) );
                        } );
 
-                       if ( !filenameFound && !data.stash ) {
+                       if ( !data.filename && !data.stash ) {
                                return $.Deferred().reject( 'Filename not included in file data.' );
                        }
 
 
                        $( 'body' ).append( $form, $iframe );
 
+                       deferred.always( function () {
+                               $form.remove();
+                               $iframe.remove();
+                       } );
+
                        return deferred.promise();
                },
 
                /**
                 * Uploads a file using the FormData API.
+                *
+                * @private
                 * @param {File} file
-                * @param {Object} data
+                * @param {Object} data Other upload options, see action=upload API docs for more
+                * @return {jQuery.Promise}
                 */
                uploadWithFormData: function ( file, data ) {
-                       var xhr,
-                               api = this,
-                               formData = new FormData(),
-                               deferred = $.Deferred(),
-                               filenameFound = false;
-
-                       formData.append( 'action', 'upload' );
-                       formData.append( 'format', 'json' );
+                       var key,
+                               deferred = $.Deferred();
 
-                       $.each( data, function ( key, val ) {
-                               if ( key === 'filename' ) {
-                                       filenameFound = true;
+                       for ( key in data ) {
+                               if ( !fieldsAllowed[key] ) {
+                                       delete data[key];
                                }
+                       }
 
-                               if ( fieldsAllowed[key] === true ) {
-                                       formData.append( key, val );
-                               }
-                       } );
+                       data = $.extend( {}, this.defaults.parameters, { action: 'upload' }, data );
+                       data.file = file;
 
-                       if ( !filenameFound && !data.stash ) {
+                       if ( !data.filename && !data.stash ) {
                                return $.Deferred().reject( 'Filename not included in file data.' );
                        }
 
-                       formData.append( 'file', file );
-
-                       xhr = new XMLHttpRequest();
-
-                       xhr.upload.addEventListener( 'progress', function ( e ) {
-                               if ( e.lengthComputable ) {
-                                       deferred.notify( e.loaded / e.total );
-                               }
-                       }, false );
-
-                       xhr.addEventListener( 'abort', function ( e ) {
-                               deferred.reject( parseXHRResponse( e ) );
-                       }, false );
-
-                       xhr.addEventListener( 'load', function ( e ) {
-                               var result = parseXHRResponse( e );
-
-                               if ( result.error || result.warnings ) {
-                                       if ( result.error && result.error.code === 'badtoken' ) {
-                                               api.badToken( 'edit' );
+                       // Use this.postWithEditToken() or this.post()
+                       this[ this.needToken() ? 'postWithEditToken' : 'post' ]( data, {
+                               // Use FormData (if we got here, we know that it's available)
+                               contentType: 'multipart/form-data',
+                               // Provide upload progress notifications
+                               xhr: function () {
+                                       var xhr = $.ajaxSettings.xhr();
+                                       if ( xhr.upload ) {
+                                               // need to bind this event before we open the connection (see note at
+                                               // https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Monitoring_progress)
+                                               xhr.upload.addEventListener( 'progress', function ( ev ) {
+                                                       if ( ev.lengthComputable ) {
+                                                               deferred.notify( ev.loaded / ev.total );
+                                                       }
+                                               } );
                                        }
-
-                                       deferred.reject( result.error || result.warnings );
-                               } else {
-                                       deferred.notify( 1 );
-                                       deferred.resolve( result );
+                                       return xhr;
                                }
-                       }, false );
-
-                       xhr.addEventListener( 'error', function ( e ) {
-                               deferred.reject( parseXHRResponse( e ) );
-                       }, false );
-
-                       xhr.open( 'POST', this.defaults.ajax.url, true );
-
-                       if ( this.needToken() ) {
-                               this.getEditToken().then( function ( token ) {
-                                       formData.append( 'token', token );
-                                       xhr.send( formData );
+                       } )
+                               .done( function ( result ) {
+                                       if ( result.error || result.warnings ) {
+                                               deferred.reject( result.error || result.warnings );
+                                       } else {
+                                               deferred.notify( 1 );
+                                               deferred.resolve( result );
+                                       }
+                               } )
+                               .fail( function ( result ) {
+                                       deferred.reject( result );
                                } );
-                       } else {
-                               xhr.send( formData );
-                       }
 
                        return deferred.promise();
                },
                                        return $.Deferred().reject( 'Filename not included in file data.' );
                                }
 
-                               return api.postWithEditToken( data );
+                               return api.postWithEditToken( data ).then( function ( result ) {
+                                       if ( result.upload && ( result.upload.error || result.upload.warnings ) ) {
+                                               return $.Deferred().reject( result.upload.error || result.upload.warnings ).promise();
+                                       }
+                                       return result;
+                               } );
                        }
 
                        return this.upload( file, { stash: true, filename: data.filename } ).then( function ( result ) {
index e35b1cf..2291572 100644 (file)
@@ -284,45 +284,6 @@ img.thumbborder {
        border: 1px solid #dddddd;
 }
 
-/**
- * Galleries (see shared.css for more info)
- */
-li.gallerybox {
-       vertical-align: top;
-       display: inline-block;
-}
-
-ul.gallery, li.gallerybox {
-       zoom: 1;
-       *display: inline;
-}
-
-ul.gallery {
-       margin: 2px;
-       padding: 2px;
-       display: block;
-}
-
-li.gallerycaption {
-       font-weight: bold;
-       text-align: center;
-       display: block;
-       word-wrap: break-word;
-}
-
-li.gallerybox div.thumb {
-       text-align: center;
-       border: 1px solid #ccc;
-       margin: 2px;
-}
-
-div.gallerytext {
-       overflow: hidden;
-       font-size: 94%;
-       padding: 2px 4px;
-       word-wrap: break-word;
-}
-
 /**
  * Table rendering
  * As on shared.css but with white background.
index 14fd286..63da066 100644 (file)
@@ -417,6 +417,11 @@ p.mw-upload-editlicenses {
 /* The auto-generated edit comments */
 .autocomment {
        color: gray;
+       /* In RTL wikis, Latin heading sections can get jumbled with comments that
+          begin with Latin letters or numbers */
+       unicode-bidi: -moz-isolate;
+       unicode-bidi: -webkit-isolate;
+       unicode-bidi: isolate;
 }
 
 #pagehistory .history-user {
@@ -782,108 +787,6 @@ table.mw_metadata ul.metadata-langlist {
        margin-left: 0;
 }
 
-/* Galleries */
-/* These display attributes look nonsensical, but are needed to support IE and FF2 */
-/* Don't forget to update commonPrint.css */
-li.gallerybox {
-       vertical-align: top;
-       display: -moz-inline-box;
-       display: inline-block;
-}
-
-ul.gallery,
-li.gallerybox {
-       zoom: 1;
-       *display: inline;
-}
-
-ul.gallery {
-       margin: 2px;
-       padding: 2px;
-       display: block;
-}
-
-li.gallerycaption {
-       font-weight: bold;
-       text-align: center;
-       display: block;
-       word-wrap: break-word;
-}
-
-li.gallerybox div.thumb {
-       text-align: center;
-       border: 1px solid #ccc;
-       background-color: #f9f9f9;
-       margin: 2px;
-}
-
-li.gallerybox div.thumb img {
-       display: block;
-       margin: 0 auto;
-}
-
-div.gallerytext {
-       overflow: hidden;
-       font-size: 94%;
-       padding: 2px 4px;
-       word-wrap: break-word;
-}
-
-/* new gallery stuff */
-ul.mw-gallery-nolines li.gallerybox div.thumb {
-       background-color: transparent;
-       border: none;
-}
-
-ul.mw-gallery-nolines li.gallerybox div.gallerytext {
-       text-align: center;
-}
-
-/* height constrained gallery */
-
-ul.mw-gallery-packed li.gallerybox div.thumb,
-ul.mw-gallery-packed-overlay li.gallerybox div.thumb,
-ul.mw-gallery-packed-hover li.gallerybox div.thumb {
-       background-color: transparent;
-       border: none;
-}
-
-ul.mw-gallery-packed li.gallerybox div.thumb img,
-ul.mw-gallery-packed-overlay li.gallerybox div.thumb img,
-ul.mw-gallery-packed-hover li.gallerybox div.thumb img {
-       margin: 0 auto;
-}
-
-ul.mw-gallery-packed-hover li.gallerybox,
-ul.mw-gallery-packed-overlay li.gallerybox {
-       position: relative;
-}
-
-ul.mw-gallery-packed-hover div.gallerytextwrapper {
-       overflow: hidden;
-       height: 0;
-}
-
-ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper,
-ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper,
-ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper {
-       position: absolute;
-       background: white;
-       background: rgba(255, 255, 255, 0.8);
-       padding: 5px 10px;
-       bottom: 0;
-       left: 0; /* Needed for IE */
-       height: auto;
-       font-weight: bold;
-       margin: 2px; /* correspond to style on div.thumb */
-}
-
-ul.mw-gallery-packed-hover,
-ul.mw-gallery-packed-overlay,
-ul.mw-gallery-packed {
-       text-align: center;
-}
-
 .mw-ajax-loader {
        background-image: url(images/ajax-loader.gif);
        background-position: center center;
diff --git a/resources/src/mediawiki.page/mediawiki.page.gallery.css b/resources/src/mediawiki.page/mediawiki.page.gallery.css
new file mode 100644 (file)
index 0000000..2e4daea
--- /dev/null
@@ -0,0 +1,101 @@
+/* Galleries */
+/* These display attributes look nonsensical, but are needed to support IE and FF2 */
+/* Don't forget to update commonPrint.css */
+li.gallerybox {
+       vertical-align: top;
+       display: -moz-inline-box;
+       display: inline-block;
+}
+
+ul.gallery,
+li.gallerybox {
+       zoom: 1;
+       *display: inline;
+}
+
+ul.gallery {
+       margin: 2px;
+       padding: 2px;
+       display: block;
+}
+
+li.gallerycaption {
+       font-weight: bold;
+       text-align: center;
+       display: block;
+       word-wrap: break-word;
+}
+
+li.gallerybox div.thumb {
+       text-align: center;
+       border: 1px solid #ccc;
+       background-color: #f9f9f9;
+       margin: 2px;
+}
+
+li.gallerybox div.thumb img {
+       display: block;
+       margin: 0 auto;
+}
+
+div.gallerytext {
+       overflow: hidden;
+       font-size: 94%;
+       padding: 2px 4px;
+       word-wrap: break-word;
+}
+
+/* new gallery stuff */
+ul.mw-gallery-nolines li.gallerybox div.thumb {
+       background-color: transparent;
+       border: none;
+}
+
+ul.mw-gallery-nolines li.gallerybox div.gallerytext {
+       text-align: center;
+}
+
+/* height constrained gallery */
+
+ul.mw-gallery-packed li.gallerybox div.thumb,
+ul.mw-gallery-packed-overlay li.gallerybox div.thumb,
+ul.mw-gallery-packed-hover li.gallerybox div.thumb {
+       background-color: transparent;
+       border: none;
+}
+
+ul.mw-gallery-packed li.gallerybox div.thumb img,
+ul.mw-gallery-packed-overlay li.gallerybox div.thumb img,
+ul.mw-gallery-packed-hover li.gallerybox div.thumb img {
+       margin: 0 auto;
+}
+
+ul.mw-gallery-packed-hover li.gallerybox,
+ul.mw-gallery-packed-overlay li.gallerybox {
+       position: relative;
+}
+
+ul.mw-gallery-packed-hover div.gallerytextwrapper {
+       overflow: hidden;
+       height: 0;
+}
+
+ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper,
+ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper,
+ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper {
+       position: absolute;
+       background: white;
+       background: rgba(255, 255, 255, 0.8);
+       padding: 5px 10px;
+       bottom: 0;
+       left: 0; /* Needed for IE */
+       height: auto;
+       font-weight: bold;
+       margin: 2px; /* correspond to style on div.thumb */
+}
+
+ul.mw-gallery-packed-hover,
+ul.mw-gallery-packed-overlay,
+ul.mw-gallery-packed {
+       text-align: center;
+}
diff --git a/resources/src/mediawiki.page/mediawiki.page.gallery.print.css b/resources/src/mediawiki.page/mediawiki.page.gallery.print.css
new file mode 100644 (file)
index 0000000..0c14865
--- /dev/null
@@ -0,0 +1,35 @@
+li.gallerybox {
+       vertical-align: top;
+       display: inline-block;
+}
+
+ul.gallery, li.gallerybox {
+       zoom: 1;
+       *display: inline;
+}
+
+ul.gallery {
+       margin: 2px;
+       padding: 2px;
+       display: block;
+}
+
+li.gallerycaption {
+       font-weight: bold;
+       text-align: center;
+       display: block;
+       word-wrap: break-word;
+}
+
+li.gallerybox div.thumb {
+       text-align: center;
+       border: 1px solid #ccc;
+       margin: 2px;
+}
+
+div.gallerytext {
+       overflow: hidden;
+       font-size: 94%;
+       padding: 2px 4px;
+       word-wrap: break-word;
+}
index ea1eb99..7dd0369 100644 (file)
                                        ctx.clearRect( 0, 0, 180, 180 );
                                        ctx.rotate( rotation / 180 * Math.PI );
                                        ctx.drawImage( img, x, y, width, height );
-                                       thumb.find( '.mw-small-spinner' ).replaceWith( $canvas );
+                                       thumb.find( '.mw-spinner-small' ).replaceWith( $canvas );
 
                                        // Image size
                                        info = mw.msg( 'widthheight', logicalWidth, logicalHeight ) +
index 4f41fad..305f20c 100644 (file)
@@ -1,5 +1,6 @@
 <div id="mw-upload-thumbnail" class="thumb tright">
        <div class="thumbinner">
+               <!-- Note: Change showPreview() in mediawiki.special.upload.js if mw-spinner-small classname changes -->
                <div class="mw-spinner mw-spinner-small" style="width: 180px; height: 180px"></div>
                <div class="thumbcaption">
                        <div class="filename"></div>
diff --git a/resources/src/mediawiki.widgets/mw.widgets.ComplexNamespaceInputWidget.base.css b/resources/src/mediawiki.widgets/mw.widgets.ComplexNamespaceInputWidget.base.css
new file mode 100644 (file)
index 0000000..b60883e
--- /dev/null
@@ -0,0 +1,26 @@
+/*!
+ * MediaWiki Widgets - base ComplexNamespaceInputWidget styles.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+.mw-widget-complexNamespaceInputWidget .mw-widget-namespaceInputWidget,
+.mw-widget-complexNamespaceInputWidget .oo-ui-fieldLayout {
+       display: inline-block;
+       margin-right: 1em;
+}
+
+/* TODO FieldLayout is not supposed to be used the way we use it here */
+.mw-widget-complexNamespaceInputWidget .oo-ui-fieldLayout {
+       vertical-align: middle;
+       margin-bottom: 0;
+}
+
+.mw-widget-complexNamespaceInputWidget .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
+       padding-left: 0.5em;
+}
+
+.mw-widget-complexNamespaceInputWidget .mw-widget-namespaceInputWidget {
+       max-width: 20em;
+}
diff --git a/resources/src/mediawiki.widgets/mw.widgets.ComplexNamespaceInputWidget.js b/resources/src/mediawiki.widgets/mw.widgets.ComplexNamespaceInputWidget.js
new file mode 100644 (file)
index 0000000..f67ed3d
--- /dev/null
@@ -0,0 +1,118 @@
+/*!
+ * MediaWiki Widgets - ComplexNamespaceInputWidget class.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+( function ( $, mw ) {
+
+       /**
+        * Namespace input widget. Displays a dropdown box with the choice of available namespaces, plus
+        * two checkboxes to include associated namespace or to invert selection.
+        *
+        * @class
+        * @extends OO.ui.Widget
+        *
+        * @constructor
+        * @param {Object} [config] Configuration options
+        * @cfg {Object} namespace Configuration for the NamespaceInputWidget dropdown with list
+        *     of namespaces
+        * @cfg {string} namespace.includeAllValue If specified, add a "all namespaces"
+        *     option to the dropdown, and use this as the input value for it
+        * @cfg {Object} invert Configuration for the "invert selection" CheckboxInputWidget. If
+        *     null, the checkbox will not be generated.
+        * @cfg {Object} associated Configuration for the "include associated namespace"
+        *     CheckboxInputWidget. If null, the checkbox will not be generated.
+        * @cfg {Object} invertLabel Configuration for the FieldLayout with label wrapping the
+        *     "invert selection" checkbox
+        * @cfg {string} invertLabel.label Label text for the label
+        * @cfg {Object} associatedLabel Configuration for the FieldLayout with label wrapping
+        *     the "include associated namespace" checkbox
+        * @cfg {string} associatedLabel.label Label text for the label
+        */
+       mw.widgets.ComplexNamespaceInputWidget = function MwWidgetsComplexNamespaceInputWidget( config ) {
+               // Configuration initialization
+               config = $.extend(
+                       {
+                               // Config options for nested widgets
+                               namespace: {},
+                               invert: {},
+                               invertLabel: {},
+                               associated: {},
+                               associatedLabel: {}
+                       },
+                       config
+               );
+
+               // Parent constructor
+               mw.widgets.ComplexNamespaceInputWidget.parent.call( this, config );
+
+               // Properties
+               this.config = config;
+
+               this.namespace = new mw.widgets.NamespaceInputWidget( config.namespace );
+               if ( config.associated !== null ) {
+                       this.associated = new OO.ui.CheckboxInputWidget( $.extend(
+                               { value: '1' },
+                               config.associated
+                       ) );
+                       // TODO Should use a LabelWidget? But they don't work like HTML <label>s yet
+                       this.associatedLabel = new OO.ui.FieldLayout(
+                               this.associated,
+                               $.extend(
+                                       { align: 'inline' },
+                                       config.associatedLabel
+                               )
+                       );
+               }
+               if ( config.invert !== null ) {
+                       this.invert = new OO.ui.CheckboxInputWidget( $.extend(
+                               { value: '1' },
+                               config.invert
+                       ) );
+                       // TODO Should use a LabelWidget? But they don't work like HTML <label>s yet
+                       this.invertLabel = new OO.ui.FieldLayout(
+                               this.invert,
+                               $.extend(
+                                       { align: 'inline' },
+                                       config.invertLabel
+                               )
+                       );
+               }
+
+               // Events
+               this.namespace.connect( this, { change: 'updateCheckboxesState' } );
+
+               // Initialization
+               this.$element
+                       .addClass( 'mw-widget-complexNamespaceInputWidget' )
+                       .append(
+                               this.namespace.$element,
+                               this.invert ? this.invertLabel.$element : '',
+                               this.associated ? this.associatedLabel.$element : ''
+                       );
+               this.updateCheckboxesState();
+       };
+
+       /* Setup */
+
+       OO.inheritClass( mw.widgets.ComplexNamespaceInputWidget, OO.ui.Widget );
+
+       /* Methods */
+
+       /**
+        * Update the disabled state of checkboxes when the value of namespace dropdown changes.
+        *
+        * @private
+        */
+       mw.widgets.ComplexNamespaceInputWidget.prototype.updateCheckboxesState = function () {
+               var disabled = this.namespace.getValue() === this.namespace.allValue;
+               if ( this.invert ) {
+                       this.invert.setDisabled( disabled );
+               }
+               if ( this.associated ) {
+                       this.associated.setDisabled( disabled );
+               }
+       };
+
+}( jQuery, mediaWiki ) );
diff --git a/resources/src/mediawiki.widgets/mw.widgets.NamespaceInputWidget.base.css b/resources/src/mediawiki.widgets/mw.widgets.NamespaceInputWidget.base.css
deleted file mode 100644 (file)
index 3ce92ef..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*!
- * MediaWiki Widgets - base NamespaceInputWidget styles.
- *
- * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
- * @license The MIT License (MIT); see LICENSE.txt
- */
-
-.mw-widget-namespaceInputWidget .oo-ui-dropdownInputWidget,
-.mw-widget-namespaceInputWidget .oo-ui-fieldLayout {
-       display: inline-block;
-       margin-right: 1em;
-}
-
-/* FIXME FieldLayout is not supposed to be used the way we use it here */
-.mw-widget-namespaceInputWidget .oo-ui-fieldLayout {
-       vertical-align: middle;
-       margin-bottom: 0;
-}
-
-.mw-widget-namespaceInputWidget .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       padding-left: 0.5em;
-}
-
-.mw-widget-namespaceInputWidget .oo-ui-dropdownInputWidget {
-       width: 20em;
-}
index 05e6f27..ef42dc1 100644 (file)
@@ -7,62 +7,61 @@
 ( function ( $, mw ) {
 
        /**
-        * Creates a mw.widgets.NamespaceInputWidget object.
-        *
-        * This is not a complete implementation and is not intended for public usage. It only exists
-        * because of HTMLForm shenanigans.
+        * Namespace input widget. Displays a dropdown box with the choice of available namespaces.
         *
         * @class
-        * @private
-        * @extends OO.ui.Widget
+        * @extends OO.ui.DropdownInputWidget
         *
         * @constructor
         * @param {Object} [config] Configuration options
-        * @cfg {OO.ui.DropdownInputWidget} namespace Widget to include
-        * @cfg {OO.ui.CheckboxInputWidget|null} invert Widget to include
-        * @cfg {OO.ui.CheckboxInputWidget|null} associated Widget to include
-        * @cfg {string|null} allValue Value for "all namespaces" option, if any
+        * @cfg {string|null} includeAllValue Value for "all namespaces" option, if any
         */
        mw.widgets.NamespaceInputWidget = function MwWidgetsNamespaceInputWidget( config ) {
+               // Configuration initialization
+               config = $.extend( {}, config, { options: this.getNamespaceDropdownOptions( config ) } );
+
                // Parent constructor
                mw.widgets.NamespaceInputWidget.parent.call( this, config );
 
-               // Properties
-               this.namespace = config.namespace;
-               this.invert = config.invert;
-               this.associated = config.associated;
-               this.allValue = config.allValue;
-
-               // Events
-               this.namespace.connect( this, { change: 'updateCheckboxesState' } );
-
                // Initialization
-               this.$element
-                       .addClass( 'mw-widget-namespaceInputWidget' )
-                       .append(
-                               this.namespace.$element,
-                               this.invert ? this.invert.$element : '',
-                               this.associated ? this.associated.$element : ''
-                       );
-               this.updateCheckboxesState();
+               this.$element.addClass( 'mw-widget-namespaceInputWidget' );
        };
 
        /* Setup */
 
-       OO.inheritClass( mw.widgets.NamespaceInputWidget, OO.ui.Widget );
+       OO.inheritClass( mw.widgets.NamespaceInputWidget, OO.ui.DropdownInputWidget );
 
        /* Methods */
 
        /**
-        * Update the disabled state of checkboxes when the value of namespace dropdown changes.
+        * @private
         */
-       mw.widgets.NamespaceInputWidget.prototype.updateCheckboxesState = function () {
-               if ( this.invert ) {
-                       this.invert.getField().setDisabled( this.namespace.getValue() === this.allValue );
-               }
-               if ( this.associated ) {
-                       this.associated.getField().setDisabled( this.namespace.getValue() === this.allValue );
+       mw.widgets.NamespaceInputWidget.prototype.getNamespaceDropdownOptions = function ( config ) {
+               var options,
+                       NS_MAIN = 0;
+
+               options = $.map( mw.config.get( 'wgFormattedNamespaces' ), function ( name, ns ) {
+                       if ( ns < NS_MAIN ) {
+                               return null; // skip
+                       }
+                       ns = String( ns );
+                       if ( ns === String( NS_MAIN ) ) {
+                               name = mw.message( 'blanknamespace' ).text();
+                       }
+                       return { data: ns, label: name };
+               } ).sort( function ( a, b ) {
+                       // wgFormattedNamespaces is an object, and so technically doesn't have to be ordered
+                       return a.data - b.data;
+               } );
+
+               if ( config.includeAllValue !== null && config.includeAllValue !== undefined ) {
+                       options.unshift( {
+                               data: config.includeAllValue,
+                               label: mw.message( 'namespacesall' ).text()
+                       } );
                }
+
+               return options;
        };
 
 }( jQuery, mediaWiki ) );
index 66b009f..cf4d788 100644 (file)
@@ -18,6 +18,7 @@
         * @cfg {number} [limit=10] Number of results to show
         * @cfg {number} [namespace] Namespace to prepend to queries
         * @cfg {boolean} [relative=true] If a namespace is set, return a title relative to it
+        * @cfg {boolean} [suggestions=true] Display search suggestions
         * @cfg {boolean} [showRedirectTargets=true] Show the targets of redirects
         * @cfg {boolean} [showRedlink] Show red link to exact match if it doesn't exist
         * @cfg {boolean} [showImages] Show page images
@@ -28,7 +29,7 @@
                var widget = this;
 
                // Config initialization
-               config = config || {};
+               config = $.extend( { maxLength: 255 }, config );
 
                // Parent constructor
                mw.widgets.TitleInputWidget.parent.call( this, $.extend( {}, config, { autocomplete: false } ) );
 
                // Properties
                this.limit = config.limit || 10;
+               this.maxLength = config.maxLength;
                this.namespace = config.namespace !== undefined ? config.namespace : null;
                this.relative = config.relative !== undefined ? config.relative : true;
+               this.suggestions = config.suggestions !== undefined ? config.suggestions : true;
                this.showRedirectTargets = config.showRedirectTargets !== false;
                this.showRedlink = !!config.showRedlink;
                this.showImages = !!config.showImages;
@@ -55,6 +58,7 @@
                if ( this.showDescriptions ) {
                        this.lookupMenu.$element.addClass( 'mw-widget-titleInputWidget-menu-withDescriptions' );
                }
+               this.setLookupsDisabled( !this.suggestions );
 
                this.interwikiPrefixes = [];
                this.interwikiPrefixesPromise = new mw.Api().get( {
@@ -82,7 +86,7 @@
                this.closeLookupMenu();
                this.setLookupsDisabled( true );
                this.setValue( item.getData() );
-               this.setLookupsDisabled( false );
+               this.setLookupsDisabled( !this.suggestions );
        };
 
        /**
                // Parent method
                retval = mw.widgets.TitleInputWidget.parent.prototype.focus.apply( this, arguments );
 
-               this.setLookupsDisabled( false );
+               this.setLookupsDisabled( !this.suggestions );
 
                return retval;
        };
        };
 
        /**
-        * Get title object corresponding to #getValue
+        * Get title object corresponding to given value, or #getValue if not given.
         *
+        * @param {string} [value] Value to get a title for
         * @returns {mw.Title|null} Title object, or null if value is invalid
         */
-       mw.widgets.TitleInputWidget.prototype.getTitle = function () {
-               var title = this.getValue(),
+       mw.widgets.TitleInputWidget.prototype.getTitle = function ( value ) {
+               var title = value !== undefined ? value : this.getValue(),
                        // mw.Title doesn't handle null well
                        titleObj = mw.Title.newFromText( title, this.namespace !== null ? this.namespace : undefined );
 
                return titleObj;
        };
 
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.TitleInputWidget.prototype.cleanUpValue = function ( value ) {
+               var widget = this;
+               value = mw.widgets.TitleInputWidget.parent.prototype.cleanUpValue.call( this, value );
+               return $.trimByteLength( this.value, value, this.maxLength, function ( value ) {
+                       var title = widget.getTitle( value );
+                       return title ? title.getMain() : value;
+               } ).newVal;
+       };
+
        /**
         * @inheritdoc
         */
index 3c10eeb..96db7cc 100644 (file)
                                return false;
                        }
 
-                       dialog.upload.finishStashUpload().then( function () {
+                       dialog.upload.finishStashUpload().always( function () {
                                var name;
 
                                if ( dialog.upload.getState() === mw.Upload.State.ERROR ) {
index 551aa9d..58c66c1 100644 (file)
         *     } );
         *
         * @constructor
-        * @param {Object} apiconfig Passed to the constructor of mw.Api.
+        * @param {Object|mw.Api} [apiconfig] A mw.Api object (or subclass), or configuration
+        *     to pass to the constructor of mw.Api.
         */
        function Upload( apiconfig ) {
-               this.api = new mw.Api( apiconfig );
+               this.api = ( apiconfig instanceof mw.Api ) ? apiconfig : new mw.Api( apiconfig );
 
                this.watchlist = false;
                this.text = '';
diff --git a/resources/src/mediawiki/mediawiki.experiments.js b/resources/src/mediawiki/mediawiki.experiments.js
new file mode 100644 (file)
index 0000000..930bfec
--- /dev/null
@@ -0,0 +1,110 @@
+/* jshint bitwise:false */
+( function ( mw, $ ) {
+
+       var CONTROL_BUCKET = 'control',
+               MAX_INT32_UNSIGNED = 4294967295;
+
+       /**
+        * An implementation of Jenkins' one-at-a-time hash.
+        *
+        * @see http://en.wikipedia.org/wiki/Jenkins_hash_function
+        *
+        * @param {String} string String to hash
+        * @return {Number} The hash as a 32-bit unsigned integer
+        * @ignore
+        *
+        * @author Ori Livneh <ori@wikimedia.org>
+        * @see http://jsbin.com/kejewi/4/watch?js,console
+        */
+       function hashString( string ) {
+               var hash = 0,
+                       i = string.length;
+
+               while ( i-- ) {
+                       hash += string.charCodeAt( i );
+                       hash += ( hash << 10 );
+                       hash ^= ( hash >> 6 );
+               }
+               hash += ( hash << 3 );
+               hash ^= ( hash >> 11 );
+               hash += ( hash << 15 );
+
+               return hash >>> 0;
+       }
+
+       /**
+        * Provides an API for bucketing users in experiments.
+        *
+        * @class mw.experiments
+        * @singleton
+        */
+       mw.experiments = {
+
+               /**
+                * Gets the bucket for the experiment given the token.
+                *
+                * The name of the experiment and the token are hashed. The hash is converted
+                * to a number which is then used to get a bucket.
+                *
+                * Consider the following experiment specification:
+                *
+                * ```
+                * {
+                *   name: 'My first experiment',
+                *   enabled: true,
+                *   buckets: {
+                *     control: 0.5
+                *     A: 0.25,
+                *     B: 0.25
+                *   }
+                * }
+                * ```
+                *
+                * The experiment has three buckets: control, A, and B. The user has a 50%
+                * chance of being assigned to the control bucket, and a 25% chance of being
+                * assigned to either the A or B buckets. If the experiment were disabled,
+                * then the user would always be assigned to the control bucket.
+                *
+                * This function is based on the deprecated `mw.user.bucket` function.
+                *
+                * @param {Object} experiment
+                * @param {String} experiment.name The name of the experiment
+                * @param {Boolean} experiment.enabled Whether or not the experiment is
+                *  enabled. If the experiment is disabled, then the user is always assigned
+                *  to the control bucket
+                * @param {Object} experiment.buckets A map of bucket name to probability
+                *  that the user will be assigned to that bucket
+                * @param {String} token A token that uniquely identifies the user for the
+                *  duration of the experiment
+                * @returns {String} The bucket
+                */
+               getBucket: function ( experiment, token ) {
+                       var buckets = experiment.buckets,
+                               key,
+                               range = 0,
+                               hash,
+                               max,
+                               acc = 0;
+
+                       if ( !experiment.enabled || $.isEmptyObject( experiment.buckets ) ) {
+                               return CONTROL_BUCKET;
+                       }
+
+                       for ( key in buckets ) {
+                               range += buckets[key];
+                       }
+
+                       hash = hashString( experiment.name + ':' + token );
+                       max = ( hash / MAX_INT32_UNSIGNED ) * range;
+
+                       for ( key in buckets ) {
+                               acc += buckets[key];
+
+                               if ( max <= acc ) {
+                                       return key;
+                               }
+                       }
+               }
+       };
+
+}( mediaWiki, jQuery ) );
index 31d9854..309eb34 100644 (file)
@@ -5,6 +5,16 @@
        margin: 1em 0;
 }
 
+.oo-ui-fieldLayout.mw-htmlform-ooui-header-empty,
+.oo-ui-fieldLayout.mw-htmlform-ooui-header-empty .oo-ui-fieldLayout-body {
+       display: none;
+}
+
+.oo-ui-fieldLayout.mw-htmlform-ooui-header-errors {
+       /* Override 'display: none' from above */
+       display: block;
+}
+
 .mw-htmlform-ooui .mw-htmlform-submit-buttons {
        margin-top: 1em;
 }
index ffa435c..f70a1b0 100644 (file)
@@ -5341,14 +5341,91 @@ http://example.com/index.php?foozoid&#x5B;&#x5D;=bar
 !! end
 
 !! test
-IPv6 urls (bug 21261)
-!! options
-disabled
+IPv6 urls, autolink format (T23261)
 !! wikitext
 http://[2404:130:0:1000::187:2]/index.php
+
+Examples from RFC2373, section 2.2:
+* http://[1080::8:800:200C:417A]/unicast
+* http://[FF01::101]/multicast
+* http://[::1]/loopback
+* http://[::]/unspecified
+* http://[::13.1.68.3]/ipv4compat
+* http://[::FFFF:129.144.52.38]/ipv4compat
+
+Examples from RFC 2732, section 2:
+* http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html
+* http://[1080:0:0:0:8:800:200C:417A]/index.html
+* http://[3ffe:2a00:100:7031::1]
+* http://[1080::8:800:200C:417A]/foo
+* http://[::192.9.5.5]/ipng
+* http://[::FFFF:129.144.52.38]:80/index.html
+* http://[2010:836B:4179::836B:4179]
+
 !! html
 <p><a rel="nofollow" class="external free" href="http://[2404:130:0:1000::187:2]/index.php">http://[2404:130:0:1000::187:2]/index.php</a>
+</p><p>Examples from RFC2373, section 2.2:
+</p>
+<ul><li> <a rel="nofollow" class="external free" href="http://[1080::8:800:200C:417A]/unicast">http://[1080::8:800:200C:417A]/unicast</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[FF01::101]/multicast">http://[FF01::101]/multicast</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[::1]/loopback">http://[::1]/loopback</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[::]/unspecified">http://[::]/unspecified</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[::13.1.68.3]/ipv4compat">http://[::13.1.68.3]/ipv4compat</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[::FFFF:129.144.52.38]/ipv4compat">http://[::FFFF:129.144.52.38]/ipv4compat</a></li></ul>
+<p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc2732">RFC 2732</a>, section 2:
+</p>
+<ul><li> <a rel="nofollow" class="external free" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">http://[1080:0:0:0:8:800:200C:417A]/index.html</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[3ffe:2a00:100:7031::1]">http://[3ffe:2a00:100:7031::1]</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[1080::8:800:200C:417A]/foo">http://[1080::8:800:200C:417A]/foo</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[::192.9.5.5]/ipng">http://[::192.9.5.5]/ipng</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[::FFFF:129.144.52.38]:80/index.html">http://[::FFFF:129.144.52.38]:80/index.html</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[2010:836B:4179::836B:4179]">http://[2010:836B:4179::836B:4179]</a></li></ul>
+
+!! end
+
+!! test
+IPv6 urls, bracketed format (T23261)
+!! wikitext
+[http://[2404:130:0:1000::187:2]/index.php test]
+
+Examples from RFC2373, section 2.2:
+* [http://[1080::8:800:200C:417A] unicast]
+* [http://[FF01::101] multicast]
+* [http://[::1]/ loopback]
+* [http://[::] unspecified]
+* [http://[::13.1.68.3] ipv4compat]
+* [http://[::FFFF:129.144.52.38] ipv4compat]
+
+Examples from RFC 2732, section 2:
+* [http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html 1]
+* [http://[1080:0:0:0:8:800:200C:417A]/index.html 2]
+* [http://[3ffe:2a00:100:7031::1] 3]
+* [http://[1080::8:800:200C:417A]/foo 4]
+* [http://[::192.9.5.5]/ipng 5]
+* [http://[::FFFF:129.144.52.38]:80/index.html 6]
+* [http://[2010:836B:4179::836B:4179] 7]
+
+!! html
+<p><a rel="nofollow" class="external text" href="http://[2404:130:0:1000::187:2]/index.php">test</a>
+</p><p>Examples from RFC2373, section 2.2:
+</p>
+<ul><li> <a rel="nofollow" class="external text" href="http://[1080::8:800:200C:417A]">unicast</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[FF01::101]">multicast</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[::1]/">loopback</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[::]">unspecified</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[::13.1.68.3]">ipv4compat</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[::FFFF:129.144.52.38]">ipv4compat</a></li></ul>
+<p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc2732">RFC 2732</a>, section 2:
 </p>
+<ul><li> <a rel="nofollow" class="external text" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">1</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">2</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[3ffe:2a00:100:7031::1]">3</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[1080::8:800:200C:417A]/foo">4</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[::192.9.5.5]/ipng">5</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[::FFFF:129.144.52.38]:80/index.html">6</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[2010:836B:4179::836B:4179]">7</a></li></ul>
+
 !! end
 
 !! test
@@ -10399,6 +10476,15 @@ int keyword
 </p>
 !! end
 
+!! test
+int keyword - non-existing message
+!! wikitext
+{{int:var}}
+!! html
+<p>&lt;var&gt;
+</p>
+!! end
+
 !! article
 Template:Includes
 !! text
@@ -13256,7 +13342,7 @@ T107474: Frameless image caption with <nowiki>
 !! wikitext
 [[File:Foobar.jpg|<nowiki>text with a [[MeatBall:Link|link]] in it</nowiki>]]
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Image mw:Placeholder" data-mw='{"caption":"&lt;span typeof=\"mw:Nowiki\">text with a [[MeatBall:Link|link]] in it&lt;/span>"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&lt;span typeof=\"mw:Nowiki\" data-parsoid=\"{&amp;quot;dsr&amp;quot;:[18,75,8,9]}\">text with a [[MeatBall:Link|link]] in it&lt;/span>"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
 !! end
 
 !! test
@@ -13679,6 +13765,18 @@ bar
 bar</p>
 !! end
 
+## Edge case bug in Parsoid
+!! test
+T93580: Templated <ref> inside images
+!! wikitext
+[[File:Foobar.jpg|thumb|Caption with templated ref: {{echo|<ref>foo</ref>}}]]
+
+<references />
+!! html/parsoid
+<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"Caption with templated ref: {{echo|&lt;ref>foo&lt;/ref>}}"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>Caption with templated ref: <span about="#mwt5" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Transclusion  mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;ref>foo&lt;/ref>"}},"i":0}}]}'><a href="#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></span></figcaption></figure>
+
+<ol class="mw-references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">foo</span></li></ol>
+!! end
 
 ###
 ### Subpages
@@ -15754,7 +15852,7 @@ CSS line continuation 2
 !! wikitext
 <div style="background-image: u\&#13;rl(test.jpg); "></div>
 !! html
-<div style="/* insecure input */"></div>
+<div style="/* invalid control char */"></div>
 
 !! end
 
@@ -18087,6 +18185,38 @@ parsoid=wt2html,wt2wt,html2html
 <p><span typeof="mw:Entity">î</span><span typeof="mw:Entity">î</span></p>
 !! end
 
+# See: http://www.w3.org/TR/html5/syntax.html#character-references
+# Note that U+000C (form feed) is not a valid XML character, so
+# it is banned even though allowed in HTML5.
+!! test
+Illegal character references (T106578)
+!! wikitext
+; Null: &#00;
+; FF: &#xC;
+; CR: &#xD;
+; Control (low): &#8;
+; Control (high): &#x7F; &#x9F;
+; Surrogate: &#xD83D;&#xDCA9;
+; This is an okay astral character: &#x1F4A9;
+!! html+tidy
+<dl>
+<dt>Null</dt>
+<dd>&amp;#00;</dd>
+<dt>FF</dt>
+<dd>&amp;#xC;</dd>
+<dt>CR</dt>
+<dd>&amp;#xD;</dd>
+<dt>Control (low)</dt>
+<dd>&amp;#8;</dd>
+<dt>Control (high)</dt>
+<dd>&amp;#x7F; &amp;#x9F;</dd>
+<dt>Surrogate</dt>
+<dd>&amp;#xD83D;&amp;#xDCA9;</dd>
+<dt>This is an okay astral character</dt>
+<dd>💩</dd>
+</dl>
+!! end
+
 !! test
 __FORCETOC__ override
 !! wikitext
@@ -24463,7 +24593,7 @@ parsoid={
   "scrubWikitext": true
 }
 !! html/parsoid
-<h2> foo <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> </h2>
+<h2> foo <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> </h2>
 
 <ol class="references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">bar <link rel="mw:PageProp/Category" href="./Category:Baz" /> </span></li></ol>
 !! wikitext
@@ -24553,7 +24683,7 @@ parsoid=html2wt
 <h2> hi <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"bogus","href":"./Template:Bogus"},"params":{"1":{"wt":"there\nyou"}},"i":0}}]}'>there</span><span about="#mwt1">
 </span><span about="#mwt1">you</span> </h2>
 
-<h2> foo <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> </h2>
+<h2> foo <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> </h2>
 
 <ol class="references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">hello
 there</span></li></ol>
index 3665e3c..57223da 100644 (file)
@@ -1370,12 +1370,12 @@ Message
 &lt;/td&gt;&lt;td&gt;
 <template lineStart="1"><title>int:Emailmessage</title></template>
 &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
-[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailpage&amp;action=edit emailpage]&lt;br&gt;
-[[MediaWiki_talk:Emailpage|Talk]]
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailuser&amp;action=edit emailuser]&lt;br&gt;
+[[MediaWiki_talk:Emailuser|Talk]]
 &lt;/td&gt;&lt;td&gt;
 E-mail user
 &lt;/td&gt;&lt;td&gt;
-<template lineStart="1"><title>int:Emailpage</title></template>
+<template lineStart="1"><title>int:Emailuser</title></template>
 &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
 [http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailpagetext&amp;action=edit emailpagetext]&lt;br&gt;
 [[MediaWiki_talk:Emailpagetext|Talk]]
index c619df7..cdc223a 100644 (file)
@@ -1370,12 +1370,12 @@ Message
 </td><td>
 {{int:Emailmessage}}
 </td></tr><tr><td>
-[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailpage&action=edit emailpage]<br>
-[[MediaWiki_talk:Emailpage|Talk]]
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailuser&action=edit emailuser]<br>
+[[MediaWiki_talk:Emailuser|Talk]]
 </td><td>
 E-mail user
 </td><td>
-{{int:Emailpage}}
+{{int:Emailuser}}
 </td></tr><tr><td>
 [http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailpagetext&action=edit emailpagetext]<br>
 [[MediaWiki_talk:Emailpagetext|Talk]]
index bea496c..4ce51c6 100644 (file)
@@ -21,6 +21,7 @@ class WfTimestampTest extends MediaWikiTestCase {
                        array( -30281104, TS_MW, '19690115123456', 'Negative TS_UNIX to TS_MW' ),
                        array( $t, TS_UNIX, 979562096, 'TS_UNIX to TS_UNIX' ),
                        array( $t, TS_DB, '2001-01-15 12:34:56', 'TS_UNIX to TS_DB' ),
+                       array( $t + .01, TS_MW, '20010115123456', 'TS_UNIX float to TS_MW' ),
 
                        array( $t, TS_ISO_8601_BASIC, '20010115T123456Z', 'TS_ISO_8601_BASIC to TS_DB' ),
 
index 85c2220..8c8b8b2 100644 (file)
@@ -256,8 +256,7 @@ class OutputPageTest extends MediaWikiTestCase {
                        ) ),
                ) );
                $links = $method->invokeArgs( $out, $args );
-               // Strip comments to avoid variation due to wgDBname in WikiID and cache key
-               $actualHtml = preg_replace( '#/\*[^*]+\*/#', '', implode( "\n", $links['html'] ) );
+               $actualHtml = implode( "\n", $links['html'] );
                $this->assertEquals( $expectedHtml, $actualHtml );
        }
 }
index d63541b..afd10e9 100644 (file)
@@ -6,6 +6,11 @@
 class PrefixSearchTest extends MediaWikiLangTestCase {
 
        public function addDBData() {
+               if ( !$this->isWikitextNS( NS_MAIN ) ) {
+                       // tests are skipped if NS_MAIN is not wikitext
+                       return;
+               }
+
                $this->insertPage( 'Sandbox' );
                $this->insertPage( 'Bar' );
                $this->insertPage( 'Example' );
index 01e221f..a14a50d 100644 (file)
@@ -74,20 +74,6 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                $this->assertEquals( '', $html );
        }
 
-       public function testCategorizationLineFormatting() {
-               $html = $this->createCategorizationLine(
-                       $this->getCategorizationChange( '20150629191735', 0, 0 )
-               );
-               $this->assertNotContains( '(diff | hist)', strip_tags( $html ) );
-       }
-
-       public function testCategorizationLineFormattingWithRevision() {
-               $html = $this->createCategorizationLine(
-                       $this->getCategorizationChange( '20150629191735', 1025, 1024 )
-               );
-               $this->assertContains( '(diff | hist)', strip_tags( $html ) );
-       }
-
        /**
         * @todo more tests for actual formatting, this is more of a smoke test
         */
@@ -129,24 +115,6 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                return $recentChange;
        }
 
-       /**
-        * @return RecentChange
-        */
-       private function getCategorizationChange( $timestamp, $thisId, $lastId ) {
-               $wikiPage = new WikiPage( Title::newFromText( 'Testpage' ) );
-               $wikiPage->doEditContent( new WikitextContent( 'Some random text' ), 'page created' );
-
-               $wikiPage = new WikiPage( Title::newFromText( 'Category:Foo' ) );
-               $wikiPage->doEditContent( new WikitextContent( 'Some random text' ), 'category page created' );
-
-               $user = $this->getTestUser();
-               $recentChange = $this->testRecentChangesHelper->makeCategorizationRecentChange(
-                       $user, 'Category:Foo', $wikiPage->getId(), $thisId, $lastId, $timestamp
-               );
-
-               return $recentChange;
-       }
-
        /**
         * @return User
         */
@@ -160,15 +128,4 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                return $user;
        }
 
-       private function createCategorizationLine( $recentChange ) {
-               $enhancedChangesList = $this->newEnhancedChangesList();
-               $cacheEntry = $this->testRecentChangesHelper->getCacheEntry( $recentChange );
-
-               $reflection = new \ReflectionClass( get_class( $enhancedChangesList ) );
-               $method = $reflection->getMethod( 'recentChangesBlockLine' );
-               $method->setAccessible( true );
-
-               return $method->invokeArgs( $enhancedChangesList, array( $cacheEntry ) );
-       }
-
 }
index ab35453..60235b8 100644 (file)
@@ -243,7 +243,9 @@ class RecentChangeTest extends MediaWikiTestCase {
                        $this->context->msg( 'movedarticleprotection', 'SomeTitle', 'OldTitle' )
                                ->plain() . $sep . $this->user_comment,
                        'protect', 'move_prot',
-                       array( 'OldTitle' ),
+                       array(
+                               '4::oldtitle' => 'OldTitle'
+                       ),
                        $this->user_comment
                );
        }
index e59825a..2506087 100644 (file)
@@ -97,36 +97,6 @@ class TestRecentChangesHelper {
                return $change;
        }
 
-       public function getCacheEntry( $recentChange ) {
-               $rcCacheFactory = new RCCacheEntryFactory(
-                       new RequestContext(),
-                       array( 'diff' => 'diff', 'cur' => 'cur', 'last' => 'last' )
-               );
-               return $rcCacheFactory->newFromRecentChange( $recentChange, false );
-       }
-
-       public function makeCategorizationRecentChange(
-               User $user, $titleText, $curid, $thisid, $lastid, $timestamp
-       ) {
-
-               $attribs = array_merge(
-                       $this->getDefaultAttributes( $titleText, $timestamp ),
-                       array(
-                               'rc_type' => RC_CATEGORIZE,
-                               'rc_user' => $user->getId(),
-                               'rc_user_text' => $user->getName(),
-                               'rc_this_oldid' => $thisid,
-                               'rc_last_oldid' => $lastid,
-                               'rc_cur_id' => $curid,
-                               'rc_comment' => '[[:Testpage]] added to category',
-                               'rc_old_len' => 0,
-                               'rc_new_len' => 0,
-                       )
-               );
-
-               return $this->makeRecentChange( $attribs, 0, 0 );
-       }
-
        private function getDefaultAttributes( $titleText, $timestamp ) {
                return array(
                        'rc_id' => 545,
index efbfe6f..02f6b2a 100644 (file)
@@ -19,8 +19,7 @@ class LinksUpdateTest extends MediaWikiTestCase {
                                'externallinks',
                                'imagelinks',
                                'templatelinks',
-                               'iwlinks',
-                               'recentchanges',
+                               'iwlinks'
                        )
                );
        }
@@ -42,12 +41,6 @@ class LinksUpdateTest extends MediaWikiTestCase {
                );
        }
 
-       public function addDBData() {
-               $this->insertPage( 'Testing' );
-               $this->insertPage( 'Some_other_page' );
-               $this->insertPage( 'Template:TestingTemplate' );
-       }
-
        protected function makeTitleAndParserOutput( $name, $id ) {
                $t = Title::newFromText( $name );
                $t->mArticleID = $id; # XXX: this is fugly
@@ -140,61 +133,6 @@ class LinksUpdateTest extends MediaWikiTestCase {
                ) );
        }
 
-       public function testOnAddingAndRemovingCategory_recentChangesRowIsAdded() {
-               $this->setMwGlobals( 'wgCategoryCollation', 'uppercase' );
-
-               $title = Title::newFromText( 'Testing' );
-               $wikiPage = new WikiPage( $title );
-               $wikiPage->doEditContent( new WikitextContent( '[[Category:Foo]]' ), 'added category' );
-
-               $this->assertRecentChangeByCategorization(
-                       $title,
-                       $wikiPage->getParserOutput( new ParserOptions() ),
-                       Title::newFromText( 'Category:Foo' ),
-                       array( array( 'Foo', '[[:Testing]] added to category' ) )
-               );
-
-               $wikiPage->doEditContent( new WikitextContent( '[[Category:Bar]]' ), 'added category' );
-               $this->assertRecentChangeByCategorization(
-                       $title,
-                       $wikiPage->getParserOutput( new ParserOptions() ),
-                       Title::newFromText( 'Category:Foo' ),
-                       array(
-                               array( 'Foo', '[[:Testing]] added to category' ),
-                               array( 'Foo', '[[:Testing]] removed from category' ),
-                       )
-               );
-
-               $this->assertRecentChangeByCategorization(
-                       $title,
-                       $wikiPage->getParserOutput( new ParserOptions() ),
-                       Title::newFromText( 'Category:Bar' ),
-                       array(
-                               array( 'Bar', '[[:Testing]] added to category' ),
-                       )
-               );
-       }
-
-       public function testOnAddingAndRemovingCategoryToTemplates_embeddingPagesAreIgnored() {
-               $this->setMwGlobals( 'wgCategoryCollation', 'uppercase' );
-
-               $templateTitle = Title::newFromText( 'Template:TestingTemplate' );
-               $templatePage = new WikiPage( $templateTitle );
-
-               $wikiPage = new WikiPage( Title::newFromText( 'Testing' ) );
-               $wikiPage->doEditContent( new WikitextContent( '{{TestingTemplate}}' ), 'added template' );
-               $otherWikiPage = new WikiPage( Title::newFromText( 'Some_other_page' ) );
-               $otherWikiPage->doEditContent( new WikitextContent( '{{TestingTemplate}}' ), 'added template' );
-               $templatePage->doEditContent( new WikitextContent( '[[Category:Foo]]' ), 'added category' );
-
-               $this->assertRecentChangeByCategorization(
-                       $templateTitle,
-                       $templatePage->getParserOutput( new ParserOptions() ),
-                       Title::newFromText( 'Foo' ),
-                       array( array( 'Foo', '[[:Template:TestingTemplate]] and 2 pages added to category' ) )
-               );
-       }
-
        /**
         * @covers ParserOutput::addInterwikiLink
         */
@@ -325,26 +263,4 @@ class LinksUpdateTest extends MediaWikiTestCase {
                $this->assertSelect( $table, $fields, $condition, $expectedRows );
                return $update;
        }
-
-       protected function assertRecentChangeByCategorization(
-               Title $pageTitle, ParserOutput $parserOutput, Title $categoryTitle, $expectedRows
-       ) {
-               $update = new LinksUpdate( $pageTitle, $parserOutput );
-               $revision = Revision::newFromTitle( $pageTitle );
-               $update->setRevision( $revision );
-               $update->beginTransaction();
-               $update->doUpdate();
-               $update->commitTransaction();
-
-               $this->assertSelect(
-                       'recentchanges',
-                       'rc_title, rc_comment',
-                       array(
-                               'rc_type' => RC_CATEGORIZE,
-                               'rc_namespace' => NS_CATEGORY,
-                               'rc_title' => $categoryTitle->getDBkey()
-                       ),
-                       $expectedRows
-               );
-       }
 }
index 22ad6ce..7841f30 100644 (file)
@@ -102,12 +102,12 @@ class CSSMinTest extends MediaWikiTestCase {
                        array(
                                'Without trailing slash',
                                array( 'foo { prop: url(../bar.png); }', false, 'http://example.org/quux', false ),
-                               'foo { prop: url(http://example.org/quux/../bar.png); }',
+                               'foo { prop: url(http://example.org/bar.png); }',
                        ),
                        array(
                                'With trailing slash on remote (bug 27052)',
                                array( 'foo { prop: url(../bar.png); }', false, 'http://example.org/quux/', false ),
-                               'foo { prop: url(http://example.org/quux/../bar.png); }',
+                               'foo { prop: url(http://example.org/bar.png); }',
                        ),
                        array(
                                'Guard against stripping double slashes from query',
diff --git a/tests/phpunit/includes/libs/IPSetTest.php b/tests/phpunit/includes/libs/IPSetTest.php
deleted file mode 100644 (file)
index 5bbacef..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-<?php
-
-/**
- * @group IPSet
- */
-class IPSetTest extends PHPUnit_Framework_TestCase {
-       /**
-        * Provides test cases for IPSetTest::testIPSet
-        *
-        * Returns an array of test cases. Each case is an array of (description,
-        * config, tests).  Description is just text output for failure messages,
-        * config is an array constructor argument for IPSet, and the tests are
-        * an array of IP => expected (boolean) result against the config dataset.
-        */
-       public static function provideIPSets() {
-               return array(
-                       array(
-                               'old_list_subset',
-                               array(
-                                       '208.80.152.162',
-                                       '10.64.0.123',
-                                       '10.64.0.124',
-                                       '10.64.0.125',
-                                       '10.64.0.126',
-                                       '10.64.0.127',
-                                       '10.64.0.128',
-                                       '10.64.0.129',
-                                       '10.64.32.104',
-                                       '10.64.32.105',
-                                       '10.64.32.106',
-                                       '10.64.32.107',
-                                       '91.198.174.45',
-                                       '91.198.174.46',
-                                       '91.198.174.47',
-                                       '91.198.174.57',
-                                       '2620:0:862:1:A6BA:DBFF:FE30:CFB3',
-                                       '91.198.174.58',
-                                       '2620:0:862:1:A6BA:DBFF:FE38:FFDA',
-                                       '208.80.152.16',
-                                       '208.80.152.17',
-                                       '208.80.152.18',
-                                       '208.80.152.19',
-                                       '91.198.174.102',
-                                       '91.198.174.103',
-                                       '91.198.174.104',
-                                       '91.198.174.105',
-                                       '91.198.174.106',
-                                       '91.198.174.107',
-                                       '91.198.174.81',
-                                       '2620:0:862:1:26B6:FDFF:FEF5:B2D4',
-                                       '91.198.174.82',
-                                       '2620:0:862:1:26B6:FDFF:FEF5:ABB4',
-                                       '10.20.0.113',
-                                       '2620:0:862:102:26B6:FDFF:FEF5:AD9C',
-                                       '10.20.0.114',
-                                       '2620:0:862:102:26B6:FDFF:FEF5:7C38',
-                               ),
-                               array(
-                                       '0.0.0.0' => false,
-                                       '255.255.255.255' => false,
-                                       '10.64.0.122' => false,
-                                       '10.64.0.123' => true,
-                                       '10.64.0.124' => true,
-                                       '10.64.0.129' => true,
-                                       '10.64.0.130' => false,
-                                       '91.198.174.81' => true,
-                                       '91.198.174.80' => false,
-                                       '0::0' => false,
-                                       'ffff:ffff:ffff:ffff:FFFF:FFFF:FFFF:FFFF' => false,
-                                       '2001:db8::1234' => false,
-                                       '2620:0:862:1:26b6:fdff:fef5:abb3' => false,
-                                       '2620:0:862:1:26b6:fdff:fef5:abb4' => true,
-                                       '2620:0:862:1:26b6:fdff:fef5:abb5' => false,
-                               ),
-                       ),
-                       array(
-                               'new_cidr_set',
-                               array(
-                                       '208.80.154.0/26',
-                                       '2620:0:861:1::/64',
-                                       '208.80.154.128/26',
-                                       '2620:0:861:2::/64',
-                                       '208.80.154.64/26',
-                                       '2620:0:861:3::/64',
-                                       '208.80.155.96/27',
-                                       '2620:0:861:4::/64',
-                                       '10.64.0.0/22',
-                                       '2620:0:861:101::/64',
-                                       '10.64.16.0/22',
-                                       '2620:0:861:102::/64',
-                                       '10.64.32.0/22',
-                                       '2620:0:861:103::/64',
-                                       '10.64.48.0/22',
-                                       '2620:0:861:107::/64',
-                                       '91.198.174.0/25',
-                                       '2620:0:862:1::/64',
-                                       '10.20.0.0/24',
-                                       '2620:0:862:102::/64',
-                                       '10.128.0.0/24',
-                                       '2620:0:863:101::/64',
-                                       '10.2.4.26',
-                               ),
-                               array(
-                                       '0.0.0.0' => false,
-                                       '255.255.255.255' => false,
-                                       '10.2.4.25' => false,
-                                       '10.2.4.26' => true,
-                                       '10.2.4.27' => false,
-                                       '10.20.0.255' => true,
-                                       '10.128.0.0' => true,
-                                       '10.64.17.55' => true,
-                                       '10.64.20.0' => false,
-                                       '10.64.27.207' => false,
-                                       '10.64.31.255' => false,
-                                       '0::0' => false,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' => false,
-                                       '2001:DB8::1' => false,
-                                       '2620:0:861:106::45' => false,
-                                       '2620:0:862:103::' => false,
-                                       '2620:0:862:102:10:20:0:113' => true,
-                               ),
-                       ),
-                       array(
-                               'empty_set',
-                               array(),
-                               array(
-                                       '0.0.0.0' => false,
-                                       '255.255.255.255' => false,
-                                       '10.2.4.25' => false,
-                                       '10.2.4.26' => false,
-                                       '10.2.4.27' => false,
-                                       '10.20.0.255' => false,
-                                       '10.128.0.0' => false,
-                                       '10.64.17.55' => false,
-                                       '10.64.20.0' => false,
-                                       '10.64.27.207' => false,
-                                       '10.64.31.255' => false,
-                                       '0::0' => false,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' => false,
-                                       '2001:DB8::1' => false,
-                                       '2620:0:861:106::45' => false,
-                                       '2620:0:862:103::' => false,
-                                       '2620:0:862:102:10:20:0:113' => false,
-                               ),
-                       ),
-                       array(
-                               'edge_cases',
-                               array(
-                                       '0.0.0.0',
-                                       '255.255.255.255',
-                                       '::',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
-                                       '10.10.10.10/25', // host bits intentional
-                               ),
-                               array(
-                                       '0.0.0.0' => true,
-                                       '255.255.255.255' => true,
-                                       '10.2.4.25' => false,
-                                       '10.2.4.26' => false,
-                                       '10.2.4.27' => false,
-                                       '10.20.0.255' => false,
-                                       '10.128.0.0' => false,
-                                       '10.64.17.55' => false,
-                                       '10.64.20.0' => false,
-                                       '10.64.27.207' => false,
-                                       '10.64.31.255' => false,
-                                       '0::0' => true,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' => true,
-                                       '2001:DB8::1' => false,
-                                       '2620:0:861:106::45' => false,
-                                       '2620:0:862:103::' => false,
-                                       '2620:0:862:102:10:20:0:113' => false,
-                                       '10.10.9.255' => false,
-                                       '10.10.10.0' => true,
-                                       '10.10.10.1' => true,
-                                       '10.10.10.10' => true,
-                                       '10.10.10.126' => true,
-                                       '10.10.10.127' => true,
-                                       '10.10.10.128' => false,
-                                       '10.10.10.177' => false,
-                                       '10.10.10.255' => false,
-                                       '10.10.11.0' => false,
-                               ),
-                       ),
-                       array(
-                               'exercise_optimizer',
-                               array(
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffff:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fffe:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fffd:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fffc:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fffb:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fffa:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff9:8000/113',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff9:0/113',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff8:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff7:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff6:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff5:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff4:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff3:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff2:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff1:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff0:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffef:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffee:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffec:0/111',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffeb:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffea:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe9:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe8:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe7:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe6:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe5:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe4:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe3:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe2:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe1:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe0:0/110',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffc0:0/107',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffa0:0/107',
-                               ),
-                               array(
-                                       '0.0.0.0' => false,
-                                       '255.255.255.255' => false,
-                                       '::' => false,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ff9f:ffff' => false,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffa0:0' => true,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffc0:1234' => true,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffed:ffff' => true,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff4:4444' => true,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff9:8080' => true,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' => true,
-                               ),
-                       ),
-               );
-       }
-
-       /**
-        * Validates IPSet loading and matching code
-        *
-        * @covers IPSet
-        * @dataProvider provideIPSets
-        */
-       public function testIPSet( $desc, array $cfg, array $tests ) {
-               $ipset = new IPSet( $cfg );
-               foreach ( $tests as $ip => $expected ) {
-                       $result = $ipset->match( $ip );
-                       $this->assertEquals( $expected, $result, "Incorrect match() result for $ip in dataset $desc" );
-               }
-       }
-}
index cab6794..e88452b 100644 (file)
@@ -48,6 +48,7 @@ abstract class LogFormatterTestCase extends MediaWikiLangTestCase {
        }
 
        private static function removeSomeHtml( $html ) {
+               $html = str_replace( '&quot;', '"', $html );
                return trim( preg_replace( '/<(a|span)[^>]*>([^<]*)<\/\1>/', '$2', $html ) );
        }
 
diff --git a/tests/phpunit/includes/logging/ProtectLogFormatterTest.php b/tests/phpunit/includes/logging/ProtectLogFormatterTest.php
new file mode 100644 (file)
index 0000000..611b2df
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+
+class ProtectLogFormatterTest extends LogFormatterTestCase {
+
+       /**
+        * Provide different rows from the logging table to test
+        * for backward compatibility.
+        * Do not change the existing data, just add a new database row
+        */
+       public static function provideMoveProtLogDatabaseRows() {
+               return array(
+                       // Current format
+                       array(
+                               array(
+                                       'type' => 'protect',
+                                       'action' => 'move_prot',
+                                       'comment' => 'Move comment',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'NewPage',
+                                       'params' => array(
+                                               '4::oldtitle' => 'OldPage',
+                                       ),
+                               ),
+                               array(
+                                       'text' => 'User moved protection settings from OldPage to NewPage',
+                                       'api' => array(
+                                               'oldtitle_ns' => 0,
+                                               'oldtitle_title' => 'OldPage',
+                                       ),
+                               ),
+                       ),
+
+                       // Legacy format
+                       array(
+                               array(
+                                       'type' => 'protect',
+                                       'action' => 'move_prot',
+                                       'comment' => 'Move comment',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'NewPage',
+                                       'params' => array(
+                                               'OldPage',
+                                       ),
+                               ),
+                               array(
+                                       'legacy' => true,
+                                       'text' => 'User moved protection settings from OldPage to NewPage',
+                                       'api' => array(
+                                               'oldtitle_ns' => 0,
+                                               'oldtitle_title' => 'OldPage',
+                                       ),
+                               ),
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider provideMoveProtLogDatabaseRows
+        */
+       public function testMoveProtLogDatabaseRows( $row, $extra ) {
+               $this->doTestLogFormatter( $row, $extra );
+       }
+}
index fcc15d3..f5814e4 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 /**
  * @author Matthias Mullie <mmullie@wikimedia.org>
+ * @group BagOStuff
  */
 class BagOStuffTest extends MediaWikiTestCase {
        /** @var BagOStuff */
@@ -169,5 +170,12 @@ class BagOStuffTest extends MediaWikiTestCase {
 
                $value3 = $this->cache->getScopedLock( $key, 0 );
                $this->assertType( 'ScopedCallback', $value3, 'Lock returned callback after release' );
+               unset( $value3 );
+
+               $value1 = $this->cache->getScopedLock( $key, 0, 5, 'reentry' );
+               $value2 = $this->cache->getScopedLock( $key, 0, 5, 'reentry' );
+
+               $this->assertType( 'ScopedCallback', $value1, 'First reentrant call returned lock' );
+               $this->assertType( 'ScopedCallback', $value1, 'Second reentrant call returned lock' );
        }
 }
index bcfdead..f9ddcf2 100644 (file)
@@ -83,10 +83,12 @@ return array(
                        'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js',
                        'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.upload.test.js',
                        'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.watch.test.js',
+                       'tests/qunit/suites/resources/mediawiki.api/mediawiki.ForeignApi.test.js',
                        'tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.cookie.test.js',
+                       'tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js',
                ),
                'dependencies' => array(
                        'jquery.accessKeyLabel',
@@ -111,6 +113,7 @@ return array(
                        'mediawiki.api.parse',
                        'mediawiki.api.upload',
                        'mediawiki.api.watch',
+                       'mediawiki.ForeignApi.core',
                        'mediawiki.jqueryMsg',
                        'mediawiki.messagePoster',
                        'mediawiki.RegExp',
@@ -125,6 +128,7 @@ return array(
                        'mediawiki.language',
                        'mediawiki.cldr',
                        'mediawiki.cookie',
+                       'mediawiki.experiments',
                        'test.mediawiki.qunit.testrunner',
                ),
        )
diff --git a/tests/qunit/suites/resources/mediawiki.api/mediawiki.ForeignApi.test.js b/tests/qunit/suites/resources/mediawiki.api/mediawiki.ForeignApi.test.js
new file mode 100644 (file)
index 0000000..9d0fdf5
--- /dev/null
@@ -0,0 +1,39 @@
+( function ( mw ) {
+       QUnit.module( 'mediawiki.ForeignApi', QUnit.newMwEnvironment( {
+               setup: function () {
+                       this.server = this.sandbox.useFakeServer();
+                       this.server.respondImmediately = true;
+                       this.clock = this.sandbox.useFakeTimers();
+               },
+               teardown: function () {
+                       // https://github.com/jquery/jquery/issues/2453
+                       this.clock.tick();
+               }
+       } ) );
+
+       QUnit.test( 'origin is included in GET requests', function ( assert ) {
+               QUnit.expect( 1 );
+               var api = new mw.ForeignApi( '//localhost:4242/w/api.php' );
+
+               this.server.respond( function ( request ) {
+                       assert.ok( request.url.match( /origin=/ ), 'origin is included in GET requests' );
+                       request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
+               } );
+
+               api.get( {} );
+       } );
+
+       QUnit.test( 'origin is included in POST requests', function ( assert ) {
+               QUnit.expect( 2 );
+               var api = new mw.ForeignApi( '//localhost:4242/w/api.php' );
+
+               this.server.respond( function ( request ) {
+                       assert.ok( request.requestBody.match( /origin=/ ), 'origin is included in POST request body' );
+                       assert.ok( request.url.match( /origin=/ ), 'origin is included in POST request URL, too' );
+                       request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
+               } );
+
+               api.post( {} );
+       } );
+
+}( mediaWiki ) );
index de79198..26b6f57 100644 (file)
                api.get( { test: [ 'foo', 'bar', 'baz' ] } );
        } );
 
+       QUnit.test( 'Omitting false booleans', function ( assert ) {
+               QUnit.expect( 2 );
+               var api = new mw.Api();
+
+               this.server.respond( function ( request ) {
+                       assert.ok( !request.url.match( /foo/ ), 'foo query parameter is not present' );
+                       assert.ok( request.url.match( /bar=true/ ), 'bar query parameter is present with value true' );
+                       request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
+               } );
+
+               api.get( { foo: false, bar: true } );
+       } );
+
        QUnit.test( 'getToken() - cached', function ( assert ) {
                QUnit.expect( 2 );
                var api = new mw.Api();
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js
new file mode 100644 (file)
index 0000000..774b205
--- /dev/null
@@ -0,0 +1,63 @@
+( function ( mw ) {
+
+       var getBucket = mw.experiments.getBucket;
+
+       function createExperiment() {
+               return {
+                       name: 'experiment',
+                       enabled: true,
+                       buckets: {
+                               control: 0.25,
+                               A: 0.25,
+                               B: 0.25,
+                               C: 0.25
+                       }
+               };
+       }
+
+       QUnit.module( 'mediawiki.experiments' );
+
+       QUnit.test( 'getBucket( experiment, token )', 4, function ( assert ) {
+               var experiment = createExperiment(),
+                       token = '123457890';
+
+               assert.equal(
+                       getBucket( experiment, token ),
+                       getBucket( experiment, token ),
+                       'It returns the same bucket for the same experiment-token pair.'
+               );
+
+               // --------
+               experiment = createExperiment();
+               experiment.buckets = {
+                       A: 0.314159265359
+               };
+
+               assert.equal(
+                       'A',
+                       getBucket( experiment, token ),
+                       'It returns the bucket if only one is defined.'
+               );
+
+               // --------
+               experiment = createExperiment();
+               experiment.enabled = false;
+
+               assert.equal(
+                       'control',
+                       getBucket( experiment, token ),
+                       'It returns "control" if the experiment is disabled.'
+               );
+
+               // --------
+               experiment = createExperiment();
+               experiment.buckets = {};
+
+               assert.equal(
+                       'control',
+                       getBucket( experiment, token ),
+                       'It returns "control" if the experiment doesn\'t have any buckets.'
+               );
+       } );
+
+}( mediaWiki ) );
index 25bca87..f5eb8c9 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -221,7 +221,7 @@ function wfStreamThumb( array $params ) {
                wfThumbErrorText( 404, "The source file '$fileName' does not exist." );
                return;
        } elseif ( $img->getPath() === false ) {
-               wfThumbErrorText( 500, "The source file '$fileName' is not locally accessible." );
+               wfThumbErrorText( 400, "The source file '$fileName' is not locally accessible." );
                return;
        }
 
@@ -316,10 +316,10 @@ function wfStreamThumb( array $params ) {
 
        $user = RequestContext::getMain()->getUser();
        if ( !wfThumbIsStandard( $img, $params ) && $user->pingLimiter( 'renderfile-nonstandard' ) ) {
-               wfThumbError( 500, wfMessage( 'actionthrottledtext' )->parse() );
+               wfThumbError( 429, wfMessage( 'actionthrottledtext' )->parse() );
                return;
        } elseif ( $user->pingLimiter( 'renderfile' ) ) {
-               wfThumbError( 500, wfMessage( 'actionthrottledtext' )->parse() );
+               wfThumbError( 429, wfMessage( 'actionthrottledtext' )->parse() );
                return;
        }
 
@@ -332,6 +332,9 @@ function wfStreamThumb( array $params ) {
        $errorCode = 500;
        if ( !$thumb ) {
                $errorMsg = $errorMsg ?: $msg->rawParams( 'File::transform() returned false' )->escaped();
+               if ( $errorMsg instanceof MessageSpecifier && $errorMsg->getKey() === 'thumbnail_image-failure-limit' ) {
+                       $errorCode = 429;
+               }
        } elseif ( $thumb->isError() ) {
                $errorMsg = $thumb->getHtmlMsg();
        } elseif ( !$thumb->hasFile() ) {
@@ -555,7 +558,7 @@ function wfExtractThumbParams( $file, $params ) {
  * @return void
  */
 function wfThumbErrorText( $status, $msgText ) {
-       return wfThumbError( $status, htmlspecialchars( $msgText ) );
+       wfThumbError( $status, htmlspecialchars( $msgText ) );
 }
 
 /**
@@ -570,10 +573,8 @@ function wfThumbError( $status, $msgHtml ) {
 
        header( 'Cache-Control: no-cache' );
        header( 'Content-Type: text/html; charset=utf-8' );
-       if ( $status == 400 ) {
-               HttpStatus::header( 400 );
-       } elseif ( $status == 404 ) {
-               HttpStatus::header( 404 );
+       if ( $status == 400 || $status == 404 || $status == 429 ) {
+               HttpStatus::header( $status );
        } elseif ( $status == 403 ) {
                HttpStatus::header( 403 );
                header( 'Vary: Cookie' );