Merge "Create Kafka event relayer"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 20 Apr 2016 18:47:17 +0000 (18:47 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 20 Apr 2016 18:47:17 +0000 (18:47 +0000)
236 files changed:
autoload.php
composer.json
docs/extension.schema.json
includes/DummyLinker.php [new file with mode: 0644]
includes/Linker.php
includes/PageProps.php
includes/Title.php
includes/WatchedItem.php
includes/WatchedItemStore.php
includes/api/ApiStashEdit.php
includes/api/i18n/es.json
includes/api/i18n/fi.json
includes/api/i18n/nl.json
includes/changes/RecentChange.php
includes/externalstore/ExternalStoreDB.php
includes/htmlform/HTMLForm.php
includes/htmlform/HTMLFormField.php
includes/htmlform/HTMLFormFieldCloner.php
includes/htmlform/HTMLSubmitField.php
includes/installer/i18n/fi.json
includes/jobqueue/JobQueue.php
includes/jobqueue/JobQueueGroup.php
includes/jobqueue/JobQueueRedis.php
includes/libs/ArrayUtils.php
includes/objectcache/SqlBagOStuff.php
includes/page/WikiCategoryPage.php
includes/page/WikiPage.php
includes/skins/Skin.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialWatchlist.php
includes/specials/SpecialWithoutinterwiki.php
includes/title/MediaWikiPageLinkRenderer.php
includes/user/User.php
languages/Language.php
languages/i18n/af.json
languages/i18n/am.json
languages/i18n/an.json
languages/i18n/ar.json
languages/i18n/ary.json
languages/i18n/arz.json
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/avk.json
languages/i18n/awa.json
languages/i18n/az.json
languages/i18n/azb.json
languages/i18n/ba.json
languages/i18n/bcc.json
languages/i18n/bcl.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bgn.json
languages/i18n/bjn.json
languages/i18n/bn.json
languages/i18n/br.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/ckb.json
languages/i18n/cs.json
languages/i18n/cy.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/dsb.json
languages/i18n/el.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/ext.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/frp.json
languages/i18n/frr.json
languages/i18n/fy.json
languages/i18n/gd.json
languages/i18n/gl.json
languages/i18n/grc.json
languages/i18n/gsw.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hif-latn.json
languages/i18n/hr.json
languages/i18n/hrx.json
languages/i18n/hsb.json
languages/i18n/hu.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/ilo.json
languages/i18n/inh.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/kab.json
languages/i18n/kk-arab.json
languages/i18n/kk-cyrl.json
languages/i18n/kk-latn.json
languages/i18n/km.json
languages/i18n/kn.json
languages/i18n/ko.json
languages/i18n/krc.json
languages/i18n/ksh.json
languages/i18n/ku-latn.json
languages/i18n/la.json
languages/i18n/lad.json
languages/i18n/lb.json
languages/i18n/li.json
languages/i18n/lki.json
languages/i18n/lrc.json
languages/i18n/lt.json
languages/i18n/lus.json
languages/i18n/lv.json
languages/i18n/mai.json
languages/i18n/mdf.json
languages/i18n/mg.json
languages/i18n/min.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/mn.json
languages/i18n/mr.json
languages/i18n/ms.json
languages/i18n/mt.json
languages/i18n/my.json
languages/i18n/myv.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/nds.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/oc.json
languages/i18n/or.json
languages/i18n/pa.json
languages/i18n/pam.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pnb.json
languages/i18n/prg.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qu.json
languages/i18n/rm.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/rue.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/scn.json
languages/i18n/sco.json
languages/i18n/ses.json
languages/i18n/sh.json
languages/i18n/si.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sli.json
languages/i18n/sq.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/stq.json
languages/i18n/su.json
languages/i18n/sv.json
languages/i18n/sw.json
languages/i18n/szl.json
languages/i18n/ta.json
languages/i18n/te.json
languages/i18n/tg-cyrl.json
languages/i18n/tg-latn.json
languages/i18n/th.json
languages/i18n/tk.json
languages/i18n/tl.json
languages/i18n/tr.json
languages/i18n/tt-cyrl.json
languages/i18n/tt-latn.json
languages/i18n/ug-arab.json
languages/i18n/uk.json
languages/i18n/vec.json
languages/i18n/vep.json
languages/i18n/vi.json
languages/i18n/vo.json
languages/i18n/yi.json
languages/i18n/yo.json
languages/i18n/yue.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/rebuildrecentchanges.php
resources/lib/oojs-ui/i18n/krc.json
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-core-apex.css
resources/lib/oojs-ui/oojs-ui-core-mediawiki.css
resources/lib/oojs-ui/oojs-ui-core.js
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui-toolbars-apex.css
resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css
resources/lib/oojs-ui/oojs-ui-toolbars.js
resources/lib/oojs-ui/oojs-ui-widgets-apex.css
resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css
resources/lib/oojs-ui/oojs-ui-widgets.js
resources/lib/oojs-ui/oojs-ui-windows-apex.css
resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css
resources/lib/oojs-ui/oojs-ui-windows.js
resources/lib/oojs-ui/themes/apex/images/icons/flagUndo-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/flagUndo-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/flagUndo-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/flagUndo-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl.svg
resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.js
resources/src/startup.js
tests/phpunit/includes/changes/RecentChangeTest.php
tests/phpunit/includes/page/WikiCategoryPageTest.php [new file with mode: 0644]
tests/phpunit/includes/user/UserTest.php
tests/qunit/suites/resources/startup.test.js

index e941fc1..d3b7ba7 100644 (file)
@@ -357,7 +357,7 @@ $wgAutoloadLocalClasses = [
        'DoubleRedirectJob' => __DIR__ . '/includes/jobqueue/jobs/DoubleRedirectJob.php',
        'DoubleRedirectsPage' => __DIR__ . '/includes/specials/SpecialDoubleRedirects.php',
        'DoubleReplacer' => __DIR__ . '/includes/libs/replacers/DoubleReplacer.php',
-       'DummyLinker' => __DIR__ . '/includes/Linker.php',
+       'DummyLinker' => __DIR__ . '/includes/DummyLinker.php',
        'DummyTermColorer' => __DIR__ . '/maintenance/term/MWTerm.php',
        'Dump7ZipOutput' => __DIR__ . '/includes/export/Dump7ZipOutput.php',
        'DumpBZip2Output' => __DIR__ . '/includes/export/DumpBZip2Output.php',
@@ -618,6 +618,7 @@ $wgAutoloadLocalClasses = [
        'JobQueueFederated' => __DIR__ . '/includes/jobqueue/JobQueueFederated.php',
        'JobQueueGroup' => __DIR__ . '/includes/jobqueue/JobQueueGroup.php',
        'JobQueueMemory' => __DIR__ . '/includes/jobqueue/JobQueueMemory.php',
+       'JobQueueReadOnlyError' => __DIR__ . '/includes/jobqueue/JobQueue.php',
        'JobQueueRedis' => __DIR__ . '/includes/jobqueue/JobQueueRedis.php',
        'JobRunner' => __DIR__ . '/includes/jobqueue/JobRunner.php',
        'JobSpecification' => __DIR__ . '/includes/jobqueue/JobSpecification.php',
index 6b7898d..3bea9ea 100644 (file)
@@ -25,7 +25,7 @@
                "ext-xml": "*",
                "liuggio/statsd-php-client": "1.0.18",
                "mediawiki/at-ease": "1.1.0",
-               "oojs/oojs-ui": "0.16.5",
+               "oojs/oojs-ui": "0.16.6",
                "oyejorge/less.php": "1.7.0.10",
                "php": ">=5.5.9",
                "psr/log": "1.0.0",
index a743afa..370e18e 100644 (file)
                                                                        "type": "string",
                                                                        "description": "Equivalent of remoteBasePath, but relative to $wgExtensionAssetsPath"
                                                                },
+                                                               "skipFunction": {
+                                                                       "type": "string",
+                                                                       "description": "Modules that provide fallback functionality can provide a \"skip function\". This function, if provided, will be passed along to the module registry on the client. When this module is loaded (either directly or as a dependency of another module), then this function is executed first. If the function returns true, the module will instantly be considered \"ready\" without requesting the associated module resources. The value returned here must be valid javascript for execution in a private function. It must not contain the \"function () {\" and \"}\" wrapper though."
+                                                               },
                                                                "scripts": {
                                                                        "type": ["string", "array"],
                                                                        "description": "Scripts to always include (array of file paths)",
diff --git a/includes/DummyLinker.php b/includes/DummyLinker.php
new file mode 100644 (file)
index 0000000..45535ce
--- /dev/null
@@ -0,0 +1,517 @@
+<?php
+
+/**
+ * @since 1.18
+ */
+class DummyLinker {
+
+       /**
+        * @deprecated since 1.27
+        */
+       public function getInterwikiLinkAttributes( $title, $unused = null, $class = 'external' ) {
+               wfDeprecated( __METHOD__, '1.27' );
+               return Linker::getInterwikiLinkAttributes(
+                       $title,
+                       $unused,
+                       $class
+               );
+       }
+
+       /**
+        * @deprecated since 1.27
+        */
+       public function getInternalLinkAttributes( $title, $unused = null, $class = '' ) {
+               wfDeprecated( __METHOD__, '1.27' );
+               return Linker::getInternalLinkAttributes(
+                       $title,
+                       $unused,
+                       $class
+               );
+       }
+
+       /**
+        * @deprecated since 1.27
+        */
+       public function getInternalLinkAttributesObj(
+               $nt,
+               $unused = null,
+               $class = '',
+               $title = false
+       ) {
+               wfDeprecated( __METHOD__, '1.27' );
+               return Linker::getInternalLinkAttributesObj(
+                       $nt,
+                       $unused,
+                       $class,
+                       $title
+               );
+       }
+
+       public function getLinkColour( $t, $threshold ) {
+               return Linker::getLinkColour( $t, $threshold );
+       }
+
+       public function link(
+               $target,
+               $html = null,
+               $customAttribs = [ ],
+               $query = [ ],
+               $options = [ ]
+       ) {
+               return Linker::link(
+                       $target,
+                       $html,
+                       $customAttribs,
+                       $query,
+                       $options
+               );
+       }
+
+       public function linkKnown(
+               $target,
+               $html = null,
+               $customAttribs = [ ],
+               $query = [ ],
+               $options = [ 'known', 'noclasses' ]
+       ) {
+               return Linker::linkKnown(
+                       $target,
+                       $html,
+                       $customAttribs,
+                       $query,
+                       $options
+               );
+       }
+
+       public function makeSelfLinkObj(
+               $nt,
+               $html = '',
+               $query = '',
+               $trail = '',
+               $prefix = ''
+       ) {
+               return Linker::makeSelfLinkObj(
+                       $nt,
+                       $html,
+                       $query,
+                       $trail,
+                       $prefix
+               );
+       }
+
+       public function getInvalidTitleDescription(
+               IContextSource $context,
+               $namespace,
+               $title
+       ) {
+               return Linker::getInvalidTitleDescription(
+                       $context,
+                       $namespace,
+                       $title
+               );
+       }
+
+       public function normaliseSpecialPage( Title $title ) {
+               return Linker::normaliseSpecialPage( $title );
+       }
+
+       public function makeExternalImage( $url, $alt = '' ) {
+               return Linker::makeExternalImage( $url, $alt );
+       }
+
+       public function makeImageLink(
+               Parser $parser,
+               Title $title,
+               $file,
+               $frameParams = [ ],
+               $handlerParams = [ ],
+               $time = false,
+               $query = "",
+               $widthOption = null
+       ) {
+               return Linker::makeImageLink(
+                       $parser,
+                       $title,
+                       $file,
+                       $frameParams,
+                       $handlerParams,
+                       $time,
+                       $query,
+                       $widthOption
+               );
+       }
+
+       public function makeThumbLinkObj(
+               Title $title,
+               $file,
+               $label = '',
+               $alt,
+               $align = 'right',
+               $params = [ ],
+               $framed = false,
+               $manualthumb = ""
+       ) {
+               return Linker::makeThumbLinkObj(
+                       $title,
+                       $file,
+                       $label,
+                       $alt,
+                       $align,
+                       $params,
+                       $framed,
+                       $manualthumb
+               );
+       }
+
+       public function makeThumbLink2(
+               Title $title,
+               $file,
+               $frameParams = [ ],
+               $handlerParams = [ ],
+               $time = false,
+               $query = ""
+       ) {
+               return Linker::makeThumbLink2(
+                       $title,
+                       $file,
+                       $frameParams,
+                       $handlerParams,
+                       $time,
+                       $query
+               );
+       }
+
+       public function processResponsiveImages( $file, $thumb, $hp ) {
+               Linker::processResponsiveImages(
+                       $file,
+                       $thumb,
+                       $hp
+               );
+       }
+
+       public function makeBrokenImageLinkObj(
+               $title,
+               $label = '',
+               $query = '',
+               $unused1 = '',
+               $unused2 = '',
+               $time = false
+       ) {
+               return Linker::makeBrokenImageLinkObj(
+                       $title,
+                       $label,
+                       $query,
+                       $unused1,
+                       $unused2,
+                       $time
+               );
+       }
+
+       public function makeMediaLinkObj( $title, $html = '', $time = false ) {
+               return Linker::makeMediaLinkObj(
+                       $title,
+                       $html,
+                       $time
+               );
+       }
+
+       public function makeMediaLinkFile( Title $title, $file, $html = '' ) {
+               return Linker::makeMediaLinkFile(
+                       $title,
+                       $file,
+                       $html
+               );
+       }
+
+       public function specialLink( $name, $key = '' ) {
+               return Linker::specialLink( $name, $key );
+       }
+
+       public function makeExternalLink(
+               $url,
+               $text,
+               $escape = true,
+               $linktype = '',
+               $attribs = [ ],
+               $title = null
+       ) {
+               return Linker::makeExternalLink(
+                       $url,
+                       $text,
+                       $escape,
+                       $linktype,
+                       $attribs,
+                       $title
+               );
+       }
+
+       public function userLink( $userId, $userName, $altUserName = false ) {
+               return Linker::userLink(
+                       $userId,
+                       $userName,
+                       $altUserName
+               );
+       }
+
+       public function userToolLinks(
+               $userId,
+               $userText,
+               $redContribsWhenNoEdits = false,
+               $flags = 0,
+               $edits = null
+       ) {
+               return Linker::userToolLinks(
+                       $userId,
+                       $userText,
+                       $redContribsWhenNoEdits,
+                       $flags,
+                       $edits
+               );
+       }
+
+       public function userToolLinksRedContribs( $userId, $userText, $edits = null ) {
+               return Linker::userToolLinksRedContribs(
+                       $userId,
+                       $userText,
+                       $edits
+               );
+       }
+
+       public function userTalkLink( $userId, $userText ) {
+               return Linker::userTalkLink( $userId, $userText );
+       }
+
+       public function blockLink( $userId, $userText ) {
+               return Linker::blockLink( $userId, $userText );
+       }
+
+       public function emailLink( $userId, $userText ) {
+               return Linker::emailLink( $userId, $userText );
+       }
+
+       public function revUserLink( $rev, $isPublic = false ) {
+               return Linker::revUserLink( $rev, $isPublic );
+       }
+
+       public function revUserTools( $rev, $isPublic = false ) {
+               return Linker::revUserTools( $rev, $isPublic );
+       }
+
+       public function formatComment(
+               $comment,
+               $title = null,
+               $local = false,
+               $wikiId = null
+       ) {
+               return Linker::formatComment(
+                       $comment,
+                       $title,
+                       $local,
+                       $wikiId
+               );
+       }
+
+       public function formatLinksInComment(
+               $comment,
+               $title = null,
+               $local = false,
+               $wikiId = null
+       ) {
+               return Linker::formatLinksInComment(
+                       $comment,
+                       $title,
+                       $local,
+                       $wikiId
+               );
+       }
+
+       public function makeCommentLink(
+               Title $title,
+               $text,
+               $wikiId = null,
+               $options = [ ]
+       ) {
+               return Linker::makeCommentLink(
+                       $title,
+                       $text,
+                       $wikiId,
+                       $options
+               );
+       }
+
+       public function normalizeSubpageLink( $contextTitle, $target, &$text ) {
+               return Linker::normalizeSubpageLink(
+                       $contextTitle,
+                       $target,
+                       $text
+               );
+       }
+
+       public function commentBlock(
+               $comment,
+               $title = null,
+               $local = false,
+               $wikiId = null
+       ) {
+               return Linker::commentBlock(
+                       $comment,
+                       $title,
+                       $local,
+                       $wikiId
+               );
+       }
+
+       public function revComment( Revision $rev, $local = false, $isPublic = false ) {
+               return Linker::revComment( $rev, $local, $isPublic );
+       }
+
+       public function formatRevisionSize( $size ) {
+               return Linker::formatRevisionSize( $size );
+       }
+
+       public function tocIndent() {
+               return Linker::tocIndent();
+       }
+
+       public function tocUnindent( $level ) {
+               return Linker::tocUnindent( $level );
+       }
+
+       public function tocLine( $anchor, $tocline, $tocnumber, $level, $sectionIndex = false ) {
+               return Linker::tocLine(
+                       $anchor,
+                       $tocline,
+                       $tocnumber,
+                       $level,
+                       $sectionIndex
+               );
+       }
+
+       public function tocLineEnd() {
+               return Linker::tocLineEnd();
+       }
+
+       public function tocList( $toc, $lang = false ) {
+               return Linker::tocList( $toc, $lang );
+       }
+
+       public function generateTOC( $tree, $lang = false ) {
+               return Linker::generateTOC( $tree, $lang );
+       }
+
+       public function makeHeadline(
+               $level,
+               $attribs,
+               $anchor,
+               $html,
+               $link,
+               $legacyAnchor = false
+       ) {
+               return Linker::makeHeadline(
+                       $level,
+                       $attribs,
+                       $anchor,
+                       $html,
+                       $link,
+                       $legacyAnchor
+               );
+       }
+
+       public function splitTrail( $trail ) {
+               return Linker::splitTrail( $trail );
+       }
+
+       public function generateRollback(
+               $rev,
+               IContextSource $context = null,
+               $options = [ 'verify' ]
+       ) {
+               return Linker::generateRollback(
+                       $rev,
+                       $context,
+                       $options
+               );
+       }
+
+       public function getRollbackEditCount( $rev, $verify ) {
+               return Linker::getRollbackEditCount( $rev, $verify );
+       }
+
+       public function buildRollbackLink(
+               $rev,
+               IContextSource $context = null,
+               $editCount = false
+       ) {
+               return Linker::buildRollbackLink(
+                       $rev,
+                       $context,
+                       $editCount
+               );
+       }
+
+       public function formatTemplates(
+               $templates,
+               $preview = false,
+               $section = false,
+               $more = null
+       ) {
+               return Linker::formatTemplates(
+                       $templates,
+                       $preview,
+                       $section,
+                       $more
+               );
+       }
+
+       public function formatHiddenCategories( $hiddencats ) {
+               return Linker::formatHiddenCategories( $hiddencats );
+       }
+
+       public function formatSize( $size ) {
+               return Linker::formatSize( $size );
+       }
+
+       public function titleAttrib( $name, $options = null, array $msgParams = [ ] ) {
+               return Linker::titleAttrib(
+                       $name,
+                       $options,
+                       $msgParams
+               );
+       }
+
+       public function accesskey( $name ) {
+               return Linker::accesskey( $name );
+       }
+
+       public function getRevDeleteLink( User $user, Revision $rev, Title $title ) {
+               return Linker::getRevDeleteLink(
+                       $user,
+                       $rev,
+                       $title
+               );
+       }
+
+       public function revDeleteLink( $query = [ ], $restricted = false, $delete = true ) {
+               return Linker::revDeleteLink(
+                       $query,
+                       $restricted,
+                       $delete
+               );
+       }
+
+       public function revDeleteLinkDisabled( $delete = true ) {
+               return Linker::revDeleteLinkDisabled( $delete );
+       }
+
+       public function tooltipAndAccesskeyAttribs( $name, array $msgParams = [ ] ) {
+               return Linker::tooltipAndAccesskeyAttribs(
+                       $name,
+                       $msgParams
+               );
+       }
+
+       public function tooltip( $name, $options = null ) {
+               return Linker::tooltip( $name, $options );
+       }
+
+}
index 4ba3a75..a5c85a9 100644 (file)
@@ -2360,20 +2360,3 @@ class Linker {
 
 }
 
-/**
- * @since 1.18
- */
-class DummyLinker {
-
-       /**
-        * Use PHP's magic __call handler to transform instance calls to a dummy instance
-        * into static calls to the new Linker for backwards compatibility.
-        *
-        * @param string $fname Name of called method
-        * @param array $args Arguments to the method
-        * @return mixed
-        */
-       public function __call( $fname, $args ) {
-               return call_user_func_array( [ 'Linker', $fname ], $args );
-       }
-}
index bc3e3f1..3654384 100644 (file)
@@ -33,6 +33,33 @@ class PageProps {
         */
        private static $instance;
 
+       /**
+        * Overrides the default instance of this class
+        * This is intended for use while testing and will fail if MW_PHPUNIT_TEST is not defined.
+        *
+        * If this method is used it MUST also be called with null after a test to ensure a new
+        * default instance is created next time getInstance is called.
+        *
+        * @since 1.27
+        *
+        * @param PageProps|null $store
+        *
+        * @return ScopedCallback to reset the overridden value
+        * @throws MWException
+        */
+       public static function overrideInstance( PageProps $store = null ) {
+               if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
+                       throw new MWException(
+                               'Cannot override ' . __CLASS__ . 'default instance in operation.'
+                       );
+               }
+               $previousValue = self::$instance;
+               self::$instance = $store;
+               return new ScopedCallback( function() use ( $previousValue ) {
+                       self::$instance = $previousValue;
+               } );
+       }
+
        /**
         * @return PageProps
         */
index 95588a2..3fd4631 100644 (file)
@@ -248,6 +248,10 @@ class Title implements LinkTarget {
         * @return Title
         */
        public static function newFromLinkTarget( LinkTarget $linkTarget ) {
+               if ( $linkTarget instanceof Title ) {
+                       // Special case if it's already a Title object
+                       return $linkTarget;
+               }
                return self::makeTitle(
                        $linkTarget->getNamespace(),
                        $linkTarget->getText(),
index 0495536..4dbe0f6 100644 (file)
@@ -140,11 +140,7 @@ class WatchedItem {
         */
        public function getTitle() {
                if ( !$this->title ) {
-                       if ( $this->linkTarget instanceof Title ) {
-                               $this->title = $this->linkTarget;
-                       } else {
-                               $this->title = Title::newFromLinkTarget( $this->linkTarget );
-                       }
+                       $this->title = Title::newFromLinkTarget( $this->linkTarget );
                }
                return $this->title;
        }
index 8ae7932..5e99f8e 100644 (file)
@@ -905,12 +905,8 @@ class WatchedItemStore implements StatsdAwareInterface {
         * @param LinkTarget $newTarget
         */
        public function duplicateAllAssociatedEntries( LinkTarget $oldTarget, LinkTarget $newTarget ) {
-               if ( !$oldTarget instanceof Title ) {
-                       $oldTarget = Title::newFromLinkTarget( $oldTarget );
-               }
-               if ( !$newTarget instanceof Title ) {
-                       $newTarget = Title::newFromLinkTarget( $newTarget );
-               }
+               $oldTarget = Title::newFromLinkTarget( $oldTarget );
+               $newTarget = Title::newFromLinkTarget( $newTarget );
 
                $this->duplicateEntry( $oldTarget->getSubjectPage(), $newTarget->getSubjectPage() );
                $this->duplicateEntry( $oldTarget->getTalkPage(), $newTarget->getTalkPage() );
index 3c02c9c..cc8e390 100644 (file)
@@ -272,18 +272,18 @@ class ApiStashEdit extends ApiBase {
                        }
 
                        $timeMs = 1000 * max( 0, microtime( true ) - $start );
-                       $stats->timing( 'editstash.lock-wait-time', $timeMs );
+                       $stats->timing( 'editstash.lock_wait_time', $timeMs );
                }
 
                if ( !is_object( $editInfo ) || !$editInfo->output ) {
-                       $stats->increment( 'editstash.cache-misses' );
+                       $stats->increment( 'editstash.cache_misses.no_stash' );
                        $logger->debug( "No cache value for key '$key'." );
                        return false;
                }
 
                $time = wfTimestamp( TS_UNIX, $editInfo->output->getTimestamp() );
                if ( ( time() - $time ) <= 3 ) {
-                       $stats->increment( 'editstash.cache-hits' );
+                       $stats->increment( 'editstash.cache_hits.presumed_fresh' );
                        $logger->debug( "Timestamp-based cache hit for key '$key'." );
                        return $editInfo; // assume nothing changed
                }
@@ -312,7 +312,7 @@ class ApiStashEdit extends ApiBase {
                        }
 
                        if ( $changed || $res->numRows() != $templateUses ) {
-                               $stats->increment( 'editstash.cache-misses' );
+                               $stats->increment( 'editstash.cache_misses.proven_stale' );
                                $logger->info( "Stale cache for key '$key'; template changed." );
                                return false;
                        }
@@ -336,13 +336,13 @@ class ApiStashEdit extends ApiBase {
                        }
 
                        if ( $changed || $res->numRows() != count( $files ) ) {
-                               $stats->increment( 'editstash.cache-misses' );
+                               $stats->increment( 'editstash.cache_misses.proven_stale' );
                                $logger->info( "Stale cache for key '$key'; file changed." );
                                return false;
                        }
                }
 
-               $stats->increment( 'editstash.cache-hits' );
+               $stats->increment( 'editstash.cache_hits.proven_fresh' );
                $logger->debug( "Cache hit for key '$key'." );
 
                return $editInfo;
index 9b9d348..c4479a4 100644 (file)
        "apihelp-query+imageinfo-param-prop": "Qué información del archivo se obtendrá:",
        "apihelp-query+imageinfo-paramvalue-prop-user": "Añade el usuario que subió cada versión del archivo.",
        "apihelp-query+imageinfo-paramvalue-prop-userid": "Añade la ID de usuario que subió cada versión del archivo.",
-       "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Agrega la canónica título del archivo.",
+       "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Agrega el título canónico del archivo.",
        "apihelp-query+imageinfo-param-limit": "Cuántos revisiones de archivos se devolverán por perfil.",
        "apihelp-query+imageinfo-param-urlheight": "Similar a $1urlwidth.",
        "apihelp-query+imageinfo-param-extmetadatafilter": "Si se especifica y no vacío, sólo estas claves serán devueltos por $1prop=extmetadata.",
index f21ae2a..4ea465c 100644 (file)
@@ -5,34 +5,77 @@
                        "MrTapsa",
                        "Pitke",
                        "Stryn",
-                       "Jaakkoh"
+                       "Jaakkoh",
+                       "01miki10"
                ]
        },
+       "apihelp-main-param-action": "Mikä toiminto suoritetaan.",
+       "apihelp-main-param-curtimestamp": "Sisällytä nykyinen aikaleima tulokseen.",
        "apihelp-block-description": "Estä käyttäjä.",
+       "apihelp-block-param-user": "Käyttäjä, IP-osoite tai IP-osoitealue, joka estetään.",
+       "apihelp-block-param-expiry": "Päättymisaika. Voi olla suhteellinen (esim. <kbd>5 months</kbd> tai <kbd>2 weeks</kbd>) tai absoluuttinen (esim. <kbd>2014-09-18T12:34:56Z</kbd>). Jos asetetaan <kbd>infinite</kbd>, <kbd>indefinite</kbd> tai <kbd>never</kbd>, esto ei pääty koskaan.",
        "apihelp-block-param-reason": "Eston syy.",
+       "apihelp-block-param-anononly": "Estä vain anonyymit käytäjät (ts. estä anonyymit muokkaukset tästä IP-osoitteesta)",
+       "apihelp-block-param-nocreate": "Estä tunnusten luonti.",
+       "apihelp-block-param-autoblock": "Estä automaattisesti viimeksi käytetty IP-osoite, ja ne osoitteet, joista hän yrittää kirjautua sisään.",
+       "apihelp-block-param-noemail": "Estä käyttäjää lähettämästä sähköpostia wikin kautta. (Vaatii oikeuden <code>blockemail</code>.)",
+       "apihelp-block-param-hidename": "Piilota käyttäjänimi estolokista. (Vaatii oikeuden <code>hideuser</code>.)",
+       "apihelp-block-param-allowusertalk": "Salli käyttäjän muokata omaa keskustelusivuaan (riippuu asetuksesta <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
+       "apihelp-block-param-reblock": "Jos käyttäjä on jo estetty, korvaa nykyinen esto.",
+       "apihelp-block-param-watchuser": "Tarkkaile käyttäjän tai IP-osoitteen käyttäjä- ja keskustelusivuja.",
+       "apihelp-block-example-ip-simple": "Estä IP-osoite <kbd>192.0.2.5</kbd> kolmeksi päiväksi syystä <kbd>First strike</kbd>.",
+       "apihelp-block-example-user-complex": "Estä käyttäjä <kbd>Vandal</kbd> ikuisesti syystä <kbd>Vandalism</kbd>, sekä estä uusien käyttäjien luonti ja sähköpostin lähetys.",
        "apihelp-compare-param-fromtitle": "Ensimmäinen vertailtava otsikko.",
+       "apihelp-createaccount-description": "Luo uusi käyttäjätunnus.",
        "apihelp-createaccount-param-name": "Käyttäjätunnus.",
        "apihelp-createaccount-param-email": "Käyttäjän sähköpostiosoite (valinnainen).",
        "apihelp-createaccount-param-realname": "Käyttäjän oikea nimi (valinnainen).",
        "apihelp-delete-description": "Poista sivu.",
        "apihelp-delete-param-watch": "Lisää sivu nykyisen käyttäjän tarkkailulistalle.",
+       "apihelp-delete-param-unwatch": "Poista sivu nykyisen käyttäjän tarkkailulistalta.",
+       "apihelp-delete-example-simple": "Poista <kbd>Main Page</kbd>.",
+       "apihelp-delete-example-reason": "Poista <kbd>Main Page</kbd> syystä <kbd>Preparing for move</kbd>.",
+       "apihelp-disabled-description": "Tämä moduuli on poistettu käytöstä.",
        "apihelp-edit-description": "Luo ja muokkaa sivuja.",
        "apihelp-edit-param-text": "Sivun sisältö.",
        "apihelp-edit-param-minor": "Pieni muokkaus.",
        "apihelp-edit-param-notminor": "Ei-pieni muokkaus.",
+       "apihelp-edit-param-bot": "Merkitse tämä muokkaus bottimuokkaukseksi.",
+       "apihelp-edit-param-createonly": "Älä muokkaa sivua, jos se on jo olemassa.",
+       "apihelp-edit-param-watch": "Lisää sivu nykyisen käyttäjän tarkkailulistalle.",
+       "apihelp-edit-param-unwatch": "Poista sivu nykyisen käyttäjän tarkkailulistalta.",
        "apihelp-edit-example-edit": "Muokkaa sivua.",
        "apihelp-emailuser-description": "Lähetä sähköpostia käyttäjälle.",
        "apihelp-emailuser-param-subject": "Otsikko.",
        "apihelp-emailuser-param-ccme": "Lähetä kopio tästä viestistä minulle.",
        "apihelp-emailuser-example-email": "Lähetä käyttäjälle <kbd>WikiSysop</kbd> sähköposti, jossa lukee <kbd>Content</kbd>.",
        "apihelp-expandtemplates-param-title": "Sivun otsikko.",
+       "apihelp-feedcontributions-param-year": "Alkaen vuodesta (ja aiemmin).",
+       "apihelp-feedcontributions-param-month": "Alkaen kuukaudesta (ja aiemmin).",
+       "apihelp-feedcontributions-param-tagfilter": "Suodata muokkaukset, joissa on nämä merkkaukset.",
+       "apihelp-feedcontributions-param-deletedonly": "Näytä vain poistetut muokkaukset.",
+       "apihelp-feedcontributions-param-toponly": "Näytä vain muokkaukset, jotka ovat viimeisimpiä versioita.",
+       "apihelp-feedcontributions-param-newonly": "Näytä vain muokkaukset, joilla on luotu sivu.",
        "apihelp-feedrecentchanges-param-limit": "Kerralla näytettävien tulosten enimmäismäärä.",
        "apihelp-feedrecentchanges-param-hideminor": "Piilota pienet muutokset.",
        "apihelp-feedrecentchanges-param-hideanons": "Piilota kirjautumattomien käyttäjien tekemät muutokset.",
        "apihelp-feedrecentchanges-param-hideliu": "Piilota rekisteröityneiden käyttäjien tekemät muutokset.",
+       "apihelp-feedrecentchanges-example-simple": "Näytä tuoreet muutokset.",
        "apihelp-filerevert-param-filename": "Kohteen nimi ilman File:-etuliitettä.",
        "apihelp-filerevert-param-comment": "Tallennuksen kommentti.",
        "apihelp-imagerotate-description": "Käännä kuva tai kuvia.",
+       "apihelp-login-example-login": "Kirjaudu sisään.",
+       "apihelp-logout-description": "Kirjaudu ulos ja tyhjennä istunnon tiedot.",
+       "apihelp-logout-example-logout": "Kirjaa nykyinen käyttäjä ulos.",
+       "apihelp-managetags-example-create": "Luo merkkaus nimeltä <kbd>spam</kbd> syystä <kbd>For use in edit patrolling</kbd>",
+       "apihelp-managetags-example-delete": "Poista merkkaus <kbd>vandlaism</kbd> syystä <kbd>Misspelt</kbd>",
+       "apihelp-managetags-example-activate": "Ota käyttöön merkkaus nimeltä <kbd>spam</kbd> syystä <kbd>For use in edit patrolling</kbd>",
+       "apihelp-managetags-example-deactivate": "Poista käytöstä merkkaus nimeltä <kbd>spam</kbd> syystä <kbd>No longer required</kbd>",
+       "apihelp-mergehistory-description": "Yhdistä sivujen muutoshistoriat.",
+       "apihelp-move-description": "Siirrä sivu.",
+       "apihelp-move-param-noredirect": "Älä luo ohjausta.",
+       "apihelp-move-param-watch": "Lisää sivu ja ohjaus nykyisen käyttäjän tarkkailulistalle.",
+       "apihelp-move-param-unwatch": "Poista sivu ja ohjaus nykyisen käyttäjän tarkkailulistalta.",
        "apihelp-query+linkshere-param-show": "Näytä vain kohteet, jotka täyttävät nämä kriteerit:\n;redirect:Näytä vain uudelleenohjaukset.\n;!redirect:Näytä vain ei-uudelleenohjaukset",
        "apihelp-tag-example-rev": "Lisää tunniste <kbd>vandalism</kbd> versioon 123 antamatta perustelua.",
        "apihelp-upload-param-stash": "Mikäli valittu, palvelin säilöö tiedoston väliaikaisesti tallentamisen sijaan."
index acb3bdb..865ebd9 100644 (file)
@@ -34,7 +34,7 @@
        "apihelp-block-param-reblock": "De huidige blokkade aanpassen als de gebruiker al geblokkeerd is.",
        "apihelp-block-param-watchuser": "De gebruikerspagina en overlegpagina van de gebruiker of het IP-adres volgen.",
        "apihelp-block-example-ip-simple": "Het IP-adres <kbd>192.0.2.5</kbd> voor drie dagen blokkeren met <kbd>First strike</kbd> als opgegeven reden.",
-       "apihelp-checktoken-param-type": "Type token wordt getest.",
+       "apihelp-checktoken-param-type": "Tokentype wordt getest.",
        "apihelp-compare-param-fromtitle": "Eerste paginanaam om te vergelijken.",
        "apihelp-compare-param-fromid": "Eerste pagina-ID om te vergelijken.",
        "apihelp-compare-param-fromrev": "Eerste versie om te vergelijken.",
        "apihelp-protect-example-protect": "Een pagina beveiligen",
        "apihelp-query+alldeletedrevisions-param-tag": "Alleen versies weergeven met dit label.",
        "apihelp-query+allmessages-param-enableparser": "Stel in om de parser in te schakelen, zorgt voor het voorverwerken van de wikitekst van een bericht (vervangen van magische woorden, de afhandeling van sjablonen, enzovoort).",
-       "apihelp-query+mystashedfiles-paramvalue-prop-type": "Ophalen van het bestand MIME-type en type media.",
+       "apihelp-query+mystashedfiles-paramvalue-prop-type": "Vraag het MIME- en mediatype van het bestand op.",
        "apihelp-query+blocks-paramvalue-prop-flags": "Labelt de blokkade met (automatische blokkade, alleen anoniem, enzovoort).",
        "apihelp-query+deletedrevisions-param-tag": "Alleen versies weergeven met dit label.",
        "apihelp-query+deletedrevs-param-tag": "Alleen versies weergeven met dit label.",
index 3fe5f2f..159cfd9 100644 (file)
@@ -851,7 +851,9 @@ class RecentChange {
                        'rc_logid' => 0,
                        'rc_log_type' => null,
                        'rc_log_action' => '',
-                       'rc_params' => ''
+                       'rc_params' =>  serialize( [
+                               'hidden-cat' => WikiCategoryPage::factory( $categoryTitle )->isHidden()
+                       ] )
                ];
 
                $rc->mExtra = [
@@ -865,6 +867,19 @@ class RecentChange {
                return $rc;
        }
 
+       /**
+        * Get a parameter value
+        *
+        * @since 1.27
+        *
+        * @param string $name parameter name
+        * @return mixed
+        */
+       public function getParam( $name ) {
+               $params = $this->parseParams();
+               return isset( $params[$name] ) ? $params[$name] : null;
+       }
+
        /**
         * Initialises the members of this object from a mysql row object
         *
index a75ed27..b454577 100644 (file)
@@ -33,6 +33,8 @@ class ExternalStoreDB extends ExternalStoreMedium {
         * The provided URL is in the form of DB://cluster/id
         * or DB://cluster/id/itemid for concatened storage.
         *
+        * @param string $url
+        * @return string|bool False if missing
         * @see ExternalStoreMedium::fetchFromURL()
         */
        public function fetchFromURL( $url ) {
@@ -83,11 +85,8 @@ class ExternalStoreDB extends ExternalStoreMedium {
                return $ret;
        }
 
-       /**
-        * @see ExternalStoreMedium::store()
-        */
-       public function store( $cluster, $data ) {
-               $dbw = $this->getMaster( $cluster );
+       public function store( $location, $data ) {
+               $dbw = $this->getMaster( $location );
                $id = $dbw->nextSequenceValue( 'blob_blob_id_seq' );
                $dbw->insert( $this->getTable( $dbw ),
                        [ 'blob_id' => $id, 'blob_text' => $data ],
@@ -97,7 +96,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
                        throw new MWException( __METHOD__ . ': no insert ID' );
                }
 
-               return "DB://$cluster/$id";
+               return "DB://$location/$id";
        }
 
        /**
@@ -175,7 +174,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
         * @param string $cluster
         * @param string $id
         * @param string $itemID
-        * @return mixed
+        * @return HistoryBlob|bool Returns false if missing
         * @private
         */
        function fetchBlob( $cluster, $id, $itemID ) {
index 1cc41f7..2b6a0aa 100644 (file)
@@ -1491,7 +1491,7 @@ class HTMLForm extends ContextSource {
 
                foreach ( $fields as $key => $value ) {
                        if ( $value instanceof HTMLFormField ) {
-                               $v = empty( $value->mParams['nodata'] )
+                               $v = isset( $this->mFieldData[$key] )
                                        ? $this->mFieldData[$key]
                                        : $value->getDefault();
 
@@ -1600,12 +1600,13 @@ class HTMLForm extends ContextSource {
                $fieldData = [];
 
                foreach ( $this->mFlatFields as $fieldname => $field ) {
-                       if ( !empty( $field->mParams['nodata'] ) ) {
+                       $request = $this->getRequest();
+                       if ( $field->skipLoadData( $request ) ) {
                                continue;
                        } elseif ( !empty( $field->mParams['disabled'] ) ) {
                                $fieldData[$fieldname] = $field->getDefault();
                        } else {
-                               $fieldData[$fieldname] = $field->loadDataFromRequest( $this->getRequest() );
+                               $fieldData[$fieldname] = $field->loadDataFromRequest( $request );
                        }
                }
 
index e86d4c4..d5f4cc0 100644 (file)
@@ -1106,4 +1106,14 @@ abstract class HTMLFormField {
                        return $this->msg( $value, [] );
                }
        }
+
+       /**
+        * Skip this field when collecting data.
+        * @param WebRequest $request
+        * @return bool
+        * @since 1.27
+        */
+       public function skipLoadData( $request ) {
+               return !empty( $this->mParams['nodata'] );
+       }
 }
index 4f2460f..7359092 100644 (file)
@@ -150,7 +150,7 @@ class HTMLFormFieldCloner extends HTMLFormField {
                        $subrequest = new DerivativeRequest( $request, $data, $request->wasPosted() );
                        $row = [];
                        foreach ( $fields as $fieldname => $field ) {
-                               if ( !empty( $field->mParams['nodata'] ) ) {
+                               if ( $field->skipLoadData( $subrequest ) ) {
                                        continue;
                                } elseif ( !empty( $field->mParams['disabled'] ) ) {
                                        $row[$fieldname] = $field->getDefault();
@@ -271,7 +271,7 @@ class HTMLFormFieldCloner extends HTMLFormField {
 
                $fields = $this->createFieldsForKey( $key );
                foreach ( $fields as $fieldname => $field ) {
-                       $v = ( empty( $field->mParams['nodata'] ) && $values !== null )
+                       $v = isset( $values[$fieldname] )
                                ? $values[$fieldname]
                                : $field->getDefault();
 
index 7f90100..cb98549 100644 (file)
@@ -8,4 +8,12 @@ class HTMLSubmitField extends HTMLButtonField {
        protected $buttonType = 'submit';
 
        protected $mFlags = [ 'primary', 'constructive' ];
+
+       public function skipLoadData( $request ) {
+               return !$request->getCheck( $this->mName );
+       }
+
+       public function loadDataFromRequest( $request ) {
+               return $request->getCheck( $this->mName );
+       }
 }
index f99ca2f..866ec10 100644 (file)
@@ -19,7 +19,8 @@
                        "McSalama",
                        "Jaakkoh",
                        "Mikahama",
-                       "Olimar"
+                       "Olimar",
+                       "01miki10"
                ]
        },
        "config-desc": "MediaWiki-asennin",
        "config-help-restart": "Haluatko poistaa kaikki annetut tiedot ja aloittaa asennuksen alusta?",
        "config-restart": "Kyllä",
        "config-welcome": "=== Ympäristön tarkistukset ===\nVarmistetaan MediaWikin asennettavuus tähän ympäristöön.\nMuista antaa nämä tiedot, jos tarvitset apua asennuksen aikana.",
+       "config-copyright": "=== Tekijänoikeudet ja käyttöehdot ===\n\n$1\n\nTämä ohjelma on vapaa ohjelmisto; voit levittää sitä ja/tai muokata sitä Free Software Foundationin GNU General Public Licensen ehdoilla, joko version 2 tai (halutessasi) minkä tahansa myöhemmän version mukaisesti.\n\nTätä ohjelmaa levitetään siinä toivossa, että se olisi hyödyllinen, mutta <strong>ilman mitään takuuta</strong>; ilman edes hiljaista takuuta <strong>kaupallisesti hyväksyttävästä laadusta</strong> tai <strong>soveltuvuudesta tiettyyn tarkoitukseen.</strong\nKatso GNU Generel Public Licensestä lisää yksityiskohtia.\n\nSinun olisi pitänyt saada <doclink href=Copying>kopio GNU General Public Licensestä</doclink> tämän ohjelman mukana; jos et, kirjoita siitä osoitteeseen Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA tai [http://www.gnu.org/copyleft/gpl.html lue se verkossa].",
        "config-sidebar": "* [//www.mediawiki.org MediaWikin kotisivu]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Käyttöopas]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Hallintaopas]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ UKK]\n----\n* <doclink href=Readme>Lue minut</doclink>\n* <doclink href=ReleaseNotes>Julkaisutiedot</doclink>\n* <doclink href=Copying>Kopiointi</doclink>\n* <doclink href=UpgradeDoc>Päivittäminen</doclink>",
        "config-env-good": "Asennusympäristö on tarkastettu.\nVoit asentaa MediaWikin.",
        "config-env-bad": "Asennusympäristö on tarkastettu.\nEt voi asentaa MediaWikiä.",
        "config-env-php": "PHP $1 on asennettu.",
        "config-env-hhvm": "HHVM $1 on asennettu.",
+       "config-unicode-using-intl": "Käyttää [http://pecl.php.net/intl intl PECL-laajennusta] Unicode-normalisaatioon.",
        "config-no-db": "Sopivaa tietokanta-ajuria ei löytynyt! Sinun täytyy asentaa tietokanta-ajurit PHP:lle.\nSeuraavat tietokantatyypit ovat tuettuja: $1.",
        "config-outdated-sqlite": "<strong>Varoitus:</strong> sinulla on käytössä SQLite $1, joke on vanhempi kuin vähintään vaadittava versio $2. SQLite ei ole saatavilla.",
        "config-xml-bad": "PHP:n XML-moduulia ei löydy.\nMediaWiki käyttää tämän moduulin funktioita, eikä toimi tässä kokoonpanossa.\nJos käytät Mandrakea, asenna php-xml paketti.",
+       "config-pcre-old": "<strong>Tärkeää:</strong> PCRE $1 tai uudempi versio tarvitaan.\nPHP-binäärisi on linkitetty versiolla PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Lisätietoja].",
        "config-memory-raised": "PHP:n <code>memory_limit</code> on $1, nostetaan arvoon $2.",
        "config-memory-bad": "'''Varoitus:''' PHP:n <code>memory_limit</code> on $1.\nTämä on luultavasti liian alhainen.\nAsennus saattaa epäonnistua!",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] on asennettu",
        "config-admin-password-mismatch": "Antamasi salasanat eivät täsmää.",
        "config-admin-email": "Sähköpostiosoite",
        "config-admin-email-help": "Syötä sähköpostiosoite johon vastaanotetaan viestit muilta wikin käyttäjiltä, nollataan salasana ja ilmoitetaan tarkkailulistalla olevista sivuista. Kenttä voidaan jättää myös tyhjäksi.",
+       "config-admin-error-user": "Sisäinen virhe luodessa ylläpitäjää nimellä \"<nowiki>$1</nowiki>\".",
+       "config-admin-error-password": "Sisäinen virhe asetettaessa salasanaa ylläpitäjälle \"<nowiki>$1</nowiki>\":\n<pre>$2</pre>",
        "config-admin-error-bademail": "Annoit virheellisen sähköpostiosoitteen.",
        "config-subscribe": "Liity [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce päivityssähköpostilistalle].",
        "config-subscribe-help": "Tällä harvoin käytettävällä sähköpostilistalla julkaistaan päivitysilmoituksia ja turvallisuuspäivityksiä.\nLiittymistä listalle suositellaan samoin kuin päivittämään MediaWiki kun uusi versio julkaistaan.",
        "config-license-gfdl": "GNU Free Documentation -lisenssi 1.3 tai uudempi",
        "config-license-pd": "Public domain",
        "config-license-cc-choose": "Valitse mukautettu Creative Commons -lisenssi",
+       "config-license-help": "Monet julkiset wikit käyttävät muokkauksiin [http://freedomdefined.org/Definition vapaata lisenssiä].\nTämä auttaa luomaan yhteisöllisen omistajuuden tunteen ja kannustaa pitkäkestoiseen muokkaamiseen.\nSe ei ole yleensä tarpeen yksityiselle tai yrityksen wikille.\n\nJos haluat pystyä käyttämään tekstiä Wikipediasta, ja haluat Wikipedian pystyvän hyväksymään wikistäsi kopioitua tekstiä, sinun tulisi valita <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nWikipedia käytti aiemmin GNU Free Documentation Licenseä.\nGFDL on kelvollinen lisenssi, mutta vaikea ymmärtää.\nOn myös vaikeaa käyttää uudelleen GFDL-lisensöityä sisältöä.",
        "config-email-settings": "Sähköpostiasetukset",
        "config-enable-email": "Ota käyttöön sähköpostien lähetys",
        "config-enable-email-help": "Jotta sähköposti toimii, [http://www.php.net/manual/en/mail.configuration.php PHP:n sähköpostiasetukset] täytyy asettaa oikein.\nJos et halua käyttää sähköpostiominaisuuksia, ne voi kytkeä pois päältä tästä.",
        "config-upload-deleted": "Poistettujen tiedostojen hakemisto:",
        "config-upload-deleted-help": "Valitse hakemisto johon poistetut tiedostot arkistoidaan.\nHakemiston ei tulisi olla käytettävissä internetverkosta.",
        "config-logo": "Logon URL-osoite",
+       "config-instantcommons": "Aktivoi Instant Commons",
+       "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] on ominaisuus, joka antaa wikien käyttää kuvia, ääniä ja muuta mediaa [//commons.wikimedia.org/ Wikimedia Commons] -sivustolta.\nTehdäkseen tämän MediaWiki tarvitsee Internet-yhteyden.\n\nLisätietoja tästä ominaisuudesta, mukaan lukien ohjeet, kuinka sen voi asettaa muille wikeille kuin Wikimedia Commons, löytyy [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos ohjeista].",
+       "config-cc-error": "Creative Commons -lisenssinvalitsija ei antanut tulosta.\nSyötä lisenssin nimi manuaalisesti.",
        "config-cc-again": "Valitse uudelleen...",
+       "config-cc-not-chosen": "Valitse, minkä Creative Commons -lisenssin haluat ja paina \"proceed\".",
        "config-advanced-settings": "Lisäasetukset",
+       "config-cache-none": "Ei välimuistia (toimintoja ei poisteta, mutta voi vaikuttaa nopeuteen suuremmilla wiki-sivustoilla)",
+       "config-cache-memcached": "Käytä Memcachedia (vaatii ylimääräistä asennusta ja konfigurointia)",
+       "config-memcached-servers": "Memcached-palvelimet:",
+       "config-memcached-help": "Luettelo IP-osoitteista Memcachedin käyttöön.\nPitäisi määrittää yksi osoite riviä kohden ja käytettävä portti. Esimerkiksi:\n 127.0.0.1:11211\n 192.168.1.25:1234",
+       "config-memcache-needservers": "Valitsit Memcachedin välimuistin tyypiksi, mutta et määrittänyt palvelimia.",
+       "config-memcache-badip": "Olet antanut virheellisen IP-osoitteen Memcachedille: $1.",
+       "config-memcache-noport": "Et määrittänyt porttia käytettäväksi Memcached-palvelimelle: $1\nJos et tiedä porttia, oletus on 11211.",
+       "config-memcache-badport": "Memcachedin porttien numeroiden pitäisi olla välillä $1-$2.",
        "config-extensions": "Laajennukset",
        "config-extensions-help": "Yllä luetellut laajennukset löytyvät <code>./extensions</code> hakemistosta.\n\nNe saattavat vaatia lisäasetuksia, mutta voit ottaa ne käyttöön nyt.",
        "config-skins": "Ulkoasut",
        "config-install-mainpage": "Luodaan etusivu oletussisällöllä",
        "config-install-extension-tables": "Luodaan tauluja käyttöönotetuille laajuennuksille",
        "config-install-mainpage-failed": "Etusivun lisääminen ei onnistunut: $1",
-       "config-install-done": "<strong>Onnittelut!</strong>\nMediaWiki on asennettu onnistuneesti\n\nAsennusohjelma on luonut <code>LocalSettings.php</code> -tiedoston.\nSiinä on kaikki MediaWikin asetukset.\n\nLataa tiedosto ja laita se MediaWikin asennushakemistoon (sama kuin missä on index.php). Lataamisen olisi pitänyt alkaa automaattisesti.\n\nMikäli keskeytit latauksen, käynnistä se uudestaan tästä linkistä:\n\n$3\n\n<strong>HUOM!</strong> Mikäli et nyt lataa tiedostoa, joudut aloittamaan asennuksen alusta.\n\nKun olet laittanut tiedoston oikeaan paikkaan voit <strong>[$2 mennä wikiisi]</strong>.",
+       "config-install-done": "<strong>Onnittelut!</strong>\nOlet asentanut MediaWikin.\n\nAsennusohjelma on luonut <code>LocalSettings.php</code> -tiedoston.\nSiinä on kaikki MediaWikin asetukset.\n\nLataa tiedosto ja laita se MediaWikin asennushakemistoon (sama kuin missä on index.php). Lataamisen olisi pitänyt alkaa automaattisesti.\n\nMikäli latausta ei tarjottu tai keskeytit latauksen, käynnistä se uudestaan tästä linkistä:\n\n$3\n\n<strong>Huom:</strong> Mikäli et nyt lataa tiedostoa, luotu tiedosto ei ole saatavissa myöhemmin, jos poistut asennuksesta lataamatta sitä.\n\nKun olet laittanut tiedoston oikeaan paikkaan, voit <strong>[$2 mennä wikiisi]</strong>.",
        "config-download-localsettings": "Lataa <code>LocalSettings.php</code>",
        "config-help": "ohje",
        "config-help-tooltip": "Klikkaa laajentaaksesi",
        "config-nofile": "Tiedostoa \"$1\" ei löytynyt. Onko se poistettu?",
        "config-extension-link": "Tiesitkö että wiki tukee [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions laajennuksia]?\n\nLaajennuksia voi hakea myös [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category luokittain].",
        "mainpagetext": "<strong>MediaWiki on onnistuneesti asennettu.</strong>",
-       "mainpagedocfooter": "Lisätietoja käytöstä on sivulla [//meta.wikimedia.org/wiki/Help:Contents User's Guide].\n\n=== Lisäohjeita ===\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Asetusten teko-ohjeita]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWikin FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Sähköpostilista, jolla tiedotetaan MediaWikin uusista versioista]\n\n=== Asetukset ===\n\nTarkista, että alla olevat taivutusmuodot ovat oikein. Jos eivät, tee tarvittavat muutokset tiedostoon LocalSettings.php seuraavasti:\n $wgGrammarForms['fi']['genitive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['partitive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['elative']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['inessive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['illative']['{{SITENAME}}'] = '...';\nTaivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) – {{GRAMMAR:partitive|{{SITENAME}}}} (yötä) – {{GRAMMAR:elative|{{SITENAME}}}} (yöstä) – {{GRAMMAR:inessive|{{SITENAME}}}} (yössä) – {{GRAMMAR:illative|{{SITENAME}}}} (yöhön)."
+       "mainpagedocfooter": "Lisätietoja wiki-ohjelmiston käytöstä on [//meta.wikimedia.org/wiki/Help:Contents käyttöoppaassa].\n\n=== Aloittaminen ===\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Asetusten teko-ohjeita]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWikin FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Sähköpostilista, jolla tiedotetaan MediaWikin uusista versioista]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Käännä MediaWikiä kielellesi]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Katso, kuinka torjua spämmiä wikissäsi]\n\n=== Asetukset ===\n\nTarkista, että alla olevat taivutusmuodot ovat oikein. Jos eivät, tee tarvittavat muutokset tiedostoon LocalSettings.php seuraavasti:\n $wgGrammarForms['fi']['genitive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['partitive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['elative']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['inessive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['illative']['{{SITENAME}}'] = '...';\nTaivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) – {{GRAMMAR:partitive|{{SITENAME}}}} (yötä) – {{GRAMMAR:elative|{{SITENAME}}}} (yöstä) – {{GRAMMAR:inessive|{{SITENAME}}}} (yössä) – {{GRAMMAR:illative|{{SITENAME}}}} (yöhön)."
 }
index 5b71938..d64be3c 100644 (file)
 abstract class JobQueue {
        /** @var string Wiki ID */
        protected $wiki;
-
        /** @var string Job type */
        protected $type;
-
        /** @var string Job priority for pop() */
        protected $order;
-
        /** @var int Time to live in seconds */
        protected $claimTTL;
-
        /** @var int Maximum number of times to try a job */
        protected $maxTries;
+       /** @var string|bool Read only rationale (or false if r/w) */
+       protected $readOnlyReason;
 
        /** @var BagOStuff */
        protected $dupCache;
@@ -74,6 +72,9 @@ abstract class JobQueue {
                $this->aggr = isset( $params['aggregator'] )
                        ? $params['aggregator']
                        : new JobQueueAggregatorNull( [] );
+               $this->readOnlyReason = isset( $params['readOnlyReason'] )
+                       ? $params['readOnlyReason']
+                       : false;
        }
 
        /**
@@ -96,6 +97,7 @@ abstract class JobQueue {
         *                  but not acknowledged as completed after this many seconds. Recycling
         *                  of jobs simply means re-inserting them into the queue. Jobs can be
         *                  attempted up to three times before being discarded.
+        *   - readOnlyReason : Set this to a string to make the queue read-only.
         *
         * Queue classes should throw an exception if they do not support the options given.
         *
@@ -168,6 +170,14 @@ abstract class JobQueue {
                return $this->supportsDelayedJobs();
        }
 
+       /**
+        * @return string|bool Read-only rational or false if r/w
+        * @since 1.27
+        */
+       public function getReadOnlyReason() {
+               return $this->readOnlyReason;
+       }
+
        /**
         * Quickly check if the queue has no available (unacquired, non-delayed) jobs.
         * Queue classes should use caching if they are any slower without memcached.
@@ -307,6 +317,8 @@ abstract class JobQueue {
         * @throws MWException
         */
        final public function batchPush( array $jobs, $flags = 0 ) {
+               $this->assertNotReadOnly();
+
                if ( !count( $jobs ) ) {
                        return; // nothing to do
                }
@@ -349,6 +361,7 @@ abstract class JobQueue {
        final public function pop() {
                global $wgJobClasses;
 
+               $this->assertNotReadOnly();
                if ( $this->wiki !== wfWikiID() ) {
                        throw new MWException( "Cannot pop '{$this->type}' job off foreign wiki queue." );
                } elseif ( !isset( $wgJobClasses[$this->type] ) ) {
@@ -392,9 +405,11 @@ abstract class JobQueue {
         * @throws MWException
         */
        final public function ack( Job $job ) {
+               $this->assertNotReadOnly();
                if ( $job->getType() !== $this->type ) {
                        throw new MWException( "Got '{$job->getType()}' job; expected '{$this->type}'." );
                }
+
                $this->doAck( $job );
        }
 
@@ -436,12 +451,12 @@ abstract class JobQueue {
         * @return bool
         */
        final public function deduplicateRootJob( IJobSpecification $job ) {
+               $this->assertNotReadOnly();
                if ( $job->getType() !== $this->type ) {
                        throw new MWException( "Got '{$job->getType()}' job; expected '{$this->type}'." );
                }
-               $ok = $this->doDeduplicateRootJob( $job );
 
-               return $ok;
+               return $this->doDeduplicateRootJob( $job );
        }
 
        /**
@@ -524,6 +539,8 @@ abstract class JobQueue {
         * @return void
         */
        final public function delete() {
+               $this->assertNotReadOnly();
+
                $this->doDelete();
        }
 
@@ -672,6 +689,15 @@ abstract class JobQueue {
                return null; // not supported
        }
 
+       /**
+        * @throws JobQueueReadOnlyError
+        */
+       protected function assertNotReadOnly() {
+               if ( $this->readOnlyReason !== false ) {
+                       throw new JobQueueReadOnlyError( "Job queue is read-only: {$this->readOnlyReason}" );
+               }
+       }
+
        /**
         * Call wfIncrStats() for the queue overall and for the queue type
         *
@@ -699,3 +725,7 @@ class JobQueueError extends MWException {
 
 class JobQueueConnectionError extends JobQueueError {
 }
+
+class JobQueueReadOnlyError extends JobQueueError {
+
+}
index 8b6c7f0..2dd0615 100644 (file)
@@ -36,6 +36,8 @@ class JobQueueGroup {
 
        /** @var string Wiki ID */
        protected $wiki;
+       /** @var string|bool Read only rationale (or false if r/w) */
+       protected $readOnlyReason;
 
        /** @var array Map of (bucket => (queue => JobQueue, types => list of types) */
        protected $coalescedQueues;
@@ -54,9 +56,11 @@ class JobQueueGroup {
 
        /**
         * @param string $wiki Wiki ID
+        * @param string|bool $readOnlyReason Read-only reason or false
         */
-       protected function __construct( $wiki ) {
+       protected function __construct( $wiki, $readOnlyReason ) {
                $this->wiki = $wiki;
+               $this->readOnlyReason = $readOnlyReason;
                $this->cache = new ProcessCacheLRU( 10 );
        }
 
@@ -67,7 +71,7 @@ class JobQueueGroup {
        public static function singleton( $wiki = false ) {
                $wiki = ( $wiki === false ) ? wfWikiID() : $wiki;
                if ( !isset( self::$instances[$wiki] ) ) {
-                       self::$instances[$wiki] = new self( $wiki );
+                       self::$instances[$wiki] = new self( $wiki, wfConfiguredReadOnlyReason() );
                }
 
                return self::$instances[$wiki];
@@ -98,6 +102,9 @@ class JobQueueGroup {
                        $conf = $conf + $wgJobTypeConf['default'];
                }
                $conf['aggregator'] = JobQueueAggregator::singleton();
+               if ( $this->readOnlyReason !== false ) {
+                       $conf['readOnlyReason'] = $this->readOnlyReason;
+               }
 
                return JobQueue::factory( $conf );
        }
@@ -168,8 +175,13 @@ class JobQueueGroup {
         */
        public static function pushLazyJobs() {
                foreach ( self::$instances as $group ) {
-                       $group->push( $group->bufferedJobs );
-                       $group->bufferedJobs = [];
+                       try {
+                               $group->push( $group->bufferedJobs );
+                               $group->bufferedJobs = [];
+                       } catch ( Exception $e ) {
+                               // Get in as many jobs as possible and let other post-send updates happen
+                               MWExceptionHandler::logException( $e );
+                       }
                }
        }
 
index d4a5334..990248a 100644 (file)
@@ -393,12 +393,17 @@ LUA;
                        static $script =
 <<<LUA
                        local kClaimed, kAttempts, kData = unpack(KEYS)
-                       local uuid = unpack(ARGV)
+                       local id = unpack(ARGV)
                        -- Unmark the job as claimed
-                       redis.call('zRem',kClaimed,uuid)
-                       redis.call('hDel',kAttempts,uuid)
+                       local removed = redis.call('zRem',kClaimed,id)
+                       -- Check if the job was recycled
+                       if removed == 0 then
+                               return 0
+                       end
+                       -- Delete the retry data
+                       redis.call('hDel',kAttempts,id)
                        -- Delete the job data itself
-                       return redis.call('hDel',kData,uuid)
+                       return redis.call('hDel',kData,id)
 LUA;
                        $res = $conn->luaEval( $script,
                                [
index fb35801..2156bd7 100644 (file)
@@ -28,7 +28,7 @@
 class ArrayUtils {
        /**
         * Sort the given array in a pseudo-random order which depends only on the
-        * given key and each element value. This is typically used for load
+        * given key and each element value in $array. This is typically used for load
         * balancing between servers each with a local cache.
         *
         * Keys are preserved. The input array is modified in place.
index 3945094..a1394c1 100644 (file)
  * @ingroup Cache
  */
 class SqlBagOStuff extends BagOStuff {
-       /** @var array */
+       /** @var array[] (server index => server config) */
        protected $serverInfos;
-       /** @var array */
-       protected $serverNames;
+       /** @var string[] (server index => tag/host name) */
+       protected $serverTags;
        /** @var int */
        protected $numServers;
        /** @var int */
@@ -58,9 +58,12 @@ class SqlBagOStuff extends BagOStuff {
         *   - server:      A server info structure in the format required by each
         *                  element in $wgDBServers.
         *
-        *   - servers:     An array of server info structures describing a set of
-        *                  database servers to distribute keys to. If this is
-        *                  specified, the "server" option will be ignored.
+        *   - servers:     An array of server info structures describing a set of database servers
+        *                  to distribute keys to. If this is specified, the "server" option will be
+        *                  ignored. If string keys are used, then they will be used for consistent
+        *                  hashing *instead* of the host name (from the server config). This is useful
+        *                  when a cluster is replicated to another site (with different host names)
+        *                  but each server has a corresponding replica in the other cluster.
         *
         *   - purgePeriod: The average number of object cache requests in between
         *                  garbage collection operations, where expired entries
@@ -89,11 +92,18 @@ class SqlBagOStuff extends BagOStuff {
        public function __construct( $params ) {
                parent::__construct( $params );
                if ( isset( $params['servers'] ) ) {
-                       $this->serverInfos = $params['servers'];
-                       $this->numServers = count( $this->serverInfos );
-                       $this->serverNames = [];
-                       foreach ( $this->serverInfos as $i => $info ) {
-                               $this->serverNames[$i] = isset( $info['host'] ) ? $info['host'] : "#$i";
+                       $this->serverInfos = [];
+                       $this->serverTags = [];
+                       $this->numServers = count( $params['servers'] );
+                       $index = 0;
+                       foreach ( $params['servers'] as $tag => $info ) {
+                               $this->serverInfos[$index] = $info;
+                               if ( is_string( $tag ) ) {
+                                       $this->serverTags[$index] = $tag;
+                               } else {
+                                       $this->serverTags[$index] = isset( $info['host'] ) ? $info['host'] : "#$index";
+                               }
+                               ++$index;
                        }
                } elseif ( isset( $params['server'] ) ) {
                        $this->serverInfos = [ $params['server'] ];
@@ -180,7 +190,7 @@ class SqlBagOStuff extends BagOStuff {
                        $tableIndex = 0;
                }
                if ( $this->numServers > 1 ) {
-                       $sortedServers = $this->serverNames;
+                       $sortedServers = $this->serverTags;
                        ArrayUtils::consistentHashSort( $sortedServers, $key );
                        reset( $sortedServers );
                        $serverIndex = key( $sortedServers );
index d382001..6c93202 100644 (file)
@@ -47,4 +47,18 @@ class WikiCategoryPage extends WikiPage {
                }
                return false;
        }
+
+       /**
+        * Checks if a category is hidden.
+        *
+        * @since 1.27
+        *
+        * @return bool
+        */
+       public function isHidden() {
+               $pageId = $this->getTitle()->getArticleID();
+               $pageProps = PageProps::getInstance()->getProperties( $this->getTitle(), 'hiddencat' );
+
+               return isset( $pageProps[$pageId] ) ? true : false;
+       }
 }
index 82e66aa..06785b7 100644 (file)
@@ -94,7 +94,7 @@ class WikiPage implements Page, IDBAccessObject {
         * @param Title $title
         *
         * @throws MWException
-        * @return WikiPage Object of the appropriate type
+        * @return WikiPage|WikiCategoryPage|WikiFilePage
         */
        public static function factory( Title $title ) {
                $ns = $title->getNamespace();
index e5b9cb9..4d7fc50 100644 (file)
@@ -387,8 +387,9 @@ abstract class Skin extends ContextSource {
                }
 
                $name = Sanitizer::escapeClass( 'page-' . $title->getPrefixedText() );
+               $root = Sanitizer::escapeClass( 'rootpage-' . $title->getRootTitle()->getPrefixedText() );
 
-               return "$numeric $type $name";
+               return "$numeric $type $name $root";
        }
 
        /**
@@ -1560,24 +1561,280 @@ abstract class Skin extends ContextSource {
                return $result;
        }
 
-       /**
-        * Use PHP's magic __call handler to intercept legacy calls to the linker
-        * for backwards compatibility.
-        *
-        * @param string $fname Name of called method
-        * @param array $args Arguments to the method
-        * @throws MWException
-        * @return mixed
-        */
-       function __call( $fname, $args ) {
-               $realFunction = [ 'Linker', $fname ];
-               if ( is_callable( $realFunction ) ) {
-                       wfDeprecated( get_class( $this ) . '::' . $fname, '1.21' );
-                       return call_user_func_array( $realFunction, $args );
-               } else {
-                       $className = get_class( $this );
-                       throw new MWException( "Call to undefined method $className::$fname" );
-               }
+       /** @deprecated in 1.21 */
+       public function accesskey() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'accesskey' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function blockLink() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'blockLink' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function buildRollbackLink() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'buildRollbackLink' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function commentBlock() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'commentBlock' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function emailLink() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'emailLink' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function formatComment() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'formatComment' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function formatHiddenCategories() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'formatHiddenCategories' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function formatLinksInComment() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'formatLinksInComment' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function formatRevisionSize() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'formatRevisionSize' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function formatSize() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'formatSize' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function formatTemplates() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'formatTemplates' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function generateRollback() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'generateRollback' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function generateTOC() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'generateTOC' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function getInternalLinkAttributes() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'getInternalLinkAttributes' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function getInternalLinkAttributesObj() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'getInternalLinkAttributesObj' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function getInterwikiLinkAttributes() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'getInterwikiLinkAttributes' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function getInvalidTitleDescription() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'getInvalidTitleDescription' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function getLinkColour() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'getLinkColour' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function getRevDeleteLink() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'getRevDeleteLink' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function getRollbackEditCount() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'getRollbackEditCount' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function link() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'link' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function linkKnown() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'linkKnown' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function makeBrokenImageLinkObj() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'makeBrokenImageLinkObj' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function makeCommentLink() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'makeCommentLink' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function makeExternalImage() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'makeExternalImage' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function makeExternalLink() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'makeExternalLink' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function makeHeadline() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'makeHeadline' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function makeImageLink() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'makeImageLink' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function makeMediaLinkFile() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'makeMediaLinkFile' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function makeMediaLinkObj() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'makeMediaLinkObj' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function makeSelfLinkObj() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'makeSelfLinkObj' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function makeThumbLink2() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'makeThumbLink2' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function makeThumbLinkObj() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'makeThumbLinkObj' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function normaliseSpecialPage() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'normaliseSpecialPage' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function normalizeSubpageLink() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'normalizeSubpageLink' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function processResponsiveImages() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'processResponsiveImages' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function revComment() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'revComment' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function revDeleteLink() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'revDeleteLink' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function revDeleteLinkDisabled() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'revDeleteLinkDisabled' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function revUserLink() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'revUserLink' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function revUserTools() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'revUserTools' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function specialLink() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'specialLink' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function splitTrail() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'splitTrail' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function titleAttrib() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'titleAttrib' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function tocIndent() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'tocIndent' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function tocLine() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'tocLine' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function tocLineEnd() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'tocLineEnd' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function tocList() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'tocList' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function tocUnindent() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'tocUnindent' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function tooltip() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'tooltip' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function tooltipAndAccesskeyAttribs() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'tooltipAndAccesskeyAttribs' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function userLink() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'userLink' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function userTalkLink() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'userTalkLink' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function userToolLinks() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'userToolLinks' ], func_get_args() );
+       }
+       /** @deprecated in 1.21 */
+       public function userToolLinksRedContribs() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return call_user_func_array( [ 'Linker', 'userToolLinksRedContribs' ], func_get_args() );
        }
 
 }
index 8398989..b93fb4e 100644 (file)
@@ -324,12 +324,23 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $list = ChangesList::newFromContext( $this->getContext() );
                $list->initChangesListRows( $rows );
 
+               $userShowHiddenCats = $this->getUser()->getBoolOption( 'showhiddencats' );
                $rclistOutput = $list->beginRecentChangesList();
                foreach ( $rows as $obj ) {
                        if ( $limit == 0 ) {
                                break;
                        }
                        $rc = RecentChange::newFromRow( $obj );
+
+                       # Skip CatWatch entries for hidden cats based on user preference
+                       if (
+                               $rc->getAttribute( 'rc_type' ) == RC_CATEGORIZE &&
+                               !$userShowHiddenCats &&
+                               $rc->getParam( 'hidden-cat' )
+                       ) {
+                               continue;
+                       }
+
                        $rc->counter = $counter++;
                        # Check if the page has been updated since the last visit
                        if ( $this->getConfig()->get( 'ShowUpdatedMarker' )
index 9901d36..a77c79e 100644 (file)
@@ -1059,7 +1059,6 @@ class LoginForm extends SpecialPage {
        function processLogin() {
                global $wgLang, $wgSecureLogin, $wgInvalidPasswordReset;
 
-               $cache = ObjectCache::getLocalClusterInstance();
                $authRes = $this->authenticateUserData();
                switch ( $authRes ) {
                        case self::SUCCESS:
index 27e5829..15691f2 100644 (file)
@@ -369,10 +369,21 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                }
 
                $s = $list->beginRecentChangesList();
+               $userShowHiddenCats = $this->getUser()->getBoolOption( 'showhiddencats' );
                $counter = 1;
                foreach ( $rows as $obj ) {
                        # Make RC entry
                        $rc = RecentChange::newFromRow( $obj );
+
+                       # Skip CatWatch entries for hidden cats based on user preference
+                       if (
+                               $rc->getAttribute( 'rc_type' ) == RC_CATEGORIZE &&
+                               !$userShowHiddenCats &&
+                               $rc->getParam( 'hidden-cat' )
+                       ) {
+                               continue;
+                       }
+
                        $rc->counter = $counter++;
 
                        if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) ) {
index e2052b9..cca54b3 100644 (file)
@@ -46,23 +46,23 @@ class WithoutInterwikiPage extends PageQueryPage {
                        return '';
                }
 
-               $prefix = $this->prefix;
-               $t = $this->getPageTitle();
+               $formDescriptor = [
+                       'prefix' => [
+                               'label-message' => 'allpagesprefix',
+                               'name' => 'prefix',
+                               'id' => 'wiprefix',
+                               'type' => 'text',
+                               'size' => 20,
+                               'default' => $this->prefix
+                       ]
+               ];
 
-               return Html::openElement( 'form', [ 'method' => 'get', 'action' => wfScript() ] ) . "\n" .
-                       Html::openElement( 'fieldset' ) . "\n" .
-                       Html::element( 'legend', null, $this->msg( 'withoutinterwiki-legend' )->text() ) . "\n" .
-                       Html::hidden( 'title', $t->getPrefixedText() ) . "\n" .
-                       Xml::inputLabel(
-                               $this->msg( 'allpagesprefix' )->text(),
-                               'prefix',
-                               'wiprefix',
-                               20,
-                               $prefix
-                       ) . "\n" .
-                       Xml::submitButton( $this->msg( 'withoutinterwiki-submit' )->text() ) . "\n" .
-                       Html::closeElement( 'fieldset' ) . "\n" .
-                       Html::closeElement( 'form' );
+               $htmlForm = HTMLForm::factory( 'inline', $formDescriptor, $this->getContext() );
+               $htmlForm->setWrapperLegendMsg( 'withoutinterwiki-legend' )
+                       ->setSubmitTextMsg( 'withoutinterwiki-submit' )
+                       ->setMethod( 'get' )
+                       ->prepareForm()
+                       ->displayForm( false );
        }
 
        function sortDescending() {
index 302c9e8..b458578 100644 (file)
@@ -106,11 +106,8 @@ class MediaWikiPageLinkRenderer implements PageLinkRenderer {
                // TODO: move the logic implemented by Linker here,
                // using $this->formatter and $this->baseUrl, and
                // re-implement Linker to use a HtmlPageLinkRenderer.
-               if ( $linkTarget instanceof Title ) {
-                       $title = $linkTarget;
-               } else {
-                       $title = Title::newFromLinkTarget( $linkTarget );
-               }
+
+               $title = Title::newFromLinkTarget( $linkTarget );
                $link = Linker::link( $title, htmlspecialchars( $text ) );
 
                return $link;
index 04eba97..c1e096b 100644 (file)
@@ -1070,9 +1070,9 @@ class User implements IDBAccessObject {
                // Clean up name according to title rules,
                // but only when validation is requested (bug 12654)
                $t = ( $validate !== false ) ?
-                       Title::newFromText( $name ) : Title::makeTitle( NS_USER, $name );
+                       Title::newFromText( $name, NS_USER ) : Title::makeTitle( NS_USER, $name );
                // Check for invalid titles
-               if ( is_null( $t ) ) {
+               if ( is_null( $t ) || $t->getNamespace() !== NS_USER || $t->isExternal() ) {
                        return false;
                }
 
index a0fa727..190f2bf 100644 (file)
@@ -1555,7 +1555,7 @@ class Language {
         *
         * @param string $ts
         *
-        * @return string
+        * @return int[]
         */
        private static function tsToIranian( $ts ) {
                $gy = substr( $ts, 0, 4 ) -1600;
@@ -1613,7 +1613,7 @@ class Language {
         *
         * @param string $ts
         *
-        * @return string
+        * @return int[]
         */
        private static function tsToHijri( $ts ) {
                $year = substr( $ts, 0, 4 );
@@ -1665,7 +1665,7 @@ class Language {
         *
         * @param string $ts
         *
-        * @return string
+        * @return int[]
         */
        private static function tsToHebrew( $ts ) {
                # Parse date
index ad42c8e..5ef02ce 100644 (file)
        "categories": "Kategorieë",
        "categoriespagetext": "Die volgende {{PLURAL:$1|kategorie|kategorieë}} bevat bladsye of media.\n[[Special:UnusedCategories|Ongebruikte kategorieë]] word nie gewys nie.\nSien ook [[Special:WantedCategories|nie-bestaande kategorieë met verwysings]].",
        "categoriesfrom": "Wys kategorieë vanaf:",
-       "special-categories-sort-count": "sorteer volgens getal",
-       "special-categories-sort-abc": "sorteer alfabeties",
        "deletedcontributions": "Geskrapte gebruikersbydraes",
        "deletedcontributions-title": "Geskrapte gebruikersbydraes",
        "sp-deletedcontributions-contribs": "bydraes",
index 461ec33..58c4a1a 100644 (file)
        "cachedspecial-refresh-now": "መጨረሻውን ለማየት",
        "categories": "ምድቦች",
        "categoriespagetext": "በዚሁ ሥራ ዕቅድ ውስጥ የሚከተሉ መደቦች ይኖራሉ።\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
-       "special-categories-sort-abc": "በፊደል ተራ ይደርደሩ",
        "deletedcontributions": "የአባሉ የጠፉት አስተዋጽኦች",
        "deletedcontributions-title": "የአባሉ የጠፉት አስተዋጽኦች",
        "sp-deletedcontributions-contribs": "አስተዋጽኦች",
index acc1fe1..0af7f45 100644 (file)
        "categories": "Categorías",
        "categoriespagetext": "{{PLURAL:$1|A siguient categoría contién|As siguients categorías contienen}} pachinas u fichers multimedia.\nNo s'amuestran aquí as [[Special:UnusedCategories|categorías no emplegatas]].\nSe veigan tamién as [[Special:WantedCategories|categorías requiestas]].",
        "categoriesfrom": "Amostrar as categoría que prencipien por:",
-       "special-categories-sort-count": "ordenar por recuento",
-       "special-categories-sort-abc": "ordenar alfabeticament",
        "deletedcontributions": "Contrebucions d'usuario borratas",
        "deletedcontributions-title": "Contrebucions d'usuario borradas",
        "sp-deletedcontributions-contribs": "contrebucions",
index 04aa9eb..c3f3afc 100644 (file)
        "categories-submit": "أظهر",
        "categoriespagetext": "{{PLURAL:$1|التصنيف التالي يحتوي|التصنيفات التالية تحتوي}} على صفحات أو وسائط.\n[[Special:UnusedCategories|التصنيفات غير المستخدمة]] غير معروضة هنا.\nانظر أيضاً [[Special:WantedCategories|التصنيفات المطلوبة]].",
        "categoriesfrom": "اعرض التصنيفات ابتداء من:",
-       "special-categories-sort-count": "رتب بالعدد",
-       "special-categories-sort-abc": "رتب هجائياً",
        "deletedcontributions": "مساهمات المستخدم المحذوفة",
        "deletedcontributions-title": "مساهمات المستخدم المحذوفة",
        "sp-deletedcontributions-contribs": "مساهمات",
index ddba895..c996b3f 100644 (file)
        "allpagesprefix": "biyn sfahi katbda b:",
        "categories": "tsnifat",
        "categoriesfrom": "wrri ṫ-ṫṣnifaṫ li badyin mn:",
-       "special-categories-sort-count": "rttb bladad",
-       "special-categories-sort-abc": "rttb blhorof",
        "deletedcontributions": "mosahamaṫ mosṫĥdim memḫiya",
        "deletedcontributions-title": "mosahamaṫ mosṫĥdim memḫiya",
        "sp-deletedcontributions-contribs": "l-mosahamaṫ",
index fc40808..d1addb6 100644 (file)
        "categories": "تصانيف",
        "categoriespagetext": "{{PLURAL:$1|التصنيف دا بيحتوى على|التصنيفات دى بتحتوى على}} صفحات او ميديا.\n[[Special:UnusedCategories|التصنيفات اللى مش مستعمله]] مش معروضه  هنا.\nشوف كمان [[Special:WantedCategories|التصنيفات المتعازه]].",
        "categoriesfrom": "اعرض التصانيف من أول:",
-       "special-categories-sort-count": "رتب بالعدد",
-       "special-categories-sort-abc": "ترتيب ابجدي",
        "deletedcontributions": "تعديلات اليوزر الممسوحة",
        "deletedcontributions-title": "تعديلات اليوزر الممسوحة",
        "sp-deletedcontributions-contribs": "المساهمات",
index 825fcdc..a57dbea 100644 (file)
        "categories": "শ্ৰেণী",
        "categoriespagetext": "এই {{PLURAL:$1|বিষয়শ্ৰেণীত|বিষয়শ্ৰেণীসমূহত}}  পৃষ্ঠা বা মিডিয়া ফাইল আছে ।\n[[Special:UnusedCategories|অব্যৱহৃত শ্ৰেণীসমূহ]]  ইয়াত দেখুওৱা হোৱা নাই ।\nঅধিক তথ্যৰ বাবে [[Special:WantedCategories|আৱশ্যক শ্ৰেণীসমূহ]] চাওক ।",
        "categoriesfrom": "ইয়াৰে আৰম্ভ হোৱা শ্ৰেণীসমূহ দেখুৱাওক:",
-       "special-categories-sort-count": "গণনাৰ ভিত্তিত সজাওক",
-       "special-categories-sort-abc": "বৰ্ণানুক্ৰমে সজাওক",
        "deletedcontributions": "ৰদ কৰা সদস্যৰ বৰঙণিসমূহ",
        "deletedcontributions-title": "ৰদ কৰা সদস্যৰ বৰঙণিসমূহ",
        "sp-deletedcontributions-contribs": "বৰঙণিসমূহ",
index 62e3624..07317f0 100644 (file)
        "categories-submit": "Amosar",
        "categoriespagetext": "{{PLURAL:$1|La siguiente categoría contién|Les siguientes categoríes contienen}} páxines o ficheros multimedia.\nLes [[Special:UnusedCategories|categoríes nun usaes]] nun s'amuesen equí.\nVer tamién les [[Special:WantedCategories|categoríes más buscaes]].",
        "categoriesfrom": "Amosar categoríes qu'emprimen por:",
-       "special-categories-sort-count": "ordenar por tamañu",
-       "special-categories-sort-abc": "ordenar alfabéticamente",
        "deletedcontributions": "Contribuciones d'usuariu esborraes",
        "deletedcontributions-title": "Contribuciones d'usuariu desaniciaes",
        "sp-deletedcontributions-contribs": "collaboraciones",
index 7b760e1..71e1639 100644 (file)
        "categories": "Bulomeem",
        "categoriespagetext": "Radimiasa loma se moe wiki krulded.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
        "categoriesfrom": "Nedira va loma tozakirafa gu :",
-       "special-categories-sort-count": "Otafa mubera",
-       "special-categories-sort-abc": "Abavafa mubera",
        "deletedcontributions": "Sulayan favesikaf webeks",
        "linksearch": "Divafi gluyasiki",
        "linksearch-ns": "Yoltxo :",
index 4efe3fe..8cab3c9 100644 (file)
        "categories": "श्रेणी",
        "categoriespagetext": "निम्नोक्त {{PLURAL:$1|श्रेणी|श्रेणि}} मा पन्ना या मीडिया है।\nजवन श्रेणिन् कय [[Special:UnusedCategories|अप्रयुक्त श्रेणि]] यहँ नाइ देखाई गा हैं।\n[[Special:WantedCategories|वांछित श्रेणि]] भी देखा जाय।",
        "categoriesfrom": "इ अक्षर से शुरु होय वाला श्रेणी देखावा जाय:",
-       "special-categories-sort-count": "संख्या कय अनुसार क्रमांकित करा जाय",
-       "special-categories-sort-abc": "वर्णानुक्रम कय अनुसार देखावा जाय",
        "deletedcontributions": "हटावल सदस्य योगदान",
        "deletedcontributions-title": "हटावल सदस्य योगदान",
        "sp-deletedcontributions-contribs": "योगदान",
index 77fdbdc..5b1afd5 100644 (file)
        "allpages-hide-redirects": "Yönləndirmələri gizlət",
        "categories": "Kateqoriyalar",
        "categoriespagetext": "Aşağıdakı {{PLURAL:$1|kateqoriyada|kateqoriyalarda}} səhifələr, yaxud media-fayllar var.\n[[Special:UnusedCategories|İstifadə olunmayan kateqoriyalar]] burada göstərilməyib.\nHəmçinin, [[Special:WantedCategories|tələb olunan kateqoriyalara]] baxın.",
-       "special-categories-sort-count": "miqdara görə tənzimlə",
-       "special-categories-sort-abc": "əlifba sırası ilə düz",
        "deletedcontributions": "Silinmiş istifadəçi fəaliyyətləri",
        "deletedcontributions-title": "Silinmiş istifadəçi fəaliyyətləri",
        "sp-deletedcontributions-contribs": "fəaliyyət",
index 1ef002c..ab8571a 100644 (file)
        "categories": "بؤلمه‌لر",
        "categoriespagetext": "آشاغی‌داکی {{PLURAL:$1|بولمه لردهٔ|بولمه لرده}}  صحیفه‌لر، یاخود مئدیا-فایل‌لار وار.\n[[Special:UnusedCategories|ایستفاده اولمایان بولمه لر]] بورادا گؤستریلمه‌ییب.\nهم‌چی‌نین، [[Special:WantedCategories|لازیم اولان بولمه لره]] باخین.",
        "categoriesfrom": "شونونلا باشلایان بولمه لر باخ:",
-       "special-categories-sort-count": "میقدارا گؤره تنزیمله",
-       "special-categories-sort-abc": "الیفبا سیراسی ایله دوز",
        "deletedcontributions": "سیلینمیش ایستیفاده‌چی چالیشمالاری",
        "deletedcontributions-title": "سیلین‌میش ایستیفاده‌چی چالیشمالاری",
        "sp-deletedcontributions-contribs": "چالیشمالار",
index bf422d6..9c4fdb0 100644 (file)
        "viewsourcetext": "Һеҙ был биттең сығанаҡ текстын ҡарай һәм күсермәһен ала алаһығыҙ:",
        "viewyourtext": "Был биттәге '''үҙгәртеүҙәрегеҙҙең''' сығанаҡ текстын ҡарай һәм күсермәһен ала алаһығыҙ:",
        "protectedinterface": "Был биттә программаның интерфейс хәбәре бар. Вандализм осраҡтарын булдырмау өсөн, был битте үҙгәртеү тыйыла.\nБыл хәбәрҙең тәржемәһен өҫтәү йәки үҙгәртеү өсөн, зинһар, MediaWiki проектының [//translatewiki.net/ translatewiki.net] локалләштереү сайтын ҡулланығыҙ.",
-       "editinginterface": "'''Ð\98Ò\93Ñ\82ибаÑ\80.''' ÒºÐµÒ\99 Ð¿Ñ\80огÑ\80амманÑ\8bÒ£ Ð°Ñ\80айөÒ\99 Ñ\82екÑ\81Ñ\82Ñ\8b Ð±Ñ\83лÒ\93ан Ð±Ð¸Ñ\82Ñ\82е Ð¼Ó©Ñ\85Ó\99Ñ\80Ñ\80иÑ\80лÓ\99йһегеÒ\99.\nУнÑ\8b Ò¯Ò\99гÓ\99Ñ\80Ñ\82еү, Ð±Ð°Ñ\88ҡа Ò¡Ñ\83лланÑ\8bÑ\83Ñ\81Ñ\8bлаÑ\80Ò\99Ñ\8bн Ð°Ñ\80айөÒ\99 ÐºÒ¯Ñ\80енеÑ\88ен Ò¯Ò\99гÓ\99Ñ\80Ñ\82Ó\99Ñ\81Ó\99кÑ\82еÑ\80.\nТÓ\99Ñ\80жемÓ\99 Ó©Ñ\81өн [//translatewiki.net/wiki/Main_Page?setlang=ba translatewiki.net] Ð°Ð´Ñ\80еÑ\81Ñ\8bн, MediaWiki-нÑ\8b Ð»Ð¾ÐºÐ°Ð»Ð»Ó\99Ñ\88Ñ\82еÑ\80еү Ð¿Ñ\80оекÑ\82Ñ\8bн Ò¡Ñ\83лланÑ\8bÑ\83 Ñ\8fÒ¡Ñ\88Ñ\8bÑ\80аҡ Ð±Ñ\83лаÑ\81аҡÑ\82Ñ\8bÑ\80.",
+       "editinginterface": "'''Ð\98Ò\93Ñ\82ибаÑ\80.''' ÒºÐµÒ\99 Ð¿Ñ\80огÑ\80амманÑ\8bÒ£ Ð°Ñ\80айөÒ\99 Ñ\82екÑ\81Ñ\8b Ð±Ñ\83лÒ\93ан Ð±Ð¸Ñ\82Ñ\82е Ð¼Ó©Ñ\85Ó\99Ñ\80Ñ\80иÑ\80лÓ\99йһегеÒ\99.\nУнÑ\8b Ò¯Ò\99гÓ\99Ñ\80Ñ\82еү Ð±Ð°Ñ\88ҡа Ò¡Ñ\83лланÑ\8bÑ\83Ñ\81Ñ\8bлаÑ\80Ò\99Ñ\8bÒ£ Ð°Ñ\80айөÒ\99 ÐºÒ¯Ñ\80енеÑ\88ен Ò¯Ò\99гÓ\99Ñ\80Ñ\82Ó\99Ñ\81Ó\99к.\nТÓ\99Ñ\80жемÓ\99 Ó©Ñ\81өн [//translatewiki.net/wiki/Main_Page?setlang=ba translatewiki.net] Ð°Ð´Ñ\80еÑ\81Ñ\8bн, MediaWiki-нÑ\8b Ð»Ð¾ÐºÐ°Ð»Ð»Ó\99Ñ\88Ñ\82еÑ\80еү Ð¿Ñ\80оекÑ\82Ñ\8bн Ò¡Ñ\83лланÑ\8bÑ\83 Ñ\8fÒ¡Ñ\88Ñ\8bÑ\80аҡ Ð±Ñ\83лаÑ\81аҡ.",
        "translateinterface": "Был хәбәрҙе тәржәмә итү өсөн [//translatewiki.net/ translatewiki.net]сайтын ҡулланығыҙ.",
        "cascadeprotected": "Был бит үҙгәртеүҙәрҙән һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|1=биткә|биттәргә}} керә:\n$2",
        "namespaceprotected": "«$1» исем арауығындағы биттәрҙе мөхәррирләү өсөн хоҡуҡтарығыҙ юҡ.",
        "recentchanges-legend-heading": "<strong>Легенда:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|Яңы биттәр исемлеген]] ҡарағыҙ)",
        "recentchanges-submit": "Күрһәтергә",
-       "rcnotefrom": "Аҫтарак <strong>$3, $4</strong> өсөн {{PLURAL:$5|үҙгәртеүҙәр күрһәтелгән}} (<strong>$1</strong> артыҡ түгел).",
-       "rclistfrom": "$3 $2 Ð±Ð°Ñ\88лап яңы үҙгәртеүҙәрҙе күрһәт.",
+       "rcnotefrom": "Аҫта <strong>$3, $4</strong> ҡарата {{PLURAL:$5|үҙгәртеүҙәр күрһәтелгән}} (<strong>$1</strong> күберәк түгел).",
+       "rclistfrom": "$3 $2 Ð°Ð»Ñ\8bп яңы үҙгәртеүҙәрҙе күрһәт.",
        "rcshowhideminor": "бәләкәй төҙәтеүҙәрҙе $1",
        "rcshowhideminor-show": "Күрһәтергә",
        "rcshowhideminor-hide": "Йәшерергә",
        "categories-submit": "Күрһәтергә",
        "categoriespagetext": "{{PLURAL:$1|1=Был категория}}ла биттәр һәм    медиа-файллардар бар.\nАҫта [[Special:UnusedCategories|ҡулланылмаған категориялар]] күһәтелмәгән.\nШулай уҡ  [[Special:WantedCategories|талап ителгән категориялар]] күһәтелгән.",
        "categoriesfrom": "Ошондай хәрефтәрҙән башланған категорияларҙы күрһәтергә:",
-       "special-categories-sort-count": "күләме буйынса тәртипкә килтерергә",
-       "special-categories-sort-abc": "алфавит буйынса тәртипкә килтерергә",
        "deletedcontributions": "Ҡулланыусыларҙың юйылған өлөшө",
        "deletedcontributions-title": "Ҡулланыусыларҙың юйылған өлөшө",
        "sp-deletedcontributions-contribs": "башҡарған эштәр",
        "others": "башҡалар",
        "siteusers": "{{PLURAL:$2|1={{GENDER:$1|ҡатнашыусы}}|ҡатнашыусылар}} {{grammar:genitive|{{SITENAME}}}} $1",
        "anonusers": "{{PLURAL:$2|1=аноним ҡатнашыусы|аноним ҡатнашыусылар}} {{grammar:genitive|{{SITENAME}}}} $1",
-       "creditspage": "Рәхмәт белдереү",
+       "creditspage": "Рәхмәт белдереүҙәр",
        "nocredits": "Был мәҡәләне мөхәррирләүҙә ҡатнашыусылар исемлеге юҡ.",
        "spamprotectiontitle": "Спамдан һаҡлау",
        "spamprotectiontext": "Һеҙ һаҡларға теләгән бит спамдан һаҡлау ҡоралы тарафынан бикләнгән.\nҠара исемлеккә керетелгән тышҡы сайтҡа һылтанма быға сәбәпсе булыуы мөмкин.",
index a887961..d228878 100644 (file)
        "categories": "تهرئان",
        "categoriespagetext": "جهلیگین {{PLURAL:$1|دسته شامل|دسته جات شامل}} صفحات یا مدیا انت\n[[Special:UnusedCategories|دسته جات بی استفاده]] ادان پیشدارگ نه بنت.\n هنچوش بچار[[Special:WantedCategories|لوٹتگین دسته]].",
        "categoriesfrom": "پیشدار دسته جات که شروع بنت گون:",
-       "special-categories-sort-count": "ترتیب په اساس شمار",
-       "special-categories-sort-abc": "ترتیب الفبی",
        "deletedcontributions": "مشارکتان کابر حذف بوتء",
        "deletedcontributions-title": "مشارکتان کابر حذف بوتء",
        "sp-deletedcontributions-contribs": "مشارکتان",
index 47a40b4..a9a1d75 100644 (file)
        "categories": "Mga Kategoriya",
        "categoriespagetext": "An minasunod {{PLURAL:$1|kategorya na may laog na|mga kategorya na may laog na}} mga pahina o midya.\n[[Special:UnusedCategories|Dae ginamit na mga kategorya]] dae ipinapahiling digde.\nAsin man hilnga an [[Special:WantedCategories|kinakaipong mga kategorya]].",
        "categoriesfrom": "Pahilnga an mga kategorya magpoon sa:",
-       "special-categories-sort-count": "salansana sa paagi nin bilang",
-       "special-categories-sort-abc": "salansana sa paagi nin alpabetiko",
        "deletedcontributions": "Parâon an mga kontribusyon kan parágamit",
        "deletedcontributions-title": "Parâon an mga kontribusyon kan parágamit",
        "sp-deletedcontributions-contribs": "mga kontribusyon",
index 4338173..e5056f2 100644 (file)
        "apisandbox-dynamic-parameters": "Дадатковыя парамэтры",
        "apisandbox-dynamic-parameters-add-label": "Дадаць парамэтар:",
        "apisandbox-dynamic-parameters-add-placeholder": "Назва парамэтру",
+       "apisandbox-dynamic-error-exists": "Парамэтар з назвай «$1» ужо існуе.",
+       "apisandbox-deprecated-parameters": "Састарэлыя парамэтры",
        "apisandbox-results": "Вынікі",
        "apisandbox-request-url-label": "URL-адрас запыту:",
        "apisandbox-request-time": "Час запыту: {{PLURAL:$1|$1 мс}}",
        "categories-submit": "Паказаць",
        "categoriespagetext": "{{PLURAL:$1|1=Наступная катэгорыя зьмяшчае|Наступныя катэгорыі зьмяшчаюць}} старонкі альбо мэдыяфайлы.\nТут не паказаныя [[Special:UnusedCategories|катэгорыі, якія не выкарыстоўваюцца]].\nГлядзіце таксама [[Special:WantedCategories|сьпіс запатрабаваных катэгорыяў]].",
        "categoriesfrom": "Паказаць катэгорыі, пачынаючы з:",
-       "special-categories-sort-count": "сартаваць паводле колькасьці",
-       "special-categories-sort-abc": "сартаваць паводле альфабэту",
        "deletedcontributions": "Выдалены ўнёсак удзельніка",
        "deletedcontributions-title": "Выдалены ўнёсак удзельніка",
        "sp-deletedcontributions-contribs": "унёсак",
index 46a90ce..a2fbb19 100644 (file)
@@ -45,6 +45,7 @@
        "tog-watchdefault": "Дабаўляць старонкі і файлы пасля маіх правак у мой спіс назірання",
        "tog-watchmoves": "Дабаўляць перайменаваныя мной старонкі і файлы ў мой спіс назірання",
        "tog-watchdeletion": "Дабаўляць сцёртыя мной старонкі і файлы ў мой спіс назірання",
+       "tog-watchuploads": "Дадаваць файлы, якія я ўкладаю, у мой спіс назірання.",
        "tog-watchrollback": "Дадаваць старонкі, дзе я {{GENDER:|зрабіў|зрабіла}} адкат, у мой спіс назірання",
        "tog-minordefault": "Пачынаць кожную праўку як дробную",
        "tog-previewontop": "Папярэдні паказ — над рэдактарскім полем",
        "noemail": "Ва ўдзельніка \"$1\" няма запісанага адраса электроннай пошты.",
        "noemailcreate": "Вам неабходна паказаць дзеючы адрас электроннай пошты",
        "passwordsent": "На адрас электроннай пошты, зарэгістраваны для \"$1\",\nбыў дасланы новы пароль.\nКалі ласка, увайдзіце ў сістэму зноў пасля яго атрымання.",
-       "blocked-mailpassword": "Для адрасу IP, з якога вы працуеце, забароненыя праўкі, а значыць, у мэтах абароны ад злоўжывання нельга карыстацца і функцыяй аднаўлення паролю.",
+       "blocked-mailpassword": "Для адраса IP, з якога вы працуеце, забаронены праўкі. У мэтах абароны ад злоўжывання нельга карыстацца і функцыяй аднаўлення пароля.",
        "eauthentsent": "Пацверджанне было адасланае электроннай поштай на азначаны адрас эл.пошты.\nКаб туды, у далейшым, трапляла іншая пошта адсюль, патрабуецца выканаць інструкцыі, выкладзеныя ў тым эл.паведамленні, каб пацвердзіць сваё права на рахунак эл.пошты.",
        "throttled-mailpassword": "Нагаданне пра пароль ужо адсылалася на працягу апошн{{PLURAL:$1|яй гадзіны|іх $1 гадзін}}. Дзеля абароны ад злоўжыванняў, дазваляецца атрымліваць толькі адно такое нагаданне за {{PLURAL:$1|гадзіну|$1 гадзіны|$1 гадзін}}.",
        "mailerror": "Памылка адсылання эл.пошты: $1",
        "boteditletter": "р",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|назіральнік|назіральнікі|назіральнікаў}}]",
        "rc_categories": "Абмежаваць катэгорыямі (размяжоўваць знакам \"|\"):",
-       "rc_categories_any": "УÑ\81е",
+       "rc_categories_any": "Ð\9bÑ\8eбаÑ\8f Ð· Ð°Ð±Ñ\80анÑ\8bÑ\85",
        "rc-change-size-new": "$1 {{PLURAL:$1|байт|байты|байтаў}} пасля змены",
        "newsectionsummary": "/* $1 */ новы падраздзел",
        "rc-enhanced-expand": "Паказаць падрабязнасці",
        "categories-submit": "Паказаць",
        "categoriespagetext": "Наступн{{PLURAL:$1|ая катэгорыя ўтрымлівае|ыя $1 катэгорыі(-й) утрымліваюць}} старонкі або мультымедыю.\nТут не паказаныя [[Special:UnusedCategories|катэгорыі без складнікаў]].\nГл. таксама [[Special:WantedCategories|патрэбныя катэгорыі]].",
        "categoriesfrom": "Паказаць катэгорыі, пачынаючы з:",
-       "special-categories-sort-count": "пд. колькасці",
-       "special-categories-sort-abc": "пд. алфавіту",
        "deletedcontributions": "Выдалены ўклад удзельніка",
        "deletedcontributions-title": "Выдалены ўклад удзельніка",
        "sp-deletedcontributions-contribs": "Уклад",
        "tags-deactivate-not-allowed": "Немагчыма дэактываваць бірку \"$1\".",
        "tags-deactivate-submit": "Дэактываваць",
        "tags-update-add-not-allowed-one": "Бірку \"$1\" нельга дадаваць уручную.",
+       "tags-update-remove-not-allowed-one": "Бірку \"$1\" нельга выдаляць.",
+       "tags-update-remove-not-allowed-multi": "{{PLURAL:$2|Наступную бірку|Наступныя біркі}} нельга выдаляць уручную: $1",
        "tags-edit-title": "Правіць біркі",
        "tags-edit-manage-link": "Кіраванне біркамі",
        "tags-edit-revision-selected": "{{PLURAL:$1|Выбраная версія|Выбраныя версіі}} [[:$2]]:",
        "feedback-bugornote": "Калі вы гатовыя падрабязна апісаць тэхнічную праблему, калі ласка, [$1 паведаміце пра памылку].\nУ адваротным выпадку вы можаце выкарыстоўваць гэтую простую форму. Ваш каментар будзе дададзены на старонку «[$3 $2]» разам з вашым імем удзельніка і выкарыстоўваемым браўзерам.",
        "feedback-cancel": "Адмена",
        "feedback-close": "Зроблена.",
+       "feedback-dialog-title": "Даслаць водгук",
        "feedback-error-title": "Памылка",
        "feedback-error1": "Памылка. Невядомы вынік з API",
        "feedback-error2": "Памылка. Збой праўкі",
        "feedback-subject": "Тэма:",
        "feedback-submit": "Даслаць",
        "feedback-thanks": "Дзякуй! Ваш водгук размешчаны на старонцы «[$2 $1]».",
+       "feedback-thanks-title": "Дзякуем!",
        "searchsuggest-search": "Знайсці",
        "searchsuggest-containing": "змяшчае...",
        "api-error-badaccess-groups": "У Вас няма дазволу загружаць файлы ў гэтую вікі.",
        "default-skin-not-found-no-skins": "Упс! Прадвызначаная вокладка для вашай вікі (<code>$wgDefaultSkin</code>), <code>$1</code>, недаступна.\n\nВы не ўстанавілі вокладкі.\n\n; Калі вы толькі што ўстанавілі ці абнавілі MediaWiki:\n: Магчыма, вы ўстанавілі з git, ці наўпрост з зыходнага коду, выкарыстаўшы іншы метад. Гэта нармальна. MediaWiki 1.24 і навейшыя не ўключаюць вокладкі ў асноўнае сховішча. Паспрабуйце ўстанавіць некалькі вокладак з [https://www.mediawiki.org/wiki/Category:All_skins каталога вокладак mediawiki.org], такім чынам:\n:* Узяўшы [https://www.mediawiki.org/wiki/Download tarball-інсталятар], які ўтрымлівае некалькі вокладак і прыставак. Вы можаце скапіяваць і ўставіць каталог <code>skins/</code> адтуль.\n:* Зрабіўшы клон аднаго з сховішчаў <code>mediawiki/skins/*</code> праз git у каталог <code>skins/</code> вашай інсталяцыі MediaWiki.\n: Калі вы распрацоўшчык MediaWiki, гэта не павінна адбіцца на вашым git-сховішчы. Гл. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя: Настройка вокладак] дзеля інфармацыі па ўключэнні вокладак і выбары прадвызначэння.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (уключана)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>выключана</strong>)",
+       "mediastatistics-table-count": "Колькасць файлаў",
+       "mediastatistics-table-totalbytes": "Агульны памер",
        "mediastatistics-header-unknown": "Невядомыя",
        "mediastatistics-header-bitmap": "Растравыя выявы",
        "mediastatistics-header-drawing": "Рысункі (вектарныя выявы)",
index 7ab481f..f14a77b 100644 (file)
        "categories-submit": "Показване",
        "categoriespagetext": "{{PLURAL:$1|Следната категория съдържа|Следните категории съдържат}} страници или медийни файлове.\n[[Special:UnusedCategories|Неизползваните категории]] не са показани тук.\nВижте също списъка с [[Special:WantedCategories|желани категории]].",
        "categoriesfrom": "Показване на категориите, като се започне от:",
-       "special-categories-sort-count": "сортиране по брой",
-       "special-categories-sort-abc": "сортиране по азбучен ред",
        "deletedcontributions": "Изтрити приноси на потребител",
        "deletedcontributions-title": "Изтрити приноси на потребител",
        "sp-deletedcontributions-contribs": "приноси",
index d1b28e3..a54966c 100644 (file)
        "cachedspecial-refresh-now": "دیستین آخرین ئانی.",
        "categories": "تهرئان",
        "categoriesfrom": "تهرهانئ نشان داتین شرو شه:",
-       "special-categories-sort-count": "ترتیت کورتین بئ اساس اندازگ",
-       "special-categories-sort-abc": "ترتیب کورتین سیاهگانی",
        "deletedcontributions": "پاک بوته ئین مشارکتانی",
        "deletedcontributions-title": "پاک بوته ئین مشارکتانی",
        "sp-deletedcontributions-contribs": "مشارکت ئان",
index 0b83ef3..a87d235 100644 (file)
        "categories": "Tutumbung",
        "categoriespagetext": "{{PLURAL:$1|tumbung mangandung|tutumbung mangandung}} barikut baisi tutungkaran atawa midia.\n[[Special:UnusedCategories|Tumbung kada dipuruk]] kada ditampaiakan di sia.\nJanaki jua [[Special:WantedCategories|tutumbung nang dihandaki]].",
        "categoriesfrom": "Manampaiakan tutumbung mulai matan:",
-       "special-categories-sort-count": "susun ulih rikinan",
-       "special-categories-sort-abc": "susun abjad",
        "deletedcontributions": "Hapus sumbangan pamuruk",
        "deletedcontributions-title": "Hapus sumbangan pamuruk",
        "sp-deletedcontributions-contribs": "Sumbangan",
index a5cd76f..55e4cf2 100644 (file)
        "categories-submit": "দেখাও",
        "categoriespagetext": "এই {{PLURAL:$1|বিষয়শ্রেণীতে|বিষয়শ্রেণীসমূহে}} পাতা বা মিডিয়া রয়েছে।\n[[Special:UnusedCategories|অব্যবহৃত বিষয়শ্রেণীসমূহ]] এখানে দেখানো হয়েছে।\nআরও দেখুন [[Special:WantedCategories|আবশ্যক বিষয়শ্রেণীসমূহ]]।",
        "categoriesfrom": "এই অক্ষর দিয়ে শুরু হওয়া বিষয়শ্রেণীগুলো দেখাও:",
-       "special-categories-sort-count": "গণনার ভিত্তিতে সাজাও",
-       "special-categories-sort-abc": "বর্ণানুক্রমে সাজান",
        "deletedcontributions": "মুছে ফেলা ব্যবহারকারী অবদান",
        "deletedcontributions-title": "মুছে ফেলা ব্যবহারকারী অবদান",
        "sp-deletedcontributions-contribs": "অবদানসমূহ",
index 38f578e..03a0f88 100644 (file)
        "categories": "Roll ar rummadoù",
        "categoriespagetext": "Er {{PLURAL:$1|rummad|rummadoù}} da-heul ez eus pajennoù pe restroù media.\nNe ziskouezer ket amañ ar [[Special:UnusedCategories|Rummadoù dizimplij]].\nGwelet ivez ar [[Special:WantedCategories|rummadoù goulennet a vank]].",
        "categoriesfrom": "Diskouez ar rummadoù en ur gregiñ gant :",
-       "special-categories-sort-count": "Urzhiañ dre gont",
-       "special-categories-sort-abc": "urzh al lizherenneg",
        "deletedcontributions": "Degasadennoù diverket un implijer",
        "deletedcontributions-title": "Degasadennoù diverket un implijer",
        "sp-deletedcontributions-contribs": "Degasadennoù",
index 9525dd2..7d3500a 100644 (file)
        "categories-submit": "Prikaži",
        "categoriespagetext": "{{PLURAL:$1|Slijedeća kategorija sadrži|Slijedeće kategorije sadrže}} stranice ili multimedijalne datoteke.\n[[Special:UnusedCategories|Nekorištene kategorije]] nisu prikazane ovdje.\nVidi također [[Special:WantedCategories|zatražene kategorije]].",
        "categoriesfrom": "Prikaži kategorije počev od:",
-       "special-categories-sort-count": "sortiranje po broju",
-       "special-categories-sort-abc": "sortiraj po abecedi",
        "deletedcontributions": "Obrisani doprinosi korisnika",
        "deletedcontributions-title": "Obrisani doprinosi korisnika",
        "sp-deletedcontributions-contribs": "doprinosi",
index d7b490b..754af74 100644 (file)
        "categories-submit": "Mostra",
        "categoriespagetext": "{{PLURAL:$1|La següent categoria conté|Les següents categories contenen}} pàgines, o fitxers multimèdia.\n[[Special:UnusedCategories|Les categories no usades]] no s'hi mostren.\nVegeu també [[Special:WantedCategories|les categories sol·licitades]].",
        "categoriesfrom": "Mostra les categories que comencen a:",
-       "special-categories-sort-count": "ordena per recompte",
-       "special-categories-sort-abc": "ordena alfabèticament",
        "deletedcontributions": "Contribucions esborrades",
        "deletedcontributions-title": "Contribucions esborrades",
        "sp-deletedcontributions-contribs": "contribucions",
index 9ff6d92..e0543f0 100644 (file)
        "categories-submit": "Гайта",
        "categoriespagetext": "{{PLURAL:$1|1=Лахара категореш чохь ю|Лахара категореш чохь ю}} агӀонаш я медиа-файлаш.\nКхузахь гойтуш яц [[Special:UnusedCategories|лелош йоцу категореш]].\nКхин дӀа [[Special:WantedCategories| хийла еза категореш]].",
        "categoriesfrom": "Гучé яха категореш, тӀера:",
-       "special-categories-sort-count": "нисъе дукхаллица",
-       "special-categories-sort-abc": "нисъе абатца",
        "deletedcontributions": "Декъашхочун дӀабяккхина къинхьегам",
        "deletedcontributions-title": "ДӀабаьккхина къинхьегам",
        "sp-deletedcontributions-contribs": "къинхьегам",
index c2cdfdb..696fffe 100644 (file)
        "categories-submit": "نیشاندان",
        "categoriespagetext": "ئەم {{PLURAL:$1|پۆلە پەڕە یان پەڕگەی|پۆلانە پەڕە یان پەڕگەیان}} لەخۆگرتە.\n[[Special:UnusedCategories|پۆلە بەکارنەھێنراوەکان]] لێرەدا نیشان نەدراون.\n[[Special:WantedCategories|پۆلە خوازراوەکان]]یش ببینە.",
        "categoriesfrom": "نیشاندانی پۆلەکان بە دستپێکردن لە:",
-       "special-categories-sort-count": "ڕیز کردن بە پێی ژمارە",
-       "special-categories-sort-abc": "ڕیزکردن بە پێی ئەلفوبێ",
        "deletedcontributions": "بەشدارییە سڕاوەکان",
        "deletedcontributions-title": "بەشدارییە سڕاوەکانی بەکارھێنەر",
        "sp-deletedcontributions-contribs": "بەشدارییەکان",
index d96fd28..1a205ff 100644 (file)
        "categories-submit": "Zobrazit",
        "categoriespagetext": "Následující kategorie {{PLURAL:$1|obsahuje|obsahují}} stránky nebo soubory.\nNezobrazují se tu [[Special:UnusedCategories|nepoužívané kategorie]].\nPodívejte se také na [[Special:WantedCategories|žádané kategorie]].",
        "categoriesfrom": "Zobrazit kategorie počínaje od:",
-       "special-categories-sort-count": "seřadit podle počtu",
-       "special-categories-sort-abc": "seřadit abecedně",
        "deletedcontributions": "Smazané editace uživatele",
        "deletedcontributions-title": "Smazané editace uživatele",
        "sp-deletedcontributions-contribs": "příspěvky",
index e9b6846..2b45b47 100644 (file)
        "categories": "Categorïau",
        "categoriespagetext": "Mae'r {{PLURAL:$1|categori|categori|categorïau|categorïau|categorïau|categorïau}} isod yn cynnwys tudalennau neu ffeiliau amlgyfrwng.\nNi ddangosir [[Special:UnusedCategories|categorïau gwag]] yma.\nGweler hefyd [[Special:WantedCategories|categorïau sydd eu hangen]].",
        "categoriesfrom": "Dangos categorïau gan ddechrau gyda:",
-       "special-categories-sort-count": "trefnu yn ôl nifer",
-       "special-categories-sort-abc": "trefnu yn ôl yr wyddor",
        "deletedcontributions": "Cyfraniadau defnyddiwr i dudalennau dilëedig",
        "deletedcontributions-title": "Cyfraniadau defnyddiwr i dudalennau dilëedig",
        "sp-deletedcontributions-contribs": "cyfraniadau",
index f42e6e5..77e9418 100644 (file)
        "categories": "Kategorier",
        "categoriespagetext": "Følgende {{PLURAL:$1|kategori|kategorier}} indeholder sider eller media.\n[[Special:UnusedCategories|Ubrugte kategorier]] vises ikke her.\nSe også [[Special:WantedCategories|ønskede kategorier]].",
        "categoriesfrom": "Vis kategorier startende med:",
-       "special-categories-sort-count": "sorter efter antal",
-       "special-categories-sort-abc": "sorter alfabetisk",
        "deletedcontributions": "Slettede brugerbidrag",
        "deletedcontributions-title": "Slettede brugerbidrag",
        "sp-deletedcontributions-contribs": "bidrag",
index d88749b..0b1a874 100644 (file)
        "categories-submit": "Anzeigen",
        "categoriespagetext": "Folgende {{PLURAL:$1|Kategorie enthält|Kategorien enthalten}} Seiten oder Dateien.\n[[Special:UnusedCategories|Verwaiste Kategorien]] werden hier nicht aufgeführt.\nSiehe auch die Liste der [[Special:WantedCategories|gewünschten Kategorien]].",
        "categoriesfrom": "Zeige Kategorien ab:",
-       "special-categories-sort-count": "Sortierung nach Anzahl",
-       "special-categories-sort-abc": "Sortierung nach Alphabet",
        "deletedcontributions": "Gelöschte Beiträge",
        "deletedcontributions-title": "Gelöschte Beiträge",
        "sp-deletedcontributions-contribs": "Benutzerbeiträge",
index 7179293..9aac75d 100644 (file)
        "categories": "Kategoriy",
        "categoriespagetext": "{{PLURAL:$1|Kategoriya cêrene|Kategoriyanê cêrênan}} de peli ya zi medya estê.\n[[Special:UnusedCategories|Kategoriyê ke nêxebetiyenê]] tiya de nêmocniyayê.\n[[Special:WantedCategories|Kategoriyanê waşteyeyan]] de zi bıvêne.",
        "categoriesfrom": "Kategoriyê ke be ninan dest pêkenê, bımocne:",
-       "special-categories-sort-count": "goreyê çendi rêz ker.",
-       "special-categories-sort-abc": "alfabetik rêz ker",
        "deletedcontributions": "İştırakê karberi esterdi",
        "deletedcontributions-title": "İştırakê karberi esterdi",
        "sp-deletedcontributions-contribs": "iştıraqi",
index eed60a6..f11718e 100644 (file)
        "categories": "Kategorije",
        "categoriespagetext": "{{PLURAL:$1|Slědujuca kategorija wopśimujo|Slědujucej kategoriji wopśimujotej|Slědujuce kategorije wopśimuju|Slědujuce kategorije wopśimuju}} boki abo medije.\n[[Special:UnusedCategories|Njewužywane kategorije]] se how njepokazuju.\nGlědaj teke [[Special:WantedCategories|póžedane kategorije]].",
        "categoriesfrom": "Kategorije pokazaś, zachopinajucy z:",
-       "special-categories-sort-count": "pśewuběrowaś pó licbje",
-       "special-categories-sort-abc": "pśewuběrowaś pó alfabeśe",
        "deletedcontributions": "Wulašowane wužywarske pśinoski",
        "deletedcontributions-title": "Wulašowane wužywarske pśinoski",
        "sp-deletedcontributions-contribs": "pśinoski",
index f3b31cc..5b96993 100644 (file)
        "categories-submit": "Εμφάνιση",
        "categoriespagetext": "Οι ακόλουθες {{PLURAL:$1|κατηγορία περιέχει|κατηγορίες περιέχουν}} σελίδες ή μέσα.\nΟι [[Special:UnusedCategories|αχρησιμοποίητες κατηγορίες]] δεν εμφανίζονται εδώ.\nΔείτε επίσης τις [[Special:WantedCategories|ζητούμενες κατηγορίες]].",
        "categoriesfrom": "Εμφάνιση κατηγοριών που αρχίζουν από:",
-       "special-categories-sort-count": "ταξινόμηση κατά απαρίθμηση",
-       "special-categories-sort-abc": "αλφαβητική ταξινόμηση",
        "deletedcontributions": "Διαγεγραμμένες συνεισφορές χρήστη",
        "deletedcontributions-title": "Διαγεγραμμένες συνεισφορές χρήστη",
        "sp-deletedcontributions-contribs": "συνεισφορές",
index ae00baa..46d2669 100644 (file)
        "categories-submit": "Montri",
        "categoriespagetext": "La {{PLURAL:$1|jena kategorio|jenaj kategorioj}} ekzistas jam en la vikio.\n[[Special:UnusedCategories|Neuzataj kategorioj]] ne estis montrataj ĉi tie.\nVidu ankaŭ [[Special:WantedCategories|Dezirataj kategorioj]].",
        "categoriesfrom": "Montri kategoriojn komencante de:",
-       "special-categories-sort-count": "oridigi laŭ nombrado",
-       "special-categories-sort-abc": "ordigi laŭ alfabeto",
        "deletedcontributions": "Forigitaj kontribuoj de uzantoj",
        "deletedcontributions-title": "Forigitaj kontribuoj de uzantoj",
        "sp-deletedcontributions-contribs": "kontribuoj",
index 7a54121..789bc54 100644 (file)
        "categories-submit": "Mostrar",
        "categoriespagetext": "Las siguientes {{PLURAL:$1|categoría contiene|categorías contienen}} páginas o medios.\nNo se muestran aquí las [[Special:UnusedCategories|categorías sin uso]].\nVéase también las [[Special:WantedCategories|categorías requeridas]].",
        "categoriesfrom": "Mostrar categorías que empiecen por:",
-       "special-categories-sort-count": "ordenar por conteo",
-       "special-categories-sort-abc": "ordenar alfabéticamente",
        "deletedcontributions": "Contribuciones borradas de usuario",
        "deletedcontributions-title": "Contribuciones borradas de usuario",
        "sp-deletedcontributions-contribs": "contribuciones",
        "watchlistedit-raw-done": "Tu lista de seguimiento se ha actualizado.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Se ha añadido una página|Se han añadido $1 páginas}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Una página ha sido borrada|$1 páginas han sido borradas}}:",
-       "watchlistedit-clear-title": "Lista de seguimiento vaciada",
+       "watchlistedit-clear-title": "Vaciar la lista de seguimiento",
        "watchlistedit-clear-legend": "Vaciar la lista de seguimiento",
        "watchlistedit-clear-explain": "Todos los títulos serán eliminados de tu lista de seguimiento",
        "watchlistedit-clear-titles": "Títulos:",
index d65b2de..038f823 100644 (file)
        "categories-submit": "Näita",
        "categoriespagetext": "Vikis on {{PLURAL:$1|järgmine kategooria|järgmised kategooriad}}.\nSiin ei näidata [[Special:UnusedCategories|kasutamata kategooriaid]].\nVaata ka [[Special:WantedCategories|puuduvaid kategooriaid]].",
        "categoriesfrom": "Näita kategooriaid alates:",
-       "special-categories-sort-count": "järjesta hulga järgi",
-       "special-categories-sort-abc": "järjesta tähestikuliselt",
        "deletedcontributions": "Kustutatud kaastöö",
        "deletedcontributions-title": "Kasutaja kustutatud kaastöö",
        "sp-deletedcontributions-contribs": "kaastöö",
index 09c8349..9531e2c 100644 (file)
        "categories-submit": "Erakutsi",
        "categoriespagetext": "Ondorengo {{PLURAL:$1|kategoria honek|kategoria hauek}} orriak edo fitxategiak {{PLURAL:$1|dauzka|dauzkate}}.\n[[Special:UnusedCategories|Erabili gabeko kategoriak]] ez dira hemen erakusten.\nIkus, gainera, [[Special:WantedCategories|kategoriarik eskatuenak]].",
        "categoriesfrom": "Honela hasten diren kategoriak erakutsi:",
-       "special-categories-sort-count": "kontatetzearen arabera ordenatu",
-       "special-categories-sort-abc": "alfabetikoki aldatu",
        "deletedcontributions": "Ezabatutako ekarpenak",
        "deletedcontributions-title": "Ezabatutako ekarpenak",
        "sp-deletedcontributions-contribs": "ekarpenak",
index e4fb3eb..93d25bf 100644 (file)
        "allpages-bad-ns": "{{SITENAME}} nu tieni el espaciu e nombris \"$1\".",
        "categories": "Categorias",
        "categoriespagetext": "Las siguientis categorias contienin artículus u archivus murtimeya.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
-       "special-categories-sort-count": "ordenal pol cuenta",
-       "special-categories-sort-abc": "ordenal alfabeticamenti",
        "deletedcontributions": "Contribucionis el usuáriu esborrás",
        "deletedcontributions-title": "Contribucionis el usuáriu esborrás",
        "linksearch": "Atihus estelnus",
index d5dae8e..4868e64 100644 (file)
        "categories-submit": "نمایش",
        "categoriespagetext": "{{PLURAL:$1|ردهٔ|رده‌های}} زیر دارای صفحات یا پرونده‌هایی {{PLURAL:$1|است|هستند}}.\n[[Special:UnusedCategories|رده‌های استفاده‌نشده]] در اینجا نمایش داده نشده‌اند.\nهمچنین [[Special:WantedCategories|رده‌های مورد نیاز]] را ببینید.",
        "categoriesfrom": "نمایش رده‌ها با شروع از:",
-       "special-categories-sort-count": "مرتب کردن بر اساس تعداد",
-       "special-categories-sort-abc": "مرتب کردن الفبایی",
        "deletedcontributions": "مشارکت‌های حذف‌شده",
        "deletedcontributions-title": "مشارکت‌های حذف‌شده",
        "sp-deletedcontributions-contribs": "مشارکت‌ها",
index c8ffc01..2ceee0c 100644 (file)
@@ -48,7 +48,8 @@
                        "Beluga",
                        "Pyscowicz",
                        "Olimar",
-                       "Mikahama"
+                       "Mikahama",
+                       "01miki10"
                ]
        },
        "tog-underline": "Linkkien alleviivaus:",
@@ -66,6 +67,7 @@
        "tog-watchdefault": "Lisää muokkaamani sivut ja tiedostot tarkkailulistalleni",
        "tog-watchmoves": "Lisää siirtämäni sivut ja tiedostot tarkkailulistalleni",
        "tog-watchdeletion": "Lisää poistamani sivut ja tiedostot tarkkailulistalleni",
+       "tog-watchuploads": "Lisää tallentamani tiedostot tarkkailulistalleni",
        "tog-watchrollback": "Lisää tarkkailulistalleni ne sivut, joissa olen käyttänyt palautus-toimintoa.",
        "tog-minordefault": "Merkitse kaikki muutokset oletuksena pieniksi",
        "tog-previewontop": "Näytä esikatselu muokkauskentän yläpuolella",
        "noemail": "Käyttäjälle $1 ei ole määritelty sähköpostiosoitetta.",
        "noemailcreate": "Sinun on annettava voimassa oleva sähköpostiosoite",
        "passwordsent": "Uusi salasana on lähetetty käyttäjän <b>$1</b> sähköpostiosoitteeseen.\nOle hyvä ja kirjaudu sisään kun olet saanut sen.",
-       "blocked-mailpassword": "Osoitteellesi on asetettu muokkausesto, joka estää käyttämästä salasanamuistutustoimintoa.",
+       "blocked-mailpassword": "IP-osoitteellesi on asetettu muokkausesto. Väärinkäytön estämiseksi salasanamuistutustoiminnon käyttö tästä IP-osoitteesta on kielletty.",
        "eauthentsent": "Varmennussähköposti on lähetetty annettuun sähköpostiosoitteeseen.\nMuita viestejä ei lähetetä, ennen kuin olet toiminut viestin ohjeiden mukaan ja varmistanut, että sähköpostiosoite kuuluu sinulle.",
        "throttled-mailpassword": "Salasananpalautusviesti on lähetetty {{PLURAL:$1|kuluvan|kuluvien $1}} tunnin aikana. Salasananpalautusviestejä lähetetään enintään {{PLURAL:$1|tunnin|$1 tunnin}} välein.",
        "mailerror": "Virhe lähetettäessä sähköpostia: $1",
        "changepassword-success": "Salasanasi on vaihdettu!",
        "changepassword-throttled": "Olet tehnyt liian monta äskettäistä kirjautumisyritystä.\nOdota $1 ennen kuin yrität uudelleen.",
        "botpasswords": "Botin salasanat",
+       "botpasswords-summary": "<em>Bottisalasanat</em> mahdollistavat pääsyn käyttäjätunnukselle API:n kautta käyttämättä tunnuksen pääkirjautumistietoja. Käyttäjäoikeudet voivat olla rajoitettuja kirjauduttaessa sisään bottisalasanalla.\n\nJos et tiedä, miksi haluaisit tehdä tämän, on parasta olla tekemättä sitä. Kenenkään ei koskaan pitäisi pyytää sinua luomaan bottisalasanaa ja antamaan sen hänelle.",
        "botpasswords-disabled": "Botin salasanat on poistettu käytöstä.",
+       "botpasswords-no-central-id": "Käyttääksesi bottisalasanoja sinun täytyy olla kirjautuneena sisään keskitetyllä tunnuksella.",
+       "botpasswords-existing": "Olemassaolevat bottisalasanat",
+       "botpasswords-createnew": "Luo uusi bottisalasana",
+       "botpasswords-editexisting": "Muokkaa olemassaolevaa bottisalasanaa",
        "botpasswords-label-appid": "Botin nimi:",
        "botpasswords-label-create": "Luo",
        "botpasswords-label-update": "Päivitä",
        "botpasswords-label-resetpassword": "Uudista salasana",
        "botpasswords-label-grants": "Valittavissa olevat toimintaoikeudet:",
        "botpasswords-label-restrictions": "Käyttörajoitukset:",
+       "botpasswords-bad-appid": "Botin nimi \"$1\" ei kelpaa.",
+       "botpasswords-insert-failed": "Botin nimen \"$1\" lisääminen epäonnsitui. Onko se jo lisätty?",
+       "botpasswords-update-failed": "Botin nimen \"$1\" päivittäminen epäonnistui. Onko se poistettu?",
+       "botpasswords-created-title": "Bottisalasana luotu",
+       "botpasswords-created-body": "Bottisalasana käyttäjän \"$2\" bottinimelle \"$1\" luotiin.",
+       "botpasswords-updated-title": "Bottisalasana päivitetty",
+       "botpasswords-updated-body": "Bottisalasana käyttäjän \"$2\" bottinimelle \"$1\" päivitettiin.",
+       "botpasswords-deleted-title": "Bottisalasana poistettu",
+       "botpasswords-deleted-body": "Bottisalasana käyttäjän \"$2\" bottinimelle \"$1\" poistettiin.",
+       "botpasswords-newpassword": "Uusi salasana kirjautumiseen käyttäjällä <strong>$1</strong> on <strong>$2</strong>. <em>Säilytä tämä myöhempää käyttöä varten.</em>",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider ei ole saatavilla.",
+       "botpasswords-restriction-failed": "Bottisalasanan rajoitukset estävät tämän sisäänkirjautumisen.",
+       "botpasswords-invalid-name": "Annetussa käyttäjätunnuksessa ei ole bottisalasanan erotinta (\"$1\").",
+       "botpasswords-not-exist": "Käyttäjällä \"$1\" ei ole bottisalasanaa nimellä \"$2\".",
        "resetpass_forbidden": "Salasanoja ei voi vaihtaa.",
        "resetpass-no-info": "Et voi nähdä tätä sivua kirjautumatta sisään.",
        "resetpass-submit-loggedin": "Muuta salasana",
        "resetpass-submit-cancel": "Peruuta",
-       "resetpass-wrong-oldpass": "Virheellinen väliaikainen tai nykyinen salasana.\nOlet saattanut jo onnistuneesti vaihtaa salasanasi tai pyytää uutta väliaikaista salasanaa.",
+       "resetpass-wrong-oldpass": "Virheellinen väliaikainen tai nykyinen salasana.\nOlet saattanut jo vaihtaa salasanasi tai pyytää uutta väliaikaista salasanaa.",
        "resetpass-recycled": "Sinun täytyy valita uudeksi salasanaksi jokin muu kuin nykyinen salasanasi.",
        "resetpass-temp-emailed": "Olet kirjautunut sisään väliaikaisella sähköpostitse toimitetulla koodilla.\nJotta pääset kirjautumaan sisään kunnolla, sinun on nyt asetettava uusi salasana tässä:",
        "resetpass-temp-password": "Väliaikainen salasana:",
        "newarticle": "(Uusi)",
        "newarticletext": "Linkki toi sivulle, jota ei vielä ole.\nVoit luoda sivun kirjoittamalla alla olevaan kenttään (katso [$1 ohjesivulta] lisätietoja).\nJos et halua luoda sivua, käytä selaimen paluutoimintoa.",
        "anontalkpagetext": "----''Tämä on nimettömän käyttäjän keskustelusivu. Hän ei ole joko luonut itselleen käyttäjätunnusta tai ei käytä sitä. Siksi hänet tunnistetaan nyt numeerisella IP-osoitteella. Kyseinen IP-osoite voi olla useamman henkilön käytössä. Jos olet nimetön käyttäjä, ja sinusta tuntuu, että aiheettomia kommentteja on ohjattu sinulle, [[Special:UserLogin/signup|luo itsellesi käyttäjätunnus]] tai [[Special:UserLogin|kirjaudu sisään]] välttääksesi jatkossa sekaannukset muiden nimettömien käyttäjien kanssa.''",
-       "noarticletext": "Tällä hetkellä tällä sivulla ei ole tekstiä.\nVoit [[Special:Search/{{PAGENAME}}|etsiä sivun nimellä]] muilta sivuilta,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hakea aiheeseen liittyviä lokeja]\ntai [{{fullurl:{{FULLPAGENAME}}|action=edit}} muokata tätä sivua]</span>.",
+       "noarticletext": "Tällä hetkellä tällä sivulla ei ole tekstiä.\nVoit [[Special:Search/{{PAGENAME}}|etsiä sivun nimellä]] muilta sivuilta,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hakea aiheeseen liittyviä lokeja]\ntai [{{fullurl:{{FULLPAGENAME}}|action=edit}} luoda tämän sivun]</span>.",
        "noarticletext-nopermission": "Tällä hetkellä tällä sivulla ei ole tekstiä.\nVoit [[Special:Search/{{PAGENAME}}|etsiä sivun nimellä]] muilta sivuilta tai <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hakea aiheeseen liittyviä lokeja]</span>, mutta sinulla ei ole oikeutta luoda tätä sivua.",
        "missing-revision": "Sivusta \"{{FULLPAGENAME}}\" ei ole olemassa versiota $1.\n\nYleensä tämä johtuu vanhentuneesta historialinkistä sivulle, joka on poistettu.\nTarkempia tietoja löytyy [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokista].",
        "userpage-userdoesnotexist": "Käyttäjätunnusta \"$1\" ei ole rekisteröity. \nVarmista, haluatko luoda tämän sivun tai muokata sitä.",
        "previewnote": "'''Tämä on vasta sivun esikatselu.'''\nTekemiäsi muutoksia ei ole vielä tallennettu.",
        "continue-editing": "Siirry muokkauskenttään",
        "previewconflict": "Tämä esikatselu näyttää miltä muokkausalueella oleva teksti näyttää tallennettuna.",
-       "session_fail_preview": "'''Muokkaustasi ei voitu tallentaa, koska istuntosi tiedot ovat kadonneet.''' Yritä uudelleen. Jos ongelma ei katoa, yritä [[Special:UserLogout|kirjautua ulos]] ja takaisin sisään.",
+       "session_fail_preview": "Muokkaustasi ei voitu tallentaa, koska istuntosi tiedot ovat kadonneet.\n\nSaatat olla kirjautunut ulos. '''Varmista, että olet edelleen kirjautunut sisään ja yritä uudelleen'''. Jos ongelma ei katoa, yritä [[Special:UserLogout|kirjautua ulos]] ja takaisin sisään, ja varmista, että selaimesi sallii evästeet tältä sivustolta.",
        "session_fail_preview_html": "'''Muokkaustasi ei voitu tallentaa, koska istuntosi tiedot ovat kadonneet.'''\n\nEsikatselu on piilotettu varokeinona JavaScript-hyökkäyksiä vastaan – tässä wikissä on HTML-tila päällä.\n\nYritä uudelleen. Jos ongelma ei katoa, yritä [[Special:UserLogout|kirjautua ulos]] ja takaisin sisään.",
        "token_suffix_mismatch": "'''Muokkauksesi on hylätty, koska asiakasohjelmasi ei osaa käsitellä välimerkkejä muokkaustarkisteessa. Syynä voi olla viallinen välityspalvelin.'''",
        "edit_form_incomplete": "'''Osa muokkauslomakkeesta ei saavuttanut palvelinta. Tarkista, että muokkauksesi ovat vahingoittumattomia ja yritä uudelleen.'''",
        "recentchangeslinked-page": "Sivun nimi:",
        "recentchangeslinked-to": "Näytä sen sijaan muutokset sivuihin, joista on linkki tähän sivuun",
        "recentchanges-page-added-to-category": "[[:$1]] lisätty luokkaan",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] ja [[Special:WhatLinksHere/$1|{{PLURAL:$2|yksi sivu|$2 sivua}}]] lisätty luokkaan",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] lisätty luokkaan, [[Special:WhatLinksHere/$1|tämä sivu on sisällytetty muihin sivuihin]]",
        "recentchanges-page-removed-from-category": "[[:$1]] poistettu luokasta",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] ja [[Special:WhatLinksHere/$1|{{PLURAL:$2|yksi sivu|$2 sivua}}]] poistettu luokasta",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] poistettu luokasta, [[Special:WhatLinksHere/$1|tämä sivu on sisällytetty muihin sivuihin]]",
        "autochange-username": "MediaWiki automaattinen muutos",
        "upload": "Tallenna tiedosto",
        "uploadbtn": "Tallenna tiedosto",
        "uploaded-script-svg": "Found scriptable element \"$1\" in the uploaded SVG file.",
        "uploaded-hostile-svg": "Tallennetun SVG-tiedoston tyylielementissä löytyi turvaton CSS.",
        "uploaded-event-handler-on-svg": "Setting event-handler attributes <code>$1=\"$2\"</code> is not allowed in SVG files.",
-       "uploaded-href-unsafe-target-svg": "Found href to unsafe target <code>&lt;$1 $2=\"$3\"&gt;</code> in the uploaded SVG file.",
+       "uploaded-href-attribute-svg": "href-attribuutit SVG-tiedostoissa saavat linkittää vain http://- tai https://-kohteisiin, löytyi <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "Löytyi href epäturvalliseen dataan: URI-kohde <code>&lt;$1 $2=\"$3\"&gt;</code> tallennetussa SVG-tiedostossa.",
        "uploaded-animate-svg": "Found \"animate\" tag that might be changing href, using the \"from\" attribute <code>&lt;$1 $2=\"$3\"&gt;</code> in the uploaded SVG file.",
        "uploaded-setting-event-handler-svg": "Setting event-handler attributes is blocked, found <code>&lt;$1 $2=\"$3\"&gt;</code> in the uploaded SVG file.",
        "uploaded-setting-href-svg": "Using the \"set\" tag to add \"href\" attribute to parent element is blocked.",
        "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-foreign-cant-upload": "Tätä wikiä ei ole konfiguroitu tallentamaan tiedostoja pyydettyyn ulkoiseen tiedostovarastoon.",
        "upload-dialog-title": "Tiedoston tallennus",
        "upload-dialog-button-cancel": "Peru",
        "upload-dialog-button-done": "Valmis",
        "upload-dialog-button-upload": "Tallenna",
        "upload-form-label-infoform-title": "Yksityiskohdat",
        "upload-form-label-infoform-name": "Nimi",
+       "upload-form-label-infoform-name-tooltip": "Tiedoston yksilöllinen ja kuvaava otsikko, jota käytetään tiedostonimenä. Voit käyttää tavallista kieltä välilyönnein. Älä sisällytä tiedoston päätettä.",
        "upload-form-label-infoform-description": "Kuvaus",
+       "upload-form-label-infoform-description-tooltip": "Kuvaa lyhyesti kaikkea, mikä on teoksessa huomionarvoista.\nJos kyseessä on valokuva, mainitse kuvatut pääasiat, tapahtuma tai paikka.",
        "upload-form-label-usage-title": "Käyttö",
        "upload-form-label-usage-filename": "Tiedostonimi",
        "foreign-structured-upload-form-label-own-work": "Tämä on oma työni",
        "apihelp": "API-apu",
        "apihelp-no-such-module": "Moduulia ”$1” ei löydy.",
        "apisandbox": "API-hiekkalaatikko",
+       "apisandbox-jsonly": "JavaScript vaaditaan API-hiekkalaatikon käyttämiseen.",
        "apisandbox-api-disabled": "API on poistettu käytöstä tällä sivustolla.",
-       "apisandbox-intro": "Tämä on '''MediaWiki API:n''' hiekkalaatikko.\n[//www.mediawiki.org/wiki/API:Main_page API-dokumentaatio] kertoo lisää API:en käytöstä.",
+       "apisandbox-intro": "Käytä tätä sivua kokeillaksesi '''MediaWikin verkkopalvelun API:a'''.\n[[mw:API:Main page|API-dokumentaatio]] kertoo lisää API:en käytöstä. Esimerkki: [//www.mediawiki.org/wiki/API#A_simple_example hae etusivun sisältö]. Valitse toiminto nähdäksesi lisää esimerkkejä.\n\nHuomioi, että vaikka tämä on hiekkalaatikko, sivulla suorittamasi toiminnot saattavat muokata wikiä.",
        "apisandbox-fullscreen": "Laajenna paneeli",
+       "apisandbox-fullscreen-tooltip": "Laajenna hiekkalaatikkopaneeli täyttämään selainikkuna.",
        "apisandbox-unfullscreen": "Palaa sivunäkymään",
+       "apisandbox-unfullscreen-tooltip": "Pienennä hiekkalaatikkopaneelia, jotta MediaWikin navigaatiolinkit ovat saatavilla.",
        "apisandbox-submit": "Tee pyyntö",
        "apisandbox-reset": "Tyhjennä",
        "apisandbox-retry": "Yritä uudestaan",
+       "apisandbox-loading": "Ladataan tietoja API-moduulista \"$1\"...",
+       "apisandbox-load-error": "Tapahtui virhe ladattaessa tietoja API-moduulista \"$1\": $2",
        "apisandbox-no-parameters": "Tässä API-moduulissa ei ole parametreja.",
        "apisandbox-helpurls": "Linkit ohjeisiin",
        "apisandbox-examples": "Esimerkit",
        "apisandbox-results": "Tulokset",
        "apisandbox-sending-request": "API-pyyntöä lähetetään...",
        "apisandbox-loading-results": "API-tuloksia vastaanotetaan...",
+       "apisandbox-results-error": "Tapahtui virhe ladattaessa API-kyselyn vastausta: $1",
        "apisandbox-request-url-label": "Pyynnön URL",
        "apisandbox-request-time": "Pyyntöön kulunut aika: {{PLURAL:$1|$1 ms}}",
        "apisandbox-alert-page": "Tällä sivulla olevat kentät eivät ole kelvollisia.",
        "categories-submit": "Näytä",
        "categoriespagetext": "{{PLURAL:$1|Seuraava luokka sisältää|Seuraavat luokat sisältävät}} sivuja tai mediatiedostoja.\n[[Special:UnusedCategories|Käyttämättömiä luokkia]] ei näytetä.\nKatso myös [[Special:WantedCategories|halutut luokat]].",
        "categoriesfrom": "Näytä alkaen luokasta",
-       "special-categories-sort-count": "järjestä koon mukaan",
-       "special-categories-sort-abc": "järjestä nimen mukaan",
        "deletedcontributions": "Poistetut muokkaukset",
        "deletedcontributions-title": "Poistetut muokkaukset",
        "sp-deletedcontributions-contribs": "muokkaukset",
        "deletepage": "Poista sivu",
        "confirm": "Toteuta",
        "excontent": "sisälsi: ”$1”",
-       "excontentauthor": "sisältö oli: \"$1\", ja ainoa muokkaaja oli \"[[Special:Contributions/$2|$2]]\"",
+       "excontentauthor": "sisältö oli: \"$1\", ja ainoa muokkaaja oli \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|keskustelu]])",
        "exbeforeblank": "ennen tyhjentämistä sisälsi: ”$1”",
        "delete-confirm": "Poista ”$1”",
        "delete-legend": "Sivun poisto",
        "imageinvalidfilename": "Kohdetiedoston nimi on virheellinen",
        "fix-double-redirects": "Päivitä kaikki vanhalle nimelle viittaavat ohjaukset ohjaamaan uudelle nimelle",
        "move-leave-redirect": "Jätä paikalle ohjaus",
-       "protectedpagemovewarning": "'''Varoitus:''' Tämä sivu on lukittu siten, että vain ylläpitäjät voivat siirtää sitä.\nAlla on viimeisin lokitapahtuma:",
+       "protectedpagemovewarning": "'''Varoitus:''' Tämä sivu on lukittu siten, että vain ylläpitäjät voivat siirtää sen.\nAlla on viimeisin lokitapahtuma:",
        "semiprotectedpagemovewarning": "Tämä sivu on lukittu siten, että vain rekisteröityneet käyttäjät voivat siirtää sitä.\nAlla on viimeisin lokitapahtuma:",
        "move-over-sharedrepo": "[[:$1]] on olemassa yhteisessä tietovarastossa. Tiedoston siirtäminen tälle nimelle korvaa yhteisen tiedoston.",
        "file-exists-sharedrepo": "Valittu tiedostonimi on jo käytössä jaetussa varastossa.\nValitse toinen nimi.",
        "print.css": "/* Tämä sivu sisältää tulostettua sivua muuttavia tyylejä */",
        "noscript.css": "/* Tämä sivun tyylit muuttavat niiden käyttäjien tyylejä, joilla JavaScript ei ole käytössä */",
        "group-autoconfirmed.css": "/* Tämä sivun tyylit muuttavat automaattisesti hyväksyttyjen käyttäjien tyylejä */",
+       "group-user.css": "/* Tämän sivun CSS vaikuttaa vain rekisteröityneisiin käyttäjiin */",
        "group-bot.css": "/* Tämä sivun tyylit muuttavat bottien tyylejä */",
        "group-sysop.css": "/* Tämä sivun tyylit muuttavat ylläpitäjien tyylejä */",
        "group-bureaucrat.css": "/* Tämä sivun tyylit muuttavat byrokraattien tyylejä */",
        "common.js": "/* Tämän sivun JavaScript-koodi liitetään jokaiseen sivulataukseen */",
        "group-autoconfirmed.js": "/* Tämän sivun JavaScript-koodi liitetään vain automaattisesti hyväksytyille käyttäjille */",
+       "group-user.js": "/* Tämän sivun JavaScript ladataan vain rekisteröityneille käyttäjille */",
        "group-bot.js": "/* Tämän sivun JavaScript-koodi liitetään vain boteille */",
        "group-sysop.js": "/* Tämän sivun JavaScript-koodi liitetään vain ylläpitäjille */",
        "group-bureaucrat.js": "/* Tämän sivun JavaScript-koodi liitetään vain byrokraateille */",
        "exif-compression-6": "JPEG (vanha)",
        "exif-copyrighted-true": "Tekijänoikeuksien alainen",
        "exif-copyrighted-false": "Tekijänoikeustiedot puuttuvat",
+       "exif-photometricinterpretation-0": "Mustavalkoinen (valkoinen on 0)",
        "exif-photometricinterpretation-1": "Mustavalkoinen (musta on 0)",
+       "exif-photometricinterpretation-3": "Paletti",
+       "exif-photometricinterpretation-4": "Läpinäkyvyysmaski",
+       "exif-photometricinterpretation-9": "CIE L*a*b* (ICC-koodaus)",
+       "exif-photometricinterpretation-10": "CIE L*a*b* (ITU-koodaus)",
        "exif-unknowndate": "Tuntematon päiväys",
        "exif-orientation-1": "Normaali",
        "exif-orientation-2": "Käännetty vaakasuunnassa",
        "confirmemail_body_set": "Joku, todennäköisesti sinä, IP-osoitteesta $1 on vaihtanut {{GRAMMAR:inessive|{{SITENAME}}}} tunnuksen $2 sähköpostiosoitteeksi tämän osoitteen.\n\nVarmenna, että tämä tunnus kuuluu sinulle ja aktivoi sähköpostitoiminnot uudelleen avaamalla seuraava linkki selaimellasi:\n\n$3\n\nJos tunnus ei kuulu sinulle, peruuta sähköpostiosoitteen varmennus avaamalla seuraava linkki:\n\n$5\n\nVarmennuskoodi vanhenee $4.",
        "confirmemail_invalidated": "Sähköpostiosoitteen varmennus peruutettiin",
        "invalidateemail": "Sähköpostiosoitteen varmennuksen peruuttaminen",
+       "notificationemail_subject_changed": "Sivuston {{SITENAME}} rekisteröity sähköpostiosoite on vaihdettu",
+       "notificationemail_subject_removed": "Sivuston {{SITENAME}} rekisteröity sähköpostiosoite on poistettu",
+       "notificationemail_body_changed": "Joku, todennäköisesti sinä, IP-osoitteesta $1 on vaihtanut tunnuksen \"$2\" sähköpostiosoitteeksi \"$3\" sivustolla {{SITENAME}}.\n\nJos se et ollut sinä, ota yhteyttä sivuston ylläpitäjään välittömästi.",
+       "notificationemail_body_removed": "Joku, todennäköisesti sinä, IP-osoitteesta $1 on poistanut tunnuksen \"$2\" sähköpostiosoitteen sivustolla {{SITENAME}}.\n\nJos se et ollut sinä, ota yhteyttä sivuston ylläpitäjään välittömästi.",
        "scarytranscludedisabled": "[Wikienvälinen sisällytys ei ole käytössä]",
        "scarytranscludefailed": "[Mallineen hakeminen epäonnistui: $1]",
        "scarytranscludefailed-httpstatus": "[Mallineen hakeminen epäonnistui: $1 HTTP $2]",
        "autoredircomment": "Ak: Ohjaus sivulle [[$1]]",
        "autosumm-new": "Ak: Uusi sivu: $1",
        "autosumm-newblank": "Ak: Luotiin tyhjä sivu",
+       "size-bytes": "$1 {{PLURAL:$1|tavu|tavua}}",
        "size-kilobytes": "$1 KiB",
        "size-megabytes": "$1 MiB",
        "size-gigabytes": "$1 GiB",
        "size-exabytes": "$1 EiB",
        "size-zetabytes": "$1 ZiB",
        "size-yottabytes": "$1 YiB",
+       "size-pixel": "$1 {{PLURAL:$1|pikseli|pikseliä}}",
        "bitrate-bits": "$1 bit/s",
        "bitrate-kilobits": "$1 kbit/s",
        "bitrate-megabits": "$1 Mbit/s",
        "watchlistedit-raw-done": "Tarkkailulistasi on päivitetty.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Yksi sivu|$1 sivua}} lisättiin:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Yksi sivu|$1 sivua}} poistettiin:",
-       "watchlistedit-clear-title": "Tyhjä tarkkailulista",
+       "watchlistedit-clear-title": "Tyhjennä tarkkailulista",
        "watchlistedit-clear-legend": "Tyhjennä tarkkailulista",
        "watchlistedit-clear-explain": "Kaikki sivut poistetaan tarkkailulistaltasi",
        "watchlistedit-clear-titles": "Sivujen nimet:",
        "log-action-filter-newusers-create2": "Luonut rekisteröity käyttäjä",
        "log-action-filter-newusers-autocreate": "Luotu automaattisesti",
        "log-action-filter-newusers-byemail": "Luotu salasanalla, joka on lähetetty sähköpostitse",
+       "log-action-filter-patrol-patrol": "Manuaalinen tarkastus",
+       "log-action-filter-patrol-autopatrol": "Automaattinen tarkastus",
        "log-action-filter-protect-protect": "Suojauksen asettaminen",
        "log-action-filter-protect-modify": "Suojausasetusten muuttaminen",
        "log-action-filter-protect-unprotect": "Suojauksen poistaminen",
index 4bbd1fa..2325bee 100644 (file)
        "categories-submit": "Lister",
        "categoriespagetext": "{{PLURAL:$1|La catégorie suivante est utilisée|Les catégories suivantes sont utilisées}} par des pages ou fichiers.\n[[Special:UnusedCategories|Les catégories inutilisées]] ne sont pas affichées ici.\nVoyez aussi [[Special:WantedCategories|les catégories demandées]].",
        "categoriesfrom": "Afficher les catégories à partir de :",
-       "special-categories-sort-count": "tri par nombre d'éléments",
-       "special-categories-sort-abc": "tri alphabétique",
        "deletedcontributions": "Contributions supprimées",
        "deletedcontributions-title": "Contributions supprimées",
        "sp-deletedcontributions-contribs": "contributions",
        "watchlistedit-raw-done": "Votre liste de suivi a été mise à jour.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Un titre a été ajouté|$1 titres ont été ajoutés}} :",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Un titre a été retiré|$1 titres ont été retirés}} :",
-       "watchlistedit-clear-title": "Liste de suivi vidée",
+       "watchlistedit-clear-title": "Vider la liste de suivi",
        "watchlistedit-clear-legend": "Effacer la liste de suivi",
        "watchlistedit-clear-explain": "Tous les titres seront supprimés de votre liste de suivi",
        "watchlistedit-clear-titles": "Titres :",
index 1ff6f9e..6f53f26 100644 (file)
@@ -26,6 +26,7 @@
        "tog-watchdefault": "Apondre a ma lista de gouârda les pâges et los fichiérs que chanjo",
        "tog-watchmoves": "Apondre a ma lista de gouârda les pâges et los fichiérs que dèplaço",
        "tog-watchdeletion": "Apondre a ma lista de gouârda les pâges et los fichiérs que suprimo",
+       "tog-watchuploads": "Apondre a ma lista de gouârda los novéls fichiérs que tèlèchârjo",
        "tog-watchrollback": "Apondre a ma lista de gouârda les pâges que j’é fêt na rèvocacion",
        "tog-minordefault": "Marcar per dèfôt tôs los changements coment petiôts",
        "tog-previewontop": "Montrar l’apèrçu d’amont la zona de changement",
        "protectedpagetext": "Cela pâge est étâye protègiêe por empachiér son changement ou ben d’ôtres accions.",
        "viewsourcetext": "Vos pouede vêre et copiyér lo tèxto sôrsa de cela pâge.",
        "viewyourtext": "Vos pouede vêre et copiyér lo tèxto sôrsa de <strong>voutros changements</strong> a cela pâge.",
-       "protectedinterface": "Cela pâge balye de tèxto d’entèrface por la programeria sur cél vouiqui et est vêr protègiêe por èvitar los abus.\nPor apondre ou ben changiér de traduccions sur tôs los vouiquis, se vos plét empleyéd [//translatewiki.net/ translatewiki.net], lo projèt de localisacion de MediaWiki.",
-       "editinginterface": "<strong>Atencion :</strong> vos éte aprés changiér na pâge empleyêe por fâre lo tèxto d’entèrface de la programeria.\nLos changements sè cognetront sur l’aparence de l’entèrface utilisator por los ôtros utilisators de cél vouiqui.",
+       "protectedinterface": "Cela pâge balye de tèxto d’entredoux por la programeria sur cél vouiqui et est vêr protègiêe por èvitar los abus.\nPor apondre ou ben changiér de traduccions sur tôs los vouiquis, se vos plét empleyéd [//translatewiki.net/ translatewiki.net], lo projèt de localisacion de MediaWiki.",
+       "editinginterface": "<strong>Atencion :</strong> vos éte aprés changiér na pâge empleyêe por fâre lo tèxto d’entredoux de la programeria.\nLos changements sè cognetront sur l’aparence de l’entredoux utilisator por los ôtros utilisators de cél vouiqui.",
        "translateinterface": "Por apondre changiér de traduccions sur tôs los vouiquis, se vos plét empleyéd [//translatewiki.net/ translatewiki.net], lo projèt de localisacion de MediaWiki.",
        "cascadeprotected": "Cela pâge est protègiêe contre los changements, el est transcllua per {{PLURAL:$1|cela pâge-que qu’est étâye protègiêe|celes pâges-que que sont étâyes protègiêes}} avouéc lo chouèx « protèccion en cascâda » activâ :\n$2",
        "namespaceprotected": "Vos éd pas la pèrmission de changiér les pâges de l’èspâço de noms « <strong>$1</strong> ».",
        "noemail": "Nion’adrèce èlèctronica est étâye encartâye por l’utilisator « $1 ».",
        "noemailcreate": "Vos dête balyér un’adrèce èlèctronica justa.",
        "passwordsent": "Un contresegno novél est étâ mandâ a l’adrèce èlèctronica de l’utilisator « $1 ».\nSe vos plét, tornâd-vos branchiér aprés l’avêr reçu.",
-       "blocked-mailpassword": "Voutron adrèce IP est blocâye en ècritura, la fonccion de sovegnence du contresegno est vêr dèsactivâye por èvitar los abus.",
+       "blocked-mailpassword": "Voutron adrèce IP est blocâye en ècritura. Por èvitar los abus, o est pas possiblo d’empleyér la sovegnence du contresegno dês cel’adrèce IP.",
        "eauthentsent": "Un mèssâjo de confirmacion est étâ mandâ a l’adrèce èlèctronica spècifiâye.\nDevant qu’un ôtro mèssâjo seye mandâ a cél comptio, vos devréd siuvre les enstruccions du mèssâjo et pués confirmar que lo comptio est franc lo voutro.",
        "throttled-mailpassword": "Un mèssâjo de remês’a zérô de voutron contresegno est ja étâ mandâ pendent {{PLURAL:$1|l’hora passâye|les $1 hores passâyes}}.\nPor èvitar los abus, mas que yon serat mandâ per {{PLURAL:$1|hora|entèrvalo de $1 hores}}.",
        "mailerror": "Fôta pendent l’èxpèdicion du mèssâjo : $1",
        "right-editprotected": "Changiér les pâges protègiêes avouéc « {{int:protect-level-sysop}} »",
        "right-editsemiprotected": "Changiér les pâges protègiêes avouéc « {{int:protect-level-autoconfirmed}} »",
        "right-editcontentmodel": "Changiér lo modèlo de contegnu d’una pâge",
-       "right-editinterface": "Changiér l’entèrface utilisator",
+       "right-editinterface": "Changiér l’entredoux utilisator",
        "right-editusercssjs": "Changiér los fichiérs CSS et JavaScript d’ôtros utilisators",
        "right-editusercss": "Changiér los fichiérs CSS d’ôtros utilisators",
        "right-edituserjs": "Changiér los fichiérs JavaScript d’ôtros utilisators",
        "recentchangeslinked-page": "Nom de la pâge :",
        "recentchangeslinked-to": "Montrar per contre los changements de les pâges qu’ant un lim de vers la pâge balyêe",
        "recentchanges-page-added-to-category": "[[:$1]] apondua a la catègoria",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] et [[Special:WhatLinksHere/$1|{{PLURAL:$2|na pâge apondua|$2 pâges apondues}}]] a la catègoria",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] apondua a la catègoria, [[Special:WhatLinksHere/$1|cela pâge est rapondua dedens d’ôtres]]",
        "recentchanges-page-removed-from-category": "[[:$1]] enlevâye de la catègoria",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] et [[Special:WhatLinksHere/$1|{{PLURAL:$2|na pâge enlevâye|$2 pâges enlevâyes}}]] de la catègoria",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] enlevâye de la catègoria, [[Special:WhatLinksHere/$1|cela pâge est rapondua dedens d’ôtres]]",
        "autochange-username": "Changement ôtomatico de MediaWiki",
        "upload": "Tèlèchargiér un fichiér",
        "uploadbtn": "Tèlèchargiér lo fichiér",
        "categories-submit": "Montrar",
        "categoriespagetext": "{{PLURAL:$1|Cela catègoria-que contint|Celes catègories-que contegnont}} de pâges de mèdiâs.\nLes [[Special:UnusedCategories|catègories pas empleyêes]] sont pas montrâyes ique.\nVêde avouéc les [[Special:WantedCategories|catègories demandâyes]].",
        "categoriesfrom": "Fâre vêre les catègories dês :",
-       "special-categories-sort-count": "chouèx per comptâjo",
-       "special-categories-sort-abc": "chouèx alfabètico",
        "deletedcontributions": "Contribucions suprimâyes",
        "deletedcontributions-title": "Contribucions suprimâyes",
        "sp-deletedcontributions-contribs": "contribucions",
        "ipb-unblock": "Dèblocar un nom d’utilisator un’adrèce IP",
        "ipb-blocklist": "Vêre los blocâjos ègzistents",
        "ipb-blocklist-contribs": "Contribucions por {{GENDER:$1|$1}}",
+       "ipb-blocklist-duration-left": "$1 que réstont",
        "unblockip": "Dèblocar un utilisator",
        "unblockiptext": "Empleyéd lo formulèro ce-desot por rètablir l’accès en ècritura dês un’adrèce IP blocâye un nom d’utilisator blocâ los côps devant.",
        "ipusubmit": "Enlevar cél blocâjo",
index ae95e25..c52df0a 100644 (file)
        "categories": "Kategoriin",
        "categoriespagetext": "{{PLURAL:$1|Detdiar kategorii häält|Jodiar kategoriin hual}} sidjen of datein.\n[[Special:UnusedCategories|Leesag kategoriin]] wurd heer ei uunwiset.\nLuke uk bi det list faan [[Special:WantedCategories|nuadag kategoriin]].",
        "categoriesfrom": "Wise kategoriin mä began üüb:",
-       "special-categories-sort-count": "Efter taalen sortiaret",
-       "special-categories-sort-abc": "Efter't alfabeet sortiaret",
        "deletedcontributions": "Stregen bidracher",
        "deletedcontributions-title": "Stregen bidracher",
        "sp-deletedcontributions-contribs": "Bidracher",
index f7154da..41368ee 100644 (file)
        "categories": "Kategoryen",
        "categoriespagetext": "De folgjende kategoriyen befetsje siden of mediatriemmen.\n[[Special:UnusedCategories|Net brûkte kategoryen]] wurde hjir net werjûn.\nSjuch ek [[Special:WantedCategories|net-besteande kategoryen mei ferwizings]].",
        "categoriesfrom": "Kategoryen werjaan fan .. ôf:",
-       "special-categories-sort-count": "op tal sortearje",
-       "special-categories-sort-abc": "alfabetysk sortearje",
        "deletedcontributions": "Wiske meidogger bydragen",
        "deletedcontributions-title": "Wiske meidogger bydragen",
        "sp-deletedcontributions-contribs": "bydragen",
index db5ed8d..d8659c0 100644 (file)
        "categories": "Roinnean-seòrsa",
        "categoriespagetext": "Tha duilleagan no meadhan {{PLURAL:$1|san roinn-seòrsa|sna roinnean-seòrsa|}} a leanas.\nChan fhaicear [[Special:UnusedCategories|roinnean-seòrsa gun chleachdadh an-seo]].\nThoir sùil air na [[Special:WantedCategories|roinnean-seòrsa a thathar 'gan iarraidh cuideachd]].",
        "categoriesfrom": "Seall roinnean-seòrsa o seo a-mach:",
-       "special-categories-sort-count": "seòrsaich a-rèir an uireid",
-       "special-categories-sort-abc": "seòrsaich a rèir na h-aibidil",
        "deletedcontributions": "Obair air a sguabadh às",
        "deletedcontributions-title": "Obair air a sguabadh às",
        "sp-deletedcontributions-contribs": "obair",
index 475666a..4cf6c83 100644 (file)
        "categories-submit": "Mostrar",
        "categoriespagetext": "{{PLURAL:$1|A seguinte categoría contén|As seguintes categorías conteñen}} páxinas ou contidos multimedia.\nAquí non se mostran as [[Special:UnusedCategories|categorías sen uso]].\nOlle tamén as [[Special:WantedCategories|categorías requiridas]].",
        "categoriesfrom": "Mostrar as categorías que comecen por:",
-       "special-categories-sort-count": "ordenar por número",
-       "special-categories-sort-abc": "ordenar alfabeticamente",
        "deletedcontributions": "Contribucións borradas do usuario",
        "deletedcontributions-title": "Contribucións borradas do usuario",
        "sp-deletedcontributions-contribs": "contribucións",
index 1c6a689..1b3138d 100644 (file)
        "allpages-bad-ns": "Τὸ {{SITENAME}} οὐκ ἔχει ὀνοματεῖον \"$1\".",
        "categories": "Κατηγορίαι",
        "categoriesfrom": "Δεικνύναι κατηγορίας (γραμμαὶ ἐκκινουμέναι ἐκ/ἐξ):",
-       "special-categories-sort-count": "ἀπαριθμητικὴ ταξινόμησις",
-       "special-categories-sort-abc": "ἀλφαβητικὴ ταξινόμησις",
        "deletedcontributions": "Διαγράψαι τοὺς ἐράνους τοῦ χρωμένου",
        "deletedcontributions-title": "Διαγράψαι τοὺς ἐράνους τοῦ χρωμένου",
        "sp-deletedcontributions-contribs": "ἔρανoς",
index 79f9a20..75906f0 100644 (file)
        "categories": "Kategorie",
        "categoriespagetext": "In {{PLURAL:$1|däre Kategorii|däne Kategorie}} het s Syte oder Dateie.\n[[Special:UnusedCategories|Nit benutzte Kategorie]] wäre do nit ufgfiert.\nLueg au d Lischt vu dr [[Special:WantedCategories|gwinschte Kategorie]].",
        "categoriesfrom": "Zeig Kategorie ab:",
-       "special-categories-sort-count": "Sortierig no Aazahl",
-       "special-categories-sort-abc": "Sortierig no Alfabet",
        "deletedcontributions": "Gleschti Bytreg",
        "deletedcontributions-title": "Gleschti Bytreg",
        "sp-deletedcontributions-contribs": "Byyträg",
index e3a38c2..85f17a5 100644 (file)
        "categories": "શ્રેણીઓ",
        "categoriespagetext": "નીચેની {{PLURAL:$1|શ્રેણી|શ્રેણીઓ}}માં પાના કે અન્ય સભ્યો છે.\n[[Special:UnusedCategories|વણ વપરાયેલી શ્રેણીઓ]] અત્રે દર્શાવવામાં આવી નથી.\n[[Special:WantedCategories|ઈચ્છિત શ્રેણીઓ]] પણ જોઈ જુઓ.",
        "categoriesfrom": "આનાથી શરૂ થતી શ્રેણી દર્શાવો:",
-       "special-categories-sort-count": "સંખ્યા આધારીત ચઢતા ક્રમમાં વર્ગીકરણ કરો",
-       "special-categories-sort-abc": "મૂળાક્ષરો પ્રમાણે ગોઠવો",
        "deletedcontributions": "સભ્યનું યોગદાન ભૂંસી નાખો",
        "deletedcontributions-title": "સભ્યનું ભૂંસેલું યોગદાન",
        "sp-deletedcontributions-contribs": "યોગદાન",
index 4c2d4b3..32ed7fc 100644 (file)
        },
        "tog-underline": "סימון קישורים בקו תחתי:",
        "tog-hideminor": "הסתרת עריכות משניות בדף השינויים האחרונים",
-       "tog-hidepatrolled": "×\94סתרת ×©×\99× ×\95×\99×\99×\9d ×\91×\93×\95ק×\99×\9d ×\91רש×\99×\9eת השינויים האחרונים",
+       "tog-hidepatrolled": "×\94סתרת ×©×\99× ×\95×\99×\99×\9d ×\91×\93×\95ק×\99×\9d ×\91×\93×£ השינויים האחרונים",
        "tog-newpageshidepatrolled": "הסתרת דפים בדוקים ברשימת הדפים החדשים",
        "tog-hidecategorization": "הסתרת שינויים בקטגוריות של דפים",
        "tog-extendwatchlist": "הרחבת רשימת המעקב כך שתציג את כל השינויים, לא רק את השינויים האחרונים בכל דף",
-       "tog-usenewrc": "ק×\99×\91×\95×¥ ×\94ש×\99× ×\95×\99×\99×\9d ×\9cפ×\99 ×\93×£ ×\91×\93×£ שינויים האחרונים וברשימת המעקב",
+       "tog-usenewrc": "ק×\99×\91×\95×¥ ×\94ש×\99× ×\95×\99×\99×\9d ×\9cפ×\99 ×\93פ×\99×\9d ×\91×\93×£ ×\94שינויים האחרונים וברשימת המעקב",
        "tog-numberheadings": "מספור כותרות אוטומטי",
        "tog-showtoolbar": "הצגת סרגל העריכה",
        "tog-editondblclick": "עריכת דפים בלחיצה כפולה",
@@ -51,8 +51,8 @@
        "tog-watchdefault": "הוספת דפים וקבצים שערכתי לרשימת המעקב שלי",
        "tog-watchmoves": "הוספת דפים וקבצים שהעברתי לרשימת המעקב שלי",
        "tog-watchdeletion": "הוספת דפים וקבצים שמחקתי לרשימת המעקב שלי",
-       "tog-watchuploads": "הוספת קבצים שהעליתי לרשימת המעקב שלי",
-       "tog-watchrollback": "×\94×\95ספת ×\93פ×\99×\9d ×©×\91×\94×\9d ×\91×\99צעת×\99 ×©×\97×\96×\95ר ×\9c×\92רס×\94 ×§×\95×\93×\9eת לרשימת המעקב שלי",
+       "tog-watchuploads": "×\94×\95ספת ×§×\91צ×\99×\9d ×\97×\93ש×\99×\9d ×©×\94×¢×\9c×\99ת×\99 ×\9cרש×\99×\9eת ×\94×\9eעק×\91 ×©×\9c×\99",
+       "tog-watchrollback": "×\94×\95ספת ×\93פ×\99×\9d ×©×\91×\99צעת×\99 ×\91×\94×\9d ×©×\97×\96×\95ר ×\9e×\94×\99ר לרשימת המעקב שלי",
        "tog-minordefault": "סימון כל עריכה כמשנית כברירת מחדל",
        "tog-previewontop": "הצגת תצוגה מקדימה לפני תיבת העריכה",
        "tog-previewonfirst": "הצגת תצוגה מקדימה בעריכה הראשונה",
        "tog-watchlisthidebots": "הסתרת עריכות של בוטים ברשימת המעקב",
        "tog-watchlisthideminor": "הסתרת עריכות משניות ברשימת המעקב",
        "tog-watchlisthideliu": "הסתרת עריכות של משתמשים רשומים ברשימת המעקב",
-       "tog-watchlistreloadautomatically": "רענ×\95×\9f ×\90×\95×\98×\95×\9e×\98×\99 ×©×\9c ×¨×©×\99×\9eת ×\94×\9eעק×\91 ×\91×\9b×\9c ×¤×¢×\9d ×©×\9eסנ×\9f ×\9eשתנ×\94 (× ×\93רש JavaScript)",
+       "tog-watchlistreloadautomatically": "רענ×\95×\9f ×\90×\95×\98×\95×\9e×\98×\99 ×©×\9c ×¨×©×\99×\9eת ×\94×\9eעק×\91 ×\91×\9b×\9c ×¤×¢×\9d ×©×\9eסנ×\9f ×\9eשתנ×\94 (×\93ר×\95ש JavaScript)",
        "tog-watchlisthideanons": "הסתרת עריכות של משתמשים אנונימיים ברשימת המעקב",
        "tog-watchlisthidepatrolled": "הסתרת עריכות בדוקות ברשימת המעקב",
-       "tog-watchlisthidecategorization": "×\94סתרת ×¡×\99×\95×\95×\92 ×\93פ×\99×\9d ×\9cק×\98×\92×\95ר×\99×\95ת",
+       "tog-watchlisthidecategorization": "×\94סתרת ×©×\99× ×\95×\99×\99×\9d ×\91ק×\98×\92×\95ר×\99×\95ת ×©×\9c ×\93פ×\99×\9d",
        "tog-ccmeonemails": "לשלוח אליי העתקים של הודעות דוא\"ל ששלחתי למשתמשים אחרים",
        "tog-diffonly": "ביטול הצגת תוכן הדף מתחת להשוואת הגרסאות",
        "tog-showhiddencats": "הצגת קטגוריות מוסתרות",
        "contentmodelediterror": "לא ניתן לערוך את הגרסה הזאת כי מודל התוכן שלה הוא <code>$1</code>, השונה ממודל התוכן הנוכחי של הדף, <code>$2</code>.",
        "recreate-moveddeleted-warn": "'''אזהרה: הנכם יוצרים דף חדש שנמחק בעבר.'''\n\nכדאי לשקול אם יהיה זה נכון להמשיך לערוך את הדף.\nיומני המחיקות וההעברות של הדף מוצגים להלן:",
        "moveddeleted-notice": "דף זה נמחק.\nיומני המחיקות וההעברות של הדף מוצגים להלן.",
-       "moveddeleted-notice-recent": "×\9eצ×\98ער×\99×\9d, ×\94×\93×£ ×\94×\96×\94 × ×\9e×\97ק ×\9c×\90×\97ר×\95× ×\94 (×\91Ö¾24 ×\94שע×\95ת ×\94×\90×\97ר×\95× ×\95ת).\n×\99×\95×\9e× ×\99 ×\94×\9e×\97×\99ק×\94 ×\95×\94×\94×¢×\91ר×\94 של הדף מוצגים להלן לעיון.",
+       "moveddeleted-notice-recent": "×\9eצ×\98ער×\99×\9d, ×\94×\93×£ ×\94×\96×\94 × ×\9e×\97ק ×\9c×\90×\97ר×\95× ×\94 (×\91Ö¾24 ×\94שע×\95ת ×\94×\90×\97ר×\95× ×\95ת).\n×\99×\95×\9e× ×\99 ×\94×\9e×\97×\99ק×\95ת ×\95×\94×\94×¢×\91ר×\95ת של הדף מוצגים להלן לעיון.",
        "log-fulllog": "הצגת היומן המלא",
        "edit-hook-aborted": "העריכה בוטלה על־ידי Hook.\nלא ניתן הסבר לביטול.",
        "edit-gone-missing": "לא ניתן לעדכן את הדף.\nנראה שהוא נמחק.",
        "prefs-rc": "שינויים אחרונים",
        "prefs-watchlist": "רשימת המעקב",
        "prefs-editwatchlist": "עריכת רשימת המעקב",
-       "prefs-editwatchlist-label": "ער×\99×\9bת ×¢×¨×\9bים ברשימת המעקב שלך:",
-       "prefs-editwatchlist-edit": "צפ×\99×\99×\94 ×\95×\94סרת ×\9b×\95תר×\95ת ×\91רשימת המעקב שלך",
+       "prefs-editwatchlist-label": "ער×\99×\9bת ×\93פים ברשימת המעקב שלך:",
+       "prefs-editwatchlist-edit": "×\94צ×\92×\94 ×\90×\95 ×\94סר×\94 ×©×\9c ×\93פ×\99×\9d ×\9eרשימת המעקב שלך",
        "prefs-editwatchlist-raw": "עריכת רשימת המעקב הגולמית",
        "prefs-editwatchlist-clear": "ניקוי רשימת המעקב שלך",
-       "prefs-watchlist-days": "×\9eספר ×\94×\99×\9e×\99×\9d ×\94×\9eר×\91×\99 ×©×\99×\95צ×\92×\95 ברשימת המעקב:",
+       "prefs-watchlist-days": "×\9eספר ×\94×\99×\9e×\99×\9d ×©×\9e×\95צ×\92×\99×\9d ברשימת המעקב:",
        "prefs-watchlist-days-max": "לכל היותר {{PLURAL:$1|יום אחד|יומיים|$1 ימים}}",
-       "prefs-watchlist-edits": "×\9eספר ×\94ער×\99×\9b×\95ת ×\94×\9eר×\91×\99 ×©×\99×\95צ×\92×\95 ברשימת המעקב המורחבת:",
-       "prefs-watchlist-edits-max": "×\9eספר ×\9eר×\91×\99: 1000",
+       "prefs-watchlist-edits": "×\94×\9eספר ×\94×\9eר×\91×\99 ×©×\9c ×\94ער×\99×\9b×\95ת ×©×\9e×\95צ×\92×\95ת ברשימת המעקב המורחבת:",
+       "prefs-watchlist-edits-max": "×\9c×\9b×\9c ×\94×\99×\95תר: 1000",
        "prefs-watchlist-token": "אסימון לרשימת המעקב:",
        "prefs-misc": "שונות",
        "prefs-resetpass": "שינוי סיסמה",
        "recentchangesdays-max": "לכל היותר {{PLURAL:$1|יום אחד|יומיים|$1 ימים}}",
        "recentchangescount": "מספר העריכות שמוצגות כברירת מחדל:",
        "prefs-help-recentchangescount": "ההעדפה הזאת כוללת את דף השינויים האחרונים, דפי היסטוריית גרסאות ויומנים.",
-       "prefs-help-watchlist-token2": "×\96×\94×\95 ×\94×\9eפת×\97 ×\94ס×\95×\93×\99 ×©×\9c ×\94הזנה של רשימת המעקב שלך.\nכל מי שיודע אותו יוכל לקרוא את רשימת המעקב שלך, לכן אין לשתף אותו.\n[[Special:ResetTokens|אם יש בכך צורך, אפשר לאפס אותו כאן]].",
+       "prefs-help-watchlist-token2": "×\96×\94×\95 ×\94×\9eפת×\97 ×\94ס×\95×\93×\99 ×\9cהזנה של רשימת המעקב שלך.\nכל מי שיודע אותו יוכל לקרוא את רשימת המעקב שלך, לכן אין לשתף אותו.\n[[Special:ResetTokens|אם יש בכך צורך, אפשר לאפס אותו כאן]].",
        "savedprefs": "ההעדפות שלך נשמרו.",
        "savedrights": "הרשאות {{GENDER:$1|המשתמש|המשתמשת}} של $1 נשמרו.",
        "timezonelegend": "אזור זמן:",
        "rcshowhidemine": "$1 עריכות שלי",
        "rcshowhidemine-show": "הצגת",
        "rcshowhidemine-hide": "הסתרת",
-       "rcshowhidecategorization": "$1 ×¡×\99×\95×\95×\92 ×\93פ×\99×\9d ×\9cק×\98×\92×\95ר×\99×\95ת",
+       "rcshowhidecategorization": "$1 ×©×\99× ×\95×\99×\99×\9d ×\91ק×\98×\92×\95ר×\99×\95ת ×©×\9c ×\93פ×\99×\9d",
        "rcshowhidecategorization-show": "הצגת",
        "rcshowhidecategorization-hide": "הסתרת",
        "rclinks": "הצגת $1 שינויים אחרונים ב־$2 הימים האחרונים.<br /> $3",
        "categories-submit": "הצגה",
        "categoriespagetext": "{{PLURAL:$1|הקטגוריה הבאה כוללת|הקטגוריות הבאות כוללות}} דפים או קובצי מדיה.\n[[Special:UnusedCategories|קטגוריות שאינן בשימוש]] אינן מוצגות כאן.\nראו גם את [[Special:WantedCategories|רשימת הקטגוריות המבוקשות]].",
        "categoriesfrom": "הצגת קטגוריות החל מ:",
-       "special-categories-sort-count": "סידור לפי מספר הדפים",
-       "special-categories-sort-abc": "סידור לפי סדר האלף בית",
        "deletedcontributions": "תרומות משתמש מחוקות",
        "deletedcontributions-title": "תרומות משתמש מחוקות",
        "sp-deletedcontributions-contribs": "תרומות",
        "wlshowhideanons": "משתמשים אנונימיים",
        "wlshowhidepatr": "עריכות בדוקות",
        "wlshowhidemine": "עריכות שלי",
-       "wlshowhidecategorization": "ס×\99×\95×\95×\92 ×\93פ×\99×\9d ×\9cק×\98×\92×\95ר×\99×\95ת",
+       "wlshowhidecategorization": "ש×\99× ×\95×\99×\99×\9d ×\91ק×\98×\92×\95ר×\99×\95ת ×©×\9c ×\93פ×\99×\9d",
        "watchlist-options": "אפשרויות ברשימת המעקב",
        "watching": "בהוספה לרשימת המעקב...",
        "unwatching": "בהסרה מרשימת המעקב...",
        "patrol-log-page": "יומן שינויים בדוקים",
        "patrol-log-header": "יומן זה מציג גרסאות שנבדקו.",
        "log-show-hide-patrol": "$1 יומן שינויים בדוקים",
-       "log-show-hide-tag": "$1 ×\99×\95×\9e×\9f ×\94ת×\92×\99×\95ת",
+       "log-show-hide-tag": "$1 יומן תגיות",
        "deletedrevision": "מחק גרסה ישנה $1",
        "filedeleteerror-short": "שגיאה במחיקת הקובץ: $1",
        "filedeleteerror-long": "שגיאות שאירעו בעת מחיקת הקובץ:\n\n$1",
index a20bfe8..b5f461d 100644 (file)
        "categories-submit": "दिखाएँ",
        "categoriespagetext": "निम्नोक्त {{PLURAL:$1|श्रेणी|श्रेणियों}} में पृष्ठ या मीडिया है।\nजिन श्रेणियों का [[Special:UnusedCategories|अप्रयुक्त श्रेणियाँ]] यहाँ नहीं दिखाई गई हैं।\n[[Special:WantedCategories|वांछित श्रेणियाँ]] भी देखें।",
        "categoriesfrom": "इस अक्षर से शुरू होने वाली श्रेणीयाँ दर्शायें:",
-       "special-categories-sort-count": "संख्यानुसार शक्रमांकित करें",
-       "special-categories-sort-abc": "वर्णानुक्रम के अनुसार दर्शायें",
        "deletedcontributions": "हटाए गए सदस्य योगदान",
        "deletedcontributions-title": "हटाए गए सदस्य योगदान",
        "sp-deletedcontributions-contribs": "योगदान",
index 71dc768..6586e89 100644 (file)
        "categories": "Vibhag",
        "categoriespagetext": "Niche ke {{PLURAL:$1|vibhag me|vibhag me}}  panna aur media hae.\n[[Special:UnusedCategories|Unused categories]] hian nai dekhawa jaawe hae.\n[[Special:WantedCategories|wanted categories]] ke bhi dekho.",
        "categoriesfrom": "Vibhag jon ki hian pe suruu hoe hai, ke dekhao:",
-       "special-categories-sort-count": "ginti se sort karo",
-       "special-categories-sort-abc": "alphabetically sort karo",
        "deletedcontributions": "Sadasya ke yogdaan ke mitae dia hai",
        "deletedcontributions-title": "Sadasya ke yogdaan ke mitae dia hai",
        "sp-deletedcontributions-contribs": "yogdaan",
index 172ada9..0c33094 100644 (file)
        "categories-submit": "Prikaži",
        "categoriespagetext": "Sljedeće {{PLURAL:$1|kategorija sadrži|kategorije sadrže}} stranice ili datoteke.\n[[Special:UnusedCategories|Nekorištene kategorije]] ovdje nisu prikazane.\nTakođer pogledajte [[Special:WantedCategories|tražene kategorije]].",
        "categoriesfrom": "Prikaži kategorije počevši od:",
-       "special-categories-sort-count": "razvrstavanje po broju",
-       "special-categories-sort-abc": "abecedno razvrstavanje",
        "deletedcontributions": "Obrisani suradnički doprinosi",
        "deletedcontributions-title": "Obrisani suradnički doprinosi",
        "sp-deletedcontributions-contribs": "doprinosi",
index 091fe88..af3840c 100644 (file)
        "categories": "Kategoriee",
        "categoriespagetext": "Follichende {{PLURAL:$1|Kategorie enthält|Kategorie enthalle}} Seite orrer Dateie.\n[[Special:UnusedCategories|Verwaiste Kategorie]] werre hie net uffgeführt.\nSieh ooch die List von der [[Special:WantedCategories|gewünschte Kategorie]].",
        "categoriesfrom": "Zeich Kategorie ab:",
-       "special-categories-sort-count": "Sortierung noh Oonzoohl",
-       "special-categories-sort-abc": "Sortierung noh Alphabet",
        "deletedcontributions": "Abgewischte Beiträch",
        "deletedcontributions-title": "Abgewischte Beiträch",
        "sp-deletedcontributions-contribs": "Benutzerbeiträche",
index 73a983e..f8069bf 100644 (file)
        "categories": "Kategorije",
        "categoriespagetext": "{{PLURAL:$1|Slědowaca kategorija wobsahuje|Slědowacej kategoriji wobsahujetej|Slědowace kategorije wobsahuja|Slědowace kategorije wobsahuja}} strony abo medije.\n[[Special:UnusedCategories|Njewužiwane kategorije]] so tu njepokazuja.\nHlej tež [[Special:WantedCategories|požadane kategorije]].",
        "categoriesfrom": "Kategorije pokazać, započinajo z:",
-       "special-categories-sort-count": "Po ličbje sortěrować",
-       "special-categories-sort-abc": "Alfabetisce sortěrować",
        "deletedcontributions": "wušmórnjene přinoški",
        "deletedcontributions-title": "wušmórnjene přinoški",
        "sp-deletedcontributions-contribs": "přinoški",
index 10ae337..621b567 100644 (file)
        "categories-submit": "Mutat",
        "categoriespagetext": "A következő {{PLURAL:$1|kategória tartalmaz|kategóriák tartalmaznak}} lapokat vagy fájlokat.\nA [[Special:UnusedCategories|nem használt kategóriák]] nem jelennek meg.\nLásd még a [[Special:WantedCategories|keresett kategóriák]] listáját.",
        "categoriesfrom": "Kategóriák listázása a következő névtől kezdve:",
-       "special-categories-sort-count": "rendezés elemszám szerint",
-       "special-categories-sort-abc": "rendezés ABC szerint",
        "deletedcontributions": "Törölt szerkesztések",
        "deletedcontributions-title": "Törölt szerkesztések",
        "sp-deletedcontributions-contribs": "közreműködései",
index eab02cc..ebba631 100644 (file)
        "categories-submit": "Monstrar",
        "categoriespagetext": "Le sequente {{PLURAL:$1|categoria|categorias}} contine paginas o multimedia.\nLe [[Special:UnusedCategories|categorias non usate]] non se monstra hic.\nVide etiam le [[Special:WantedCategories|categorias desirate]].",
        "categoriesfrom": "Monstrar categorias a partir de:",
-       "special-categories-sort-count": "ordinar per numero",
-       "special-categories-sort-abc": "ordinar alphabeticamente",
        "deletedcontributions": "Contributiones delite de usatores",
        "deletedcontributions-title": "Contributiones delite de usatores",
        "sp-deletedcontributions-contribs": "contributiones",
index e599c6e..e19b63b 100644 (file)
        "categories-submit": "Tampilkan",
        "categoriespagetext": "{{PLURAL:$1|Kategori berikut|Kategori-kategori berikut}} memiliki isi halaman atau media.\n[[Special:UnusedCategories|Kategori yang tak digunakan]] tidak ditampilkan di sini.\nLihat pula [[Special:WantedCategories|kategori yang diinginkan]].",
        "categoriesfrom": "Tampilkan kategori-kategori dimulai dengan:",
-       "special-categories-sort-count": "urutkan menurut jumlah",
-       "special-categories-sort-abc": "urutkan menurut abjad",
        "deletedcontributions": "Kontribusi yang dihapus",
        "deletedcontributions-title": "Kontribusi yang dihapus",
        "sp-deletedcontributions-contribs": "kontribusi",
index 282f1f6..e54d6cf 100644 (file)
        "categories-submit": "Ipakita",
        "categoriespagetext": "Ti sumaganad a {{PLURAL:$1|kategoria ket aglaon|katkategoria ket aglaon}} kadagiti panid wenno midia.\n[[Special:UnusedCategories|Dagiti saan a nausar a kategoria]] ket saan a maiparang ditoy.\nKitaen met [[Special:WantedCategories|dagiti makiddaw a kategoria]].",
        "categoriesfrom": "Ipakita dagiti kategoria a mangrugi iti:",
-       "special-categories-sort-count": "ilasin babaen ti bilang",
-       "special-categories-sort-abc": "ilasin nga alpabetiko",
        "deletedcontributions": "Dagiti naikkat a kontribusion ti agar-aramat",
        "deletedcontributions-title": "Dagiti naikkat a kontribusion ti agar-aramat",
        "sp-deletedcontributions-contribs": "dagiti kontribusion",
index e21be75..faa6b5a 100644 (file)
@@ -63,8 +63,8 @@
        "monday": "оршот",
        "tuesday": "шинара",
        "wednesday": "Кхаьра",
-       "thursday": "Ð\95ра",
-       "friday": "Ð\9fӀаьраска",
+       "thursday": "ера",
+       "friday": "пӀаьраска",
        "saturday": "шоатта",
        "sun": "К|и",
        "mon": "Ор",
        "categorypage": "Катага оаг|oн т|а б|аргтасса",
        "viewtalkpage": "Дувцамага б|аргтасса",
        "otherlanguages": "Кхыча меттаех",
-       "redirectedfrom": "($1 т|aра хьадейта да)",
+       "redirectedfrom": "($1 тIaра хьахьожадаь да)",
        "redirectpagesub": "Д|а-хьа дайта оаг|ув",
        "redirectto": "ТIахьожадар укхаза:",
        "lastmodifiedat": "Укх оагIoн тIеххьара хувцам: $2, $1.",
        "nstab-mediawiki": "Хоам",
        "nstab-template": "Кеп",
        "nstab-help": "ГӀо",
-       "nstab-category": "Ð\9aаÑ\82аг",
+       "nstab-category": "Ð\9aаÑ\82егоÑ\80и",
        "mainpage-nstab": "Кертера оагӀув",
        "nosuchaction": "Цу тайпара дулархIам бац",
        "nosuchspecialpage": "Изза мо гӀон оагӀув яц",
        "copyrightwarning": "Теркам бе, $2 ($1 хьажа) бокъонаца лорадеш, тӀахьежама кӀала уллаш, оаш мел чуяккхаш дола хоамаш, яздамаш долга.\nНаггахь санна шоай яздамаш пурам доацаш мала волашву саго хувца е кхы дола моттиге яздердолаш, безам беци, укхаз Ӏочуцаяздеча, дикаьгӀа да.<br />\nОаш дош лу, даь дола хувцама да волга/йолга, е оаш пурам долаш Ӏочуяздеш да кхычера меттигара шоай яздамаш/хоамаш.\n'''Яздархой бокъоца лорадеш дола хӀамаш, цара пурам доацаш, Ӏочумаязаде!'''",
        "templatesused": "Укх бӀаргоагӀувни оагӀув тӀа лелаяь {{PLURAL:$1|1=Куцкеп|Куцкепаш}}:",
        "templatesusedpreview": "Хьалхе бӀаргтассама оагӀув тӀа леладеш дола {{PLURAL:$1|1=Куцкеп|Куцкепаш}}:",
-       "template-protected": "(лоÑ\80ам Ð»Ð°Ñ\8cÑ\86а)",
+       "template-protected": "(лоÑ\80адаÑ\8c Ð´а)",
        "template-semiprotected": "(дакъа-лорам)",
        "hiddencategories": "Ер оагӀув укх {{PLURAL:$1|1=къайла цатегаца|къайла цатегашца}} дакъа лоаца:",
        "permissionserrorstext-withaction": "$2 де бокъо яц {{PLURAL:$1|1=из бахьан долаш|из бахьанаш долаш}}:",
        "viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) хьажа",
        "searchmenu-exists": "'''Укх масса-хьахьоадайтамач ер оаг|ув \"[[:$1]]\" я'''",
        "searchmenu-new": "<strong>Кхолла оагIув «[[:$1]]» укх вики-проекте!</strong>\n{{PLURAL:$2|0=|Иштта хьажа хьай лийха оагIувнага.|Иштта хьажа хьай лахара хьахиннарашка.}}",
-       "searchprofile-articles": "Ð\93омлен Ð¾Ð°Ð³IÑ\83внаш",
-       "searchprofile-images": "Медифаг",
-       "searchprofile-everything": "Массана",
-       "searchprofile-advanced": "ШеÑ\80а Ñ\8f",
-       "searchprofile-articles-tooltip": "$1чу лахар",
-       "searchprofile-images-tooltip": "Ð\9fаÑ\8cлий лахар",
-       "searchprofile-everything-tooltip": "Ð\9cаÑ\81Ñ\81адола Ð¾Ð°Ð³IÑ\83вний Ð»Ð°Ñ\85аÑ\80 (дÑ\83вÑ\86ама Ð¾Ð°Ð³IÑ\83внаш чулоацаш)",
+       "searchprofile-articles": "Ð\9aеÑ\80Ñ\82еÑ\80а Ð¾Ð°Ð³Iонаш",
+       "searchprofile-images": "Мультимедиа",
+       "searchprofile-everything": "Массанахьа",
+       "searchprofile-advanced": "ШеÑ\80даÑ\8c",
+       "searchprofile-articles-tooltip": "$1 чу лахар",
+       "searchprofile-images-tooltip": "ФайлаÑ\88 лахар",
+       "searchprofile-everything-tooltip": "Ð\9cаÑ\81Ñ\81айола Ð¾Ð°Ð³IонаÑ\88 Ñ\82Iа Ð»Ð°Ñ\85аÑ\80 (дÑ\83вÑ\86аÑ\80 Ð¾Ñ\82Ñ\82адаÑ\80а Ð¾Ð°Ð³Iонаш чулоацаш)",
        "searchprofile-advanced-tooltip": "Iочуязаяь цIераренашках лаха",
        "search-result-size": "$1 ({{PLURAL:$2|$2 дош|$2 дешаш}})",
        "search-result-category-size": "{{PLURAL:$1|1=$1 дакъа|$1 дакъаш}} ({{PLURAL:$2|1=$2 кIалцатег|$2 кIалцатегаш}}, {{PLURAL:$3|1=$3 паьла|$3 паьлий}})",
        "right-createtalk": "дувцама оагIувний хьакхоллам",
        "right-move": "ОагIувний цIи хувца",
        "right-movefile": "Паьлий цIи хувца",
-       "newuserlogpage": "Ð\94акÑ\8aалаÑ\8cÑ\86аÑ\80Ñ\85оÑ\88ий Ð´IаÑ\8fзбeнна таптар",
+       "newuserlogpage": "Ð\94оакÑ\8aаÑ\88Ñ\85ой Ð´IаÑ\8fзбаÑ\8c таптар",
        "rightslog": "Дакъалаьцархочунна бокъона тептар",
        "action-read": "Укх оагIуви дешам",
        "action-edit": "Ер оагIув хувца",
        "recentchanges-legend": "Керда хувцамий оттамаш",
        "recentchanges-summary": "КIалхагIа лоарамий доаламе тIехьара оагIувний хувцамаш дIаязадаь да {{grammar:genitive|{{SITENAME}}}}.",
        "recentchanges-feed-description": "Укх ларамца тIехьара массахувцамашт теркам бе.",
-       "recentchanges-label-newpage": "Укх хувцамаца керда оагIув яь хиннай",
-       "recentchanges-label-minor": "Ð\97Iамига Ñ\85Ñ\83вÑ\86ам Ñ\8f",
-       "recentchanges-label-bot": "Ер хувцам бIатаца яь е",
+       "recentchanges-label-newpage": "Укх хувцамаца керда оагIув кхелла хиннай",
+       "recentchanges-label-minor": "Ð\95Ñ\80 Ð·Iамига Ñ\85Ñ\83вÑ\86ам Ð±Ð°",
+       "recentchanges-label-bot": "Ер хувцам ботаца баь ба",
        "recentchanges-label-unpatrolled": "Ер хувцам ший моттиге кхы дIадехьаяьккхаяц.",
        "recentchanges-label-plusminus": "байташкахь боарам хувцар",
        "recentchanges-legend-heading": "<strong>Легенда:&nbsp;</strong>",
        "hist": "истори",
        "hide": "Къайлдаккха",
        "show": "Хьахьокха",
-       "minoreditletter": "м",
-       "newpageletter": "Ð\9d",
+       "minoreditletter": "зI",
+       "newpageletter": "Ð\9a",
        "boteditletter": "б",
        "rc_categories_any": "МоллагIа а",
        "rc-change-size-new": "Хувцам баьнначул тӀехьагIа бола боарам: $1 {{PLURAL:$1|байт}}",
        "listfiles_count": "Доржамаш",
        "file-anchor-link": "Файл",
        "filehist": "Файлан истори",
-       "filehist-help": "Ð¥Ñ\8cалÑ\85е Ð¿Ð°Ñ\8cла Ð¼Ð¸Ñ\88Ñ\82а Ñ\85иннай Ñ\85Ñ\8cожаpгволаÑ\88/йолаÑ\88, Ð´ÐµÐ½Ñ\82аÑ\8cÑ\80аÑ\85\81аÑ\85Ñ\8cаÑ\82а Ñ\82Iа Ð¿Iелга Ñ\82Iообе.",
+       "filehist-help": "Ð\9aнопка Ñ\82аÑ\8cÑ\80аÑ\85Ñ\8c\85а Ñ\82оIае Ñ\86Ñ\83 Ñ\85ан Ñ\84айл Ð¼Ð¸Ñ\88Ñ\82а Ñ\85иннай Ñ\85Ñ\8cожаpгволаÑ\88/йолаÑ\88",
        "filehist-revert": "юхаяьккха",
        "filehist-current": "xIанзара",
-       "filehist-datetime": "Ð\94енÑ\82аÑ\8cÑ\80аÑ\85/Ха",
-       "filehist-thumb": "ЗIамигасуртанче",
-       "filehist-thumbtext": "$1 доржаме зIамигсуртанчoa",
-       "filehist-user": "Ð\94акÑ\8aалаÑ\8cÑ\86аÑ\80хо",
-       "filehist-dimensions": "Ð¥Iамана Ð´Ñ\83Ñ\81Ñ\82ам",
+       "filehist-datetime": "ТаÑ\8cÑ\80аÑ\85Ñ\8c/Ха",
+       "filehist-thumb": "ЗIамигасурт",
+       "filehist-thumbtext": "ЗIамига сурт укх версин $1",
+       "filehist-user": "Ð\94оакÑ\8aаÑ\88хо",
+       "filehist-dimensions": "Файлан Ð±Ð¾Ð°Ñ\80ам",
        "filehist-filesize": "Паьла юстарал",
-       "filehist-comment": "Ð¥Iамоалар",
+       "filehist-comment": "Ð\91елгалдаккÑ\85ар",
        "imagelinks": "Файла пайда эцар",
        "linkstoimage": "{{PLURAL:$1|1=ТIехьайоагIача $1 оагIуво тIахьожаву|ТIехьайоагIача $1 оагIувнаша тIахьожаву}} укх файла тIа:",
        "nolinkstoimage": "Йола паьла тIа  Iинк ю оагIувнаш дац",
        "sharedupload": "Ер паьла $1чера я, кхыча хьахьоадайтамча хьахайраде йийшайолаш я.",
-       "sharedupload-desc-here": "Ер паьл $1чара я, кхыдола хьахьоадайтамача хайрамбе йийш йолаш да.\nЦун [$2 лоацама оагIувца] лоаца маIандар кIалхагIа латта.",
+       "sharedupload-desc-here": "Ер файл $1 чура я, иштта кхыйола проекташ чу пайда эца аьттув болаш я.\nЦун [$2 йоазонца сурт оттадара оагIон] информаци кIалхахь хьайоалаяй.",
        "uploadnewversion-linktext": "Укх паьлий керда бIаса чуяьккха",
        "filerevert-comment": "Бахьан:",
        "filedelete-comment": "Бахьан:",
        "shortpages": "Лоаца оагIувнаш",
        "longpages": "Доккхий оагIувнаш",
        "usercreated": "{{GENDER:$3|Чуваьннав|Чуяьннай}} $1  $2",
-       "newpages": "Керда оагIувнаш",
+       "newpages": "Керда оагIонаш",
        "move": "ЦIи хувца",
        "movethispage": "Укх оагIува цIи хувца",
        "pager-newer-n": "{{PLURAL:$1|кердагIа дара|кердагIа дараш|кердагIа долачаьрахь}} $1",
        "deletecomment": "Бахьан:",
        "deleteotherreason": "Кхыдола бахьан/тIатохар:",
        "deletereasonotherlist": "Кхыдола бахьан",
-       "rollbacklink": "юхаяьккха",
+       "rollbacklink": "юхаяккха",
        "protectlogpage": "Лорадара тептар",
        "protectedarticle": "\"[[$1]]\" оагIув лорам деж я",
        "modifiedarticleprotection": "\"[[$1]]\" оагIувни лорама лагIа хувцаяьннай",
        "undeletelink": "БIаргтасса/юхаметтаоттаде",
        "undeleteviewlink": "хьажа",
        "undelete-search-submit": "Хьалáха",
-       "namespace": "ЦIеÑ\80ий Ð°Ñ\80енаÑ\88",
-       "invert": "Хьаржар юхадаккха",
+       "namespace": "ЦIеÑ\80ий Ð¼Ð¾Ñ\82Ñ\82",
+       "invert": "Харжар юхадаккха",
        "namespace_association": "Ювзаенна мотт",
        "blanknamespace": "(Кертера)",
        "contributions": "{{GENDER:$1|Доакъашхочунна}} къахьегам",
        "tooltip-pt-createaccount": "Хьа бокъо я учёта яздар кхелла система чу вала, амма параз долаш дац из.",
        "tooltip-ca-talk": "ОагIон чулоацам дувца оттадар",
        "tooltip-ca-edit": "Нийсъе ер оагIув",
-       "tooltip-ca-addsection": "Ð\9aеÑ\80да Ð´ÐµÐºÑ\8aам хьаде",
+       "tooltip-ca-addsection": "Ð\9aеÑ\80да Ð´Ð°ÐºÑ\8aа хьаде",
        "tooltip-ca-viewsource": "Ер оагIув хувцамах лораяь я, амма шун цунна гIувамага хьажа бокъо я.",
        "tooltip-ca-history": "Укх оагIон даь хувцамаш тIа дола тептар",
        "tooltip-ca-protect": "Eр оагIув лорае",
        "tooltip-ca-nstab-user": "Дакъалаьцархочунна ший оагIув",
        "tooltip-ca-nstab-special": "Ер гIулакха оагIув я, из хувца бокъо яц",
        "tooltip-ca-nstab-project": "Проектан оагIув",
-       "tooltip-ca-nstab-image": "Ð\9fаÑ\8cла Ð¾Ð°Ð³Iув",
+       "tooltip-ca-nstab-image": "Файлан Ð¾Ð°Ð³Ó\80ув",
        "tooltip-ca-nstab-template": "Кепан оагIув",
        "tooltip-ca-nstab-help": "ГӀон оагIув",
-       "tooltip-ca-nstab-category": "ЦаÑ\82ега Ð¾Ð°Ð³Iув",
+       "tooltip-ca-nstab-category": "Ð\9aаÑ\82егоÑ\80ий Ð¾Ð°Ð³Ó\80ув",
        "tooltip-minoredit": "Ер хувцар башха доаца санна белгалде",
        "tooltip-save": "Хувцамаш кходе",
        "tooltip-preview": "ОагIув тIа хьалхе бIаргтассар, дехар да, оагIув дIаязъелаьх, цун теркам бе.",
        "tooltip-diff": "Яздам тIа яь йола хувцамаш хьахьокха",
        "tooltip-compareselectedversions": "Укх оагIувни шин доржамаш тIа юкъера хувцамаш зе.",
        "tooltip-watch": "Ер оагIув теркам беча каьхата тIа яькха",
-       "tooltip-rollback": "Ð\93IалaÑ\82нийÑ\81адаÑ\80о Ñ\82IеÑ\85Ñ\8cаÑ\80а Ñ\8fÑ\8c Ð¹Ð¾Ð»Ð° Ñ\85Ñ\83вÑ\86амаÑ\88, Ð¿Iелг Ñ\82оIобе Ð´IаÑ\8fÑ\8cккÑ\85а.",
+       "tooltip-rollback": "ЦкÑ\8aа Ð¿Iелг Ñ\82оIабе Ð´IадаккÑ\85а Ñ\82IеÑ\85Ñ\8cаÑ\80а Ñ\80едакÑ\82оÑ\80аÑ\81 Ð´Ð°Ñ\8c Ñ\85Ñ\83вÑ\86амаÑ\88",
        "tooltip-undo": "Даь хувцар дIадаьккха, хьалххе хьажар хьахьокха, дIадаккхара бахьан Iочуязаде аьттув болаш.",
        "tooltip-summary": "Лоаца чулоацам Iочуязаде",
        "pageinfo-toolboxlink": "ОагIонах бола хоам",
        "previousdiff": "← Хьалхара нийсдар",
        "nextdiff": "ТIайоагIа нийсъар",
-       "file-info-size": "$1 × $2 фихсам, паьла дустам: $3, MIME-тайп: $4",
+       "file-info-size": "$1 × $2 {{PLURAL:$2|пиксель}}, файлан боарам: $3, MIME-тайпа: $4",
        "file-nohires": "Укхал дуккхагIа доккхал долаш верси яц",
        "svg-long-desc": "SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель}}, файлан боарам: $3",
-       "show-big-image": "Ð¥Ñ\8cалÑ\85агIаÑ\80а Ñ\81Ñ\83Ñ\80Ñ\82",
+       "show-big-image": "Ð\94IадолалÑ\83 Ñ\84айл",
        "show-big-image-size": "$1 × $2 пиксель",
        "noimages": "Суртaш бIаргагуш дац.",
        "ilsubmit": "Хьалáха",
        "bad_image_list": "Бустам цу тайпара хила беза:\n\nДагарлен хьаракъаш мара лоарх|аш хургьяц (укх тамагIалгацa * дувлашду мугIараш).\nМугIарен хьалхара Iинк, сурт Iоттае пурам доаца Iинка, хила еза. \nЦу мугIара тIехьайоагIа Iинкаш, арадаккхар мо лоарх|аш хургья, вешта аьлча, йоазувашка чуIоттаде мегаш дола сурт санна ларх|а мега.",
-       "metadata": "МетахIамаш",
+       "metadata": "Метахоамаш",
        "metadata-help": "Паьлас чулоаца, кхыдола хIамаш, таьрахьа суртдоакхаргца е тIагIолладоакхаргца чудакхаш дола. Хьаяь паьл, гIалатахь мукъадаькха хинна дале, хьахьокхаш дола сурт, деррига хIамаш чулоацаргдац.",
        "metadata-expand": "Кхыдола хIамаш хьахьокха",
        "metadata-collapse": "Кхыдола хIамаш къайладаккха",
-       "metadata-fields": "Укх дагарченгахь дагaрадаь метахIамаша суртий мугIаш, сурт оагIув тIа хьахьекха хургья, чуерзaяь метахIамашийца. Вож мугIанаш ха йоалаш къайла хургья.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "Укх списке дагaрадаь суртай метахоамай йистош, хьахьекха хургда суртан оагIон тIа, метахоамай таблица хьоарчая йолаш. Юхедиса йистош къайла хургда.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "Шерал",
        "exif-imagelength": "Лакхал",
        "exif-orientation": "Суртан белгало",
        "specialpages-group-pages": "ОагIувний дагарченаш",
        "specialpages-group-pagetools": "ОагIувнаша гIирсаш",
        "external_image_whitelist": "#Ер мугI ший долаш тайпара дита<pre>\n#Каст-каста оаламаш укхаза дIаязаде(юкъе дола дакъа //)\n#арара суртий URLца дIанийсалургда уш.\n#Пайдан дола, сурташ мо хьахьекха хургья, дахIодараш, сурта тIа Iинкаш мо хуpгья хьахьекха.\n#Укх # тамагIалгаца дIадувлаш дола мугIанаш, оалам мо лоархаш да.\n#МугIанаш яздaтакха каьда да\n\n#Каст-каста оаламаш укх мугIа лакхе дIаязаде. Из мугI ший долаш тайпара дита</pre>",
-       "tag-filter": "[[Special:Tags|Ð\99оазоний]] Ñ\86IенаÑ\8fрг:",
+       "tag-filter": "[[Special:Tags|белгалонай]] Ð»Ñ\83Ñ\82Ñ\82арг:",
        "tag-filter-submit": "ЦIенъе",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|1=Белгало|Белгалонаш}}]]: $2)",
        "tags-title": "Йоазонаш",
index 2e34044..8e3c46f 100644 (file)
        "categories-submit": "Birta",
        "categoriespagetext": "Eftirfarandi {{PLURAL:$1|flokkur inniheldur|flokkar innihalda}} síður eða skrár.\n[[Special:UnusedCategories|Ónotaðir flokkar]] birtast ekki hér.\nSjá einnig [[Special:WantedCategories|eftirsótta flokka]].",
        "categoriesfrom": "Sýna flokka frá:",
-       "special-categories-sort-count": "raða eftir fjölda",
-       "special-categories-sort-abc": "raða í stafrófsröð",
        "deletedcontributions": "Eyddar breytingar notanda",
        "deletedcontributions-title": "Eyddar breytingar notanda",
        "sp-deletedcontributions-contribs": "Framlög",
index a58b28b..84399c0 100644 (file)
        "categories-submit": "Mostra",
        "categoriespagetext": "{{PLURAL:$1|La categoria indicata di seguito contiene|Le categorie indicate di seguito contengono}} pagine o file multimediali.\nLe [[Special:UnusedCategories|categorie vuote]] non sono mostrate qui.\nVedi anche le [[Special:WantedCategories|categorie richieste]].",
        "categoriesfrom": "Mostra le categorie a partire da:",
-       "special-categories-sort-count": "ordina per numero",
-       "special-categories-sort-abc": "ordina alfabeticamente",
        "deletedcontributions": "Contributi utente cancellati",
        "deletedcontributions-title": "Contributi utente cancellati",
        "sp-deletedcontributions-contribs": "contributi",
        "patrol-log-page": "Modifiche verificate",
        "patrol-log-header": "Di seguito sono elencate le verifiche delle modifiche.",
        "log-show-hide-patrol": "$1 registro delle modifiche verificate",
-       "log-show-hide-tag": "$1 registro delle etichiette",
+       "log-show-hide-tag": "$1 registro delle etichette",
        "deletedrevision": "Cancellata la vecchia versione di $1.",
        "filedeleteerror-short": "Errore nella cancellazione del file: $1",
        "filedeleteerror-long": "Si sono verificati degli errori nel tentativo di cancellare il file:\n\n$1",
        "watchlistedit-raw-done": "La lista degli osservati speciali è stata aggiornata.",
        "watchlistedit-raw-added": "{{PLURAL:$1|È stata aggiunta una pagina|Sono state aggiunte $1 pagine}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|È stata eliminata una pagina|Sono state eliminate $1 pagine}}:",
-       "watchlistedit-clear-title": "Lista degli osservati speciali svuotata",
+       "watchlistedit-clear-title": "Svuota osservati speciali",
        "watchlistedit-clear-legend": "Svuota osservati speciali",
        "watchlistedit-clear-explain": "Tutti i titoli saranno rimossi dai tuoi osservati speciali",
        "watchlistedit-clear-titles": "Titoli:",
index d1667fe..20682ca 100644 (file)
        "categories-submit": "表示",
        "categoriespagetext": "以下の{{PLURAL:$1|カテゴリ}}にはページまたはメディアがあります。\n[[Special:UnusedCategories|使われていないカテゴリ]]はここには表示していません。\n[[Special:WantedCategories|カテゴリページが存在しないカテゴリ]]も参照してください。",
        "categoriesfrom": "最初に表示するカテゴリ:",
-       "special-categories-sort-count": "項目数順に並べ替え",
-       "special-categories-sort-abc": "辞書順に並べ替え",
        "deletedcontributions": "利用者の削除された投稿",
        "deletedcontributions-title": "利用者の削除された投稿",
        "sp-deletedcontributions-contribs": "投稿記録",
index 52e6663..0659075 100644 (file)
        "categories": "Kategori",
        "categoriespagetext": "{{PLURAL:$1|kategori ing ngisor iki ngandhut|kategori ing ngisor iki ngandhut}} kaca utawa media.\n[[Special:UnusedCategories|Kategori sing ora dianggo]] ora ditampilaké ing kéné.\nDeleng uga [[Special:WantedCategories|kategori sing diperlokaké]].",
        "categoriesfrom": "Tampilaké kategori-kategori diwiwiti saka:",
-       "special-categories-sort-count": "urutna miturut angka",
-       "special-categories-sort-abc": "urutna miturut abjad",
        "deletedcontributions": "Sumbanganing panganggo sing dibusak",
        "deletedcontributions-title": "Sumbanganing panganggo sing dibusak",
        "sp-deletedcontributions-contribs": "sumbangan",
index f1ba4b2..6685cc6 100644 (file)
        "categories-submit": "ჩვენება",
        "categoriespagetext": "შემდეგი {{PLURAL:$1|კატეგორია შეიცავს|კატეგორია შეიცავს}} გვერდს ან მედიას.\n[[Special:UnusedCategories|გამოუყენებელი კატეგორიები]] აქ ნაჩვენები არ არის.\nიხ. ასევე [[Special:WantedCategories|მოთხოვნილი კატეგორიები]].",
        "categoriesfrom": "აჩვენეთ კატეგორიები, რომლებიც იწყება:",
-       "special-categories-sort-count": "დაალაგეთ რაოდენობის მიხედვით",
-       "special-categories-sort-abc": "ანბანზე დალაგება",
        "deletedcontributions": "მომხმარებლის წაშლილი წვლილი",
        "deletedcontributions-title": "წაშლილი წვლილი",
        "sp-deletedcontributions-contribs": "წვლილი",
index 267514b..1be5057 100644 (file)
        "categories": "Taggayin",
        "categoriespagetext": "{{PLURAL:$1|Taggayt agi teseqdec|Taggayin agi teseqdecet}} sɣur isebtar naɣ ifuyla.\n[[Special:UnusedCategories|Taggayin ur sɛan ara aqeddic]]\nẒeṛ daɣen [[Special:WantedCategories|taggayin yetwesuteren]].",
        "categoriesfrom": "Ssken taggayin seg :",
-       "special-categories-sort-count": "Afran s amḍan n iferdisen",
-       "special-categories-sort-abc": "afran s ugemmay",
        "deletedcontributions": "Isekcam yemḥan",
        "deletedcontributions-title": "Isekcam yemḥan",
        "sp-deletedcontributions-contribs": "Isekcam",
index cff905d..bd17e30 100644 (file)
        "categories": "ساناتتار",
        "categoriespagetext": "كەلەسى ساناتتار ىشىندە بەتتەر نە تاسپالار بار.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
        "categoriesfrom": "ساناتتاردى مىنادان باستاپ كورسەتۋ:",
-       "special-categories-sort-count": "سانىمەن سۇرىپتاۋ",
-       "special-categories-sort-abc": "الىپبىيمەن سۇرىپتاۋ",
        "deletedcontributions": "قاتىسۋشىنىڭ جويىلعان ۇلەسى",
        "deletedcontributions-title": "قاتىسۋشىنىڭ جويىلعان ۇلەسى",
        "linksearch": "سىرتقى سٸلتەمەلەردٸ ٸزدەۋ",
index 2d9d258..f839f94 100644 (file)
        "categories-submit": "Көрсету",
        "categoriespagetext": "Келесі {{PLURAL:$1|санат ішінде|санаттар ішінде}} беттер немесе медиа бар.\n[[Special:UnusedCategories|Пайдаланылмаған санаттарды]] мынадан қарай аласыз.\nТағы қараңыз [[Special:WantedCategories|басталмаған санаттар]].",
        "categoriesfrom": "Санаттарды мынадан бастап көрсету:",
-       "special-categories-sort-count": "санымен сұрыптау",
-       "special-categories-sort-abc": "әліпбимен сұрыптау",
        "deletedcontributions": "Қатысушының жойылған үлесі",
        "deletedcontributions-title": "Қатысушының жойылған үлесі",
        "sp-deletedcontributions-contribs": "үлестер",
index 0e50741..4357312 100644 (file)
        "categories": "Sanattar",
        "categoriespagetext": "Kelesi sanattar işinde better ne taspalar bar.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
        "categoriesfrom": "Sanattardı mınadan bastap körsetw:",
-       "special-categories-sort-count": "sanımen surıptaw",
-       "special-categories-sort-abc": "älipbïmen surıptaw",
        "deletedcontributions": "Qatıswşınıñ joýılğan ülesi",
        "deletedcontributions-title": "Qatıswşınıñ joýılğan ülesi",
        "linksearch": "Sırtqı siltemelerdi izdew",
index 6fef2b2..95a8fee 100644 (file)
        "categories": "ចំណាត់ថ្នាក់ក្រុម",
        "categoriespagetext": "{{PLURAL:$1|ចំណាត់ថ្នាក់ក្រុម|ចំណាត់ថ្នាក់ក្រុម}}ខាងក្រោមនេះមានអត្ថបទឬមេឌា។\n[[Special:UnusedCategories|ចំណាត់ថ្នាក់ក្រុមមិនប្រើ]]ត្រូវបានបង្ហាញទីនេះ។\nសូមមើលផងដែរ [[Special:WantedCategories|ចំណាត់ថ្នាក់ក្រុមដែលគ្រប់គ្នាចង់បាន]]។",
        "categoriesfrom": "បង្ហាញចំណាត់ថ្នាក់ក្រុមចាប់ផ្តើមដោយ៖",
-       "special-categories-sort-count": "តម្រៀបតាមចំនួន",
-       "special-categories-sort-abc": "តម្រៀបតាមអក្ខរក្រម",
        "deletedcontributions": "ការរួមចំណែកដែលត្រូវបានលុបចោល",
        "deletedcontributions-title": "ការរួមចំណែកដែលត្រូវបានលុបចោល",
        "sp-deletedcontributions-contribs": "ការរួមចំណែក​",
index deda865..50f3aa5 100644 (file)
        "categories": "ವರ್ಗಗಳು",
        "categoriespagetext": "ಈ ಕೆಳಗಿನ ವರ್ಗಗಳು ಪುಟಗಳನ್ನು ಅಥವ ಮೀಡಿಯಗಳನ್ನು ಹೊಂದಿವೆ.\n[[Special:UnusedCategories|ಅನುಪಯೋಗಿತ ವರ್ಗಗಳು]] ಇಲ್ಲಿ ತೋರಲಾಗಿಲ್ಲ.\nಇದನ್ನೂ ನೋಡಿ: [[Special:WantedCategories|ಬೇಕಾಗಿರುವ ವರ್ಗಗಳು]].",
        "categoriesfrom": "ಇದರಿಂದ ಪ್ರಾರಂಭವಾಗುವ ವರ್ಗಗಳನ್ನು ತೋರಿಸು:",
-       "special-categories-sort-count": "ಎಣಿಕೆಯ ಪ್ರಕಾರ ಜೋಡಿಸು",
-       "special-categories-sort-abc": "ಅಕ್ಷರಮಾಲೆಯ ಪ್ರಕಾರ ಜೋಡಿಸು",
        "deletedcontributions": "ಅಳಿಸಲಾಗಿದೆ ಕಾಣಿಕೆಗಳನ್ನು",
        "sp-deletedcontributions-contribs": "ಕಾಣಿಕೆಗಳು",
        "linksearch": "ಹೊರಗಿನ ಸಂಪರ್ಕಗಳು",
index b08b7bc..63d53ef 100644 (file)
        "categories-submit": "보이기",
        "categoriespagetext": "문서나 자료를 {{PLURAL:$1|포함하고 있는 분류}} 목록입니다.\n[[Special:UnusedCategories|사용되지 않는 분류]]는 여기에 보이지 않습니다.\n[[Special:WantedCategories|필요한 분류]]도 참조하세요.",
        "categoriesfrom": "다음으로 시작하는 분류를 보여주기:",
-       "special-categories-sort-count": "갯수 순으로 정렬",
-       "special-categories-sort-abc": "알파벳순으로 정렬",
        "deletedcontributions": "삭제된 사용자 기여",
        "deletedcontributions-title": "삭제된 사용자 기여",
        "sp-deletedcontributions-contribs": "기여",
index 6ad41f1..432a3ab 100644 (file)
        "categories": "Категорияла",
        "categoriespagetext": "Ызындан келген {{PLURAL:$1|1=категория|категорияла}} бет неда медия-файл тутадыла.\n[[Special:UnusedCategories|Хайырланмагъан категорияла]] былайда кёргюзюлмегендиле.\nДагъыда [[Special:WantedCategories|изленнген категорияла]] гъакъарагъыз.",
        "categoriesfrom": "Бу бла башланнган категорияланы кёргюз:",
-       "special-categories-sort-count": "санына кёре сафла",
-       "special-categories-sort-abc": "алфавит халда тиз",
        "deletedcontributions": "Кетерилген къошулуучуну къошхан юлюшю",
        "deletedcontributions-title": "Кетерилген къошулучуну къошхан юлюшю",
        "sp-deletedcontributions-contribs": "къошхан юлюш",
index 757ad80..b1b6464 100644 (file)
        "categories": "Saachjroppe",
        "categoriespagetext": "Heh {{PLURAL:$1|es nur en Saachjropp|sin nur Saachjroppe|es kein Saachjropp}} jeleß, woh jät dren {{PLURAL:$1|es|es|wöhr}}. Mer han_er eije Leßte för de\n[[Special:UnusedCategories|Saachjropp met nix dren]], un de\n[[Special:WantedCategories|jewönschte un nit aanjelaate Saachjroppe]].",
        "categoriesfrom": "Zeijsch Saachjroppe vun heh af:",
-       "special-categories-sort-count": "Zoteere noh de Aanzahl",
-       "special-categories-sort-abc": "Zoteere nohm Alphabett",
        "deletedcontributions": "Fottjeschmeße Väsjohne",
        "deletedcontributions-title": "Fottjeschmeße Väsjohne",
        "sp-deletedcontributions-contribs": "Beijdrääsch",
index 514ba4d..60e5995 100644 (file)
        "allpages-hide-redirects": "Beralîkirinan veşêre",
        "categories": "Kategorî",
        "categoriespagetext": "Di van kategoriyan de rûpel an jî medya hene.\n[[Special:UnusedCategories|Kategoriyên nayên bikaranîn]] li vir nayên nîşandan.\nLi [[Special:WantedCategories|kategoriyên xwestî]] binêre.",
-       "special-categories-sort-count": "hatîye rêzkirin li gorî hejmaran",
-       "special-categories-sort-abc": "li gorî alfabeyê rêzkirî ye",
        "deletedcontributions": "Beşdariyên bikarhênerekî yê jêbirî",
        "deletedcontributions-title": "Guherandinên bikarhêner yê jêbirî",
        "sp-deletedcontributions-contribs": "beşdarî",
index 014a9b8..f02128e 100644 (file)
        "cachedspecial-refresh-now": "Recentissima vide.",
        "categories": "Categoriae",
        "categoriespagetext": "{{PLURAL:$1|Categoria subter paginas vel fasciculos continet.|Categoriae subter paginas vel fasciculos continent.}}\n[[Special:UnusedCategories|Categoriae non in usu]] non monstrantur.\nVide etiam [[Special:WantedCategories|categorias desideratas]].",
-       "special-categories-sort-count": "ordinare secundum numerum",
-       "special-categories-sort-abc": "ordinare secundum abecedarium",
        "deletedcontributions": "Conlationes usoris deletae",
        "deletedcontributions-title": "Conlationes usoris deletae",
        "sp-deletedcontributions-contribs": "conlationes",
index 45a8c19..f38737b 100644 (file)
        "allinnamespace": "Todas las pajinas (espasio $1)",
        "allpagessubmit": "Ir",
        "categories": "Kategorías",
-       "special-categories-sort-count": "ordenar por número",
-       "special-categories-sort-abc": "ordenar alefbeticamente",
        "linksearch": "Bushkida de enlases eksternos",
        "linksearch-ok": "Bushkar",
        "linksearch-line": "Atamiento para $1 en la hoja $2",
index e51ed64..4040aa4 100644 (file)
        "categories-submit": "Weisen",
        "categoriespagetext": "Dës {{PLURAL:$1|Kategorie huet|Kategorien hu}} Säiten oder Medien.\n[[Special:UnusedCategories|Netbenotzt Kategorië]] ginn hei net gewisen.\nKuckt och [[Special:WantedCategories|Gewënscht Kategorien]].",
        "categoriesfrom": "Weis Kategorien ugefaange bei:",
-       "special-categories-sort-count": "no der Zuel zortéieren",
-       "special-categories-sort-abc": "alphabetesch zortéieren",
        "deletedcontributions": "Geläscht Kontributiounen",
        "deletedcontributions-title": "Geläscht Kontributiounen",
        "sp-deletedcontributions-contribs": "Kontributiounen",
index f6fdec3..62e24b2 100644 (file)
        "categories": "Categorieë",
        "categoriespagetext": "De volgende {{PLURAL:$1|categorie bevat|categorieë bevatte}} pazjena's of mediabestenj.\n[[Special:UnusedCategories|Óngebroekde categorieë]] waere hie neet weergegaeve.\nZuuch ouch [[Special:WantedCategories|neet-bestaondje categorieë mit verwiezinge]].",
        "categoriesfrom": "Categorië waergaeve vanaaf:",
-       "special-categories-sort-count": "op aantal sortere",
-       "special-categories-sort-abc": "alfabetisch sortere",
        "deletedcontributions": "Eweggesjafde gebroekersbiedrages",
        "deletedcontributions-title": "Eweggesjafde gebroekersbiedrages",
        "sp-deletedcontributions-contribs": "biedraag",
index 5f78397..ced7c58 100644 (file)
        "categories-submit": "نیشان دائن",
        "categoriespagetext": "{{PLURAL:$1|ردهٔ|رده‌های}} زیر دارای صفحات یا پرونده‌هایی {{PLURAL:$1|است|هستند}}.\n[[Special:UnusedCategories|رده‌های استفاده‌نشده]] در اینجا نمایش داده نشده‌اند.\nهمچنین [[Special:WantedCategories|رده‌های مورد نیاز]] را ببینید.",
        "categoriesfrom": "نمایش رده‌ها با شروع از:",
-       "special-categories-sort-count": "مرتب کردن بر اساس تعداد",
-       "special-categories-sort-abc": "مرتب کردن الفبایی",
        "deletedcontributions": "مشارکت‌های حذف‌شده",
        "deletedcontributions-title": "مشارکت‌های حذف‌شده",
        "sp-deletedcontributions-contribs": "مشارکت‌ها",
index 9c7d746..a835f91 100644 (file)
        "categories": "دسه يا",
        "categoriespagetext": "{{PLURAL:$1|دسه|دسه یا}} هاری دشو جانیایا یا بلگه {{PLURAL:$1|هئ|هیئن}}.\n[[Special:UnusedCategories|دسه یا وه کار نگرته بیه]] د ایچه نیئن.\nهمچنو[[Special:WantedCategories|دسه یا حاستنی نه]] بوینیت.",
        "categoriesfrom": "دسه یایی که د شرو بینه نشو بیه:",
-       "special-categories-sort-count": "سرجاخودگری د اساس شمارشت",
-       "special-categories-sort-abc": "سرجاخودگری د اساس الفبا",
        "deletedcontributions": "هومیاریا پاکسا بیه کارور",
        "deletedcontributions-title": "هومیاریا پاک بیه کارور",
        "sp-deletedcontributions-contribs": "هومیاریا",
index d7dba94..3daa2d9 100644 (file)
        "categories-submit": "Rodyti",
        "categoriespagetext": "{{PLURAL:$1|Ši kategorija|Šios kategorijos}} turi puslapių ar failų.\n[[Special:UnusedCategories|Nenaudojamos kategorijos]] čia nerodomos.\nTaip pat žiūrėkite [[Special:WantedCategories|trokštamas kategorijas]].",
        "categoriesfrom": "Vaizduoti kategorijas pradedant nuo:",
-       "special-categories-sort-count": "rikiuoti pagal skaičių",
-       "special-categories-sort-abc": "rikiuoti pagal abėcėlę",
        "deletedcontributions": "Ištrintas naudotojo indėlis",
        "deletedcontributions-title": "Ištrintas naudotojo indėlis",
        "sp-deletedcontributions-contribs": "indėlis",
index 309ccd4..740b149 100644 (file)
        "categories": "Pawlte",
        "categoriespagetext": "A hnuaia pawl{{PLURAL:$1||te}} hian phêk emaw media a{{PLURAL:$1||n}} nei.\nHetah hian [[Special:UnusedCategories|pawl hman lohho]] pholan tel a ni lo.\n[[Special:WantedCategories|Pawl mamawhho]] en bawk la.",
        "categoriesfrom": "Hemi-a inṭan pawlho hi pholang rawh:",
-       "special-categories-sort-count": "a chhúnga thil awm zât azirin thliar rawh",
-       "special-categories-sort-abc": "a-aw-b indawtin",
        "deletedcontributions": "Hmangtu kutthawhna paihbo tawhte",
        "deletedcontributions-title": "Hmangtu kutthawhna paihbo tawhte",
        "sp-deletedcontributions-contribs": "kutthawhnate",
index 84c0481..6c0b718 100644 (file)
        "categories-submit": "Rādīt",
        "categoriespagetext": "{{PLURAL:$1|Šīs kategorijas|Šī kategorija|Šīs kategorijas}} satur lapas vai failus.\nŠeit nav parādītas [[Special:UnusedCategories|neizmantotās kategorijas]].\nSkatīt arī [[Special:WantedCategories|''sarkanās'' kategorijas]].",
        "categoriesfrom": "Parādīt kategorijas sākot ar:",
-       "special-categories-sort-count": "kārtot pēc skaita",
-       "special-categories-sort-abc": "kārtot alfabētiskā secībā",
        "deletedcontributions": "Dzēstais dalībnieka devums",
        "deletedcontributions-title": "Dzēstais dalībnieka devums",
        "sp-deletedcontributions-contribs": "devums",
        "tags-actions-header": "Darbības",
        "tags-active-yes": "Jā",
        "tags-active-no": "Nē",
+       "tags-source-extension": "Nosaka paplašinājums",
        "tags-source-none": "Vairs netiek izmantots",
        "tags-edit": "labot",
        "tags-delete": "dzēst",
index 13aa9ee..7ba9c6b 100644 (file)
        "categories": "संवर्ग सभ",
        "categoriespagetext": "ई {{PLURAL:$1|संवर्गमे अछि|संवर्ग सभमे अछि}} पन्ना वा मीडिया।\n[[Special:UnusedCategories|Unused categories]] एतए देखाएल नै अछि।\nईहो देखू [[Special:WantedCategories|wanted categories]]।",
        "categoriesfrom": "पन्ना प्रदर्शन प्रारम्भ भेल:",
-       "special-categories-sort-count": "गानि कऽ छाँटू",
-       "special-categories-sort-abc": "वर्णाक्षरानुसार छाँटू",
        "deletedcontributions": "मेटाएल प्रयोक्ता योगदान सभ",
        "deletedcontributions-title": "मेटाएल प्रयोक्ता योगदान सभ",
        "sp-deletedcontributions-contribs": "योगदान सभ",
index 869d1af..bd32f5a 100644 (file)
        "categories": "Категориет",
        "categoriespagetext": "{{PLURAL:$1|Тя категориень|ся категориетнень}} эса улихть лопат эли медиат.\n[[Special:UnusedCategories|тевс апак нолдак категориятне]] тяса аф няфневихть.\nСтане ина ватт [[Special:WantedCategories|вешема категориет]].",
        "categoriesfrom": "Няфтемс категориет тяста ушедозь:",
-       "special-categories-sort-count": "арафтомс луфть коряс",
-       "special-categories-sort-abc": "арафтомс алфавитонь коряс",
        "deletedcontributions": "Нардаф тиихнень путкссна",
        "deletedcontributions-title": "Нардаф тиихнень путкссна",
        "linksearch": "Ушеширень сюлмафксне",
index 82c64c1..b7a8909 100644 (file)
        "categories-submit": "Aseho",
        "categoriespagetext": "{{PLURAL:$1}}Ampiasain'ny rakitra na pejy ireo sokajy manaraka ireo.\nTsy hiseho eto ny [[Special:UnusedCategories|sokajy tsy miasa]].\nVangio koa ny [[Special:WantedCategories|sokajy ilaina]].",
        "categoriesfrom": "Haneho ny sokajy manomboka amin'ny :",
-       "special-categories-sort-count": "afantina amin'ny isan-javatra",
-       "special-categories-sort-abc": "famantinana ara-abidy",
        "deletedcontributions": "Fandraisan'anjara voafafa",
        "deletedcontributions-title": "fandraisan'anjara voafafa",
        "sp-deletedcontributions-contribs": "fandraisan'anjara",
index 68716bc..7b6abe6 100644 (file)
        "categories": "Kategori",
        "categoriespagetext": "{{PLURAL:$1|Isi kategori}} ko ado laman atau media.\n[[Special:UnusedCategories|Kategori nan indak tapakai]] indak nampak di siko.\nLihek pulo [[Special:WantedCategories|kategori nan diinginan]].",
        "categoriesfrom": "Tunjuakan kategori mulai jo:",
-       "special-categories-sort-count": "uruikan manuruik jumlah",
-       "special-categories-sort-abc": "uruikan manuruik abjad",
        "deletedcontributions": "Jariah nan dihapuih",
        "deletedcontributions-title": "Jariah nan dihapuih",
        "sp-deletedcontributions-contribs": "Jariah",
index 3006795..902150a 100644 (file)
        "categories-submit": "Прикажи",
        "categoriespagetext": "{{PLURAL:$1|Следната категорија содржи|Следните категории содржат}} страници или мултимедијални податотеки.\n[[Special:UnusedCategories|Неискористените категории]] не се прикажани овде.\nПогледајте ги и [[Special:WantedCategories|потребните категории]].",
        "categoriesfrom": "Приказ на категории почнувајќи од:",
-       "special-categories-sort-count": "подреди по број",
-       "special-categories-sort-abc": "подреди азбучно",
        "deletedcontributions": "Избришани кориснички придонеси",
        "deletedcontributions-title": "Избришани кориснички придонеси",
        "sp-deletedcontributions-contribs": "придонеси",
index bee9017..560ecb0 100644 (file)
        "categories-submit": "പ്രദർശിപ്പിക്കുക",
        "categoriespagetext": "താഴെ കൊടുത്തിരിക്കുന്ന {{PLURAL:$1|വർഗ്ഗത്തിൽ|വർഗ്ഗങ്ങളിൽ}} താളുകളും പ്രമാണങ്ങളുമുണ്ട്.\n[[Special:UnusedCategories|ഉപയോഗിക്കപ്പെടാത്ത വർഗ്ഗങ്ങൾ]] ഇവിടെ കാണിക്കുന്നില്ല.\n[[Special:WantedCategories|അവശ്യവർഗ്ഗങ്ങൾ]] കൂടി കാണുക.",
        "categoriesfrom": "ഇങ്ങനെ തുടങ്ങുന്ന വർഗ്ഗങ്ങൾ കാട്ടുക:",
-       "special-categories-sort-count": "എണ്ണത്തിനനുസരിച്ച് ക്രമപ്പെടുത്തുക",
-       "special-categories-sort-abc": "അക്ഷരമാലാക്രമത്തിൽ ക്രമീകരിക്കുക",
        "deletedcontributions": "മായ്ക്കപ്പെട്ട ഉപയോക്തൃസംഭാവനകൾ",
        "deletedcontributions-title": "മായ്ക്കപ്പെട്ട ഉപയോക്തൃസംഭാവനകൾ",
        "sp-deletedcontributions-contribs": "സം‌ഭാവനകൾ",
index f120701..5b990cc 100644 (file)
        "categories": "Ангиллууд",
        "categoriespagetext": "Дараах {{PLURAL:$1|ангилалд|ангиллуудад}} хуудас эсвэл медиа файл агуулагдаж байна.\n[[Special:UnusedCategories|Хэрэглэгдэхгүй байгаа]] ангиллуудыг энд харуулсангүй.\n[[Special:WantedCategories|Хэрэгтэй ангиллууд]] гэдгийг харна уу.",
        "categoriesfrom": "Эхний анги:",
-       "special-categories-sort-count": "тоогоор ялгах",
-       "special-categories-sort-abc": "үсгийн дарааллаар ялгах",
        "deletedcontributions": "Устгагдсан хэрэглэгчийн хувь нэмэр",
        "deletedcontributions-title": "Устгагдсан хэрэглэгчийн хувь нэмэр",
        "sp-deletedcontributions-contribs": "хувь нэмэр",
index deaa32a..a4e9ab6 100644 (file)
        "categories-submit": "दाखवा",
        "categoriespagetext": "विकिवर खालील वर्ग {{PLURAL:$1|आहे|आहेत}}.\n[[Special:UnusedCategories|न वापरलेले वर्ग]] येथे दाखवलेले नाहीत.\nहेही पहा: [[Special:WantedCategories|पाहिजे असलेले वर्ग]].",
        "categoriesfrom": "या शब्दापासून सुरू होणारे वर्ग दाखवा:",
-       "special-categories-sort-count": "मोजणीनुसार निवडा",
-       "special-categories-sort-abc": "अकारविल्हे निवडा",
        "deletedcontributions": "वगळलेली सदस्य संपादने",
        "deletedcontributions-title": "वगळलेली सदस्य संपादने",
        "sp-deletedcontributions-contribs": "संपादने",
index de13067..d4b395e 100644 (file)
        "categories": "Kategori",
        "categoriespagetext": "{{PLURAL:$1|Kategori|Kategori-kategori}} berikut mengandungi laman atau media.\n[[Special:UnusedCategories|Kategori yang tidak digunakan]] tidak dipaparkan di sini.\nLihat juga [[Special:WantedCategories|kategori yang dikehendaki]].",
        "categoriesfrom": "Paparkan kategori bermula daripada:",
-       "special-categories-sort-count": "susun mengikut tertib bilangan",
-       "special-categories-sort-abc": "susun mengikut tertib abjad",
        "deletedcontributions": "Sumbangan dihapuskan",
        "deletedcontributions-title": "Sumbangan dihapuskan",
        "sp-deletedcontributions-contribs": "sumbangan",
index a23271f..ed8281a 100644 (file)
        "categories": "Kategoriji",
        "categoriespagetext": "Il-{{PLURAL:$1|kategorija segwenti għandha|kategoriji segwenti għandhom}} paġni jew fajls multimedjali.<br />\nIl-[[Special:UnusedCategories|kategoriji vojta]] ma jidhrux hawnhekk.\nAra wkoll il-[[Special:WantedCategories|kategoriji rikjesti]].",
        "categoriesfrom": "Uri kategoriji minn:",
-       "special-categories-sort-count": "irranġa skont in-numru",
-       "special-categories-sort-abc": "irranġa skont l-alfabett",
        "deletedcontributions": "Kontribuzzjonijiet imħassra tal-utent",
        "deletedcontributions-title": "Kontribuzzjonijiet imħassra tal-utent",
        "sp-deletedcontributions-contribs": "kontribuzzjonijiet",
index f94f79c..c1cf019 100644 (file)
        "categories": "ကဏ္ဍများ",
        "categories-submit": "ပြသရန်",
        "categoriesfrom": "ဤမှစသော အမျိုးအစားများကို ပြရန် -",
-       "special-categories-sort-count": "အနည်းအများအလိုက်စီရန်",
-       "special-categories-sort-abc": "အက္ခရာစဉ်အလိုက်စီရန်",
        "deletedcontributions": "ဖျက်လိုက်သော ပံ့ပိုးမှုများ",
        "deletedcontributions-title": "ဖျက်လိုက်သော ပံ့ပိုးမှုများ",
        "sp-deletedcontributions-contribs": "ပံ့ပိုးထားမှုများ",
index ec3e46e..9f40bf4 100644 (file)
        "allpages-bad-ns": "{{SITENAME}} сайтсэнть арась лем потмо \"$1\".",
        "categories": "Категорият",
        "categoriespagetext": "{{PLURAL:$1|Те категориясонть|Неть категориятнесэ}} улить лопат эли медият.\n[[Special:UnusedCategories|тевс апак нолда категориятне]] тесэ а невтевить.\nИстяжо ванытя [[Special:WantedCategories|вешема категориятнень]].",
-       "special-categories-sort-count": "аравтомс цётонь коряс",
-       "special-categories-sort-abc": "аравтомс альфавитэнь коряс",
        "sp-deletedcontributions-contribs": "путовксонзо",
        "linksearch": "Ушо ёндонь сюлмавомапенень вешнема",
        "linksearch-pat": "Вешнемкс парцун:",
index e9a257c..c0886a6 100644 (file)
        "categories-submit": "Faje vedé",
        "categoriespagetext": "{{PLURAL:$1|'A categurìa 'nnecata 'e seguito cuntiene|'E categurìe 'nnecate 'e seguito cuntengono}} paggene o file multimediale.\n'E [[Special:UnusedCategories|categurìe vuote]] nun song mostrate ccà.\nVere anche 'e [[Special:WantedCategories|categurìe richieste]].",
        "categoriesfrom": "Fà vedè 'e categurìe partenno 'a:",
-       "special-categories-sort-count": "arricetta pe' cunteggio",
-       "special-categories-sort-abc": "arricetta arfabbeticamente",
        "deletedcontributions": "Contribbute utente scancellate",
        "deletedcontributions-title": "Contribbute utente scancellate",
        "sp-deletedcontributions-contribs": "contribbute",
index 91e2556..d3ec649 100644 (file)
        "categories-submit": "Vis",
        "categoriespagetext": "Følgende {{PLURAL:$1|kategori|kategorier}} inneholder sider eller media.\n[[Special:UnusedCategories|Ubrukte kategorier]] vises ikke her.\nSe også [[Special:WantedCategories|ønskede kategorier]].",
        "categoriesfrom": "Vis kategorier fra og med:",
-       "special-categories-sort-count": "soter etter antall",
-       "special-categories-sort-abc": "sorter alfabetisk",
        "deletedcontributions": "Slettede brukerbidrag",
        "deletedcontributions-title": "Slettede brukerbidrag",
        "sp-deletedcontributions-contribs": "bidrag",
index f53d44c..6703121 100644 (file)
        "toc": "Inhold",
        "showtoc": "Bekieken",
        "hidetoc": "Verbarg",
-       "collapsible-collapse": "Samenvouwen",
+       "collapsible-collapse": "Inklappen",
        "collapsible-expand": "Uutklappen",
        "confirmable-confirm": "{{GENDER:$1|Bi'j}} daor wisse van?",
        "confirmable-yes": "Ja",
        "rcshowhidemine": "$1 mien bewarkingen",
        "rcshowhidemine-show": "Bekiek",
        "rcshowhidemine-hide": "Verbarg",
+       "rcshowhidecategorization": "$1 kategorisering van ziejen",
+       "rcshowhidecategorization-show": "Bekiek",
+       "rcshowhidecategorization-hide": "Verbarg",
        "rclinks": "Bekiek de leste $1 wiezigingen van de aofgeleupen $2 dagen<br />$3",
        "diff": "wiez",
        "hist": "gesch",
        "usereditcount": "$1 {{PLURAL:$1|bewarking|bewarkingen}}",
        "usercreated": "{{GENDER:$3|Eregistreerd}} op $1 um $2",
        "newpages": "Nieje artikels",
+       "newpages-submit": "Bekiek",
        "newpages-username": "Gebrukersnaam:",
        "ancientpages": "Oudste artikels",
        "move": "Herneumen",
        "categories": "Kategorieën",
        "categoriespagetext": "De de volgende {{PLURAL:$1|kategorie steet|kategorieën staon}} ziejen of mediabestaanden.\n[[Special:UnusedCategories|ongebruukten kategorieën]] zie'j hier niet.\nZie oek [[Special:WantedCategories|gewunste kategorieën]].",
        "categoriesfrom": "Laot kategorieën zien vanaof:",
-       "special-categories-sort-count": "op antal sorteren",
-       "special-categories-sort-abc": "alfebeties sorteren",
        "deletedcontributions": "Vortedaone gebrukersbiedragen",
        "deletedcontributions-title": "Vortedaone gebrukersbiedragen",
        "sp-deletedcontributions-contribs": "biedragen",
        "activeusers-hidebots": "Bots verbargen",
        "activeusers-hidesysops": "Beheerders verbargen",
        "activeusers-noresult": "Gien aktieve gebrukers evunnen.",
+       "activeusers-submit": "Bekiek",
        "listgrouprights": "Rechten van gebrukersgroepen",
        "listgrouprights-summary": "Op disse zied staon de gebrukersgroepen van disse wiki beschreven, mit de biebeheurende rechten.\nMeer informasie over de rechten ku'j [[{{MediaWiki:Listgrouprights-helppage}}|hier vienen]].",
        "listgrouprights-key": "Leganda:\n* <span class=\"listgrouprights-granted\">Toe-ewezen recht</span>\n* <span class=\"listgrouprights-revoked\">In-etrökken recht</span>",
        "wlheader-showupdated": "Ziejen die sinds joew leste bezeuk bie-ewörken bin staon '''vet'''.",
        "wlnote": "Hieronder {{PLURAL:$1|steet de leste wieziging|staon de leste $1 wiezigingen}} in {{PLURAL:$2|t aofgeleupen ure|de leste $2 uren}} vanaof $3 um $4.",
        "wlshowlast": "Laot de veurbieje $1 uur $2 dagen  zien",
+       "watchlist-submit": "Bekiek",
        "watchlist-options": "Opsies veur de volglieste",
        "watching": "Volg...",
        "unwatching": "Niet volgen...",
        "delete-confirm": "\"$1\" vortdoon",
        "delete-legend": "Vortdoon",
        "historywarning": "'''Waorschuwing''': de zied die'j vortdoon, hef $1 {{PLURAL:$1|versie|versies}}:",
+       "historyaction-submit": "Bekiek",
        "confirmdeletetext": "Je staon op t punt n zied en de geschiedenisse dervan vort te doon.\nBevestig hieronder dat dit inderdaod de bedoeling is, da'j de gevolgen begriepen en dat t akkedeert mit t [[{{MediaWiki:Policy-url}}|beleid]].",
        "actioncomplete": "Uutevoerd",
        "actionfailed": "De haandeling is mislokt.",
index 9a52c37..40f07fd 100644 (file)
        "categories": "Kategorien",
        "categoriespagetext": "In disse Kategorien staht Sieden oder Mediendatein.\n[[Special:UnusedCategories|Nich bruukte Kategorien]] warrt hier nich wiest.\nKiek ok bi de [[Special:WantedCategories|wünschten Kategorien]].",
        "categoriesfrom": "Wies Kategorien anfungen mit:",
-       "special-categories-sort-count": "na Tall sorteren",
-       "special-categories-sort-abc": "alphabeetsch sorteren",
        "deletedcontributions": "Wegsmetene Bidrääg vun’n Bruker",
        "deletedcontributions-title": "Wegsmetene Bidrääg vun’n Bruker",
        "sp-deletedcontributions-contribs": "Bidrääg",
index 1bc5957..470c288 100644 (file)
        "categories-submit": "देखाउनुहोस्",
        "categoriespagetext": "निम्नलिखित {{PLURAL:$1|श्रेणी|श्रेणीहरू}}मा पृष्ठ वा मीडिया छन् । जुन [[Special:UnusedCategories|प्रयोग नगरिएका श्रेणीहरू]] यहाँ देखाइएको छैन।  [[Special:WantedCategories|चाहिएको श्रेणीहरू]] पनि हेर्नुहोस।",
        "categoriesfrom": "श्रेणीहरू देखाउन शुरु हुने यहाँ:",
-       "special-categories-sort-count": "गणना क्रममा राख्नुहोस्",
-       "special-categories-sort-abc": "वर्णानुक्रम अनुसार मिलाउने",
        "deletedcontributions": "प्रयोगकर्ताका मेटिएका योगदानहरू",
        "deletedcontributions-title": "प्रयोगकर्ताका मेटाइएका योगदानहरू",
        "sp-deletedcontributions-contribs": "योगदानहरू",
index 21b445b..15f8e89 100644 (file)
@@ -75,7 +75,8 @@
                        "Catrope",
                        "Edoderoo",
                        "Nemo bis",
-                       "Lemondoge"
+                       "Lemondoge",
+                       "Dinosaur918"
                ]
        },
        "tog-underline": "Koppelingen onderstrepen:",
@@ -93,7 +94,7 @@
        "tog-watchdefault": "Pagina’s en bestanden die ik bewerk automatisch volgen",
        "tog-watchmoves": "Pagina’s en bestanden die ik hernoem automatisch volgen",
        "tog-watchdeletion": "Pagina’s en bestanden die ik verwijder automatisch volgen",
-       "tog-watchuploads": "Het toevoegen van nieuwe bestanden die ik upload mijn volglijst",
+       "tog-watchuploads": "Nieuwe bestanden die ik upload toevoegen aan mijn volglijst",
        "tog-watchrollback": "Pagina's waarop ik heb teruggedraaid automatisch volgen",
        "tog-minordefault": "Mijn bewerkingen standaard als kleine bewerking markeren",
        "tog-previewontop": "Voorvertoning boven bewerkingsveld weergeven",
        "botpasswords-insert-failed": "Toevoegen van botnaam \"$1\" mislukt. Is deze misschien al toegevoegd?",
        "botpasswords-update-failed": "Bijwerken van botnaam \"$1\" mislukt. Is deze misschien verwijderd?",
        "botpasswords-created-title": "Botwachtwoord aangemaakt",
-       "botpasswords-created-body": "De bot wachtwoord voor bot naam \"$1\" gebruiker \"$2\" is gemaakt.",
+       "botpasswords-created-body": "Het botwachtwoord voor botnaam \"$1\" van gebruiker \"$2\" is gemaakt.",
        "botpasswords-updated-title": "Botwachtwoord bijgewerkt",
        "botpasswords-updated-body": "Het botwachtwoord \"$1\" is succesvol bijgewerkt.",
        "botpasswords-deleted-title": "Botwachtwoord verwijderd",
        "anoneditwarning": "<strong>Waarschuwing:</strong> u bent niet aangemeld.\nUw IP-adres wordt opgeslagen als u wijzigingen op deze pagina maakt. Wanneer u <strong>[$1 aanmeldt]</strong> of <strong>[$2 een gebruiker aanmaakt]</strong> verschijnen uw bewerkingen onder uw gebruikersnaam, naast andere voordelen.",
        "anonpreviewwarning": "''U bent niet aangemeld.''\n''Door uw bewerking op te slaan wordt uw IP-adres opgeslagen in de paginageschiedenis.''",
        "missingsummary": "'''Let op:''' u hebt geen bewerkingssamenvatting opgegeven.\nAls u nogmaals op \"{{int:savearticle}}\" klikt wordt de bewerking zonder samenvatting opgeslagen.",
-       "selfredirect": "<strong>Waarschuwing:</strong>U heeft een doorverwijzing gemaakt naar dezelfde pagina. Mogelijk heeft u de verkeerde bestemming voor de doorverwijzing gebruikt, of bewerkt u de verkeerde pagina. Door alsnog op \"{{int:savearticle}}\" te klikken word de doorverwijzing alsnog aangemaakt.",
+       "selfredirect": "<strong>Waarschuwing:</strong> U heeft een doorverwijzing gemaakt naar dezelfde pagina. Mogelijk heeft u de verkeerde bestemming voor de doorverwijzing gebruikt, of bewerkt u de verkeerde pagina. Door nogmaals op \"{{int:savearticle}}\" te klikken word de doorverwijzing alsnog aangemaakt.",
        "missingcommenttext": "Plaats uw reactie hieronder.",
        "missingcommentheader": "<strong>Let op:</strong> u hebt geen onderwerp/kop voor deze opmerking opgegeven.\nAls u opnieuw op \"{{int:savearticle}}\" klikt, wordt uw wijziging zonder een onderwerp/kop opgeslagen.",
        "summary-preview": "Bewerkingssamenvatting nakijken:",
        "revdelete-submit": "Toepassen op de geselecteerde {{PLURAL:$1|bewerking|bewerkingen}}",
        "revdelete-success": "Zichtbaarheid van wijziging bijgewerkt.",
        "revdelete-failure": "De zichtbaarheid van de wijziging kon niet bijgewerkt worden:\n$1",
-       "logdelete-success": "Log zichtbaarheid instellen.",
+       "logdelete-success": "De zichtbaarheid van de gebeurtenis is ingesteld.",
        "logdelete-failure": "De zichtbaarheid van de logboekregel kon niet ingesteld worden:\n$1",
        "revdel-restore": "zichtbaarheid wijzigen",
        "pagehist": "Geschiedenis",
        "rcshowhidemine-hide": "verbergen",
        "rcshowhidecategorization": "paginacategorisatie $1",
        "rcshowhidecategorization-show": "weergeven",
-       "rcshowhidecategorization-hide": "verbergen",
+       "rcshowhidecategorization-hide": "Verbergen",
        "rclinks": "De $1 laatste wijzigingen bekijken in de laatste $2 dagen<br />$3",
        "diff": "wijz",
        "hist": "gesch",
        "categories-submit": "Weergeven",
        "categoriespagetext": "De volgende {{PLURAL:$1|categorie bevat|categorieën bevatten}} pagina's of mediabestanden.\n[[Special:UnusedCategories|Ongebruikte categorieën]] worden hier niet weergegeven.\nZie ook [[Special:WantedCategories|niet-bestaande categorieën met koppelingen]].",
        "categoriesfrom": "Categorieën weergeven vanaf:",
-       "special-categories-sort-count": "op aantal sorteren",
-       "special-categories-sort-abc": "alfabetisch sorteren",
        "deletedcontributions": "Verwijderde bijdragen",
        "deletedcontributions-title": "Verwijderde gebruikersbijdragen",
        "sp-deletedcontributions-contribs": "bijdragen",
        "api-error-unknownerror": "Onbekende fout: \"$1\"",
        "api-error-uploaddisabled": "Uploaden is niet mogelijk in deze wiki.",
        "api-error-verification-error": "Dit bestand is mogelijk beschadigd of heeft een onjuiste extensie.",
-       "api-error-was-deleted": "Een bestand met deze naam is al eerder zijn geüpload en vervolgens verwijderd.",
+       "api-error-was-deleted": "Een bestand met deze naam is al eerder geüpload en vervolgens verwijderd.",
        "duration-seconds": "$1 {{PLURAL:$1|seconde|seconden}}",
        "duration-minutes": "$1 {{PLURAL:$1|minuut|minuten}}",
        "duration-hours": "$1 {{PLURAL:$1|uur|uren}}",
        "randomrootpage": "Willekeurige hoofdpagina",
        "log-action-filter-block": "Soort blokkade:",
        "log-action-filter-delete": "Soort verwijdering:",
-       "log-action-filter-managetags": "Soort van tag management actie:",
-       "log-action-filter-move": "Soort verplaatsing:",
-       "log-action-filter-newusers": "Type account maken:",
+       "log-action-filter-managetags": "Type labelbeheerhandeling:",
+       "log-action-filter-move": "Soort hernoeming:",
+       "log-action-filter-newusers": "Type accountaanmaak:",
        "log-action-filter-patrol": "Soort markering:",
        "log-action-filter-protect": "Soort beveiliging:",
        "log-action-filter-all": "Alles",
index 08995c3..c01b64a 100644 (file)
        "categories-submit": "Vis",
        "categoriespagetext": "Følgjande {{PLURAL:$1|category contains|kategoriar inneheld}} sider eller media.\n[[Special:UnusedCategories|Unytta kategoriar]] vert ikkje vist her.\nSjå òg [[Special:WantedCategories|ønska kategoriar]].",
        "categoriesfrom": "Vis kategoriar frå og med:",
-       "special-categories-sort-count": "sorter etter storleik",
-       "special-categories-sort-abc": "sorter alfabetisk",
        "deletedcontributions": "Sletta brukarbidrag",
        "deletedcontributions-title": "Sletta brukarbidrag",
        "sp-deletedcontributions-contribs": "bidrag",
index 53727ce..e16a822 100644 (file)
        "categories": "Categorias",
        "categoriespagetext": "{{PLURAL:$1|La categoria seguenta es utilizada|Las categorias seguentas son utilizadas}} per de paginas o de fichièrs.\n[[Special:UnusedCategories|Las categorias inutilizadas]] son pas afichadas aicí.\nVejatz tanben [[Special:WantedCategories|las categorias demandadas]].",
        "categoriesfrom": "Afichar las categorias que començan a :",
-       "special-categories-sort-count": "triada per compte",
-       "special-categories-sort-abc": "triada alfabetica",
        "deletedcontributions": "Contribucions suprimidas d’un utilizaire",
        "deletedcontributions-title": "Contribucions suprimidas d’un utilizaire",
        "sp-deletedcontributions-contribs": "contribucions",
index 251b148..d711ecd 100644 (file)
        "right-rollback": "ଏକ ନିର୍ଦ୍ଦିଷ୍ଟ ପୃଷ୍ଠାକୁ ବଦଳାଇଥିବା ଶେଷ ସଭ୍ୟଙ୍କ ସମ୍ପାଦନାକୁ ସଙ୍ଗେସଙ୍ଗେ ପୁରାପୁରି ପଛକୁ ଫେରାଇଦେବେ",
        "right-markbotedits": "ପୁରାପୁରି ପଛକୁ ଫେରାଇବା ବଦଳଗୁଡ଼ିକ ଆପେ ଆପେ କରା ବଦଳ ବୋଲି ଗଣିବେ",
        "right-noratelimit": "ବିରଳ ସୀମା ଦେଇ ପ୍ରଭାବିତ ହୋଇ ନଥିବା",
-       "right-import": "ବାà¬\95ି à¬\89à¬\87à¬\95ିରà­\81 à¬ªà­\83ଷà­\8dଠାମାନ à¬\86ମଦାନà­\80 କରିବେ",
+       "right-import": "ବାà¬\95ି à¬\89à¬\87à¬\95ିରà­\81 à¬ªà­\83ଷà­\8dଠାମାନ à¬\86ମଦାନି କରିବେ",
        "right-importupload": "ଏକ ଫାଇଲ ଅପଲୋଡ଼ରୁ ଏହି ପୃଷ୍ଠାସବୁ ଆଣିବେ",
        "right-patrol": "ବାକି ମାନଙ୍କ ବଦଳକୁ ଜଗାଯାଇଥିବା ବଦଳ ବୋଲି ଚିହ୍ନିତ କରିବେ",
        "right-autopatrol": "ଜଣକର ଆପଣା ସମ୍ପାଦନାସବୁ ଜଗାଯାଇଅଛି ବୋଲି ଚିହ୍ନିତ ହୋଇଯାଉ",
        "categories": "ଶ୍ରେଣୀସମୂହ",
        "categoriespagetext": "ତଳଲିଖିତ {{PLURAL:$1|ଶ୍ରେଣୀ|ଶ୍ରେଣୀସମୂହ}}ରେ ପୃଷ୍ଠା ବା ମିଡ଼ିଆ ରହିଅଛି ।\n[[Special:UnusedCategories|ବ୍ୟବହାର ହୋଇନଥିବା ଶ୍ରେଣୀସବୁ]] ଦେଖାଯାଇନାହିଁ ।\n[[Special:WantedCategories|ଦରକାରୀ ଶ୍ରେଣୀସମୂହ]] ସବୁ ଦେଖନ୍ତୁ ।",
        "categoriesfrom": "ଏହି ନାମରେ ଆରମ୍ଭ ହେଉଥିବା ଶ୍ରେଣୀଗୁଡ଼ିକୁ ଦେଖାଇବେ:",
-       "special-categories-sort-count": "ଗଣନ କରି ସଜାଇବେ",
-       "special-categories-sort-abc": "ଅକ୍ଷରର କ୍ରମ ଅନୁସାରେ ସଜାଇବେ",
        "deletedcontributions": "ଲିଭାଇ ଦିଆଯାଇଥିବା ସଭ୍ୟଙ୍କ ଅବଦାନ",
        "deletedcontributions-title": "ଲିଭାଇ ଦିଆଯାଇଥିବା ସଭ୍ୟଙ୍କ ଅବଦାନସମୂହ",
        "sp-deletedcontributions-contribs": "ଅବଦାନସମୂହ",
        "import-interwiki-sourcepage": "ମୂଳ ପୃଷ୍ଠା:",
        "import-interwiki-history": "ଏହି ପୃଷ୍ଠା ନିମନ୍ତେ ସବୁଯାକ ସଂସ୍କରଣ ଇତିହାସ ନକଲ କରିନିଅନ୍ତୁ",
        "import-interwiki-templates": "ସବୁଯାକ ଛାଞ୍ଚ ଏହା ଭିତରେ ରଖିବେ",
-       "import-interwiki-submit": "à¬\86ମଦାନà­\80",
+       "import-interwiki-submit": "à¬\86ମଦାନି",
        "import-upload-filename": "ଫାଇଲ ନାମ:",
        "import-comment": "ମତାମତ:",
        "importtext": "[[Special:Export|ରପ୍ତାନି ସୁବିଧା]] ବ୍ୟବହାର କରି ମୂଳ ଉଇକିରୁ ଫାଇଲଟି ରପ୍ତାନି କରନ୍ତୁ ।\nତାହାକୁ ଆପଣା କମ୍ପୁଟରରେ ସାଇତି ଏଠାରେ ଅପଲୋଡ଼ କରନ୍ତୁ ।",
        "importstart": "ପୃଷ୍ଠା ଆମଦାନି କରୁଛୁ...",
        "import-revision-count": "$1 ଗୋଟି {{PLURAL:$1|ସଂସ୍କରଣ|ସଂସ୍କରଣ}}",
        "importnopages": "ଆମଦାନି କରିବା ନିମନ୍ତେ ପୃଷ୍ଠା ନାହିଁ ।",
-       "imported-log-entries": "$1 à¬\97à­\8bà¬\9fି {{PLURAL:$1|à¬\87ତିହାସ|à¬\87ତିହାସ}}ର à¬¨à¬¿à¬¬à­\87ଶ à¬\86ମଦାନà­\80 କରାଗଲା ।",
+       "imported-log-entries": "$1 à¬\97à­\8bà¬\9fି {{PLURAL:$1|à¬\87ତିହାସ|à¬\87ତିହାସ}}ର à¬¨à¬¿à¬¬à­\87ଶ à¬\86ମଦାନି କରାଗଲା ।",
        "importfailed": "ଆମଦାନି ବିଫଳ ହେଲା: <nowiki>$1</nowiki>",
-       "importunknownsource": "à¬\85à¬\9cଣା à¬\86ମଦାନà­\80 à¬®à­\82ଳାଧାର à¬ªà­\8dରà¬\95ାର",
+       "importunknownsource": "à¬\86ମଦାନି à¬®à­\82ଳାଧାର à¬ªà­\8dରà¬\95ାର à¬\85à¬\9cଣା",
        "importcantopen": "ଆହରଣ ଫାଇଲଟି ଖୋଲି ପାରିଲୁ ନାହିଁ",
        "importbadinterwiki": "ଖରାପ ଇଣ୍ଟରଉଇକି ଲିଙ୍କ",
        "importsuccess": "ଆହରଣ ଶେଷ ହେଲା!",
index 0007c97..9bb2e21 100644 (file)
        "categories": "ਸ਼੍ਰੇਣੀਆਂ",
        "categories-submit": "ਦਿਖਾਓ",
        "categoriesfrom": "ਇਸਤੋਂ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲ਼ੀਆਂ ਕੈਟੇਗਰੀਆਂ ਵਖਾਓ:",
-       "special-categories-sort-count": "ਗਿਣਤੀ ਮੁਤਾਬਕ ਤਰਤੀਬ ਦੇਵੋ",
-       "special-categories-sort-abc": "ਅੱਖਰਾਂ ਮੁਤਾਬਕ ਤਰਤੀਬ ਦਿਓ",
        "deletedcontributions": "ਮਿਟਾਏ ਹੋਏ ਵਰਤੋਂਕਾਰ ਯੋਗਦਾਨ",
        "deletedcontributions-title": "ਮਿਟਾਏ ਹੋਏ ਵਰਤੋਂਕਾਰ ਯੋਗਦਾਨ",
        "sp-deletedcontributions-contribs": "ਯੋਗਦਾਨ",
index c9aa93b..6e60056 100644 (file)
        "allpages-bad-ns": "Ing {{SITENAME}} ala lang pirinan lagyung (namespace) \"$1\".",
        "categories": "Kategoriya",
        "categoriespagetext": "Deng tutuking categoria atin lang bulung o media\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
-       "special-categories-sort-count": "surian tukituki agpang keng bilang",
-       "special-categories-sort-abc": "surian lang tukituki agpang keng kulitan",
        "deletedcontributions": "Deng ambag da reng talagamit a mebura",
        "deletedcontributions-title": "Deng ambag da reng talagamit a mebura",
        "linksearch": "Suglung palual",
index 15abb2c..9815492 100644 (file)
        "copyrightwarning2": "Wszelki wkład na {{SITENAME}} może być edytowany, zmieniany lub usunięty przez innych użytkowników.\nJeśli nie chcesz, żeby Twój tekst był dowolnie zmieniany przez każdego i rozpowszechniany bez ograniczeń, nie umieszczaj go tutaj.<br />\nZapisując swoją edycję, oświadczasz, że ten tekst jest Twoim dziełem lub pochodzi z materiałów dostępnych na warunkach ''domeny publicznej'' lub kompatybilnych (zobacz także $1).\n'''PROSZĘ NIE WPROWADZAĆ MATERIAŁÓW CHRONIONYCH PRAWEM AUTORSKIM BEZ POZWOLENIA WŁAŚCICIELA!'''",
        "editpage-cannot-use-custom-model": "Model zawartości tej strony nie może być zmieniony.",
        "longpageerror": "'''Błąd! Wprowadzony przez Ciebie tekst ma {{PLURAL:$1|1 kilobajt|$1 kilobajty|$1 kilobajtów}}. Długość tekstu nie może przekraczać {{PLURAL:$2|1 kilobajt|$2 kilobajty|$2 kilobajtów}}. Tekst nie może być zapisany.'''",
-       "readonlywarning": "<strong>Uwaga! Baza danych została zablokowana do celów administracyjnych. W tej chwili nie można zapisać nowej wersji strony. Jeśli chcesz, może skopiować ją do pliku, aby móc zapisać ją później.</strong>\n\nAdministrator systemu, który zablokował bazę, podał następujący powód: $1",
+       "readonlywarning": "<strong>Uwaga! Baza danych została zablokowana do celów administracyjnych. W tej chwili nie można zapisać nowej wersji strony. Jeśli chcesz, możesz skopiować ją do pliku, aby móc zapisać ją później.</strong>\n\nAdministrator systemu, który zablokował bazę, podał następujący powód: $1",
        "protectedpagewarning": "'''Uwaga! Możliwość modyfikacji tej strony została zabezpieczona. Mogą ją edytować jedynie użytkownicy z uprawnieniami administratora.'''\nOstatni wpis z rejestru jest pokazany poniżej.",
        "semiprotectedpagewarning": "'''Uwaga!''' Ta strona została zabezpieczona i tylko zarejestrowani użytkownicy mogą ją edytować.\nOstatni wpis z rejestru jest pokazany poniżej.",
        "cascadeprotectedwarning": "<strong>Uwaga:</strong> Ta strona została zabezpieczona i tylko użytkownicy z uprawnieniami administratora mogą ją edytować. Została ona osadzona w {{PLURAL:$1|następującej stronie, która została zabezpieczona|następujących stronach, które zostały zabezpieczone}} z włączoną opcją dziedziczenia:",
        "categories-submit": "Pokaż",
        "categoriespagetext": "Strona przedstawia {{PLURAL:$1|kategorię zawierającą|listę kategorii zawierających}} strony lub pliki.\n[[Special:UnusedCategories|Nieużywane kategorie]] zostały ukryte.\nZobacz również [[Special:WantedCategories|brakujące kategorie]].",
        "categoriesfrom": "Wyświetl kategorie, zaczynając od:",
-       "special-categories-sort-count": "sortowanie według liczby",
-       "special-categories-sort-abc": "sortowanie alfabetyczne",
        "deletedcontributions": "Usunięty wkład użytkownika",
        "deletedcontributions-title": "Usunięty wkład użytkownika",
        "sp-deletedcontributions-contribs": "wkład",
index 813c416..f127930 100644 (file)
        "categories": "Categorìe",
        "categoriespagetext": "{{PLURAL:$1|Costa categorìa a conten|Coste categorìe a conten-o}} dle pàgine ò dj'archivi.\n[[Special:UnusedCategories|Le categorìe nen dovrà]] a son pa mostrà ambelessì.\nCh'a bèica ëdcò [[Special:WantedCategories|le categorìe domandà]].",
        "categoriesfrom": "Smon-e le categorìe an partend da:",
-       "special-categories-sort-count": "ordiné për nùmer",
-       "special-categories-sort-abc": "rangé la lista an órdin alfabétich",
        "deletedcontributions": "Modìfiche faite da utent scancelà",
        "deletedcontributions-title": "Modìfiche faite da utent scancelà",
        "sp-deletedcontributions-contribs": "contribussion",
index 76e4c9e..3ef60e7 100644 (file)
        "categories": "گٹھاں",
        "categoriespagetext": "تھلے {{PLURAL:$1|گٹھ چ|گٹھاں چ}} صفے یا میڈیا۔\n[[Special:UnusedCategories|ناں ورتیاں گٹھاں]] ایتھے نئیں دسے گۓ۔\nایہ وی ویکھو [[Special:WantedCategories|چائیدیاں گٹھاں]]",
        "categoriesfrom": "گٹھاں وکھاؤ جیہڑیاں شروع ہون:",
-       "special-categories-sort-count": "گنتی سعاب نال وکھریاں کرو",
-       "special-categories-sort-abc": "ا ب دے سعاب نال ونڈو",
        "deletedcontributions": "ورتن والے دے کم مٹادتے گۓ۔",
        "deletedcontributions-title": "ورتن والے دے کم مٹادتے گۓ۔",
        "sp-deletedcontributions-contribs": " کم",
index 2ac29ad..698cbc1 100644 (file)
        "allpages-bad-ns": "En {{SITENAME}} ni ast tītelin plattibi \"$1\".",
        "categories": "Kategōrijas",
        "categoriesfrom": "Waidinnais kategōrijans pagaūnintins sen:",
-       "special-categories-sort-count": "rikaūjais pa gīrbin",
-       "special-categories-sort-abc": "rikaūjais pa alfabētan",
        "deletedcontributions": "Aupausintā tērpautajas ēndija",
        "deletedcontributions-title": "Aupausintā tērpautajas ēndija",
        "sp-deletedcontributions-contribs": "ēndija",
index fa50b92..8e677db 100644 (file)
        "categories-submit": "ښکاره کول",
        "categoriespagetext": "دا لاندينۍ {{PLURAL:$1|وېشنيزه|وېشنيزې}} مخونه يا رسنيزې دوتنې لري.\nدلته [[Special:UnusedCategories|ناکارېدلې وېشنيزې]] نه دي ښکاره شوي.\n[[Special:WantedCategories|غوښتلې وېشنيزې]] هم وگورۍ.",
        "categoriesfrom": "هغه وېشنيزې کتل چې پېلېږي په:",
-       "special-categories-sort-count": "د شمېر له مخې اوډل",
-       "special-categories-sort-abc": "د ابېڅو له مخې اوډل",
        "deletedcontributions": "ړنگېدلې کارن ونډې",
        "deletedcontributions-title": "ړنگېدلې کارن ونډې",
        "sp-deletedcontributions-contribs": "ونډې",
index d4ce910..6000918 100644 (file)
        "categories-submit": "Exibir",
        "categoriespagetext": "{{PLURAL:$1|A seguinte categoria contém|As seguintes contém}} páginas ou mídia.\n[[Special:UnusedCategories|Categorias não utilizadas]] não são mostradas aqui.\nVeja também [[Special:WantedCategories|categorias pedidas]].",
        "categoriesfrom": "Listar categorias começando por:",
-       "special-categories-sort-count": "ordenar por contagem",
-       "special-categories-sort-abc": "ordenar alfabeticamente",
        "deletedcontributions": "Edições eliminadas",
        "deletedcontributions-title": "Contribuições eliminadas",
        "sp-deletedcontributions-contribs": "contribuições",
index 0276c1b..66a5bb5 100644 (file)
        "categories-submit": "Mostrar",
        "categoriespagetext": "{{PLURAL:$1|A seguinte categoria contém páginas ou ficheiros multimédia|As seguintes categorias contêm páginas ou ficheiros multimédia}}.\nAs [[Special:UnusedCategories|categorias não utilizadas]] não são apresentadas nesta lista.\nVeja também as [[Special:WantedCategories|categorias desejadas]].",
        "categoriesfrom": "Mostrar categorias que comecem por:",
-       "special-categories-sort-count": "ordenar por contagem",
-       "special-categories-sort-abc": "ordenar alfabeticamente",
        "deletedcontributions": "Edições eliminadas",
        "deletedcontributions-title": "Edições eliminadas",
        "sp-deletedcontributions-contribs": "contribuições",
        "watchlistedit-raw-done": "A sua lista de páginas vigiadas foi atualizada.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Foi adicionada uma página|Foram adicionadas $1 páginas}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Foi removida uma página|Foram removidas $1 páginas}}:",
-       "watchlistedit-clear-title": "Lista de páginas vigiadas limpa",
+       "watchlistedit-clear-title": "Limpar lista de páginas vigiadas",
        "watchlistedit-clear-legend": "Limpar lista de páginas vigiadas",
        "watchlistedit-clear-explain": "Todos os títulos serão removidos da sua lista de páginas vigiadas.",
        "watchlistedit-clear-titles": "Páginas:",
        "log-action-filter-rights-rights": "Alteração manual",
        "log-action-filter-rights-autopromote": "Alteração automática",
        "log-action-filter-suppress-event": "Supressão de registo",
+       "log-action-filter-suppress-delete": "Supressão de página",
        "log-action-filter-upload-upload": "Novo carregamento",
        "log-action-filter-upload-overwrite": "Recarregar"
 }
index 0099c4b..65d39e5 100644 (file)
        "categories": "Katiguriyakuna",
        "categoriespagetext": "Kay qatiq {{PLURAL:$1|katiguriyaqa|katiguriyakunaqa}} p'anqayuqmi icha midyayuqmi.\n[[Special:UnusedCategories|Ch'usaq katiguriyakunataqa]] kaypi manam rikunkichu.\n[[Special:WantedCategories|Muchusqa katiguriyakunatapas]] qhaway.",
        "categoriesfrom": "Katiguriyakunata rikuchiy kaywan qallarispa:",
-       "special-categories-sort-count": "yupaykama allichay",
-       "special-categories-sort-abc": "qallarina sanampakama allichay",
        "deletedcontributions": "Qullusqa ruraqpa hukchasqankuna",
        "deletedcontributions-title": "Qullusqa ruraqpa hukchasqankuna",
        "sp-deletedcontributions-contribs": "llamk'apusqakuna",
index 7a4bcad..73f33af 100644 (file)
        "categories": "Categorias",
        "categoriespagetext": "{{PLURAL:$1|Suandanta categoria cuntegna|Suandantas categorias cuntegnan}} paginas u multimedia.\n[[Special:UnusedCategories|Categorias betg utilisadas]] na vegnan betg mussadas qua.\nGuarda era las [[Special:WantedCategories|categorias giavischadas]].",
        "categoriesfrom": "Mussar las categorias davent da:",
-       "special-categories-sort-count": "zavrar tenor dumber",
-       "special-categories-sort-abc": "zavrar alfabeticamain",
        "deletedcontributions": "Contribuziuns d'utilisaders stidadas",
        "deletedcontributions-title": "Contribuziuns dad utilisaders stizzadas",
        "sp-deletedcontributions-contribs": "contribuziuns",
index 8839e66..af03e7f 100644 (file)
        "categories-submit": "Afișează",
        "categoriespagetext": "{{PLURAL:$1|Următoarea categorie conține|Următoarele categorii conțin}} pagini sau fișiere.\n[[Special:UnusedCategories|Categoriile neutilizate]] nu apar aici.\nVedeți și [[Special:WantedCategories|categoriile dorite]].",
        "categoriesfrom": "Arată categoriile pornind de la:",
-       "special-categories-sort-count": "ordonează după număr",
-       "special-categories-sort-abc": "sortează alfabetic",
        "deletedcontributions": "Contribuții șterse",
        "deletedcontributions-title": "Contribuții șterse",
        "sp-deletedcontributions-contribs": "contribuții",
index 2c1c026..f9515d4 100644 (file)
        "categories": "Le Categorije",
        "categoriespagetext": "{{PLURAL:$1|'A seguende categorije tène|Le seguende categorije tènene}} pàggene o media.\n[[Special:UnusedCategories|Categorije non ausate]] non ge se vèdene aqquà.\nVide pure [[Special:WantedCategories|Categorije cercate]].",
        "categoriesfrom": "Fà vedè le categorije partenne da:",
-       "special-categories-sort-count": "ordere pe condegge",
-       "special-categories-sort-abc": "ordere alfabbeticamende",
        "deletedcontributions": "Condrebbute de l'utende scangellete",
        "deletedcontributions-title": "Condrebbute de l'utende scangellate",
        "sp-deletedcontributions-contribs": "condrebbute",
index 3e4d02a..f9316f9 100644 (file)
@@ -89,7 +89,8 @@
                        "Frhdkazan",
                        "Ядерный Трамвай",
                        "Исмаил Садуев",
-                       "Lemondoge"
+                       "Lemondoge",
+                       "SamGold"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "categories-submit": "Показать",
        "categoriespagetext": "{{PLURAL:$1|1=Следующая категория содержит|Следующие категории содержат}} страницы или медиафайлы.\nЗдесь не показаны [[Special:UnusedCategories|неиспользуемые категории]].\nСм. также [[Special:WantedCategories|список требуемых категорий]].",
        "categoriesfrom": "Показать категории, начинающиеся с:",
-       "special-categories-sort-count": "упорядочить по количеству",
-       "special-categories-sort-abc": "упорядочить по алфавиту",
        "deletedcontributions": "Удалённый вклад участника",
        "deletedcontributions-title": "Удалённый вклад",
        "sp-deletedcontributions-contribs": "вклад",
        "sunday-at": "в воскресенье в $1",
        "yesterday-at": "Вчера в $1",
        "bad_image_list": "Формат должен быть следующим:\n\nБудут учитываться только элементы списка (строки, начинающиеся на символ *).\nПервая ссылка строки должна быть ссылкой на запрещённое для вставки изображение.\nПоследующие ссылки в той же строке будут рассматриваться как исключения, то есть статьи, куда изображение может быть включено.",
-       "variantname-zh-hans": "Ð\93анÑ\81",
+       "variantname-zh-hans": "его",
        "metadata": "Метаданные",
        "metadata-help": "Файл содержит дополнительные данные, обычно добавляемые цифровыми камерами или сканерами. Если файл после создания редактировался, то некоторые параметры могут не соответствовать текущему изображению.",
        "metadata-expand": "Показать дополнительные данные",
        "watchlistedit-raw-done": "Ваш список наблюдения сохранён.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Была добавлена|Были добавлены|Было добавлено}} $1 {{PLURAL:$1|запись|записи|записей}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Была удалена|Были удалены|Было удалено}} $1 {{PLURAL:$1|запись|записи|записей}}:",
-       "watchlistedit-clear-title": "Ð\9eÑ\87иÑ\81Ñ\82ка Ñ\81пиÑ\81ка наблюдения",
+       "watchlistedit-clear-title": "Ð\9eÑ\87иÑ\81Ñ\82иÑ\82Ñ\8c Ñ\81пиÑ\81ок наблюдения",
        "watchlistedit-clear-legend": "Очистить список наблюдения",
        "watchlistedit-clear-explain": "Все записи будут удалены из вашего списка наблюдения",
        "watchlistedit-clear-titles": "Заголовки:",
        "log-action-filter-patrol": "Тип патрулирования:",
        "log-action-filter-protect": "Тип защиты:",
        "log-action-filter-rights": "Тип изменения прав",
-       "log-action-filter-suppress": "Тип подавления",
+       "log-action-filter-suppress": "Тип сокрытия",
        "log-action-filter-upload": "Тип загрузки:",
        "log-action-filter-all": "Все",
        "log-action-filter-block-block": "Блокировка",
        "log-action-filter-protect-unprotect": "Снятие защиты",
        "log-action-filter-rights-rights": "Ручное изменение",
        "log-action-filter-rights-autopromote": "Автоматическое изменение",
+       "log-action-filter-suppress-revision": "Сокрытие версии",
+       "log-action-filter-suppress-delete": "Сокрытие страницы",
        "log-action-filter-upload-upload": "Новая загрузка",
        "log-action-filter-upload-overwrite": "Повторно загрузить"
 }
index 03a22c4..60b2992 100644 (file)
        "categories": "Катеґорії",
        "categoriespagetext": "{{PLURAL:$1|Наслїдуюча катеґорія|Наслїдуючі катеґорії}} {{PLURAL:$1|обсягує|обсягують}} сторінкы або файлы.\nНевказаны суть то [[Special:UnusedCategories|нехоснованы катеґорії]].\nПосмотьте ся тыж на [[Special:WantedCategories|жаданы катеґорії]].",
        "categoriesfrom": "Вказати сторінкы, што ся зачінають на:",
-       "special-categories-sort-count": "упорядковати за кількостёв",
-       "special-categories-sort-abc": "упорядковати за алфавітом",
        "deletedcontributions": "Вымазаны приспевкы хоснователя",
        "deletedcontributions-title": "Вымазаны приспевкы хоснователя",
        "sp-deletedcontributions-contribs": "приспевкы",
index ec6b018..52c19c7 100644 (file)
        "categories": "वर्गाः",
        "categoriespagetext": "निम्नोक्ताः {{PLURAL:$1|श्रेणी|श्रेणयः}} पुटानि माध्यमान् वा युक्ताः ।\nयस्याः श्रेण्याः [[Special:UnusedCategories|अप्रयुक्तश्रेण्यः]] अत्र न सन्ति ।\n[[Special:WantedCategories|अपेक्षितश्रेण्यः]] अपि पश्यतु ।",
        "categoriesfrom": "इत्यस्मात् आरभ्यमाणानि पृष्ठानि दर्श्यन्ताम्:",
-       "special-categories-sort-count": "गणनानुगुणं वर्गीकरोतु ।",
-       "special-categories-sort-abc": "अकारदिक्रमेण वर्गीकरोतु ।",
        "deletedcontributions": "अपमर्जितानि योजकयोगदानानि ।",
        "deletedcontributions-title": "अपमर्जितानि योजकयोगदानानि ।",
        "sp-deletedcontributions-contribs": "योगदानानि ।",
index 8af081a..6a155bb 100644 (file)
        "categories-submit": "Көрдөр",
        "categoriespagetext": "Бу {{PLURAL:$1|категория иһигэр|категориялар истэригэр}} сирэйдэр эбэтэр медиа-билэлэр бааллар.\n[[Special:UnusedCategories|Туттуллубат категориялар]] манна көстүбэттэр.\nӨссө маны көр: [[Special:WantedCategories|Баар буолуохтаах категориялар тиһиктэрэ]].",
        "categoriesfrom": "Мантан саҕаланар категориялары көрдөр:",
-       "special-categories-sort-count": "ахсаанынан бэрээдэктээһин",
-       "special-categories-sort-abc": "алпабыытынан бэрээдэктээһин",
        "deletedcontributions": "Сотуллубут көннөрүү",
        "deletedcontributions-title": "Сотуллубут көннөрүү",
        "sp-deletedcontributions-contribs": "киллэриитэ (суруйуута)",
index a7b7256..b50b5b1 100644 (file)
        "categories": "Catigurìi",
        "categoriespagetext": "{{PLURAL:$1|La catigurìa ccassutta cunteni|Li catigurìi ccassutta cuntèninu}} pàggini o file multimidiali.\nLi [[Special:UnusedCategories|catigurìi vacanti]] nun sunnu ammustrati ccà.\nTalìa macari li [[Special:WantedCategories|catigurìi addumannati]].",
        "categoriesfrom": "Ammustra li catigurìi a pàrtiri di:",
-       "special-categories-sort-count": "òrdina pi cuntiggiu",
-       "special-categories-sort-abc": "ordina alfabbeticamenti",
        "deletedcontributions": "Cuntribbuti di l'utenti cancillati",
        "deletedcontributions-title": "Cuntribbuti di l'utenti cancillati",
        "sp-deletedcontributions-contribs": "cuntribbuti",
index 7c2d9a8..4b69dfe 100644 (file)
        "categories": "Categeries",
        "categoriespagetext": "The follaein {{PLURAL:$1|categerie contains|categeries contain}} pages or media.\n[[Special:UnusedCategories|Onuised categeries]] arna shawn here.\nSee [[Special:WantedCategories|wanted categeries]] ava.",
        "categoriesfrom": "Displey categeries stairtin at:",
-       "special-categories-sort-count": "sairt bi coont",
-       "special-categories-sort-abc": "sairt bi the alphabet",
        "deletedcontributions": "Delytit uiser contreebutions",
        "deletedcontributions-title": "Delytit uiser contreebutions",
        "sp-deletedcontributions-contribs": "contreebutions",
index af51492..2488e06 100644 (file)
        "categories": "Dumey",
        "categoriespagetext": "Ne {{PLURAL:$1|dumoo goo nda|dumey  goo nda}} mooyaŋ wala hẽenandi haya.\n[[Special:UnusedCategories|Dumey kaŋ ši goy]] ga cebandi ne.\nDii da [[Special:WantedCategories|dumey kaŋ ga ceecandi]].",
        "categoriesfrom": "Dumey cebe kaŋ ga šintin ne:",
-       "special-categories-sort-count": "fay kabu bande \\",
-       "special-categories-sort-abc": "fay abaca bande",
        "deletedcontributions": "Goykaw kanbuzaama tuusantey",
        "deletedcontributions-title": "Goykaw kanbuzaama tuusantey",
        "sp-deletedcontributions-contribs": "kanbuzaamawey",
index 5ba82dc..26fea82 100644 (file)
        "categories": "Kategorije",
        "categoriespagetext": "{{PLURAL:$1|Slijedeća kategorija sadrži|Slijedeće kategorije sadrže}} stranice ili multimedijalne datoteke.\n[[Special:UnusedCategories|Nekorištene kategorije]] nisu prikazane ovdje.\nVidi također [[Special:WantedCategories|zatražene kategorije]].",
        "categoriesfrom": "Prikaži kategorije počev od:",
-       "special-categories-sort-count": "sortiranje po broju",
-       "special-categories-sort-abc": "sortiraj po abecedi",
        "deletedcontributions": "Obrisani doprinosi korisnika",
        "deletedcontributions-title": "Obrisani doprinosi korisnika",
        "sp-deletedcontributions-contribs": "doprinosi",
index da1a2f1..e4c3484 100644 (file)
        "categories-submit": "පෙන්වන්න",
        "categoriespagetext": "පහත {{PLURAL:$1|ප්‍රවර්ගයෙහි අන්තර්ගතය |ප්‍රවර්ගයන්හි අන්තර්ගතයන්}} වනුයේ පිටු හෝ මාධ්‍යයන්ය.\n[[Special:UnusedCategories|භාවිතනොවූ  ප්‍රවර්ගයන්]] මෙහි පෙන්වා දක්වා නොමැත.\n [[Special:WantedCategories|අවශ්‍ය ප්‍රවර්ගයන්]]ද බලන්න.",
        "categoriesfrom": "මෙහිදී ඇරඹෙන ප්‍රවර්ග පෙන්වන්න:",
-       "special-categories-sort-count": "ගණණය පරිදි  සුබෙදුම",
-       "special-categories-sort-abc": "අකාරාදියේ පිළිවෙලට සකසන්න",
        "deletedcontributions": "මකාදැමූ පරිශීලක දායකත්වයන්",
        "deletedcontributions-title": "මකාදැමූ පරිශීලක දායකත්වයන්",
        "sp-deletedcontributions-contribs": "දායකත්වයන්",
index 2acca9a..1fcafaa 100644 (file)
        "categories-submit": "Zobraziť",
        "categoriespagetext": "{{PLURAL:$1|Nasledovná kategória obsahuje|Nasledovné kategórie obsahujú}} stránky alebo multimediálne súbory.\nNie sú tu zobrazené [[Special:UnusedCategories|nepoužité kategórie]].\nPozri aj [[Special:WantedCategories|žiadané kategórie]].",
        "categoriesfrom": "Zobraziť kategórie počnúc:",
-       "special-categories-sort-count": "zoradiť podľa počtu",
-       "special-categories-sort-abc": "zoradiť podľa abecedy",
        "deletedcontributions": "Zmazané príspevky používateľa",
        "deletedcontributions-title": "Zmazané príspevky používateľa",
        "sp-deletedcontributions-contribs": "príspevky",
index 8115d51..531eb67 100644 (file)
        "categories-submit": "Prikaži",
        "categoriespagetext": "{{PLURAL:$1|Naslednja $1 kategorija vsebuje|Naslednji $1 kategoriji vsebujeta|Naslednje $1 kategorije vsebujejo|Naslednjih $1 kategorij vsebuje}} strani ali datoteke.\n[[Special:UnusedCategories|Neuporabljene kategorije]] niso prikazane.\nGlej tudi [[Special:WantedCategories|želene kategorije]].",
        "categoriesfrom": "Prikaži kategorije, ki se začnejo na:",
-       "special-categories-sort-count": "razvrsti po številu",
-       "special-categories-sort-abc": "razvrsti po abecedi",
        "deletedcontributions": "Izbrisani uporabnikovi prispevki",
        "deletedcontributions-title": "Izbrisani uporabnikovi prispevki",
        "sp-deletedcontributions-contribs": "prispevki",
        "watchlistedit-raw-done": "Vaš spisek nadzorov je bil posodobljen.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Dodana je bila $1 stran|Dodani sta bili $1 strani|Dodane so bile $1 strani|Dodanih je bilo $1 strani}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Odstranjena je bila $1 stran|Odstranjeni sta bili 2 strani|Odstranjene so bile $1 strani|Odstranjenih je bilo $1 strani}}:",
-       "watchlistedit-clear-title": "Čiščenje spiska nadzorov",
+       "watchlistedit-clear-title": "Počisti spisek nadzorov",
        "watchlistedit-clear-legend": "Počistite spisek nadzorov",
        "watchlistedit-clear-explain": "Vse naslove bomo odstranili z vašega spiska nadzorov",
        "watchlistedit-clear-titles": "Naslovi:",
index af4be7f..25e1648 100644 (file)
        "categories": "Kategoria",
        "categoriespagetext": "Fulgende {{PLURAL:$1|Kategorie enthält|Kategorien enthaaln}} Seita oder Dateien.\n[[Special:UnusedCategories|Unbenutzte Kategorien]] waan hier nee uffgefiehrt.\nSiehe au de Liste der [[Special:WantedCategories|gewinschta Kategorien]].",
        "categoriesfrom": "Zeige Kategorien ob:",
-       "special-categories-sort-count": "Sortierung noach Oazoahl",
-       "special-categories-sort-abc": "Sortierung noach Alphabet",
        "deletedcontributions": "Geläschte Beiträge",
        "deletedcontributions-title": "Geläschte Beiträge",
        "linksearch-ns": "Noamensraum:",
index 9cb709b..d17130e 100644 (file)
        "categories": "Kategori",
        "categoriespagetext": "{{PLURAL:$1|kategoria në vijim përmban|kategoritë në vikim përmbajnë}} faqe ose media.\n[[Special:UnusedCategories|Kategoritë e pa përdorura]] nuk janë të paraqitura këtu.\nShikoni edhe [[Special:WantedCategories|kategoritë e dëshiruara]].",
        "categoriesfrom": "Paraqit kategoritë duke filluar në:",
-       "special-categories-sort-count": "radhit sipas numrit",
-       "special-categories-sort-abc": "radhiti sipas alfabetit",
        "deletedcontributions": "Kontribute të grisura",
        "deletedcontributions-title": "Kontribute të grisura",
        "sp-deletedcontributions-contribs": "kontributet",
index 08ef8c6..49d865a 100644 (file)
        "categories-submit": "Прикажи",
        "categoriespagetext": "{{PLURAL:$1|1=Следећа категорија садржи|Следеће категорије садрже}} странице или датотеке.\n[[Special:UnusedCategories|Некоришћене категорије]] нису приказане овде.\nПогледајте и [[Special:WantedCategories|тражене категорије]].",
        "categoriesfrom": "Прикажи категорије почев од:",
-       "special-categories-sort-count": "поређај по броју",
-       "special-categories-sort-abc": "поређај по азбучном реду",
        "deletedcontributions": "Обрисани кориснички доприноси",
        "deletedcontributions-title": "Обрисани кориснички доприноси",
        "sp-deletedcontributions-contribs": "доприноси",
index 46049e9..aa2c828 100644 (file)
        "categories-submit": "Prikaži",
        "categoriespagetext": "{{PLURAL:$1|1=Sledeća kategorija sadrži|Sledeće kategorije sadrže}} stranice ili datoteke.\n[[Special:UnusedCategories|Nekorišćene kategorije]] nisu prikazane ovde.\nPogledajte i [[Special:WantedCategories|tražene kategorije]].",
        "categoriesfrom": "Prikaži kategorije počev od:",
-       "special-categories-sort-count": "poređaj po broju",
-       "special-categories-sort-abc": "poređaj po azbučnom redu",
        "deletedcontributions": "Obrisani korisnički doprinosi",
        "deletedcontributions-title": "Obrisani korisnički doprinosi",
        "sp-deletedcontributions-contribs": "doprinosi",
index 2f3dfcb..0df794d 100644 (file)
        "categories": "Kategorien",
        "categoriespagetext": "Foulgjende {{PLURAL:$1|Kategorie änthoalt|Kategorien änthoolde}} Sieden of Doatäie.\n[[Special:UnusedCategories|Nit benutsede Kategorien]] wäide hier nit apfierd.\nSjuch uk ju Lieste fon do [[Special:WantedCategories|wonskede Kategorien]].",
        "categoriesfrom": "Wies Kategorien siet:",
-       "special-categories-sort-count": "Sortierenge ätter Antaal",
-       "special-categories-sort-abc": "Sortierenge ätter Alphabet",
        "deletedcontributions": "Läskede Benutserbiedraage",
        "deletedcontributions-title": "Läskede Benutserbiedraage",
        "sp-deletedcontributions-contribs": "Benutserbiedraage",
index c5ba9d2..ce6ca9d 100644 (file)
        "categories": "Kategori",
        "categoriespagetext": "{{PLURAL:$1|Kategori|Kategori}} ngandung kaca atawa média.\n[[Special:UnusedCategories|Kategori nu teu kapaké]] henteu ditémbongkeun di dieu.\nBaca ogé [[Special:WantedCategories|kategori nu dipikabutuh]].",
        "categoriesfrom": "Tembongkeun kategori-kategori dimimitian ku:",
-       "special-categories-sort-count": "ngurut numutkeun jumlah",
-       "special-categories-sort-abc": "runtuykeun dumasar abjad",
        "deletedcontributions": "Kontribusi nu dihapus",
        "deletedcontributions-title": "Kontribusi nu dihapus",
        "sp-deletedcontributions-contribs": "kontribusi",
index 44790b3..48b4500 100644 (file)
        "categories-submit": "Visa",
        "categoriespagetext": "Följande {{PLURAL:$1|kategori|kategorier}} innehåller sidor eller media.\n[[Special:UnusedCategories|Oanvända kategorier]] visas inte här.\nSe även [[Special:WantedCategories|önskade kategorier]].",
        "categoriesfrom": "Visa kategorier från och med:",
-       "special-categories-sort-count": "sortera efter storlek",
-       "special-categories-sort-abc": "sortera alfabetiskt",
        "deletedcontributions": "Raderade användarbidrag",
        "deletedcontributions-title": "Raderade användarbidrag",
        "sp-deletedcontributions-contribs": "bidrag",
index 520b8ed..c39fa4e 100644 (file)
        "categories": "Jamii",
        "categoriespagetext": "Jamii {{PLURAL:$1|inayofuata ina|zinazofuata zina}} kurasa au mafaili ya picha au sauti.\n[[Special:UnusedCategories|Jamii zisizotumiwa]] hazitandazwi hapa.\nTazama pia [[Special:WantedCategories|jamii zinazohitajika]].",
        "categoriesfrom": "Tandaza jamii kuanzia na:",
-       "special-categories-sort-count": "panga kwa idadi",
-       "special-categories-sort-abc": "panga kwa herufi",
        "deletedcontributions": "Michango ya mtumiaji aliyefutwa",
        "deletedcontributions-title": "Michango ya mtumiaji aliyefutwa",
        "sp-deletedcontributions-contribs": "michango",
index 686063c..589adc0 100644 (file)
        "categories": "Kategoryje",
        "categoriespagetext": "Zajta przedstowjo lista katygoryji s zajtůma a plikůma.\n[[Special:UnusedCategories|Ńyużywane kategoryj]] ńy zostoły tukej pokozane.\nKukńij tyż [[Special:WantedCategories|ńyistńyjůnce kategoryje]].",
        "categoriesfrom": "Pokož kategoryje začynajůnc uod:",
-       "special-categories-sort-count": "sortowanie wedle ličby",
-       "special-categories-sort-abc": "sortowanie wedle alfabyta",
        "deletedcontributions": "Wyćepane sprowjyńa użytkowńika",
        "deletedcontributions-title": "Wyćepane sprowjyńa użytkowńika",
        "linksearch": "Necowe uodwołańa",
index be89848..ddb6571 100644 (file)
        "categories-submit": "காட்டு",
        "categoriespagetext": "கீழே கொடுத்துள்ள பக்கங்கள் அல்லது ஊடகங்கள் இந்த {{PLURAL:$1|பகுப்பை|பகுப்புக்களை}} கொண்டுள்ளது.\n[[Special:UnusedCategories|உபயோகப்படுத்தப்படாத  பகுப்புகள்]] இங்கே காண்பிக்கப்படவில்லை.\nஇத்துடன் [[Special:WantedCategories|தேவைப்படும் பகுப்புகளையும்]] பார்க்கவும்.",
        "categoriesfrom": "இதில் தொடங்கும் பகுப்புக்களைக் காட்டவும்:",
-       "special-categories-sort-count": "எண்ணிக்கையின் படி ஒழுங்குப் படுத்துக",
-       "special-categories-sort-abc": "அகரவரிசைப்படி ஒழுங்குப் படுத்துக",
        "deletedcontributions": "பயனரின் நீக்கப்பட்ட பங்களிப்புகள்",
        "deletedcontributions-title": "பயனரின நீக்கப்பட்ட பங்களிப்புக்கள்",
        "sp-deletedcontributions-contribs": "பங்களிப்புக்கள்",
index f818cf0..4f5de01 100644 (file)
        "categories-submit": "చూపించు",
        "categoriespagetext": "ఈ క్రింది {{PLURAL:$1|వర్గం పేజీలను లేదా మాధ్యమాలను కలిగివుంది|వర్గాలు పేజీలను లేదా మాధ్యమాలను కలిగివున్నాయి}}.\n[[Special:UnusedCategories|వాడుకలో లేని వర్గాలని]] ఇక్కడ చూపించట్లేదు.\n[[Special:WantedCategories|కోరుతున్న వర్గాలను]] కూడా చూడండి.",
        "categoriesfrom": "ఇక్కడనుండి మొదలుకొని వర్గాలు చూపించు:",
-       "special-categories-sort-count": "సంఖ్యల ప్రకారం క్రమపరచు",
-       "special-categories-sort-abc": "అకారాది క్రమంలో అమర్చు",
        "deletedcontributions": "తొలగించబడిన వాడుకరి రచనలు",
        "deletedcontributions-title": "తొలగించబడిన వాడుకరి రచనలు",
        "sp-deletedcontributions-contribs": "మార్పుచేర్పులు",
index 1cab845..70b9b62 100644 (file)
        "categories": "Гурӯҳҳо",
        "categoriespagetext": "Гурӯҳҳои зерин дар вики вуҷуд доранд.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
        "categoriesfrom": "Намоиши гурӯҳҳо бо шурӯъ аз:",
-       "special-categories-sort-count": "муратаб кардан бар асоси теъдод",
-       "special-categories-sort-abc": "муратаб кардани алифбоӣ",
        "deletedcontributions": "Ҳиссагузориҳои ҳазфшудаи корбар",
        "deletedcontributions-title": "Ҳиссагузориҳои ҳазфшудаи корбар",
        "linksearch": "Ҷустуҷӯи пайвандҳои беруна",
index a66b17c..981c7ca 100644 (file)
        "allpages-bad-ns": "{{SITENAME}} doroi fazoinom \"$1\" nest.",
        "categories": "Gurūhho",
        "categoriesfrom": "Namoişi gurūhho bo şurū' az:",
-       "special-categories-sort-count": "muratab kardan bar asosi te'dod",
-       "special-categories-sort-abc": "muratab kardani alifboī",
        "deletedcontributions": "Hissaguzorihoi hazfşudai korbar",
        "deletedcontributions-title": "Hissaguzorihoi hazfşudai korbar",
        "linksearch": "Pajvandhoi beruna",
index d9f72bc..c81200a 100644 (file)
        "categories-submit": "แสดง",
        "categoriespagetext": "{{PLURAL:$1|หมวดหมู่นี้|หมวดหมู่ต่อไปนี้}}มีหน้าหรือสื่อต่าง ๆ\n[[Special:UnusedCategories|หมวดหมู่ที่ไม่ได้ใช้]]จะไม่แสดงในที่นี้\nดูเพิ่มที่ [[Special:WantedCategories|หมวดหมู่ที่ต้องการ]]",
        "categoriesfrom": "แสดงหมวดหมู่เริ่มจาก:",
-       "special-categories-sort-count": "เรียงตามจำนวน",
-       "special-categories-sort-abc": "เรียงตามตัวอักษร",
        "deletedcontributions": "เรื่องที่เขียนของผู้ใช้ที่ถูกลบ",
        "deletedcontributions-title": "เรื่องที่เขียนของผู้ใช้ที่ถูกลบ",
        "sp-deletedcontributions-contribs": "เรื่องที่เขียน",
index 0551208..590dbe2 100644 (file)
        "categories": "Kategoriýalar",
        "categoriespagetext": "Aşakdaky {{PLURAL:$1|kategoriýada|kategoriýalarda}} sahypa ýa-da media faýllary bardyr.\n[[Special:UnusedCategories|Ulanylmaýan kategoriýalar]] şu ýerde görkezilmeýär.\nŞeýle-de [[Special:WantedCategories|Talap edilýän kategoriýalara]] serediň.",
        "categoriesfrom": "Şunuň bilen başlaýan kategoriýalary görkez:",
-       "special-categories-sort-count": "mukdar boýunça tertiple",
-       "special-categories-sort-abc": "elipbiý boýunça tertiple",
        "deletedcontributions": "Öçürilen ulanyjy goşantlary",
        "deletedcontributions-title": "Öçürilen ulanyjy goşantlary",
        "sp-deletedcontributions-contribs": "goşantlar",
index 6e622a8..ca3e47b 100644 (file)
        "categories": "Mga kategorya",
        "categoriespagetext": "Naglalaman ang sumusunod na {{PLURAL:$1|kategorya|mga kategorya}} ng mga pahina o midya.\nHindi ipinapakita rito ang [[Special:UnusedCategories|mga kategoryang hindi ginagamit]].\nTingnan din ang [[Special:WantedCategories|ninanais na mga kategorya]].",
        "categoriesfrom": "Ipakita ang mga kategoryang nagsisimula sa:",
-       "special-categories-sort-count": "ayusin sa pamamagitan ng bilang",
-       "special-categories-sort-abc": "ayusin sa pamamagitan ng alpabeto",
        "deletedcontributions": "Naburang ambag ng tagagamit",
        "deletedcontributions-title": "Naburang ambag ng tagagamit",
        "sp-deletedcontributions-contribs": "mga ambag",
index 99c695f..9bc092e 100644 (file)
        "categories-submit": "Göster",
        "categoriespagetext": "Aşağıdaki {{PLURAL:$1|kategori|kategoriler}} sayfa veya ortam içerir.\n[[Special:UnusedCategories|Kullanılmayan kategoriler]] burada gösterilmemektedir.\nAyrıca [[Special:WantedCategories|İstenen kategoriler]]'e bakınız.",
        "categoriesfrom": "Şununla başlayan kategorileri görüntüle:",
-       "special-categories-sort-count": "sayılarına göre sırala",
-       "special-categories-sort-abc": "alfabetik olarak sırala",
        "deletedcontributions": "Kullanıcının silinen katkıları",
        "deletedcontributions-title": "Kullanıcının silinen katkıları",
        "sp-deletedcontributions-contribs": "katkılar",
index 60e69e3..3bf57f7 100644 (file)
        "categories": "Төркемнәр",
        "categories-submit": "Күрсәт",
        "categoriespagetext": "{{PLURAL:$1|1=Әлеге төркем үз өченә|Әлеге төркемнәр  үз өченә}}   битләрне һәм медиа-файлларны ала.\nАста [[Special:UnusedCategories|кулланылмаган төркемнәр]] кәрсәтелгән.\nШулай ук  [[Special:WantedCategories|кирәкле төркемнәр исемлегендә]] карагыз.",
-       "special-categories-sort-count": "исәп буенча тәртипләү",
-       "special-categories-sort-abc": "әлифба буенча тәртипләү",
        "deletedcontributions": "Кулланучының бетерелгән кертеме",
        "deletedcontributions-title": "Бетерелгән кертем",
        "sp-deletedcontributions-contribs": "кертем",
index 87298ce..2461405 100644 (file)
        "allpagesprefix": "Alquşımçalı bitlärne kürsätü:",
        "categories": "Törkemnär",
        "categoriespagetext": "{{PLURAL:$1|Älege törkem üz öçenä|Älege törkemnär  üz öçenä}}   bitlärne häm media-fayllarnı ala.\nAsta [[Special:UnusedCategories|qullanılmağan törkemnär]] kärsätelgän.\nŞulay uq  [[Special:WantedCategories|kiräkle törkemnär isemlegendä]] qarağız.",
-       "special-categories-sort-count": "isäp buyınça tärtipläw",
-       "special-categories-sort-abc": "älifba buyınça tärtipläw",
        "sp-deletedcontributions-contribs": "kertem",
        "linksearch": "Tışqı sıltamalar",
        "linksearch-pat": "Ezläw öçen ürnäk:",
index 7a83b30..ae20f1d 100644 (file)
        "categories": "تۈرلەر",
        "categoriespagetext": "تۆۋەندىكى {{PLURAL:$1|كاتېگورىيە|كاتېگورىيە}}دە بەت ياكى ۋاسىتە بار.\n[[Special:UnusedCategories|ئىشلىتىلمىگەن كاتېگورىيە]] بۇ جايدا كۆرسىتىلمەيدۇ.\nشۇنىڭ بىلەن بىللە [[Special:WantedCategories|لازىملىق كاتېگورىيە]] نى كۆرۈڭ.",
        "categoriesfrom": "بۇ كاتېگورىيەدىن باشلانغاننى كۆرسەت:",
-       "special-categories-sort-count": "سانى بويىچە تەرتىپلە",
-       "special-categories-sort-abc": "ئېلىپبە بويىچە تەرتىپلە",
        "deletedcontributions": "ئۆچۈرۈلگەن ئىشلەتكۈچى تۆھپىسى",
        "deletedcontributions-title": "ئۆچۈرۈلگەن ئىشلەتكۈچى تۆھپىسى",
        "sp-deletedcontributions-contribs": "تۆھپە",
index 8874c81..9e1f36c 100644 (file)
        "categories-submit": "Показати",
        "categoriespagetext": "{{PLURAL:$1|1=Наступна категорія містить|Наступні категорії містять}} сторінки або медіа-файли.\nТут не показані [[Special:UnusedCategories|категорії, що не використовуються]].\nДив. також [[Special:WantedCategories|список необхідних категорій]].",
        "categoriesfrom": "Показати категорії, що починаються з:",
-       "special-categories-sort-count": "упорядкувати за кількістю",
-       "special-categories-sort-abc": "упорядкувати за алфавітом",
        "deletedcontributions": "Вилучений внесок користувача",
        "deletedcontributions-title": "Вилучений внесок користувача",
        "sp-deletedcontributions-contribs": "внесок",
index 4c0eb62..5bcc052 100644 (file)
        "categories": "Categorie",
        "categoriespagetext": "{{PLURAL:$1|Sta categoria qua soto la|Ste categorie qua soto le}} gà drento pagine o file multimediài.\nLe [[Special:UnusedCategories|categorie mìa doparà]] no le vien mìa fate védar.\nVarda anca le [[Special:WantedCategories|categorie domandà]].",
        "categoriesfrom": "Mostra le categorie tacando da :",
-       "special-categories-sort-count": "ordina par nùmaro",
-       "special-categories-sort-abc": "ordina alfabeticamente",
        "deletedcontributions": "Contributi utente scancelà",
        "deletedcontributions-title": "Contributi utente scancelà",
        "sp-deletedcontributions-contribs": "contributi",
index 5419b68..2b12101 100644 (file)
        "categories": "Kategorijad",
        "categoriespagetext": "{{PLURAL:$1|Neciš kategorijas|Neniš kategorijoiš }} om lehtpolid vai mediafailoid.\n[[Special:UnusedCategories|Kävumatomid kategorijoid]] ei ozutagoi naku.\nKc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].",
        "categoriesfrom": "Ozutada kategorijad, necišpäi augotaden:",
-       "special-categories-sort-count": "järgeta lugumäran mödhe",
-       "special-categories-sort-abc": "järgeta kirjamišton mödhe",
        "deletedcontributions": "Čutud tond",
        "deletedcontributions-title": "Čutud tond",
        "sp-deletedcontributions-contribs": "tond",
index 1f5e787..d788a2f 100644 (file)
        "categories-submit": "Xem",
        "categoriespagetext": "{{PLURAL:$1|Thể loại|Các thể loại}} dưới đây có trang hoặc tập tin phương tiện.\nNhững [[Special:UnusedCategories|thể loại trống]] không được hiển thị tại đây.\nXem thêm [[Special:WantedCategories|thể loại cần thiết]].",
        "categoriesfrom": "Hiển thị thể loại bằng đầu từ:",
-       "special-categories-sort-count": "xếp theo số trang",
-       "special-categories-sort-abc": "xếp theo vần",
        "deletedcontributions": "Đóng góp đã bị xóa của thành viên",
        "deletedcontributions-title": "Đóng góp đã bị xóa của thành viên",
        "sp-deletedcontributions-contribs": "đóng góp",
index 0040d0a..998e2c5 100644 (file)
        "categories": "Klads",
        "categoriespagetext": "Klads sököl labons padis u ragivis.\n[[Special:UnusedCategories|Klads no pageböls]] no pajonons is.\nLogolös i [[Special:WantedCategories|klads pevilöl]].",
        "categoriesfrom": "Jonön padis primölo de:",
-       "special-categories-sort-count": "leodükön ma num",
-       "special-categories-sort-abc": "leodükön ma lafab",
        "deletedcontributions": "Gebanakeblünots pemoüköl",
        "deletedcontributions-title": "Gebanakeblünots pemoüköl",
        "sp-deletedcontributions-contribs": "keblünots",
index 1bee54e..ef1552c 100644 (file)
        "categories-submit": "ווייזן",
        "categoriespagetext": "די פֿאלגענדע {{PLURAL:$1| קאַטעגאָריע אַנטהאַלט|קאַטעגאָריעס אַנטהאַלטן}} בלעטער אדער מעדיע.\n[[Special:UnusedCategories|אומבאַניצטע קאַטעגאריעס]] זענען נישט געוויזן דא.\nזעט אויך [[Special:WantedCategories|געזוכטע קאַטעגאריעס]].",
        "categoriesfrom": "ווײַזן קאַטעגאריעס אָנהייבנדיג פֿון:",
-       "special-categories-sort-count": "סארטיר לויטן צאל בלעטער",
-       "special-categories-sort-abc": "סארטירן אַלפֿאַבעטיש",
        "deletedcontributions": "אויסגעמעקטע באַניצער בײַשטײַערונגען",
        "deletedcontributions-title": "אויסגעמעקטע באַניצער בײַשטײַערונגען",
        "sp-deletedcontributions-contribs": "בײַשטײַערונגען",
index 37ec5b6..3b75367 100644 (file)
        "categories": "Àwọn ẹ̀ka",
        "categoriespagetext": "{{PLURAL:$1|Ẹ̀ka|Àwọn ẹ̀ka}} yìí ní ojúewé tàbí amóhùnmáwòrán.\n[[Special:UnusedCategories|Àwọn ẹ̀ka aláìlò]] kò hàn níbí.\nBákannáà ẹ wo [[Special:WantedCategories|àwọn ẹ̀ka wíwá]].",
        "categoriesfrom": "Ìfihàn àwọn ẹ̀ka nípa bíbẹ̀rẹ̀ láti:",
-       "special-categories-sort-count": "títò bíi nọ́mbà",
-       "special-categories-sort-abc": "títò bíi lẹ́tà",
        "deletedcontributions": "Àwọn àfikún píparẹ́ oníṣe",
        "deletedcontributions-title": "Àwọn àfikún píparẹ́ oníṣe",
        "sp-deletedcontributions-contribs": "àwọn àfikún",
index d0e45e5..1e1cd61 100644 (file)
        "categories": "類",
        "categoriespagetext": "下面嘅{{PLURAL:$1|類}}有版或媒體。\n[[Special:UnusedCategories|未用類]]唔會響呢度列示。\n請同時參閱[[Special:WantedCategories|需要嘅分類]]。",
        "categoriesfrom": "顯示由呢項起嘅類:",
-       "special-categories-sort-count": "跟數量排",
-       "special-categories-sort-abc": "跟字母排",
        "deletedcontributions": "已經刪除咗嘅用戶貢獻",
        "deletedcontributions-title": "已經刪除咗嘅用戶貢獻",
        "sp-deletedcontributions-contribs": "貢獻",
index 010d4d1..89972ed 100644 (file)
        "categories-submit": "显示",
        "categoriespagetext": "以下{{PLURAL:$1|分类包含}}页面或媒体文件。[[Special:UnusedCategories|未使用分类]]不在这里显示。另请见[[Special:WantedCategories|需要的分类]]。",
        "categoriesfrom": "显示分类开始于:",
-       "special-categories-sort-count": "按数量排列",
-       "special-categories-sort-abc": "按字母排列",
        "deletedcontributions": "被删除的用户贡献",
        "deletedcontributions-title": "被删除的用户贡献",
        "sp-deletedcontributions-contribs": "贡献",
index e503637..c3e5aaa 100644 (file)
        "categories-submit": "顯示",
        "categoriespagetext": "下列為包含頁面或媒體的{{PLURAL:$1|分類}}。\n[[Special:UnusedCategories|未使用的分類]] 不會在此顯示。\n請參考 [[Special:WantedCategories|需要的分類]]。",
        "categoriesfrom": "顯示分類開始於:",
-       "special-categories-sort-count": "依數量排列",
-       "special-categories-sort-abc": "依字母排列",
        "deletedcontributions": "已刪除的使用者貢獻",
        "deletedcontributions-title": "已刪除的使用者貢獻",
        "sp-deletedcontributions-contribs": "貢獻",
index b50825a..6465bb3 100644 (file)
@@ -31,18 +31,46 @@ require_once __DIR__ . '/Maintenance.php';
  * @ingroup Maintenance
  */
 class RebuildRecentchanges extends Maintenance {
+       /** @var integer UNIX timestamp */
+       private $cutoffFrom;
+       /** @var integer UNIX timestamp */
+       private $cutoffTo;
+
        public function __construct() {
                parent::__construct();
                $this->addDescription( 'Rebuild recent changes' );
+
+               $this->addOption(
+                       'from',
+                       "Only rebuild rows in requested time range (in YYYYMMDDHHMMSS format)",
+                       false,
+                       true
+               );
+               $this->addOption(
+                       'to',
+                       "Only rebuild rows in requested time range (in YYYYMMDDHHMMSS format)",
+                       false,
+                       true
+               );
+               $this->setBatchSize( 200 );
        }
 
        public function execute() {
+               if (
+                       ( $this->hasOption( 'from' ) && !$this->hasOption( 'to' ) ) ||
+                       ( !$this->hasOption( 'from' ) && $this->hasOption( 'to' ) )
+               ) {
+                       $this->error( "Both 'from' and 'to' must be given, or neither", 1 );
+               }
+
                $this->rebuildRecentChangesTablePass1();
                $this->rebuildRecentChangesTablePass2();
                $this->rebuildRecentChangesTablePass3();
                $this->rebuildRecentChangesTablePass4();
                $this->rebuildRecentChangesTablePass5();
-               $this->purgeFeeds();
+               if ( !( $this->hasOption( 'from' ) && $this->hasOption( 'to' ) ) ) {
+                       $this->purgeFeeds();
+               }
                $this->output( "Done.\n" );
        }
 
@@ -52,51 +80,93 @@ class RebuildRecentchanges extends Maintenance {
        private function rebuildRecentChangesTablePass1() {
                $dbw = $this->getDB( DB_MASTER );
 
-               $dbw->delete( 'recentchanges', '*' );
+               if ( $this->hasOption( 'from' ) && $this->hasOption( 'to' ) ) {
+                       $this->cutoffFrom = wfTimestamp( TS_UNIX, $this->getOption( 'from' ) );
+                       $this->cutoffTo = wfTimestamp( TS_UNIX, $this->getOption( 'to' ) );
 
-               $this->output( "Loading from page and revision tables...\n" );
+                       $sec = $this->cutoffTo - $this->cutoffFrom;
+                       $days = $sec / 24 / 3600;
+                       $this->output( "Rebuilding range of $sec seconds ($days days)\n" );
+               } else {
+                       global $wgRCMaxAge;
 
-               global $wgRCMaxAge;
+                       $days = $wgRCMaxAge / 24 / 3600;
+                       $this->output( "Rebuilding \$wgRCMaxAge=$wgRCMaxAge seconds ($days days)\n" );
 
-               $this->output( '$wgRCMaxAge=' . $wgRCMaxAge );
-               $days = $wgRCMaxAge / 24 / 3600;
-               if ( intval( $days ) == $days ) {
-                       $this->output( " (" . $days . " days)\n" );
-               } else {
-                       $this->output( " (approx. " . intval( $days ) . " days)\n" );
+                       $this->cutoffFrom = time() - $wgRCMaxAge;
+                       $this->cutoffTo = time();
+               }
+
+               $this->output( "Clearing recentchanges table for time range...\n" );
+               $rcids = $dbw->selectFieldValues(
+                       'recentchanges',
+                       'rc_id',
+                       [
+                               'rc_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+                               'rc_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) )
+                       ]
+               );
+               foreach ( array_chunk( $rcids, $this->mBatchSize ) as $rcidBatch ) {
+                       $dbw->delete( 'recentchanges', [ 'rc_id' => $rcidBatch ], __METHOD__ );
+                       wfGetLBFactory()->waitForReplication();
                }
 
-               $cutoff = time() - $wgRCMaxAge;
-               $dbw->insertSelect( 'recentchanges', [ 'page', 'revision' ],
+               $this->output( "Loading from page and revision tables...\n" );
+               $res = $dbw->select(
+                       [ 'page', 'revision' ],
                        [
-                               'rc_timestamp' => 'rev_timestamp',
-                               'rc_user' => 'rev_user',
-                               'rc_user_text' => 'rev_user_text',
-                               'rc_namespace' => 'page_namespace',
-                               'rc_title' => 'page_title',
-                               'rc_comment' => 'rev_comment',
-                               'rc_minor' => 'rev_minor_edit',
-                               'rc_bot' => 0,
-                               'rc_new' => 'page_is_new',
-                               'rc_cur_id' => 'page_id',
-                               'rc_this_oldid' => 'rev_id',
-                               'rc_last_oldid' => 0, // is this ok?
-                               'rc_type' => $dbw->conditional( 'page_is_new != 0', RC_NEW, RC_EDIT ),
-                               'rc_source' => $dbw->conditional(
-                                               'page_is_new != 0',
-                                               $dbw->addQuotes( RecentChange::SRC_NEW ),
-                                               $dbw->addQuotes( RecentChange::SRC_EDIT )
-                               ),
-                               'rc_deleted' => 'rev_deleted'
+                               'rev_timestamp',
+                               'rev_user',
+                               'rev_user_text',
+                               'rev_comment',
+                               'rev_minor_edit',
+                               'rev_id',
+                               'rev_deleted',
+                               'page_namespace',
+                               'page_title',
+                               'page_is_new',
+                               'page_id'
                        ],
                        [
-                               'rev_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $cutoff ) ),
+                               'rev_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+                               'rev_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ),
                                'rev_page=page_id'
                        ],
                        __METHOD__,
-                       [], // INSERT options
-                       [ 'ORDER BY' => 'rev_timestamp DESC', 'LIMIT' => 5000 ] // SELECT options
+                       [ 'ORDER BY' => 'rev_timestamp DESC' ]
                );
+
+               $this->output( "Inserting from page and revision tables...\n" );
+               $inserted = 0;
+               foreach ( $res as $row ) {
+                       $dbw->insert(
+                               'recentchanges',
+                               [
+                                       'rc_timestamp' => $row->rev_timestamp,
+                                       'rc_user' => $row->rev_user,
+                                       'rc_user_text' => $row->rev_user_text,
+                                       'rc_namespace' => $row->page_namespace,
+                                       'rc_title' => $row->page_title,
+                                       'rc_comment' => $row->rev_comment,
+                                       'rc_minor' => $row->rev_minor_edit,
+                                       'rc_bot' => 0,
+                                       'rc_new' => $row->page_is_new,
+                                       'rc_cur_id' => $row->page_id,
+                                       'rc_this_oldid' => $row->rev_id,
+                                       'rc_last_oldid' => 0, // is this ok?
+                                       'rc_type' => $row->page_is_new ? RC_NEW : RC_EDIT,
+                                       'rc_source' => $row->page_is_new
+                                               ? $dbw->addQuotes( RecentChange::SRC_NEW )
+                                               : $dbw->addQuotes( RecentChange::SRC_EDIT )
+                                       ,
+                                       'rc_deleted' => $row->rev_deleted
+                               ],
+                               __METHOD__
+                       );
+                       if ( ( ++$inserted % $this->mBatchSize ) == 0 ) {
+                               wfGetLBFactory()->waitForReplication();
+                       }
+               }
        }
 
        /**
@@ -105,29 +175,40 @@ class RebuildRecentchanges extends Maintenance {
         */
        private function rebuildRecentChangesTablePass2() {
                $dbw = $this->getDB( DB_MASTER );
-               list( $recentchanges, $revision ) = $dbw->tableNamesN( 'recentchanges', 'revision' );
 
                $this->output( "Updating links and size differences...\n" );
 
                # Fill in the rc_last_oldid field, which points to the previous edit
-               $sql = "SELECT rc_cur_id,rc_this_oldid,rc_timestamp FROM $recentchanges " .
-                       "ORDER BY rc_cur_id,rc_timestamp";
-               $res = $dbw->query( $sql, DB_MASTER );
+               $res = $dbw->select(
+                       'recentchanges',
+                       [ 'rc_cur_id', 'rc_this_oldid', 'rc_timestamp' ],
+                       [
+                               "rc_timestamp > " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+                               "rc_timestamp < " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) )
+                       ],
+                       __METHOD__,
+                       [ 'ORDER BY' => 'rc_cur_id,rc_timestamp' ]
+               );
 
                $lastCurId = 0;
                $lastOldId = 0;
+               $lastSize = null;
+               $updated = 0;
                foreach ( $res as $obj ) {
                        $new = 0;
+
                        if ( $obj->rc_cur_id != $lastCurId ) {
                                # Switch! Look up the previous last edit, if any
                                $lastCurId = intval( $obj->rc_cur_id );
                                $emit = $obj->rc_timestamp;
-                               $sql2 = "SELECT rev_id,rev_len FROM $revision " .
-                                       "WHERE rev_page={$lastCurId} " .
-                                       "AND rev_timestamp<'{$emit}' ORDER BY rev_timestamp DESC";
-                               $sql2 = $dbw->limitResult( $sql2, 1, false );
-                               $res2 = $dbw->query( $sql2 );
-                               $row = $dbw->fetchObject( $res2 );
+
+                               $row = $dbw->selectRow(
+                                       'revision',
+                                       [ 'rev_id', 'rev_len' ],
+                                       [ 'rev_page' => $lastCurId, "rev_timestamp < " . $dbw->addQuotes( $emit ) ],
+                                       __METHOD__,
+                                       [ 'ORDER BY' => 'rev_timestamp DESC' ]
+                               );
                                if ( $row ) {
                                        $lastOldId = intval( $row->rev_id );
                                        # Grab the last text size if available
@@ -139,29 +220,44 @@ class RebuildRecentchanges extends Maintenance {
                                        $new = 1; // probably true
                                }
                        }
+
                        if ( $lastCurId == 0 ) {
                                $this->output( "Uhhh, something wrong? No curid\n" );
                        } else {
                                # Grab the entry's text size
-                               $size = $dbw->selectField( 'revision', 'rev_len', [ 'rev_id' => $obj->rc_this_oldid ] );
+                               $size = (int)$dbw->selectField(
+                                       'revision',
+                                       'rev_len',
+                                       [ 'rev_id' => $obj->rc_this_oldid ],
+                                       __METHOD__
+                               );
 
-                               $dbw->update( 'recentchanges',
+                               $dbw->update(
+                                       'recentchanges',
                                        [
                                                'rc_last_oldid' => $lastOldId,
                                                'rc_new' => $new,
-                                               'rc_type' => $new,
-                                               'rc_source' => $new === 1 ? RecentChange::SRC_NEW : RecentChange::SRC_EDIT,
+                                               'rc_type' => $new ? RC_NEW : RC_EDIT,
+                                               'rc_source' => $new === 1
+                                                       ? $dbw->addQuotes( RecentChange::SRC_NEW )
+                                                       : $dbw->addQuotes( RecentChange::SRC_EDIT ),
                                                'rc_old_len' => $lastSize,
                                                'rc_new_len' => $size,
-                                       ], [
+                                       ],
+                                       [
                                                'rc_cur_id' => $lastCurId,
                                                'rc_this_oldid' => $obj->rc_this_oldid,
+                                               'rc_timestamp' => $obj->rc_timestamp // index usage
                                        ],
                                        __METHOD__
                                );
 
                                $lastOldId = intval( $obj->rc_this_oldid );
                                $lastSize = $size;
+
+                               if ( ( ++$updated % $this->mBatchSize ) == 0 ) {
+                                       wfGetLBFactory()->waitForReplication();
+                               }
                        }
                }
        }
@@ -170,94 +266,141 @@ class RebuildRecentchanges extends Maintenance {
         * Rebuild pass 3: Insert `recentchanges` entries for action logs.
         */
        private function rebuildRecentChangesTablePass3() {
+               global $wgLogTypes, $wgLogRestrictions;
+
                $dbw = $this->getDB( DB_MASTER );
 
                $this->output( "Loading from user, page, and logging tables...\n" );
 
-               global $wgRCMaxAge, $wgLogTypes, $wgLogRestrictions;
-               // Some logs don't go in RC. This should check for that
-               $basicRCLogs = array_diff( $wgLogTypes, array_keys( $wgLogRestrictions ) );
-
-               $cutoff = time() - $wgRCMaxAge;
-               list( $logging, $page ) = $dbw->tableNamesN( 'logging', 'page' );
-               $dbw->insertSelect(
-                       'recentchanges',
-                       [
-                               'user',
-                               "$logging LEFT JOIN $page ON (log_namespace=page_namespace AND log_title=page_title)"
-                       ],
+               $res = $dbw->select(
+                       [ 'user', 'logging', 'page' ],
                        [
-                               'rc_timestamp' => 'log_timestamp',
-                               'rc_user' => 'log_user',
-                               'rc_user_text' => 'user_name',
-                               'rc_namespace' => 'log_namespace',
-                               'rc_title' => 'log_title',
-                               'rc_comment' => 'log_comment',
-                               'rc_minor' => 0,
-                               'rc_bot' => 0,
-                               'rc_patrolled' => 1,
-                               'rc_new' => 0,
-                               'rc_this_oldid' => 0,
-                               'rc_last_oldid' => 0,
-                               'rc_type' => RC_LOG,
-                               'rc_source' => $dbw->addQuotes( RecentChange::SRC_LOG ),
-                               'rc_cur_id' => $dbw->cascadingDeletes() ? 'page_id' : 'COALESCE(page_id, 0)',
-                               'rc_log_type' => 'log_type',
-                               'rc_log_action' => 'log_action',
-                               'rc_logid' => 'log_id',
-                               'rc_params' => 'log_params',
-                               'rc_deleted' => 'log_deleted'
+                               'log_timestamp',
+                               'log_user',
+                               'user_name',
+                               'log_namespace',
+                               'log_title',
+                               'log_comment',
+                               'page_id',
+                               'log_type',
+                               'log_action',
+                               'log_id',
+                               'log_params',
+                               'log_deleted'
                        ],
                        [
-                               'log_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $cutoff ) ),
+                               'log_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+                               'log_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ),
                                'log_user=user_id',
-                               'log_type' => $basicRCLogs,
+                               // Some logs don't go in RC since they are private.
+                               // @FIXME: core/extensions also have spammy logs that don't go in RC.
+                               'log_type' => array_diff( $wgLogTypes, array_keys( $wgLogRestrictions ) ),
                        ],
                        __METHOD__,
-                       [], // INSERT options
-                       [ 'ORDER BY' => 'log_timestamp DESC', 'LIMIT' => 5000 ] // SELECT options
+                       [ 'ORDER BY' => 'log_timestamp DESC' ],
+                       [
+                               'page' =>
+                                       [ 'LEFT JOIN', [ 'log_namespace=page_namespace', 'log_title=page_title' ] ]
+                       ]
                );
+
+               $inserted = 0;
+               foreach ( $res as $row ) {
+                       $dbw->insert(
+                               'recentchanges',
+                               [
+                                       'rc_timestamp' => $row->log_timestamp,
+                                       'rc_user' => $row->log_user,
+                                       'rc_user_text' => $row->user_name,
+                                       'rc_namespace' => $row->log_namespace,
+                                       'rc_title' => $row->log_title,
+                                       'rc_comment' => $row->log_comment,
+                                       'rc_minor' => 0,
+                                       'rc_bot' => 0,
+                                       'rc_patrolled' => 1,
+                                       'rc_new' => 0,
+                                       'rc_this_oldid' => 0,
+                                       'rc_last_oldid' => 0,
+                                       'rc_type' => RC_LOG,
+                                       'rc_source' => $dbw->addQuotes( RecentChange::SRC_LOG ),
+                                       'rc_cur_id' => $dbw->cascadingDeletes()
+                                               ? $row->page_id
+                                               : (int)$row->page_id, // NULL => 0,
+                                       'rc_log_type' => $row->log_type,
+                                       'rc_log_action' => $row->log_action,
+                                       'rc_logid' => $row->log_id,
+                                       'rc_params' => $row->log_params,
+                                       'rc_deleted' => $row->log_deleted
+                               ],
+                               __METHOD__
+                       );
+
+                       if ( ( ++$inserted % $this->mBatchSize ) == 0 ) {
+                               wfGetLBFactory()->waitForReplication();
+                       }
+               }
        }
 
        /**
         * Rebuild pass 4: Mark bot and autopatrolled entries.
         */
        private function rebuildRecentChangesTablePass4() {
-               global $wgUseRCPatrol;
+               global $wgUseRCPatrol, $wgMiserMode;
 
                $dbw = $this->getDB( DB_MASTER );
 
                list( $recentchanges, $usergroups, $user ) =
                        $dbw->tableNamesN( 'recentchanges', 'user_groups', 'user' );
 
-               $botgroups = User::getGroupsWithPermission( 'bot' );
+               # @FIXME: recognize other bot account groups (not the same as users with 'bot' rights)
+               # @NOTE: users with 'bot' rights choose when edits are bot edits or not. That information
+               # may be lost at this point (aside from joining on the patrol log table entries).
+               $botgroups = [ 'bot' ];
                $autopatrolgroups = $wgUseRCPatrol ? User::getGroupsWithPermission( 'autopatrol' ) : [];
+
                # Flag our recent bot edits
-               if ( !empty( $botgroups ) ) {
+               if ( $botgroups ) {
                        $botwhere = $dbw->makeList( $botgroups );
-                       $botusers = [];
 
                        $this->output( "Flagging bot account edits...\n" );
 
                        # Find all users that are bots
                        $sql = "SELECT DISTINCT user_name FROM $usergroups, $user " .
                                "WHERE ug_group IN($botwhere) AND user_id = ug_user";
-                       $res = $dbw->query( $sql, DB_MASTER );
+                       $res = $dbw->query( $sql, __METHOD__ );
 
+                       $botusers = [];
                        foreach ( $res as $obj ) {
-                               $botusers[] = $dbw->addQuotes( $obj->user_name );
+                               $botusers[] = $obj->user_name;
                        }
+
                        # Fill in the rc_bot field
-                       if ( !empty( $botusers ) ) {
-                               $botwhere = implode( ',', $botusers );
-                               $sql2 = "UPDATE $recentchanges SET rc_bot=1 " .
-                                       "WHERE rc_user_text IN($botwhere)";
-                               $dbw->query( $sql2 );
+                       if ( $botusers ) {
+                               $rcids = $dbw->selectFieldValues(
+                                       'recentchanges',
+                                       'rc_id',
+                                       [
+                                               'rc_user_text' => $botusers,
+                                               "rc_timestamp > " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+                                               "rc_timestamp < " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) )
+                                       ],
+                                       __METHOD__
+                               );
+
+                               foreach ( array_chunk( $rcids, $this->mBatchSize ) as $rcidBatch ) {
+                                       $dbw->update(
+                                               'recentchanges',
+                                               [ 'rc_bot' => 1 ],
+                                               [ 'rc_id' => $rcidBatch ],
+                                               __METHOD__
+                                       );
+                                       wfGetLBFactory()->waitForReplication();
+                               }
                        }
                }
-               global $wgMiserMode;
+
                # Flag our recent autopatrolled edits
-               if ( !$wgMiserMode && !empty( $autopatrolgroups ) ) {
+               if ( !$wgMiserMode && $autopatrolgroups ) {
                        $patrolwhere = $dbw->makeList( $autopatrolgroups );
                        $patrolusers = [];
 
@@ -266,17 +409,19 @@ class RebuildRecentchanges extends Maintenance {
                        # Find all users in RC with autopatrol rights
                        $sql = "SELECT DISTINCT user_name FROM $usergroups, $user " .
                                "WHERE ug_group IN($patrolwhere) AND user_id = ug_user";
-                       $res = $dbw->query( $sql, DB_MASTER );
+                       $res = $dbw->query( $sql, __METHOD__ );
 
                        foreach ( $res as $obj ) {
                                $patrolusers[] = $dbw->addQuotes( $obj->user_name );
                        }
 
                        # Fill in the rc_patrolled field
-                       if ( !empty( $patrolusers ) ) {
+                       if ( $patrolusers ) {
                                $patrolwhere = implode( ',', $patrolusers );
                                $sql2 = "UPDATE $recentchanges SET rc_patrolled=1 " .
-                                       "WHERE rc_user_text IN($patrolwhere)";
+                                       "WHERE rc_user_text IN($patrolwhere) " .
+                                       "AND rc_timestamp > " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ) . ' ' .
+                                       "AND rc_timestamp < " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) );
                                $dbw->query( $sql2 );
                        }
                }
@@ -298,9 +443,13 @@ class RebuildRecentchanges extends Maintenance {
                                'ls_log_id = log_id',
                                'ls_field' => 'associated_rev_id',
                                'log_type' => 'upload',
+                               'log_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+                               'log_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ),
                        ],
                        __METHOD__
                );
+
+               $updates = 0;
                foreach ( $res as $obj ) {
                        $rev_id = $obj->ls_value;
                        $log_id = $obj->ls_log_id;
@@ -319,6 +468,10 @@ class RebuildRecentchanges extends Maintenance {
                                /*WHERE*/ [ 'rc_this_oldid' => $rev_id, 'rc_logid' => 0 ],
                                __METHOD__
                        );
+
+                       if ( ( ++$updates % $this->mBatchSize ) == 0 ) {
+                               wfGetLBFactory()->waitForReplication();
+                       }
                }
        }
 
index d4068c8..6f17b34 100644 (file)
@@ -1,7 +1,8 @@
 {
        "@metadata": {
                "authors": [
-                       "Iltever"
+                       "Iltever",
+                       "Ernác"
                ]
        },
        "ooui-outline-control-move-down": "Элементни тюбюне кёчюр",
index 4bd0429..14508b6 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:41Z
+ * Date: 2016-04-19T21:57:49Z
  */
 ( function ( OO ) {
 
index 1accc2a..1a241cb 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:44Z
+ * Date: 2016-04-19T21:57:53Z
  */
 .oo-ui-element-hidden {
        display: none !important;
        margin-left: 0;
 }
 .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       width: 0.9375em;
-       height: 0.9375em;
        margin: 0.46875em;
 }
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
        margin-left: 0.46875em;
 }
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       width: 1.875em;
-       height: 1.875em;
-}
 .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover,
 .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus {
        outline: none;
        background-size: contain;
        background-position: center center;
        background-repeat: no-repeat;
+       min-width: 24px;
+       width: 1.875em;
+       min-height: 24px;
+       height: 1.875em;
 }
 .oo-ui-iconElement .oo-ui-iconElement-icon,
 .oo-ui-iconElement.oo-ui-iconElement-icon {
        background-size: contain;
        background-position: center center;
        background-repeat: no-repeat;
+       min-width: 12px;
+       width: 0.9375em;
+       min-height: 12px;
+       height: 0.9375em;
 }
 .oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
 .oo-ui-indicatorElement.oo-ui-indicatorElement-indicator {
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
        left: 0;
        top: 0.25em;
-       width: 1.875em;
-       height: 1.875em;
 }
 .oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget {
        margin-right: 0;
        height: 100%;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       width: 1.875em;
        left: 0.5em;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       width: 0.9375em;
        right: 0.5em;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon,
        display: inline-block;
        vertical-align: middle;
        line-height: 2.5em;
-       height: 1.875em;
-       width: 1.875em;
 }
 .oo-ui-iconWidget.oo-ui-widget-disabled {
        opacity: 0.2;
        display: inline-block;
        vertical-align: middle;
        line-height: 2.5em;
-       height: 0.9375em;
-       width: 0.9375em;
        margin: 0.46875em;
 }
 .oo-ui-indicatorWidget.oo-ui-widget-disabled {
 }
 .oo-ui-popupButtonWidget.oo-ui-buttonElement-frameless > .oo-ui-popupWidget {
        /* @noflip */
-       left: 1em;
+       left: 0.9375em;
 }
 .oo-ui-popupButtonWidget.oo-ui-buttonElement-framed > .oo-ui-popupWidget {
        /* @noflip */
-       left: 1.25em;
+       left: 1.2375em;
 }
 .oo-ui-inputWidget {
        margin-right: 0.5em;
 .oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label {
        display: block;
 }
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
+.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
+.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label {
        left: 0;
 }
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
+.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator,
+.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label {
        right: 0;
 }
 .oo-ui-textInputWidget > .oo-ui-labelElement-label {
        position: absolute;
        top: 0;
 }
-.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label {
-       right: 0;
-}
-.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label {
-       left: 0;
-}
 .oo-ui-textInputWidget input,
 .oo-ui-textInputWidget textarea {
        padding: 0.5em;
        padding-left: 2.475em;
 }
 .oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       width: 1.875em;
        max-height: 2.375em;
        margin-left: 0.3em;
 }
        padding-right: 2.4875em;
 }
 .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       width: 0.9375em;
        max-height: 2.375em;
        margin-right: 0.775em;
 }
 }
 .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
        top: 0;
-       width: 0.9375em;
-       height: 0.9375em;
        margin: 0.775em;
 }
 .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
        top: 0;
-       width: 1.875em;
-       height: 1.875em;
        margin: 0.3em;
 }
 .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle {
index 431a9e4..c47ce7f 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:44Z
+ * Date: 2016-04-19T21:57:53Z
  */
 .oo-ui-element-hidden {
        display: none !important;
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
        margin-left: 0;
 }
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       width: 0.9375em;
-       height: 0.9375em;
-}
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
        margin-left: 0.46875em;
 }
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       width: 1.875em;
-       height: 1.875em;
-}
 .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus {
        box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.2);
        outline: 0;
        background-size: contain;
        background-position: center center;
        background-repeat: no-repeat;
+       min-width: 24px;
+       width: 1.875em;
+       min-height: 24px;
+       height: 1.875em;
 }
 .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;
+       min-width: 12px;
+       width: 0.9375em;
+       min-height: 12px;
+       height: 0.9375em;
 }
 .oo-ui-labelElement .oo-ui-labelElement-label-highlight {
        font-weight: bold;
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
        left: 0;
        top: 0.25em;
-       width: 1.875em;
-       height: 1.875em;
 }
 .oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget {
        margin-right: 0;
        height: 100%;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       width: 1.875em;
        left: 0.5em;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       width: 0.9375em;
        right: 0.5em;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon,
        display: inline-block;
        vertical-align: middle;
        line-height: 2.5em;
-       width: 1.875em;
-       height: 1.875em;
 }
 .oo-ui-iconWidget.oo-ui-widget-disabled {
        opacity: 0.2;
        display: inline-block;
        vertical-align: middle;
        line-height: 2.5em;
-       width: 0.9375em;
-       height: 0.9375em;
        margin: 0.46875em;
 }
 .oo-ui-indicatorWidget.oo-ui-widget-disabled {
 }
 .oo-ui-popupButtonWidget.oo-ui-buttonElement-frameless > .oo-ui-popupWidget {
        /* @noflip */
-       left: 1em;
+       left: 0.9375em;
 }
 .oo-ui-popupButtonWidget.oo-ui-buttonElement-framed > .oo-ui-popupWidget {
        /* @noflip */
-       left: 1.75em;
+       left: 1.5em;
 }
 .oo-ui-inputWidget {
        margin-right: 0.5em;
 .oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label {
        display: block;
 }
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
+.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
+.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label {
        left: 0;
 }
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
+.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator,
+.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label {
        right: 0;
 }
 .oo-ui-textInputWidget > .oo-ui-labelElement-label {
        position: absolute;
        top: 0;
 }
-.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label {
-       right: 0;
-}
-.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label {
-       left: 0;
-}
 .oo-ui-textInputWidget input,
 .oo-ui-textInputWidget textarea {
        padding: 0.5em;
           -moz-box-sizing: border-box;
                box-sizing: border-box;
 }
-.oo-ui-textInputWidget input.oo-ui-pendingElement-pending,
-.oo-ui-textInputWidget textarea.oo-ui-pendingElement-pending {
+.oo-ui-textInputWidget .oo-ui-pendingElement-pending {
        background-color: transparent;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled input,
        opacity: 0.2;
 }
 .oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label {
-       color: #dddddd;
+       color: #cccccc;
        text-shadow: 0 1px 1px #ffffff;
 }
 .oo-ui-textInputWidget.oo-ui-iconElement input,
 }
 .oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
        left: 0;
-       width: 1.875em;
+       height: 100%;
        max-height: 2.375em;
        margin-left: 0.5em;
-       height: 100%;
        background-position: right center;
 }
 .oo-ui-textInputWidget.oo-ui-indicatorElement input,
        padding-right: 2.4875em;
 }
 .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       width: 0.9375em;
+       height: 100%;
        max-height: 2.375em;
        margin: 0 0.775em;
-       height: 100%;
 }
 .oo-ui-textInputWidget > .oo-ui-labelElement-label {
        padding: 0.4em;
 }
 .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
        top: 0;
-       width: 0.9375em;
-       height: 0.9375em;
        margin: 0.775em;
 }
 .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
        top: 0;
-       width: 1.875em;
-       height: 1.875em;
        margin: 0.3em;
 }
 .oo-ui-dropdownWidget:hover .oo-ui-dropdownWidget-handle {
index a05193e..64c6be6 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:41Z
+ * Date: 2016-04-19T21:57:49Z
  */
 ( function ( OO ) {
 
@@ -4079,12 +4079,16 @@ OO.ui.mixin.ClippableElement.prototype.setIdealSize = function ( width, height )
 };
 
 /**
- * Clip element to visible boundaries and allow scrolling when needed. Call this method when
- * the element's natural height changes.
+ * Clip element to visible boundaries and allow scrolling when needed. You should call this method
+ * when the element's natural height changes.
  *
  * Element will be clipped the bottom or right of the element is within 10px of the edge of, or
  * overlapped by, the visible area of the nearest scrollable container.
  *
+ * Because calling clip() when the natural height changes isn't always possible, we also set
+ * max-height when the element isn't being clipped. This means that if the element tries to grow
+ * beyond the edge, something reasonable will happen before clip() is called.
+ *
  * @chainable
  */
 OO.ui.mixin.ClippableElement.prototype.clip = function () {
@@ -4128,14 +4132,30 @@ OO.ui.mixin.ClippableElement.prototype.clip = function () {
        clipHeight = allotedHeight < naturalHeight;
 
        if ( clipWidth ) {
-               this.$clippable.css( { overflowX: 'scroll', width: Math.max( 0, allotedWidth ) } );
+               this.$clippable.css( {
+                       overflowX: 'scroll',
+                       width: Math.max( 0, allotedWidth ),
+                       maxWidth: ''
+               } );
        } else {
-               this.$clippable.css( { width: this.idealWidth ? this.idealWidth - extraWidth : '', overflowX: '' } );
+               this.$clippable.css( {
+                       overflowX: '',
+                       width: this.idealWidth ? this.idealWidth - extraWidth : '',
+                       maxWidth: Math.max( 0, allotedWidth )
+               } );
        }
        if ( clipHeight ) {
-               this.$clippable.css( { overflowY: 'scroll', height: Math.max( 0, allotedHeight ) } );
+               this.$clippable.css( {
+                       overflowY: 'scroll',
+                       height: Math.max( 0, allotedHeight ),
+                       maxHeight: ''
+               } );
        } else {
-               this.$clippable.css( { height: this.idealHeight ? this.idealHeight - extraHeight : '', overflowY: '' } );
+               this.$clippable.css( {
+                       overflowY: '',
+                       height: this.idealHeight ? this.idealHeight - extraHeight : '',
+                       maxHeight: Math.max( 0, allotedHeight )
+               } );
        }
 
        // If we stopped clipping in at least one of the dimensions
@@ -7837,7 +7857,7 @@ OO.ui.RadioSelectInputWidget.prototype.setOptions = function ( options ) {
  * @constructor
  * @param {Object} [config] Configuration options
  * @cfg {string} [type='text'] The value of the HTML `type` attribute: 'text', 'password', 'search',
- *  'email', 'url' or 'date'. Ignored if `multiline` is true.
+ *  'email', 'url', 'date' or 'number'. Ignored if `multiline` is true.
  *
  *  Some values of `type` result in additional behaviors:
  *
@@ -8024,7 +8044,6 @@ OO.ui.TextInputWidget.static.gatherPreInfuseState = function ( node, config ) {
  *
  * @private
  * @param {jQuery.Event} e Mouse down event
- * @fires icon
  */
 OO.ui.TextInputWidget.prototype.onIconMouseDown = function ( e ) {
        if ( e.which === OO.ui.MouseButtons.LEFT ) {
@@ -8038,7 +8057,6 @@ OO.ui.TextInputWidget.prototype.onIconMouseDown = function ( e ) {
  *
  * @private
  * @param {jQuery.Event} e Mouse down event
- * @fires indicator
  */
 OO.ui.TextInputWidget.prototype.onIndicatorMouseDown = function ( e ) {
        if ( e.which === OO.ui.MouseButtons.LEFT ) {
@@ -8280,9 +8298,15 @@ OO.ui.TextInputWidget.prototype.adjustSize = function () {
  * @protected
  */
 OO.ui.TextInputWidget.prototype.getInputElement = function ( config ) {
-       return config.multiline ?
-               $( '<textarea>' ) :
-               $( '<input>' ).attr( 'type', this.getSaneType( config ) );
+       if ( config.multiline ) {
+               return $( '<textarea>' );
+       } else if ( this.getSaneType( config ) === 'number' ) {
+               return $( '<input>' )
+                       .attr( 'step', 'any' )
+                       .attr( 'type', 'number' );
+       } else {
+               return $( '<input>' ).attr( 'type', this.getSaneType( config ) );
+       }
 };
 
 /**
@@ -8293,9 +8317,16 @@ OO.ui.TextInputWidget.prototype.getInputElement = function ( config ) {
  * @private
  */
 OO.ui.TextInputWidget.prototype.getSaneType = function ( config ) {
-       var type = [ 'text', 'password', 'search', 'email', 'url', 'date' ].indexOf( config.type ) !== -1 ?
-               config.type :
-               'text';
+       var allowedTypes = [
+                       'text',
+                       'password',
+                       'search',
+                       'email',
+                       'url',
+                       'date',
+                       'number'
+               ],
+               type = allowedTypes.indexOf( config.type ) !== -1 ? config.type : 'text';
        return config.multiline ? 'multiline' : type;
 };
 
index 5bd3ac7..19e8b17 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:41Z
+ * Date: 2016-04-19T21:57:49Z
  */
 ( function ( OO ) {
 
index d2e25a0..6fda4be 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:44Z
+ * Date: 2016-04-19T21:57:53Z
  */
 .oo-ui-popupTool .oo-ui-popupWidget-popup,
 .oo-ui-popupTool .oo-ui-popupWidget-anchor {
        background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/apex/images/icons/check.svg");
        background-image:         linear-gradient(transparent, transparent), /* @embed */ url("themes/apex/images/icons/check.svg");
        background-image:      -o-linear-gradient(transparent, transparent), url("themes/apex/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: #e1f3ff;
index 35a7ef3..6d4bbed 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:44Z
+ * Date: 2016-04-19T21:57:53Z
  */
 .oo-ui-popupTool .oo-ui-popupWidget-popup,
 .oo-ui-popupTool .oo-ui-popupWidget-anchor {
        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;
index 7d22b8f..f0cb8af 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:41Z
+ * Date: 2016-04-19T21:57:49Z
  */
 ( function ( OO ) {
 
index cd7cbd5..7c575e0 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:44Z
+ * Date: 2016-04-19T21:57:53Z
  */
 .oo-ui-draggableElement-handle,
 .oo-ui-draggableElement-handle.oo-ui-widget {
        display: inline-block;
        vertical-align: middle;
 }
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-       height: 1.875em;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       margin-top: 0;
-}
 .oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
 .oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,
 .oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted {
 .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label {
        position: relative;
 }
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileName {
-       display: block;
-       float: none;
-}
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileName,
 .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileType {
        display: block;
        float: none;
 }
 .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
        top: 0;
-       width: 0.9375em;
        height: 2.3em;
        margin-right: 0.775em;
 }
 .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
        top: 0;
-       width: 1.875em;
        height: 2.3em;
        margin-left: 0.3em;
 }
 .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-indicatorElement-indicator,
 .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-iconElement-icon {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-capsuleMultiSelectWidget-content > input {
        border: none;
 .oo-ui-capsuleMultiSelectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-indicatorElement-indicator {
        right: 0;
        top: 0;
-       width: 0.9375em;
-       height: 0.9375em;
        margin: 0.775em;
 }
 .oo-ui-capsuleMultiSelectWidget.oo-ui-iconElement .oo-ui-capsuleMultiSelectWidget-handle {
 .oo-ui-capsuleMultiSelectWidget.oo-ui-iconElement .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-iconElement-icon {
        left: 0;
        top: 0;
-       width: 1.875em;
-       height: 1.875em;
        margin: 0.3em;
 }
 .oo-ui-capsuleMultiSelectWidget:hover .oo-ui-capsuleMultiSelectWidget-handle {
 .oo-ui-numberInputWidget-field > .oo-ui-textInputWidget {
        width: 100%;
 }
+.oo-ui-numberInputWidget-field > .oo-ui-textInputWidget [type="number"]::-webkit-outer-spin-button,
+.oo-ui-numberInputWidget-field > .oo-ui-textInputWidget [type="number"]::-webkit-inner-spin-button {
+       -webkit-appearance: none;
+       margin: 0;
+}
+.oo-ui-numberInputWidget-field > .oo-ui-textInputWidget [type="number"] {
+       -moz-appearance: textfield;
+}
 .oo-ui-numberInputWidget-field > .oo-ui-buttonWidget {
        white-space: nowrap;
 }
index 5a905db..7dfbf1b 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:44Z
+ * Date: 2016-04-19T21:57:53Z
  */
 .oo-ui-draggableElement-handle,
 .oo-ui-draggableElement-handle.oo-ui-widget {
        display: inline-block;
        vertical-align: middle;
 }
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       margin-top: 0;
-}
 .oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
 .oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,
 .oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted {
        background-color: transparent;
 }
-.oo-ui-buttonOptionWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-       opacity: 1;
-}
 .oo-ui-toggleButtonWidget {
        display: inline-block;
        vertical-align: middle;
 .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label {
        position: relative;
 }
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileName {
-       display: block;
-       float: none;
-}
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileName,
 .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileType {
        display: block;
        float: none;
        border: 1px solid #cccccc;
        border-radius: 2px;
 }
-.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
-       right: 0;
-}
 .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
        left: 0;
+       top: 0;
+       height: 2.3em;
+       margin-left: 0.5em;
 }
 .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label {
        line-height: 2.3em;
 .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileType {
        color: #888888;
 }
-.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton {
-       top: 0;
-       width: 1.875em;
-       margin-right: 0;
-}
-.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       height: 2.3em;
-}
 .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
        top: 0;
-       width: 0.9375em;
+       right: 0;
        height: 2.3em;
        margin-right: 0.775em;
 }
-.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton {
        top: 0;
+       min-width: 24px;
        width: 1.875em;
+       margin-right: 0;
+}
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
        height: 2.3em;
-       margin-left: 0.5em;
 }
 .oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info {
        color: #cccccc;
 .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-indicatorElement-indicator,
 .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-iconElement-icon {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-capsuleMultiSelectWidget-content > input {
        border: 0;
 .oo-ui-capsuleMultiSelectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-indicatorElement-indicator {
        right: 0;
        top: 0;
-       width: 0.9375em;
-       height: 0.9375em;
        margin: 0.775em;
 }
 .oo-ui-capsuleMultiSelectWidget.oo-ui-iconElement .oo-ui-capsuleMultiSelectWidget-handle {
 .oo-ui-capsuleMultiSelectWidget.oo-ui-iconElement .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-iconElement-icon {
        left: 0;
        top: 0;
-       width: 1.875em;
-       height: 1.875em;
        margin: 0.3em;
 }
 .oo-ui-capsuleMultiSelectWidget:hover .oo-ui-capsuleMultiSelectWidget-handle {
 .oo-ui-numberInputWidget-field > .oo-ui-textInputWidget {
        width: 100%;
 }
+.oo-ui-numberInputWidget-field > .oo-ui-textInputWidget [type="number"]::-webkit-outer-spin-button,
+.oo-ui-numberInputWidget-field > .oo-ui-textInputWidget [type="number"]::-webkit-inner-spin-button {
+       -webkit-appearance: none;
+       margin: 0;
+}
+.oo-ui-numberInputWidget-field > .oo-ui-textInputWidget [type="number"] {
+       -moz-appearance: textfield;
+}
 .oo-ui-numberInputWidget-field > .oo-ui-buttonWidget {
        white-space: nowrap;
 }
index ec215f1..a084d1a 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:41Z
+ * Date: 2016-04-19T21:57:49Z
  */
 ( function ( OO ) {
 
@@ -3233,8 +3233,10 @@ OO.mixinClass( OO.ui.OutlineSelectWidget, OO.ui.mixin.TabIndexedElement );
  * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Button_selects_and_options
  *
  * @class
- * @extends OO.ui.DecoratedOptionWidget
+ * @extends OO.ui.OptionWidget
  * @mixins OO.ui.mixin.ButtonElement
+ * @mixins OO.ui.mixin.IconElement
+ * @mixins OO.ui.mixin.IndicatorElement
  * @mixins OO.ui.mixin.TabIndexedElement
  * @mixins OO.ui.mixin.TitledElement
  *
@@ -3250,6 +3252,8 @@ OO.ui.ButtonOptionWidget = function OoUiButtonOptionWidget( config ) {
 
        // Mixin constructors
        OO.ui.mixin.ButtonElement.call( this, config );
+       OO.ui.mixin.IconElement.call( this, config );
+       OO.ui.mixin.IndicatorElement.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,
@@ -3258,14 +3262,16 @@ OO.ui.ButtonOptionWidget = function OoUiButtonOptionWidget( config ) {
 
        // Initialization
        this.$element.addClass( 'oo-ui-buttonOptionWidget' );
-       this.$button.append( this.$element.contents() );
+       this.$button.append( this.$icon, this.$label, this.$indicator );
        this.$element.append( this.$button );
 };
 
 /* Setup */
 
-OO.inheritClass( OO.ui.ButtonOptionWidget, OO.ui.DecoratedOptionWidget );
+OO.inheritClass( OO.ui.ButtonOptionWidget, OO.ui.OptionWidget );
 OO.mixinClass( OO.ui.ButtonOptionWidget, OO.ui.mixin.ButtonElement );
+OO.mixinClass( OO.ui.ButtonOptionWidget, OO.ui.mixin.IconElement );
+OO.mixinClass( OO.ui.ButtonOptionWidget, OO.ui.mixin.IndicatorElement );
 OO.mixinClass( OO.ui.ButtonOptionWidget, OO.ui.mixin.TitledElement );
 OO.mixinClass( OO.ui.ButtonOptionWidget, OO.ui.mixin.TabIndexedElement );
 
@@ -5067,7 +5073,8 @@ OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
        // Properties
        this.input = new OO.ui.TextInputWidget( $.extend(
                {
-                       disabled: this.isDisabled()
+                       disabled: this.isDisabled(),
+                       type: 'number'
                },
                config.input
        ) );
@@ -5322,35 +5329,37 @@ OO.ui.NumberInputWidget.prototype.onButtonClick = function ( dir ) {
 OO.ui.NumberInputWidget.prototype.onWheel = function ( event ) {
        var delta = 0;
 
-       // Standard 'wheel' event
-       if ( event.originalEvent.deltaMode !== undefined ) {
-               this.sawWheelEvent = true;
-       }
-       if ( event.originalEvent.deltaY ) {
-               delta = -event.originalEvent.deltaY;
-       } else if ( event.originalEvent.deltaX ) {
-               delta = event.originalEvent.deltaX;
-       }
-
-       // Non-standard events
-       if ( !this.sawWheelEvent ) {
-               if ( event.originalEvent.wheelDeltaX ) {
-                       delta = -event.originalEvent.wheelDeltaX;
-               } else if ( event.originalEvent.wheelDeltaY ) {
-                       delta = event.originalEvent.wheelDeltaY;
-               } else if ( event.originalEvent.wheelDelta ) {
-                       delta = event.originalEvent.wheelDelta;
-               } else if ( event.originalEvent.detail ) {
-                       delta = -event.originalEvent.detail;
+       if ( !this.isDisabled() && this.input.$input.is( ':focus' ) ) {
+               // Standard 'wheel' event
+               if ( event.originalEvent.deltaMode !== undefined ) {
+                       this.sawWheelEvent = true;
+               }
+               if ( event.originalEvent.deltaY ) {
+                       delta = -event.originalEvent.deltaY;
+               } else if ( event.originalEvent.deltaX ) {
+                       delta = event.originalEvent.deltaX;
                }
-       }
 
-       if ( delta ) {
-               delta = delta < 0 ? -1 : 1;
-               this.adjustValue( delta * this.step );
-       }
+               // Non-standard events
+               if ( !this.sawWheelEvent ) {
+                       if ( event.originalEvent.wheelDeltaX ) {
+                               delta = -event.originalEvent.wheelDeltaX;
+                       } else if ( event.originalEvent.wheelDeltaY ) {
+                               delta = event.originalEvent.wheelDeltaY;
+                       } else if ( event.originalEvent.wheelDelta ) {
+                               delta = event.originalEvent.wheelDelta;
+                       } else if ( event.originalEvent.detail ) {
+                               delta = -event.originalEvent.detail;
+                       }
+               }
 
-       return false;
+               if ( delta ) {
+                       delta = delta < 0 ? -1 : 1;
+                       this.adjustValue( delta * this.step );
+               }
+
+               return false;
+       }
 };
 
 /**
index dce6905..1629301 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:44Z
+ * Date: 2016-04-19T21:57:53Z
  */
 .oo-ui-actionWidget.oo-ui-pendingElement-pending {
        background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
index 747f8e9..1e46581 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:44Z
+ * Date: 2016-04-19T21:57:53Z
  */
 .oo-ui-window {
        background: transparent;
index 9fd96f0..aa8f8d9 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.5
+ * OOjs UI v0.16.6
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-04-07T15:12:41Z
+ * Date: 2016-04-19T21:57:49Z
  */
 ( function ( OO ) {
 
index 84d50e9..033adde 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/flagUndo-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/flagUndo-ltr.png differ
index fae0da1..516a3ea 100644 (file)
@@ -1,6 +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="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
-    <path d="M17.997 1.99l.99.99-15.98 15.98-.99-.99z"/>
-    <path d="M17 1.016l.99.99-15.98 15.98-.99-.99z" fill="#fff"/>
+    <path d="M18 2L2.03 17.97l.97 1 4-4V19h1v-5.03l2.688-2.69c.81-.02 1.645.053 2.312.22V13c1.2 1.5 4.3 1.2 5 0V6c-.493.493-1.635.725-2.72.688L19 2.968zM7 4v7.03l6.438-6.436C11.778 3.61 8.71 3.934 8 5V4z"/>
 </svg>
index 777322b..fca73fd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/flagUndo-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/flagUndo-rtl.png differ
index 0b14c25..8ed159e 100644 (file)
@@ -1,6 +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="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
-    <path d="M7.003 1.99l-.99.99 15.98 15.98.99-.99z"/>
-    <path d="M8 1.016l-.99.99 15.98 15.98.99-.99z" fill="#fff"/>
+    <path d="M7 2l-1 .97 3.72 3.717C8.634 6.727 7.492 6.494 7 6v7c.7 1.2 3.8 1.5 5 0v-1.5c.667-.167 1.5-.24 2.313-.22L17 13.97V19h1v-4.03l4 4 .97-1zm7.22 2c-.952-.03-1.932.163-2.658.594L18 11.03V4h-1v1c-.4-.6-1.556-.963-2.78-1z"/>
 </svg>
index b297849..4985911 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-ltr-invert.png differ
index 2cbc539..0d074de 100644 (file)
@@ -1,6 +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="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
-    <path d="M17.997 1.99l.99.99-15.98 15.98-.99-.99z"/>
-    <path d="M17 1.016l.99.99-15.98 15.98-.99-.99z" fill="#fff"/>
+    <path d="M18 2L2.03 17.97l.97 1 4-4V19h1v-5.03l2.688-2.69c.81-.02 1.645.053 2.312.22V13c1.2 1.5 4.3 1.2 5 0V6c-.493.493-1.635.725-2.72.688L19 2.968zM7 4v7.03l6.438-6.436C11.778 3.61 8.71 3.934 8 5V4z"/>
 </svg>
index 84d50e9..033adde 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-ltr.png differ
index fae0da1..516a3ea 100644 (file)
@@ -1,6 +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="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
-    <path d="M17.997 1.99l.99.99-15.98 15.98-.99-.99z"/>
-    <path d="M17 1.016l.99.99-15.98 15.98-.99-.99z" fill="#fff"/>
+    <path d="M18 2L2.03 17.97l.97 1 4-4V19h1v-5.03l2.688-2.69c.81-.02 1.645.053 2.312.22V13c1.2 1.5 4.3 1.2 5 0V6c-.493.493-1.635.725-2.72.688L19 2.968zM7 4v7.03l6.438-6.436C11.778 3.61 8.71 3.934 8 5V4z"/>
 </svg>
index 1faeae3..4e1a6d1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-rtl-invert.png differ
index 1faabf6..0653df3 100644 (file)
@@ -1,6 +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="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
-    <path d="M7.003 1.99l-.99.99 15.98 15.98.99-.99z"/>
-    <path d="M8 1.016l-.99.99 15.98 15.98.99-.99z" fill="#fff"/>
+    <path d="M7 2l-1 .97 3.72 3.717C8.634 6.727 7.492 6.494 7 6v7c.7 1.2 3.8 1.5 5 0v-1.5c.667-.167 1.5-.24 2.313-.22L17 13.97V19h1v-4.03l4 4 .97-1zm7.22 2c-.952-.03-1.932.163-2.658.594L18 11.03V4h-1v1c-.4-.6-1.556-.963-2.78-1z"/>
 </svg>
index 777322b..fca73fd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-rtl.png differ
index 0b14c25..8ed159e 100644 (file)
@@ -1,6 +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="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
-    <path d="M7.003 1.99l-.99.99 15.98 15.98.99-.99z"/>
-    <path d="M8 1.016l-.99.99 15.98 15.98.99-.99z" fill="#fff"/>
+    <path d="M7 2l-1 .97 3.72 3.717C8.634 6.727 7.492 6.494 7 6v7c.7 1.2 3.8 1.5 5 0v-1.5c.667-.167 1.5-.24 2.313-.22L17 13.97V19h1v-4.03l4 4 .97-1zm7.22 2c-.952-.03-1.932.163-2.658.594L18 11.03V4h-1v1c-.4-.6-1.556-.963-2.78-1z"/>
 </svg>
index 6409de2..9de1eab 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.png differ
index d359edf..701dbd4 100644 (file)
@@ -1,5 +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="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
-    <path fill="#fff" d="M13 9h1v7h-1zm-3 3h7v1h-7z"/>
+    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm8 3h1v3h3v1h-3v3h-1v-3h-3v-1h3V9z"/>
 </svg>
index 08c458b..aafac18 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr.png differ
index 1b0db88..c7134c3 100644 (file)
@@ -1,5 +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="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
-    <path fill="#fff" d="M13 9h1v7h-1zm-3 3h7v1h-7z"/>
+    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm8 3h1v3h3v1h-3v3h-1v-3h-3v-1h3V9z"/>
 </svg>
index e85fd44..0520123 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.png differ
index 9c21693..8ae203e 100644 (file)
@@ -1,5 +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="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/>
-    <path d="M11 9h-1v7h1zm3 3H7v1h7z" fill="#fff"/>
+    <path d="M2 6v11c0 1.7 1.3 3 3 3h17l-3-3V6H2zm8 3h1v3h3v1h-3v3h-1v-3H7v-1h3V9z"/>
 </svg>
index 4c13c16..9254844 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl.png differ
index ea9b849..08462e0 100644 (file)
@@ -1,5 +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="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/>
-    <path d="M11 9h-1v7h1zm3 3H7v1h7z" fill="#fff"/>
+    <path d="M2 6v11c0 1.7 1.3 3 3 3h17l-3-3V6H2zm8 3h1v3h3v1h-3v3h-1v-3H7v-1h3V9z"/>
 </svg>
index 7f36137..01d3442 100644 (file)
@@ -55,6 +55,9 @@
                        config.formatter.format = '@' + config.type;
                }
 
+               // Early properties
+               this.type = config.type;
+
                // Parent constructor
                mw.widgets.datetime.DateTimeInputWidget[ 'super' ].call( this, config );
 
@@ -64,7 +67,6 @@
                OO.ui.mixin.PendingElement.call( this, config );
 
                // Properties
-               this.type = config.type;
                this.$handle = $( '<span>' );
                this.$fields = $( '<span>' );
                this.fields = [];
index e53e5f3..312e745 100644 (file)
@@ -1,7 +1,7 @@
 /**
- * This script provides a function which is run to evaluate whether or not to
- * continue loading jQuery and the MediaWiki modules. This code should work on
- * even the most ancient of browsers, so be very careful when editing.
+ * Code in this file MUST work on even the most ancient of browsers!
+ *
+ * This file is where we decide whether to initialise the modern run-time.
  */
 /*jshint unused: false, evil: true */
 /*globals mw, RLQ: true, NORLQ: true, $VARS, $CODE, performance */
@@ -15,53 +15,60 @@ var mediaWikiLoadStart = ( new Date() ).getTime(),
 mwPerformance.mark( 'mwLoadStart' );
 
 /**
- * Returns false for Grade C supported browsers.
+ * See <https://www.mediawiki.org/wiki/Compatibility#Browsers>
+ *
+ * Capabilities required for modern run-time:
+ * - DOM Level 4 & Selectors API Level 1
+ * - HTML5 & Web Storage
+ * - DOM Level 2 Events
+ *
+ * Browsers we support in our modern run-time (Grade A):
+ * - Chrome
+ * - IE 9+
+ * - Firefox 3.5+
+ * - Safari 4+
+ * - Opera 10.5+
+ * - Mobile Safari (iOS 1+)
+ * - Android 2.0+
  *
- * This function should only be used by the Startup module, do not expand it to
- * be generally useful beyond startup.
+ * Browsers we support in our no-javascript run-time (Grade C):
+ * - IE 6+
+ * - Firefox 3+
+ * - Safari 3+
+ * - Opera 10+
+ * - WebOS < 1.5
+ * - PlayStation
+ * - Symbian-based browsers
+ * - NetFront-based browser
+ * - Opera Mini
+ * - Nokia's Ovi Browser
+ * - MeeGo's browser
+ * - Google Glass
  *
- * See also:
- * - https://www.mediawiki.org/wiki/Compatibility#Browsers
- * - https://jquery.com/browser-support/
+ * Other browsers that pass the check are considered Grade X.
  */
-function isCompatible( ua ) {
-       if ( ua === undefined ) {
-               ua = navigator.userAgent;
-       }
+function isCompatible( str ) {
+       var ua = str || navigator.userAgent;
+       return !!(
+               // http://caniuse.com/#feat=queryselector
+               'querySelector' in document
+
+               // http://caniuse.com/#feat=namevalue-storage
+               // https://developer.blackberry.com/html5/apis/v1_0/localstorage.html
+               // https://blog.whatwg.org/this-week-in-html-5-episode-30
+               && 'localStorage' in window
+
+               // http://caniuse.com/#feat=addeventlistener
+               && 'addEventListener' in window
 
-       // Browsers with outdated or limited JavaScript engines get the no-JS experience
-       return !(
-               // Internet Explorer < 9
-               ( ua.indexOf( 'MSIE' ) !== -1 && parseFloat( ua.split( 'MSIE' )[ 1 ] ) < 9 ) ||
-               // Firefox < 3
-               ( ua.indexOf( 'Firefox/' ) !== -1 && parseFloat( ua.split( 'Firefox/' )[ 1 ] ) < 3 ) ||
-               // Opera < 12
-               ( ua.indexOf( 'Opera/' ) !== -1 && ( ua.indexOf( 'Version/' ) === -1 ?
-                       // "Opera/x.y"
-                       parseFloat( ua.split( 'Opera/' )[ 1 ] ) < 10 :
-                       // "Opera/9.80 ... Version/x.y"
-                       parseFloat( ua.split( 'Version/' )[ 1 ] ) < 12
-               ) ) ||
-               // "Mozilla/0.0 ... Opera x.y"
-               ( ua.indexOf( 'Opera ' ) !== -1 && parseFloat( ua.split( ' Opera ' )[ 1 ] ) < 10 ) ||
-               // BlackBerry < 6
-               ua.match( /BlackBerry[^\/]*\/[1-5]\./ ) ||
-               // Open WebOS < 1.5
-               ua.match( /webOS\/1\.[0-4]/ ) ||
-               // Anything PlayStation based.
-               ua.match( /PlayStation/i ) ||
-               // Any Symbian based browsers
-               ua.match( /SymbianOS|Series60/ ) ||
-               // Any NetFront based browser
-               ua.match( /NetFront/ ) ||
-               // Opera Mini, all versions
-               ua.match( /Opera Mini/ ) ||
-               // Nokia's Ovi Browser
-               ua.match( /S40OviBrowser/ ) ||
-               // MeeGo's browser
-               ua.match( /MeeGo/ ) ||
-               // Google Glass browser groks JS but UI is too limited
-               ( ua.match( /Glass/ ) && ua.match( /Android/ ) )
+               // Hardcoded exceptions for browsers that pass the requirement but we don't want to
+               // support in the modern run-time.
+               && !(
+                       ua.match( /webOS\/1\.[0-4]/ ) ||
+                       ua.match( /PlayStation/i ) ||
+                       ua.match( /SymbianOS|Series60|NetFront|Opera Mini|S40OviBrowser|MeeGo/ ) ||
+                       ( ua.match( /Glass/ ) && ua.match( /Android/ ) )
+               )
        );
 }
 
index 4abe9ee..2efc802 100644 (file)
@@ -134,4 +134,51 @@ class RecentChangeTest extends MediaWikiTestCase {
                $this->assertEquals( $rcType, RecentChange::parseToRCType( $type ) );
        }
 
+       /**
+        * @return PHPUnit_Framework_MockObject_MockObject|PageProps
+        */
+       private function getMockPageProps() {
+               return $this->getMockBuilder( PageProps::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+       }
+
+       public function provideCategoryContent() {
+               return [
+                       [ true ],
+                       [ false ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideCategoryContent
+        * @covers RecentChange::newForCategorization
+        */
+       public function testHiddenCategoryChange( $isHidden ) {
+               $categoryTitle = Title::newFromText( 'CategoryPage', NS_CATEGORY );
+
+               $pageProps = $this->getMockPageProps();
+               $pageProps->expects( $this->once() )
+                       ->method( 'getProperties' )
+                       ->with( $categoryTitle, 'hiddencat' )
+                       ->will( $this->returnValue( $isHidden ? [ $categoryTitle->getArticleID() => '' ] : [ ] ) );
+
+               $scopedOverride = PageProps::overrideInstance( $pageProps );
+
+               $rc = RecentChange::newForCategorization(
+                       '0',
+                       $categoryTitle,
+                       $this->user,
+                       $this->user_comment,
+                       $this->title,
+                       $categoryTitle->getLatestRevID(),
+                       $categoryTitle->getLatestRevID(),
+                       '0',
+                       false
+               );
+
+               $this->assertEquals( $isHidden, $rc->getParam( 'hidden-cat' ) );
+
+               ScopedCallback::consume( $scopedOverride );
+       }
 }
diff --git a/tests/phpunit/includes/page/WikiCategoryPageTest.php b/tests/phpunit/includes/page/WikiCategoryPageTest.php
new file mode 100644 (file)
index 0000000..d6e1d9e
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+
+class WikiCategoryPageTest extends MediaWikiLangTestCase {
+
+       /**
+        * @return PHPUnit_Framework_MockObject_MockObject|PageProps
+        */
+       private function getMockPageProps() {
+               return $this->getMockBuilder( PageProps::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+       }
+
+       /**
+        * @covers WikiCategoryPage::isHidden
+        */
+       public function testHiddenCategory_PropertyNotSet() {
+               $title = Title::makeTitle( NS_CATEGORY, 'CategoryPage' );
+               $categoryPage = WikiCategoryPage::factory( $title );
+
+               $pageProps = $this->getMockPageProps();
+               $pageProps->expects( $this->once() )
+                       ->method( 'getProperties' )
+                       ->with( $title, 'hiddencat' )
+                       ->will( $this->returnValue( [ ] ) );
+
+               $scopedOverride = PageProps::overrideInstance( $pageProps );
+
+               $this->assertFalse( $categoryPage->isHidden() );
+
+               ScopedCallback::consume( $scopedOverride );
+       }
+
+       public function provideCategoryContent() {
+               return [
+                       [ true ],
+                       [ false ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideCategoryContent
+        * @covers WikiCategoryPage::isHidden
+        */
+       public function testHiddenCategory_PropertyIsSet( $isHidden ) {
+               $categoryTitle = Title::makeTitle( NS_CATEGORY, 'CategoryPage' );
+               $categoryPage = WikiCategoryPage::factory( $categoryTitle );
+
+               $pageProps = $this->getMockPageProps();
+               $pageProps->expects( $this->once() )
+                       ->method( 'getProperties' )
+                       ->with( $categoryTitle, 'hiddencat' )
+                       ->will( $this->returnValue( $isHidden ? [ $categoryTitle->getArticleID() => '' ] : [ ] ) );
+
+               $scopedOverride = PageProps::overrideInstance( $pageProps );
+
+               $this->assertEquals( $isHidden, $categoryPage->isHidden() );
+
+               ScopedCallback::consume( $scopedOverride );
+       }
+}
index 88bb328..c9b6929 100644 (file)
@@ -342,30 +342,46 @@ class UserTest extends MediaWikiTestCase {
         * @covers User::getCanonicalName()
         * @dataProvider provideGetCanonicalName
         */
-       public function testGetCanonicalName( $name, $expectedArray, $msg ) {
+       public function testGetCanonicalName( $name, $expectedArray ) {
+               // fake interwiki map for the 'Interwiki prefix' testcase
+               $this->mergeMwGlobalArrayValue( 'wgHooks', [
+                       'InterwikiLoadPrefix' => [
+                               function ( $prefix, &$iwdata ) {
+                                       if ( $prefix === 'interwiki' ) {
+                                               $iwdata = [
+                                                       'iw_url' => 'http://example.com/',
+                                                       'iw_local' => 0,
+                                                       'iw_trans' => 0,
+                                               ];
+                                               return false;
+                                       }
+                               },
+                       ],
+               ] );
+
                foreach ( $expectedArray as $validate => $expected ) {
                        $this->assertEquals(
                                $expected,
-                               User::getCanonicalName( $name, $validate === 'false' ? false : $validate ),
-                               $msg . ' (' . $validate . ')'
-                       );
+                               User::getCanonicalName( $name, $validate === 'false' ? false : $validate ), $validate );
                }
        }
 
        public static function provideGetCanonicalName() {
                return [
-                       [ ' Trailing space ', [ 'creatable' => 'Trailing space' ], 'Trailing spaces' ],
-                       // @todo FIXME: Maybe the creatable name should be 'Talk:Username' or false to reject?
-                       [ 'Talk:Username', [ 'creatable' => 'Username', 'usable' => 'Username',
-                               'valid' => 'Username', 'false' => 'Talk:Username' ], 'Namespace prefix' ],
-                       [ ' name with # hash', [ 'creatable' => false, 'usable' => false ], 'With hash' ],
-                       [ 'Multi  spaces', [ 'creatable' => 'Multi spaces',
-                               'usable' => 'Multi spaces' ], 'Multi spaces' ],
-                       [ 'lowercase', [ 'creatable' => 'Lowercase' ], 'Lowercase' ],
-                       [ 'in[]valid', [ 'creatable' => false, 'usable' => false, 'valid' => false,
-                               'false' => 'In[]valid' ], 'Invalid' ],
-                       [ 'with / slash', [ 'creatable' => false, 'usable' => false, 'valid' => false,
-                               'false' => 'With / slash' ], 'With slash' ],
+                       'Leading space' => [ ' Leading space', [ 'creatable' => 'Leading space' ] ],
+                       'Trailing space ' => [ 'Trailing space ', [ 'creatable' => 'Trailing space' ] ],
+                       'Namespace prefix' => [ 'Talk:Username', [ 'creatable' => false, 'usable' => false,
+                               'valid' => false, 'false' => 'Talk:Username' ] ],
+                       'Interwiki prefix' => [ 'interwiki:Username', [ 'creatable' => false, 'usable' => false,
+                               'valid' => false, 'false' => 'Interwiki:Username' ] ],
+                       'With hash' => [ 'name with # hash', [ 'creatable' => false, 'usable' => false ] ],
+                       'Multi spaces' => [ 'Multi  spaces', [ 'creatable' => 'Multi spaces',
+                               'usable' => 'Multi spaces' ] ],
+                       'Lowercase' => [ 'lowercase', [ 'creatable' => 'Lowercase' ] ],
+                       'Invalid character' => [ 'in[]valid', [ 'creatable' => false, 'usable' => false,
+                               'valid' => false, 'false' => 'In[]valid' ] ],
+                       'With slash' => [ 'with / slash', [ 'creatable' => false, 'usable' => false, 'valid' => false,
+                               'false' => 'With / slash' ] ],
                ];
        }
 
index d3f528c..2934b39 100644 (file)
@@ -1,7 +1,9 @@
 /*global isCompatible: true */
 ( function ( $ ) {
        var testcases = {
-               gradeA: [
+               tested: [
+                       /* Grade A */
+
                        // Chrome
                        'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16',
                        // Firefox 4+
                        'Mozilla/5.0 (ipod: U;CPU iPhone OS 2_2 like Mac OS X: es_es) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3',
                        'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3',
                        // Android
-                       'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17'
-               ],
-               gradeC: [
+                       'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17',
+
+                       /* Grade C */
+
                        // Internet Explorer < 9
                        'Mozilla/2.0 (compatible; MSIE 3.03; Windows 3.1)',
                        'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)',
                        // BlackBerry < 6
                        'BlackBerry9300/5.0.0.716 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/133',
                        'BlackBerry7250/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1',
-                       // Open WebOS < 1.5 (Palm Pre, Palm Pixi)
-                       'Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0',
-                       'Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1 ',
-                       // SymbianOS
-                       'NokiaN95_8GB-3;Mozilla/5.0 SymbianOS/9.2;U;Series60/3.1 NokiaN95_8GB-3/11.2.011 Profile/MIDP-2.0 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML, like Gecko)',
-                       'Nokia7610/2.0 (5.0509.0) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0 ',
-                       'Mozilla/5.0 (SymbianOS/9.1; U; [en]; SymbianOS/91 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413',
-                       'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-2/091.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.34 Mobile Safari/533.4',
-                       // NetFront
-                       'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)',
-                       'Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 824x1200; rotate)',
-                       'Mozilla/4.08 (Windows; Mobile Content Viewer/1.0) NetFront/3.2',
-                       // Opera Mini
-                       'Opera/9.80 (J2ME/MIDP; Opera Mini/3.1.10423/22.387; U; en) Presto/2.5.25 Version/10.54',
-                       'Opera/9.50 (J2ME/MIDP; Opera Mini/4.0.10031/298; U; en)',
-                       'Opera/9.80 (J2ME/MIDP; Opera Mini/6.24093/26.1305; U; en) Presto/2.8.119 Version/10.54',
-                       'Opera/9.80 (Android; Opera Mini/7.29530/27.1407; U; en) Presto/2.8.119 Version/11.10',
-                       // Ovi Browser
-                       'Mozilla/5.0 (Series40; NokiaX3-02/05.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.2.0.0.6',
-                       'Mozilla/5.0 (Series40; Nokia305/05.92; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11',
-                       // Google Glass
-                       'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/IMM76L; XE11) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
-                       // MeeGo
-                       'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13'
-               ],
-               // No explicit support for or against these browsers, they're given a shot at Grade A.
-               gradeX: [
+
+                       /* Grade X */
+
                        // Firefox 3.6
                        'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3',
                        // Gecko
                        'I\'m an unknown browser',
                        // Empty
                        ''
+               ],
+               blacklisted: [
+                       /* Grade C */
+
+                       // Open WebOS < 1.5 (Palm Pre, Palm Pixi)
+                       'Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0',
+                       'Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1 ',
+                       // SymbianOS
+                       'NokiaN95_8GB-3;Mozilla/5.0 SymbianOS/9.2;U;Series60/3.1 NokiaN95_8GB-3/11.2.011 Profile/MIDP-2.0 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML, like Gecko)',
+                       'Nokia7610/2.0 (5.0509.0) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0 ',
+                       'Mozilla/5.0 (SymbianOS/9.1; U; [en]; SymbianOS/91 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413',
+                       'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-2/091.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.34 Mobile Safari/533.4',
+                       // NetFront
+                       'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)',
+                       'Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 824x1200; rotate)',
+                       'Mozilla/4.08 (Windows; Mobile Content Viewer/1.0) NetFront/3.2',
+                       // Opera Mini
+                       'Opera/9.80 (J2ME/MIDP; Opera Mini/3.1.10423/22.387; U; en) Presto/2.5.25 Version/10.54',
+                       'Opera/9.50 (J2ME/MIDP; Opera Mini/4.0.10031/298; U; en)',
+                       'Opera/9.80 (J2ME/MIDP; Opera Mini/6.24093/26.1305; U; en) Presto/2.8.119 Version/10.54',
+                       'Opera/9.80 (Android; Opera Mini/7.29530/27.1407; U; en) Presto/2.8.119 Version/11.10',
+                       // Ovi Browser
+                       'Mozilla/5.0 (Series40; NokiaX3-02/05.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.2.0.0.6',
+                       'Mozilla/5.0 (Series40; Nokia305/05.92; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11',
+                       // Google Glass
+                       'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/IMM76L; XE11) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
+                       // MeeGo
+                       'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13'
                ]
        };
 
        QUnit.module( 'startup', QUnit.newMwEnvironment() );
 
-       QUnit.test( 'isCompatible( Grade A )', testcases.gradeA.length, function ( assert ) {
-               $.each( testcases.gradeA, function ( i, ua ) {
+       QUnit.test( 'isCompatible( featureTestable )', testcases.tested.length, function ( assert ) {
+               $.each( testcases.tested, function ( i, ua ) {
                                assert.strictEqual( isCompatible( ua ), true, ua );
                        }
                );
        } );
 
-       QUnit.test( 'isCompatible( Grade C )', testcases.gradeC.length, function ( assert ) {
-               $.each( testcases.gradeC, function ( i, ua ) {
+       QUnit.test( 'isCompatible( blacklisted )', testcases.blacklisted.length, function ( assert ) {
+               $.each( testcases.blacklisted, function ( i, ua ) {
                                assert.strictEqual( isCompatible( ua ), false, ua );
                        }
                );
        } );
-
-       QUnit.test( 'isCompatible( Grade X )', testcases.gradeX.length, function ( assert ) {
-               $.each( testcases.gradeX, function ( i, ua ) {
-                               assert.strictEqual( isCompatible( ua ), true, ua );
-                       }
-               );
-       } );
-
 }( jQuery ) );